2010-07-19 37 views
9

是否有可能检测到活动中的所有触摸事件并捕获它,然后将该事件传递给另一个View?如何检测Android中的触摸事件

例如:

按钮1和按钮2,当按下button 1我希望捕获的触摸/点击事件,并自动在该触摸事件传递给按钮2,基本上是一点触/按你的点击生成,并自动将相同的点击传递到第二个按钮。

回答

18

采取先来看看这个API的说明。


布尔 android.app.Activity.dispatchTouchEvent(MotionEvent EV)

公共布尔dispatchTouchEvent (MotionEvent EV)由于:调用来处理触摸屏事件API级别1 。 您可以覆盖此设置,以便在分配给窗口的 之前拦截所有的 触摸屏事件。确保 称这个实现为触摸 屏幕事件,通常应该处理 。

参数ev触摸屏事件。如果这 事件被消耗

返回Boolean返回true。

正如你所看到的,你可以拦截所有触摸事件。

@Override 
public boolean dispatchTouchEvent(MotionEvent ev) { 
    // TODO Auto-generated method stub 
    super.dispatchTouchEvent(ev); 
    if(btn1.onTouchEvent(ev)){ 
     return btn2.onTouchEvent(ev); 
    }else{ 
     return false; 
    } 
} 

这些代码是你在看我在想什么。

+2

感谢捕捉的活动级别所有触摸事件, – 2011-07-13 12:38:06

3

我想你可以从按钮按下TouchEvent,并调用另一个按钮,传入TouchEvent,但我不确定这将是多么安全。 (Android可能会炸毁你)

更安全的解决方案是子类化Button,并使用Observer设计模式。你可以注册每个按钮来听按钮按下其他按钮,然后你将能够安全地在所有按钮之间传递TouchEvent。

如果你不熟悉Observer设计模式,这里是一个链接:http://en.wikipedia.org/wiki/Observer_pattern