我需要创建如下图所示的内容:
我需要能够设置最大值,让它每秒倒计时直到达到0,显示该值,并且进度条也会每秒移动一次。
我尝试了一些使用这个库的不同方法:CircleProgressView,但我最终不得不使用Handler和单独的线程,并且使用Android生命周期来控制线程只是一个完全的噩梦。 / p>
可以使用形状和动画完成吗?我知道动画进度圈相当简单,但在中间显示这个数字我还没有做到。
修改
所以我发现这个库有一个setValueAnimated方法(RTFM)..看起来它可以解决我的问题。不过,我仍然有点担心图书馆可能比我需要的还多。
答案 0 :(得分:2)
要为文字制作动画,您可以执行以下操作:
#tf{
color : #aaaaaa;
}
和你的进步一样:
public static void animateValue(Context context, final TextView textView, int duration,final double start, final double goal) {
if (start != goal) {
ValueAnimator animator = ValueAnimator.ofFloat((float) start, (float) goal);
animator.setInterpolator(new AccelerateDecelerateInterpolator());
animator.setDuration(duration));
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
textView.setText(formatPercentage((float)animation.getAnimatedValue()));
}
});
animator.start();
} else {
textView.setText(formatPercentage(goal));
}
}
public static String formatPercentage(final Float value) {
//TODO do your desiredFormat
}
为了你的进步颜色你可以做这样的事情:
public static void animateProgress(final Context context, final ProgressBar progressBar, int duration, final int start, final int end) {
if (shouldAnimate(context) && start != end) {
ObjectAnimator animation = ObjectAnimator.ofInt(progressBar, "progress", start, end);
animation.setDuration(scaleDuration(context, duration));
animation.setInterpolator(new AccelerateDecelerateInterpolator());
animation.start();
} else {
progressBar.setProgress(end);
}
}