效果图:

封装好的工具类:TimeUtils.java

package com.xiao7.pump.Utils;

import android.os.Handler;

import android.os.Message;

import android.widget.TextView;

import java.util.Timer;

import java.util.TimerTask;

public class TimeUtils {

/*倒计时时长 单位:秒*/

public static int COUNT = 20*60;

/*当前做*/

private static int CURR_COUNT = 0;

/*预计结束的时间*/

private static long TIME_END = 0;

/*计时器*/

private static Timer countdownTimer;

/*显示倒计时的textView*/

private static TextView txtCountdown;

/**

* 开始倒计时

* @param isFirst 标识是否是第一次进入

* @param second 倒计时时长 单位:秒

* @param textView 显示倒计时的textView

*/

public static void startCountdown(boolean isFirst,int second,TextView textView) {

COUNT = second;

long data = System.currentTimeMillis();

long time = TIME_END;

//第一次进入时,重新赋值

if(isFirst){

CURR_COUNT = COUNT;

time = data + COUNT * 1000;

TIME_END = time;

}else {

int the_difference = ((int) (time - data)) / 1000;

CURR_COUNT = the_difference;

}

//开始倒计时

txtCountdown = textView;

if (countdownTimer == null) {

countdownTimer = new Timer();

countdownTimer.schedule(new TimerTask() {

@Override

public void run() {

Message msg = new Message();

msg.what = CURR_COUNT--;

handler.sendMessage(msg);

}

}, 0, 1000);

//第二个参数delay:"0"的意思是:无延迟

//第三个参数period:"1000"的意思是:每隔多长时间调用一次(单位毫秒)

}

}

/**

* 结束倒计时

*/

public static void stopCountdown() {

//发送消息,结束倒计时

Message message = new Message();

message.what = 0;

handler.sendMessage(message);

}

private static Handler handler = new Handler() {

public void handleMessage(Message msg) {

if (msg.what <= 0) {

if (countdownTimer != null) {

countdownTimer.cancel();

countdownTimer = null;

}

txtCountdown.setText("剩余:00:00:00");

txtCountdown.setEnabled(true);

} else {

//倒计时效果展示

String txtTime = formatSecondTime(msg.what);

txtCountdown.setText(txtTime);

txtCountdown.setEnabled(false);

}

super.handleMessage(msg);

}

};

/**

* 时间格式化方法

* @param second 秒数

* @return

*/

private static String formatSecondTime(int second) {

int hour = 0;

int minute = 0;

if (second > 60) {

minute = second / 60; //取整

second = second % 60; //取余

}

if (minute > 60) {

hour = minute / 60;

minute = minute % 60;

}

String strtime = "剩余:"+hour+"小时"+minute+"分"+second+"秒";

return strtime;

}

}

TimeUtils调用方式:

//在启动倒计时的按钮上

buttonStart.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

//假设倒计20分钟

int secondTime=20*60;

//倒计时

TimeUtils.startCountdown(true,secondTime,txtCountDown);

//第一个参数为true,表示刚启动倒计时(第一次)

}

});

活动的生命周期onRestart()上重新调用,如下:

@Override

protected void onRestart() {

super.onRestart();

TimeUtils.startCountdown(false,secondTime,txtCountDown);

//第一个参数为false,表示非第一次启用,倒计时正在运行中

}

