圆形CountDown计时器? (毫秒精度)?

时间:2015-11-04 22:33:04

标签: java android math timer clock

我在我的代码中使用了countDownTimer。问题是,倒数计时器不准确。 onTick方法并不总是每秒执行一次,可能会减少几毫秒。当尝试基于millisUntilFinished执行某个任务时,这成为一个问题。我正在尝试记录20秒计时器的十秒钟时间:

以下是相关代码:

    if (millisUntilFinished == 10000) { //TEN SECONDS

                Log.v(TAG, "TEN SECONDS LEFT");
            }

这里出现了问题,因为countDownTimer甚至可能 millisUntilFinished == 10000,它可能等于1001,所以我的代码不会执行。反正以某种方式围绕millisUntilFinished(这是一个很长的)到最接近的数千?我尝试过以下方法:

 millisUntilFinishedRounded = MathUtils.round((double) millisUntilFinished, -3); // nearest thousand, 2000.0

但我无法解决' MathUtils'

我迷路了。我真的很感激任何反馈(积极或消极)!非常感谢你的帮助。

{Rich}

1 个答案:

答案 0 :(得分:1)

有几种选择:

  1. 您可以通过添加N / 2将正整数舍入到最接近的N,除以N并再次乘以N:

    ((500 + millisUntilFinished)/ 1000)* 1000

  2. 您可以使用一个条件来检查该值是否在将舍入为10000的范围内:

    millisUntilFinished> = 9500&& millisUntilFinished< 10500

  3. 您可以第一次检查boolean printedMessage = false; while (true) { millisUntilFinished = ... if (!printedMessage && millisUntilFinished < 10000) { System.out.println("Your message"); printedMessage = true; } } 是否低于10000:

    (-1:nx+2,-1:ny+2,-1:nz+2)