安卓验证码倒计时的实现

2024-08-21 10:48

本文主要是介绍安卓验证码倒计时的实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

构造方法

public CountDownTimer (long millisInFuture, long countDownInterval)

参数

millisInFuture 从开始调用start()到倒计时完成并onFinish()方法被调用的毫秒数。(译者注:倒计时时间,单位毫秒)

countDownInterval 接收onTick(long)回调的间隔时间。(译者注:单位毫秒)

公共方法如下:

取消倒计时(译者:取消后,再次启动会重新开始倒计时)

 public final void cancel ()

倒计时完成时被调用

  public abstract void onFinish () 

固定间隔被调用

 public abstract void onTick (long millisUntilFinished)参数 millisUntilFinished   倒计时剩余时间。

启动倒计时

 public synchronized final CountDownTimer start ()

新建一个类继承CountDownTimer,重写onFinish()以及onTick()方法。

public class MyCountdown extends CountDownTimer {private Button mButton;public MyCountdown(Button button, long millisInFuture,long countDownInterval) {super(millisInFuture, countDownInterval);mButton = button;
}@Override
public void onFinish() {// 获取 验证码按钮可点击setButtonEnable();}@Override
public void onTick(long millisUntilFinished) {// 获取验证码按钮不可点击,倒计时开始setButtonUnEnable(millisUntilFinished);}@SuppressWarnings("deprecation")
private void setButtonEnable() {mButton.setEnabled(true);mButton.setText("重新获取");mButton.setBackgroundDrawable(MyApplication.getInstance().getResources().getDrawable(R.drawable.shape_button_red));}@SuppressWarnings("deprecation")
public void setButtonUnEnable(long millisUntilFinished) {mButton.setEnabled(false);mButton.setText("重新获取(" + millisUntilFinished / 1000 + ")秒");mButton.setBackgroundDrawable(MyApplication.getInstance().getResources().getDrawable(R.drawable.shape_button_gray));
}}

用到两个样式xml。

shapebuttonred.xml

  <?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" >  <corners android:radius="3.0dip" />  <solid android:color="@color/ycode"></solid></shape>  

shapebuttongray.xml

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" ><corners android:radius="3.0dip" />  
<solid android:color="@color/gary" />  </shape>

调用:

1.先声明

 private MyCountdown mCounter;

2.实例化并start

mCounter = new MyCountdown(btn_reg_getcode, 60000, 1000);
mCounter.start();

这篇关于安卓验证码倒计时的实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1092949

相关文章

基于Python实现温度单位转换器(新手版)

《基于Python实现温度单位转换器(新手版)》这篇文章主要为大家详细介绍了如何基于Python实现温度单位转换器,主要是将摄氏温度(C)和华氏温度(F)相互转换,下面小编就来和大家简单介绍一下吧... 目录为什么选择温度转换器作为第一个项目项目概述所需基础知识实现步骤详解1. 温度转换公式2. 用户输入处

MySQL实现多源复制的示例代码

《MySQL实现多源复制的示例代码》MySQL的多源复制允许一个从服务器从多个主服务器复制数据,这在需要将多个数据源汇聚到一个数据库实例时非常有用,下面就来详细的介绍一下,感兴趣的可以了解一下... 目录一、多源复制原理二、多源复制配置步骤2.1 主服务器配置Master1配置Master2配置2.2 从服

Java实现TXT文件导入功能的详细步骤

《Java实现TXT文件导入功能的详细步骤》在实际开发中,很多应用场景需要将用户上传的TXT文件进行解析,并将文件中的数据导入到数据库或其他存储系统中,本文将演示如何用Java实现一个基本的TXT文件... 目录前言1. 项目需求分析2. 示例文件格式3. 实现步骤3.1. 准备数据库(假设使用 mysql

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

SpringBoot集成P6Spy的实现示例

《SpringBoot集成P6Spy的实现示例》本文主要介绍了SpringBoot集成P6Spy的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录本节目标P6Spy简介抛出问题集成P6Spy1. SpringBoot三板斧之加入依赖2. 修改

Python实现数据可视化图表生成(适合新手入门)

《Python实现数据可视化图表生成(适合新手入门)》在数据科学和数据分析的新时代,高效、直观的数据可视化工具显得尤为重要,下面:本文主要介绍Python实现数据可视化图表生成的相关资料,文中通过... 目录前言为什么需要数据可视化准备工作基本图表绘制折线图柱状图散点图使用Seaborn创建高级图表箱线图热

Redis分布式锁中Redission底层实现方式

《Redis分布式锁中Redission底层实现方式》Redission基于Redis原子操作和Lua脚本实现分布式锁,通过SETNX命令、看门狗续期、可重入机制及异常处理,确保锁的可靠性和一致性,是... 目录Redis分布式锁中Redission底层实现一、Redission分布式锁的基本使用二、Red

基于Python实现数字限制在指定范围内的五种方式

《基于Python实现数字限制在指定范围内的五种方式》在编程中,数字范围限制是常见需求,无论是游戏开发中的角色属性值、金融计算中的利率调整,还是传感器数据处理中的异常值过滤,都需要将数字控制在合理范围... 目录引言一、基础条件判断法二、数学运算巧解法三、装饰器模式法四、自定义类封装法五、NumPy数组处理

Python中经纬度距离计算的实现方式

《Python中经纬度距离计算的实现方式》文章介绍Python中计算经纬度距离的方法及中国加密坐标系转换工具,主要方法包括geopy(Vincenty/Karney)、Haversine、pyproj... 目录一、基本方法1. 使用geopy库(推荐)2. 手动实现 Haversine 公式3. 使用py

MySQL进行分片合并的实现步骤

《MySQL进行分片合并的实现步骤》分片合并是指在分布式数据库系统中,将不同分片上的查询结果进行整合,以获得完整的查询结果,下面就来具体介绍一下,感兴趣的可以了解一下... 目录环境准备项目依赖数据源配置分片上下文分片查询和合并代码实现1. 查询单条记录2. 跨分片查询和合并测试结论分片合并(Shardin