サイト移転のお知らせ:http://techbooster.org/に移転しました

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

1月 26, 2011   //   by kkato   //   ユーザインターフェース  //  No Comments

今回はアニメーションの開始、終了時などのタイミングで何か処理を行いたい時に使う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();
	}


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

関連する記事:

Sponsored Link

Comments are closed.

技術書新刊 発売中

アンドロイドアカデミアには、CIやテスト、互換検証など実務に生きるノウハウをあつめています

技術書新刊 発売中

Android Next!はAndroid 7.0に対応したはじめての技術書です!


The Web Explorer 2はCSSの中央寄せやWebAudioなど未来を読み解く一冊です


Revised TypeScript in DefinitelylandはTypeScript 2.0(β)に対応した解説書です。インストールから型定義まで幅広くサポートしています


技術書をかこう!はエンジニアらしい執筆環境を構築、HowTo本です