Android利用Chronometer实现倒计时功能
程序员文章站
2024-03-02 19:32:46
项目需要实现一个计时的功能,利用chronometer虽然可以很方便的实现计时功能,但需要的却是一个倒计时控件。
百度了一下方法不少,倒计时的却没有,于是用chronom...
项目需要实现一个计时的功能,利用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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。