Android动画的灵魂舞曲(三)

作者: Fizzer | 来源:发表于2016-09-05 23:49 被阅读1040次

插值器(Interpolator)

在之前的章节,我们已经对动画已经有了一部分的了解了。那么这里我们要先讲讲插值器(Interpolator)。以加深我们对动画的理解。

以下是给动画添加系统的插值器的资源id:

Interpolator class Resource 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

而对于每个插值器的能够带来的效果:

Interploator class decription
AccelerateDecelerateInterpolator 开始和结束缓慢,中间加速
AccelerateInterpolator 开始的时候缓慢,之后开始加速
AnticipateInterpolator 开始的时候向后甩一下,然后向前
AnticipateOvershootInterpolator 开始的时候向后甩一下,然后加速向前甩过终点一点后回到原点
BounceInterpolator 动画结束的时候小距离的时候在终点处弹起
CycleInterpolator 将重复周期的指定数目的动画。变化率遵循正弦模式。
DecelerateInterpolator 开始的时候快,结束的时候慢
LinearInterpolator 以常量速率变化
OvershootInterpolator 运动到终点后,冲过终点后再回弹

若是系统提供的插值器不能满足你的业务需求,那么也是可以自己定义一部分属性的:
<accelerateInterpolator>

android:factor Float型,加速度值(默认是1)

<anticipateInterpolator>

android:tension Float型,张力的值(默认是2)。可以理解为来回弹的幅度

<anticipateOvershootInterpolator>

android:tension Float型,张力的值(默认是2)
android:extraTension Float型,张力的倍数(默认是1.5)

<cycleInterpolator>

android:cycles Integer型,周期的数目(默认是1)

<decelerateInterpolator>

android:factor Float型,减速度(默认是1)

<overshootInterpolator>

android:tension Float型,张力的值(默认是2)

通过xml实现的方式:

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="1500"
    android:fromXDelta="0"
    android:fromYDelta="0"    
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    android:toXDelta="300"
    android:toYDelta="300"></translate>

通过java代码实现的方式:

animation.setInterpolator(new AccelerateDecelerateInterpolator());
viewBtn.startAnimation(animation);
AccelerateDecelerateInterpolator
AccelerateDecelerateInterpolator
DecelerateInterpolator
DecelerateInterpolator.gif
AnticipateInterpolator
AnticipateInterpolator
BounceInterpolator
BounceInterpolator
LinearInterpolator
LinearInterpolator
OvershootInterpolator
OvershootInterpolator
CycleInterpolator
CycleInterpolator
AccelerateInterpolator
AccelerateInterpolator
AnticipateOvershootInterpolator
AnticipateOvershootInterpolator

以上就是视图动画的学习总结,总结出来可能有遗漏或者错误,欢迎指正个人总结。转载请注明出处http://www.jianshu.com/p/1b9cc1e658af

相关文章

网友评论

    本文标题:Android动画的灵魂舞曲(三)

    本文链接:https://www.haomeiwen.com/subject/fmxcettx.html