我想拦截给定布局中的每个触摸事件。
然后我想记录事件,
并将事件传播到触摸区域中的任何可点击视图。
如果我只想使用触摸事件一次,我该怎么做?
我已阅读其他SOF帖子中使用此内容:
(a)覆盖顶部的onInterceptTouchEvent(MotionEvent ev)方法 级别容器视图或(b)您可以覆盖 Activity.onUserInteraction但它还包括键和轨迹球 操作
但是我不确定先发生了什么?在根布局中处理事件或启动其子项?
事件总是从较低层传播到较高层(父视图传递给它的子节点)?
答案 0 :(得分:2)
您是否尝试覆盖Activity.dispatchTouchEvent(MotionEvent ev)
Called to process touch screen events. You can override this to intercept all touch screen events before they are dispatched to the window. Be sure to call this implementation for touch screen events that should be handled normally.
答案 1 :(得分:1)
每个触摸事件都从父视图传播到它的孩子。
首先,触摸事件进入root视图。如果它onInterceptTouchEvent
返回true,则此事件将传递到根视图onTouchEvent
。如果onTouchEvent
返回false,此事件将传递给根视图的父级,如果返回true,则此触摸事件将消失。如果onInterceptTouchEvent
返回false,则此触摸事件将传递给根视图的子级.Recursively。