Android -- 倒计时的实现

移动开发 Android
CountDownTimer这个类,实现了倒计时的功能。将后台线程的创建和Handler队列封装成一个方便的类调用。这个类比较简单,只有四个方法:onTick,onFinsh、cancel和start。其中前面两个是抽象方法,所以要重写一下。

CountDownTimer这个类,实现了倒计时的功能。将后台线程的创建和Handler队列封装成一个方便的类调用。

这个类比较简单,只有四个方法:onTick,onFinsh、cancel和start。其中前面两个是抽象方法,所以要重写一下。

下面是官方给的一个小例子:

  1. new CountdownTimer(300001000) {   
  2.     public void onTick(long millisUntilFinished) {   
  3.         mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);   
  4.     }   
  5.     public void onFinish() {   
  6.         mTextField.setText("done!");   
  7.     }   
  8.  }.start(); 


  1. ackage com.yydcdut.daojishi; 
  2.  
  3. import android.os.Bundle; 
  4. import android.os.CountDownTimer; 
  5. import android.app.Activity; 
  6. import android.view.Menu; 
  7. import android.widget.TextView; 
  8. import android.widget.Toast; 
  9.  
  10. public class MainActivity extends Activity { 
  11.     private MyCount mc;   
  12.     private TextView tv; 
  13.     @Override 
  14.     protected void onCreate(Bundle savedInstanceState) { 
  15.         super.onCreate(savedInstanceState); 
  16.         setContentView(R.layout.activity_main);tv = (TextView)findViewById(R.id.show);   
  17.         mc = new MyCount(300001000);   
  18.         mc.start(); 
  19.     } 
  20.  
  21.     @Override 
  22.     public boolean onCreateOptionsMenu(Menu menu) { 
  23.         // Inflate the menu; this adds items to the action bar if it is present. 
  24.         getMenuInflater().inflate(R.menu.main, menu); 
  25.         return true
  26.     } 
  27.      
  28.     /*定义一个倒计时的内部类*/   
  29.     class MyCount extends CountDownTimer {      
  30.         public MyCount(long millisInFuture, long countDownInterval) {      
  31.             super(millisInFuture, countDownInterval);      
  32.         }      
  33.         @Override      
  34.         public void onFinish() {      
  35.             tv.setText("finish");         
  36.         }      
  37.         @Override      
  38.         public void onTick(long millisUntilFinished) {      
  39.             tv.setText("请等待30秒(" + millisUntilFinished / 1000 + ")...");      
  40.             Toast.makeText(MainActivity.this, millisUntilFinished / 1000 + "", Toast.LENGTH_LONG).show();//toast有显示时间延迟        
  41.         }     
  42.     }      
  43.  

 主要是重写onTick和onFinsh这两个方法,onFinish()中的代码是计时器结束的时候要做的事情;onTick(Long m)中的代码是你倒计时开始时要做的事情,参数m是直到完成的时间,构造方法MyCount()中的两个参数中,前者是倒计的时间数,后者是倒计每秒中间的间隔时间,都是以毫秒为单位。例如要倒计时30秒,每秒中间间隔时间是1秒,两个参数可以这样写MyCount(30000,1000)。 将后台线程的创建和Handler队列封装成为了一个方便的类调用。

当你想取消的时候使用mc.cancel()方法就行了。

本文链接:http://www.cnblogs.com/yydcdut/p/3908966.html

 

责任编辑:chenqingxiang 来源: cnblogs
相关推荐

2022-10-21 15:42:21

倒计时鸿蒙

2013-10-10 09:23:15

Android 4.4Kitkat

2011-04-11 09:17:28

Ubuntu倒计时

2017-07-20 16:21:52

UICountDownTidelay

2015-03-23 17:58:04

验证码倒计时并行

2014-03-21 13:46:45

2015-01-21 16:07:57

Android源码验证码倒计时

2011-04-11 09:50:56

Ubuntu 11.0

2014-02-18 10:36:33

2020-10-28 17:54:49

成都信息安全

2013-04-09 10:01:18

微软Windows XP

2019-12-13 19:37:00

BashLinux命令

2013-10-08 09:24:39

Windows 8.1Windows 8

2022-06-14 08:45:27

浏览器IEWindows

2022-06-29 21:22:49

CSS动感倒计时

2011-03-06 15:49:25

webOSBlackBerry

2011-05-23 08:43:40

jQueryjQuery插件

2013-06-06 11:27:52

iRadioWWDC2013

2017-02-09 16:35:17

戴尔
点赞
收藏

51CTO技术栈公众号