2017-02-14 5 views
-1

次のコードがあります。 複数のアニメーションを繰り返す方法Androidで不完全に

Iterator imagesIterator = mImages.iterator(); 
while (arrowsIterator.hasNext()) { 
    ImageView image = (ImageView) imagesIterator.next(); 

    TranslateAnimation anim = new TranslateAnimation(
     TranslateAnimation.ABSOLUTE, 0f, 
     TranslateAnimation.ABSOLUTE, 0f, 
     TranslateAnimation.RELATIVE_TO_PARENT, 0f, 
     TranslateAnimation.RELATIVE_TO_PARENT, 1.0f 
    ); 

    anim.setDuration(10000); 
    anim.setInterpolator(new LinearInterpolator()); 
    anim.setRepeatCount(Animation.INFINITE); 
    image.startAnimation(anim); 
} 

アイデア

は、私はすべてのイメージがダウンして、画面の最上部から「落ちる」と(上から下へ)無限にそれを繰り返すように設定をしたいということです。

私が今問題にしているのは、すべての画像をアニメーションで処理してもう一度すべてを繰り返すまで待っているようだということです。

私はそれらの画像のそれぞれが底に達するとすぐにそれらを繰り返すことを望んでいるので、スクリーンの上から落ちる画像のカスケードループのように見えます。

希望しました。ありがとう!

答えて

0

image.startAnimation(anim)に達するとすぐにアニメーションが開始されると思います。

ループが終了すると、メインLooperにメッセージがポストされ、アニメーションが開始されます。また、あなたは他に指定していないので、同時に実行されます。

できることは、ループ内の各アニメーションに初期の遅延を与えることです。

Iterator imagesIterator = mImages.iterator(); 
long offset = 0; 
while (arrowsIterator.hasNext()) { 
    ImageView image = (ImageView) imagesIterator.next(); 

    TranslateAnimation anim = new TranslateAnimation(
      TranslateAnimation.ABSOLUTE, 0f, 
      TranslateAnimation.ABSOLUTE, 0f, 
      TranslateAnimation.RELATIVE_TO_PARENT, 0f, 
      TranslateAnimation.RELATIVE_TO_PARENT, 1.0f 
    ); 

    anim.setDuration(10000); 
    anim.setStartOffset(offset); 
    offset += 100; // each animation will be delayed by 100ms from the previous 
    anim.setInterpolator(new LinearInterpolator()); 
    anim.setRepeatCount(Animation.INFINITE); 
    image.startAnimation(anim); 
} 
+0

実際、私はそれらを一度にすべて開始したい。しかし、彼らはまたすべてを一度に終わらせている。私が見つけたのは、間違って構成されているのは翻訳のオフセットです。私が-1.0fから1.0fに設定し、あなたが書いたようにそれを遅らせると、perferctの世界では、画面の上から画像が始まるのをいつでも再現したいと思っています。彼らは完全に画面から下に向かっています。これは、私がカスケードをシミュレートする無限ループを意味するものです。 – martin

+0

そのカスケード効果のために、すべてのアニメーションに対して異なる継続時間と異なるオフセットを設定する必要があります。 – azizbekian

関連する問題