两个事件之间的定时器

时间:2013-06-22 01:16:12

标签: android timer onclick

我想在事件之间使用计时器,例如:用户必须在点击按钮之间等待30秒,我该怎么做?!

Button b=(Button)findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
  @Override
   public void onClick(View v) {

   }
});

3 个答案:

答案 0 :(得分:2)

你的意思是按钮只能每30秒点击一次?在这种情况下,我会做这样的事情:

public void onClick(View v) {
    long time = System.System.currentTimeMillis();
    if(time >= lastClickTime + (30 * 1000) || lastClickTime == 0){
        lastClickTime = time;
        ...
    }
}

答案 1 :(得分:1)

您可以使用单独的ThreadpostDelayed

This SO answer显示了如何执行此操作以及其他几个选项

您需要停用Button中的onClick(),然后在run()功能

中重新启用它

Handler

TimerTask

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
    }

});