AnimationListenerを使ってアニメーションのイベントを拾う
|今回はアニメーションの開始、終了時などのタイミングで何か処理を行いたい時に使うAnimationListenerを紹介します。
アニメーションのさせ方自体は以下の記事を参考にしてください。
画像をアニメーションさせる
ViewFlipperでアニメーションする(ViewAnimator)
Viewにアニメーションを付与する(Tweenアニメーション)
AnimationDrawableでアニメーションを作る
それでは続きへどうぞ。
AnimationListener
アニメーションのイベントを拾うにはAnimationListenerクラスを利用します。
AnimationクラスのsetAnimationListener()メソッドでリスナを登録します。今回はActivityがAnimationListenerを実装する形をとってみます。
1 | public class MainActivity extends Activity implements OnClickListener, AnimationListener { |
そしてsetAnimationListenerメソッドで登録します。
サンプルではRotateAnimationクラスを生成してsetAnimationListenerメソッドでリスナを登録しています。
1 2 3 4 5 | 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 | アニメーションの繰り返し時 |
サンプルではそれぞれのタイミングでトーストを表示させています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @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(); } |
今回のサンプルコードはこちらになります。