我已经倒数计时器,它由ProgressBar显示并成功完成。但不幸的是有问题。
如果我在
之前回想起倒计时器的功能public void onFinish() {
progresBar.setProgress(100);
}
显示将会搞砸一段时间。
我真的很想念Unity Engine Time.deltaTime
;
这是我的代码:
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();
答案 0 :(得分:2)
在设置进度之前,您正在递增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();
在开始新的之前这样做。
答案 1 :(得分:0)
use
countDownTimer2 = new CountDownTimer(1000,5000) {
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();