Property Animation(API Level 11)において, アニメーションの実行をキャンセルするには, アニメータ(animation.Animator)クラスを利用する.
アニメーションの停止/再実行(API Level 19)
- Animation01.java
- Animator#isRunningメソッドで, アニメーション実行中か否か確認する.
- Animator#pauseメソッドで, アニメーションの実行を一時停止する.
- Animator#isPausedメソッドで, アニメーションを一時停止中か否か確認する.
- Animator#resumeメソッドで, アニメーションを再実行する.
package com.moonlight_aska.android.work.animation01;
import android.animation.AnimatorInflater;
import android.animation.AnimatorSet;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
public class MainActivity extends Activity {
private AnimatorSet mSet = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mageView img = (ImageView) findViewById(R.id.robot);
mSet = (AnimatorSet) AnimatorInflater.loadAnimator(this, R.animator.repeat);
mSet.setTarget(img);
mSet.start();
}
// Pauseボタンの処理
public void onPauseListener(View view) {
if (mSet != null) {
if (mSet.isRunning()) {
mSet.pause();
}
}
}
// Resumeボタンの処理
public void onResumeListener(View view) {
if (mSet != null) {
if (mSet.isPaused()) {
mSet.resume();
}
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<objectAnimator
android:interpolator="@android:anim/decelerate_interpolator"
android:propertyName="rotation"
android:duration="5000"
android:valueFrom="0"
android:valueTo="360"
android:repeatCount="10"
/>
</set>