当前位置: 首页 > 知识库问答 >
问题:

如何在kotlin中生成10ms计时器

何哲
2023-03-14

我想在Kotlin中为我的魔方解算器应用程序生成10毫秒,我该怎么做?我有一个自定义视图,它是一个计时器,我想每10毫秒更新一次计时器

共有2个答案

闻人河
2023-03-14

您需要将outputText替换为要显示它的内容

倒计时的代码:

val ttlTime: Long = // input the amount of ms here
        object : CountDownTimer(ttlTime, 10) {
            override fun onTick(millisUntilFinished: Long) {
                outputText.text = "time remaining: " + millisUntilFinished / 10
            }

            override fun onFinish() {
                // code for what needs to happen after the countdown is finished
            }
        }.start()

如果您想正确显示它:

val ttlTime: Long = // input the amount of ms here
object : CountDownTimer(ttlTime, 10) {
    override fun onTick(millisUntilFinished: Long) {
        val microSecond = millisUntilFinished.toString().takeLast(3)
        val second = (millisUntilFinished / 1000) % 60
        val minute = millisUntilFinished / (1000 * 60) % 60
        var finalTime = microSecond

        if (second > 0) {
           finalTime = "$second $finalTime"
           if (minute > 0) {
               finalTime = "$minute $finalTime"
           }
        } else if (minute > 0) {
           finalTime = "$minute 0 $finalTime"
        }
        outputText.text = "time remaining: $finalTime"
    }

    override fun onFinish() {
       // code for what needs to happen after the countdown is finished
    }
}.start()

资料来源:https://developer.android.com/reference/kotlin/android/os/CountDownTimer
(这是用java编写的,但如果你在android studio中粘贴它,你可以将其转换为kotlin)

如果你想让计时器上升:

val startTiming = Calendar.getInstance()

Handler().post(object : Runnable {
    override fun run() {
        Handler().postDelayed(this, 10)
        updateTime(startTiming)
    }
})
fun updateTime(startTime: Calendar) {
    val currentTime = Calendar.getInstance()

    val diff = currentTime.timeInMillis - startTime.timeInMillis
    val microSecond = diff.toString().takeLast(3)
    val second = (diff / 1000) % 60
    val minute = diff / (1000 * 60) % 60
    var finalTime = microSecond

    if (second > 0) {
        finalTime = "$second $finalTime"
        if (minute > 0) {
            finalTime = "$minute $finalTime"
        }
    }
    else if (minute > 0) {
        finalTime = "$minute 0 $finalTime"
    }

    outputText.text = finalTime
}
郭恩
2023-03-14

您可以像这样使用java中的计时器内联函数或计时器类

  val timer = timer(period = 10) {
        //Do something here
    }

安排要定期执行的操作,从指定的延迟(以毫秒为单位)开始,并以上一个任务结束到下一个任务开始之间的周期毫秒为间隔。

当您完成或您的活动或片段被破坏时,请记住取消计时器

计时器。取消

 类似资料:
  • 我使用下面的maven pom。xml文件,无法生成querydsl文件。 我发现了一个问题:Kotlin Kapt注释处理器不能与maven一起工作 我想从kotlin实体类生成jpa querydsl文件。 网上有一个很好的例子,说明如何使用 https://github.com/JetBrains/kotlin-examples/blob/master/gradle/kotlin-query

  • 作为开发新API工作的一部分,我正在学习使用静态编程语言。最初我希望静态编程语言API在Java(Android)项目中使用,但从长远来看,我希望完全采用静态编程语言。 作为改进长期运行流程实现的一部分,我想使用协程。具体来说,来自包的通道生产者。 例如: 在Java中使用它的最佳方式是什么?我可以向Kotlin和/或Java添加临时“helper”函数。

  • 问题内容: 我想在经过一定时间或生成了x数量的小怪后生成一个“ boss” Sprite,我如何在屏幕上显示计时器。 图片 当前代码 老板班 问题答案: 有几种方法可以在pygame中实现计时器。您可以使用返回的时间来增加或减少计时器变量,使用来计算时间差,或者与一起使用自定义事件。 示例1- 增量时间: 如果您想精确地生成1个Sprite,则可以添加另一个变量,例如,并仅在Boss没有生成时更改

  • 我目前正在尝试用Kotlin为Android编写一个注释处理器。项目结构如下: 项目/构建.gradle 注释/build.gradle 样品/build.gradle Annotation.kt AnnotationProcessor.kt 使用kapt,构建在示例javaPreCompileDebug上中断,并显示以下消息: 当我用注释处理器替换 kapt 时,构建在示例:转换类上中断了以下消

  • 问题内容: 我想生成一个随机时间戳,并向其添加一个随机增量,以生成第二个时间戳。那可能吗? 如果我传递随机的long值来创建时间戳,并且我想随机生成该long值,那么生成该值以给出2012年的时间戳的约束是什么? 问题答案: 您需要将随机数缩放到特定年份的范围,然后将年份的开始添加为偏移量。一年中的毫秒数从一年到另一年(le年有额外的一天,某些年份有leap分钟,依此类推),因此您可以按以下步骤确

  • 我正在开发一个应用程序,它使用一个when语句 我如何使它更短?