一次增加TextView第一(随着时间的推移)

时间:2014-07-09 00:55:10

标签: android textview

我有兴趣尝试使用从中添加或减去数字时向上或向下爬升的数字来实现TextView。

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

如果它是一个更大的数字,我希望它增加类似于动画转换的速度,它开始慢,变得更快(计数)然后减慢到最后。这类似于从0到100之类的东西。

有没有人见过这样的事情,或者对这怎么可行有任何想法?

非常感谢任何帮助,如果需要,我将非常乐意澄清任何问题。

由于

1 个答案:

答案 0 :(得分:0)

我不久前实现了类似的东西。

你需要的东西: - 每个数字的不同textview。 - 过渡动画

<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>
  • 在布局中制作这些textView。

                 <LinearLayout
                       android:layout_width="wrap_content"
                       android:background="@null"
                       android:gravity="center_horizontal"
                       android:layout_height="wrap_content">
    
                       <TextView 
                           android:id="@+id/tv_intro_dollar"
                           android:layout_width="wrap_content"
                           android:layout_height="wrap_content"
                           android:textSize="20sp"
                           android:visibility="invisible"
                           android:textColor="#333333"
                           android:textStyle="bold"
                           android:text="$"/>
    
                       <TextView 
                           android:id="@+id/tv_intro_digit1"
                           android:layout_width="wrap_content"
                           android:layout_height="wrap_content"
                           android:visibility="invisible"
                           android:textSize="20sp"
                           android:textStyle="bold"
                           android:textColor="#333333"
                           android:text="$"/>
    
                        <TextView 
                           android:id="@+id/tv_intro_separator"
                           android:layout_width="wrap_content"
                           android:textSize="20sp"
                           android:visibility="invisible"
                           android:textStyle="bold"
                           android:layout_height="wrap_content"
                           android:textColor="#333333"
                           android:text=","/>
    
                       <TextView 
                           android:id="@+id/tv_intro_digit2"
                           android:layout_width="wrap_content"
                           android:textSize="20sp"
                           android:textStyle="bold"
                           android:visibility="invisible"
                           android:layout_height="wrap_content"
                           android:textColor="#333333"
                           android:text="$"/>
    
                       <TextView 
                           android:id="@+id/tv_intro_digit3"
                           android:layout_width="wrap_content"
                           android:textSize="20sp"
                           android:textStyle="bold"
                           android:layout_height="wrap_content"
                           android:textColor="#333333"
                           android:text="$"/>
    
                       <TextView 
                           android:id="@+id/tv_intro_digit4"
                           android:layout_width="wrap_content"
                           android:textSize="20sp"
                           android:textStyle="bold"
                           android:layout_height="wrap_content"
                           android:textColor="#333333"
                           android:text="0"/>
    
    
    
                   </LinearLayout>
    
  • 最初隐藏这些textViews。

  • 在java代码中创建动画

        Animation increasing_count_1 = AnimationUtils.loadAnimation(getActivity(), R.anim.increasing_count)
    
  • 在其上设置动画侦听器,在动画结束时将数字增加1并使用setText()更新textview。

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

  • 当用户输入数字开始动画

****注意:对于大数字人来说,一次增加一位数将需要很长时间才能达到最终数字。

如果数量很少,例如12.您可以将第一个数字设置为零并在动画结束时增加文本,当它达到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);

希望你能得到我的方法。随意请求澄清。