是否有可能检测到活动中的所有触摸事件并捕获它,然后将该事件传递给另一个View?如何检测Android中的触摸事件
例如:
按钮1和按钮2,当按下button 1我希望捕获的触摸/点击事件,并自动在该触摸事件传递给按钮2,基本上是一点触/按你的点击生成,并自动将相同的点击传递到第二个按钮。
是否有可能检测到活动中的所有触摸事件并捕获它,然后将该事件传递给另一个View?如何检测Android中的触摸事件
例如:
按钮1和按钮2,当按下button 1我希望捕获的触摸/点击事件,并自动在该触摸事件传递给按钮2,基本上是一点触/按你的点击生成,并自动将相同的点击传递到第二个按钮。
采取先来看看这个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;
}
}
这些代码是你在看我在想什么。
我想你可以从按钮按下TouchEvent,并调用另一个按钮,传入TouchEvent,但我不确定这将是多么安全。 (Android可能会炸毁你)
更安全的解决方案是子类化Button,并使用Observer设计模式。你可以注册每个按钮来听按钮按下其他按钮,然后你将能够安全地在所有按钮之间传递TouchEvent。
如果你不熟悉Observer设计模式,这里是一个链接:http://en.wikipedia.org/wiki/Observer_pattern
感谢捕捉的活动级别所有触摸事件, – 2011-07-13 12:38:06