ValueAnimator 中的时间比真实时间快两倍 (Android)
Time in ValueAnimator twice faster than real (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
我对这种行为感到非常惊讶。感谢您的帮助!
我在 phone 的设置中将动画速度设置为 x2。因此,这是绝对正常的行为。
最后,现在我知道使用动画作为计时器是个坏主意!
我想将计时器添加到我的 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
我对这种行为感到非常惊讶。感谢您的帮助!
我在 phone 的设置中将动画速度设置为 x2。因此,这是绝对正常的行为。 最后,现在我知道使用动画作为计时器是个坏主意!