安卓验证码倒计时的实现

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

相关文章

C#实现获取电脑中的端口号和硬件信息

《C#实现获取电脑中的端口号和硬件信息》这篇文章主要为大家详细介绍了C#实现获取电脑中的端口号和硬件信息的相关方法,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 我们经常在使用一个串口软件的时候,发现软件中的端口号并不是普通的COM1,而是带有硬件信息的。那么如果我们使用C#编写软件时候,如

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将

Redis延迟队列的实现示例

《Redis延迟队列的实现示例》Redis延迟队列是一种使用Redis实现的消息队列,本文主要介绍了Redis延迟队列的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录一、什么是 Redis 延迟队列二、实现原理三、Java 代码示例四、注意事项五、使用 Redi

C#实现WinForm控件焦点的获取与失去

《C#实现WinForm控件焦点的获取与失去》在一个数据输入表单中,当用户从一个文本框切换到另一个文本框时,需要准确地判断焦点的转移,以便进行数据验证、提示信息显示等操作,本文将探讨Winform控件... 目录前言获取焦点改变TabIndex属性值调用Focus方法失去焦点总结最后前言在一个数据输入表单

基于C#实现PDF文件合并工具

《基于C#实现PDF文件合并工具》这篇文章主要为大家详细介绍了如何基于C#实现一个简单的PDF文件合并工具,文中的示例代码简洁易懂,有需要的小伙伴可以跟随小编一起学习一下... 界面主要用于发票PDF文件的合并。经常出差要报销的很有用。代码using System;using System.Col

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

Python实现将实体类列表数据导出到Excel文件

《Python实现将实体类列表数据导出到Excel文件》在数据处理和报告生成中,将实体类的列表数据导出到Excel文件是一项常见任务,Python提供了多种库来实现这一目标,下面就来跟随小编一起学习一... 目录一、环境准备二、定义实体类三、创建实体类列表四、将实体类列表转换为DataFrame五、导出Da

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后