具体自定义控件事件分发自定义控件

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

上一篇 下一篇

猜你喜欢

热点阅读