动画插值器

来源:互联网 发布:java redis2.9 教程 编辑:程序博客网 时间:2024/06/02 10:12

 插值器: android.view.animation.interpolator

 Interpolator 被用来修饰动画效果,定义动画的变化率,可以使存在的动画效果accelerated(加速),decelerated(减速),repeated(重复),bounced(弹跳)等。

以下是几种interpolator:

各个插值器的图像可以查询:http://blog.csdn.net/lgaojiantong/article/details/39451243

  AccelerateDecelerateInterpolator (Accelerate:加速 Decelerate:减速Interpolator:插值器)在动画开始与结束的地方速率改变比较慢,在中间的时候加速

  AccelerateInterpolator(加速插值器)在动画开始的地方速率改变比较慢,然后开始加速

  DecelerateInterpolator(减速插值器) 在动画开始的地方快然后慢

  AnticipateInterpolator (Anticipate:预测)开始的时候向后然后向前甩

  AnticipateOvershootInterpolator (Overshoot:超过)开始的时候向后然后向前甩一定值后返回最后的值

  BounceInterpolator (Bounce:弹跳)  动画结束的时候弹起

  CycleInterpolator (Cycle:周期)动画循环播放特定的次数,速率改变沿着正弦曲线

  LinearInterpolator   (直线插值器)以常量速率改变

  OvershootInterpolator    向前甩一定值后再回到原来位置




以下是摘抄别人的博客

首先要了解为什么需要插值器,因为在补间动画中,我们一般只定义关键帧(首帧或尾帧),然后由系统自动生成中间帧,生成中间帧的这个过程可以成为“插值”。插值器定义了动画变化的速率,提供不同的函数定义变化值相对于时间的变化规则,可以定义各种各样的非线性变化函数,比如加速、减速等。下面是几种常见的插值器:
Interpolator对象资源ID功能作用。

AccelerateDecelerateInterpolator@android:anim/accelerate_decelerate_interpolator先加速再减速
AccelerateInterpolator@android:anim/accelerate_interpolator加速
AnticipateInterpolator@android:anim/anticipate_interpolator先回退一小步然后加速前进
AnticipateOvershootInterpolator@android:anim/anticipate_overshoot_interpolator在上一个基础上超出终点一小步再回到终点
BounceInterpolator@android:anim/bounce_interpolator最后阶段弹球效果
CycleInterpolator@android:anim/cycle_interpolator周期运动
DecelerateInterpolator@android:anim/decelerate_interpolator减速
LinearInterpolator@android:anim/linear_interpolator匀速
OvershootInterpolator@android:anim/overshoot_interpolator快速到达终点并超出一小步最后回到终点

插值器使用法:
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
...

个性化插值器
如果系统提供的插值器不能满足需要,可以通过修改插值器的属性优化,比如修改AnticipateInterpolator的加速速率,调整CycleInterpolator的循环次数等。
常见的插值器可调整的属性:
android:factor 浮点值,加速速率,默认为1
android:tension 浮点值,起始点后退的张力、拉力数,默认为2
android:tension 同上 android:extraTension 浮点值,拉力的倍数,默认为1.5(2 * 1.5)
android:cycles 整数值,循环的个数,默认为1
android:factor 浮点值,减速的速率,默认为1
浮点值,超出终点后的张力、拉力,默认为2
使用修改插值器属性法
在/res/anim下创建一个XML文件(以修改overshootInterpolator属性为例)命名为my_overshoot_interpolator.xml

http://schemas.android.com/apk/res/android"
    android:tension="7.0"/>
引用到自定义的插值器
http://schemas.android.com/apk/res/android"
    android:interpolator="@anim/my_overshoot_interpolator"
    .../>

自定义插值器
如果以上的修改系统插值器属性仍无法满足需要,可以自定义插值器。

0 0
原创粉丝点击