以下のように、持続時間が異なる 2 つのアニメーションがあります: アニメーション
1:
TranslateAnimation trans1 = new TranslateAnimation(0, 0, 0, 500);
trans1.setStartOffset(0);
trans1.setDuration(5000);
trans1.setFillAfter(true);
アニメーション 2:
TranslateAnimation trans2 = new TranslateAnimation(0, -100, -200, -200);
trans2.setDuration(200);
trans2.setRepeatCount(25);
trans2.setFillAfter(true);
ご覧のとおり、これらのアニメーションの持続時間は異なります。Y:0から500までの1回のAnim1(デュレーション5000)のアニメーション中に、Anim2(デュレーション200)を25回ループでアニメートしたいと思います。
AnimationSet と addAnimation を試してみましたが、うまくいきません。この問題を解決する方法を教えてください。
私のコード:
AnimationSet rootSet = new AnimationSet(true);
rootSet.setInterpolator(new AccelerateInterpolator());
rootSet.setRepeatMode(Animation.INFINITE);
rootSet.setRepeatCount(200);
rootSet.setDuration(5000);
rootSet.setFillAfter(true);
TranslateAnimation trans1 = new TranslateAnimation(0, 0, 0, 500);
trans1.setStartOffset(0);
trans1.setDuration(5000);
trans1.setFillAfter(true);
rootSet.addAnimation(trans1);
AnimationSet rootSet2 = new AnimationSet(true);
rootSet2.setInterpolator(new AccelerateInterpolator());
rootSet2.setRepeatMode(Animation.INFINITE);
rootSet2.setRepeatCount(200);
rootSet2.setDuration(200);
TranslateAnimation trans2 = new TranslateAnimation(0, -100, -200, -200);
trans2.setDuration(200);
trans2.setRepeatCount(25);
trans2.setFillAfter(true);
rootSet2.addAnimation(trans2);
rootSet.addAnimation(rootSet2);
iv.startAnimation(rootSet);
編集:
trans2アニメーションのみを再生すると、必要に応じて(水平方向に)25回繰り返されます。さらに、このアニメーションを垂直方向(trans1)でアニメーション化(イメージビューだけでなく水平方向のアニメーション全体)したいと考えています。
この説明がより明確になることを願っています。
これら 2 つのアニメーションを 1 つの AnimationSet に追加すると、最初のアニメーションはまったく機能せず、imageview (animationn ではない) は -200,500 に線形に変換されます。