android中Chronometer控件怎么用
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍android中Chronometer控件怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、序言Chronometer 是android 官方提供的计时器
千家信息网最后更新 2026年11月01日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安全错误
数据库的锁怎样保障安全
互联网科技企业
科技和互联网公司
科技类互联网
关于新基建和互联网科技
中资互联网科技
奇酷互联网络科技公司
兼蜜互联网科技
湖南洣水互联网科技有限公司扣款
互联网科技中介
互联网时代科技改变生活
互联网校园科技培训
下一代互联网重大应用科技园
工业互联网科技创业
福建互联网展示科技馆设计
互联网科技机房
上海旺乐尼互联网科技有限公司
互联网企业和网络科技有限公司
恒生科技互联网指数十大成分股
互联网科技快速发展优美句子
科技发展第三阶段互联网时代
互联网是第几次科技革命的成果
善班互联网科技
嘟嘟瓜互联网科技
致骋互联网科技
科技类的互联网平台
恒生互联网科技指数跳水
山东子淼互联网科技有限公司
世界互联网科技成果奖
湖北辰鑫科技互联网
银川新华互联网科技学校招聘