栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android中CountDownTimer 实现倒计时功能

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android中CountDownTimer 实现倒计时功能

CountDownTimer

CountDownTimer 是android 自带的一个倒计时类,使用这个类可以很简单的实现 倒计时功能

CountDownTimer 的实现方式 

new CountDownTimer(6000,1000) {//第一个参数表示的是倒计时的总时间,第二参数表示的是倒计时的间隔时间。
   @Override
   public void onTick(long millisUntilFinished) {//倒计时的过程
     textView.setText(millisUntilFinished / 1000 + "秒");
   }

   @Override
   public void onFinish() {//倒计时结束
     textView.setText("倒计时结束");
   }
 }.start();

实现效果

取消计时器

调用 CountDownTimer 的 cancel() 方法,可以为我们取消计时器:但是这个方法,只有在 android 5.0 以上才有效果,在android 5.0 以下并没有效果。如果需要在android 5.0 以下的系统中也使用 cancel,需要我们自己根据 CountDownTimer 源码中的 实现方式,重新实现一下。

  
  public synchronized final void cancel() {
    mCancelled = true;
    mHandler.removeMessages(MSG);
  }


 private static final int MSG = 1;


  // handles counting down
  private Handler mHandler = new Handler() {

    @Override
    public void handleMessage(Message msg) {

      synchronized (CountDownTimer.this) {
 if (mCancelled) {
   return;
 }

 final long millisLeft = mStopTimeInFuture - SystemClock.elapsedRealtime();

 if (millisLeft <= 0) {
   onFinish();
 } else if (millisLeft < mCountdownInterval) {
   // no tick, just delay until done
   sendMessageDelayed(obtainMessage(MSG), millisLeft);
 } else {
   long lastTickStart = SystemClock.elapsedRealtime();
   onTick(millisLeft);

   // take into account user's onTick taking time to execute
   long delay = lastTickStart + mCountdownInterval - SystemClock.elapsedRealtime();

   // special case: user's onTick took more than interval to
   // complete, skip to next interval
   while (delay < 0) delay += mCountdownInterval;

   sendMessageDelayed(obtainMessage(MSG), delay);
 }
      }
    }
  };

由于在 android 5.0以上 增加了一个

private boolean mCancelled = false;

所以我们只需要在 5.0 以下的系统中,去掉

 if (mCancelled) {
   return;
 }

去掉这个判断即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/158769.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号