今天群里有人问:“有人用过类似这样的库吗?就是发送验证码,然后按钮会自动倒数 60 秒后才可以点击”,结果他就被踢了……额。 且不说伸手党的问题,也不说自己用线程或手动去做出这么一个 View ,就说当时底下有人回复:“Android 官方有提供 CountDownTimer 类”,而我本来也不知道有这个类,于是去查了下官方文档:


发现这真是一个很好用的类,能够定制一个倒计时,并且在倒计时的过程和结束时,分别有对应的回调方法。简单好用,于是我照着官方提供的例子代码,修改了一下,实现了这个获取验证码的按钮,效果如下:


实际代码很简单,我也就不多说了,直接看一下就懂了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new CountDownTimer(10000, 1000) {
// 第一个参数是总的倒计时时间
// 第二个参数是每隔多少时间 (ms) 调用一次 onTick() 方法
public void onTick(long millisUntilFinished) {
mButton.setText(millisUntilFinished / 1000 + "s 后重新发送");
mButton.setEnabled(false);
}
public void onFinish() {
mButton.setText("重新获取验证码");
mButton.setEnabled(true);
}
}.start();
}
});