Animatorクラスを使用すると、次のようなものを呼び出すだけで、複数のアニメーションを同時に再生できます。
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.playTogether(animatorsArray);
animatorSet.start();
しかし、ViewPropertyAnimatorで機能する同様のものは見つかりません。
(参考までに、複数のlistViewアイテムをアニメーション化しようとしています)
質問が1年以上前のものであることは知っていますが、同じことが必要であり、解決策を思いついたので、それを共有することにしました。
ObjectAnimator
を使用するのとほぼ同じ方法で使用できるViewPropertyAnimator
ラッパーを作成しました。それでも、ObjectAnimator
オブジェクトを使用して、AnimatorSet
を記述できます。
ラッパーが利用可能です ここ 。
例(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
内で使用できます。
上で述べたように、withStartActionを使用することをお勧めします。
ViewPropertyAnimator ページのAndroid docs)をさらに読むと
public ViewPropertyAnimator withStartAction(Runnable runnable)APIレベル16で追加されました
次のアニメーションの実行時に実行するアクションを指定します。このViewPropertyAnimatorにstartDelayが設定されている場合、実際のアニメーションが開始されるときに、startDelayの期限が切れた後にアクションが実行されます。このメソッドは、withEndAction(Runnable)とともに、アプリケーション内の他のアニメーションまたはアクションとのViewPropertyAnimatorアニメーションの振り付けを容易にすることを目的としています。
私はこれを自分で使用しようとしていますが、機能しているようです。
すべてのアニメーションコードをRunnableに追加し、複数のRunnableをArrayListに追加し、準備ができたら、ArrayListをループして、それらすべてでrun()を呼び出しました。