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

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

前置知识

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

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

前言

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

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

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

邂逅时刻

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

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

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

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

1.webp.jpg

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

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

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

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


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

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

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

相关文章
|
5月前
|
开发者 前端开发 编解码
Vaadin解锁移动适配新境界:一招制胜,让你的应用征服所有屏幕!
【8月更文挑战第31天】在移动互联网时代,跨平台应用开发备受青睐。作为一款基于Java的Web应用框架,Vaadin凭借其组件化设计和强大的服务器端渲染能力,助力开发者轻松构建多设备适应的Web应用。本文探讨Vaadin与移动设备的适配策略,包括响应式布局、CSS媒体查询、TouchKit插件及服务器端优化,帮助开发者打造美观且实用的移动端体验。通过这些工具和策略的应用,可有效应对屏幕尺寸、分辨率及操作系统的多样性挑战,满足广大移动用户的使用需求。
74 0
|
7月前
|
前端开发 开发工具 图形学
【你问我答】unity实现一个刮刮乐效果
【你问我答】unity实现一个刮刮乐效果
163 0
仿网易官网顶部展出的大幅广告代码,附效果演示
仿网易官网顶部展出的大幅广告代码,附效果演示
|
iOS开发 开发者 异构计算
一台iPhone搞定大作动捕,Epic神器MetaHuman Animator开放下载了
一台iPhone搞定大作动捕,Epic神器MetaHuman Animator开放下载了
218 44
|
Android开发 UED
与滑动冲突的首次邂逅(二)
如果你是一名Android 新手,那么你很可能没有遇见过滑动冲突,甚至不知道滑动冲突是什么?那是因为你的业务需求可能还不够复杂,作为一名初学者,没有将多种组件结合使用,那自然就没有遇见到滑动冲突了。
与滑动冲突的首次邂逅(二)
|
Java Android开发 Kotlin
Android | 这是一份详细的 EventBus 使用教程 | 牛气冲天新年征文
Android | 这是一份详细的 EventBus 使用教程 | 牛气冲天新年征文
887 0
Android | 这是一份详细的 EventBus 使用教程 | 牛气冲天新年征文
|
存储 移动开发 缓存
Webview秒开探索:让你的H5“快人一步”
作为前端技术的重要衡量指标之一,首屏渲染效率无疑前端老生常谈的话题了。这篇文章就来聊下如何在常见的H5环境下,做到页面秒开。
Webview秒开探索:让你的H5“快人一步”
autojs之RecycleView抽丝剥茧
作者: 牙叔 使用情景: 解析RecycleView常用方法
356 0
autojs之RecycleView抽丝剥茧
|
安全 Java Linux
市值 200 亿美元的云服务平台引争议;脉脉以旷工为由辞退员工被判赔 24 万;Android 版灵动岛插件上线|思否周刊
市值 200 亿美元的云服务平台引争议;脉脉以旷工为由辞退员工被判赔 24 万;Android 版灵动岛插件上线|思否周刊
220 0
|
前端开发 JavaScript iOS开发
一入前端深似海,从此红尘是路人系列第十二弹之移动端模拟IOS虚拟按钮效果
用过苹果的大家都知道,苹果公司做了一个虚拟按钮,让页面上的挂件可被拖拽并吸附到屏幕边框处,降低挂件对用户的干扰。该效果如果用JavaScript进行实现又该如何实现呢,接下来我将分享给大家。首先上一张效果图
1715 0