在日常的开发过程中,我们往往会在同一个界面中出现内外两层或者多层View同时滑动的现象,这个时候往往**会出现滑动冲突。面对滑动冲突,很多开发人员不知道从哪里入手,**即便稍微有点思路,也要费点时间才能解决。其实滑动冲突的解决是有一定的套路的。
下面主要针对Android开发中几种常见的滑动冲突及对应的解决方案来进行讲解
目前常见的滑动冲突主要可以分为以下三种来概括:
滑动冲突看起来比较棘手,特别像场景3的那种嵌套好几层的滑动冲突。
但不管滑动冲突多么的复杂,它主要涉及到的都是一些触摸事件的分发和拦截,有一定的处理规则在里面,我们可以根据规则来选择合适的方法来进行处理:
常用的冲突解决的两种基本思路
(1). 外部拦截法
即重写父容器的onInterceptTouchEvent方法,根据父容器是否需要拦截这个事件来返回对应的布尔值,如果父容器需要拦截这个触摸事件则返回true,如果不拦截则返回false;
(2). 内部拦截法
即父容器不拦截任何的事件,将对应的事件传递给子元素,根据子元素是否需要消耗这个触摸事件来进行处理,如果子元素不消耗此事件,又会交由父容器来进行对应的处理,子容器需要做如图2-2处理,父容器需要做如图2-3所示处理。
同时,事件冲突也是一线互联网大厂中的必考题,来看看下面这些问题你能答上来几个?
所以说,关于解决事件冲突的技巧,也是大家需要掌握其中精髓的!
但如果通过博客文章学习,看完后自身是感觉学到了,一旦项目中出现了事件冲突的问题,很难将文章中的知识点运用到实际问题当中,而很多开发者在解决事件冲突中遇到的最大问题,就是很难找到解决问题的切入点。