2012-03-05 36 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