如何检查两个按钮是否同时保持在一起ANDROID?

How to check to see if two buttons are HELD together at same time ANDROID?

我有两个圆形按钮,每个都有不同的颜色。

现在,如果同时按住两个按钮,我希望它们都变成全新的第三种颜色,以及声音效果、一些图形变化等。

以下代码似乎在大约 50% 的时间内有效,通常只有当两个按钮完美地同时按下时。 (如果按住一个按钮,然后不久又按住另一个按钮,即使是一根头发,应用程序似乎也会崩溃)。

    new Thread(new Runnable() {
        public void run(){
            while (keepgoing) {
                if (held1== true && held2==true) {
                    player2.start();
                    greenbutton.setBackground(getResources().getDrawable(R.drawable.brickbutton));
                    pinkbutton.setBackground(getResources().getDrawable(R.drawable.brickbutton));
                    keepgoing = false;
                    return;
                }
            }
            return;
        }

   }).start();


}

held1 在 button1.setOnLongClick 事件发生时设置为真。 当 button1 的 OnTouchListener 发生 MotionEvent.ACTION_UP 情况时,将 held1 设置为 false。

按钮 2 也一样,就像这样。

      greenbutton.setOnLongClickListener(new View.OnLongClickListener() {
          @Override
          public boolean onLongClick(View v) {
              held1 = true;
              player.start();
              if (switched){
                  revertButtons();
                  return true;
              }
              else {
                  switchButtons();
                  return true;
              }
          }
      });

      greenbutton.setOnTouchListener(new View.OnTouchListener() {
          @Override
          public boolean onTouch(View v, MotionEvent event) {
              switch (event.getAction()){
                  case MotionEvent.ACTION_UP:
                      held1 = false;
                      player.start();
                      if (bricked){
                          return true;
                      }
                      if (switched){
                          revertButtons();
                          break;
                      }
                      else {
                          switchButtons();
                          break;
                      }
              }
              return false;
          }
      });

为什么这段代码如此不稳定?

做这样的事情怎么样,

while(held1 == true){
if(held2 == false){
//do something
}else{
player2.start();
                    greenbutton.setBackground(getResources().getDrawable(R.drawable.brickbutton));
                    pinkbutton.setBackground(getResources().getDrawable(R.drawable.brickbutton));
                    keepgoing = false;
                    return;
}
}

思路是模仿观察者模式的解决方案。不仅当它们像你一样被放在一起时,还要观察第二个,这样在任何时候,如果它们都被点击,你的工作就会完成。这就是 RxJava/Rxandroid 观察者模式的美妙之处。在您的情况下,这将是完美的解决方案。