Chronometer는 경과 시간을 측정하는 위젯이다. 즉 스톱워치를 만들수 있다는 뜻인데 0.x초는 안되고 1초단위로만 되기 때문에 약간 불편한 감이 있다.
void setBase(long base)
이 메소드의 인수는 부팅 후의 경과 시간을 전달하는데 보통 elapsedRealtime 메소드로 경과 시간을 전달한다.
start 메소드는 시간 갱신을 시작하고 stop 메소드는 시간 갱신을 중지한다. 그리고 앱이 종료되기전에 반드시 stop을 해줘야 메모리leak이 발생하지 않는다.
xml파일은 맨 위에 chronometer를 배치하고 버튼 3개를 배치하였다. 여기서 format="경과시간=%s" 라 되어 있는 부분에서 %s가 실제로 스톱워치가 표시되는 부분이다.(H:MM:SS 형태)
acitivity_chronometer_test.xml파일
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<Chronometer
android:id="@+id/chrono"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format="경과시간=%s"
android:textSize="30sp"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<Button
android:id="@+id/btnstart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="mOnClick"
android:text="Start"
/>
<Button
android:id="@+id/btnstop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="mOnClick"
android:text="Stop"
/>
<Button
android:id="@+id/btnreset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="mOnClick"
android:text="Reset"
/>
</LinearLayout>
</LinearLayout>
ChronometerTest.java
package com.example.ch13_chronometer;
import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.widget.Chronometer;
public class ChronometerTest extends Activity {
Chronometer mChrono;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chronometer_test);
mChrono = (Chronometer)findViewById(R.id.chrono);
}
//반드시 앱 종료전에 STOP 메소드를 호출해야 메모리릭이 발생하지 않는다.
public void onDestroy(){
super.onDestroy();
mChrono.stop();
}
public void mOnClick(View v){
//어느 버튼을 클릭했는지 확인
switch(v.getId()){
//start버튼의 경우
case R.id.btnstart:
mChrono.start();
break;
//stop버튼의 경우
case R.id.btnstop:
mChrono.stop();
break;
//reset버튼의 경우 다시 setBase 시켜줌.
case R.id.btnreset:
mChrono.setBase(SystemClock.elapsedRealtime());
break;
}
}
}
실행 화면
아래화면은 start버튼을 누르고 2분 40초가 지난 시점이다.
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 - 스위치(Switch) 만들어서 편리하게 토글하기 (0) | 2015.08.16 |
---|---|
안드로이드 - 웹뷰(WebView)로 웹페이지 보여주기 (0) | 2015.08.15 |
안드로이드 - 자동 완성 기능 만들기(AutoCompleteTextView, MultiAutoCompleteTextView) (0) | 2015.08.15 |
안드로이드 - 핸들러(Handler)를 이용한 간단한 스톱워치 만들기 (4) | 2015.08.09 |
안드로이드 - 날짜 대화상자 시간 대화상자 만들기 (0) | 2015.08.09 |
안드로이드 - DatePicker 위젯을 이용한 날짜 입력 받기 (1) | 2015.08.08 |
안드로이드 - 시간을 더욱 세련되게 표현하는 시계 위젯 만들기 (0) | 2015.08.08 |
안드로이드 - 날짜 시간 나타내기 (0) | 2015.08.08 |