Android开发利用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();
}
}

效果图:

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

 

人已赞赏
Android文章

Intel HAXM为Android 模拟器加速运行慢的方法

2020-2-5 5:04:04

Android文章

android开发分辨率适配的方法

2020-2-5 5:26:25

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索