代码之家  ›  专栏  ›  技术社区  ›  Hideyoshi

Android中的价值动画师以及如何使其每秒增加一次

  •  1
  • Hideyoshi  · 技术社区  · 6 年前

    我正在开发这个Android应用程序……我有一个文本视图,在这里我想数数。在这个文本视图中,我有一个语句“这个页面在X秒前刷新过”。每隔20秒,我希望它从0开始重新开始倒计时。

    我已经实现了一个使用ValueAnimator类的函数。但是,我不知道如何让ValueAnimator每秒将整数值增加1。我希望它像时钟的秒针一样数数1…2…3…4…5…20。现在它的计数非常快…我想让它慢下来。每秒1计数。

    请问我该怎么做?我看过一些方法调用ValueAnimator,但我不知道如何降低速度…现在速度太快了。

    另外,我在哪里可以添加一个方法调用,比如说,每当计数器达到20秒时?假设我想在RefreshView()达到20之前调用它。

    谢谢你的时间,谢谢你的帮助。

    ValueAnimator类: https://developer.android.com/reference/android/animation/ValueAnimator

    我的方法是:

        ValueAnimator valueAnimator = ValueAnimator.ofInt(initialValue, finalValue);
        valueAnimator.setDuration(10000);
    
        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator valueAnimator) {
                textview.setText("This page was refreshed " + valueAnimator.getAnimatedValue().toString() + " seconds ago");
            }
        });
        valueAnimator.start();
        // Repeat 100 times
        valueAnimator.setRepeatCount(100);
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Antonio Altieri    6 年前

    ValueAnamtor用于动画。动画刷新速度非常快。我认为你不能和一个价值动画师一起计算秒数。

    在我的一个应用程序中,我使用计时器定期刷新一个文本视图。

    final TextView textview=findViewById(R.id.tv);
        new Timer().scheduleAtFixedRate(new TimerTask() {
            int value=0; //start at 0
            @Override
            public void run() {
                value++ ; 
                runOnUiThread(new Runnable() { //only the main thread can touch his views
                    @Override
                    public void run() {
                        textview.setText("This page was refreshed " + value + " seconds ago"); //refresh text
    
                    }
                });
            }
        }, 0, 1000); //reschedule every 1000 milliseconds
    
    
    }