(Android)Chronometerでシンプルなストップウォッチを作ってみた

android.widget.Chronometerのお勉強に、シンプルなストップウォッチを作ってみました。
Chronometerの使い方は、

    • Chronometerの定義
    • setBaseで基準時刻の設定
    • startメソッドでタイマー開始
    • stopメソッドでタイマー停止

といった感じです。


以下、コードです。
(StopWatchActivity.java)

package com.example.android.stopwatch;

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 StopWatchActivity extends Activity {
    boolean chk = false;
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        final Chronometer c = (Chronometer)findViewById(R.id.chronometer_id);
        
        /** Start Button **/
        Button st_b = (Button)findViewById(R.id.start_button_id);
        st_b.setOnClickListener(
        		new View.OnClickListener() {
					public void onClick(View v) {
						if (chk) {
							c.start();
						}
						else {
							c.setBase(SystemClock.elapsedRealtime());
							c.start();
						}
					}
				}
        );
        
        /** Stop Button **/
        Button sp_b = (Button)findViewById(R.id.stop_button_id);
        sp_b.setOnClickListener(
        		new View.OnClickListener() {
					public void onClick(View v) {
						c.stop();
						chk = true;
					}
				}
        );
        
        /** Reset Button **/
        Button rt_b = (Button)findViewById(R.id.reset_button_id);
        rt_b.setOnClickListener(
        		new View.OnClickListener() {
					public void onClick(View v) {
						c.stop();
						c.setBase(SystemClock.elapsedRealtime());
						chk = false;
					}
				}
        );
    }
}


(main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
	<Chronometer
		android:id="@+id/chronometer_id"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:format="@string/chronometer_format"
	/>
	<LinearLayout
		android:orientation="horizontal"
		android:gravity="right"
		android:layout_width="fill_parent"
		android:layout_height="fill_parent" >
		<Button
			android:id="@+id/start_button_id"
			android:layout_width="wrap_content"
			android:layout_height="wrap_content"
			android:text="@string/start_button_label"
		/>
		<Button
			android:id="@+id/stop_button_id"
			android:layout_width="wrap_content"
			android:layout_height="wrap_content"
			android:text="@string/stop_button_label"
		/>
		<Button
			android:id="@+id/reset_button_id"
			android:layout_width="wrap_content"
			android:layout_height="wrap_content"
			android:text="@string/reset_button_label"
		/>
	</LinearLayout>
</LinearLayout>


(strings.xml)

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, StopWatchActivity!</string>
    <string name="app_name">StopWatch</string>
    <string name="chronometer_format">%s</string>
    <string name="start_button_label">開始</string>
    <string name="stop_button_label">停止</string>
    <string name="reset_button_label">クリア</string>
</resources>