Android实现发送短信验证码倒计时功能示例
发布时间 - 2026-01-11 00:16:34 点击率:次一、简介:

开发中在用户注册或找回密码之类的功能,经常会遇到获取短信验证码,获取验证码后需要等待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>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# android验证码倒计时
# 获取验证码倒计时
# android获取验证码倒计时
# OpenHarmony实现类Android短信验证码及倒计时流程详解
# Android自定义短信倒计时view流程分析
# Android使用CountDownTimer模拟短信验证倒计时
# Android使用Kotlin和RxJava 2.×实现短信验证码倒计时效果
# Android 用RxBinding与RxJava2实现短信验证码倒计时功能
# Android短信验证码倒计时验证的2种常用方式
# Android自定义Chronometer实现短信验证码秒表倒计时功能
# Android开发之获取短信验证码后按钮背景变化并且出现倒计时
# Android封装实现短信验证码的获取倒计时
# 倒计时
# 验证码
# 发送短信
# 按下
# 圆角
# 填充色
# 下划线
# 这段
# 但不
# 设置为
# 经常会
# 回调
# 用户注册
# 大家多多
# 算起
# 都算
# 粗体
# 背景色
# 主要是
# 找回密码
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
phpredis提高消息队列的实时性方法(推荐)
原生JS获取元素集合的子元素宽度实例
php json中文编码为null的解决办法
Laravel如何操作JSON类型的数据库字段?(Eloquent示例)
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
JavaScript Ajax实现异步通信
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
HTML 中动态设置元素 name 属性的正确语法详解
Laravel如何自定义分页视图?(Pagination示例)
如何在IIS管理器中快速创建并配置网站?
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
Android仿QQ列表左滑删除操作
历史网站制作软件,华为如何找回被删除的网站?
Laravel观察者模式如何使用_Laravel Model Observer配置
laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法
黑客如何通过漏洞一步步攻陷网站服务器?
Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】
大学网站设计制作软件有哪些,如何将网站制作成自己app?
Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践
JS弹性运动实现方法分析
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
如何在IIS中配置站点IP、端口及主机头?
详解MySQL数据库的安装与密码配置
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
如何快速搭建FTP站点实现文件共享?
非常酷的网站设计制作软件,酷培ai教育官方网站?
晋江文学城电脑版官网 晋江文学城网页版直接进入
Linux安全能力提升路径_长期防护思维说明【指导】
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
如何用虚拟主机快速搭建网站?详细步骤解析
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境
Linux后台任务运行方法_nohup与&使用技巧【技巧】
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
详解CentOS6.5 安装 MySQL5.1.71的方法
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
怎样使用JSON进行数据交换_它有什么限制
EditPlus中的正则表达式实战(5)
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
Laravel DB事务怎么使用_Laravel数据库事务回滚操作

