Я хочу добавить таймер в свое приложение android. Я использую ValueAnimator для обновления информации на экране. Проблема: время в ValueAnimator вдвое быстрее реального. Вот мой код:
ValueAnimator timerAnimator = ValueAnimator.ofFloat(duration, 0f);
timerAnimator.setDuration(duration * 1000);
timerAnimator.setInterpolator(new LinearInterpolator());
long startTime = System.currentTimeMillis();
timerAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
Log.d("debug", "animator time: " + animation.getCurrentPlayTime() + "; real time: " + (System.currentTimeMillis() - startTime));
float timeLeft = (Float) animation.getAnimatedValue();
mTimerBar.setProgress(timeLeft);
int fullSecondsLeft = (int) timeLeft;
mTimerText.setText(String.valueOf(fullSecondsLeft));
}
});
timerAnimator.start();
Вывод журнала:
animator time: 8482; real time: 4249
animator time: 8514; real time: 4266
animator time: 8548; real time: 4282
animator time: 8582; real time: 4299
animator time: 8614; real time: 4316
animator time: 8648; real time: 4332
animator time: 8682; real time: 4349
animator time: 8716; real time: 4366
animator time: 8748; real time: 4382
Я действительно удивлен таким поведением. Спасибо за любую помощь!