Время в ValueAnimator вдвое быстрее реального (Android) - PullRequest
0 голосов
/ 14 июля 2020

Я хочу добавить таймер в свое приложение 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

Я действительно удивлен таким поведением. Спасибо за любую помощь!

1 Ответ

0 голосов
/ 14 июля 2020

Я установил скорость анимации на x2 в настройках телефона. Поэтому это абсолютно нормальное поведение. В конце концов, теперь я знаю, что использовать анимацию в качестве таймеров - плохая идея!

...