【问题标题】:Android Multi Touch Sensors ProgrammingAndroid 多点触控传感器编程
【发布时间】:2014-08-04 18:30:10
【问题描述】:

我有一个关于 Android 手机硬件的问题。 他们有多个触摸传感器吗?

是否可以制作两个可以同时按下的按钮?

例如,我正在编写乒乓球游戏并创建多人模式(面对面 IRL)。但是,如果球员 1 正在触摸屏幕来改变球拍的方向,那么球员 2 不能让他的球拍改变方向,因为按钮已经被按下。如何解决?

【问题讨论】:

  • “android multitouch”的第一个搜索条目是:developer.android.com/training/gestures/multi.html
  • 但是可以在 ImageButtons 上执行此操作吗?实现 onTouchListener 然后为所有按钮设置一个通用的触摸监听器。然后我可以从那里处理所有不同的异常?有点乱抱歉,我不知道如何解释,但目前根本不起作用……

标签: java android touch multi-touch


【解决方案1】:

是的,可以同时按下两个组件,你也可以从屏幕中的这些事件中获得多个回调,如下所示:

@Override
public boolean onTouchEvent(MotionEvent event) {
    int action = event.getAction();
    //Make sure is multi-touch...
    if (event.getPointerCount() > 1) {
        int pointerId = action & MotionEvent.ACTION_POINTER_ID_MASK;
        int actionEvent = action & MotionEvent.ACTION_MASK;
        //At this point you know the id of the touch event and what action just happened.
    }
    return super.onTouchEvent(event);
}

对于按钮上的多个事件,您不必担心触摸事件,如果两个按钮都设置了单击侦听器,则这些侦听器将自动触发。 “重要”:在 Honeycomb 之前不支持同时按下多个按钮,因此如果您的 targetSDK 低于 Honeycomb,您将只收到一个点击事件而另一个将被忽略,更改 targetSDK 应该没问题。

这篇文章还准确地解释了如何做到这一点: http://www.doepiccoding.com/blog/?p=250

希望对你有帮助!

问候!

【讨论】:

  • 非常感谢 Martin Cazares!
  • 当然,如果对您有帮助,请不要忘记将其标记为正确,以便人们稍后会花时间回答您的问题。
  • 关于多个按钮:我是否需要多个 onClickListeners 而不是实现一个处理开关盒中所有按钮的大方法? PS:将在 3 分钟内接受答案(剩余时间);)
  • 这完全取决于你,通常不同的方法会带来更易读和更干净的代码,但如果你认为将它们都放在同一个方法中并切换功能是值得的,那么这取决于程序员...
  • 最低。 API 级别 15 和目标 API 级别 21。我是否应该为按钮实现 onTouchListener 并按照您在答案中描述的那样做?
猜你喜欢
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
  • 2021-12-17
  • 2012-08-11
  • 1970-01-01
  • 2011-08-31
  • 2011-12-25
  • 1970-01-01
相关资源
最近更新 更多