624bd23d5be0ca549ffb6fa1674882fb
重学安卓:滑动冲突 的快乐你不懂!

往期回顾专栏目录更新动态优惠政策版权须知

温馨提示:如果这是第一次接触《重学安卓》,可通过上述链接来访问和快速了解《重学安卓》专栏、获取它的目录、试读内容,以及了解它的最新动态 和 发展状况。

截至目前,专栏已对 体系化文章 做了 1970 余次修订,数十位群友告诉我 受专栏的启发 他们也开启了写作之路。群里不定期会有小伙伴讨论适配问题、分享原创的开源库 和 提供内推机会,订阅后可随时进群交流。

·

Note 2021.5.25 重要提示

阅读本文的最佳时机是,您已吃过 阅读 “源码” 或 “源码分析文” 时 找不到头绪的苦

您还没吃过苦,那您先不要着急阅读本文。您得吃过苦,才会有体会。

在您吃够这方面的苦后,您才有机会发现,本文正是专用于解决 “如何找到正确打开方式” 的困扰。

我们 绝不通篇贴源码,而是基于广泛的实践和反思,在累积过大量样本 乃至足以排除掉所有干扰信息后,点到为止地揭露 滑动冲突 最为核心的本质,方便您理解其真实的存在意义,乃至可以笃信地 借助我们在文末提到的妙招 去恰到好处地解决。

前言

上一期我们介绍了 “如何正确地思考”、以及 “视图学习” 的两大方向。

相信有些读者在加入该专栏之前,就已经掌握了正确的思考方式;另有些读者,经过 3 个月的见证,也多多少少领悟了深度思考的精髓。

所以对于我的老读者,我是十分有信心通过 “简练的专业表述” 来解释和概括一个技术存在的缘由、它的作用范围,以及与其他技术间的关系。

然而 每一天都可能有新的读者加入,所以出于负责任的考虑,从前乃至今后的每一篇,我都尽可能克制 “自嗨式” 的专业表述,力求用 “接地气的话语” 来输出 “深度思考” 的结果,让还没有彻底掌握 “深度思考” 的读者,也能享受 “豁然开朗” 的阅读体验。

作为 年复一年 的滑动冲突

视图的标准化 API 这一章,我们主要会介绍 视图的 坐标系统、属性参数事件分发、滑动冲突视图排版、视图绘制 等等,

但以我多年的经验来看,“滑动冲突” 是人们眼里最 “高大上”、最 “神秘莫测” 的 痛点所在

可能大家的 “浏览器收藏夹” 里,都添加了不下 10 篇关于 “滑动冲突” 的解读,可这么多年过去了,还是纹丝未动,

这是怎么回事呢?

因为 人们不过是听说,面试必考,安卓开发进阶 一定要会处理 滑动冲突,

除此之外,他们 并不知道、也没有去想过:

为什么会有滑动冲突、

滑动冲突 占整个视图学习的份额 到底是多少、

掌握了滑动冲突 能在多大范围内 发挥作用、

实际的问题 会不会无边无际、让所学的 变得渺小和失效?……

正是因为 对这些 必须首先想明白的状况 不清不楚,使得对 滑动冲突 的学习 迟迟未能开始

再加上,视图的 深度思考知识,至少有一半以上 是 产品 交互设计 领域 的知识,所以,除非 事先具备了 深度思考的能力,并且 出于巧合 顿悟了 交互设计 的精髓,否则这个大门 可能永远找不到钥匙来打开。

网上那么多文章,通篇贴代码,你看不懂,或者花了很大代价 将代码流程捋顺,事后却没有留下任何印象,这不怪你,毕竟 写这些文章的人 本身也是 完全没有经过思考,并没有好到哪里去。

所以下面,就请倒掉杯子里的水,带着思考 “为什么” 的心,和我一起 无痛地理解 滑动冲突的状况。

文章目录一览

  • 前言
  • 作为 年复一年 的滑动冲突
  • 为什么存在 滑动 的设计?
  • 为什么 首页和详情 要如此设计?
  • 所以 为什么存在 滑动冲突?
  • 那么 如何解决 这些问题?
  • 综上

为什么存在 滑动 的设计?

因为 人们有 浏览信息 的需求

并且,移动设备 屏幕空间较小,需要使内容可滑动,来实现更大的信息传播量。

关于第一点,其实很好理解,回想一下人们使用移动设备的动机 —— 是的,多是 漫无目的地浏览 以打发时间,或是 如饥似渴地阅读 以增长见识

关于第二点,你或许可以反驳,因为就像书籍一样,软件是可以做成翻页的,即,点击按钮,自动翻到下一页,同样能够确保更大的信息量。

那为什么要存在 滑动 操作呢?

因为 —— 还记得 “上一篇末尾” 我们分享的 屡试不爽的 用户体验目标 吗 —— 因为滑动 更符合用户直觉,滑动 能够维持操作的连贯性、不打断用户的意图、让用户感觉爽 —— ©KunMinX。

👆👆👆 划重点

如果这么说 并没有体会的话,那还是上一篇提到的:要结合用户使用场景、揣摩用户的 “意图” 和 “心态”,如此才能明白 什么对用户来说是最爽的。(下文我们会详细交待)

此外,正因为用户多数时间是 “漫无目的地浏览” 以打发时间,所以 与滑动最紧密相关的,不外乎就是以下两个场景:首页和详情

👆👆👆 划重点

于是

为什么 首页和详情 要如此设计?

还是回到 刚才提到的 屡试不爽的 用户体验目标:维持连贯性

首先 我们来看看 首页的设计

—— 为什么像 AppStore 这种,首页要设计成 列表嵌套 Banner 呢?

动图演示 截图1 截图2

图片截自 “Google Play” 客户端

因为在这种场景下,用户通常是 漫无目的地浏览、心里想的是 贪得无厌地 大而全地 涉猎一遍、不放过 首页中 任何新奇有趣的东西,所以他们的意图是,把首页的内容给 “消灭掉”

所以,点击进入详情页 对他们来说,会把工作量指数级增加、会让消灭首页的目标被打断(因为详情页里面还有更多的软件在推荐,根本看不过来),

所以在这种场景下,为什么存在 列表嵌套 Banner 的设计 ——

就是为了 让用户不用点击 “查看更多” 增加工作量、而是 保持在首页、并且 光是通过横向滑动 就能把最值得看的 TOP 20 给浏览一遍

如此,既通过 延续了滑动操作 维持了连贯性,又让用户保持在首页 而 没有页面跳转的打断,再次维持了连贯性

—— Double Kill

至此,从交互设计、用户体验 —— 这个最根源的角度,我们确知了为什么存在 “列表嵌套 Banner ” 的设计。

然后,我们再来看看 详情页

—— 为什么 详情页 多是设计成 顶部盛放 多媒体控件、中间是 TabLayout、底部是 ViewPager 嵌套 RecyclerView 呢?

动图演示 截图1 截图2

图片截自 “酷安” 客户端

top Created with Sketch.