Android View的事件分发机制

ViewGroup的事件分发逻辑

从Activity传递给Window,再传递给ViewGroup,ViewGroup的dispatchTouchEvent()会被调用,如果onInterceptTouchEvent()返回true
转交自身onTouchEvent()处理,如果返回false继续向子View传递,子View的dispatchTouchEvent()会被调用,若子View是ViewGroup,重复上述流程。若子View是普通View,调用其onTouchEvent()

View的事件处理

1、OnTouchListener优先:若设置且onTouch()返回true,则onTouchEvent()不被调用。
2、默认行为:View的onTouchEvent()处理点击(如OnClickListener)和长按(OnLongClickListener),返回true表示消费事件。

滑动冲突处理

requestDisallowInterceptTouchEvent():子View可调用此方法,禁止父ViewGroup拦截事件(如处理横向滑动时阻止父ViewPager切换页面)。

你可能感兴趣的:(Android面试,android)