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

Leo*_* Li 23 animation android textview

我计划在一定秒内通过动画将textView上的整数增加从0到某个值.例如,显示动画,在textview上将数字从0增加到600,持续5秒.

我该如何实现呢?

Fre*_*ger 88

您可以使用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();
}
Run Code Online (Sandbox Code Playgroud)


Raf*_*809 9

看看这个简单的解决方案:

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();

}
Run Code Online (Sandbox Code Playgroud)


小智 7

我在这里为 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()
}
Run Code Online (Sandbox Code Playgroud)

Kotlin 中的灵活扩展:

fun TextView.animateNumberChange(startingNumber: Int, endingNumber: Int, duration: Long = 500L) {
    val animator = ValueAnimator.ofInt(startingNumber, endingNumber)
    animator.duration = duration
    animator.addUpdateListener { animation ->
        this.text = animation.animatedValue.toString()
    }
    animator.interpolator = AccelerateDecelerateInterpolator()
    animator.start()
}

// usage:
myTextView.animateNumberChange(1, 10)
Run Code Online (Sandbox Code Playgroud)


Yas*_*ith 5

使用 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();
Run Code Online (Sandbox Code Playgroud)