Android自定义倒计时控件

序:

最近越来越多的APP都是用手机号注册,一是为了方便用户记忆,二是为了增加用户账户的安全性。在我们进行交易操作或者修改密码等操作的时候,这时候需要输入短信验证码。这个控件会需要有倒计时的功能,这里主要总结常见的几种实现方式。

1.Android中实现倒计时的方法

第一种:直接用Handler的消息机制来实现

这种方式感觉是最原始的,这里不多说。

第二种:Timer和TimerTask

基本使用:获得Timer和TimerTask对象,然后启动,倒计时的逻辑写在handler里面

private Timer mTimer=new Timer();

private TimerTask mTimerTask= new TimerTask() {

@Override

public void run() {

mHandler.sendEmptyMessage(COUNTTIME);

}

};

// 倒计时任务启动

mTimer.schedule(mTimerTask, 0, mOnetime);

这里要注意资源的释放:在适当的地方清空资源

/*** 清除时间*/

private void clearTimer() {

if (mTimerTask != null) {

mTimerTask.cancel();

mTimerTask = null;

}

if (mTimer != null) {

mTimer.cancel();

mTimer = null;

}

}

第三种:直接使用Android自带的原生倒计时类(也是利用Handler来实现的)

btnGetVerificationCode.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// 这个是原生的倒计时类,第一个参数是总毫秒数,第二个是倒计时的毫秒数。

new CountDownTimer(10000, 1000) {

@Override

public void onTick(long millisUntilFinished) {

// 倒计时中的方法

btnGetVerificationCode.setEnabled(false);

btnGetVerificationCode.setText(millisUntilFinished / 1000 + "秒");

}

@Override

public void onFinish() {

// 倒计时结束后的方法

btnGetVerificationCode.setEnabled(true);

btnGetVerificationCode.setText("重复获取验证码");

}

}.start();// 开始倒计时的方法

}

});

这种方式,看起来是最简单的,可是有几个明显的缺陷:

1.倒计时一开始显示的秒数可能不准确

2.倒计时的过程中可能丢失一秒

3.倒计时的最后显示“1秒”,然后会卡顿1秒,并不是所期望的0秒。卡顿1秒以后才显示。

2.商城倒计时库

这里推荐一个github上的商品倒计时库:商品倒计时库

3.自定义的倒计时控件

为了简化倒计时控件的使用,参考商品倒计时库,编写了一个自定义控件。效果如下

具体的实现原理是:继承TextView,重新onTouch()方法,使用Timer来进行倒计时。

4.自定义倒计时控件基本使用

第一步:在布局中添加该控件:

<android:id="@+id/MSGCTV"

android:layout_width="wrap_content"

android:layout_gravity="center_horizontal"

android:layout_height="wrap_content"

android:padding="16dp"/>

第二步:在合适的地方加入

msgCountTimeView.isAllowRun(true);//允许开始倒计时

部分API的说明

countTimeView.setTotaltime(10000);//设置总时间,单位是毫秒

setInittext("")//设置初始化的文字

setPrefixRuntext("代码剩余时间")//设置运行时的文字的前缀

setSuffixRuntext("")//设置运行时的文字的后缀

setFinishtext("代码重新获取")//设置结束后的文字

setTimeColor(color.blueLight);//设置运行时秒数的颜色

5.源码地址

自定义倒计时控件

时间: 2024-10-26 22:05:35

Android自定义倒计时控件的相关文章

android自定义倒计时控件示例

这篇文章主要介绍了Android秒杀倒计时自定义TextView示例,大家参考使用吧 自定义TextView控件TimeTextView代码: 复制代码 代码如下: import android.content.Context;import android.content.res.TypedArray;import android.graphics.Paint;import android.text.Html;import android.util.AttributeSet;import and

Android 自定义组合控件小结

