본문 바로가기

FrontEnd/Android 기초

[Android] CountDown Timer 사용법

반응형

CountDown Timer 사용법

일정 간격에 대한 알람과 일정 시간에 대한 카운트 다운.

 

기본 형식

(텍스트 필드에 30초 카운트 다운 표시)

new CountDownTimer(30000, 1000) {

     public void onTick(long millisUntilFinished) {
         mTextField.setText("seconds remaining: " + millisUntilFinished / 1000); }

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

출처: https://developer.android.com/reference/android/os/CountDownTimer#java

 

  • new CountDownTimer()은 각 매개변수 millisInFuture, countDownInterval가 있다. 
  • 모두 millisecond,ms(1/1000초)를 단위, 그리고 데이터 타입은 long으로 하고 있으니, 표기에 유의하자.
  • millisInFuture: 카운트 다운하는 전체시간
  • countDownInterval: 카운트 다운하는 시간 간격(인터벌), 시간 간격은 딱히 변경할일이 잘 없으므로, 상수로 처리해놓는것이 더 좋다. 
  • 위의 예제같은 경우, 총 30초를 1초단위로 카운트다운하겠다는 뜻이다.



CountDownTimer 공개메서드

new CountDownTimer()에서 표시할 수 있는 오버라이딩 메소드는 하기와 같다.

공개 메서드 설명
final void cancel() 카운트다운 취소
abstract void onFinish() 시간이 다 되면 실행하는 메소드
abstract void onTick(long millisUntilFinished) 일정한 간격으로 실행되는 메소드
final CountDownTimer start() 카운트다운 시작

onTick(long millisUntilFinished)의 millisUntilFinished은 완료될 때까지의 시간이다. 



CountDownTimer 예제1

 

CountDownTimer 예제2

TextView txtTimer;

// 타이머를 사용하기 위한, 멤버변수로 선언
CountDownTimer timer;

// 타이머 전체 초 : 60초
final long millisInFuture = 60000;

// 감소시킬 시간간격 : 1초
final long countDownInterval = 1000;

boolean isFinish = false;

protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);

       txtTimer = findViewById(R.id.txtTimer);

timer = new CountDownTimer(millisInFuture, countDownInterval) {
           @Override
           public void onTick(long l) {
               // 남은 시간을 계산해서
               // 텍스트뷰에 보여준다.
               long remain = l / 1000;
               
               txtTimer.setText("남은 시간 : " + remain);
           }

           @Override
           public void onFinish() {
               Log.i("MyTimer", "타이머 끝났다!!");

               isFinish = true;
}};
timer.start();}

 

(결과물)

 

 

반응형