Android利用Chronometer实现倒计时功能

项目需要实现一个计时的功能,利用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.jb51.net/201611/yuanma/androidChronometer(jb51.net).rar

以上是 Android利用Chronometer实现倒计时功能 的全部内容, 来源链接: utcz.com/z/346752.html

回到顶部