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/