android中Chronometer控件怎么用
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要介绍android中Chronometer控件怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、序言Chronometer 是android 官方提供的计时器
千家信息网最后更新 2025年11月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安全错误
数据库的锁怎样保障安全
网络安全结语小学生
公安部里负责网络技术安全的
it和软件开发哪个好
深度os应用软件开发开台
服务器稻壳
网络技术第一单元测试
硬盘录像机服务器
急救中心网络安全培训计划
《网络安全法(草案)》
监控用服务器哪个质量好
珠海视频会议服务器报价
潍坊软件开发公司大一点的
末日生存哪个服务器最好
学校网络安全教育 通讯
软件开发技术指标有后门吗
SD视频软件开发
重庆云阳水果软件开发
金融科技和互联网金融区别
电脑打印服务器没有开启
数字地球软件开发技术
树莓派 云服务器
数据库如何进行数据加密
数据库中字段是空格算null吗
迅雷代理服务器ip
首汽约车软件开发
苏州华硕研发中心软件开发
数据库升级后再联机
发电企业网络安全管理制度
vb.net 数据库连接
服务器该怎么装系统