【问题标题】:How do I start chronometer with a specific starting time?如何以特定的开始时间启动计时器?
【发布时间】:2016-06-30 21:29:41
【问题描述】:

假设我有这个变量:

long myMillis = 20000;

这意味着我希望我的 Chronometer 正好在 20 秒 (00:20) 开始。

我试过这样做:

chronometer.setBase(myMillis);

但它不起作用。它不是从 20 秒开始的。它从一些没有意义的奇怪时间开始。

【问题讨论】:

标签: android chronometer


【解决方案1】:

一般来说,计时器的工作原理是这样的(如果您想设置 Base 到特定的 nr):

mChronometer.setBase(SystemClock.elapsedRealtime() - (nr_of_min * 60000 + nr_of_sec * 1000)))

就这样吧:

 mChronometer.setBase(SystemClock.elapsedRealtime() - (2* 60000 + 0 * 1000)))

【讨论】:

【解决方案2】:

它晚了,但可能会帮助别人。 我在第一个片段中使用了以下代码

chronometerTimer.setBase(SystemClock.elapsedRealtime());
chronometerTimer.start();

然后在某些条件下移动到下一个片段,其中计时器应该在前一个计时器结束的同时开始,我使用此代码得到经过的时间。

long elapsedMillis = SystemClock.elapsedRealtime() - chronometerTimer.getBase();

我在下一个片段中发送 elapsedMilis 并使用以下代码

chronometerTimer.setBase(SystemClock.elapsedRealtime() - elapsedTime);
chronometerTimer.start();

效果很好。

【讨论】:

    【解决方案3】:

    对于 Kotlin,

    要启动Chronometer,启动时间为20秒,您可以使用

    val timeInMilSeconds = 20000
    chronometer.base = SystemClock.elapsedRealtime() - timeInMilSeconds
    chronometer.start()
    

    这将启动 Chronometer,启动时间为 20 秒,即00:00:20

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-02
      • 2014-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多