我在Android中有一个TextView,它会显示浮动值。我想显示一个动画,其值在给定时间内从0增加到给定的浮点值。我需要小数点后面的数字也要动画。
此外,我尝试了以下由Pedro Oliveira发布的here解决方案,但它仅适用于int值。我更关心动画浮动值。
public void animateTextView(int initialValue, int finalValue, final TextView textview) {
DecelerateInterpolator decelerateInterpolator = new DecelerateInterpolator(0.8f);
int start = Math.min(initialValue, finalValue);
int end = Math.max(initialValue, finalValue);
int difference = Math.abs(finalValue - initialValue);
Handler handler = new Handler();
for (int count = start; count <= end; count++) {
int time = Math.round(decelerateInterpolator.getInterpolation((((float) count) / difference)) * 100) * count;
final int finalCount = ((initialValue > finalValue) ? initialValue - count : count);
handler.postDelayed(new Runnable() {
@Override
public void run() {
textview.setText(finalCount + "");
}
}, time);
}
答案 0 :(得分:10)
我在this问题上找到了答案。 AhmedZah的回答对我来说很完美,我只是略微改变了代码。
public void animateTextView(float initialValue, float finalValue, final TextView textview) {
ValueAnimator valueAnimator = ValueAnimator.ofFloat(initialValue, finalValue);
valueAnimator.setDuration(1500);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
textview.setText(valueAnimator.getAnimatedValue().toString());
}
});
valueAnimator.start();
}
我怀疑这个问题会因为down number的数量而得到更多的观点,但我希望这会帮助那些迫切需要答案的人:)。