令人绝望的 Android 后退、主页、多任务 Navbar 设计
https://bilibi.li/2021/04/05/android-navbar-nightmare
https://bilibi.li/2021/04/05/android-navbar-nightmare
因为三个键充分的发挥了作用:
中间的弹回桌面或者切换 app
左边的弹出菜单或者选项
右边的后退到上一页
方便到爆好么………
你非要混合使用,那肯定是错误操作频频出现了,但是实际上除非是纯新手,否则基本上不会混合使用。
相比之下,Windows 的回退键才是真的有问题,一会是输入状态的删除字符使用,非输入状态又变成了网页退回上一页的快捷键,20 年了都还偶尔会中招,输入了一部分内容后跳到上一页,白输入了。(试了下 Chrome 似乎没这问题,看来是 IE 系)
实际上就是 ” Back Buttom” 和 “Up Button” 的区别,但是比较让人无奈的是,几乎所有的 APP,从一开始就无视了这个规范,这个规范也变得名存实亡,以至于荼毒至今。
在我看来这其实是 Android 多任务体系的重要一环,我个人非常喜欢这个规范中所体现出的内在逻辑:
系统层级的 Back Button 管理的是 screen (页面),不关心你是什么 APP ;
APP 内的 Up Button 管理的才是 APP 内部的逻辑层级,不关心你之前在干啥。
『 iOS 的多任务,一直都是一个“高级操作”,从来没有一个按钮可以让用户“一键”多任务』
实际上 iOS 支持在底部滑动来快速切换应用:
https://support.apple.com/zh-sg/guide/iphone/iph1a1f981ad/ios
在配备面容 ID 的 iPhone 上,若要在打开的 App 之间快速切换,请沿屏幕底部边缘向右或向左轻扫。
同样的 ,Android 9/10 也是支持这个手势的:
https://support.google.com/android/answer/9079644?hl=zh-Hans#zippy=%2C%E5%9C%A8%E5%BA%94%E7%94%A8%E4%B9%8B%E9%97%B4%E5%88%87%E6%8D%A2
手势导航:在屏幕的最底部,从左向右滑动。
“双按钮”导航:要在您最近使用过的 2 个应用之间切换,请在“主屏幕”图标 主屏幕 上向右滑动。
“三按钮”导航:点按“概览”图标 概览。向右滑动,直到屏幕上显示您所需的应用。点按该应用。
感谢关于问题 2 的纠正,会添加到文章中。
对于问题 3,指的是呼出多任务页面,并不是快速切换 App 。
iOS 11 曾因为取消了此功能招致大量反馈:
https://www.macrumors.com/2017/09/21/3d-touch-app-switcher-gesture-will-return/
实际上引入 Android 的 Activity 栈 Fragment 栈会更好理解, “Back Button” 就是一个简单的出栈操作。
而对于 “Up Button”,应该返回的是『上一级』而非『上一个』页面,是与 APP 的内部逻辑相关联的。
假如用户此时点击的是 “Back Button” ,因为 Activity 栈的上一条是 Chrome,那就直接返回 Chrome 就好。
而如果用户此时点击的是 “Up Button”,此时应当返回的是 Twitter APP 的主页面(注意不是 Tweet A )才对。
iOS 在这一根小横条的操作上确实也做到了几乎登峰造极,但我还是觉得,其实本可不必如此麻烦的。
现在有一部分国产应用已经走在了遵循该规范的路上了,这是好的。
我们常说的『多任务切换』,实际上切换的并不是 Application 或者 Activity,而是 Task (任务)。
关于这部分的文档可以参见:
https://developer.android.com/guide/components/activities/tasks-and-back-stack
https://developer.android.com/guide/components/activities/recents
但是还是那句话,认真按照规范实现的应用实在是太小了,Android 精心设计的这一套逻辑,实际中的应用大多并未遵守,导致现实世界中的 Android 确实存在极其混乱的状态。
严谨一点,那时候是四大金刚,还有搜索键呢(而且顺序还不确定)
还有微信小程序垃圾设计很多也没有返回支持,那是小程序垃圾
Google 给出了它认为合理的统一实现(并详细阐述了背后的逻辑)。
然而(大量的)开发者,由于各种原因,没有做相应的配合,导致用户实际体验到的逻辑不一致。
这个问题实际上在各个系统中都存在,只是表现的是否明显,以及用户的谅解程度,例如你上提到的 iOS 的侧滑返回适配问题。
全面屏下都舒服,手势也只能辅助,不能替代
但是确实没有『乱实现』的么?翻个帖子看看: https://v2ex.com/t/669493
另外,iOS13 之后,Present Modally 的出现,加入了下拉返回的逻辑,带来了更多交互上的迷糊。
想要体验的话,打开『待办事项』,点击新建,在新建页面从左侧边缘向内侧滑,随着从左向右的手势,页面很配合的来了一个下滑的动画。
随着系统的发展、硬件的更迭,新旧交互逻辑混在一起是两家都存在的顽疾,大家都是满脸灰,真就谁也别来嘲笑谁。
至少在我看来,这些问题更大的责任方是第三方 APP,是否有研究对应平台的设计逻辑,做出与平台相匹配的产品。
这个问题之前还是引发了大量讨论的,回头我翻一下历史。
这段话不太同意,Android 的这套逻辑,实际上就是为了『辛苦开发者,解放用户』,如果开发者按规矩做了适配,用户层面来说,只要体验保持一致,是没有太大的认知障碍的。
(此处要补一条:不要把其它操作系统的逻辑,先入为主的带入进来,评价 Win 和 macOS 的时候也是同理)
『最大的问题还是谷歌的短见,没有给出成熟的解决方案』
这段话同意一半:
同意的部分是在控件、手势层面上,谷歌确实是三番五次的打自己的脸,折磨开发者,自作自受。
但是在逻辑层面上,其实 Task 的概念一直都未有改变,我前面贴的关于 Task 的文档,印象中至少存在了 6~8 年左右。
实际上,这个机制对应的就是 『单应用多窗口』,这个在桌面操作系统上习以为常的功能。
而 iOS 系统,实际上一直只支持 『单应用单窗口』,只有在 iPadOS 之后,才引入了 『单应用多窗口』。
『单应用多窗口』的最常见应用场景,就是微信小程序:
Android 上的微信小程序,是可以展示为和微信同一层级的独立 Task 的,可以直接在多任务界面切换。
而 iOS 系统由于只支持『单应用单窗口』,就需要先切换到 wechatOS,再选择具体的小程序。
当然,在小小的手机屏幕上,引入这种重量级的功能,许多 APP 又不适配,选择将自己做成『单应用单窗口』形态,那必然会引起更多的麻烦,包括对返回键的适配难题。
这样来想,这可能也是为什么 Apple 只在尺寸更大的 iPadOS 上引入这个功能吧。
以上,无关优劣,各有取舍罢了。
实际上,主文章中举的例子,在 iOS 上的动作同样是不明确的:
a. 当用户打开一个 Twitter,并点开了 Tweet A ;
b. 然后用户去 Chrome 里搜索一个内容,搜索结果里有另一条 Tweet B,用户很感兴趣,点击了这条搜索结果;
c. 这时候浏览器跳出,自动打开了 Twitter 应用,并跳转到了 Tweet B,这时候,用户点击后退,是应该回到 Tweet A,还是回到浏览器的搜索结果?
在 iOS 上,步骤 C 的迷惑略有不同:
这时候,用户点击后退,是应该回到 Tweet A,还是回到 Twitter 应用的首页?
需要注意的是,iOS 是没有针对这种场景的规范的(至少我没翻到);
可能有点沾边的是 HIG 中的 Navigation 部分,暗示了不同类型的 Navigation 可以采取不同的方式处理:
https://developer.apple.com/design/human-interface-guidelines/ios/app-architecture/navigation/
有的时候我调用 APP 只是想查看那一个信息,但是看完了返回却不是返回浏览器,而是返回到 APP 的主页,这让我很困扰
甚至于,这是比底部的虚拟返回键更明确的语义,因为『按照规范』来说,这时候『 task 栈的逻辑一定是返回上一个页面』,这是非常明确的。
该死的是谁?该死的是那些不按照规范设计的,『 task 栈的逻辑不一定是返回上一个页面』的 APP,是他们导致了这个不明确,而不是完全遵照规范设计的 Android 的手势。
另外,我就是你说的那个 8 -> 10 的安卓用户。我没有丝毫不适应。你不适应,因为你是果粉,是你的问题,不是安卓的问题,更不是安卓用户的问题。
其实看看主的博客,主更像是一个 Android 粉,或者说的严谨一点:Pixel 历代机型使用者。
https://bilibi.li/2020/05/02/google-pixel-4-xl-review
感谢提供的链接和相关信息,已经在原文中更新。不过想指出的是:假设所有 Android App 都遵循准则,依然无法回避一个问题——用户首次遇到文中的场景,点击 Navbar 退后时,用户并不知道会后退到哪个页面(当然,后退认知的习惯,的确可以在多次交互的教育后培养)。
长期的 Android 用户,从 Galaxy Nexus 开始,经历历代 Nexus 以及类原生手机(如历代 Moto X ),再最终换到 Pixel,算是 Android 粉了。
下一期估计会吐槽下 Android 分享菜单,接着会是多任务页面变化、Dark Theme 设计准则变化、通知栏 /Quick Settings 变化。
再次感谢,提供从研发角度看问题。之前是没有考虑这块的。
并不是果粉,除了 iPhone 5s,其他时候主力手机都是 Android 。
关于下拉返回,这点上 App Store 的 Today 精选,一直有这个问题。右划手势后,返回的动画是下滑。看待办事项已经没有这个问题了。
还是回到了:iOS 点击后退时(以及 Look Up,我理解是 dismiss 窗口,而不是后退),是有明确预期的,并不需要教育用户。
但 Android 即使彻底遵循设计要求,用户首次遇到文中的场景里,点击后退,则是在教育用户,点击 Navbar 的后退是回到上一个 App,而不是在当前 App 里后退。
2 、如我在 45# 所说,换到 iOS 平台上,这个例子仍然是会引发迷惑的,因为不同的应用对 『连续打开两条 Tweet 』这个情况的处理不同,导致部分应用会返回 Tweet A,部分应用会返回 Twitter 首页。
对于文章中的 『永远都指向一个行为』我表示不认同。
同样的我在 45# 也提到了,Android 对于这种场景,是有规范的,只是很多人不遵守而已;
iOS 对这种场景,却是连个规范都没有,我认为 iOS 在这个场景下表现,实际上是更差的。
(深究原因的话,我觉得是因为这是一个『多窗口』场景,详见 41# )
3 、虽然我确实是开发,但我不认为这部分属于研发角度,更应当属于交互设计方面,这实际上是与应用自身的逻辑结构相关的,而应用自身的逻辑结构,决定了交互的大框架。
题外话:
实际上,这个事情压根不适合拿 iOS 和 Android 来比较优劣,因为二者压根不是一个东西。
拿 iOS 的设计逻辑来套 Android,或者 Android 的设计逻辑来套 iOS,都是非常不合理的。
我更建议在各自的体系之内,从其自身本源的设计逻辑上入手来查缺补漏。
其实是很好理解的,因为 Android 系统的返回按钮,是在『 APP 外』的:
那么自然是以 APP 外(系统)的视角来后退页面,也就是上一个 APP 内。
如果想要 『在当前 App 里后退』,那很简单啊,需要点击『 APP 内』的后退按钮:
也就是点击 “Up Button”,结果也是符合预期的,返回了 『 APP 内』的上一个页面。
iOS 的返回按钮为什么符合你的想法,因为 iOS 只有『 APP 内』的返回按钮啊。
我用 Android5 年以上就没考虑过你说的那些个问题,更没有觉得疑惑、绝望等等,一个返回键打天下不是吹的,起码在 99%的情况下。
至于 iOS,我就呵呵了,一会左滑,一会儿左上角,一会儿右上角,一会下拉,这才是绝望好吗?跟别说那个左滑如果碰到轮播图或者视频、看图软件,那才是绝望。