Android 属性动画(六)使用 ViewPropertyAnimator 实现多属性动画效果

本文介绍如何使用ViewPropertyAnimator实现多属性并行动画效果,通过PropertyValuesHolder定义各属性动画,利用ObjectAnimator.ofPropertyValuesHolder组合播放,使代码更简洁且易读。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

    在前面章节中,提到了 使用 AnimatorSet 编排多个动画,通过 AnimatorSet 可以直接为一个目标对象的多个属性添加动画效果。对于实现由多个属性并行的动画效果,还有一种更优的方案,那就是 ViewPropertyAnimator

二、使用 ViewPropertyAnimator 实现多属性动画效果

    ViewPropertyAnimator 有助于使用单个底层 Animator 对象轻松为 View 的多个属性并行添加动画效果。它的行为方式与 ObjectAnimator 非常相似,因为它会修改视图属性的实际值,但在同时为多个属性添加动画效果时,它更为高效。此外,使用 ViewPropertyAnimator 的代码更加简洁,也更易读。

    ViewPropertyAnimator 实现多属性动画非常简单,每个属性的动画用一个 PropertyValuesHolder 定义,然后用 ValueAnimator.ofPropertyValuesHolder() 或者 ObjectAnimator.ofPropertyValuesHolder() 将所有属性包含进来。

  • 示例:
val pvhScaleX = PropertyValuesHolder.ofFloat("scaleX", 1.0f, 1.5f)
val pvhScaleY = PropertyValuesHolder.ofFloat("scaleY", 1.0f, 2.0f)
ObjectAnimator.ofPropertyValuesHolder(imageView, pvhScaleX, pvhScaleY)
  • 实现效果

使用ViewPropertyAnimator实现多属性动画效果

注意事项:
1. ValueAnimator.ofPropertyValuesHolder()ObjectAnimator.ofPropertyValuesHolder() 两个方法的参数不一致。ObjectAnimator.ofPropertyValuesHolder() 第一个参数为目标对象,第二个参数是 PropertyValuesHolder 数组,如果使用 kotlin 语言编写,第一个参数如果为 null, 请确保将 null 转为 Anynull as Any?),否则编译器会把他当做一个 PropertyValuesHolder 对象。
2. 如果使用 ValueAnimator.ofPropertyValuesHolder() 组合动画,必须添加监听,并在监听中通过 getAnimatedValue(String propertyName) 方法获取相应属性的值。

编后语

    ViewPropertyAnimator 适用于多个属性并行的多属性动画效果,AnimatorSet虽然可以实现同样的效果,对于多个属性并行的多属性动画效果,请使用性能会更佳的 ViewPropertyAnimator


上一篇:Android 属性动画(五)为 ViewGroup 布局更改添加动画效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值