Android 发送验证码倒计时常用的两种办法
来源:互联网 发布:周春芽绿狗 知乎 编辑:程序博客网 时间:2024/06/03 21:42
在项目开发中,在用户注册界面,修改密码等界面会出现发送验证码的情况。这时候就会遇到倒计时的情况了,如图:
我经常用到的有两种办法:
第一种: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()即可。
第二种: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方式。
2 0
- Android 发送验证码倒计时常用的两种办法
- Android发送验证码的倒计时按钮
- Android 验证码倒计时两种方案
- Android发送验证码倒计时,时间倒计时
- Android发送验证码倒计时
- jquery两种定时器,发送验证码倒计时定时器
- Android 之倒计时验证两种常用方式
- Android实现发送验证码倒计时的效果
- android 发送验证码,显示倒计时
- Android发送验证码倒计时自定义View
- Android笔记:发送验证码后倒计时
- Android 自定义发送验证码, 倒计时
- 验证码倒计时发送
- 发送验证码倒计时
- android 闪屏页的倒计时和发送验证码的倒计时控件
- 实现 发送验证码的倒计时功能
- Jquery简单的发送验证码倒计时
- 发送验证码的倒计时。GCD方法
- 1970-01-01 08:00:00 时间由来
- SetWindowPos函数详解及CenterWindow()的用法
- ESB v6.5.1,ESB6.5.1studio导出的ecd部署包,通过Governor部署到Linux系统的服务器上,提示“目标文件类型不合法”。
- 批量梯度下降算法BGD,小批量梯度下降法MBGD,随机梯度下降算法SGD的比较
- 小波的秘密8_图像处理应用:图像降噪
- Android 发送验证码倒计时常用的两种办法
- 代理模式
- Error:Execution failed for task ':app:resolveDebugDependencies'. > Could not initialize class com.an
- 一个demo让你彻底搞懂观察者模式
- 如何删除C++容器中的值
- 小波的秘密9_图像处理应用:图像增强
- PHP获取今日、本周、本月、本年初始(凌晨)时间戳的方法
- C++ 运算符重载
- Linux 改写rm命令,让删除编程备份