最近有朋友问我如何实现短信验证功能,还特意强调了验证码发送按钮的倒计时问题,其实这些都是些很基础的问题,但既然写了,也不妨贴出来,权当记录。
好了,既然是基础,那话不多说,上代码。
第一种实现方式:自定义倒计时类,实现Runnable接口
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button timeBtn;
public int T = 10; //倒计时时长
private Handler mHandler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timeBtn = (Button) findViewById(R.id.timeBtn);
timeBtn.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.timeBtn:
new Thread(new MyCountDownTimer()).start();//开始执行
break;
}
}
/**
* 自定义倒计时类,实现Runnable接口
*/
class MyCountDownTimer implements Runnable{
@Override
public void run() {
//倒计时开始,循环
while (T > 0) {
mHandler.post(new Runnable() {
@Override
public void run() {
timeBtn.setClickable(false);
timeBtn.setText(T + "秒后重新开始");
}
});
try {
Thread.sleep(1000); //强制线程休眠1秒,就是设置倒计时的间隔时间为1秒。
} catch (InterruptedException e) {
e.printStackTrace();
}
T--;
}
//倒计时结束,也就是循环结束
mHandler.post(new Runnable() {
@Override
public void run() {