简介
Interpolator可以翻译成插值器。Android中interpolator的最底层接口如下:
|
|
TimeInterpolator是在Android API11加入,之前的类叫Interpolator。现在Interpolator继承了TimeInterpolator
|
|
插值器分析
AccelerateInterpolator 加速插值器
效果:在动画开始的地方速率改变比较慢,然后开始加速
源码:
|
|
根据getInterpolation方法可知加速度的大小由参数mFactor决定。
当mFactor值为1.0f时,动画加速轨迹相对于一条y=x^2的抛物线。如下图
当mFactor不为1时,轨迹曲线是y=x^(2 * mFactor)(0 < x <= 1)的曲线。
示例:当mFractor为4时,插值器的加速轨迹曲线如下图:
如果你在使用AccelerateInterpolator,想要那种一开始很慢,然后突然就很快的加速的动画效果的话,就将mFractor的值设置大点。
DecelerateInterpolator减速插值器
效果:在动画开始的地方速率改变比较慢,然后开始加速
源代码如下:
|
|
根据getInterpolation方法可知加速度的大小由参数mFactor决定。
当mFactor为1.0f时,它减速的轨迹函数为y=1-(1 - X)^2;如下图
当mFactor不为1.0f时,它减速的轨迹函数为:y=1.0 - (1.0 -x )^(2 * mFactor)。
当mFactor增大到4时,曲线轨迹如下图所示:
AccelerateDecelerateInterpolator 加速减速插值器
效果:动画开始与结束的地方速率改变比较慢,在中间的时候加速
|
|
根据getInterpolation方法可以得出其变化曲线如下:
LinearInterpolator 线性插值器
效果:动画按常速率变化
源代码如下:
|
|
BounceInterpolator 弹跳插值器
效果:动画结束的时候弹起
源代码如下:
|
|
根据getInterpolation方法得到以下插值曲线图:
AnticipateInterpolator 回荡秋千插值器
效果:开始的时候向后,然后向前甩
源代码:
|
|
根据getInterpolation方法:
当tension为默认值2时,曲线图如下:
当tension为4时,曲线图如下:
AnticipateOvershootInterpolator
效果:开始的时候向后,然后向前甩一定值后 返回最后的值
源代码如下:
|
|
当tension为默认值时,曲线图为:
CycleInterpolator 正弦周期变化插值器
效果:动画循环播放特定的次数,速率改变沿着正弦曲线
源代码为:
|
|
当cycle值为1时,即变化一周时,曲线图如下:
OvershootInterpolator
效果:向前甩一定值后再回到原来位置
源代码如下:
|
|
当tension为默认值2时,曲线图如下:
当tension的值为4时,曲线图如下: