我正在使用这个Android应用程序...我有一个textview,我想要数上去。在这个textview中,我有声明"此页面在X秒前刷新"。每隔20秒我就会从0重新开始计算。
我实现了一个使用ValueAnimator类的函数。但是,我不确定如何使ValueAnimator每秒将整数值增加1。我喜欢它像钟表的秒针...... 2 ... 3 ...... 4 ...... 5 ...... 20。现在它的计数速度非常快......我想放慢它的速度。每秒1次。
请问我该怎么做?我已经查看过ValueAnimator的一些方法调用,而且我不确定如何减慢速度......现在它的速度非常快。
另外,每当计数器达到20秒时,我会在哪里添加方法调用?假设我想在它到达20之前调用refreshView(),然后再开始。
感谢您的时间,感谢您的帮助。
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);
答案 0 :(得分:2)
ValueAniamtor用于动画。动画以非常高的速度刷新。我不认为你可以使用valueAnimator计算秒数。
在我的一个应用程序中,我使用Timer定期刷新textView。
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
}