Android Study

카운터 타이머 클래스로 사용하기

85chong 2019. 1. 22. 14:52
728x90
반응형
SMALL

실제 사용할때 카운터 타이머를 사용하는 경우가 많다. 보통 03:00 식의 숫자를 어느 특정 Textview 에 표시하게끔 하는 방식이 많다.

그때마다 찾아서 만들다가 별도로 만들어놓고 가져다 사용하기 편하게 만들어 보았다.


import ......클래스에 맞게 알아서

public class TimerUtil {

int count_minute;// 분
int count_second;// 초
TextView tv_count;// 숫자 보여줄 textView id
int second;//최초의 초 를 가지고있기위한변수(반복사용때문에)
Boolean isStarting = false;// 카운 진행중인지 체크
Timer mTimer = new Timer();

public TimerUtil(int count_minute, int count_second, TextView tv_count) {
this.count_minute = count_minute;
this.count_second = count_second;
this.tv_count = tv_count;

this.second = count_second;
}

/*
카운터 시작
*/
public void startTimer() {
isStarting = true;

                    // schdule 함수 인자별 사용법

                    // schdule(task 세팅값 , (몇초 후에 task 실행하는것을 => 세트)몇초 마다 세트를 계속 실행해라 , 몇초 후에 task 실행해라)

                    // schdule(task 세팅값 , (한번만)몇초 후에 task 실행해라)

mTimer.schedule(initTimeTask(), 0, 1000);
}

/*
카운터 종료
*/
public void cancelTimer() {
isStarting = false;
mTimer.cancel();
tv_count.setText("00:00");
}

/*
카운터 진행중 체크
*/
public Boolean isStarting() {
return isStarting;
}

/*
휴대폰인증 유효시간 타이머
제어가능부분 : textview숫자표시 , 분 , 초
실행 : ex) 02:59 > 02:58 ... > 00:00
*/
public TimerTask initTimeTask() {
TimerTask mTask = new TimerTask() {

@Override
public void run() {
Handler mHandler = new Handler(Looper.getMainLooper());
mHandler.postDelayed(new Runnable() {
@Override
public void run() {

count_second--;

if (count_second < 0) {
count_second = second - 1;//디지털시간에서 60 표시는 없기때문임
count_minute--;
}
if (count_minute == 0 && count_second == 0) {
cancelTimer();
}
String str_second = Integer.toString(count_second);
String str_minite = Integer.toString(count_minute);

tv_count.setText(HUtils.NumberDoubleDigit(str_minite) + ":" + HUtils.NumberDoubleDigit(str_second));

}
}, 0);
}
};
return mTask;
}

}

일단 위의 클래스를 만들어 놓고, 적용할때에는 아래와 같이 한다.

ex) 3분을 카운트 하고 싶다면 위의 클래스를 만들어놓고, 사용하려는 클래스안에서 아래와 같이 한다.




int minute = 2;//카운트할 시간의 분 설정

int second = 60;//카운트할 시간의 초 설정

TextView tv_count;//숫자를 표시할 TextView(초기화는 알아서)

.....



TimerUtil timer = new TimerUtil(minute,second,tv_count);


timer.startTimer(); //카운터를 시작하는 함수


timer.cancelTimer(); //카운터를 종료하는 함수 종료하는순간 00:00 으로 초기화 된다.


timer.isStarting(); //카운터가 진행중인지 확인하는 함수 => true:카운터 실행중 , false:종료상태


위의 함수를 적절하게 사용하면 단순한 카운터 표시하는데에는 큰 문제가 없어보인다.


-끝-