在之前我们使用补间动画的时候,我们会发现有*android:interpolator*这么一个属性,这个属性其实就是可以指定插值器。怎么来理解插值器呢,这个有点像一个函数曲线的变化率。举个例子,就像我们跑步,固定距离1000米,固定跑步用时4分钟,我们可以先快跑,后面跑慢些。也可以先慢跑,后面冲刺。在使用差值器的时候,Android就把我们固定的动画效果,在设置的时间内变化不同的速率,来实现不同的不同效果。
简述
在Android需要用到Interpolator的子类来实例化插值器对象,比如:
Interpolator interpolator = new AccelerateDecelerateInterpolator();
使用方法
xml中使用
在xml定义动画文件的时候,可以指定android:interpolator属性来使用插值器
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
java代码中使用
//定义插值器
Interpolator interpolator = new AccelerateDecelerateInterpolator();
Animation anmi = AnimationUtils.loadAnimation(InterpolatorActivity.this,R.anim.accelerate_decelerate_interpolator);
//设置插值器
anmi.setInterpolator(interpolator);
介绍各种插值器
AccelerateDecelerateInterpolator
在动画开始与介绍的地方速率改变比较慢,在中间的时候加速
AccelerateInterpolator
在动画开始的地方速率改变比较慢,然后开始加速
AnticipateInterpolator
开始的时候向后然后向前甩
AnticipateOvershootInterpolator
开始的时候向后然后向前甩一定值后返回最后的值
BounceInterpolator
动画结束的时候弹起
CycleInterpolator
动画循环播放特定的次数,速率改变沿着正弦曲线
DecelerateInterpolator
在动画开始的地方快然后慢
LinearInterpolator
以常量速率改变
OvershootInterpolator
向前甩一定值后再回到原来位置
总结
Android中一般系统自带的差值器可以实现不同的效果了,当然也可以自定义我们自己需要的差值器,说白了就是实现一个不同的算法的函数。建议大家自己练习下以上插值器,体会下之间的区别。