Android 一次增加一个文本视图(随着时间的推移)

Android 一次增加一个文本视图(随着时间的推移),android,textview,Android,Textview,我感兴趣的是尝试实现一个文本视图,当你在文本视图中加上或减去一个数字时,文本视图中的数字会上升或下降 例如,从0开始。当用户打开对话框时,输入5并提交。然后我希望0增加,0,1,2,3,4,5 如果它是一个更大的数字,我希望它增加类似于动画过渡,在那里它开始缓慢,变得更快(计数),然后在接近结束时减慢。这类似于从0到100 有没有人看到过这样的实现,或者对如何实现有一点想法 任何帮助都将不胜感激,如果需要,我将非常乐意澄清 谢谢我不久前实现了类似的功能 你需要的东西: -每个数字有不同的文本视图

我感兴趣的是尝试实现一个文本视图,当你在文本视图中加上或减去一个数字时,文本视图中的数字会上升或下降

例如,从0开始。当用户打开对话框时,输入5并提交。然后我希望0增加,0,1,2,3,4,5

如果它是一个更大的数字,我希望它增加类似于动画过渡,在那里它开始缓慢,变得更快(计数),然后在接近结束时减慢。这类似于从0到100

有没有人看到过这样的实现,或者对如何实现有一点想法

任何帮助都将不胜感激,如果需要,我将非常乐意澄清


谢谢

我不久前实现了类似的功能

你需要的东西: -每个数字有不同的文本视图。 -过渡动画

<translate
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:duration="100"
 android:repeatMode="restart"
 android:repeatCount="infinite"
 android:fromYDelta="200%"
 android:toYDelta="-200%" >
</translate>
  • 在其上设置动画侦听器,并在动画结束时将该数字增加1,然后使用setText()更新textview

  • 必须为每个数字创建动画对象

  • 当用户输入数字开始动画
  • ****注意:对于较大的数字,请记住,一次递增一位数字将花费很长时间才能达到最终数字

    如果数量少,例如12。您可以先将第一个数字设置为零,然后增加animationEnd上的文本,当它达到9时,使第二个数字可见并继续

    如果数量较大,例如400/4000,请使用处理程序运行延迟的animation.startAnimation函数

     mHandler.postDelayed(new Runnable() {
           public void run() {
            digit3.setVisibility(View.VISIBLE);
            digit2.setVisibility(View.VISIBLE);
            digit3.setText("0");
            digit3.startAnimation(increasing_count_3);
           }
       }, 1500);
    

    希望你明白我的意思。请随时要求澄清。

    您使用了哪种过渡动画?我猜我需要确定我的应用程序中允许的最大值。例如-9999999.99,这意味着我需要10个TextView才能使用此方法。现在我只是想弄明白这个程序是如何运作的。谢谢。我明天会尝试一下,如果我需要更多的帮助,可能会通过这里再次联系你。谢谢你的建议!如果您确定最多需要10个文本视图,请按照上面所示进行布局。使用上述代码创建翻译动画。过渡动画将使数字从自身下方的200%移动到自身上方的200%。由于母公司的限制,它似乎会像加油站一样从下往上增加。对于较大的数字,请使用上述postDelayed代码,使用handler方法在所需的时间间隔启动动画。我使用了$符号,因此我一次可以看到两个文本视图。
        Animation increasing_count_1 = AnimationUtils.loadAnimation(getActivity(), R.anim.increasing_count)
    
     mHandler.postDelayed(new Runnable() {
           public void run() {
            digit3.setVisibility(View.VISIBLE);
            digit2.setVisibility(View.VISIBLE);
            digit3.setText("0");
            digit3.startAnimation(increasing_count_3);
           }
       }, 1500);