Chronometerクラスを使って簡単にタイマー処理を行う


今日は簡単なタイマー処理を行うときに便利なChronometerクラスをご紹介します。
単純に時間をカウントアップしたいだけというような用途の場合には
Chronometerクラスを使うとシンプルに実装できます。

詳細は続きからどうぞ。

レイアウトファイル

まず、レイアウトファイルにChronometerを追加します。
format属性で表示時刻のフォーマットを指定することができます。

1
2
3
4
5
<Chronometer
    android:id="@+id/chronometer"
    android:format="chronometer:%s"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

コンストラクタ

Chronometerクラスのコンストラクタにはコンテキストの他、
AttributeSetやdefStyleを指定します。

  • Chronometer(Context context)
  • Chronometer(Context context, AttributeSet attrs)
  • Chronometer(Context context, AttributeSet attrs, int defStyle)

カウントアップの開始と停止とクリア

Chronometerのカウント開始と停止は
start()メソッドとstop()メソッドを呼び出すだけです。

1
2
3
4
5
6
7
8
// インスタンス作成
mChronometer = (Chronometer) findViewById(R.id.chronometer);
 
// カウントアップスタート
mChronometer.start();
 
// カウントアップストップ
mChronometer.stop();

また、カウントをクリアするには以下のようにします。

1
2
// カウントクリア
mChronometer.setBase(SystemClock.elapsedRealtime());

定期処理をさせる

setOnChronometerTickListenerを使えばChronometerクラスを使って
定期処理をさせることもできます。

1
2
// Chronometerイベントリスナーの登録
mChronometer.setOnChronometerTickListener(this);
1
2
3
4
5
6
// Chronometerイベントリスナー
@Override
public void onChronometerTick(Chronometer chronometer) {
    // ログに経過時間を表示
    Log.i("chronometer", "time:"+time++);
}