一次触摸更多一个按钮

时间:2011-04-06 14:42:07

标签: android

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

3 个答案:

答案 0 :(得分:3)

使用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停止播放同一事件的行动。

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

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