与滑动冲突的首次邂逅(一)

简介: 如果你是一名Android 新手,那么你很可能没有遇见过滑动冲突,甚至不知道滑动冲突是什么?那是因为你的业务需求可能还不够复杂,作为一名初学者,没有将多种组件结合使用,那自然就没有遇见到滑动冲突了。

前置知识

  • 了解 View 的分发事件(没了解也没事)
  • 有 Android 开发基础

PS:本文写给未曾遇见过滑动冲突的 Android 初学者,当然也欢迎大佬们对我指点一二☺️

前言

如果你是一名Android 新手,那么你很可能没有遇见过滑动冲突,甚至不知道滑动冲突是什么?那是因为你的业务需求可能还不够复杂,作为一名初学者,没有将多种组件结合使用,那自然就没有遇见到滑动冲突了。

但是,滑动冲突等到遇到的时候再去翻阅资料、学习处理,那么就会显得过于仓惶。所以本篇文章,我将用一个简单的案例,带你来一场与滑动冲突的完美邂逅。

PS:本篇不会尚详细展开讲解滑动冲突的各种场景和全面的解决思路,在后续的文章才会进行详细讲解。

邂逅时刻

前面我们说到,滑动冲突的出现,是基于较为复杂的组合应用场景。下面,我提出一个稍微复杂一点的需求,而这个需求直接实现之后,是会出现滑动冲突的。

需求描述是这样子的:我需要在一个页面中,展示三个榜单(电影榜,电视剧榜,综艺榜),这三个榜单分别是通过点击导航栏或者左右滑动展示出来,并且榜单可以上下滑动来查看更多的榜单数据。

根据上述的需求,我们会想到:导航栏可以使用 TabLayout ,榜单左右滑动使用 Viewpager  载入Fragment ,点击展示的话就吧 TabLayoutViewpager 联动即可。最后的榜单上下滑动查看数据,我们可以在 Fragment 里面载入 NestedScrollView 做纵向的页面滚动。

想好了实现的方法,我们可以将这个功能实现出来啦,实现的效果如下:

1.webp.jpg

上述实现具体可参考第四届青训营 这个专栏,具体代码在此处

但是当我们实现之后,我们会发现,这个功能不顺手。怎么不顺手呢?就是当我有时想下滑的时候,他变成了左右滑动了,而一般突变为左右滑动的触发点是我快速滑动的时候。我们可以看一下下方的动图。

下图中,以同样的角度滑动,慢滑动的时候,事件被子View捕获,实现的是 子View上下滑动

快速滑动的时候,事件被父布局的View捕获,实现的是外层 ViewPager2左右滑动


是的,这种情况,就是滑动冲突。具体来说是,我们的左右滑动和上下滑动发送冲突了,导致软件无法判别清楚我们是想执行哪一种滑动命令。当然,上面的滑动冲突并不是很重大,不会影响业务,只会影响体验罢了。

作为一名负责人的 coder,与滑动冲突的相遇只是开始时刻,若没有产生知识的沉淀或是使得问题被解决,必然不能算一场美好的相遇啦!

所以,让我们一起来体验一把如何解决这个问题,提高用户使用体验吧。

相关文章
|
Android开发 UED
与滑动冲突的首次邂逅(二)
如果你是一名Android 新手,那么你很可能没有遇见过滑动冲突,甚至不知道滑动冲突是什么?那是因为你的业务需求可能还不够复杂,作为一名初学者,没有将多种组件结合使用,那自然就没有遇见到滑动冲突了。
与滑动冲突的首次邂逅(二)
|
Java Android开发 Kotlin
Android | 这是一份详细的 EventBus 使用教程 | 牛气冲天新年征文
Android | 这是一份详细的 EventBus 使用教程 | 牛气冲天新年征文
596 0
Android | 这是一份详细的 EventBus 使用教程 | 牛气冲天新年征文
|
SQL 存储 自然语言处理
Android | ContentProvider 筑基篇 | 牛气冲天新年征文
Android | ContentProvider 筑基篇 | 牛气冲天新年征文
92 0
Android | ContentProvider 筑基篇 | 牛气冲天新年征文
|
安全 Java Linux
市值 200 亿美元的云服务平台引争议;脉脉以旷工为由辞退员工被判赔 24 万;Android 版灵动岛插件上线|思否周刊
市值 200 亿美元的云服务平台引争议;脉脉以旷工为由辞退员工被判赔 24 万;Android 版灵动岛插件上线|思否周刊
180 0
|
缓存 API Android开发
RecycleView三问—腾讯真题
Recycleview相比也是每个Android开发者熟得不能再熟的控件了,但是你对他又真的了解多少呢?看看今天的三问你都能答得上来吗?
117 0
|
Android开发 容器
拇指记者打探事件分发机制背后的秘密(下)
上一期跟随拇指记者,发现了Android公司在指派具体的人之前的种种机制,今天就继续探索,看看任务具体的处理消费逻辑。
95 0
拇指记者打探事件分发机制背后的秘密(下)
|
调度 Android开发
拇指记者打探事件分发机制背后的秘密(上)
聊到事件分发,很多朋友就会想到view的dispatchTouchEvent,其实在此之前,Android还做了很多工作。
70 0
拇指记者打探事件分发机制背后的秘密(上)
|
Android开发 容器
史上最好的Android事件分发文章
史上最好的Android事件分发文章
史上最好的Android事件分发文章
|
Android开发 iOS开发
Android 2.3预计下周发布 十大惊喜不容错过
  从最早的Android 1.5(Cupcake)、1.6(Dounts)到现在最新的Android 2.2(Froyo),Android系统不仅经历了多个版本的更新和改进,而且最新Android Gingerbread版本系统将会带来的变化也同样颇受期待。
1171 0