package jp.mydns.sys1yagi.android.nineoldandroidsample; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.AccelerateDecelerateInterpolator; import android.view.animation.AnticipateInterpolator; import android.widget.TextView; import android.widget.Toast; import com.nineoldandroids.animation.Animator; import com.nineoldandroids.animation.Animator.AnimatorListener; import com.nineoldandroids.animation.TypeEvaluator; import com.nineoldandroids.animation.ValueAnimator; import com.nineoldandroids.animation.ValueAnimator.AnimatorUpdateListener; import com.nineoldandroids.view.ViewPropertyAnimator; public class NineOldAndroidSampleActivity extends Activity { private NineOldAndroidSampleActivity This() { return this; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_nine_old_android_sample); findViewById(R.id.value_anim).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { valueAnimator((TextView) findViewById(R.id.value_anim_text)); } }); findViewById(R.id.view_anim).setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { viewPropertyAnimator(view); } }); } private void valueAnimator(final TextView text) { ValueAnimator animator = ValueAnimator.ofInt(0, 200); animator.setDuration(3000); animator.setInterpolator(new AccelerateDecelerateInterpolator()); animator.setRepeatCount(1); animator.setRepeatMode(ValueAnimator.REVERSE); animator.addUpdateListener(new AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { int value = (Integer) animation.getAnimatedValue(); text.setText("value " + value); } }); animator.addListener(new AnimatorListener() { @Override public void onAnimationStart(Animator animation) { Toast.makeText(This(), "start animation", Toast.LENGTH_SHORT) .show(); } @Override public void onAnimationRepeat(Animator animation) { Toast.makeText(This(), "repeat animation", Toast.LENGTH_SHORT) .show(); } @Override public void onAnimationEnd(Animator animation) { Toast.makeText(This(), "end animation", Toast.LENGTH_SHORT) .show(); } @Override public void onAnimationCancel(Animator animation) { } }); animator.start(); } private void viewPropertyAnimator(final View view) { ViewPropertyAnimator animator = ViewPropertyAnimator.animate(view); animator.alpha(0).x(200).y(150).scaleX(2.0f).scaleY(2.0f) .setDuration(1000) .setInterpolator(new AnticipateInterpolator()) .setListener(new AnimatorListener() { @Override public void onAnimationStart(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } @Override public void onAnimationEnd(Animator animation) { ViewPropertyAnimator.animate(view).setListener(null) .alpha(1).x(0).y(0).scaleX(1.0f).scaleY(1.0f); } @Override public void onAnimationCancel(Animator animation) { } }); } static class Value { int count; String text; } class ValueEvaluator implements TypeEvaluator<Value> { private Value mValue = new Value(); @Override public Value evaluate(float fraction, Value startValue, Value endValue) { mValue.count = startValue.count + (int) (endValue.count * fraction); mValue.text = "value=" + mValue.count; return mValue; } } }