android动画—插值器

插值器(Interpolator)是设置动画运行过程中的变化规律,类似匀速变化,加速变化,回弹等。

Android默认的插值器类型可以在SDK的代码中NativeInterpolatorFactoryHelper.java文件中查询,有11种

插值器对应的类 xml中插值器的字段 描述
AccelerateDecelerateInterpolator @android:anim/accelerate_decelerate_interpolator 动画先加速再减速,相当于view速度从0一直加速,最后又减速到0,默认插值器。
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 周期运动,动画可以不到终点就回弹,也可以到了终点后在回弹,还可以回弹多次,小于1.0f不到终点就回弹,大于1.0f会到了终点后回弹,如果大于2,则会回弹多次。下面的例子会设置5次,大家可以看效果。
DecelerateInterpolator @android:anim/decelerate_interpolator 动画运行越来越慢,减速运行 ,说明开始的时候是最高速。
LinearInterpolator @android:anim/linear_interpolator 动画匀速改变
OvershootInterpolator @android:anim/overshoot_interpolator 快速完成动画,会超出一点然后再回到结束样式。
PathInterpolator @android:anim/path_interpolator 根据路径来控制动画的执行快慢,路径可以是贝塞尔曲线,也可以是普通Path。
LutInterpolator

如果使用默认的插值器,用法示例:

mRotateAni.setInterpolator(new LinearInterpolator());

xml动画配置文件中设置插值器代码:

android:interpolator="@android:anim/linear_interpolator"

PathInterpolator 路径插值器

贝塞尔曲线的应用

PathInterpolator pathInterpolator = new PathInterpolator(0.2f, 0.3f,0.6f, 0.8f);
m_animator.setInterpolator(pathInterpolator);

Android自定义三次贝塞尔曲线插值器,参考:
https://www.jianshu.com/p/639efa7762a1

Android动画之插值器简介和系统默认插值器,参考:
https://blog.csdn.net/u010126792/article/details/85327881

贝塞尔曲线,参考:
http://devmag.org.za/2011/04/05/bzier-curves-a-tutorial/

posted on 2020-06-08 11:01  JJ_S  阅读(744)  评论(0编辑  收藏  举报