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秒ごとに表示が更新されます
キャンセルボタンを押すとカウントダウンが中止されます