Welcome

首页 / 移动开发 / Android / Android利用Chronometer实现倒计时功能

项目需要实现一个计时的功能,利用Chronometer虽然可以很方便的实现计时功能,但需要的却是一个倒计时控件。
百度了一下方法不少,倒计时的却没有,于是用Chronometer封装了一个倒计时的类,本着开源的精神,分享给大家!
废话不说了,进入主题

首先xml布局如下:
<com.example.anticlockwisedemo.Anticlockwiseandroid: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(){@Overridepublic 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.jb51.net/201611/yuanma/androidChronometer(jb51.net).rar
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。