package com.cmeiyuan.widget.chart;
import android.content.Context;
import android.util.AttributeSet;
import android.view.animation.Interpolator;
import android.view.animation.LinearInterpolator;
import com.cmeiyuan.widget.chart.CircleChartView;
import com.nineoldandroids.animation.ObjectAnimator;
public class AnimCircleChartView extends CircleChartView {
private long mDuration = 500;
private ObjectAnimator mObjectAnimator;
private Interpolator mInterpolator = new LinearInterpolator();
public AnimCircleChartView(Context context) {
super(context);
init();
}
public AnimCircleChartView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public AnimCircleChartView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
private void init() {
mObjectAnimator = new ObjectAnimator();
mObjectAnimator.setTarget(this);
mObjectAnimator.setPropertyName("percent");
mObjectAnimator.setInterpolator(mInterpolator);
mObjectAnimator.setDuration(mDuration);
}
public void setInterpolator(Interpolator value) {
mObjectAnimator.setInterpolator(value);
}
public void setDuration(long duration) {
this.mDuration = duration;
}
public long getDuration() {
return mDuration;
}
public void startAnimation() {
stopAnimation();
int duratoin = (int) mDuration;
mObjectAnimator.setDuration(Math.max(100, duratoin));
mObjectAnimator.setFloatValues(0, getPercent());
mObjectAnimator.start();
}
@Deprecated
public void startAnimation(long delay) {
startAnimation();
}
public void stopAnimation() {
if (mObjectAnimator.isRunning()) {
mObjectAnimator.end();
}
}
}