2011-12-09 177 views
0

我想使用侦听器从屏幕捕捉所有动作事件,例如,如果我从屏幕上方向上进行滑动触摸,触摸移动和触摸。由于此触摸将覆盖多个视图示例线性视图,按钮和文本字段我试图附加在所有视图的触摸监听器上,但我会得到不好的数据,例如我会触摸起来没有触摸起伏等。请告知一种可以实现这一点的方式。如何使用侦听器/侦听器捕获所有动作事件

+0

当一个触摸开始在视图上。 Android会一直发送到相同的视图,直到您移开手指。 –

回答

3

一个很好的方式来处理,这是对OnTouchListener重视所有的意见父ViewGroup中(布局) 。

例如,您可以在您的问题中提到具有多个视图(线性视图,按钮和文本字段)的RelativeLayout。你可以这样做:

RelativeLayout currentView = (RelativeLayout) findViewById(R.id.MyRelativeLayout); 
currentView.addView(aSubView); 
currentView.addView(aSubButton); 
currentView.addView(aSubTextView); 

currentView.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     // Here you will receive all the motion event. 
     return false; 
    } 
}); 
+0

这样做,这也适用于线性布局和网格布局? –

+1

是的,它会的。如果它解决了您的问题,请将答案标记为已接受。谢谢。 – jobesu14

+0

我刚试过这个它不工作! ...因为其他视图已经是孩子了,你可以再次添加它们。另外,只有在附着的孩子不会捕获所有动作事件的情况下,才能将侦听器附加到根 –

0

您可以覆盖您的活动中的dispatchTouchEvent(MotionEvent ev)方法。

在MotionEvent转发到不同的活动视图之前调用它。

您可以然后做你想要做什么用,转发它们,使用它们...

+0

我想用听众 –