我的倒数计时器以HH:mm:ss格式计算end_time和current_time之间的差值。我注意到,只要计时器开始显示,秒数总是四舍五入,这意味着它总是从HH开始计算自身:59以后。有没有办法让秒显示正确的剩余秒数?
答案 0 :(得分:0)
您可以为此目的创建自定义CountDownTimer
。比如说:
public class MyCountDownTimer extends CountDownTimer {
public MyCountDownTimer(long millisInFuture, long interval) {
super(millisInFuture, interval);
}
@Override
public void onFinish() {
my_textview.setText("Time's up!");
}
@Override
public void onTick(long millisUntilFinished) {
my_textview.setText("" + millisUntilFinished / 1000); //Shows no. of seconds left
//Uses a textview to update status
}
}
在您的活动中,您可以将计时器称为:
CountDownTimer countDownTimer = new MyCountDownTimer(millisInFuture, interval);
//In this case
//CountDownTimer countDownTimer = new MyCountDownTimer(50000, 1000);
此处millisInFuture
是启动计时器时的“特定时间间隔剩余时间”(以毫秒为单位)。假设在这种情况下剩下的时间是50秒。然后,此值将为50000
interval
是您希望提供更新的时间(以毫秒为单位)。 (即如果您使用1000作为间隔,计时器将每1秒更新一次)
所以在这种情况下,
onTick(long millisUntilFinished)
每隔一秒调用,这给你倒数计时器的剩余时间,以毫秒为单位。 millisUntilFinished参数在第一次调用时给你49000(即剩下49秒),依此类推。
当计时器倒计时时,调用onfinish()。
您可以以任何方式显示此信息。我只是在TextView中显示它。
剩下的唯一步骤就是实际启动倒数计时器。 countDownTimer.start();
当你没有想要启动时,比如59
,你可以在每次设置文本时用one
增加值。
希望它有所帮助!