본문 바로가기

Creation/Programming

[안드로이드] 토글 버튼으로 타이머 작동/중지 컨트롤하기


토글버튼으로 타이머 컨트롤하기



  토글버튼으로 작동하는 타이머에 대한 예제는 인터넷에 많지만 제 마음에 드는건 찾기 힘들어서 이리저리 뜯어서 만들었습니다.

  activity_main.xml에 버튼을 만들고(여기서는 btnRecord라는 이름을 사용하였습니다), MainActivity class의 oncrete 메소드에서 다음과 같이 작성합니다.




final Button btnRecord = (Button) findViewById(R.id.btnRecord);
btnRecord.setOnClickListener(new Button.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (btnRecord.getText().equals("Record")) {
            timer = new Timer();
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    // To do



                }
            }, 0, 1000);
            btnRecord.setText("Stop");
        } else {
            timer.cancel();
            timer = null;
            btnRecord.setText("Record");
        }
    }
});


  run 사이에 원하는 구문을 작성하시면 됩니다. 일반 버튼을 토글버튼으로 작동하게 한 것이라서 조금 모양새가 안나기는 하지만 작동에는 지장없습니다.

  참고로 timer 객체의 schedule 메소드는 다음과 같이 사용합니다.


timer.schedule(TimerTask객체, 지연시간, 타이머가 반복될 시간);


  지연시간은 최초에 1번 실행되기 전에 대기하는 시간이고, 그 뒤에 반복될 시간을 3번째 변수가 정해준다고 보면 되겠네요. 이렇게 동작중인 타이머는 timer.cancel()로 멈추게 할 수 있습니다.