Android实现发送短信验证码倒计时功能示例

一、简介:

开发中在用户注册或找回密码之类的功能,经常会遇到获取短信验证码,获取验证码后需要等待1分钟倒计时,这段时间是不能再次发送短信请求的。

效果图:

二、实现步骤:

1、一个关键类:CountDownTimer(Android系统自带的倒计时功能类)

public class CountDownTimerUtils extends CountDownTimer { private TextView mTextView; //显示倒计时的文字 /** * @param textView The TextView * @param millisInFuture millisInFuture 从开始调用start()到倒计时完成 * 并onFinish()方法被调用的毫秒数。(译者注:倒计时时间,单位毫秒) * @param countDownInterval 接收onTick(long)回调的间隔时间。(译者注:单位毫秒) */ public CountDownTimerUtils(TextView textView, long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); this.mTextView = textView; } @Override public void onTick(long millisUntilFinished) { mTextView.setClickable(false); //设置不可点击 mTextView.setText(millisUntilFinished / 1000 + "秒后可重新发送"); //设置倒计时时间 mTextView.setBackgroundResource(R.drawable.validate_code_press_bg); //设置按钮为灰色,这时是不能点击的 /** * 超链接 URLSpan * 文字背景颜色 BackgroundColorSpan * 文字颜色 ForegroundColorSpan * 字体大小 AbsoluteSizeSpan * 粗体、斜体 StyleSpan * 删除线 StrikethroughSpan * 下划线 UnderlineSpan * 图片 ImageSpan */ SpannableString spannableString = new SpannableString(mTextView.getText().toString()); //获取按钮上的文字 ForegroundColorSpan span = new ForegroundColorSpan(Color.RED); /** * public void setSpan(Object what, int start, int end, int flags) { * 主要是start跟end,start是起始位置,无论中英文,都算一个。 * 从0开始计算起。end是结束位置,所以处理的文字,包含开始位置,但不包含结束位置。 */ spannableString.setSpan(span, 0, 2, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);//将倒计时的时间设置为红色 mTextView.setText(spannableString); } @Override public void onFinish() { mTextView.setText("重新获取验证码"); mTextView.setClickable(true);//重新获得点击 mTextView.setBackgroundResource(R.drawable.validate_code_normal_bg); //还原背景色 } }

2、在合适的地方调用

使用:

CountDownTimerUtils mCountDownTimerUtils = new CountDownTimerUtils(mButton, 60000, 1000); //倒计时1分钟 mCountDownTimerUtils.start();

3、validate_code_press_bg.xml

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <!--发送短信验证码按钮被按下--> <solid android:color="#C0C0C0" /> <!--填充色 透明--> <corners android:radius="8dp" /> <!-- 圆角 --> </shape>

validate_code_normal_bg.xml

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <!--发送短信验证码按钮未按下--> <solid android:color="#FF9933" /> <!--填充色 透明--> <corners android:radius="8dp" /> <!-- 圆角 --> </shape>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-07-30 18:45:16

Android实现发送短信验证码倒计时功能示例的相关文章

JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)_javascript技巧

1.功能描述 当用户想要获取验证码时,就点击 免费获取验证码 ,然后开始倒计时,倒计时期间按钮文字为剩余时间x秒,且不可按状态,倒计时结束后,按钮更改为点击重新发送. 2.分析 必须用到定时器.按钮点击后,在定时器内做出判断.倒计时60秒,到0结束. 3.代码实现: 重点介绍:定时器在进行下一次倒计时之前,一定要清除一下,这样的话保证下一次定时器倒计时是正常的. <!DOCTYPE html> <html> <head> <meta charset="U

Android 用RxBinding与RxJava2实现短信验证码倒计时功能

场景:注册账号页面时,我们点击按钮发送验证码,在等待验证码时,界面会有倒计时提示,这此期间按钮不可点击.当倒计时结束时,按钮恢复. 实现与功能都不难,这次用 RxBinding,RxJava2 的方法去实现.并实现了手动.自动停止倒计时,防止多次点击. 功能动态图 要使用 RxBinding.RxJava2 先添加 Gradle 配置: compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'io.reactivex.rxjava2:rxj

基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)_jquery

相关阅读: 基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能) 今天测试提了一个bug,发送短信倒计时功能,要求关闭页面也要进行倒计时.这想到了,当年我参与的周杰伦演唱会的先付先抢功能.与之类似,只不过,那个项目的时间都是服务器时间,本人目前有点偷懒,就用客户端的时间了. 一下是完整的代码,只不过在客户端的效率不是很好. <!doctype html> <html lang="en"> <head> <meta

基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)_javascript技巧

相关阅读: 基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭) 下面一段代码是小编给大家带来的js发送短信验证码后实现倒计时功能,代码简单易懂. 具体代码如下所示: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus

关于android实现发送短信的功能

问题描述 关于android实现发送短信的功能 请教一下,实现发送短信功能的时候,必须要通过一个按钮来实现吗?可不可以这样 public void onFinish() { myNotification("72小时已过", 3); SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(numberText.getText().toString(), null, messageText.ge

Android使用第三方服务器Bmob实现发送短信验证码_Android

调用Bmob第三方服务器实现短信验证的功能,大致思路如下: 随机产生6位数字,然后调用Bmob的请求短发函数发送者六位数到服务器,然后服务器给指定手机发送这6位验证码,然后感觉用户输入的数字进行判断,如果输入的和发送的相等,则验证成功. 第一步.请求验证码: SimpleDateFormat format =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String sendTime = format.format(new Date());

Android自动获取短信验证码功能

先给大家展示下效果图,如果大家感觉不错,请参考实现代码. 1.自定义监听类 /** * 短信监听器,用于自动填充验证码 */ public class SMSContentObserver extends ContentObserver { public final String SMS_URI_INBOX = "content://sms/inbox";//收信箱 private Activity activity = null; private String smsContent

验证码-android应用手机短信验证注册功能如何实现?

问题描述 android应用手机短信验证注册功能如何实现? 最近做一个项目,需要做短信验证注册,验证码接口和注册接口都有,如何实现具体功能?有哪里可以找到源码参考? 解决方案 1.生成一个验证码,存入数据库,并发送给指定号码2.用户注册账号,输入验证码,查询数据库,判断验证码是否正确 解决方案二: android 都有注册了 服务器肯定有了 开放一个注册短信的接口不就好了 请求手机注册 获得验证码 用户输入验证码 对比 成功 就成功失败就失败 不是很简单吗? 解决方案三: 楼下说的已经很详细了,

php发送短信验证码完成注册功能_php实例

短信验证码注册,很简单,用的是  云通讯的短信系统(收费的,不过有测试的api给我们做测试).好了,不多说,进入正题.  1.收到到云通讯短信系统注册账号,然后下载他们的封装好的短信api接口代码,解压,然后找到CCPRestSDK.php文件和SendTemplateSMS.php文件,将其拉到根目录文件夹里. 2.打开SendTemplateSMS.php文件,首先注意include_once('./CCPRestSDK.php'),千万别包含错路径了,将云通讯给的测试主账号,主账号Toke