[Android] カウントダウンするタイマーをCountDownTimerで作成する

カウントダウンするタイマーアプリを作りたいときは、CountDownTimerクラスを使うと簡単に作成できます。
 

Android Studio 3.0.1
Android 8.0

 



CountDownTimer

 
CountDownTimer を継承したクラスを作り
インスタンスにカウントダウンを始める時間とインターバルを設定します

  • long millisInFuture:カウントダウン開始時間
  • long countDownInterval:インターバル時間

onTick(long millisUntilFinished) が設定したインターバル時間で呼ばれる
millisUntilFinished で残りの時間が分かる

まとめると

MainActivity.java

 
レイアウトです
activity_main.xml

 
リソースです
strings.xml

 

 
時間の表示を [分:秒.ミリ秒] で表現したいときには
SimpleDateFormatを使うと便利です。ミリ秒で表されるmillisecがあるとすると、分:秒.ミリ秒(3桁)はこのようにします。

但し、これは時刻を表示するものを便宜的に使ったのでLocaleの設定をしないとWarningが出ます。
年月日も追加してみるとわかりますが、startしてからの時間計測はこの例では、起点である1970/1/1からの時間ということになってしまいます。
あるいは、以下のように計算してフォーマットに入れることもできます。

 
インターバルは10msecですがあまり短くしても表示が追いつかないのと
バッテリー消費が激しくなりますので注意です。実機次第です
 
またこの設定では1msec単位まで表示されているかもしれませんが精度はあまり期待できません、あくまで10msecと設定したインターバルです。
 
タイマー関連:

Chronometer
TimerTask
currentTimeMillis
CountDownTimer

Ref:
CountDownTimer