我使用runnable()
在我的游戏上制作倒数计时器
我被设置为int cd=30;
这是运行它的方法
final Handler mHandler = new Handler();
final Runnable mUpdateTimeTasks = new Runnable() {
public void run() {
countdowntext.setText(String.valueOf(cd));
cd -=1;
if(cd < 10) {
countdowntext.setTextColor(Color.RED);
}
if(cd == 0) {
focus.stop();
}
};
// run this in a method.
mHandler.postDelayed(mUpdateTimeTasks, cd);
}
代码工作正常,但问题只是coundown计时器运行如此之快,我只是想知道如何使int cd = 1 = 1秒,所以cd = 30 = 30秒
谁能帮助我吗?答案 0 :(得分:2)
我只是想知道如何使int cd = 1 = 1秒,所以cd = 30 = 30 第二
然后你应该使用mHandler.postDelayed(mUpdateTimeTasks, 1000)
final Runnable mUpdateTimeTasks = new Runnable() {
public void run() {
countdowntext.setText(String.valueOf(cd));
cd -=1;
if(cd < 10) {
countdowntext.setTextColor(Color.RED);
}
if(cd == 0) {
focus.stop();
mHandler.removaCallbacks(null);
return;
}
mHandler.postDelayed(this, 1000)
};
这不会给出正好30秒但是真正接近它的东西
答案 1 :(得分:0)
在 mHandler.postDelayed(mUpdateTimeTasks,cd); cd是毫秒
您应该更改以下代码:
final Handler mHandler = new Handler();
final Runnable mUpdateTimeTasks = new Runnable(){
public void run() {
countdowntext.setText(String.valueOf(cd));
cd -=1;
if(cd < 10) {
countdowntext.setTextColor(Color.RED);
}
if(cd == 0) {
focus.stop();
}
};
// run this in a method.
mHandler.postDelayed(mUpdateTimeTasks, cd);
}
对此:
final Handler mHandler = new Handler();
final Runnable mUpdateTimeTasks = new Runnable() {
public void run() {
countdowntext.setText(String.valueOf(cd));
cd -=1;
if(cd < 10) {
countdowntext.setTextColor(Color.RED);
}
if(cd == 0) {
focus.stop();
mHandler.removaCallbacks(null);
return();
}
};
// run this in a method.
mHandler.postDelayed(mUpdateTimeTasks, 1000);
}
1000 表示在一秒钟后(1000/1000秒)检查 Runnable mUpdateTimeTasks 方法。