插值器也叫加速器,主要用来控制动画的播放速度。比如我们有一个由小变大的缩放动画,在刚开始播放动画时慢慢变大,然后突然就变成最大了,让人感觉整个过程不是线性的,或者说变化的过程不是匀速的,这时就需要通过插值器来控制动画的播放速度。
插值器可能通过xml来实现,也可以通过代码来实现,具体的示例如下:
//xml实现
android:interpolator="@android:interpolator/bounce"
这里使用了interpolator
属性,它是Animation类的共同属性,各种类型的视图动画都可以使用该属性。属性值是系统提供的,我们可以选择其中一种来使用。代码中的bounce就是其中的一种插值器,我们稍后会介绍它的功能。
//代码实现
animation.setInterpolator(new AnticipateOvershootInterpolator());
代码中使用Animation类的公有方法:setInterpolator
()来给动画类对象添加插值器,该方法的参数是插值器类型的对象,该对象的功能,我们稍后介绍。
依据插值器的功能,可以将它们分为以下几种类型:
这里的XXXInterpolator就是类的名称,我们可以直接new一个该类型的对象来使用。中文内容是我自己实践的结果,注释的内容来自于是代码,打开类所在的文件就可以看来这样的注释,从注释中也可以明白插值器的功能。
2. 弹跳效果
在动画结束的地方有弹跳效果:BounceInterpolator.
这个效果对于平移类动画比较明显,缩放和渐变会有反复缩放和渐变的效果.旋转类动画变会有改变旋转方向的效果。BounceInterpolator是类的名称,对应xml中的bounce属性值,我们在示例代码中使用过该属性值。
插值器不是动画必须的内容,没有插值器时动画也可以正常播放。如果想控制动画的播放速度,那么需要使用插值器。
插值器有两种实现方法,我建议它和动画实现方法保持一致,比如动画使用代码实现,那么插值器也使用代码实现,这样有助于管理代码。
目前,我们只能使用系统提供的插值器,无法自己创建插值器。注意:插值器控制的是动画的播放速度,duration属性控制的是动画的播放时长,这两个概念很容易混淆,不过duration属性会影响插值器。
看官们,关于"视图动画中的插值器"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!