【问题标题】:How can I create a simple count down timer in HH:MM:SS and show them in a Lazy Column如何在 HH:MM:SS 中创建一个简单的倒数计时器并在惰性列中显示它们
【发布时间】:2022-11-10 14:30:42
【问题描述】:

我正在学习jetpack compose,但我似乎无法理解如何创建一个简单的countDownTimer。我想要做的是创建一个 countDownTimer ,它接受来自用户的三个输入(小时、分钟和秒),然后当我单击开始按钮时,我想在 LazyColomun 中显示计时器。您认为可能有助于我理解这对我来说是可以接受的任何链接。

【问题讨论】:

    标签: android kotlin android-jetpack-compose android-jetpack countdowntimer


    【解决方案1】:

    一般理解

    计时器的最基本形式,以秒或毫秒为单位计数。即使您向用户询问小时、分钟和秒,您也应该将其全部转换为秒/毫秒并在此基础上启动计时器。

    例如

    • 小时 = 3
    • 分钟 = 15
    • 秒 = 20

    全部转换为秒

    • 小时 = 3(hr) = 10800 秒
    • 分钟 = 15(min) = 15 * 60 = 900 秒
    • 秒 = 20(秒) = 20 秒

    所以你的计时器应该从 hr + min + sec = 11720 秒开始倒计时

    您只需将秒/毫秒转换为您想要显示经过时间的格式(您的刷新率)

    外部文章

    下面的文章应该做你想做的。

    Let’s Make a Countdown Timer app using Android Compose

    【讨论】:

      【解决方案2】:

      您可以使用这些代码来创建倒数计时器:

      输入:日期

      val time = (timerDate.time).minus(Calendar.getInstance().timeInMillis)
      var timer by remember { mutableStateOf(time) }
        LaunchedEffect(key1 = timer) {
            if (timer > 0) {
                delay(1000L)
                timer -= 1000L
             }
           }
        val secMilSec: Long = 1000
        val minMilSec = 60 * secMilSec
        val hourMilSec = 60 * minMilSec
        val dayMilSec = 24 * hourMilSec
        val hours = (time % dayMilSec / hourMilSec).toInt()
        val minutes = (time % dayMilSec % hourMilSec / minMilSec).toInt()
        val seconds = (time % dayMilSec % hourMilSec % minMilSec / secMilSec).toInt()
      
      Text(text = String.format(" %02d:%02d:%02d", hours, minutes, seconds))
      

      【讨论】:

        猜你喜欢
        • 2019-06-03
        • 1970-01-01
        • 2012-09-07
        • 1970-01-01
        • 2020-12-25
        • 1970-01-01
        • 2019-02-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多