如何在Android上添加Countup计时器?

时间:2012-02-14 12:27:26

标签: android

我正在做我的项目,并想为我的Android数独游戏添加一个计时器。我需要知道源代码以及如何将源代码放入我的Sudoku游戏中。请帮我急需:(

8 个答案:

答案 0 :(得分:6)

我可能为时已晚,但到底是怎么回事。这是一个如何创建CountUpTimer的小例子。此代码的灵感来自CountDownTimer

https://gist.github.com/MiguelLavigne/8809180c5b8fe2fc7403

答案 1 :(得分:4)

如果你在Android上并且需要一个每秒滴答的计时器,你可以创建以下CountDownTimer的子类。它可以很容易地修改,以便以你想要的任何间隔打勾。

import android.os.CountDownTimer;

public abstract class CountUpTimer extends CountDownTimer {
        private static final long INTERVAL_MS = 1000;
        private final long duration;

    protected CountUpTimer(long durationMs) {
        super(durationMs, INTERVAL_MS);
        this.duration = durationMs;
    }

    public abstract void onTick(int second);

    @Override
    public void onTick(long msUntilFinished) {
        int second = (int) ((duration - msUntilFinished) / 1000);
        onTick(second);
    }

    @Override
    public void onFinish() {
        onTick(duration / 1000);
    }
}

然后像

一样使用它
CountUpTimer timer = new CountUpTimer(30000) {
    public void onTick(int second) {
        timerView.setText(String.valueOf(second));
    }
};

timer.start();

答案 2 :(得分:3)

Android的CountDownTimer应该符合您的需求。该文档还提供了一个可以帮助您的小例子。

编辑:为了计算,我认为Android的Chronometer将是最简单的选择。

EDIT2:我认为你应该开始here

答案 3 :(得分:3)

布局XML:

<=

代码:

<Chronometer
android:id="@+id/simpleChronometer"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

enter image description here

答案 4 :(得分:1)

事实证明,天文台在内部使用了一个名为system.elapsedRealTime的东西,这是从手机首次启动开始的时间。

在实际情况下,如果先前已保存了trime,则关闭电子表的读数会出错。

答案 5 :(得分:0)

_countTimer = new CountDownTimer(40000, 1000) {
            public void onTick(long millisUntilFinished) {
                String _millis=String.valueOf(40-(millisUntilFinished/1000));
                CameraScreen._timerTxt.setText("0."+_millis);
            }
 _countTimer.start();

答案 6 :(得分:0)

为了完整起见,因为我必须这样做。这是Kotlin版本:

wb <- createWorkbook()
addWorksheet(wb, sheetName="data")
writeData(wb, sheet="data", x=data)
write.xlsx(wb, "combined.xlsx")

wb2 <- createWorkbook()
addWorksheet(wb2, sheetName="data")
writeData(wb2, sheet="data", x=data)
write.xlsx(wb2, "wb2.xlsx")

wb_comb <-loadWorkbook("combined.xlsx")

lapply(sheets(wb2), function(s) {
  dt <- read.xlsx("wb2.xlsx", sheet = s)
  addWorksheet(wb_comb , sheetName = s)
  writeData(wb_comb, s, dt)
})

write.xlsx(wb_comb, "combined.xlsx")

这是使用方法

import android.os.CountDownTimer

abstract class CountUpTimer(private val secondsInFuture: Int, countUpIntervalSeconds: Int) : CountDownTimer(secondsInFuture.toLong() * 1000, countUpIntervalSeconds.toLong() * 1000) {

    abstract fun onCount(count: Int)

    override fun onTick(msUntilFinished: Long) {
        onCount(((secondsInFuture.toLong() * 1000 - msUntilFinished) / 1000).toInt())
    }
}

答案 7 :(得分:0)

我花了几个小时为计数计时器找到 KISS 解决方案。 如果我们使用 View Class 来显示时间绝对是最简单的解决方案是使用 计时器类。

不幸的是,它在没有视图的情况下不起作用。 我希望在操作栏中显示时间,这就是为什么我需要带时间的字符串而没有视图。 这是我的想法:

我在 Android Studio 中使用 java.util.Timer 和 java.util.TimerTask 和 Kotlin。

  private fun stopwatch() {
    var num : Long = 0L
    val timer : Timer = Timer()
    val tt : TimerTask = object : TimerTask(){
        override fun run() {
            num+=1000L
            println(TimerUtil.timerDisplay(num))
        }
    }
    timer.schedule(tt, 0L, 1000L)
}

用于将字符串格式化为 MM:SS 格式的辅助函数:

class TimerUtil {
companion object {
    fun timerDisplay(time: Long): String {
        val minutes = TimeUnit.MILLISECONDS.toMinutes(time)
        val seconds = TimeUnit.MILLISECONDS.toSeconds(time) - TimeUnit
            .MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(time))

        return " %02d:%02d".format(minutes, seconds)
    }
}

}