1、如果想同时改变多个属性,根据前面所学的,比较显而易见的一种思路是构造多个对象Animator, (Animator可以是ValueAnimator、ObjectAnimator和AnimatorSet) 然后最后把它们放在一个AnimatorSet中。 另一种思路就是,把多个属性的改变放在同一个ValueAnimator中(ObjectAnimator也是ValueAnimator)。 而这就要借助PropertyValuesHolder。本文主要讲这种方法。
2、View的多属性动画:使用ViewPropertyAnimator ViewPropertyAnimator是API Level 12引进的。 它是用来做针对蕺清寤凯View对象的多个属性动画功能。 (前面的PropertyValuesHolder对象是针对所有对象的,范围更广)。 如果要同时变换一个View的多个属性的话,ViewPropertyAnimator提供了一种更方便和更适合的方法。 而且由于多个属性的invalidate方法调用统一管理,而不是之前的分别调用,所以还会有一些性能优化。 注意ViewPropertyAnimator这个类的对象不是由调用者构造的,而是通过View类的animate()方法返回的。 比如下面的代码对比:给同一个View实现同一个动画效果: 用多个ObjectAnimator对象:ObjectAnimator animX = ObjectAnimator.ofFloat(myView, "x", 50f); ObjectAnimator animY = ObjectAnimator.ofFloat(myView, "y", 100f); AnimatorSet animSetXY = new AnimatorSet(); animSetXY.playTogether(animX, animY); animSetXY.start(); 用一个ObjectAnimator对象加多个PropertyValuesHolder:PropertyValuesHolder pvhX = PropertyValuesHolder.ofFloat("x", 50f); PropertyValuesHolder pvhY = PropertyValuesHolder.ofFloat("y", 100f); ObjectAnimator.ofPropertyValuesHolder(myView, pvhX, pvyY).start(); 用ViewPropertyAnimator:myView.animate().x(50f).y(100f);