倒数计时器从10秒到1秒

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

言归正传......但并不完全.

Mut*_*ran 1

这只是我几个月前使用 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。