2017-01-11 274 views
3

我需要一些幫助。我無法正確顯示分鐘數,因爲它給出的是0而不是我想要的數字,但第二個工作正常。這是我的代碼:如何在倒數計時器中顯示分鐘和秒數

new CountDownTimer(90000, 1000) { 
     @Override 
     public void onTick(long millisUntilFinished) { 
      tvTime.setText("Time remaining: " + String.format("%d min: %d sec", 
        TimeUnit.MICROSECONDS.toMinutes(millisUntilFinished), 
        TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - 
        TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)))); 
     } 
}); 

我希望它在1分鐘內顯示:30秒而不是0分鐘:在倒計時開始30秒。

+1

它打印0分:一分鐘,現在半後30秒? – yanivtwin

+0

沒有。它顯示0分鐘:開始30秒。但是當它進入60秒時,它顯示正確的結果:0分59秒。我想要的是顯示1分鐘:30秒,而不是0分鐘:30秒 –

回答

3

試試這個

String text = String.format(Locale.getDefault(), "Time Remaining %02d min: %02d sec", 
       TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) % 60, 
       TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) % 60); 
tvTime.setText(text); 
+0

哇,它的工作原理!非常感謝您花時間和精力來幫助我! :) –

+0

歡迎您:) –

1

長millisUntilFinished是milisecond左 可以被甩除以它BU 1000 秒,並且可以通過60

+0

我現在理解的理論更清晰。謝謝你的解釋! :) –

0
int secondsUntilFinished = milisUntilFinished/1000; 

int seconds = secondsUntilFinished % 60; 
int mins = secondsUntilFinished/60; 
0
CountDownTimer myCountDownTimer = new CountDownTimer(
      i, 1000) { 
     @Override 
     public void onTick(long millisUntilFinished) { 

      int time = (int) millisUntilFinished; 
      int seconds = time/1000 % 60; 
      int minutes = (time/(1000 * 60)) % 60; 
      timeText.setText(twoDigitString(minutes) + " min: "+ twoDigitString(seconds)+ " sec"); 
     } 
     private String twoDigitString(long number) { 
      if (number == 0) { 
       return "00"; 
      } else if (number/10 == 0) { 
       return "0" + number; 
      } 
      return String.valueOf(number); 
     } 
     @Override 
     public void onFinish() { 
      timeText.setText("00:00"); 
     } 
     } 
獲得通過再次將它留給分鐘

試試這個代碼。

+0

嗨,Deepak已經解決了我的問題。對不起,但非常感謝你花時間幫忙。當我做另一個倒計時時,我至少會使用這個解決方案。再一次感謝你。 :) –

+0

如果代碼將在未來的幫助意味着你可以放棄upvote。 –

+0

好的,注意! –

0

這種替換代碼:

new CountDownTimer(90000, 1000) { // adjust the milli seconds here 

    public void onTick(long millisUntilFinished) { 
    tvTime.setText("Time remaining: "+String.format("%d min, %d sec", 
        TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished), 
        TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - 
        TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)))); 
    } 
+0

嗨,Deepak已經解決了這個問題。對不起,但謝謝你幫助我! :) –

1
## Try this one ## 

private void startTimer(int noOfMinutes) { 
CountDownTimer countDownTimer = new CountDownTimer(noOfMinutes, 1000) { 
     public void onTick(long millisUntilFinished) { 
      long millis = millisUntilFinished; 
      //Convert milliseconds into hour,minute and seconds 
      String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis), TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)), TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))); 
      countdownTimerText.setText(hms);//set text 
     } 
     public void onFinish() { 
      countdownTimerText.setText("TIME'S UP!!"); //On finish change timer text 
     } 
    }.start(); 

} 
+0

嗨,deepak已經解決了我的問題。無論如何,非常感謝您花時間幫助我。 :) –

相關問題