0

2 つの異なるアニメーションを使用して、ある種の imageGallery を作成したいと考えています。現在表示されている画像をクリックすると、「OK-Image」がフェードインし (1 秒、繰り返されません)、アニメーションが終了した後、次の画像が表示されます。

各画像には無限に繰り返されるアニメーションがあります (通常の表示、拡大表示)

それで ..

  • ステップ 1: 画像の無限アニメーション (通常 => ズーム => 通常..)
  • ステップ 2: クリック
  • ステップ 3: 「OK-Image」を表示 (1 秒でフェード)
  • ステップ1 ...

問題は、OK-Animation の Animation Listener がヒットし、Infinite Animation の AnimationListener がヒットしないことです。

@Override
public void onCreate(Bundle savedInstanceState) {
   fadeInOKAnimation = AnimationUtils.loadAnimation(this, R.anim.fadeinonce);
   fadePermanentAnimation = AnimationUtils.loadAnimation(this, R.anim.fadeininfinite);
   fadeInOKAnimation.setAnimationListener(fadeInOKAnimationListener);        
   fadePermanentAnimation.setAnimationListener(fadePermanentAnimationListener);
}


AnimationListener fadeInOKAnimationListener = new Animation.AnimationListener() {

   public void onAnimationEnd(Animation animation) 
   { 
      ThreadHelper.sleep(500);
      imgMessung.clearAnimation();
      int currentImageId = currentStateImage.getNormalImage();
      imgMessung.clearAnimation();
      imgMessung.setImageResource(currentImageId);
      imgMessung.startAnimation(fadePermanentAnimation);
   }

   public void onAnimationRepeat(Animation animation) { }

   public void onAnimationStart(Animation animation) { }
};


AnimationListener fadePermanentAnimationListener = new Animation.AnimationListener() {

   public void onAnimationEnd(Animation animation) { }

   public void onAnimationRepeat(Animation animation) {

      StateImage currentStateImage = messung.GetCurrentImage();

      if(currentImageState == ImageState.Normal)
      {
         int currentImageId = Integer.parseInt(currentStateImage.getNormalImage());
         imgMessung.setImageResource(currentImageId);
      }
      else
      {
         int currentImageId = Integer.parseInt(currentStateImage.getZoomedImage());
         imgMessung.setImageResource(currentImageId);
      }
   }

   public void onAnimationStart(Animation animation) { }

};
4

1 に答える 1

0

無限のアニメーションには終わりがないため、何もトリガーされません。アニメーションが再開される場所を知るためにonAnimationRepeatを使用することもできます(ただし、何のために無限の繰り返しが必要なのですか? 無限にアニメーション化する要素が必要な場合 (つまり、ビジー マーカーを回転させる)、ie にラップし、FrameLayoutそこにアニメーションとリスナーを植えます。

于 2012-10-10T11:55:58.470 に答える