插值器时动画中一个非常重要的概念,通过插值器(Interpolators),可以定义动画变换速率,这一点非常类似物理中的加速度,其作用主要是控制目标变量的变化值进行对应的变化。同样的一个动画变换起始值,在不同的插值器作用下,每个单位时间内所达到的变化值也是不一样的。例如一个位移动画,如果使用线性插值器,那么在持续时间内,单位事件所移动的距离都是一样的;如果使用加速度插值器,那么单位时间内所移动的距离将越来越快。大家可以把插值器的概念理解为一个人进行万米长跑,规定一个小时到达,有的人怕事件来不及,则一开始就加速跑,但是到后面体力越来越跟不上,就越跑越慢。而由的人开始节省体力,所以开始跑的比较慢,后面越跑越快,直到终点。不管怎么跑,最终它们都在规定的事件达到了终点,唯一不同的是它们跑的速度不同,通过这个例子,在结合下图,大家应该可以很好的理解插值器的具体概念。
- AccelerateDecelerateInterpolator开始与结束的地方速率改变比较慢,在中间的时候加速
- AccelerateInterpolator开始的地方速率改变比较慢,然后开始加速
- AnticipateInterpolator开始的时候向后然后向前甩
- AnticipateOvershootInterpolator开始的时候向后然后向前甩一定值后返回最后的值
- BounceInterpolator动画结束的时候弹起
- CycleInterpolator循环播放特定的次数,速率改变沿着正弦曲线
- DecelerateInterpolator在开始的地方快然后慢
- 创建的时候,可以传factor值,如DecelerateInterpolator(2f):
- LinearInterpolator以常量速率改变
- OvershootInterpolator向前甩一定值后再回到原来位置
- 创建的时候,可以传tension值,OvershootInterpolator(0.8f)。
使用详情请了解相关博客Android 动画:你真的会使用插值器与估值器吗?