欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-02 20:25:13
...

一、前言

    在前面章节中,提到了 使用 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)
  • 实现效果

Android 属性动画(六)使用 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 布局更改添加动画效果
下一篇:Android 属性动画(七)使用 ViewPropertyAnimator 实现多属性动画效果