Android 之倒计时验证两种常用方式
2016-12-04 23:45
465 查看
短信验证码功能,这里总结了两种常用的方式,可以直接拿来使用。看图:
![](http://upload-images.jianshu.io/upload_images/2495480-ce2ac2e06691ab0e.gif?imageMogr2/auto-orient/strip)
说明:这里的及时从10开始,是为了演示的时间不要等太长而修改的。
1、第一种方式:Timer
说明:根据自己的需求,在这里修改背景颜色和不同状态显示文字即可,在需要监听的按钮下直接调用new TimerCount(xxx,xxx,xxx).start()即可。
2、第二种方式:Handler
说明:此种方式采用的handler实时接收消息来设置Button的状态,对于消息的发送用的是sendMessage方式,也可以使用post方式。
完整代码已上传至github,关注公众号“code小生”回复 demo 查看链接。
![](http://upload-images.jianshu.io/upload_images/2495480-ce2ac2e06691ab0e.gif?imageMogr2/auto-orient/strip)
说明:这里的及时从10开始,是为了演示的时间不要等太长而修改的。
1、第一种方式:Timer
/** * Description:自定义Timer * <p> * Created by Mjj on 2016/12/4. */ public class TimeCount extends CountDownTimer { private Button button; //参数依次为总时长,和计时的时间间隔 public TimeCount(Button button, long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); this.button = button; } //计时过程显示 @Override public void onTick(long millisUntilFinished) { String time = "(" + millisUntilFinished / 1000 + ")秒"; setButtonInfo(time, "#c1c1c1", false); } //计时完毕时触发 @Override public void onFinish() { setButtonInfo("重新获取", "#f95353", true); } /** * 验证按钮在点击前后相关设置 * * @param content 要显示的内容 * @param color 颜色值 * @param isClick 是否可点击 */ private void setButtonInfo(String content, String color, boolean isClick) { button.setText(content); button.setBackgroundColor(Color.parseColor(color)); button.setClickable(isClick); } }
说明:根据自己的需求,在这里修改背景颜色和不同状态显示文字即可,在需要监听的按钮下直接调用new TimerCount(xxx,xxx,xxx).start()即可。
2、第二种方式:Handler
/** * 第二种方式:使用Handler * <p> * 静态内部类:避免内存泄漏 */ private static class MyHandler extends Handler { private final WeakReference<MainActivity> weakReference; public MyHandler(MainActivity activity) { weakReference = new WeakReference<MainActivity>(activity); } @Override public void handleMessage(Message msg) { super.handleMessage(msg); MainActivity activity = weakReference.get(); if (activity != null) { switch (msg.what) { case 0: if (msg.arg1 == 0) { btn2.setText("重新获取"); btn2.setBackgroundColor(Color.parseColor("#f95353")); btn2.setClickable(true); } else { btn2.setText("(" + msg.arg1 + ")秒"); btn2.setBackgroundColor(Color.parseColor("#c1c1c1")); btn2.setClickable(false); } break; } } } } /** * 监听按钮下直接调用即可 */ private void sendMessageClick() { new Thread(new Runnable() { @Override public void run() { for (int i = 59; i >= 0; i--) { Message msg = myHandler.obtainMessage(); msg.arg1 = i; myHandler.sendMessage(msg); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); }
说明:此种方式采用的handler实时接收消息来设置Button的状态,对于消息的发送用的是sendMessage方式,也可以使用post方式。
完整代码已上传至github,关注公众号“code小生”回复 demo 查看链接。
相关文章推荐
- Android 中倒计时验证两种常用方式实例详解
- android面试常用 service的两种启动方式
- [置顶] 【Android】Android开发之常用的loading等待效果实现,仿微博等待动画。两种实现方式详解
- 创建安卓模拟器的两种方式及常用Android命令介绍
- Android中自定义Dialog常用的两种方式
- Android开发之常用的loading等待效果实现,仿微博等待动画。两种实现方式详解
- xml文件解析类及Android项目中常用到的两种获取xml文件方式
- Android 发送验证码倒计时常用的两种办法
- Android-两种方式实现倒计时
- Android中自定义Dialog常用的两种方式
- Android中两种请求方式HttpGet和HttpPost验证用户登录
- Android短信验证码倒计时验证的2种常用方式
- Android常用的两种数据库操作方式总结
- Android中Handler实现倒计时的两种方式
- Android课堂笔记——LinearLayout和RelativeLayout常用的两种布局方式
- 【Android】Android开发之常用的loading等待效果实现,仿微博等待动画。两种实现方式详解
- android 短信验证码自动填写的两种方式
- android/IOS常用图片上传的两种方式
- DES、RSA(分段加解密) Android中常用的两种加密方式
- 【Android】Android开发之常用的loading等待效果实现,仿微博等待动画。两种实现方式详解