欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android利用Chronometer实现倒计时功能

程序员文章站 2024-03-01 15:04: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(); 
 } 
 
} 

效果图:

Android利用Chronometer实现倒计时功能

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

详细的大家可以看demo,已封装,可直接使用,下载地址:http://xiazai.jb51.net/201611/yuanma/androidchronometer(jb51.net).rar

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