一起Talk Android吧(第四百八十一回:视图动画中的插值器)


各位看官们大家好,上一回中咱们说的例子是"用代码实现视图动画",这一回中咱们说的例子是" 视图动画中的插值器"。闲话休提,言归正转,让我们一起Talk Android吧!

概念介绍

插值器也叫加速器,主要用来控制动画的播放速度。比如我们有一个由小变大的缩放动画,在刚开始播放动画时慢慢变大,然后突然就变成最大了,让人感觉整个过程不是线性的,或者说变化的过程不是匀速的,这时就需要通过插值器来控制动画的播放速度。

使用方法

插值器可能通过xml来实现,也可以通过代码来实现,具体的示例如下:
//xml实现

android:interpolator="@android:interpolator/bounce"

这里使用了interpolator属性,它是Animation类的共同属性,各种类型的视图动画都可以使用该属性。属性值是系统提供的,我们可以选择其中一种来使用。代码中的bounce就是其中的一种插值器,我们稍后会介绍它的功能。

//代码实现
animation.setInterpolator(new AnticipateOvershootInterpolator());

代码中使用Animation类的公有方法:setInterpolator()来给动画类对象添加插值器,该方法的参数是插值器类型的对象,该对象的功能,我们稍后介绍。

插值器类型

依据插值器的功能,可以将它们分为以下几种类型:

  1. 控制动画速度
    匀速:LinearInterpolator
    注释: * An interpolator where the rate of change is constant
    前慢后快:AccelerateInterpolator
    注释:it starts even slower and ends evens faster)
    前快后慢:DecelerateInterpolator
    注释:An interpolator where the rate of change starts out quickly and and then decelerates.
    前后慢,中间快AccelerateDecelerateInterpolator
    注释:An interpolator where the rate of change starts and ends slowly but accelerates through the middle.

这里的XXXInterpolator就是类的名称,我们可以直接new一个该类型的对象来使用。中文内容是我自己实践的结果,注释的内容来自于是代码,打开类所在的文件就可以看来这样的注释,从注释中也可以明白插值器的功能。
2. 弹跳效果
在动画结束的地方有弹跳效果:BounceInterpolator.
这个效果对于平移类动画比较明显,缩放和渐变会有反复缩放和渐变的效果.旋转类动画变会有改变旋转方向的效果。BounceInterpolator是类的名称,对应xml中的bounce属性值,我们在示例代码中使用过该属性值。

  1. 反向效果
    AnticipateInterpolator
    开始做动画的反向效果,然后开始动画,反向效果表示缩放,移动,渐变,旋转与动画中的效果相反,比如动画中的缩放是变小,它会先变大然后再变小;
    OvershootInterpolator
    结束时做动画反向效果,然后结束动画,反向效果表示缩放,移动,渐变,旋转与动画中的效果相反,比如动画中的缩放是变小,它会先变小然后再变大,最后结束动画;
    AnticipateOvershootInterpolator 开始和结束时做反向效果,该效果是上两种动画效果的综合。

经验总结

插值器不是动画必须的内容,没有插值器时动画也可以正常播放。如果想控制动画的播放速度,那么需要使用插值器。
插值器有两种实现方法,我建议它和动画实现方法保持一致,比如动画使用代码实现,那么插值器也使用代码实现,这样有助于管理代码。

目前,我们只能使用系统提供的插值器,无法自己创建插值器。注意:插值器控制的是动画的播放速度,duration属性控制的是动画的播放时长,这两个概念很容易混淆,不过duration属性会影响插值器。

看官们,关于"视图动画中的插值器"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值