coroutine倒计时 kotlin_Kotlin实战-倒计时按钮(Rxjava实现)
效果图:
录屏.gif
主要知识点:Rxjava的interval操作符,AndroidSchedulers.mainThread()线程
Kotlin的主函数默认值
import android.content.Context
import android.support.v7.appcompat.R
import android.support.v7.widget.AppCompatButton
import android.util.AttributeSet
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import java.util.concurrent.TimeUnit
class CountdownButton(mContext: Context, mAttributes: AttributeSet? = null, mDefStyleAttr: Int = R.attr.buttonStyle) : AppCompatButton(mContext, mAttributes, mDefStyleAttr) {
constructor(context: Context, attributes: AttributeSet) : this(mContext = context, mAttributes = attributes)
constructor(context: Context) : this(mContext = context)
var count: Int = 59
lateinit var subscribe: Disposable//保存订阅者
fun start() {
isClickable = false//禁用点击,防止重复操作
text = "${count + 1}s"
subscribe = Observable.interval(1, TimeUnit.SECONDS)//按时间间隔发送整数的Observable
.observeOn(AndroidSchedulers.mainThread())//切换到主线程修改UI
.subscribe {
val show = count - it
if (show < 0.toLong()) {//当倒计时小于0,计时结束
stop()
return@subscribe//使用标记跳出方法
}
text = "${show}s"
}
}
/**
* 结束计时,重新开始
*/
fun stop() {
subscribe.dispose()//取消订阅
text = "重新获取"
isClickable = true//重新开启点击事件
return
}
}
coroutine倒计时 kotlin_Kotlin实战-倒计时按钮(Rxjava实现)相关推荐
- JS实现自动倒计时30秒后按钮才可用
JS实现自动倒计时30秒后按钮才可用 helloweba.com 作者:月光光 时间:2015年08月28日 12:22 标签: javascript 倒计时 WEB开发中经常会用到倒计时来限制用户 ...
- android 播放mp3 倒计时,Android实战 - 音心播放器 (MusicActivity - 倒计时 ,进度条实现)...
1.背景 还是音乐播放界面,实现倒计时和进度条功能,基本实现过程: 当打开MusicActivity 的时候,MusicService会发送广播给MusicActivity ,后开始当前播放的时间进度 ...
- html倒计时10s,js 倒计时10s
允许点击 var wait = 10; function time(o){ if(wait==0){ o.innerHTML = "允许点击"; o.removeAttribute ...
- Android项目开发实战—倒计时[Handler,Timer,TimerTask,Message]
Android实现倒计时 先上一个本人实际操作中的界面: 源代码: (activity_main.xml和MainActivity.java) activity_main.xml: <Linea ...
- Flutter 快速上手定时器/倒计时及实战讲解
本文微信公众号「AndroidTraveler」首发. 今天给大家讲讲 Flutter 里面定时器/倒计时的实现. 一般有两种场景: 我只需要你在指定时间结束后回调告诉我.回调只需要一次. 我需要你在 ...
- 倒计时 总结 Timer Handler CountDownTimer RxJava MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- vant toast loading 倒计时_日期倒计时软件哪个好 苹果日期倒计时软件推荐
日期倒计时软件哪个好,相信大家也是经常会查看日期,来保证一些重要的事情能够按时进行,那么哪一款日期倒计时软件比较好用,能够提醒用户们日期将至呢.这里就为大家推荐几款. 日期倒计时软件哪个好 1.Day ...
- matlab倒计时程序,matlab倒计时启动录音
本来毕设要用,后来没有用了 function [y,fs2,noisy] = lrcrecorderV2(secs,fs,nbits,channel) %lrcrecorder 根据采样频率fs和通道 ...
- java js倒计时_Java实现倒计时的方法详解
这篇文章主要介绍了Java编程倒计时实现的三个示例,三种实现方法,具有一定参考价值,需要的朋友可以了解下. 实现Java编程中倒计时的方法有许多,下面我们通过三个示例来简单了解下它的实现过程. 1.简 ...
最新文章
- 百例1-10(一到三章)总结
- python3.8安装pip-MAC本安装python3.8后,pip3命令无法更新问题
- 织梦网站被黑客生成html,dedecms网站被挂马怎么处理
- 主机与虚拟机桥接出现ping不通解决方案
- React虚拟DOM的理解
- Android 使用JSON格式与服务器交互 中文乱码问题解决
- gps导航计算机毕业设计开题报告,GPS导航计算机毕业设计开题报告.doc
- php中array_merge()与$arr1+$arr2两个数组直接相加的区别
- 【算法设计与分析】专栏目录
- php huoqv 多选,镊噍虫刻蘖舌#joquycg
- delphi读音_用Delphi 6编程实现自动标注汉语拼音_Delphi
- PageHelper.startPage()使用问题:,以及利用PageInfo和Page手动分页
- Ticket验证异常org.jasig.cas.client.validation.TicketValidationException:
- JavaEE - 正则表达式、日期时间类、Math、Random、System、Runtime、大数值运算类
- django.db.utils.DataError: (1366, “Incorrect string value: ‘\\xE5\\x85\\xAD\\xE5\\x8D\\x83‘ for colu
- ubuntu20.04安装ROS及常见问题
- 正余弦函数的matlab仿真,实现正余弦信号的算法比较
- 【LeetCode】345. Reverse Vowels of a String 解题报告
- 软件工程导论——总体设计
- M102: MongoDB for DBAs chapter 3 performance学习记录