2012-03-05 70 views
0

我不知道如何使用毫秒來製作HH:MM:SS Countdowntimer。 我需要做一個CountdownTimer,告訴有多少小時,分鐘和秒鐘,直到第二天。這是我的代碼:HH:MM:SS Countdowntimer

final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
    long timer = prefs.getLong("TIME", 86400000); 
    new CountDownTimer(timer, 1000) { 

     public void onTick(long elapsed) { 

             time.setText(elapsed/3600000+":"+elapsed/1440000+":"+elapsed/?); 
           SharedPreferences.Editor editor = prefs.edit(); 
           editor.putLong("TIME",elapsed); 
           editor.commit(); 
     } 
     public void onFinish() { 

     } 
     }.start(); 

P.S:而且,它將不得不保存剩下的時間直到最後一次檢查。我很期待收到你們的回信。先謝謝你!

回答

5

你的計算是錯誤的,它應該是:

final static long seconds_in_milllies = 1000L; 
final static long minutes_in_millies = seconds_in_millies * 60; 
final static long hours_in_millies = minutes_in_millies * 60; 

// in onTick 
long hours = elapsed/hours_in_millies; 
elapsed %= hours_in_millies; 
long minutes = elapsed/minutes_in_millies; 
elapsed %= minutes_in_millies; 
long seconds = elapsed/seconds_in_millies; 
time.setText(hours + ":" + minutes + ":" + seconds); 
+0

如果我想也顯示剩餘的天數? – 2014-01-13 12:19:34

+0

添加另一個字段final static long days_in_millies = hours_in_millies * 24; 並在tick中添加這個以及long days = elapsed/days_in_millies; \t \t \t \t經過%= days_in_millies; – CoderDecoder 2014-02-20 06:28:59

+0

爲什麼它必須是靜態的? – grant 2017-03-10 07:33:56