是否可以检测活动中的所有触摸事件并捕获它,然后将传递事件传递给另一个视图?
例如:
按钮1和按钮2.当按下按钮1时,我想捕获该触摸/点击事件并自动将该触摸事件传递给按钮2,基本上只需按一下/按下即可生成点击并通过相同的点击自动打开第二个按钮。
答案 0 :(得分:19)
首先查看此API说明。
布尔 android.app.Activity.dispatchTouchEvent(MotionEvent EV)
public boolean 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;
}
}
我认为这些代码就是你所看到的。
答案 1 :(得分:3)
我想你可以从按下按钮取出TouchEvent,并调用另一个按钮,传入TouchEvent,但我不确定它会有多安全。 (Android可能会炸弹你)
更安全的解决方案是将Button子类化,并使用Observer设计模式。您可以注册每个按钮以监听按下按钮的按钮,然后您就可以安全地在所有按钮之间传递TouchEvent。
如果您不熟悉Observer设计模式,请点击以下链接:http://en.wikipedia.org/wiki/Observer_pattern