我有倒数计时器,它由 ProgressBar 成功显示。但不幸的是有问题。
- progressBar 从 1/5 而不是 0/5 开始。并在 4/5 进度中停滞 2 秒
如果我想起之前的倒计时功能
public void onFinish() { progresBar.setProgress(100); }
显示会暂时困惑。
我真的很想念带有 Time.deltaTime
的 Unity 引擎;
这是我的代码:
countDownTimer2 = new CountDownTimer(5000,1000) {
int i = 0;
@Override
public void onTick(long milliSecondUntilFinished) {
i++;
progresBar.setProgress((int) i * 100 / (5000/1000));
}
@Override
public void onFinish() {
progresBar.setProgress(100);
}
}.start();
最佳答案
在设置进度之前,您正在递增 i
变量。第一次调用onTick()时,i
的值为1
。因此,您设置的进度是 20
,相当于 1/5
。使用这个 -
@Override
public void onTick(long milliSecondUntilFinished) {
progresBar.setProgress((int) i * 100 / (5000/1000));
i++;
}
此外,您最好使用 milliSecondUntilFinished
来查找进度,而不是不必要地引入 i
变量。
关于显示的问题,我非常怀疑你在调用新定时器之前没有取消已经运行的定时器。如果是,那么两个计时器都会运行,直到旧计时器结束(直到此时,进度条会表现得很奇怪)。
你可以取消之前的定时器为-
countDownTimer2.cancel();
在开始新的之前执行此操作。
关于Java Android、倒数计时器和 ProgressBar(先读),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46128759/