效果图镇楼
今天我们讲解一下短信验证码的倒计时功能如何处理。如有需要制作弹框的小伙伴也可先了解一下
如果不需要弹框的话,我们直接进入今天的主题。短信验证码倒计时功能。
一,首先我们先初始化获取短信验证的按键(findViewById),然后为其设置监听。
二,重写CountDownTimer工具类
//定时器
class MyCountDownTimer extends CountDownTimer {
//我这里写的是内部类,如果需要把类单独提出要在类前加public如对内部类有疑问可点击查看[http://blog.csdn.net/qq_36621990/article/details/77529058]
public MyCountDownTimer(long millisInFuture, long countDownInterval) {
//定时器通过构造函数传入的变量,分别代表总时间和倒计时间隔时间
super(millisInFuture * 1000, countDownInterval * 1000);
}
@Override
public void onFinish() {
//定时器倒计时结束后回调的方法,我们可以在这里改变发送按键的文字和状态
code_发送.setText("重新获取");
//将发送按键设置为可点击状态
code_发送.setEnabled(true);
}
@Override
public void onTick(long millisUntilFinished) {
//每到达一次倒计时的间隔时间回调一次该方法(如果倒计时间隔时间是一秒钟,那么每秒刷新一次)
code_发送.setText(millisUntilFinished / 1000 + "秒后重试");
//设置倒计时的UI界面(效果图中多少秒后重试的秒钟)
}
}
三,在监听方法中启动定时器或者取消定时器
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.code_发送:
//新建定时器对象,同时传入倒计时的总时间和时间间隔
MyCountDownTimer timer = new MyCountDownTimer(60, 1);
timer.start();//启动定时器
code_发送.setEnabled(false);//将发送按钮设置为不可点击
break;
case R.id.code_取消:
timer.cancel();//取消当前任务
break;
default:
break;
}
}
如果还有什么不懂的地方可在博客下方留言。