我想使用侦听器捕获屏幕上的所有运动事件,例如,如果我从上到下在屏幕上滑动,就会有触地,触动和触地。由于此触摸将遍历多个视图,例如线性视图,按钮和文本字段,因此我尝试在触摸侦听器上附加到所有视图,但是例如,我会得到不好的数据,而无需触摸即可进行触摸操作,依此类推。请提出一种可实现此目标的方法。

最佳答案

处理此问题的一种好方法是将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;
    }
});

07-24 09:22