AnimationListenerを使ってアニメーションのイベントを拾う


今回はアニメーションの開始、終了時などのタイミングで何か処理を行いたい時に使うAnimationListenerを紹介します。

アニメーションのさせ方自体は以下の記事を参考にしてください。

画像をアニメーションさせる
ViewFlipperでアニメーションする(ViewAnimator)
Viewにアニメーションを付与する(Tweenアニメーション)
AnimationDrawableでアニメーションを作る

それでは続きへどうぞ。

AnimationListener

アニメーションのイベントを拾うにはAnimationListenerクラスを利用します。

AnimationクラスのsetAnimationListener()メソッドでリスナを登録します。今回はActivityがAnimationListenerを実装する形をとってみます。

public class MainActivity extends Activity implements OnClickListener, AnimationListener {

そしてsetAnimationListenerメソッドで登録します。
サンプルではRotateAnimationクラスを生成してsetAnimationListenerメソッドでリスナを登録しています。

RotateAnimation rotate = new RotateAnimation(0, 360,
		img.getWidth() / 2, img.getHeight() / 2);
rotate.setDuration(3000);
rotate.setRepeatCount(2);
rotate.setAnimationListener(this);

3つのメソッド

AnimationListenerクラスを実装する場合は3つのメソッドをオーバーライドする必要があります。
メソッドとそれらのイベントの発生時は以下の通りです。

AnimationListener Methods

メソッド名 イベント発生のタイミング
onAnimationStart アニメーションの開始時
onAnimationEnd アニメーションの終了時
onAnimationRepeat アニメーションの繰り返し時


サンプルではそれぞれのタイミングでトーストを表示させています。

	@Override
	public void onAnimationEnd(Animation animation) {
		Toast.makeText(this, "AnimationEnd", Toast.LENGTH_SHORT).show();
	}

	@Override
	public void onAnimationRepeat(Animation animation) {
		Toast.makeText(this, "AnimationRepeat", Toast.LENGTH_SHORT).show();
	}

	@Override
	public void onAnimationStart(Animation animation) {
		Toast.makeText(this, "AnimationStart", Toast.LENGTH_SHORT).show();
	}


今回のサンプルコードはこちらになります。