博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android短信验证码倒计时
阅读量:6221 次
发布时间:2019-06-21

本文共 2327 字,大约阅读时间需要 7 分钟。

有两种实现方法

1、第一种方式:Timer

/** * Description:自定义Timer * 

* 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); }}

2、第二种方式:Handler

/**   * 第二种方式:使用Handler   * 

* 静态内部类:避免内存泄漏 */ private static class MyHandler extends Handler { private final WeakReference

weakReference; public MyHandler(MainActivity activity) { weakReference = new WeakReference
(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(); }

 

转载于:https://www.cnblogs.com/AganRun/p/8118861.html

你可能感兴趣的文章
OpenCV轮廓检测,计算物体旋转角度
查看>>
VSS
查看>>
【转载】CodePipeline联动容器的DevOps实践
查看>>
Al x 量化:智能投顾如何解决金融机构财富管理业务的痛点?
查看>>
innodb重做日志缓冲
查看>>
大数据系列之大数据分析如何权衡存储
查看>>
软件系统开发的过程是怎么样的?分为几个步骤?
查看>>
Spark-Spark Streaming例子整理(一)
查看>>
projecteuler_problem2
查看>>
10大托管国家和5大危险电子邮件主题
查看>>
基于对偶学习的跨领域图片描述生成
查看>>
Docker收购SDN技术创业公司SocketPlane
查看>>
WCF技术剖析之十二:数据契约(Data Contract)和数据契约序列化器(DataContractSerializer)...
查看>>
深入剖析 iLBC 编码器原理
查看>>
sprintf你知道多少(转)
查看>>
2017“CCF科学技术奖”全公布,6位获奖人带来独家经验分享
查看>>
Go嵌入类型及内部提升样例
查看>>
关于js中单双引号以及转义符的理解
查看>>
OpenCASCADE Interpolation - Lagrange
查看>>
王国军:与YOCSEF一起走过的日子
查看>>