본문 바로가기
안드로이드 자바

[JAVA][Android] Chronometer 위젯 사용하기

by teamnova 2025. 2. 27.
728x90

안녕하세요

이번시간에는 안드로이드스튜디오의 Chronometer 위젯을 사용하여 간단한 스톱워치 기능을 구현해보겠습니다.

Chronometer 위젯은 별도의 Handler없이도 시간을 측정할 수 있어 편리하게 사용할 수 있습니다.

 

우선 전체 코드입니다.

 

MainActivity.java

public class MainActivity extends AppCompatActivity {
  private Chronometer chronometer;
  private Button startButton, stopButton, resetButton;

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

    chronometer = findViewById(R.id.chronometer);
    startButton = findViewById(R.id.btn_start);
    stopButton = findViewById(R.id.btn_stop);
    resetButton = findViewById(R.id.btn_reset);

    startButton.setOnClickListener(v -> chronometer.start());
    stopButton.setOnClickListener(v -> chronometer.stop());
    resetButton.setOnClickListener(v -> {
      chronometer.setBase(SystemClock.elapsedRealtime());
      chronometer.start();
    });
  }
}

 

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  android:gravity="center"
  android:padding="20dp">

  <Chronometer
    android:id="@+id/chronometer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="24sp" />

  <Button
    android:id="@+id/btn_start"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="시작" />

  <Button
    android:id="@+id/btn_stop"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="일시정지" />

  <Button
    android:id="@+id/btn_reset"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="초기화" />
</LinearLayout>

 

 

Chronometer 위젯을 사용하면, handler 없이 간단하게 시간을 측정할 수 있어 다양하게 활용이 가능합니다.

 

Chronometer의 주요 메서드는 다음과 같습니다.

메서드 설명
start() Chronometer를 시작함 (경과 시간 표시)
stop() Chronometer를 멈춤 (멈춘 시점 유지)
setBase(long baseTime) 기준 시간을 설정함 (초기화, 특정 시간부터 시작 가능)
getBase() 현재 기준 시간을 반환 (경과 시간 계산에 사용)
setFormat(String format) 시간을 원하는 형식으로 변경 (Time: %s 형태 가능)
setOnChronometerTickListener
(Chronometer.OnChronometerTickListener listener)
매 초마다 이벤트를 감지하여 특정 작업 수행 가능

 

 

 

시연 영상입니다.