倒计时反向计数器

时间:2017-10-16 15:46:58

标签: android reverse countdown countdowntimer

更新

这已经解决了。我所做的是: -

sec = (time/1000)%60;

            if (sec == 0){
                min++;
                if (min > 59){
                    min = 0;
                    hour++;
                }

然后设置min = -1,以便初始0不会将min添加到计时器。

我需要一个从0到无限时间的计数器,直到用户选择一个选项。

所以,我所做的是用一些逻辑实现一个CountDownTimer,这样我就可以实现我想要的。

所以,我花了6个小时作为最长时间,直到计时器继续。 但我得到的问题是,一旦秒数达到59,然后在我编程时重置为0,但随后它保持为0并且最小值开始按秒增加。请帮忙

这是我的代码: -

public void newCountTimer(){
    countdowntimer = new CountDownTimer(21600000,1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            long time = 21600000 - millisUntilFinished;
            sec = time/1000;
            if (sec > 59){
                sec = 0;
                min++;
                if (min > 59){
                    min = 0;
                    hour++;
                }
            }
            if (sec < 10) {
                if (min < 10) {
                    if (hour < 10) {
                        timer_box.setText("0" + hour + ":0" + min + ":0" + sec);
                    } else {
                        timer_box.setText("" + hour + ":0" + min + ":0" + sec);
                    }
                } else {
                    if (hour < 10) {
                        timer_box.setText("0" + hour + ":" + min + ":0" + sec);
                    } else {
                        timer_box.setText("" + hour + ":" + min + ":0" + sec);
                    }
                }
            } else {
                if (min < 10) {
                    if (hour < 10) {
                        timer_box.setText("0" + hour + ":0" + min + ":" + sec);
                    } else {
                        timer_box.setText("" + hour + ":0" + min + ":" + sec);
                    }
                } else {
                    if (hour < 10) {
                        timer_box.setText("0" + hour + ":" + min + ":" + sec);
                    } else {
                        timer_box.setText("" + hour + ":" + min + ":" + sec);
                    }
                }
            }
        }

        @Override
        public void onFinish() {

        }
    }.start();
}

1 个答案:

答案 0 :(得分:2)

问题是您的sec变量总会越来越高

 sec = time/1000;
            if (sec > 59){

所以秒将从59变为60到61到62,依此类推,因此总是大于59.总是增加导致min在1分钟后总是增加

我的建议是在您的sec计算中添加mod 60

  sec = (time/1000)%60;
            if (sec == 0){
                min++; 
   ...