Android使用CountDownTimer实现倒计时示例(Kotlin)

CountDownTimer是一个抽象类,它的构造函数为

CountDownTimer(long millisInFuture, long countDownInterval)

millisInFuture:倒计时的总时间,从调用start()方法开始。毫秒数
countDownInterval:倒计时的时间间隔。毫秒数。

CountDownTimer主要有四个方法:

  1. synchronized final void cancel() : 用于取消倒计时
  2. abstract void onFinish() : 倒计时结束后悔调用此方法
  3. abstract void onTick(long millisUntilFinished) : 每一个时间间隔调用一次onTick。
  4. synchronized final CountDownTimer start() :启动倒计时

onFinish()和onTick()为抽象方法,我们可以在里面实现业务代码。

示例代码(kotlin)

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val startButton: Button = findViewById(R.id.startButton)
        val stopButton: Button = findViewById(R.id.startButton)
        val tv: TextView = findViewById(R.id.textView)
        val cdt = MyCountDownTimer(10000,1000, tv)
        startButton.setOnClickListener {
            cdt.start()
        }
        stopButton.setOnClickListener{
            cdt.cancel()
        }
    }

    private inner class MyCountDownTimer(millisInFuture: Long, countDownInterval: Long, internal var tv: TextView) : CountDownTimer(millisInFuture, countDownInterval) {
        override fun onFinish() {
            tv.setText("结束")
        }
        override fun onTick(millisUntilFinished: Long) {
            tv.setText("还剩${millisUntilFinished/1000}秒")
        }
    }
}

版权声明:著作权归作者所有。

相关推荐

如何正确实现Android启动屏画面(避免白屏)

Android启动屏不正确的实现可能会导致用户长时间等待,或者可能会出现黑白屏。这里简单演示如何正确实现Android启动屏。演示分为以下几个步骤:在res/drawable文件夹中创建splash_background.xml文件。编辑res/values/styles.xml创建java/.../SplashActivity编辑manifests/AndroidManifest.xml1、在r

使用redux-actions重构redux实现的计数器

在很多Redux入门的文章里经常会用到计数器的示例,这里使用redux-action对redux实现的计数器做下重构,以便了解下redux-action的用法。Redux实现的计数器创建用于增减的两个Action// ACTION const COUNTER_INCREMENT = 'COUNTER_INCREMENT'; const COUNTE

Spring Boot使用springProfile实现Logback多环境的通用配置

在一个基于Spring boot开发的项目里,常常需要有多套环境的配置:开发,测试以及产品。这里给出一个logback的通用配置。在src/main/resources目录下创建配置文件logback-spring.xml,多环境的通用配置内容如下:<?xml version="1.0" encoding="UTF-8"?

Kotlin使用kotlin-kapt插件支持Android的注解处理

在Kotlin可以使用kapt插件来支持Android的注解处理。在Gradle配置kotlin-kapt插件如下:在app的build.gradle添加插件apply plugin: 'kotlin-kapt' 使用kapt添加注解依赖java使用annotationProcessor 添加的依赖改为使用kapt。例如添加dagger依赖dependencies {

Android使用Kotlin新特性Parcelize序列化对象

Android对对象序列化主要有两种方式:Serializable和Parcelable。Serializable实际是使用Java的放射机制对对象做序列化和反序列化,其性能远低于使用Parcelable。但是使用Java写的Parcelable有点繁琐,需要我们实现Parcelable接口,手写很多模板代码。Java版Parcelable示例public class User

Kotlin实现Java的三元条件运算

在Kotlin没有类似Java的三元条件运算:a ? b : c 在Kotlin有几种等效的方法:ifval r =if (a) b else c whenval r = when(a) {     true