概述
简介
- 定义:Android实现动画效果中的一个辅助接口
- 作用:设置 属性值 从初始值过渡到结束值 的变化规律
- 如匀速、加速 & 减速 等等
- 即确定了 动画效果变化的模式,如匀速变化、加速变化 等等
应用场景
实现非线性运动的动画效果
非线性运动:动画改变的速率不是一成不变的,如加速 & 减速运动都属于非线性运动
具体使用
插值器在动画的使用有两种方式:在XML / Java代码中设置:
XML设置
前面多少都接触过了。
1 |
|
Java设置
1 | Button mButton = (Button) findViewById(R.id.Button); |
系统内置插值器
类型
Android系统内置了9种插值器
使用
- 当在XML文件设置插值器时,只需传入对应的插值器资源ID即可
- 当在Java代码设置插值器时,只需创建对应的插值器对象即可
- 使用
Android
内置的插值器能满足大多数的动画需求
- 系统默认的插值器是
AccelerateDecelerateInterpolator
,即先加速后减速 - 如果上述9个插值器无法满足需求,还可以自定义插值器
自定义插值器
本质
根据动画的进度(0%-100%)计算出当前属性值改变的百分比
实现方式
自定义插值器需要实现 Interpolator
/ TimeInterpolator
接口 & 复写getInterpolation()
- 补间动画 实现
Interpolator
接口;属性动画实现TimeInterpolator
接口TimeInterpolator
接口是属性动画中新增的,用于兼容Interpolator
接口,这使得所有过去的Interpolator
实现类都可以直接在属性动画使用
1 | // Interpolator接口 |
在学习自定义插值器前,我们先来看两个已经实现好的系统内置差值器:
- 匀速插值器:
LinearInterpolator
- 先加速再减速 插值器:
AccelerateDecelerateInterpolator
1 | // 匀速差值器:LinearInterpolator |
实例说明
实现一个 自定义 Interpolator
: 先减速后加速
步骤1:根据需求实现 Interpolator 接口
1 | public class DecelerateAccelerateInterpolator implements TimeInterpolator { |
步骤2: 设置使用
1 | public class Demo_Interpolator extends AppCompatActivity { |
效果
与估值器区别
正余弦图像
md,差点连图像怎么画都忘了
sin(x):
cos(x):
Demo 地址
https://github.com/Commandercc/DemoEX/blob/master/AnimationDmeo3.zip