使用Animator类,您只需调用以下内容即可同时播放多个动画:
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.playTogether(animatorsArray);
animatorSet.start();
但我找不到任何与ViewPropertyAnimator相似的类似内容。
(仅供参考。我正在尝试为多个listView项目制作动画)
答案 0 :(得分:13)
我知道这个问题超过一年了,但由于我需要同样的东西,我想出了一个解决方案,我决定分享它:
我创建了一个ObjectAnimator
包装器,您可以使用它与使用ViewPropertyAnimator
的方式几乎完全相同。您仍然可以使用ObjectAnimator
对象,以便编写AnimatorSet
。
包装器可用here。
示例(为mTestView
设置相同参数的动画):
ViewPropertyAnimator
mTestView.animate().withLayer().alphaBy(0.3f).rotationX(27);
ViewPropertyObjectAnimator
(我的包装)
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()。