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 】
相关推荐:
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
动图在线制作网站有哪些,滑动动图图集怎么做?
专业商城网站制作公司有哪些,pi商城官网是哪个?
如何在IIS服务器上快速部署高效网站?
html如何与html链接_实现多个HTML页面互相链接【互相】
如何在IIS管理器中快速创建并配置网站?
如何快速搭建高效香港服务器网站?
如何在建站之星绑定自定义域名?
Laravel如何实现API版本控制_Laravel版本化API设计方案
Laravel如何配置和使用缓存?(Redis代码示例)
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
Laravel如何创建自定义Artisan命令?(代码示例)
Linux系统命令中screen命令详解
香港服务器选型指南:免备案配置与高效建站方案解析
Python图片处理进阶教程_Pillow滤镜与图像增强
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
Laravel如何实现模型的全局作用域?(Global Scope示例)
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
如何彻底卸载建站之星软件?
音乐网站服务器如何优化API响应速度?
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
历史网站制作软件,华为如何找回被删除的网站?
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
如何解决hover在ie6中的兼容性问题
利用JavaScript实现拖拽改变元素大小
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
如何用PHP快速搭建高效网站?分步指南
Thinkphp 中 distinct 的用法解析
Laravel的.env文件有什么用_Laravel环境变量配置与管理详解
如何快速生成橙子建站落地页链接?
JavaScript实现Fly Bird小游戏
Laravel怎么判断请求类型_Laravel Request isMethod用法
如何用PHP工具快速搭建高效网站?
网站制作企业,网站的banner和导航栏是指什么?
Angular 表单中正确绑定输入值以确保提交与验证正常工作
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
EditPlus中的正则表达式实战(5)
香港服务器网站推广:SEO优化与外贸独立站搭建策略
Laravel如何生成URL和重定向?(路由助手函数)
如何快速重置建站主机并恢复默认配置?
如何在万网ECS上快速搭建专属网站?
Laravel如何使用withoutEvents方法临时禁用模型事件
JS中对数组元素进行增删改移的方法总结
PythonWeb开发入门教程_Flask快速构建Web应用
想要更高端的建设网站,这些原则一定要坚持!
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
如何用免费手机建站系统零基础打造专业网站?

