Android Eclipse - 如果在'x'秒内没有按下按钮那么

时间:2014-08-23 19:27:11

标签: android eclipse

试图找出如何做到这一点,基本上我的应用程序需要一个按钮被击中并多次击中,它计算你击中它的次数以及你是否在一定的时间内击中它它会显示一条消息。

我无法弄清楚如何在' x'内按下按钮。几秒钟......'部分,我已尝试if(imagebutton1.isPressed())声明,但它会在动作开始时立即检查,我只是想让它检查' X'上次按下按钮后的秒数。

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:0)

在您的情况下,您需要记录上次按下按钮的时间 然后添加更新的while语句 在c ++中

      Int presses;
      Int timelimit; //the seconds between each press (you can use a chronometer but this is simpler but less accurate (and no decimals)
      Int lastpressed; //need chronometer for more accuracy or decimals)
      Int ammountpassed; //time since you pressed it
  If(imagebutton1.isPressed())
      {   
             Bool Started = Yes;
             Presses++;
        While(!imagebutton1.isPressed()&&ammountpassed<TimeLimit)
         {
           Ammountpassed++;
         };
      };
  If (ammountpassed>=timelimit)
     {
         If (presses>=highscore) 
             {
              DisplayMsg " Number of presses" presses; "! New highscore!";
             };
         Else(presses<highscore)
             {
          DisplayMsg "not fast enough! Number of presses" presses; "!"   };
             };

    };

你需要稍微调整一下以满足你的需求(&#34; displaymsg&#34;我认为这是实际的功能所以你可能需要改变它但是那里有逻辑:) 我建议用手打字,因为我相信我可能会犯一些错误,但没有添加半冒号或2赢得修复;) 希望它有所帮助:)祝你好运:)

答案 1 :(得分:0)

每次用户点击按钮时,您都可以在处理程序的队列中发布消息,并显示您要显示的文本消息以及相应的延迟时间(并删除以前的消息)。因此,如果延迟时间超过没有任何按下,线程将执行处理程序的消息。假设你想要在主处理程序中发送一条消息,要在 delay 毫秒内执行,然后在你的活动中你需要保存对处理程序的引用并在必要的文本中创建一个Runnable消息将显示:

Handler mainHandler = new Handler(getMainLooper());
Runnable runnable = new Runnable(...); 

在按钮的OnClickListener中,您只需要执行:

@Override
public void onClick(View v) {

    mainHandler.removeCallbacksAndMessages(null);
    mainHandler.postDelayed(runnable, delay);
}