要做一个发送验证码的功能,点击一按钮后,给用户的手机发送一个验证码,点完一次后,要做倒计时显示,60秒后按钮才能重新操作
求一个例子
------解决思路----------------------
不是有timer吗,点击后,enable=false,开始计时,到点enable=true
------解决思路----------------------
同意楼上,计时器控制你的boolean标志位,简单粗暴有效
------解决思路----------------------
请百度:CountDownTimer
------解决思路----------------------
//这是倒计时线程,每隔1秒会通知一次UI线程更新
private class TimerTask extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
mVCodeBtn.setBackgroundResource(R.color.text_gray);
mVCodeBtn.setClickable(false);
}
@Override
protected String doInBackground(String... params) {
for (int i = 60; i >= 0; i--) {
onProgressUpdate(String.valueOf(i));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onProgressUpdate(String... values) {
Message msg = new Message();
msg.what = Integer.valueOf(values[0]);
handler.sendMessage(msg);
super.onProgressUpdate(values);
}
}
// 下面是UI线程收到消息后更新,当为0时倒计时结束,会重新打开按钮点击
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 0) {
mVCodeBtn.setBackgroundResource(R.color.patient_theme);
mVCodeBtn.setClickable(true);
mVCodeBtn.setText(R.string.btn_verification_code);
} else {
mVCodeBtn.setText("重新获取 " + msg.what);
}
}
};
------解决思路----------------------
话说你这里还写个handler干吗?直接在onprogressupdate里面更新不就行了?