android 如何在 TextVIew 上实现 5 秒内从 0 到 600 的递增动画

How to implement increasing number animation from 0 to 600 in 5 secs on TextVIew on android

我计划在几秒钟内通过动画实现 textView 上的整数从 0 增加到某个值。 例如,在 textview 上显示数字从 0 增加到 600 持续 5 秒的动画。

我该如何实现?

您可以为此使用 ValueAnimator

private void startCountAnimation() {
    ValueAnimator animator = ValueAnimator.ofInt(0, 600);
    animator.setDuration(5000);
    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        public void onAnimationUpdate(ValueAnimator animation) {
            textView.setText(animation.getAnimatedValue().toString());
        }
    });
    animator.start();
}

看这里: Animate TextView to increase integer and stop at some point?

还有一个不错的库:https://github.com/sd6352051/RiseNumber

看看this simple solution:

public void animateTextView(int initialValue, int finalValue, final TextView  textview) {
    ValueAnimator valueAnimator = ValueAnimator.ofInt(initialValue, finalValue);
    valueAnimator.setDuration(1500);
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
           textview.setText(valueAnimator.getAnimatedValue().toString());
        }
    });
    valueAnimator.start();

}

使用 ValueAnimator

TextView textview = findViewById(R.id.textview1);

ValueAnimator valueAnimator = ValueAnimator.ofInt(0, 600);
valueAnimator.setDuration(5000);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
   @Override
   public void onAnimationUpdate(ValueAnimator valueAnimator) {
       textview.setText(valueAnimator.getAnimatedValue().toString());
   }
});
valueAnimator.start();

我在这里为 Kotlin 开发人员提出答案:

 fun startAnimation(textView: TextView) {
    val animator = ValueAnimator.ofInt(0, 600) 
    animator.duration = 5000 // 5 seconds
    animator.addUpdateListener { animation ->
        textView.text = animation.animatedValue.toString()
    }
    animator.start()
}