Java Android、倒数计时器和 ProgressBar(先读)

标签 java android android-layout

我有倒数计时器,它由 ProgressBar 成功显示。但不幸的是有问题。

  1. progressBar 从 1/5 而不是 0/5 开始。并在 4/5 进度中停滞 2 秒
  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/

相关文章:

当我尝试对具有相同代码的对象的值求和时,出现 java.util.ConcurrentModificationException

java - 字符数组隐藏密码jdbc

java - layout_weight 不起作用

java - 房间 : Not able to start activity adding the ID to the intent

java - 设备旋转时丢失 'MediaPlayer'(及其他变量)

Android Opengraph Like 按钮实现

java - 合并后以特殊顺序合并 3 个列表(使用 Streams)

android - 使用数组查询sqlite数据库android

android - 如何设置按钮背景图像以动态地将内容包装在表格布局中

Java Huffman树代码 "Decode"方法不起作用