多点触控问题android

时间:2012-09-28 01:51:53

标签: android button multi-touch

我有一个支持多点触控的项目。触摸按钮时,它会通过1.但是,它只会触及第一次触摸。请帮助我,这是我们的论文。

这是我的代码:

 public boolean onTouch(View v, MotionEvent event) {
     int action = event.getActionMasked();
     if(action == MotionEvent.ACTION_DOWN){

       b1=b2=b3=b4=b5=b6="0";

        switch(v.getId()) {
           case R.id.button3:
               b3 = "1";
               break;
           case R.id.button2:
                b2 = "1";
                break;
           case R.id.button1:
               b1 = "1";
               break;
           case R.id.button4:
               b4 = "1"; 
               break;
           case R.id.button5:
               b5 = "1";
               break;
           case R.id.button6:
               b6 = "1";   

        }
     }  else if(action == MotionEvent.ACTION_POINTER_DOWN )
     { 
         switch(v.getId()) {
           case R.id.button3:
               b3 = "1";
               break;
           case R.id.button2:
                b2 = "1";
                break;
           case R.id.button1:
               b1 = "1";
               break;
           case R.id.button4:
               b4 = "1"; 
               break;
           case R.id.button5:
               b5 = "1";
               break;
           case R.id.button6:
               b6 = "1";   

        }
    }
  }

在这里按下button1和button2时它应该通过b1 = 1而b2 = 1但是它只通过b1 = 1.

2 个答案:

答案 0 :(得分:2)

返回true表示您已处理了触摸事件。

此外,使用字符串(b1b6)作为布尔值是一个明显不好的主意。请改用boolean

答案 1 :(得分:1)

触摸侦听器的问题(假设所有按钮都调用相同的方法)是每次进入方法时重置值,onTouch()将为您需要的每个事件调用一次处理。在您触摸通过同一个侦听器的两个唯一按钮的示例中,对于您触摸的第一个按钮,该方法将调用一次ACTION_DOWN事件,然后第二次调用ACTION_DOWN事件你触摸的第二个按钮。在设置与该视图关联的值之前,第二次运行该方法会将所有bx输入的值重置为零,因此此代码将始终只将“标记”的一个按钮保留为触摸。

您可以考虑重置该视图的ACTION_UPACTION_CANCEL事件的“标记”状态,以保持更好的全局状态。我也同意其他海报,将这些值存储为字符串似乎非常低效,并且以后会使比较逻辑变得更加困难。

相关问题