android后台倒计时,android倒计时封装(活动进入后台,倒计时依然能正常计时)...相关推荐

  1. android倒计时动画特效,Android仿活动时分秒倒计时效果

    本文实例为大家分享了Android时分秒倒计时效果的具体代码,供大家参考,具体内容如下 从mian.xml下手: xmlns:tools="http://schemas.android.co ...

  2. android 定时器倒计时,Android CountDownTimer实现定时器和倒计时效果

    本文实例为大家分享了Android实现定时器和倒计时的具体代码,供大家参考,具体内容如下 直接上代码,相信都看得懂. Android已经帮封装好了一个类,只不过很多人不知道而已. 代码: public ...

  3. Android电商抢购倒计时,Android限时抢购倒计时实现代码

    限时抢购倒计时实现效果图 布局: android:id="@+id/ll_xsqg" android:layout_width="match_parent" a ...

  4. Android图片上倒计时,Android自定义照相机倒计时拍照

    自定义拍照会用到SurfaceView控件显示照片的预览区域,以下是布局文件: 两个TextView是用来显示提示信息和倒计时的秒数的 xmlns:tools="http://schemas ...

  5. 自定义圆形倒计时Android,Android自定义View倒计时圆

    本文实例为大家分享了Android自定义View倒计时圆的具体代码,供大家参考,具体内容如下 创建attr 创建DisplayUtil 类 import android.content.Context ...

  6. android欢迎页圆形倒计时,android 欢迎页圆形进度条倒计时功能

    常见app欢迎页圆形进度条倒计时功能,可设置显示文字,进度条颜色,宽度,倒计时时间,内圆颜色.设置进度条类型  顺数进度条(0-100)还是倒数进度条(100-0): 先上效果图: 下面介绍实现逻辑: ...

  7. android 列表倒计时,Android ListView列表实现倒计时

    本文实例为大家分享了Android ListView列表实现倒计时的具体代码,供大家参考,具体内容如下 效果图: 1. Activity package com.s296267833.ybs.acti ...

  8. android如何暂停倒计时,Android计时器和倒计时的实现(含开始,暂停,和复位)...

    倒计时和计时在比赛中经常用到,由于涉及到子线程和主线程的通信问题,同学们在制作的时候总有点畏手畏脚的,今天会有两个神器出现,帮助大家攻克这两道难关! 神器一:chronometer --andrdoi ...

  9. Android自定义控件之3D上下翻页效果的倒计时控件

    这是一个自定义的倒计时控件,具有3D上下翻页翻转效果.最近项目中需要做一个倒计时控件,需要和iOS端的效果保持一样.大致效果是这样的,如下图所示: 由于暂时还不会怎么样制作gif动态图,所以想看具体效 ...

  10. android自定义秒表,Android自定义Chronometer实现短信验证码秒表倒计时功能

    本文实例为大家分享了Chronometer实现倒计时功能,Android提供了实现按照秒计时的API,供大家参考,具体内容如下 一.自定义ChronometerView 继续自TextView 主要原 ...

最新文章

  1. sql语句求上四分位数_SAS和R中,非常规分位数的计算方法
  2. linux 软硬文件类型,linux文件属性和类型、系统链接文件、软链接和硬链接
  3. leetcode 496, 503, 556. Next Greater Element I, II, III | 496, 503, 556. 下一个更大元素 I,II,III(单调栈)
  4. 【计算机系统设计】实践笔记(3)改进数据通路:移位R型指令分析
  5. 如何保证消息队列里的数据顺序执行?
  6. 缓存穿透、击穿、雪崩什么的傻傻分不清楚?看了这篇文后,我明白了
  7. AttributeError: ‘SMOTE’ object has no attribute ‘fit_sample’
  8. win2003 程序时间提供程序 NtpClient错误解决
  9. OpenMP模式下多线程文件操作 (转)
  10. jQuery 使用收集
  11. if - else 案例.py
  12. 瞬态抑制二极管型号参数对照表,想要的都在这里
  13. 笔记:美团智能配送系统的运筹优化实战
  14. .Net获取公司所有员工前一天钉钉考勤记录
  15. 钉钉小程序从搭建到引入地三方库到发布---企业内小程序
  16. php代码计算三角形面积,c语言计算三角形面积代码
  17. 电化学: 交流阻抗相关知识
  18. 第10章 51PC实物制作
  19. Flowable 数据库表结构 ACT_GE_BYTEARRAY
  20. javacv opencv 多图片合成视频 并加入mp3的音频 控制视频秒数

热门文章

  1. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第5节 线程池_2_线程池的代码实现...
  2. flask gunicorn gevent部署
  3. UnityWebReqest和WWW,请求web数据打包到Android手机上,报错 Unknown error记录
  4. format not a string literal and no format arguments
  5. Primer – 支撑 GitHub 的 CSS 工具包和准则
  6. java 判断5张牌的组成
  7. [转帖]我们是OIer、
  8. java get请求带参数报错 java.io.IOException: Server returned HTTP response code: 400 for URL
  9. C++知识点(三)函数
  10. PostgreSQL 日常数据库维护工作