API指南--PropertyAnimation
Android系统中的动画分3种情况:
1)属性动画(Property Animation)
它作用于任何对象的属性。不仅仅局限于View对象,还包括Activity, Fragment等。当然还有你自定义的对象都可以。
2)View动画
顾名思义,此类动画只能作用于View对象,与属性动画相比,适用范围较窄。
3)Drawable动画
这个很简单,就是把几张图片放在一起按顺序播放,就像放电影那样。
1. 属性动画
属性动画作用于对象,只要该对象有对应的属性即可。你可以定义以下几个动画特征值:
时长:动画时长,默认300毫秒(ms)。
时间插值:根据当前时间值来计算当前属性值在整个变化过程中的百分比位置。
反复次数和行为:动画是否反复播放,是从头反复还是反方向反复。
动画控制器:计算属性值。
帧刷新率:多长时间刷新一次屏幕,默认时间是10ms一次,但是最终情况实际上取决于系统繁忙程度,如果很繁忙,你的动画一定不流畅,即所谓卡的情况,因为有些帧没有刷,即失帧。
因此,个人认为,如果你要做一个属性动画,那么你需要的步骤就是:
1) 选定对象(Object)+属性(Property):简称 O + P;
2) 时长(Duration):简称D;
3) 时间插值(Time interpolation):简称T;
4) 反复次数(Repeat Count)和行为(Behavior):简称R&B;
5) 动画控制器(Animator):简称A;
6) 帧刷新率(Frame refresh delay):简称F;
属性动画如何工作
先看下面一个正方体对象的动画示意图:
图1 正方体匀速运动
为了了解上图的动画行为,那么就对应分析属性动画的相关值就OK了。
1) O = 正方体;P = X坐标值;
2) D =40ms;
3) T = time/40ms= 0.025*time;
time = 10, T = 0.025 * 10 = 0.25,即当前属性值X = (最终位置-开始位置)*0.25 = (40 - 0) * 0.25 = 10;
time = 20,T = 0.025 * 20 = 0.5,所以X = (40-0)*0.5 = 20;
4) R&B= 0;无反复;
5) F = 10ms;
通过上面的一些值的分析,相信大家应该很明白了吧。
再看下面图2,这是一个先加速后减速的运动图:
图2 正方体先加速后减速运动
请读者自行分析吧。