10. android动画《四》插值器(Interpolator)和 估值器(TypeEvaluator)

复杂动画(插值器和估值器).jpg

一. 插值器(Interpolator)

1. 作用

作用:设置 属性值 从初始值过渡到结束值 的变化规律

  1. 如匀速、加速 & 减速 等等
  2. 即确定了 动画效果变化的模式,如匀速变化、加速变化 等等。
2. 应用场景

实现非线性运动的动画效果
非线性运动:动画改变的速率不是一成不变的,如加速 & 减速运动都属于非线性运动

3. 使用方式
  1. xml引用 android:shareInterpolator = ""
  2. java代码中引用 anim.setInterpolator();
4. 系统内置9种插值器

效果参考 https://blog.csdn.net/swt369/article/details/77620263
使用Android内置的插值器能满足大多数的动画需求
如果上述9个插值器无法满足需求,还可以自定义插值器

5. 自定义插值器

1. 补间动画

public class MyInterpolator implements Interpolator {
    @Override
    public float getInterpolation(float input) {
        // 参数说明
        // input值值变化范围是0-1,且随着动画进度(0% - 100% )均匀变化
        // 即动画开始时,input值 = 0;动画结束时input = 1
        // 而中间的值则是随着动画的进度(0% - 100%)在0到1之间均匀增加

        float result = 0;
        result = input*input; //加速度增加
//        result = input; //匀速
        return result;
    }
}

2. 属性动画

public class MyTimeInterpolator implements TimeInterpolator {
    @Override
    public float getInterpolation(float input) {
        float result = 0;
        result = input*input; //加速度增加
//        result = input; //匀速
        return result;
    }
}

二. 估值器(TypeEvaluator)

1. 作用

设置 属性值 从初始值过渡到结束值 的变化具体数值

  1. 插值器(Interpolator)决定 值 的变化规律(匀速、加速blabla),即决定的是变化趋势;而接下来的具体变化数值则交给估值器
  2. 估值器属性动画特有的属性
2. 应用场景

协助插值器 实现非线性运动的动画效果
非线性运动:动画改变的速率不是一成不变的,如加速 & 减速运动都属于非线性运动

3. 使用方式

1. 构造方法传入

 ObjectAnimator anim = ObjectAnimator.ofObject(textView, "height", new IntEvaluator(), 1, 3);

2. setEvaluator()
ValueAnimator的方法,它的子类都可以调用

4. 系统内置3种估值器

(1). IntEvaluator:针对整型属性
(2). FloatEvaluator:针对浮点型属性
(3). ArgbEvaluator:针对Color属性

5. 自定义估值器

你可能感兴趣的:(10. android动画《四》插值器(Interpolator)和 估值器(TypeEvaluator))