반응형
|
안드로이드(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) 이미지다운로드해서 Sdcard 에 저장하기 (3) | 2015.01.15 |
|---|---|
| 안드로이드(Android) AutoCompleteTextView 위젯을 이용해 단어 자동완성기능 구현 (0) | 2015.01.12 |
| 안드로이드(Android) EditText 위젯의 입력타입별 예제 (0) | 2015.01.11 |
| 안드로이드(Android) raw 폴더에 있는 Text 파일 읽어 오기 (1) | 2015.01.08 |
| 안드로이드(Android) Chronometer, OnChronometerTickListener 통해 시간알아오기 (2) | 2015.01.04 |
| 안드로이드(Android) 웹페이지에서 이미지 다운로드 구현 (0) | 2015.01.01 |
| 안드로이드(Android) ListActivity 를 이용해여 간단한 목록형 화면만들기 (0) | 2014.12.28 |
| 안드로이드(Android) 백그라운드 스레드 소스 Runnable 이용해 구현 (0) | 2014.12.26 |
