首页 > 系统 > Android > 正文

Android利用Chronometer实现倒计时功能

2019-12-12 04:43:40
字体:
来源:转载
供稿:网友

项目需要实现一个计时的功能,利用Chronometer虽然可以很方便的实现计时功能,但需要的却是一个倒计时控件。

百度了一下方法不少,倒计时的却没有,于是用Chronometer封装了一个倒计时的类,本着开源的精神,分享给大家!

废话不说了,进入主题

首先xml布局如下:

<com.example.anticlockwisedemo.Anticlockwise  android:id="@+id/id_timer"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:textSize="66sp" /> 

继承Chronometer封装好的类:

package com.example.anticlockwisedemo;  import java.text.SimpleDateFormat; import java.util.Date; import android.annotation.SuppressLint; import android.content.Context; import android.util.AttributeSet; import android.widget.Chronometer;   /***  *  * @author 张小_懒 2015/02/07  *  */ @SuppressLint( { "ViewConstructor", "SimpleDateFormat" }) public class Anticlockwise extends Chronometer {  public Anticlockwise(Context context, AttributeSet attrs)  {  super(context, attrs);  // TODO 自动生成的构造函数存根  mTimeFormat = new SimpleDateFormat("mm:ss");  this.setOnChronometerTickListener(listener);  }   private long mTime;  private long mNextTime;  private OnTimeCompleteListener mListener;  private SimpleDateFormat mTimeFormat;   public Anticlockwise(Context context)  {  super(context);   }   /**  * 重新启动计时  */  public void reStart(long _time_s)  {  if (_time_s == -1)  {  mNextTime = mTime;  } else  {  mTime = mNextTime = _time_s;  }  this.start();  }   public void reStart()  {  reStart(-1);  }   /**  * 继续计时  */  public void onResume()  {  this.start();  }   /**  * 暂停计时  */  public void onPause()  {  this.stop();  }   /**  * 设置时间格式  *  * @param pattern  * 计时格式  */  public void setTimeFormat(String pattern)  {  mTimeFormat = new SimpleDateFormat(pattern);  }   public void setOnTimeCompleteListener(OnTimeCompleteListener l)  {  mListener = l;  }   OnChronometerTickListener listener = new OnChronometerTickListener()  {  @Override  public void onChronometerTick(Chronometer chronometer)  {  if (mNextTime <= 0)  {  if (mNextTime == 0)  {  Anticlockwise.this.stop();  if (null != mListener)  mListener.onTimeComplete();  }  mNextTime = 0;  updateTimeText();  return;  }   mNextTime--;   updateTimeText();  }  };   /**  * 初始化时间  * @param _time_s  */  public void initTime(long _time_s)  {  mTime = mNextTime = _time_s;  updateTimeText();  }   private void updateTimeText()  {  this.setText(mTimeFormat.format(new Date(mNextTime * 1000)));  }   interface OnTimeCompleteListener  {  void onTimeComplete();  }  } 

效果图:

程序很简单,我就不做过多的解释。

详细的大家可以看Demo,已封装,可直接使用,下载地址:http://xiazai.VeVB.COm/201611/yuanma/androidChronometer(VeVB.COm).rar

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表