Android倒计时的开始与停止 剩余时分秒的展示
作者:风云正 发布时间:2023-07-20 03:11:31
标签:Android,倒计时
本文实例为大家分享了Android倒计时的开始与停止,剩余时分秒的展示效果,供大家参考,具体内容如下
1.声明开启倒计时相关方法
Handler handler = new Handler();
Runnable update_thread = new Runnable() {
@Override
public void run() {
leftTime--;
LogUtil.e("leftTime="+leftTime);
if (leftTime > 0) {
//倒计时效果展示
String formatLongToTimeStr = formatLongToTimeStr(leftTime);
sureBtn.setText(formatLongToTimeStr);
//每一秒执行一次
handler.postDelayed(this, 1000);
} else {//倒计时结束
//处理业务流程
//发送消息,结束倒计时
Message message = new Message();
message.what = 1;
handlerStop.sendMessage(message);
}
}
};
2.声明停止倒计时的方法
final Handler handlerStop = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
leftTime = 0;
handler.removeCallbacks(update_thread);
break;
}
super.handleMessage(msg);
}
};
3.页面关闭时,销毁定时器,重写onDestory方法
@Override
protected void onDestroy() {
super.onDestroy();
leftTime = 0;
handler.removeCallbacks(update_thread);
}
4.开启倒计时
handler.postDelayed(update_thread, 1000);
5.倒计时展示剩余时分秒的两种方法
方法一 展示剩余时、分、秒:
public String formatLongToTimeStr(Long l) {
int hour = 0;
int minute = 0;
int second = 0;
second = l.intValue() ;
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;
}
方法二 展示剩余天、时、分、秒:
public String formatLongToTimeStr(Long date) {
long day = date / (60 * 60 * 24);
long hour = (date / (60 * 60) - day * 24);
long min = ((date / 60) - day * 24 * 60 - hour * 60);
long s = (date - day*24*60*60 - hour*60*60 - min*60);
String strtime = "剩余:"+day+"天"+hour+"小时"+min+"分"+s+"秒";
return strtime;
}
6.最终效果图
来源:https://blog.csdn.net/chenzheng8975/article/details/80591556


猜你喜欢
- 前言本文告诉大家一个简单的方法从 BBcode 转为 Markdown,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。本文
- 开始逐渐领略到ItemDecoration的美~今天让我 使用 ItemDecoration 来完成 可推动的悬浮导航栏的效果,最终实现的效
- 本文为大家分享了java实现百度云OCR识别的具体代码,高精度OCR识别身份证信息,供大家参考,具体内容如下1.通用OCR文字识别这种OCR
- yaml中的数组类型取值yaml中简单的风格,十分受大家的欢迎先说下简单的配置如何取值# application-dev.yml testV
- 内存分配方式简介在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈:在执行函数时,函数内局部变量的存
- 最近想关闭一个包的日志打印,经过一番研究实际上就一句话的事,一直没成功是因为name写错了。<logger name="pa
- 本文实例为大家分享了flutter实现底部导航栏的具体代码,供大家参考,具体内容如下一.flutter底部导航栏常用组件BottomNavi
- LinkedList<T>是一个双向链表,其元素会指向它前面和后面的元素。这样,通过移动到下一个元素可以正向遍历链表,通过移动到
- springBoot yml文件的list读取问题折腾了很久,记录下。配置如下# 自定义数据上报信息xx: # 机组信息 &nb
- 这里我们给定一个集合strings一、写法1–循环for (int i = 0, len = strings.size(); i <
- 添加依赖<dependency> <groupId>com.belerweb
- SpringBoot后台如何实现文件上传下载?最近做的一个项目涉及到文件上传与下载。前端上传采用百度webUploader插件。有关该插件的
- 官方的C/C++插件是支持使用.clang-format配置文件进行自定义风格代码格式化的,无需另外安装clang-format插件。但是使
- 1. 背景我们都知道,Compose可以使用mutableStateOf和UI进行绑定,改变值之后,就可以改变UI。var value by
- Android EditText限制输入字符的方法总结最近项目要求限制密码输入的字符类型, 例如不能输入中文。 &nb
- 关于在Android中实现ListView的弹性效果,有很多不同的方法,网上一搜,也有很多,下面贴出在项目中经常用到的两种实现ListVie
- 我们在使用ListView的时候,一般都会为ListView添加一个响应事件android.widget.AdapterView.OnIte
- 前言apollo配置经常使用的方式是@value,比较便捷,如果只出现在一个类中还行,但是如果多个类中并不是很方便,特别是如果出现配置值变化
- 规则1(无继承情况下):对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序依次是(静态变量、静态初始化块)>(变量、
- 在Android Studio 2.1 Preview 3之后,官方开始支持双向绑定了。可惜目前Google并没有在Data Binding