我想在事件之间使用计时器,例如:用户必须在点击按钮之间等待 30 秒,我该怎么做?!
Button b=(Button)findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
你的意思是按钮应该每30秒只能点击一次?在那种情况下,我会做这样的事情:
public void onClick(View v) {
long time = System.System.currentTimeMillis();
if(time >= lastClickTime + (30 * 1000) || lastClickTime == 0){
lastClickTime = time;
...
}
}
您可以使用单独的Thread
和postDelayed
这个 SO 答案显示了如何做到这一点以及其他几个选项
您将在您的功能中禁用Button
然后重新onClick()
启用它run()
CountDownTimer将是另一种方式。您只需重新启用Button
inonFinish()
你可以看看这些,看看哪个最适合你的特定情况
这些是您可以完成此任务的一些方法。但是,如果您在这里告诉我们您的最终结果,我们可能会帮助您找到更好的方法。您不希望用户在 30 秒内不能做任何事情
您可以像这样使用处理程序的 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
}
});