android 动画_Android动画插值器

v2-811002c6a896d37ac9b260b629dc4f47_1440w.jpg?source=172ae18b
  1. 插值器是在 XML 中定义的动画修改器,它会影响动画的变化率。插值器可对现有的动画效果执行加速、减速、重复、退回等。插值器通过 android:interpolator 属性应用于动画元素,该属性的值是对插值器资源的引用。

2. Android 中提供的所有插值器都是 Interpolator 类的子类。为便于您使用 android:interpolator 属性将插值器应用于动画,Android 针对每个插值器类包含了一个可供您引用的公共资源。

插值器类资源 ID影响变化率方式自定义名称和属性
AccelerateDecelerateInterpolator@android:anim/accelerate_decelerate_interpolator变化率在开始和结束时缓慢,但在中间会加快。accelerateDecelerateInterpolator
没有属性
AccelerateInterpolator@android:anim/accelerate_interpolator变化率在开始时较为缓慢,然后会加快。accelerateInterpolator
android:factor
浮点数。加速率(默认为 1)
AnticipateInterpolator@android:anim/anticipate_interpolator先反向变化,然后再急速正向变化。anticipateInterpolator
android:tension
浮点数。要应用的张力(默认为 2)。
AnticipateOvershootInterpolator@android:anim/anticipate_overshoot_interpolator先反向变化,再急速正向变化并超过目标值,然后以最终值结束。anticipateOvershootInterpolator
android:tension
浮点数。要应用的张力(默认为 2)。
android:extraTension
浮点数。张力要乘以的倍数(默认值为 1.5)。
BounceInterpolator@android:anim/bounce_interpolator变化会在结束时退回。bounceInterpolator
没有属性
CycleInterpolator@android:anim/cycle_interpolator按指定的循环次数重复动画。变化率符合正弦曲线图。cycleInterpolator
android:cycles
整数。循环次数(默认值为 1)。
DecelerateInterpolator@android:anim/decelerate_interpolator变化率开始时很快,然后减慢。decelerateInterpolator
android:factor
浮点数。减速率(默认值为 1)。
LinearInterpolator@android:anim/linear_interpolator变化率恒定不变。linearInterpolator
没有属性
OvershootInterpolator@android:anim/overshoot_interpolator先急速正向变化,再超过最终值,然后回到最终值。overshootInterpolator
android:tension
浮点数。要应用的张力(默认为 2)。

3. 自定义插值器

如果您对平台提供的插值器(在上表中列出)不满意,则可以使用修改过的属性创建自定义插值器资源。例如,您可以调整 AnticipateInterpolator 的加速率或调整 CycleInterpolator 的循环次数。为此,您需要在 XML 文件中创建自己的插值器资源。这些自定义的XML文件需要放在res/anim文件夹中.

调用方式:

android:

例如:自定义的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">
</overshootInterpolator>

如果您不应用任何属性,或者应用的属性值和系统的默认属性值一样,则您的插值器的运作方式将与平台提供的插值器(在上表中列出)完全相同。如上面的文件中去掉android:tension="7.0"或者改成android:tension="2.0",则效果和下面的调用方式一样。

android:interpolator="@android:anim/overshoot_interpolator"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值