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(); }
今回のサンプルコードはこちらになります。