package com.cheng.animationstudy.activity; import android.animation.Animator; import android.animation.ObjectAnimator; import android.annotation.SuppressLint; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.cheng.animationstudy.C; import com.cheng.animationstudy.R; public class AnimStreamControlActivity extends AppCompatActivity { private ObjectAnimator mAnimatior; private ImageView mShowAnimImgIV; private TextView mIsStartedTV; private TextView mIsRunningTV; private TextView mIsPausedTV; private TextView mMessageTV; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_animstreamcontrol); mIsStartedTV = (TextView) findViewById(R.id.tv_isstarted); mIsRunningTV = (TextView) findViewById(R.id.tv_isrunning); mIsPausedTV = (TextView) findViewById(R.id.tv_ispaused); mMessageTV = (TextView) findViewById(R.id.tv_message); mShowAnimImgIV = (ImageView) findViewById(R.id.iv_showanim); mAnimatior = ObjectAnimator.ofFloat(mShowAnimImgIV, "rotation", 0, 360); mAnimatior.setDuration(C.Int.ANIM_DURATION * 2); mAnimatior.setStartDelay(C.Int.ANIM_DURATION); mAnimatior.setRepeatCount(5); mAnimatior.setRepeatMode(ObjectAnimator.RESTART); Animator.AnimatorListener animationListener = new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { setStatusTexts(); mMessageTV.setText("started"); } @Override public void onAnimationRepeat(Animator animation) { setStatusTexts(); mMessageTV.setText("repeating"); } @Override public void onAnimationEnd(Animator animation) { setStatusTexts(); mMessageTV.setText(mMessageTV.getText() + " -- ended"); } @Override public void onAnimationCancel(Animator animation) { setStatusTexts(); mMessageTV.setText("cancelled"); } }; mAnimatior.addListener(animationListener); if (android.os.Build.VERSION.SDK_INT >= 19) { Animator.AnimatorPauseListener pauseListener = new Animator.AnimatorPauseListener() { @Override public void onAnimationResume(Animator animation) { setStatusTexts(); mMessageTV.setText("resumed"); } @Override public void onAnimationPause(Animator animation) { setStatusTexts(); mMessageTV.setText("paused"); } }; mAnimatior.addPauseListener(pauseListener); } } @SuppressLint("NewApi") public void setStatusTexts() { if (android.os.Build.VERSION.SDK_INT >= 14) mIsStartedTV.setText("isStarted = " + mAnimatior.isStarted()); mIsRunningTV.setText("isRunning = " + mAnimatior.isRunning()); if (android.os.Build.VERSION.SDK_INT >= 19) mIsPausedTV.setText("isPaused = " + mAnimatior.isPaused()); } public void startAnimation(View view) { mAnimatior.start(); } public void endAnimation(View view) { mAnimatior.end(); } public void cancelAnimation(View view) { mAnimatior.cancel(); } @SuppressLint("NewApi") public void pauseAnimation(View view) { if (android.os.Build.VERSION.SDK_INT >= 19) mAnimatior.pause(); } @SuppressLint("NewApi") public void resumeAnimation(View view) { if (android.os.Build.VERSION.SDK_INT >= 19) mAnimatior.resume(); } }