군침이 싹 도는 코딩

카운트 다운 타이머 ( CountDownTimer ) 사용법 본문

Android

카운트 다운 타이머 ( CountDownTimer ) 사용법

mugoori 2023. 1. 27. 17:19
public class MainActivity extends AppCompatActivity {

    TextView txtTimer;
    TextView txtCount;
    Button button;

    CountDownTimer timer;

    int count = 0 ;

    // flag 역활을 하는 변수
    boolean isFinished = false;

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

        txtTimer = findViewById(R.id.txtTimer);
        txtCount = findViewById(R.id.txtCount);
        button = findViewById(R.id.button);

        timer = new CountDownTimer(10000,1000) {
            @Override
            public void onTick(long l) {
                // 위에서 정한 인터벌이 될때마다 실행되는 함수
                // 인터벌마다 무엇인가 실행하고 싶으면 여기에 코드 작성

                // 위의 l 은 밀리 세컨즈이므로 초로 표시하려면
                // l 을 1000으로 나눠준다
                long remain = l/1000;

                // 화면에 남은 시간을 보여준다
                txtTimer.setText(""+remain+"초");

                Log.i("TimerApp_Main",""+remain);
            }

            @Override
            public void onFinish() {
                // 타이머가 종료될때 실행되는 함수
                // 종료될때 하고싶은 코드를 여기에 작성
                Log.i("TimerApp_Main","타이머 종료");

                
                isFinished = true;

                showAlertDialog();



            }
        };
        
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                // 1. 타이머가 종료되었는지 확인
                if (isFinished == true){
                    return;
                }

                count = count + 1;
                txtCount.setText(""+count);

            }
        });

        timer.start();

    }

# 카운트다운 타이머의 사용법은 객체를 생성해준다

이때 파라미터가 필요하다 첫번째 파라미터는 몇초로 세팅할지 ( 밀리세컨드 ) 

두번째 파라미터는 인터벌 당 얼마나 시간이 흐르게 할지 ( 밀리세컨드 ) 이다

해당 예시에서는 10000 ( 10초 ) / 1000 ( 1초 ) 로 세팅되었다

그 뒤 onTick 에는 인터벌당 실행되는 함수로 인터벌당 동작을 써준다

onFinish 에는 타이머가 종료될때 실행되는 함수로 종료될때 실행시킬 동작을 써준다

마지막으로 timer.start 함수를 써야 실행이 된다