Bra*_*amp 5 java android timer countdowntimer
我有一个CountDown计时器,从10000ms到0ms倒计时,每次增量为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();
}
Run Code Online (Sandbox Code Playgroud)
输出(每秒): 9, 8, 7, 6, 5, 4, 3, 2, 1, (still 1), ready
期望:(每秒): 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ready
谢谢,
乙
编辑:
我在倒数时加了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)
Run Code Online (Sandbox Code Playgroud)
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();
}
Run Code Online (Sandbox Code Playgroud)
让我知道它是否有效,如果你问我为什么不使用 Handler,我可以说CountDownTime在内部使用 Handler。
| 归档时间: |
|
| 查看次数: |
718 次 |
| 最近记录: |