Android 自定义计时器
前端时间公司项目需要使用倒计时。我在网上搜了一阵子,发现网上大部分都是 启动一个子线程 ,然后TextView 显示。 这种方式引起的两个问题:
1. 子线程写在外面,导致代码有点乱。
2. 倒计时如果在adapter中,实现起来比较麻烦。
刚好我们的倒计时是在adapter中。最后,我通过自定义view,继承 TextView,使用 CountDownTimer 。 把倒计时放在view中。外部调用只需要传入总时长就好了。下面是代码部分(使用的是kotlin)
class MyCountDownTimer : TextView {private var countTime = 0Lprivate var countDownTimer: MyCountDownTimer? = nullprivate var mContext: Context? = contextconstructor (context: Context?) : this(context, null)constructor(context: Context?, attrs: AttributeSet?) : this(context, attrs, 0)constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {mContext = context}//设置数据fun setTime(time: Int) {if (time <= 0) {return}this.countTime = time * 1000Lif (countDownTimer != null) {stopTimer()}startTimer()}//计时器private inner class MyCountDownTimer(totleTime: Long, durTime: Long) : CountDownTimer(totleTime, durTime) {override fun onFinish() {stopTimer()}override fun onTick(millisUntilFinished: Long) {var timeStr = getTimeByLong(millisUntilFinished / 1000)Log.i("111", timeStr)text = timeStr}}// hh:mm:ssvar hour = 60 * 60var minute = 60fun getTimeByLong(time: Long): String {var timeStr = "00:00:00"if(time > 0){val h = time / hourval m = time % hour / minuteval s = time % minutetimeStr = String.format("%02d:%02d:%02d",h,m,s)}return timeStr}private fun startTimer() {countDownTimer = MyCountDownTimer(countTime, 1000)countDownTimer!!.start()}private fun stopTimer() {if (countDownTimer != null) {countDownTimer!!.cancel()countDownTimer = null}}override fun onDetachedFromWindow() {super.onDetachedFromWindow()stopTimer()}
}
考虑到很多软件的倒计时有背景色之类的,可以用 BackgroundColorSpan 将字符串进行处理后再展示。具体的根据实际需要进行修改
PS: 第一次写东西,不喜勿喷。欢迎交流
Android 自定义计时器相关推荐
- Android Wear计时器开发
记得在2013年12月的时候,有系列文章是介绍怎么开发一个智能手表的App,让用户可以在足球比赛中记录停表时间.随着Android Wear的问世,在可穿戴设备中开发一款这样的App确实是个很不错的想 ...
- 安卓自定义计时器控件
目录 前言 一.项目效果展示 二.自定义TextView 2.1 自定义属性 2.2 配置属性 三.实现计时器 3.1 技术选型 3.2 代码实现 四.具体使用 4.1 布局引用 4.2 API调用 ...
- android自定义秒表,Android自定义Chronometer实现短信验证码秒表倒计时功能
本文实例为大家分享了Chronometer实现倒计时功能,Android提供了实现按照秒计时的API,供大家参考,具体内容如下 一.自定义ChronometerView 继续自TextView 主要原 ...
- android 短信验证计时,Android自定义Chronometer实现短信验证码秒表倒计时功能
本文实例为大家分享了chronometer实现倒计时功能,android提供了实现按照秒计时的api,供大家参考,具体内容如下 一.自定义chronometerview 继续自textview 主要原 ...
- Android自定义ViewGroup基本步骤
1.自定义属性,获取自定义属性,可参考 Android自定义View基本步骤 2.onMeasure() 方法,for循环测量子View,根据子View的宽高来计算自己的宽 高 3.onDra ...
- Android自定义View —— TypedArray
在上一篇中Android 自定义View Canvas -- Bitmap写到了TypedArray 这个属性 下面也简单的说一下TypedArray的使用 TypedArray 的作用: 用于从该结 ...
- Android 自定义View —— Canvas
上一篇在android 自定义view Paint 里面 说了几种常见的Point 属性 绘制图形的时候下面总有一个canvas ,Canvas 是是画布 上面可以绘制点,线,正方形,圆,等等,需要和 ...
- android 自定义loading,Android自定义动画-StarLoadingView
今天来分享第二个自定义loading的动画,起了个名字叫 蹦跶的星星 ,还是老规矩先介绍,后上图. 实现效果在最后,GIF有点大,手机流量慎重. 介绍 首先声明做这个动画的初衷是为了学习和分享,所以从 ...
- android自定义view获取控件,android 自定义控件View在Activity中使用findByViewId得到结果为null...
转载:http://blog.csdn.net/xiabing082/article/details/48781489 1. 大家常常自定义view,,然后在xml 中添加该view 组件..如果在 ...
最新文章
- 客户端(C#)调用CXF搭建的webservice的出现一些问题记录
- 阿里云推荐码:8N6TBT
- constraint的一些用法总结
- net4.0 兼容2.0的方法
- 视图view的生命周期的一点见解
- Android 阅读器架构图,网上收集,留做存货
- Redis常见配置介绍
- CentOS 7 安装 Scrapy 记录
- [选择性翻译][HDP Ambari 2.2.2安装使用说明][1]
- C#弹出窗体、C#导出Excel、C#数据展示框、C#弹出框
- HTML5七夕情人节表白网页制作【生日快乐粒子烟花】HTML+CSS+JavaScript 生日祝福网页代码
- FIL带给IPFS的创新
- 原生js实现上拉加载
- ScriptManager和ClientScript的区别
- 小爱音箱显示服务器连接不上,小爱音箱为什么连不上网络
- s5pv210 i2c 时序
- vue3+h5实现手写签名
- 能够将图片转化为文字的简便操作软件有什么?
- f2fs mkfs 格式化过程系列 1
- 计算机word如何排序,蓝瘦!Word排序太难 小编教你这么办
热门文章
- win10 的计算机配置要求,详细教你windows10的配置要求
- 知乎:在卡内基梅隆大学 (Carnegie Mellon University) 就读是怎样一番体验?
- 大V科技谈 | VMware利用先进的自动化技术,简化混合办公模式
- python设置word背景色_Java 给Word不同页面设置不同背景
- VUE2使用的JSON编辑器
- FileZilla FTP服务器源代码分析
- 【第84期】对话智能风控
- 电磁场与仿真软件(20)
- 初级者与转行者,大数据如何学习最高效,简历该如何优化?
- css 延时几秒代码,CSS3 会聚展开文字动画实例及animation-delay属性规则