我正在做我的项目,并想为我的Android数独游戏添加一个计时器。我需要知道源代码以及如何将源代码放入我的Sudoku游戏中。请帮我急需:(
答案 0 :(得分:6)
我可能为时已晚,但到底是怎么回事。这是一个如何创建CountUpTimer
的小例子。此代码的灵感来自CountDownTimer。
答案 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" />
答案 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)
}
}
}