首页 > 解决方案 > ValueAnimator 中的时间比真实时间快两倍(Android)

问题描述

我想将计时器添加到我的 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

我真的很惊讶这种行为。谢谢你的帮助!

标签: androidandroid-animation

解决方案


我在手机设置中将动画速度设置为 x2。因此,这是绝对正常的行为。最后,现在我知道使用动画作为计时器是个坏主意!


推荐阅读