`
Darar
  • 浏览: 85191 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android动画插件器

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

  • 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 快速到达终点并超出一小步最后回到终点

插值器使用法:

<set android:interpolator="@android:anim/accelerate_interpolator">
...
</set>

个性化插值器:

如果系统提供的插值器不能满足需要,可以通过修改插值器的属性优化,比如修改AnticipateInterpolator的加速速率,调整CycleInterpolator的循环次数等。

常见的插值器可调整的属性:

<accelerateDecelerateInterpolator> 无

<accelerateInterpolator> android:factor 浮点值,加速速率,默认为1

<anticipateInterploator> android:tension 浮点值,起始点后退的张力、拉力数,默认为2

<anticipateOvershootInterpolator> android:tension 同上 android:extraTension 浮点值,拉力的倍数,默认为1.5(2 * 1.5)

<bounceInterpolator> 无

<cycleInterplolator> android:cycles 整数值,循环的个数,默认为1

<decelerateInterpolator> android:factor 浮点值,减速的速率,默认为1

<linearInterpolator> 无

<overshootInterpolator> 浮点值,超出终点后的张力、拉力,默认为2

使用修改插值器属性法

在/res/anim下创建一个XML文件(以修改overshootInterpolator属性为例)命名为my_overshoot_interpolator.xml

<?xml version="1.0" encoding="utf-8"?>
<overshootInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
    android:tension="7.0"/>

引用到自定义的插值器

<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@anim/my_overshoot_interpolator"
    .../>

自定义插值器

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

相关推荐

Global site tag (gtag.js) - Google Analytics