我想拦截给定布局中的每个触摸事件。然后,我想记录该事件并将其传播到触摸区域内的任何可点击视图。如果我只想消耗触摸事件一次,我该怎么做?我已经阅读了其他SO论坛帖子,建议使用以下内容:(a)在顶级容器视图中覆盖onInterceptTouchEvent(MotionEvent ev)方法或(b)覆盖Activity.onUserInteraction但它还包括键和轨迹球操作。但我不确定什么会先发生?根布局处理事件还是从其子项开始处理?事件是否总是从较低层向上传播(父视图到其子项)?
Activity.dispatchTouchEvent(MotionEvent ev)
吗?每个触摸事件都会从父视图传递到其子视图。
首先,触摸事件传递到根视图。如果它的onInterceptTouchEvent
返回true,则此事件将传递给根视图的onTouchEvent
。如果onTouchEvent
返回false,则此事件将传递给根视图的父级,如果返回true,则此触摸事件将消失。如果onInterceptTouchEvent
返回false,则此触摸事件将传递给根视图的子视图。递归进行。