android - 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
我真的很惊讶这种行为。谢谢你的帮助!
解决方案
我在手机设置中将动画速度设置为 x2。因此,这是绝对正常的行为。最后,现在我知道使用动画作为计时器是个坏主意!
推荐阅读
- ssl - 引起:java.lang.ClassNotFoundException:org.springframework.xd.dirt.integration.rabbit.RabbitConnectionFactoryBean
- reactjs - 渲染前调用几个依赖函数
- javascript - 正则表达式匹配两个字符之间的字符不包含在Javascript中
- c# - c#最短路径算法选项
- python - 多次调用时的 multiprocessing.Pool 行为
- c++ - 为什么 CLang++ 不优化循环而 G++ 优化?
- c# - 执行 sqlCE 查询时出现 C# 异常
- tfs - TFS 2018 构建控制台应用程序未包含在构建工件中
- python - set value in dataframe
- morris.js - Hide ykeys but show label on morris js