2014-11-19 3 views
0


Когда я запускаю код ниже, я не могу показать начало и время окончания, как 00:00:00 каждый раз, когда начинается таймер, в будущем я хочу пользователь определяет, сколько таймера обратного отсчета ему нужно, и время для каждого из них с повторением на них, поэтому любая помощь для отображения жизненно важна, и если кто-то может улучшить код для следующего шага, я буду очень этому благодарен.
Спасибо за помощь,как отображать время окончания и время запуска android countdowntimer

repeterTimer = new CountDownTimer(3000, 1000) { 
     @Override 
     public void onTick(long millisUntilFinished) { 

      isRunning = true; 
      meditiongong.setLooping(false); 
      long millis = millisUntilFinished; 
      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))); 
      textViewTimer.setText(hms); 

     } 
     @Override 
     public void onFinish() { 
      textViewTimer.setText("00:00:00"); 
      isRunning = false; 
      meditiongong.start(); 
      if (repeater) { 
       numRepeat ++ ; 
       numOfRepeat.setText("" + numRepeat); 
       repeterTimer.start(); 
      } else { 
       meditiongong.setLooping(true); 
      } 

     } 
    }; 

} 

ответ

0

Прежде всего, необходимо TextView, где будут отображаться значения от таймера. У меня есть пример таймер обратного отсчета с отображением значения:

private TextView remainingTimeDisplay; 
private int timerProgressStatus; 


remainingTimeDisplay = (TextView) findViewById(R.id.remainingTimeDisplay); 


private void setQuizTimer(int time) { 
    final int actualTime = time*1000; 
    CountDownTimer gameCountDownTimer = new CountDownTimer(actualTime, 1000) { 
     int totalTime = actualTime; 
     @Override 
     public void onTick(long millisUntilFinished) { 

      /*Display time left in a textview*/ 
      long millis =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))); 
      remainingTimeDisplay.setText(hms); 

      /*Progress bar display values*/ 
      timerProgressStatus = (int)((totalTime - millisUntilFinished) /(double)totalTime * 100); 
      timerProgressBar.setProgress(timerProgressStatus); 
     } 

     @Override 
     public void onFinish() { 
      Toast.makeText(QuestionActivity.this,"Countdown Ended",Toast.LENGTH_SHORT).show(); 
     } 
    }.start(); 
} 

Если вы хотите использовать этот метод, вам нужно только вызвать его с числом secounds. Пример: для 10 секунд setQuizTimer (10); Выход будет 09:59, надеюсь, что это поможет.

+0

Для 00:00:00 вам нужно просто добавить% 02d:% 02d% 02d и еще один TimerUnit ниже. Cheers –

+0

Что вы подразумеваете под «и еще одним TimerUnit ниже», я могу видеть время от 2 секунд до 1 секунды, но 3 и 0, когда таймер на повторителе я не вижу –

+0

@itayfriedman Я отредактировал ответ, теперь у вас есть час/минуты/secounds. Это полный и функциональный таймер обратного отсчета андроидов. Cheers –