java - 如何在 android studio 中创建计时器?
问题描述
我正在尝试在我的应用程序上放置一个从 0 开始的计时器,从 0(秒)开始计数,从(1 ... 13 ... 59 ... 1:19 等)更改,然后结束暂停,或在游戏结束时停止。我希望能够显示此暂停时间,以显示用户完成播放所需的时间。
我已经尝试过计时器方法(?),但它不断使应用程序崩溃并且无法正常工作。目前我正在尝试使用线程 t = 新线程......但没有任何运气。
我的 1 次尝试
Thread t = new Thread(){@Override
public void run(){
try{
while(!isInterrupted()){
Thread.sleep(1000);
runOnUiThread(new Runnable() {
@Override
public void run() {
TextView textViewTime = findViewById(R.id.textTimer);
long time = System.currentTimeMillis();
textViewTime.setText(time);
}
});
}
} catch (InterruptedException e) {
}
}
};
t.start();
目前有“时间”下划线表示无法解析方法 setText(long) 我无耻地尝试创建这个计数器,重用来自不同项目的代码,但对于那个项目,我使用了 SimpleDateFormat 方法,所以它稍微容易一些。
解决方案
Android 提供 CountDownTimer API 来执行这些操作,请查看以下示例,
long maxCounter = 30000;
long diff = 1000;
new CountDownTimer(maxCounter , diff ) {
public void onTick(long millisUntilFinished) {
long diff = maxCounter - millisUntilFinished;
mTextField.setText("seconds completed: " +diff / 1000);
//here you can have your logic to set text to edittext
}
public void onFinish() {
mTextField.setText("done!");
}
}.start();
编辑:
我已更新我的答案以用作向上计数器。
推荐阅读
- c# - 在控制台应用程序中创建 ASP.NET 用户
- java - 如何知道片段视图何时准备就绪
- php - Laravel 寄存器控制器,添加另一个创建
- java - RecyclerView 在滚动时弄乱了子视图
- python - Matplotlib 中多个散点图的彩色标记日期
- c++ - 当构造函数需要模板化参数时,如何从模板化类继承?
- python - Pandas DataFrame 解析整数
- sql - 是否可以使用 SQL 以实际日期顺序订购“月年”或“年月”
- performance - 提高导入 2 个 CSV 文件、比较、分组和将结果输出到日志的性能
- java - 如何将可变对象编排为跨对象不可变