效果图:

录屏.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实现)相关推荐

  1. JS实现自动倒计时30秒后按钮才可用

    JS实现自动倒计时30秒后按钮才可用 helloweba.com 作者:月光光 时间:2015年08月28日 12:22 标签: javascript  倒计时 WEB开发中经常会用到倒计时来限制用户 ...

  2. android 播放mp3 倒计时,Android实战 - 音心播放器 (MusicActivity - 倒计时 ,进度条实现)...

    1.背景 还是音乐播放界面,实现倒计时和进度条功能,基本实现过程: 当打开MusicActivity 的时候,MusicService会发送广播给MusicActivity ,后开始当前播放的时间进度 ...

  3. html倒计时10s,js 倒计时10s

    允许点击 var wait = 10; function time(o){ if(wait==0){ o.innerHTML = "允许点击"; o.removeAttribute ...

  4. Android项目开发实战—倒计时[Handler,Timer,TimerTask,Message]

    Android实现倒计时 先上一个本人实际操作中的界面: 源代码: (activity_main.xml和MainActivity.java) activity_main.xml: <Linea ...

  5. Flutter 快速上手定时器/倒计时及实战讲解

    本文微信公众号「AndroidTraveler」首发. 今天给大家讲讲 Flutter 里面定时器/倒计时的实现. 一般有两种场景: 我只需要你在指定时间结束后回调告诉我.回调只需要一次. 我需要你在 ...

  6. 倒计时 总结 Timer Handler CountDownTimer RxJava MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  7. vant toast loading 倒计时_日期倒计时软件哪个好 苹果日期倒计时软件推荐

    日期倒计时软件哪个好,相信大家也是经常会查看日期,来保证一些重要的事情能够按时进行,那么哪一款日期倒计时软件比较好用,能够提醒用户们日期将至呢.这里就为大家推荐几款. 日期倒计时软件哪个好 1.Day ...

  8. matlab倒计时程序,matlab倒计时启动录音

    本来毕设要用,后来没有用了 function [y,fs2,noisy] = lrcrecorderV2(secs,fs,nbits,channel) %lrcrecorder 根据采样频率fs和通道 ...

  9. java js倒计时_Java实现倒计时的方法详解

    这篇文章主要介绍了Java编程倒计时实现的三个示例,三种实现方法,具有一定参考价值,需要的朋友可以了解下. 实现Java编程中倒计时的方法有许多,下面我们通过三个示例来简单了解下它的实现过程. 1.简 ...

最新文章

  1. 百例1-10(一到三章)总结
  2. python3.8安装pip-MAC本安装python3.8后,pip3命令无法更新问题
  3. 织梦网站被黑客生成html,dedecms网站被挂马怎么处理
  4. 主机与虚拟机桥接出现ping不通解决方案
  5. React虚拟DOM的理解
  6. Android 使用JSON格式与服务器交互 中文乱码问题解决
  7. gps导航计算机毕业设计开题报告,GPS导航计算机毕业设计开题报告.doc
  8. php中array_merge()与$arr1+$arr2两个数组直接相加的区别
  9. 【算法设计与分析】专栏目录
  10. php huoqv 多选,镊噍虫刻蘖舌#joquycg
  11. delphi读音_用Delphi 6编程实现自动标注汉语拼音_Delphi
  12. PageHelper.startPage()使用问题:,以及利用PageInfo和Page手动分页
  13. Ticket验证异常org.jasig.cas.client.validation.TicketValidationException:
  14. JavaEE - 正则表达式、日期时间类、Math、Random、System、Runtime、大数值运算类
  15. django.db.utils.DataError: (1366, “Incorrect string value: ‘\\xE5\\x85\\xAD\\xE5\\x8D\\x83‘ for colu
  16. ubuntu20.04安装ROS及常见问题
  17. 正余弦函数的matlab仿真,实现正余弦信号的算法比较
  18. 【LeetCode】345. Reverse Vowels of a String 解题报告
  19. 软件工程导论——总体设计
  20. M102: MongoDB for DBAs chapter 3 performance学习记录

热门文章

  1. testdisk-强大的磁盘恢复工具
  2. 形式语言与自动机 第5章 上下文无关文法与下推自动机
  3. 5800计算器公路三维全能程序
  4. MySQL如何实现双字段拼接成一个字段
  5. python选取元音开头的单词_Python中的Regex,用于查找遵循以下模式的单词:元音、辅音、元音、辅音...
  6. 分子生成中常见分子描述符介绍及代码实现
  7. ChatGPT之父Sam Altman:成功的13个关键要素
  8. CF Technocup 2020 - Elimination Round 3
  9. Random walk算法及其各种延伸、应用笔记
  10. 网易云更好的音质【音乐】