2012年4月13日金曜日

Androidでアニメーションの開始・経過・終了のイベントを取得するには?

Androidでアニメーションの開始・経過・終了のイベントを取得するには?

こんな風。

Animation anim = new Animation();
anim.setAnimationListener( new Animation.AnimationListener() {

  @Override
  public void onAnimationEnd(Animation animation) {
  }

  @Override
  public void onAnimationRepeat(Animation animation) {
  }

  @Override
  public void onAnimationStart(Animation animation) {
  }
    
});

Animationクラスの内部にAnimationListernerというインターフェースがあるので、これを実装してAnimationにリスナーとしてセットする。

インターフェースなので、1つのメソッドしか必要なかったとしても3つのメソッドをすべて実装しなくてはならないのが面倒だよなぁ・・・というわけで、アダプタークラスを作っておくと楽できる。

package ex.daix;

import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;

public class AnimationListenerAdapter implements AnimationListener {

  @Override
  public void onAnimationEnd(Animation animation) {
  }


  @Override
  public void onAnimationRepeat(Animation animation) {
  }


  @Override
  public void onAnimationStart(Animation animation) {
  }

}

このクラスを作っておくと、上のコードはこういう風にできる。

Animation anim = new Animation();
anim.setAnimationListener( new AnimationListenerAdapter() {

  @Override
  public void onAnimationStart(Animation animation) {
  }
    
});

これで大分コードが短くなるはず。