ValueAnimator в Android и как его увеличить на одну каждую секунду
Я работаю над этим приложением для Android... и у меня есть текстовое представление, где я хотел бы посчитать UP. В этом текстовом просмотре у меня есть утверждение "Эта страница была обновлена 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 ответ
ValueAniamtor используется для анимации. Анимация обновляется с очень высокой скоростью. Я не думаю, что вы можете считать секунды с помощью ValueAnimator.
В одном из моих приложений я использую таймер для периодического обновления 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
}