package com.marshalchen.common.demoofui.sampleModules; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.os.Message; import butterknife.ButterKnife; import butterknife.InjectView; import com.marshalchen.common.commonUtils.basicUtils.HandlerUtils; import com.nineoldandroids.animation.Animator; import com.nineoldandroids.animation.ObjectAnimator; import com.nineoldandroids.animation.ValueAnimator; import com.marshalchen.common.ui.HomeasUpActionbarActivity; import com.marshalchen.common.demoofui.R; import com.marshalchen.common.uimodule.simplemodule.HoloCircularProgressBar; /** * Created by cym on 14-6-26. */ public class CircularBarActivity extends HomeasUpActionbarActivity { // @InjectView(R.id.photoView) // PhotoView photoView; @InjectView(R.id.circularProgressBar) HoloCircularProgressBar circularProgressBar; private ObjectAnimator mProgressBarAnimator; protected boolean mAnimationHasEnded = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.circular_progress_bar_activity); ButterKnife.inject(this); if (mProgressBarAnimator != null) { mProgressBarAnimator.cancel(); } animate(circularProgressBar, null, 0f, 1000); circularProgressBar.setMarkerProgress(0f); HandlerUtils.sendMessageHandler(tooneAnimateHandler, 0, 500); HandlerUtils.sendMessageHandler(autoAnimateHandler, 0, 3500); } Handler tooneAnimateHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); animate(circularProgressBar, null, 1f, 1000); circularProgressBar.setMarkerProgress(1f); circularProgressBar.setProgressColor(Color.CYAN); } }; Handler autoAnimateHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); animate(circularProgressBar, new Animator.AnimatorListener() { @Override public void onAnimationCancel(final Animator animation) { animation.end(); } @Override public void onAnimationEnd(final Animator animation) { if (!mAnimationHasEnded) { animate(circularProgressBar, this); } else { mAnimationHasEnded = false; } } @Override public void onAnimationRepeat(final Animator animation) { } @Override public void onAnimationStart(final Animator animation) { } }); } }; private void animate(final HoloCircularProgressBar progressBar, final Animator.AnimatorListener listener) { final float progress = (float) (Math.random() * 2); int duration = 3000; animate(progressBar, listener, progress, duration); } private void animate(final HoloCircularProgressBar progressBar, final Animator.AnimatorListener listener, final float progress, final int duration) { mProgressBarAnimator = ObjectAnimator.ofFloat(progressBar, "progress", progress); mProgressBarAnimator.setDuration(duration); mProgressBarAnimator.addListener(new Animator.AnimatorListener() { @Override public void onAnimationCancel(final Animator animation) { } @Override public void onAnimationEnd(final Animator animation) { progressBar.setProgress(progress); } @Override public void onAnimationRepeat(final Animator animation) { } @Override public void onAnimationStart(final Animator animation) { } }); if (listener != null) { mProgressBarAnimator.addListener(listener); } mProgressBarAnimator.reverse(); mProgressBarAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(final ValueAnimator animation) { progressBar.setProgress((Float) animation.getAnimatedValue()); } }); progressBar.setMarkerProgress(progress); mProgressBarAnimator.start(); } }