同时启动多个ViewPropertyAnimators

时间:2014-08-09 09:39:44

标签: android animation android-animation

使用Animator类,您只需调用以下内容即可同时播放多个动画:

AnimatorSet animatorSet = new AnimatorSet();
animatorSet.playTogether(animatorsArray);
animatorSet.start();

但我找不到任何与ViewPropertyAnimator相似的类似内容。

(仅供参考。我正在尝试为多个listView项目制作动画)

2 个答案:

答案 0 :(得分:13)

我知道这个问题超过一年了,但由于我需要同样的东西,我想出了一个解决方案,我决定分享它:

我创建了一个ObjectAnimator包装器,您可以使用它与使用ViewPropertyAnimator的方式几乎完全相同。您仍然可以使用ObjectAnimator对象,以便编写AnimatorSet

包装器可用here

示例(为mTestView设置相同参数的动画):

  1. ViewPropertyAnimator
  2. mTestView.animate().withLayer().alphaBy(0.3f).rotationX(27);
    
    1. ViewPropertyObjectAnimator(我的包装)
    2. ObjectAnimator objectAnimator = 
          ViewPropertyObjectAnimator.animate(mTestView).withLayer().alphaBy(0.3f).rotationX(27).get();
      

      你有一个ObjectAnimator,你可以start()AnimatorSet内使用。

答案 1 :(得分:4)

我建议如上所述使用withStartAction。

进一步阅读Android文档中的ViewPropertyAnimator页面

  

public ViewPropertyAnimator withStartAction(Runnable runnable)   在API级别16中添加

     

指定下一个动画运行时要执行的操作。如果   在此ViewPropertyAnimator上设置了一个startDelay,然后是   动作将在startDelay到期后运行,当实际时   动画开始了。此方法与withEndAction(Runnable)一起使用   旨在帮助促进ViewPropertyAnimator的编排   动画与其他动画或动作在应用程序中。

我即将自己使用它,它看起来像是在工作。

我将所有动画代码添加到Runnable中,将多个Runnables添加到ArrayList中,准备好后,我遍历ArrayList并在所有这些上调用run()。