【问题标题】:multi touch problems android多点触控问题android
【发布时间】:2012-09-28 01:51:52
【问题描述】:

我有一个支持多点触控的项目。当您触摸一个按钮时,它会传递 1。但是,它只获得第一次 touch 。请帮帮我,这是为了我们的论文。

这是我的代码:

 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。

【问题讨论】:

  • 您是否将此侦听器附加到所有按钮,对吗?此外,似乎代码中缺少 return 语句。

标签: android button multi-touch


【解决方案1】:

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

另外,使用字符串(b1b6)作为布尔值显然是个坏主意。请改用boolean

【讨论】:

  • 谨防返回true 只是为了让触摸听者有所作为。如果这些视图是真正的按钮,这将覆盖它们被点击的能力。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 2014-02-28
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多