如何使用侦听器/侦听器捕获所有运动事件

Mik*_*e G 0 java android android-layout

我想使用侦听器从屏幕上捕获所有运动事件,例如,如果我在屏幕上从上到下滑动,将会有一个向下的触摸、触摸移动和向上触摸。由于此触摸将覆盖多个视图,例如线性视图、按钮和文本字段,我尝试将触摸侦听器附加到所有视图,但我会得到错误数据,例如我会在没有触摸的情况下进行触摸等等。请告知一种可以实现这一目标的方法。

job*_*esu 5

处理此问题的一个好方法是将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;
    }
});
Run Code Online (Sandbox Code Playgroud)