실제 사용할때 카운터 타이머를 사용하는 경우가 많다. 보통 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:종료상태
위의 함수를 적절하게 사용하면 단순한 카운터 표시하는데에는 큰 문제가 없어보인다.
-끝-
'Android Study' 카테고리의 다른 글
Error : android.view.WindowManager$BadTokenException (0) | 2019.01.25 |
---|---|
안드로이드 DB를 이용한 Library > Paper (0) | 2019.01.22 |
아주 기초적?이지만 깜박했던 실수! (0) | 2019.01.13 |
새로운 코드에 대한 분석Tip(주관적) (0) | 2019.01.07 |
안드로이드 스튜디오 안에서 SHA-1 인증서 지문 가져오기 (0) | 2019.01.07 |