【发布时间】:2016-06-30 21:29:41
【问题描述】:
假设我有这个变量:
long myMillis = 20000;
这意味着我希望我的 Chronometer 正好在 20 秒 (00:20) 开始。
我试过这样做:
chronometer.setBase(myMillis);
但它不起作用。它不是从 20 秒开始的。它从一些没有意义的奇怪时间开始。
【问题讨论】:
标签: android chronometer
假设我有这个变量:
long myMillis = 20000;
这意味着我希望我的 Chronometer 正好在 20 秒 (00:20) 开始。
我试过这样做:
chronometer.setBase(myMillis);
但它不起作用。它不是从 20 秒开始的。它从一些没有意义的奇怪时间开始。
【问题讨论】:
标签: android chronometer
一般来说,计时器的工作原理是这样的(如果您想设置 Base 到特定的 nr):
mChronometer.setBase(SystemClock.elapsedRealtime() - (nr_of_min * 60000 + nr_of_sec * 1000)))
就这样吧:
mChronometer.setBase(SystemClock.elapsedRealtime() - (2* 60000 + 0 * 1000)))
【讨论】:
它晚了,但可能会帮助别人。 我在第一个片段中使用了以下代码
chronometerTimer.setBase(SystemClock.elapsedRealtime());
chronometerTimer.start();
然后在某些条件下移动到下一个片段,其中计时器应该在前一个计时器结束的同时开始,我使用此代码得到经过的时间。
long elapsedMillis = SystemClock.elapsedRealtime() - chronometerTimer.getBase();
我在下一个片段中发送 elapsedMilis 并使用以下代码
chronometerTimer.setBase(SystemClock.elapsedRealtime() - elapsedTime);
chronometerTimer.start();
效果很好。
【讨论】:
对于 Kotlin,
要启动Chronometer,启动时间为20秒,您可以使用
val timeInMilSeconds = 20000
chronometer.base = SystemClock.elapsedRealtime() - timeInMilSeconds
chronometer.start()
这将启动 Chronometer,启动时间为 20 秒,即00:00:20
【讨论】: