我是靠谱客的博主 陶醉高跟鞋,最近开发中收集的这篇文章主要介绍android原生与kotlin验证码倒计时,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、Android原生倒计时代码

1、倒计时方法

/**
 * 获取验证码
 */
public void getYanZhengMa(TextView btn_yanzhengma, EditText edit_Phone) {
    userPhone = edit_Phone.getText().toString().trim();
    if (!TextUtils.isEmpty(userPhone) && userPhone.length() == 11) {
        /** 倒计时60秒,一次1秒 */
        CountDownTimer timer = new CountDownTimer(60 * 1000, 1000) {
            @Override
            public void onTick(long millisUntilFinished) {
                // TODO Auto-generated method stub
                btn_yanzhengma.setTextColor(getResources().getColor(R.color.gray_light));
                btn_yanzhengma.setText("还剩" + millisUntilFinished / 1000 + "秒");
                btn_yanzhengma.setEnabled(false);
            }

            @Override
            public void onFinish() {
                btn_yanzhengma.setText("请重新获取");
                btn_yanzhengma.setTextColor(getResources().getColor(R.color.yanzhengma_color));
                btn_yanzhengma.setEnabled(true);
            }
        }.start();
        /**
         * 调用获取验证码接口
         * 测试手机号:1234567891
         * */
       // getYZMRequest(userPhone);
    } else {
        showToast("请输入正确手机号");
    }
}


TextView btn_yanzhengma : 发送验证码的的按钮,EditText edit_Phone  : 输入手机号的EditText

二、Kotlin代码



import android.os.Handler
import android.widget.TextView

/**
 *@date:2022-02-9 
 *@discription:
**/

class TimerUnit(private val textView: TextView) : Handler() {
    private var defaultTime = 60
    private var time = defaultTime
    private var isShowEndText = true

    private var timeEndListener: OnTimeEndListener? = null

    private var runnable: Runnable = object : Runnable {
        override fun run() {
            time--
            if (time == 0) {
                endtTime()
                return
            }
            textView.text = String.format("%ds", time)
            postDelayed(this, 1000)
        }
    }

    fun setTimeEndListener(timeEndListener: OnTimeEndListener) {
        this.timeEndListener = timeEndListener
    }

    fun setShowEndText(showEndText: Boolean) {
        isShowEndText = showEndText
    }


    fun setTime(time: Int) {
        this.defaultTime = time
        this.time = defaultTime
    }

    fun startTime() {
        post(runnable)
        textView.isEnabled = false
    }


    fun pauseTime() {
        removeCallbacks(runnable)
        time = defaultTime
    }

    fun endtTime() {
        if (isShowEndText) {
            textView.text = "获取验证码"
        }
        textView.isEnabled = true
        removeCallbacks(runnable)
        time = defaultTime
        if (timeEndListener != null) {
            timeEndListener!!.timeEnd()
        }
    }

    interface OnTimeEndListener {
        fun timeEnd()
    }

}

2. 在kotlin中使用地方调用代码

private var timer: TimerUnit? = null
 /**
    * 获取验证码 loginSendSmsCode按钮的点击事件
  * */
        loginSendSmsCode.setOnClickListener {
            if (timer == null) {
                timer = TimerUnit(loginSendSmsCode)
            }
            timer?.startTime()
        }

                                               -END

最后

以上就是陶醉高跟鞋为你收集整理的android原生与kotlin验证码倒计时的全部内容,希望文章能够帮你解决android原生与kotlin验证码倒计时所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部