Android利用Chronometer實現(xiàn)倒計時功能
更新時間:2016年11月10日 11:19:30 作者:張小_懶
這篇文章主要為大家詳細介紹了Android利用Chronometer實現(xiàn)倒計時功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
項目需要實現(xiàn)一個計時的功能,利用Chronometer雖然可以很方便的實現(xiàn)計時功能,但需要的卻是一個倒計時控件。
百度了一下方法不少,倒計時的卻沒有,于是用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 自動生成的構造函數(shù)存根
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);
}
/**
* 繼續(xù)計時
*/
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
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
第1個Android應用程序 Android制作簡單單頁導航
這篇文章主要為大家詳細介紹了第1個Android應用程序PhonewordApp:Android制作簡單單頁導航,感興趣的小伙伴們可以參考一下2016-06-06

