倒计时倒数计数器
Countdown Reverse Counter
更新
已解决。我所做的是:-
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();
}
问题是你的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++;
...
更新
已解决。我所做的是:-
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();
}
问题是你的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++;
...