Android-自定义倒计时工具类

图片来源于网络

在日常开发登录功能的时候,肯定要实现一个验证码倒计时的功能。这篇博客分享一下我实现获取验证码倒计时的经验,可以直接复制到项目当中。

倒计时工具类

import android.annotation.SuppressLint
import android.os.CountDownTimer
import android.widget.TextView

/**
 * 倒计时工具
 * @param mTextView          控件
 * @param millisInFuture    持续时间
 * @param countDownInterval 间隔时间
 */
class CountDownTimerUtil
    (private val mTextView: TextView, millisInFuture: Long, countDownInterval: Long) :
    CountDownTimer(millisInFuture, countDownInterval) {

    /**
     * 每隔间隔时间,就会回调这
     *
     * @param millisUntilFinished 剩余时间
     */
    @SuppressLint("SetTextI18n")
    override fun onTick(millisUntilFinished: Long) {
        mTextView.isClickable = false //设置不可点击
        mTextView.text = (millisUntilFinished / 1000).toString() + "秒"
    }

    /**
     * 结束的时候回调
     */
    override fun onFinish() {
        mTextView.text = "获取验证码"
        //重新获得点击
        mTextView.isClickable = true
    }
}

使用方法

定义全局变量:

private var countDownTimerUtil: CountDownTimerUtil? = null

在界面的点击事件方法当中初始化并开始

view.setOnClickListener{
    // 初始化倒计时,倒计时长60秒,步长是1秒
    countDownTimerUtil = CountDownTimerUtil(binding.getCodeTv, 60000, 1000)
    countDownTimerUtil?.start()
}

这样倒计时就很简单的实现了,如果是放到网络请求当中去,思路如下:

  • 网络请求开始的时候,调用countDownTimerUtil?.start()方法让倒计时开始;
  • 网络请求发生异常时,调用countDownTimerUtil?.onFinish()方法让倒计时中断。

这样就可以简单实现我们想要的倒计时功能了,希望对Android开发的小伙伴有所帮助。

你可能感兴趣的:(Android-自定义倒计时工具类)