【问题标题】:Android smooth counter incrementationAndroid 平滑计数器增量
【发布时间】:2015-06-27 10:02:53
【问题描述】:

很简单,我正在寻找一个 Android 小部件,它可以让我以编程方式设置一个整数值并让它自己平滑地递增以到达那里。例如,值是 10,我更新到 25,我希望它能够快速从 10 到 25 的每个数字,而不是直接跳到 25。这对美学来说很简单。

我猜是一个分离的线程/插值器,大约 300 毫秒,以及一个 TextView 上的 setText 调用?也许有一种更聪明的方法可以做到这一点,但大多数时候我只是很惊讶我找不到。

有人看到过类似的东西吗?

【问题讨论】:

    标签: android multithreading animation interpolation numberpicker


    【解决方案1】:

    如果您有 TextView,您可以为此使用 ValueAnimator,例如:

    ValueAnimator va = ValueAnimator.ofInt(10, 25);
    va.setInterpolator(new AccelerateDecelerateInterpolator());
    va.setDuration(300);
    va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    
        public void onAnimationUpdate(ValueAnimator animation) {
            Integer value = (Integer) animation.getAnimatedValue();
            textView.setText(value);
        }
    });
    

    这应该会给你想要的结果。您可以更改插值器以获得稍微不同的效果。

    【讨论】:

    • 我最终使用 LinearInterpolator 做了非常相似的事情,并将 postDelayed 设置为 100 毫秒(每秒给我 10 次更新)。我会给予信任,因为这个答案是另一个不错的选择。感谢您的回复。