本文实例为大家分享了Android实现倒计时效果的具体代码,供大家参考,具体内容如下
一个倒计时的效果
先看效果图:
直接上代码:
这里是关于倒计时 …天时分秒…的逻辑判断
/**
* 倒计时计算
*/
private void computeTime() {
mSecond--;
if (mSecond < 0) {
mMin--;
mSecond = 59;
if (mMin < 0) {
mMin = 59;
mHour--;
if (mHour < 0) {
// 倒计时结束
mHour = 23;
mDay--;
if(mDay < 0){
// 倒计时结束
mDay = 0;
mHour= 0;
mMin = 0;
mSecond = 0;
}
}
}
}
}
定时器主要代码如下…当然也可以开线程或者开后台服务来处理…只是没那种必要…定时器就可以搞定容易控制…毕竟倒计时时间起点…你总得后台获取吧,不是做时钟闹钟…如果是做时钟闹钟…拿你也不用考虑后台服务或者自己开线程…而是使用AlarmManager来实现
/**
* 开启倒计时
* //time为Date类型:在指定时间执行一次。
* timer.schedule(task, time);
* //firstTime为Date类型,period为long,表示从firstTime时刻开始,每隔period毫秒执行一次。
* timer.schedule(task, firstTime,period);
* //delay 为long类型:从现在起过delay毫秒执行一次。
* timer.schedule(task, delay);
* //delay为long,period为long:从现在起过delay毫秒以后,每隔period毫秒执行一次。
* timer.schedule(task, delay,period);
*/
private void startRun() {
TimerTask mTimerTask = new TimerTask() {
@Override
public void run() {
Message message = Message.obtain();
message.what = 1;
timeHandler.sendMessage(message);
}
};
mTimer.schedule(mTimerTask,0,1000);
}
修改界面,利用handler来提醒更新界面
private Handler timeHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 1) {
computeTime();
mDays_Tv.setText(mDay+"");//天数不用补位
mHours_Tv.setText(getTv(mHour));
mMinutes_Tv.setText(getTv(mMin));
mSeconds_Tv.setText(getTv(mSecond));
if (mSecond == 0 && mDay == 0 &am