android倒计时功能的实现(CountDownTimer)
CountDownTimer这个类,从名字上面大家就可以看出来,记录下载时间。将后台线程的创建和Handler队列封装成为了一个方便的类调用。
查看了一下官方文档,这个类及其简单,只有四个方法,上面都涉及到了onTick,onFinsh、cancel和start。其中前面两个是抽象方法,所以要重写一下。
下面是官方给的一个小例子:
1 new CountdownTimer(30000, 1000) {
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();
直接用的那位网友的代码,自己稍微改动了一下,一个简单的小demo。
9 package cn.demo;
11 import android.app.Activity;
12 import android.os.Bundle;
13 import android.content.Intent;
14 import android.os.CountDownTimer;
15 import android.widget.TextView;
16 import android.widget.Toast;
17 public class NewActivity extends Activity {
18 private MyCount mc;
19 private TextView tv;
20 @Override
21 protected void onCreate(Bundle savedInstanceState) {
22 // TODO Auto-generated method stub
23 super.onCreate(savedInstanceState);
24 setContentView(R.layout.main);
25 tv = (TextView)findViewById(R.id.show);
26 mc = new MyCount(30000, 1000);
27 mc.start();
28 }//end func
29
30 /*定义一个倒计时的内部类*/
31 class MyCount extends CountDownTimer {
32 public MyCount(long millisInFuture, long countDownInterval) {
33 super(millisInFuture, countDownInterval);
34 }
35 @Override
36 public void onFinish() {
37 tv.setText("finish");
38 }
39 @Override
40 public void onTick(long millisUntilFinished) {
41 tv.setText("请等待30秒(" + millisUntilFinished / 1000 + ")...");
42 Toast.makeText(NewActivity.this, millisUntilFinished / 1000 + "", Toast.LENGTH_LONG).show();//toast有显示时间延迟
43 }
44 }
45 }
主要是重写onTick和onFinsh这两个方法,onFinish()中的代码是计时器结束的时候要做的事情;onTick(Long m)中的代码是你倒计时开始时要做的事情,参数m是直到完成的时间,构造方法MyCount()中的两个参数中,前者是倒计的时间数,后者是倒计每秒中间的间隔时间,都是以毫秒为单位。例如要倒计时30秒,每秒中间间隔时间是1秒,两个参数可以这样写MyCount(30000,1000)。 将后台线程的创建和Handler队列封装成为了一个方便的类调用。
当你想取消的时候使用mc.cancel()方法就行了。
posted on 2012-05-24 21:48 lizhen-cswb 阅读(274) 评论(0) 编辑 收藏 举报