Android实现倒计时:
- 01.使用Handler机制
- 02.使用Google官方的CountDownTimer
实现倒计时:
class MainActivity : AppCompatActivity() {
private var countDownHandler = Handler()
private var countDownTime: Int? = null
private val countDown = object : Runnable {
override fun run() {
if (countDownTime!! > 0) {
countDownHandler.postDelayed(this, 1000)//每秒
countDownTime = countDownTime!! - 1
findViewById<TextView>(.txt).text = countDownTime.toString()
} else {
//停止的逻辑
Toast.makeText(this@MainActivity, "计时结束", Toast.LENGTH_SHORT).show()
}
}
}
var time: Long = 2*1000
var countDownTimer = object : CountDownTimer(time, 1000){
override fun onFinish() {
Toast.makeText(this@MainActivity, "计时结束", Toast.LENGTH_SHORT).show()
}
override fun onTick(millisUntilFinished: Long) {
var hour=millisUntilFinished/1000/60/60
var minute=millisUntilFinished/1000/60%60
var second=millisUntilFinished/1000%60
findViewById<TextView>(.txt).text = "倒计时"+hour+"小时"+minute+"分"+second+"秒"
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
findViewById<Button>(.btn1).setOnClickListener {
countDownTime = 2
findViewById<TextView>(.txt).text = countDownTime.toString()
//开始执行倒计时逻辑
countDownHandler.postDelayed(countDown, 0)
}
findViewById<Button>(.btn2).setOnClickListener {
findViewById<TextView>(.txt).text = "倒计时:${time/1000/60/60}小时:${time/1000/60%60}分:${time/1000%60}秒"
//开始执行倒计时逻辑
countDownTimer.start()
}
}
}