日々是好日~every day is a good day~

日常の中の非日常の備忘録

【Android Studio】カウントダウンタイマー

Android Studio kotlinのメソッドパーツ化
今回はカウントダウンタイマーです
kotlinのライブラリにはカウントダウンタイマーが準備されています
なのでタイマーの秒数やインターバル秒数 経過処理 終了処理を設定するだけです

カウントダウンタイマーのオブジェクト

val timer = (object : CountDownTimer(3000, 1000) {  //1秒ごとに3秒間

            override fun onTick(p0: Long) {   //p0は残り時間
		//途中経過
            }
	   override fun onFinish() {
		//終了設定
            }
 })

タイマーをスタートする時は

 timer.start()

タイマーを中止する時は

timer.cansel()

使用例はこちら(xmlファイルは省略します)

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.CountDownTimer
import android.widget.Button
import android.widget.TextView

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val btStart:Button = findViewById(R.id.btstart)
        val btCancel:Button = findViewById(R.id.btcancel)
        val tv:TextView = findViewById(R.id.tv)
        //カウントダウンタイマーのオブジェクトを用意(1秒ごとに5秒間カウントダウン)
        val timer = (object : CountDownTimer(5000, 1000) {

            override fun onTick(p0: Long) {   //p0は残り時間
                //途中経過
                tv.text = ((p0+1000) / 1000).toString()
            }
            override fun onFinish() {
                //終了設定
                tv.text ="0"
                btStart.isEnabled = true
            }
        })

        btStart.setOnClickListener {
            timer.start()
            btStart.isEnabled = false
        }
        btCancel.setOnClickListener {
            timer.cancel()
            btStart.isEnabled = true
            tv.text =""
        }
    }
}

スタートボタンを押すとカウントダウンが5から始まり1秒ごとに表示が更新されます
キャンセルボタンを押すとカウントダウンが中止されます