您的位置:首页 > 移动开发 > Android开发

Android利用Chronometer实现倒计时功能

2016-11-10 11:19 477 查看

项目需要实现一个计时的功能,利用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

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

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息