2.3.0 概述
有关动画的变化速率的问题是由 Interpolator 类来决定的。Interpolator 叫插值器,也叫加速器,是用来指定动画如何变化的变量。它只是一个接口,通过实现这个接口就可以自定义动画的变化速率。系统提供了如下几个实现了插值器的类:
Interpolator class | Resource ID |
---|---|
AccelerateDecelerateInterpolator | @android:anim/accelerate_decelerate_interpolator |
AccelerateInterpolator | @android:anim/accelerate_interpolator |
DecelerateInterpolator | @android:anim/decelerate_interpolator |
LinearInterpolator | @android:anim/linear_interpolator |
BounceInterpolator | @android:anim/bounce_interpolator |
AnticipateInterpolator | @android:anim/anticipate_interpolator |
OvershootInterpolator | @android:anim/overshoot_interpolator |
AnticipateOvershootInterpolator | @android:anim/anticipate_overshoot_interpolator |
CycleInterpolator | @android:anim/cycle_interpolator |
关于插值器,有两种使用方法。
方法一、XML 引用
|
|
方法二、setInterpolator()
|
|
2.3.1 AccelerateDecelerateInterpolator
加速减速插值器,表示在开始与结束的地方速率改变比较慢,在中间的时候加速。
2.3.2 AccelerateInterpolator
加速插值器,表示在动画开始的地方速率比较慢,然后开始加速。
2.3.3 DecelerateInterpolator
减速插值器,表示在动画开始的一瞬间加速到最大值,然后逐渐变慢。
2.3.4 LinearInterpolator
线性插值器,也称匀速插值器,显然,它的速率是保持恒定的。
2.3.5 BounceInterpolator
弹跳插值器,模拟了控件自由落地后回弹的效果。
2.3.6 AnticipateInterpolator
初始偏移插值器,表示在动画开始的时候向前偏移一段距离,然后应用动画。
参数 float tension 对应的 XML 属性为 android:tension,表示张力值,默认值为 2。值越大,初始的偏移量越大,而且速度越快。0 表示不偏移。
示例:
2.3.7 OvershootInterpolator
结束偏移插值器,表示在动画结束的时候沿动画方向继续运动一段距离后再结束动画。
参数 float tension 对应的 XML 属性为 android:tension,表示张力值,默认值为 2。值越大,结束时的偏移量越大。0 表示不偏移。
|
|
2.3.8 AnticipateOvershootInterpolator
是 AnticipateInterpolator 和 OvershootInterpolator 的合体,即在动画开始时向前偏移一段距离后,在动画结束的时候沿动画方向继续运动一段距离后再结束动画。
- 参数 float tension 对应的 XML 属性为 android:tension,表示张力值,默认值为 2。值越大,初始和结束的偏移量越大。0 表示不偏移。
- 参数 float extraTension 对应的 XML 属性为 android:extraTension,表示额外张力值,默认值为 1.5。
|
|
2.3.9 CycleInterpolator
循环插值器,表示动画循环播放特定的次数,速率沿正弦曲线改变。
虽然设置了 setFillAfter(true),但对于 CycleInterpolator 而言并没有什么影响,动画结束后,视图还原到初始位置。