如何在Android中检测触摸事件

时间:2010-07-19 03:13:31

标签: android

是否可以检测活动中的所有触摸事件并捕获它,然后将传递事件传递给另一个视图?

例如:

按钮1和按钮2.当按下按钮1时,我想捕获该触摸/点击事件并自动将该触摸事件传递给按钮2,基本上只需按一下/按下即可生成点击并通过相同的点击自动打开第二个按钮。

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