Androidプログラマへの道 〜 Moonlight 明日香 〜 - アニメーションのイベントを取得する
Property Animation(API Level 11)において, アニメーションのイベント(開始, 終了, キャンセル等)を取得するには, Animator.AnimatorListenerインタフェースを利用する.

アニメーションイベントの取得(API Level 11)

アニメーションをキャンセルする」を参照.
  • Animation01.java
    • Animator.addListenerメソッドで, AnimatorListenerインタフェースを設定する.
    • onAnimationXXXメソッドをオーバーライドする.
  注) AnimatorListenerAdapterクラスを用いる場合, 必要なメソッドのみ実装すればよい.
package com.moonlight_aska.android.work.animation01;

import android.animation.Animator;
import android.animation.AnimatorInflater;
import android.animation.AnimatorSet;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends Activity {
  private static final String LOG_TAG = MainActivity.class.getSimpleName();
  private AnimatorSet mSet = null;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ImageView img = (ImageView) findViewById(R.id.robot);
    mSet = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.scale);
    mSet.addListener(new Animator.AnimatorListener() {

      @Override
      public void onAnimationStart(Animator animation) {
        Log.v(LOG_TAG, "onAnimationStart!!");
      }

      @Override
      public void onAnimationEnd(Animator animation) {
        Log.v(LOG_TAG, "onAnimationEnd!!");
      }

      @Override
      public void onAnimationCancel(Animator animation) {
        Log.v(LOG_TAG, "onAnimationCancel!!");
      }

      @Override
      public void onAnimationRepeat(Animator animation) {
        Log.v(LOG_TAG, "onAnimationRepeat!!");
      }
    });
    mSet.setTarget(img);
    mSet.start();
  }

  public void onCancelListener(View view) {
    if (mSet != null) {
      if (mSet.isRunning()) {
        mSet.cancel();
      }
    }
  }
}
  • 実行例