Android动画相关技巧

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()
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容