我想在事件之间使用计时器,例如:用户必须在点击按钮之间等待30秒,我该怎么做?!
Button b=(Button)findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
答案 0 :(得分:2)
你的意思是按钮只能每30秒点击一次?在这种情况下,我会做这样的事情:
public void onClick(View v) {
long time = System.System.currentTimeMillis();
if(time >= lastClickTime + (30 * 1000) || lastClickTime == 0){
lastClickTime = time;
...
}
}
答案 1 :(得分:1)
您可以使用单独的Thread
和postDelayed
This SO answer显示了如何执行此操作以及其他几个选项
您需要停用Button
中的onClick()
,然后在run()
功能
CountDownTimer将是另一种方式。您只需重新启用Button
onFinish()
即可
您可以查看这些内容并查看哪种内容最适合您的特定情况
这些是您可以实现此目标的一些方法。但是,如果您在此告诉我们您的最终游戏,我们可能会帮助您找到更好的方法。您不希望用户在30秒内无法执行任何操作
答案 2 :(得分:0)
您可以使用Handler的postDelayed方法,如下所示:
Button b; // instance variable
// now in onCreate
b = (Button)findViewById(R.id.button1);
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
OuterClass.this.b.setEnabled(true);
}
}, 30000); // 30 seconds = 30000 ms
b.setEnabled(false);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// do whatever you have to do
}
});