View滑动事件冲突处理方法(外部拦截法、内部拦截法)
2019-10-10 本文已影响0人
jdallen
View滑动事件冲突处理方法(外部拦截法、内部拦截法)
1、外部拦截法 (子view代码无需修改)(符合view事件分发机制)
说明:需要在父ViewGroup,重写onInterceptTouchEvent( [ˌɪntərˈsept])方法,根据业务需要,判断哪些事件是父Viewgroup需要的,需要的话就对该事件进行拦截,然后交由onTouchEvent方法处理,若不需要,则不拦截,然后传递给子view或子viewGroup。
2、内部拦截法(父viewgroup需要重写onInterceptTouchEvent)(不符合view事件分发机制)
说明:顾名思义就是在子view中拦截事件,父viewGroup默认是不拦截任何事件的,所以,当事件传递到子view时,
子view根据自己的实际情况来,如果该事件是需要子view来处理的,那么子view就自己消耗处理,如果该事件不需要由子view来处理,那么就调用getParent().requestDisallowInterceptTouchEvent()方法来通知父viewgroup来拦截。这个事件,也就是说,叫父容器来处理这个事件,这刚好和view的分发机制相反。
参考自:http://blog.csdn.net/z_l_p/article/details/53488085
https://blog.csdn.net/u014316462/article/details/52014462