android中验证码定时器
第一步,创建内部或外部引用类(这个自己随便,我用的是内部类)
/*
* 发送验证码倒数计时
*/
class MyCountDownTimer extends CountDownTimer{
/*
* 倒数计时函数
*/
public MyCountDownTimer(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
// TODO Auto-generated constructor stub
}
/*
* (计时完毕的方法)
* @see android.os.CountDownTimer#onFinish()
*/
@Override
public void onFinish() {
// TODO Auto-generated method stub
Handler.sendEmptyMessage(2); //发送消息,通知主线程这里已经计时结束。
}
/*
* (计时过程)
* @see android.os.CountDownTimer#onTick(long)
*/
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
Handler.sendEmptyMessage(1); //通知主线程,这里开始计时了。
sms=millisUntilFinished; //这里我定义了一个全局变量sms ,用来把millisUntilFinished传递给主线程。
}
}
第二步,初始化timer 并定义handler,重写handleMessage()方法。
private final MyCountDownTimer timer=new MyCountDownTimer(60000, 1000);
private long sms;
private Handler Handler=new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 1:
btn_sendVerificationCode.setClickable(false);
btn_sendVerificationCode.setTextColor(getResources().getColor(R.color.gray));
btn_sendVerificationCode.setText(sms/1000+"秒后");
break;
case 2:
btn_sendVerificationCode.setText("发送验证码");
btn_sendVerificationCode.setClickable(true);
btn_sendVerificationCode.setTextColor(getResources().getColor(R.color.blue));
break;
case 3:
Toast.makeText(MainActivity.this, "您的验证码已发送,5分钟内有效!", Toast.LENGTH_LONG).show();
break;
case 4:
Toast.makeText(MainActivity.this, "手机号码不能为空!", Toast.LENGTH_LONG).show();
break;
case 5:
Toast.makeText(MainActivity.this, "请求失败!", Toast.LENGTH_LONG).show();
break;
default:
break;
}
};
};
第三步,开启子线程,启动定时器。
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
timer.start();
}
}).start();
网友评论