android中Chronometer控件怎么用
发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,这篇文章主要介绍android中Chronometer控件怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、序言Chronometer 是android 官方提供的计时器
千家信息网最后更新 2025年02月08日android中Chronometer控件怎么用
这篇文章主要介绍android中Chronometer控件怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
1、序言
Chronometer 是android 官方提供的计时器、可实现正/倒计时、格式固定:00:00:00;
2、使用
如图xml
xml 简化写法如下:
3、发起倒计时
tvEndTime.run { //格式化-> 距结束00:00:00 format = "距结束%s" //设置倒计时时间 countDownTimeMill -》自定义 单位毫秒 base = countDownTimeMill + SystemClock.elapsedRealtime() //是否为倒计时、 isCountDown = true //倒计时监听 每隔一秒 setOnChronometerTickListener { //倒计时结束 if (SystemClock.elapsedRealtime() - it.base >= 0) { it.stop() return@setOnChronometerTickListener // TODO: 2021/9/16 处理业务逻辑 } } }
4、自定义格式化
tvEndTime.run { //格式化-> 距结束00:00:00 format = "距结束%s" //设置倒计时时间 base = countDownTimeMill + SystemClock.elapsedRealtime() //是否为倒计时、 isCountDown = true //倒计时监听 每隔一秒 setOnChronometerTickListener { //倒计时结束 if (SystemClock.elapsedRealtime() - it.base >= 0) { it.stop() return@setOnChronometerTickListener //自定义日期格式 如 1天 23:02:56 it.text = TimeUtils.formatSecondByMill(86400 * 1000) } } }
工具类:
object TimeUtils { /** * 发送消息日期格式 * * @param msgTimeMillis * @return */ fun getMsgFormatTime(msgTimeMillis: Long): String? { val nowTime = Date() val msgTime = Date(msgTimeMillis) val days = differentDays(msgTime, nowTime) // 早上、下午、晚上 1:40 val hourOfDay = DateUtils.getHour(msgTime) val whens: String = when { hourOfDay >= 18 -> { //18-24 "晚上" } hourOfDay >= 13 -> { //13-18 "下午" } hourOfDay >= 11 -> { //11-13 "中午" } hourOfDay >= 5 -> { //5-11 "早上" } else -> { //0-5 "凌晨" } } return if (days < 1) { whens + " " + DateUtils.format(msgTime, "HH:mm") } else { // 昨天 // return DateUtils.format(new Date(msgTimeMillis), "yyyy年MM月dd日 ") + when + DateUtils.format(new Date(msgTimeMillis), " HH:mm"); DateUtils.format(Date(msgTimeMillis), "yyyy年MM月dd日 ") } } /** * date2比date1多的天数 * @param date1 * @param date2 * @return */ private fun differentDays(msgTime: Date, nowTime: Date): Int { val cal1 = Calendar.getInstance() cal1.time = msgTimeval cal2 = Calendar.getInstance() cal2.time = nowTimeval day1 = cal1[Calendar.DAY_OF_YEAR] val day2 = cal2[Calendar.DAY_OF_YEAR] val year1 = cal1[Calendar.YEAR] val year2 = cal2[Calendar.YEAR] return if (year1 != year2) //同一年 { var timeDistance = 0 for (i in year1 until year2) { timeDistance += if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) //闰年 { 366 } else //不是闰年 { 365 } } timeDistance + (day2 - day1) } else //不同年 { day2 - day1 } } /** * 格式化秒数 * des:d 长度不够2位的时前面补0 */ fun formatSeconds(seconds: Long): String? { return when { seconds <= 0 -> { "00:00" } seconds < 60 -> { String.format(Locale.getDefault(), "00:d", seconds % 60) } seconds < 3600 -> { String.format(Locale.getDefault(), "d:d", seconds / 60, seconds % 60) } else -> { String.format( Locale.getDefault(), "d:d:d", seconds / 3600, seconds % 3600 / 60, seconds % 60 ) } } } fun formatSecond(seconds: Long): String? { return when { seconds <= 0 -> { "0分" } seconds < 60 -> { String.format(Locale.getDefault(), "d秒", seconds % 60) } seconds < 3600 -> { String.format(Locale.getDefault(), "d分d秒", seconds / 60, seconds % 60) } else -> { String.format( Locale.getDefault(), "d时d分", seconds / 3600, seconds % 3600 / 60, ) } } } /** * 格式化日期 eg 天 时:分:秒 00:00:00 * @param dayUnit 单位 默认不写 */ fun formatSecondByMill(millTime: Long, dayUnit: String = "天"): String? { //小于一天、单位毫秒 return if (millTime <= 86400 * 1000) { formatSeconds(millTime / 1000) } else { val oneDayMill = 86400 * 1000 val day = millTime / oneDayMill val lastOneDayMills = millTime - day * oneDayMill "$day$dayUnit ${formatSeconds(lastOneDayMills / 1000)}" } } }
以上是"android中Chronometer控件怎么用"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
倒计时
格式
单位
日期
控件
内容
时间
篇文章
闰年
监听
不同
不够
业务
价值
兴趣
写法
天数
官方
小伙
小伙伴
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全信息方面的合作
大二网络安全 课题
未来之役服务器换了段位咋办
青春期网络安全班会范文
软件开发管理网站
ctf网络安全应用
网络安全应急处理措施
rsc数据库无法下载
网吧安装数据库能安装么
许昌网络安全周
国家层面网络安全
软件开发应该注意哪些问题
安畅网络安全绘画
linux服务器登录没反应
江苏正规服务器价格咨询
peloton数据库
菌群移植数据库
宝可梦剑盾服务器是国外吗
学软件开发可以进游戏公司吗
万豪数据库被黑客入侵启示
时事热点网络安全
方舟服务器一直崩溃
网络安全防御现状
人大涉及的网络安全
服务器2016本地安全策略
软件开发一年收入多少钱
服务器资料删除了还能找回吗
河北定制网络技术开发口碑推荐
系统集成网络安全
c 多线程 数据库