Android 倒计时功能的实现(CountDownTimer)

来源:互联网 发布:淘宝人群画像分析 编辑:程序博客网 时间:2024/06/01 10:36





一个网友说到了CountDownTimer这个类,从名字上面大家就可以看出来,记录下载时间。将后台线程的创建和Handler队列封装成为了一个方便的类调用。

查看了一下官方文档,这个类及其简单,只有四个方法,上面都涉及到了onTick,onFinsh、cancel和start。其中前面两个是抽象方法,所以要重写一下。

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

new CountdownTimer(30000, 1000) {      public void onTick(long millisUntilFinished) {          mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);      }      public void onFinish() {          mTextField.setText("done!");      }   }.start();  
直接用的那位网友的代码,自己稍微改动了一下,一个简单的小demo。
package cn.demo;    import Android.app.Activity;  import Android.os.Bundle;  import Android.content.Intent;  import Android.os.CountDownTimer;  import Android.widget.TextView;  import Android.widget.Toast;  public class NewActivity extends Activity {      private MyCount mc;      private TextView tv;      @Override      protected void onCreate(Bundle savedInstanceState) {          // TODO Auto-generated method stub           super.onCreate(savedInstanceState);          setContentView(R.layout.main);          tv = (TextView)findViewById(R.id.show);          mc = new MyCount(30000, 1000);          mc.start();      }//end func         /*定义一个倒计时的内部类*/      class MyCount extends CountDownTimer {             public MyCount(long millisInFuture, long countDownInterval) {                 super(millisInFuture, countDownInterval);             }             @Override             public void onFinish() {                 tv.setText("finish");                }             @Override             public void onTick(long millisUntilFinished) {                 tv.setText("请等待30秒(" + millisUntilFinished / 1000 + ")...");                 Toast.makeText(NewActivity.this, millisUntilFinished / 1000 + "",                 Toast.LENGTH_LONG).show();//toast有显示时间延迟                }        }     }

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

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


文章来源:http://blog.csdn.net/aomandeshangxiao/article/details/6941724


0 0
原创粉丝点击