温馨提示:这篇文章已超过421天没有更新,请注意相关的内容是否还可用!
摘要:本文全面讲解了Android中的动画技术。从基础动画到高级动画效果,涵盖了Android平台上各种动画类型和应用场景。文章详细介绍了动画的创建过程、实现原理以及优化技巧,为读者提供了全面的动画解决方案。无论是初学者还是资深开发者,本文都能帮助你更好地理解和掌握Android动画技术。
View动画
View动画,是指动画的对象仅限于View的动画,View动画一共包括四种:TranslateAnimation(平移)、ScaleAnimation(缩放)、RotateAnimation(旋转)和AlphaAnimation(透明度),还有一个AnimationSet(组合动画),它们都继承自Animation类。
值得注意的是,View动画是通过Canvas相关设置来实现的,而不是通过改变View的属性,会出现一个问题,即当View进行平移动画时,点击事件的位置并不会随之改变,当一个View开始一个View动画后,它并不会立即执行动画,而是会请求重绘,等待大约16.8ms后,在重新遍历View树时,动画才会被执行,这是通过在父View中操作View的画布坐标来实现的。
关于原点坐标
需要牢记一点,所有动画的原点坐标都是相对于View的左上角顶点。
实现方式
View动画的实现方式有两种:动态代码和xml文件实现,推荐使用xml实现,因为复用性强。
TranslateAnimation动画
关于代码实现,如果没有指定fromXType的话,默认为ABSOLUTE模式,构造方法主要有三种。
formXType用于指定如何解释fromXValue,有三种模式:
ABSOLUTE绝对值,单位是px。
RELATIVE_TO_SELF相对于自身,意思是fromXValue乘以自身的宽度。
RELATIVE_TO_PARENT相对于父类,意思是fromXvalue乘以父类的宽度。
常用的属性包括:
duration动画持续时间,默认是0,即立即开始。
fillAfter动画执行完毕后,是否保持结束位置。
fillBefore动画结束后,是否保持开始位置。
repeatCount动画重复次数,默认是1次,-1代表无限循环。
repeatMode动画重复模式,有Animation.REVERSE(动画结束后,反向重复)和Animation.RESTART(每次都重新开始)两种。
interpolator动画的插值器,随时间改变,动画属性的改变百分比。
reset重置动画。
setStartOffset动画相对开始时间延迟多久开始。
setStartTime设置动画执行的具体时间,单位为毫秒。
cancel()停止动画,同时停止view动画,还可以使用it.clearAnimation(),它们的区别在于,cancel是停止指定动画,clearAnimation()是停止作用于当前view的动画,无论使用哪种方式,都会回调onAnimationEnd方法。
Xml实现
首先在res中创建anim文件夹,之后,选择anim选项,注意名字只能是固定的anim,创建完成后,右键创建xml动画文件,创建slide_1.xml文件。
在xml文件中定义动画时,可以采用多种写法,包括直接使用AnimationSet的xml写法等,注意在写xml文件时要遵循正确的格式和语法规则。
还没有评论,来说两句吧...