【问题标题】:How to Countdown to a day using Android CountDownTimer如何使用 Android CountDownTimer 倒计时一天
【发布时间】:2015-09-25 02:05:54
【问题描述】:

我是新来的 Android 开发新手,我有一个关于 Android CountDownTimer 的问题。我如何使用 Android 的 CountDownTimer 倒计时到特定日期,比如 2015 年 11 月 6 日?另外,我如何将 Java 代码与相应的 XML 代码一起使用?

我对这个问题 (how to countdown to a date) 很感兴趣,但无法真正理解发生了什么?谁能抽出一点时间来帮助我?

谢谢

【问题讨论】:

    标签: java android xml countdown countdowntimer


    【解决方案1】:

    这正是你的做法

    更新 3

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        setContentView(R.layout.your_layout);
    
        TextView tv_countdown = (TextView) findViewById(R.id.your_textview_id);
    
        Calendar start_calendar = Calendar.getInstance();
        Calendar end_calendar = Calendar.getInstance();
    
        long start_millis = start_calendar.getTimeInMillis(); //get the start time in milliseconds
        long end_millis = end_calendar.getTimeInMillis(); //get the end time in milliseconds
        long total_millis = (end_millis - start_millis); //total time in milliseconds
        end_calendar.set(2015, 10, 6); // 10 = November, month start at 0 = January
    
        //1000 = 1 second interval
        CountDownTimer cdt = new CountDownTimer(total_millis, 1000) {
            @Override
            public void onTick(long millisUntilFinished) {
                long days = TimeUnit.MILLISECONDS.toDays(millisUntilFinished);
                millisUntilFinished -= TimeUnit.DAYS.toMillis(days);
    
                long hours = TimeUnit.MILLISECONDS.toHours(millisUntilFinished);
                millisUntilFinished -= TimeUnit.HOURS.toMillis(hours);
    
                long minutes = TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished);
                millisUntilFinished -= TimeUnit.MINUTES.toMillis(minutes);
    
                long seconds = TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished);
    
                tv_countdown.setText(days + ":" + hours + ":" + minutes + ":" + seconds); //You can compute the millisUntilFinished on hours/minutes/seconds
            }
    
            @Override
            public void onFinish() {
                tv_countdown.setText("Finish!");
            }
        };
        cdt.start();
    }
    

    【讨论】:

    • 感谢 NaviRamyle 这对我帮助很大,我如何以及如何在 XML 中链接它以使其出现在屏幕上的 textView 中?另外,如何添加小时、分钟和秒?
    • 这里TextView tv_countdown = (TextView) findViewById(R.id.you_textview_id_from_xml);
    • 请再看我的回答,我编辑了一些东西
    • 谢谢,如何添加小时分钟和秒数?
    • 我添加了代码行来计算小时、分钟和秒
    【解决方案2】:
    Date currentDate=new Date();
    Date endDate=new Date();
    long difference = endDate.getTime() - currentDate.getTime();
    new CountDownTimer(difference, 1000)     {
    
    public void onTick(long millisUntilFinished) {
    
    }
    
    public void onFinish() {
      System.out.println("Done");
     }
    }.start();
    

    【讨论】:

      【解决方案3】:

      有用的方法!

      @Override
      public void start(final long miliSecond, final int interval) {
      
          new CountDownTimer(miliSecond, interval) {
              @Override
              public void onTick(long millisUntilFinished) {
                  long day = TimeUnit.MILLISECONDS.toDays(millisUntilFinished);
                  millisUntilFinished -= TimeUnit.DAYS.toMillis(day);
      
                  long hour = TimeUnit.MILLISECONDS.toHours(millisUntilFinished);
                  millisUntilFinished -= TimeUnit.HOURS.toMillis(hour);
      
                  long minute = TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished);
                  millisUntilFinished -= TimeUnit.MINUTES.toMillis(minute);
      
                  long second = TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished);
      
                  intDay.setText("" + day);
                  intHour.setText("" + hour);
                  intMinute.setText("" + minute);
                  intSecond.setText("" + second);
              }
      
              @Override
              public void onFinish() {
                  // What ever you want !
              }
      
          }.start();
      
      }
      

      【讨论】:

        猜你喜欢
        • 2015-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-17
        • 1970-01-01
        相关资源
        最近更新 更多