概述
一、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验证码倒计时所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复