我想在我的应用程序中做一个选项,如果你点击一个按钮,计数器就会启动,它会计数(就像0++一样),并显示数字,直到用户停止它,到目前为止,我有这个无效的代码
if (v == btn3) {
counter = 0;
scoreText.setBackgroundColor(Color.RED);
new Thread(new Runnable() {
public void run() {
while (counter < 1000 ) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
counter++;
}
}
}).start();
scoreText.setText(Integer.toString(counter));
}目前,当我按下按钮时,文本字段仅变为红色并设置为0,但我无法将其计算在内
发布于 2016-09-06 00:33:59
在我看来,setText方法是外部循环。它可以在循环结束后更新文本视图。将其移动到循环中的某个位置。
发布于 2016-09-06 00:34:21
有一个名为CountDownTimer的类,它提供了一些有用的功能。特别是,它提供了一个onTick()方法,您可以使用该方法以所需的时间间隔更新文本字段。
您需要创建一个计时器来无限期计数,这可以通过在onFinish()方法中重新启动CountDownTimer来实现,就像this timer中那样。但是,如果您设置CountDownTimer的时间足够长,您可能永远不需要重新启动它。
就像这样..。
new CountDownTimer(<REALLY_BIG_NUMBER>, 500) {
int counter = 0;
public void onTick(long millisUntilFinished) {
scoreText.setText(counter++);
}
public void onFinish() {
start();
}
}.start();发布于 2016-09-06 01:23:18
这应该可以根据你的需要工作。
if (v == btn3) {
counter = 0;
scoreText.setBackgroundColor(Color.RED);
new Thread(new Runnable() {
public void run() {
while (counter < 1000 ) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
runOnUiThread(new Runnable() {
@Override
public void run() {
scoreText.setText(Integer.toString(counter));
}
});
counter++;
}
}
}).start();
}https://stackoverflow.com/questions/39334583
复制相似问题