我想使用监听器从屏幕捕获所有运动事件,例如,如果我在屏幕上从上到下进行滑动,则会有触摸,触摸移动和触摸。由于此触摸将在多个视图上示例线性视图,按钮和文本字段我试图在触摸侦听器上附加到所有视图但是我会得到不良数据,例如我会触摸而没有触摸等等。请告知一种方法,以实现这一目标。
答案 0 :(得分:4)
处理此问题的一种好方法是将 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;
}
});
答案 1 :(得分:0)
您可以覆盖活动中的dispatchTouchEvent(MotionEvent ev)方法。
在将MotionEvent转发到不同的活动视图之前调用它。
然后你可以用它做你想做的事,转发它们,消耗它们......