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()
        }
    }
}