1. 你可以在任何空间上使用这个动画来改变这些控件的属性值,比如长和宽等内容,而不用管这个动画所绑定的控件是通过xml定义的还是通过自己draw的控件
2. 为了定义空间的动画,你必须知道空间的属性值,以及你需要自己设定这些动画的有效时间等内容,默认的动画间隔是300ms
3.Time interpolation这个值表示的是how the values for the property are calculated as a function of the animation's current elapsed time.
4. 你可以通过设定一些东西来实现重复次数和动画行为
5. 工作原理:
上图是平稳动画,每个图的间隔时间都是10ms,比如我的宽度是每10ms增加10px,但是在这动画里面还可以设定不同的增加模式,比如下图的
这个就是不规则的增加了,这个就和我们上面谈到的Time interpolation有重要的联系了,至于为什么下面我们会说到
为了了解这个动画,我们首先要知道ValueAnimator
这个的对象,这个对象的作用如下:
(1)跟踪监测你这个动画运行了多久,以及将监听的东西提交给一个接口,就是updateListener这个接口
(2)其中的一个属性TimeInterpolator
定义了每时每刻被绑定空间的动画是怎么样的,以及控件目前动画的状态是怎么养的,比如我现在的宽度是40dp,还有就是我这个动 画的下一刻的规则是怎样的,这和它本身的一些方法是有关的,具体的东西还是需要大家仔细读文档的
比如,我们的第二个图就是有TimeInterpolator
中的AccelerateDecelerateInterpolator
和TypeEvaluator
控制的,流程是这样的,首先我们绑定动画(绑定这个词不知道合不合适),然后计算这个时间根据AccelerateDecelerateInterpolator
计算出时间因子,然后通过调用TypeEvaluator
中的IntEvaluator(This evaluator can be used to perform type interpolation between int
values.)进而实现这个动画效果的。
6.流程
(1)首先实例化ValueAnimator
对象,然后给出你想在某个时间间隔内某个属性值的变化范围,比如开始是多少,结束是多少,然后调用start()
方法来确定动画的开始
(2)ValueAnimator
这个对象同时会将百分比时间,记录多长时间和剩余多长时间
(未完待续)