我有一个类,它使用两个时间值,并通过使用系统的当前时间发现在该时间范围内存在给定的时间间隔。现在我想设置一个倒数计时器,它应该计算特定时间间隔的剩余时间。任何人都可以告诉我如何设置一个倒数计时器来计算剩下的时间'确切的时间'在这段代码中?
// start time
String string1 = date + " 20:30:00";
Date time1 = new SimpleDateFormat("MM-dd-yyHH:mm:ss").parse(string1);
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(time1);
// end time
String string2 = date + " 06:30:00";
Date time2 = new SimpleDateFormat("MM-dd-yy HH:mm:ss").parse(string2);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(time2);
// exact time
String string3 = date + " 04:36:00";
Date F = new SimpleDateFormat("MM-dd-yy HH:mm:ss").parse(string3);
Calendar c3 = Calendar.getInstance();
c3.setTime(F);
答案 0 :(得分:0)
您可以使用CountDownTimer执行此操作。这是您可以实现的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)
每1秒调用一次,为你提供倒数计时器的剩余时间,以毫秒为单位。 millisUntilFinished参数在第一次调用时给你49000(即剩下49秒),依此类推。
当计时器倒计时时,会调用onfinish()
。
您可以以任何方式显示此信息。我只是在TextView中显示它。
剩下的唯一步骤就是实际启动倒数计时器。
countDownTimer.start();
这里还有一个关于倒数计时器的好教程。 http://androidbite.blogspot.com/2012/11/android-count-down-timer-example.html