Android 如何设置特定时间的倒计时计时器

Android 如何设置特定时间的倒计时计时器,android,Android,我有一个类,它获取两个时间值,并通过使用系统的当前时间发现给定的时间间隔存在于时间范围内。现在我想设置一个倒计时计时器,它应该计算特定时间间隔的剩余时间。有人能告诉我如何设置倒计时来计算代码中“精确时间”的剩余时间吗 // start time String string1 = date + " 20:30:00"; Date time1 = new SimpleDateFormat("MM-dd-yyHH:mm:ss").parse(string1); Calendar calendar1

我有一个类,它获取两个时间值,并通过使用系统的当前时间发现给定的时间间隔存在于时间范围内。现在我想设置一个倒计时计时器,它应该计算特定时间间隔的剩余时间。有人能告诉我如何设置倒计时来计算代码中“精确时间”的剩余时间吗

// 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);   

您可以使用倒计时来执行此操作。下面是一个可以实现的倒计时类

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()

您可以以任何方式显示此信息。我只是在文本视图中显示了它

剩下的唯一一步就是实际启动倒计时。
countDownTimer.start()


这里还有一个关于倒计时的好教程

哇,非常感谢,这对我很有效,也感谢你的解释。