简单实现短信验证码的倒计时效果

xiaoxiao2021-02-28  40

简单实现短信验证码的倒计时效果

话不多说,直接开始!要实现我们的倒计时效果,使用Handler就能够简单的又效率的实现效果。整体逻辑是使用handler每间隔一秒发送一次消息更新UI,下面上代码。

简单的一个按钮,xml就不放出来了

首先定义一个Handler内部类,并且复写sendMessage方法

class MyHandler extends android.os.Handler { @Override public void handleMessage(Message msg) { super.handleMessage(msg); //根据不同标识响应不同事件 switch (msg.what) { case 0x01: button.setText("重新发送("+msg.arg1+")"); break; case 0x02: button.setText("重新获取验证码"); //按钮可点击 button.setClickable(true); break; } } }

然后是按钮的点击事件,点击按钮后,禁止按钮点击,然后创建一个线程,并使线程每隔一秒发送一次消息,循环60秒,循环结束后再发送一次消息,表示秒数走完

@OnClick(R.id.button) public void onViewClicked() { button.setClickable(false);//按钮不可点击 // 开始线程去更新button的text new Thread(new Runnable() { @Override public void run() { // 总秒数为60秒 int totalNum = 60; //循环发送消息去更新UI for (int i = 0; i < totalNum; i++) { //构建一个消息对象,并且设置标识 Message message = handler.obtainMessage(0x01); message.arg1 = totalNum - i; // 发送剩余秒数的消息 handler.sendMessage(message); try { //每休眠一秒,发送一次 Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } //循环完成后再发送一个消息,表示完成 handler.sendEmptyMessage(0x02); } }).start(); }

写到这里,功能就已经实现了,这篇博客希望能给初入Android的小伙伴一点帮助。

转载请注明原文地址: https://www.6miu.com/read-78298.html

最新回复(0)