在发现这个类之前,一直是用的handler,子线程发消息,UI线程进行倒计时的显示工作。前几天在做一个倒计时显示的时候发现了这个类,用起来非常方便

翻看了下源代码。内部已经帮我们实现了handler的子线程操作

CountDownTimer这个类用起来非常easy。两个參数。几句代码搞定,例如以下:

CountDownTimer(long millisInFuture, long countDownInterval) 

构造函数有两个參数,第一个millisInFuture是指要倒计时的总时间,单位是long ms。第二个參数countDownInterval是指倒计时的频率,是一次倒计时1s 还是一次倒计时2s

知道这两个參数的意思那就非常好办了,new一个CountDownTimer对象就会生成两个回调函数

public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub } @Override
public void onFinish() {
// TODO Auto-generated method stub }

第一个方法 就是在倒计时的时候调用的,每倒计时一次要进行什么操作。就能够放在这里面做。通常是对UI线程进行一些操作。比方对文本进行更改,达到倒计时的效果

第二个方法是倒计时完毕后调用。倒计时完毕须要进行什么操作都能够写在里面。

当然,最后一定要记得start() 否则线程不会開始

所有代码:

public class MainActivity extends Activity {

	private TextView tv;

	@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); /** 倒计时60秒,一次1秒 */
CountDownTimer timer = new CountDownTimer(60*1000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
tv.setText("还剩"+millisUntilFinished/1000+"秒");
} @Override
public void onFinish() {
tv.setText("倒计时完毕了");
}
}.start();
} }

效果图:

       

Android基础之——CountDownTimer类,轻松实现倒计时功能的更多相关文章

  1. Android基础之CountDownTimer 倒计时类

    app常用的60s倒计时计时功能: private static final int TIME_LIMIT = 60; private void initView() { // 相关控件 mResen ...

  2. Android CountDownTimer 类实现倒计时

    本文用 Android 中的 CountDownTimer 类实现倒计时功能,类似输入手机号获得验证码.界面如下所示: 1. 点击 “开始计时” 按钮后开始进行倒计时, 2. 倒计时过程: 3. 时间 ...

  3. Android 关于倒计时功能的实现

    关于倒计时的实现,可以说有很多的方法,比较常见的就是Timer+TimerTask+Handler了,或者还可以配合Runnable.例如下面的代码: import java.util.Timer; ...

  4. Android开发案例 – 在AbsListView中使用倒计时

    在App中, 有多种多样的倒计时需求, 比如: 在单View上, 使用倒计时, 如(如图-1) 在ListView(或者GridView)的ItemView上, 使用倒计时(如图-2) 图-1 图-2 ...

  5. java翻译到mono C#实现系列(4) 利用CountDownTimer类实现倒计时功能 mono版

    群里的朋友问利用CountDownTimer类实现倒计时功能怎么实现,我就百度了,参考http://blog.csdn.net/qq344429461/article/details/7521361写 ...

  6. 【Android工具类】验证码倒计时帮助类CountDownButtonHelper的实现

    转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 我们在做有关短信验证码功能的时候.为了防止用户无休止的获取短信验证码,或者是误操作.造成验证码混乱的情况.我 ...

  7. Android基础工具类重构系列一Toast

    前言: 一直在考虑写一下Android实际项目中的一些总结,翻看CSDN博客,上一篇已经是一年多曾经. 本系列定位Android基础工具类重构.旨在记录实际项目中经经常使用到的一些工具类,比方Toas ...

  8. 深入理解gradle编译-Android基础篇

    深入理解gradle编译-Android基础篇 导读 Gradle基于Groovy的特定领域语言(DSL)编写的一种自动化建构工具,Groovy作为一种高级语言由Java代码实现,本文将对Gradle ...

  9. Android基础新手教程——4.1.3 Activity登堂入室

    Android基础新手教程--4.1.3 Activity登堂入室 标签(空格分隔): Android基础新手教程 本节引言: 好的,在学习了两节的Activity后相信大家已经知道怎样去使用Acti ...

随机推荐

  1. Android:安装时提示:INSTALL_FAILED_INSUFFICIENT_STORAGE

    在将程序发布到手机上时提示该错误: INSTALL_FAILED_INSUFFICIENT_STORAGE 解决方法: 1. adb shell 2. #df # df df Filesystem   ...

  2. iOS开发技巧 - 使用UISegmentedControl来对信息进行分组

    (Swift) import UIKit class ViewController: UIViewController { var segmentedControl:UISegmentedContro ...

  3. APP测试体系

    网上找的图片,总结的很好:

  4. 微软BI 之SSRS 系列 - 使用 LookupSet 和 Adjacent Group 等高级技巧在报表中跨 Dataset 分组查询

    SSRS 报表中有一些高级的技巧,平常很少用到,下面我通过这个案例来展现一下如何在实际开发中使用它们,并且如何解决一些实际的需求. 这张报表分别统计了不同的 Product 产品在不同的月份的 Ord ...

  5. hive中简单介绍分区表(partition table)——动态分区(dynamic partition)、静态分区(static partition)

    一.基本概念 hive中分区表分为:范围分区.列表分区.hash分区.混合分区等. 分区列:分区列不是表中的一个实际的字段,而是一个或者多个伪列.翻译一下是:“在表的数据文件中实际上并不保存分区列的信 ...

  6. JSjs获取当前时间的前一天/后一天(昨天/明天)

    Date curDate = new Date(); var preDate = new Date(curDate.getTime() - 24*60*60*1000); //前一天 var next ...

  7. 〖Android〗Nexus 7 flo (razor) 刷入Recovery/CM-11.0后卡在开机动画的解决方法

    操作日志: 起因:Nexus 7 flo 华硕平板,刷了一个CWM Recovery之后变成了砖机: 尝试1:使用CWM Recovery清除数据,开机失败 尝试2:刷入CM 11 Snapshot的 ...

  8. 10、java5线程池之返回结果的任务之Callable与Future

    JDK文档描述Callable: public interface Callable<V>返回结果并且可能抛出异常的任务.实现者定义了一个不带任何参数的叫做 call 的方法. Calla ...

  9. 拦截导弹问题(NOIP1999)

    某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统,但是这种拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度, 但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹来袭,由于该 ...

  10. Scala详解---------数组、元组、映射

    一.数组 1.定长数组 声明数组的两种形式: 声明指定长度的数组 val 数组名= new Array[类型](数组长度) 提供数组初始值的数组,无需new关键字 Scala声明数组时,需要带有Arr ...