gpt4 book ai didi

java - 使倒数计时器从 10 秒变为 1 秒

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:00:58 26 4
gpt4 key购买 nike

我有一个 CountDown 计时器,它从 10000 毫秒倒计时到 0 毫秒,每次递增 1 秒,使按钮在 10 秒后可点击。虽然计时器很准确并且按照代码所说的进行操作,但我想更改秒数的表示方式,但我不知道该怎么做。

Java:

void startTimer() {
cTimer = new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
c.setText("Please wait " + millisUntilFinished/1000 + " seconds");
thx.setText(millisUntilFinished/1000 + "");
thx.setAlpha(.5f);
thx.setClickable(false);

}
public void onFinish() {
c.setText("done");
thx.setText("ready");
thx.setAlpha(1f);
thx.setClickable(true);
}
};
cTimer.start();
}

输出(每秒):9, 8, 7, 6, 5, 4, 3, 2, 1, (still 1), ready

期望:(每秒):10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ready

谢谢,

B

编辑:

我在倒计时中加了 1,thx.setText(((millisUntilFinished/1000) + 1) + "");

新输出:10, 9, 8, 7, 6, 5, 4 ,3 , 2, (Still 2), ready

更接近……但不完全是。

最佳答案

这只是我在使用CountDownTimer时对CountDownTimer的调查 几个月前,它在我的应用程序中运行良好。

public void onTick(long millisUntilFinished)

这个 millisUntilFinished 会给出以毫秒为单位的剩余时间,最后 1000 毫秒是调用 onFinish() 方法,所以 onTick 方法会被调用直到剩余时间超过 (1000(for OnFinish) + 1000(for counter)) ) 毫秒,如果最后剩余的毫秒数小于 2000 毫秒,它将跳过 onTick() 并在定时器结束时直接调用 onFinish()。有关详细信息,请参阅 Handler此源中的方法。

所以主要问题是当我们给了一些 X(我们的情况是 10000)毫秒,但是启动计数器需要大约 50 到 150 毫秒,所以如果我们在总时间中加上那个毫秒,我们将得到计数器直到结束,

所以你可以这样尝试,只是我在你的总时间中增加了 150 毫秒,没有任何改变。

void startTimer() {
cTimer = new CountDownTimer(10150, 1000) {
public void onTick(long millisUntilFinished) {
c.setText("Please wait " + millisUntilFinished/1000 + " seconds");
thx.setText(millisUntilFinished/1000 + "");
thx.setAlpha(.5f);
thx.setClickable(false);

}
public void onFinish() {
c.setText("done");
thx.setText("ready");
thx.setAlpha(1f);
thx.setClickable(true);
}
};
cTimer.start();
}

让我知道它是否有效,如果你问我为什么不使用 Handler,我可以说 CountDownTime在内部使用 Handler。

关于java - 使倒数计时器从 10 秒变为 1 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44490897/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com