美文网首页
Android动画相关技巧

Android动画相关技巧

作者: 小智在不在 | 来源:发表于2023-08-01 20:08 被阅读0次
1. 动画估值器(TypeEvaluator

使用估值器可以计算动画元素的目标属性值,例如ArgbEvaluator可以在颜色变化的动画中计算出当前的颜色,使用方式如下:

// 构造ArgbEvaluator对象
val argbEvaluator = ArgbEvaluator()
// fraction 通常来自差值器算出的百分比
val fraction = 0.5f
// 这里表示一个从蓝变红的动画中,当差值器的值是0.5f时,颜色应该处于何种状态
val color = (argbEvaluator.evaluate(fraction, Color.BLUE, Color.RED) as Int)

ArgbEvaluator外,Android还默认提供多种估值器,如IntEvaluatorFloatEvaluatorPointFEvaluator

2. Property

这是在属性动画中用到的类,常见的子类有IntPropertyFloatProperty, 该类可以方便地在动画中设置View的各个属性,新建一个自定义Property用作在属性动画中修改View的高度,示例如下:

@RequiresApi(api = Build.VERSION_CODES.N)
public class HeightProperty extends IntProperty<View> {
    public PropertyHeight() {
        super("PropertyHeight");
    }

    @Override
    public void setValue(View object, int value) {
        object.getLayoutParams().height = value;
        object.setLayoutParams(object.getLayoutParams());
    }

    @Override
    public Integer get(View object) {
        return object.getLayoutParams().height;
    }
}

HeightProperty 使用示例如下

// 获取到要做动画的View对象
val view = findViewById<View>(R.id.progress)
// 构造动画对象
val pullA = ObjectAnimator.ofPropertyValuesHolder(view, PropertyValuesHolder.ofInt(HeightProperty(), 700, 1200))
        .also {
            it.duration = 900L
        }
// 开启动画
pullA.start()

相关文章

网友评论

      本文标题:Android动画相关技巧

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