1.编写文本控件
<EditText
android:id="@+id/login_edit"
android:paddingLeft="50dp"
android:hint="请输入验证码"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
2.编写按钮控件
?
<Button
android:id="@+id/login_btn"
android:text="验证码"
android:layout_width="wrap_content"
android:layout_height="40dp"/>
3.在Activity获取控件id,然后再用获取到的button的id设置点击事件?
4.用Timer编写倒计时,不能在子线程中编写,使用要加个
runOnUiThread(new Runnable() {}
5.在此方法中编写一个run方法,然后定义一个int的变量定义倒计时秒数
loginBtn.setEnabled(false); //不允许点击
loginBtn.setEnabled(true); //允许点击
6.判断他在第几秒的时候出现数字,并显示在EditText中
if (index == 2){
Random random = new Random();
int i = random.nextInt(899999);
int random_ed = i + 100000;
loginEdit.setText(random_ed+"");
}
7.倒计时到0的时候点击发送验证码 ,第一次点击完之后就重新把index赋值到5,以并第二次点击有数据
if (index <= 0){
loginBtn.setEnabled(true);
loginBtn.setText("发送验证码");
timer.cancel();
index = 5;
}
完整代码方法
loginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
index--;
loginBtn.setText(index+"秒后重试");
loginBtn.setEnabled(false);
if (index == 2){
Random random = new Random();
int i = random.nextInt(899999);
int random_ed = i + 100000;
loginEdit.setText(random_ed+"");
}
if (index <= 0){
loginBtn.setEnabled(true);
loginBtn.setText("发送验证码");
timer.cancel();
index = 5;
}
}
});
}
},0,1000);
}
});
|