2012-09-18 35 views
6

Tôi đã sử dụng mẫu đồng hồ đếm ngược của Android để tạo đếm ngược đến một ngày nhất định.đồng hồ đếm ngược thời gian cho android

Time TimerSet = new Time(); 
     TimerSet.set(20, 8, 2012); //day month year 
     TimerSet.normalize(true); 
     long millis = TimerSet.toMillis(true); 

     Time TimeNow = new Time(); 
     TimeNow.setToNow(); // set the date to Current Time 
     TimeNow.normalize(true); 
     long millis2 = TimeNow.toMillis(true); 

     long millisset = millis - millis2; //subtract current from future to set the time remaining 

     final int smillis = (int) (millis); //convert long to integer to display conversion results 
     final int smillis2 = (int) (millis2); 

     new CountDownTimer(millisset, 1000) { 
      public void onTick(long millisUntilFinished) { 

       // decompose difference into days, hours, minutes and seconds 
       int weeks = (int) ((millisUntilFinished/1000)/
         604800); 
       int days = (int) ((millisUntilFinished/1000)/86400); 
       int hours = (int) (((millisUntilFinished/1000) - (days 
         * 86400))/3600); 
       int minutes = (int) (((millisUntilFinished/1000) - ((days 
         * 86400) + (hours * 3600)))/60); 
       int seconds = (int) ((millisUntilFinished/1000) % 60); 
       int millicn = (int) (millisUntilFinished/1000); 



       w.setText(" " +weeks); 
       d.setText(" " +days); 
       h.setText(" " +hours); 
       m.setText(" " +minutes); 
       s.setText(" " +seconds); 
       mTextField.setText(smillis + " " + smillis2 + " " + 
         millicn + "Time remaining: " +weeks +"weeks " +days + " days " + hours 
         + " hours: " + minutes+ " minutes: " 
         + seconds + " seconds: "); 

      } 

      public void onFinish() { 
       mTextField.setText("done!"); 
      } 
     }.start(); 

tôi đã tự hỏi làm thế nào tôi có thể đặt thời gian cũng như ngày? hiện tại nó đang giảm xuống còn nửa đêm. tôi muốn nó được 15:00

cảm ơn trước

+0

hi. xin lỗi về sự nhầm lẫn. ứng dụng đếm ngược đến ngày 20 tháng 9 năm 2012 00:00 (vì vậy nửa đêm (00:00) vào ngày 20 tháng 9 năm 2012 mTextField sẽ nói là thực hiện –

+0

tôi đã cố gắng thay đổi chúng nhưng đếm ngược dừng lại –

+0

millis 2 là ngày và giờ hiện tại, millis là ngày tháng hiện tại, nếu tôi thay đổi millis, nó sẽ dừng đếm ngược –

Trả lời

6

Dưới đây là vấn đề của bạn:

timerSet.set(20, 8, 2012); //day month year 

này đặt ngày trong tương lai, nhưng không phải là lần tương lai của ngày (thay vào đó, nó đặt boolean allDay thành true), vì vậy nó mặc định là 00:00.

Từ android API:

set(int second, int minute, int hour, int monthDay, int month, int year) 

Vì vậy, cố gắng

timerSet.set(0,0,15,20,8,2012) 

cho 15:00, ngày 20 tháng 8, 2012.

+0

aha. tôi đã làm nó sai cách tròn. Tôi đã timerSet.set (15,00,00,20,8,2012) –