1.AnalogClock(アナログ時計)
Android.widgetパッケージに含まれるAnalogClockクラス。
Androidのソースコードでは、frameworks\base\core\java\android\widget\AnalogClock.java。
約240行のソースコードですが、基本となるアナログ時計を実装しています。
外観は、「アナログ時計(AnalogClock)を使用するには - 逆引きAndroid入門」からも参照できます。
時計の針は、リソースから取得したDrawableを、onDraw()で、Canvasを回転させて描画しています。
時計の更新は、1分毎に行われるのですが、このきっかけを作っているのは、
onAttachedToWindow()で、Intent.ACTION_TIME_TICKというIntentFilterをregisterReceiver()している処理です。
2.DigitalClock(デジタル時計)
同じくAndroid.widgetパッケージに含まれる、DigitalClockクラス。
Androidのソースコードでは、frameworks\base\core\java\android\widget\DigitalClock.java。
こちらも約140行と短いソースコードですが、基本となるデジタル時計を実装しています。
外観は、「デジタル時計(DigitalClock)を使用するには - 逆引きAndroid入門」からも参照できます。
時計の文字は、TextViewを使用しています。
時計の更新は、1秒毎に行われるのですが、このきっかけを作っているのは、
onAttachedToWindow()で、Handlerに対して1秒後にpostAtTime()している処理です。
3.AlarmClock(アラーム付きデジタル時計)
AndroidにプレインストールされているAlamClockアプリケーション。
Androidのソースコードでは、packages\apps\AlarmClock。
アラーム機能を実装しているため、同機能を実装する際に参考になります。
時計の更新は、上述したAnalogClockと同じ仕組みです。
4.GlobalTime
OpenGL ESを使用。
Androidのソースコードでは、development\samples\GlobalTime\src\com\android\globaltime。
時計の更新は、連続して行われるのですが、このきっかけを作っているのは、
GlobalTIme.javaのhandleMessage()で、sendEmptyMessage()している処理です。
※仕組みとしては、上述したDigitalClockと同じですが、さらに更新間隔が短いです。
