Android 中的 ValueAnimator 以及如何使其每秒增加一个
ValueAnimator in Android and how to make it increase by one each second
我正在开发这个 android 应用程序...我有一个文本视图,我想在其中向上计数。在此文本视图中,我有语句 "This page was refreshed X seconds ago"。每 20 秒我希望它从 0 重新开始计数。
我实现了一个使用 ValueAnimator class 的函数。但是,我不确定如何让 ValueAnimator 每秒将整数值增加 1。我希望它像时钟的秒针一样计数 1...2..3...4..5......20。现在它的计数速度快得令人难以置信……我想放慢它的速度。每秒 1 次计数。
请问我该怎么做?我查看了 ValueAnimator 的一些方法调用,但我不确定如何降低它的速度...现在它太快了。
此外,每次计数器达到 20 秒时,我应该在哪里添加方法调用?假设我想在它达到 20 时调用 refreshView(),然后再重新开始。
感谢您的宝贵时间,也感谢您的帮助。
ValueAnimator class:
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);
ValueAniamtor 用于动画。动画以非常高的速度刷新。我认为您不能使用 valueAnimator 来计算秒数。
在我的一个应用程序中,我使用计时器定期刷新文本视图。
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
}
我正在开发这个 android 应用程序...我有一个文本视图,我想在其中向上计数。在此文本视图中,我有语句 "This page was refreshed X seconds ago"。每 20 秒我希望它从 0 重新开始计数。
我实现了一个使用 ValueAnimator class 的函数。但是,我不确定如何让 ValueAnimator 每秒将整数值增加 1。我希望它像时钟的秒针一样计数 1...2..3...4..5......20。现在它的计数速度快得令人难以置信……我想放慢它的速度。每秒 1 次计数。
请问我该怎么做?我查看了 ValueAnimator 的一些方法调用,但我不确定如何降低它的速度...现在它太快了。
此外,每次计数器达到 20 秒时,我应该在哪里添加方法调用?假设我想在它达到 20 时调用 refreshView(),然后再重新开始。
感谢您的宝贵时间,也感谢您的帮助。
ValueAnimator class: 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);
ValueAniamtor 用于动画。动画以非常高的速度刷新。我认为您不能使用 valueAnimator 来计算秒数。
在我的一个应用程序中,我使用计时器定期刷新文本视图。
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
}