繁体   English   中英

一次触摸更多一个按钮

[英]Touch more one button at once

您好我的应用程序就像Drum Studio。 我需要支持一次触摸更多一个按钮。 例如:用户触摸按钮1(并按住它!)它播放声音,但用户仍然按住它,用户单击另一个按钮,它也播放声音。 如何编程? 默认情况下onTouch或onClick使用,如果按下1按钮,则在未释放按钮之前,其他按钮不会作出反应。

使用onKeyDown()事件触发每个响应和onKeyUp()事件来完成它们。

http://developer.android.com/reference/android/view/KeyEvent.html

http://developer.android.com/reference/android/view/KeyEvent.Callback.html

对于触摸,您可以使用OnTouchListener

http://developer.android.com/reference/android/view/View.OnTouchListener.html

并确定MotionEvent的触摸类型:

http://developer.android.com/reference/android/view/MotionEvent.html

为了澄清我的回答:要发出声音,同时保持一个按钮,就可以在启动的声音ACTION_DOWN在动作MotionEvent事件被触发,并与阻止它ACTION_UP同一事件的行动。

  • 创建一个扩展视图的类,您可以按住所有按钮。
  • 覆盖onTouchEvent vor该类。
  • 在不同的操作之间切换。
  • 使用event.getX()和event.getY()来确定触摸事件的起源位置。
  • 检查哪个按钮位于该位置
  • 相应地播放声音。

即使您的设备支持多点触控,也无法同时触摸两个单独的视图。 如果首先触摸Button1,则所有后续MotionEvent(包括具有单独指针ID的MotionEvent)都绑定到该视图。

除非您使用像AndEngine这样内置此类功能的专用游戏引擎,否则您唯一的选择就是自己捕获所有MotionEvent(最容易使用覆盖整个屏幕的空ImageView)并将它们路由到相应的基于视图的视图。在他们的屏幕坐标上。 这可能会变得棘手,特别是对于多个触摸指针,但Android UI框架本身并不支持您需要的那种多点触控。

您肯定希望使用Android 2.0或更高版本 - 以前的版本不支持多点触控。

检查onTouch中的pid - 0是单触,1是第二个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM