안드로이드(Android) Chronometer 사용하여 시간측정을 위한 타이머 만들기

 

환경 : Eclipse Mars, Android 4.2.2

 

안드로이드에서는 타이머 기능을 구현할수 있는 Chronometer 클래스가 있습니다. 예제는 버튼을 만들어서 타이머 처럼 동작하도록 만들었습니다. 시작과 종료, 리셋버튼을 두어서 타이머처럼 사용할 수 있습니다.

 

 

타이머 기능을 구현하기 위해 레이아웃 xml Chronometer 위젯을 추가합니다.

 

<Chronometer
    android:id="@+id/chronometer"
    android:layout_width="fill_parent"
    android:gravity="center"
    android:paddingBottom="@dimen/abc_action_bar_icon_vertical_padding"
    android:paddingTop="@dimen/abc_action_bar_icon_vertical_padding"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal" />

 

메인 activity 에서는 위젯을 참조한후 버튼 클릭이벤트 마다 함수들을 추가하는데 시작버튼에는 start(), 종료 함수에는 stop(), 초기화 버튼에는 setBase() 넣습니다. Stop() 을 하더라도 그대로 시스템 시계가 종료하는 것은 아닙니다. View 화면에 Count 만 중지하는 것입니다. 다시 Start 해보면 멈춰있는 동안 시간이 흘러 갔다는 것을 알수 있습니다.

 

buttonStart.setOnClickListener(new Button.OnClickListener() {
	public void onClick(View v) {
		chronometer.start();
	}
});

buttonStop.setOnClickListener(new Button.OnClickListener() {
	public void onClick(View v) {
		chronometer.stop();
	}
});

buttonReset.setOnClickListener(new Button.OnClickListener() {
	public void onClick(View v) {
		chronometer.setBase(SystemClock.elapsedRealtime());
	}
});

 

메인 activity 의 레이아웃 xml 전체 내용입니다.


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:background="#3F0099"
        android:paddingBottom="@dimen/abc_action_bar_icon_vertical_padding"
        android:paddingTop="@dimen/abc_action_bar_icon_vertical_padding"
        android:text="Chronometer 이용하여 타이머 만들기"
        android:textColor="#FFFFFF" />

	<Chronometer
	    android:id="@+id/chronometer"
	    android:layout_width="fill_parent"
	    android:gravity="center"
	    android:paddingBottom="@dimen/abc_action_bar_icon_vertical_padding"
	    android:paddingTop="@dimen/abc_action_bar_icon_vertical_padding"
	    android:layout_height="wrap_content"
	    android:layout_gravity="center_horizontal" />

    <Button
        android:id="@+id/buttonstart"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Start" />

    <Button
        android:id="@+id/buttonstop"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Stop" />

    <Button
        android:id="@+id/buttonreset"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Reset" />

</LinearLayout>

 

메인 activity 의 전체 소스 입니다.


import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.widget.Button;
import android.widget.Chronometer;

public class ChronometerActivity extends Activity {
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_chronometer);

		final Chronometer chronometer = (Chronometer) findViewById(R.id.chronometer);
		Button buttonStart = (Button) findViewById(R.id.buttonstart);
		Button buttonStop = (Button) findViewById(R.id.buttonstop);
		Button buttonReset = (Button) findViewById(R.id.buttonreset);

		buttonStart.setOnClickListener(new Button.OnClickListener() {
			public void onClick(View v) {
				chronometer.start();
			}
		});

		buttonStop.setOnClickListener(new Button.OnClickListener() {
			public void onClick(View v) {
				chronometer.stop();
			}
		});

		buttonReset.setOnClickListener(new Button.OnClickListener() {
			public void onClick(View v) {
				chronometer.setBase(SystemClock.elapsedRealtime());
			}
		});
	}
}

 

 

안드로이드(Android) Chronometer 사용하여 시간측정을 위한 타이머 만들기

 

Posted by 녹두장군