Android:动画一个TextView以在Android中随时间增加其值(浮动)

时间:2015-09-04 07:31:57

标签: android

我在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);
    }

1 个答案:

答案 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的数量而得到更多的观点,但我希望这会帮助那些迫切需要答案的人:)。