引言 接触Android UI开发的这段时间以来,对自定义组合控件有了一定的了解,为此小结一下,本文小结内容主要讨论的是如何使用Android SDK提供的布局和控件组成一个功能完整组合控件并将其封装为面向对象的类,而并非讨论如何继承自SDK提供的控件类(比如TextView),对其进行自定义扩展的问题. 进入正题前,我们先来看一组功能需求 假设在手机需求上,那么如上三个界面我们可以使用三个Activity,每个Activity一个布局文件,实现起来比较独立,但是假设在Android pad上要

Android自定义用户控件简单范例(一)

一款优秀的移动应用需要具有自己独特统一的风格,通常情况下UI设计师会根据产品需求和使用人群的特点,设计整体的风格,界面的元素和控件的互效果.而原生态的Android控件为开发人员提供的是最基本的积木元素,如果要准确地传递统一的视觉效果和交互体验,对控件的自定义使用是非常有必要的. 这篇文章通过一个简单的从Java后台程序中进行创建的示例来说明Android自定义控件的运行原理. <LinearLayout xmlns:android="http://schemas.android.com/

Android自定义用户控件简单范例(二)

对于完全由后台定制的控件,并不是很方便其他人的使用,因为我们常常需要看到控件放到xml界面上的效果,并根据效果进行布局的调整,这就需要一个更加标准的控件制作流程: 我们的自定义控件和其他的控件一样,应该写成一个类,而这个类的属性是是有自己来决定的. 我们要在res/values目录下建立一个attrs.xml的文件,并在此文件中增加对控件的属性的定义. 使用AttributeSet来完成控件类的构造函数,并在构造函数中将自定义控件类中变量与attrs.xml中的属性连接起来. 在自定义控件类中使

android中倒计时控件CountDownTimer分析

android中倒计时控件CountDownTimer分析 1 示例代码 new CountDownTimer(10000, 1000) { public void onTick(long millisUntilFinished) { LogUtil.i(TAG, "seconds remaining: " + millisUntilFinished / 1000); } public void onFinish() { LogUtil.i(TAG, "done!"

Android自定义组合控件--底部多按钮切换

效果图: 现在市场上大多数软件都是类似于上面的结构,底部有几个按钮用于切换到不同的界面.基于OOP思想,我想把下面的一整块布局封装成一个类,也就是我们的自定义组合控件-底部多按钮切换布局,我把它叫做BottomLayout 看上面的布局,几个按钮横向排列,我们先看一下布局 最外面LinearLayout 方向 horizontal,然后5个weight相同的RelativeLayout,每个RelativeLayout里面有一个Button(用了显示选中状态)个ImageView(用来显示红点)

android 自定义组合控件

自定义控件是一些android程序员感觉很难攻破的难点,起码对我来说是这样的,但是我们可以在网上找一些好的博客关于自定义控件好好拿过来学习研究下,多练,多写点也能找到感觉,把一些原理弄懂,今天就讲下自定义组合控件,这个特别适合在标题栏或者设置界面,看下面图: 就非常适合使用组合控件了,现在写一个玩玩: activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

Android自定义组合控件--图片加文字,类似视频播放软件的列表

分四步来写: 1,组合控件的xml; 2,自定义组合控件的属性; 3,自定义继承组合布局的class类,实现带两参数的构造器; 4,在xml中展示组合控件. 具体实现过程: 一.组合控件的xml 我接触的有两种方式,一种是普通的Activity的xml:一种是父节点为merge的xml.我项目中用的是第一种,但个人感觉第二种好,因为第一种多了相对或者绝对布局层. 我写的 custom_pictext.xml <?xml version="1.0" encoding="u

Android自定义UI控件(简单方便版,但不灵活)

这种方法的优点就是简单,容易理解,适合开发一些不经常用到的自定义UI控件 缺点就是比较不灵活,如果其他应用想使用这个控件的话得改很多 简单来说,这个方法是用来做成品的,下一篇的方法是用来做模板的. 先看成品,这是一个标题栏控件: 由左右两个按钮和中一个TextView组成: 实现方法: 第一步:定义一个xml文件,用来设计你自定义控件的雏形 示例代码:文件名为title 1 <?xml version="1.0" encoding="utf-8"?> 2