请不要在你的应用中加入 Splash Screen

请不要在你的应用中加入 Splash Screen

回国快一年了既然人在国内就免不了用到各式各样的国产应用而偏偏安卓应用的质量还大多不太能看问题数不胜数借着知乎今天更新这事儿我写下这篇文章借此来谈谈在安卓应用上最常见的一个问题Splash Screen当然这些内容并不只是针对知乎很多国内应用都有相同的问题

实际上Splash Screen 算是一件很有历史的东西了它的起源大概可以追溯到早年 PC 游戏和各类大型桌面软件上 —— 这些应用软件在启动时需要加载大量的资源又不能让用户产生软件死掉的感觉所以一个游戏或者软件加载的时候就会显示一个启动画面然后带上一个进度条什么的让用户知道这个软件是在加载中而不是死掉了当然还有一些软件确实是一面显示着启动画面一面死掉了。。。)。

而在移动应用上采用 Splash Screen又可以追溯到 iPhone 刚刚发布的时候 —— 当然那个时候的“启动画面”还不是 Splash Screen最早的启动画面是一张仿画面造应用内容的画面或者干脆就是一张应用截图

(Image credit: Cyril Mottier

iOS 应用利用这样的一张启动画面令用户认为应用已经载入与此同时在后台拉取应用数据与资源并稍后呈现给用户这样的方式取得了不错的效果iOS 很快给大家留下了“启动速度快”的好印象毕竟早期 iPhone 宥于硬件条件限制很多应用从点击图标开始加载到可用状态几乎都要花上两三秒如果显示一个黑屏那确实是太令人不耐烦了而到了今天随着硬件机能的飞跃iOS HIG 里已经不再建议开发者把应用截图作为启动画面而是建议开发者尽最大努力避免启动画面As much as possibleavoid displaying a splash screen or other startup experience)。

实际上标准的 Android 应用的启动也是这么一个逻辑: 先载入应用的框架当然在 Android 上不是图片而是实打实的应用框架),同时在后台拉取应用内容之后呈现给用户详见: Android Design in Action —— 初期体验上一个版本的知乎 Android 客户端就是这么做的体验也相当之不错

(Image Credit:+Android Developers

可以看到从最开始 Apple 就没打算让启动画面变成现在的 Splash Screen 的模样但是不知从什么时候开始越来越多的开发方开始打起了这块屏幕的歪心思开始的时候仅仅是在框架图片上加个公司 Logo 强化一下品牌什么的然后就不知不觉的变本加厉连框架图片都不要了直接变成了一张公司 Logo甚至是广告什么的…… 启动画面就这么变了味儿演化成了 Splash Screen

目光转回安卓这里大家都应该知道在国内尤其是国内的大公司安卓从来都是 iOS 的附属品iOS 方面怎么搞安卓方面也亦步亦趋跟着于是当大家在 iOS 应用上把启动画面搞成了各种公司 Logo 和广告之后安卓应用当然是逃不了一劫只能乖乖跟着改而且在国内他们甚至可以在 Splash Screen 上加入可以点击的链接……

那么为什么 Apple 和 Google 都把 Splash Screen 看作过街老鼠恨不得除之而后快呢?

首先最明显的一点就是现在的机能与应用配合已经不需要那么长的时间来加载应用资源了但是即使时至今日依然有一些应用由于优化差劲等原因依然需要耗费很多时间来启动比如Path……)。在理想的状况下用户点开这个应用到应用已经完全准备就绪之间的时间应该是短于一秒甚至五百毫秒这个时候加入 Splash Screen只会拖慢应用的启动

其次启动画面会打断用户的思考很多时候用户是在心里带着一个特定的任务打开应用的比如计算器当然,也许知乎用户并不会经常带着任务打开这个应用吧)。此时如果应用给用户闪了一个带有其他信息的 Splash Screen有一定的几率会导致用户一瞬间忘记掉自己原先的任务 —— 在先前的一篇文章我怒斥了 Smartisan ROM 计算器那极为糟糕的设计就是因为它的界面设计会让用户在启动它的瞬间看到视觉错觉而导致忘记自己原先的任务对于计算器这样一个应用让用户忘记自己打开它是为了什么简直是不可饶恕的错误同理Splash Screen 的加入也让很多其他的应用犯下了这样的错误

而在 Android 上这个问题会变得更为严重 —— Android 作为一个多任务系统非常经常需要在应用之间跳转当用户心里带着任务从另一个应用跳转到这个带有 Splash Screen 的应用时他有可能会因为被 Splash Screen 吸引而一时忘掉了自己原先进入这个应用的目的严重的阻碍了跨应用交互体验另外由于多任务的特性应用往往会有很多个不同的入口 —— 有的时候是直接进入主屏幕有的时候是进入某个子层级有的应用更因为加入 Splash Screen 而打断了导航流程体验极其糟糕

若是要在应用中加入 Splash Screen就必然需要额外的资源很多国内应用的 Splash Screen 是一张图片而在 Android 屏幕分辨率如此碎片化的今天准备 Splash Screen 使用的图片无疑会占用很多空间更令人感到哭笑不得的是有些国产应用的启动器没有为不同的屏幕分辨率/比例进行优化在 Nexus 4魅族 MX 2/3 这样非主流/标准分辨率的机器上显示的就是一张拉伸过的图片丑陋之极

不管你的 Logo 有多好看都没必要专门用一个 Splash Screen 来展示 —— Android 标准 Action Bar 上已经留了一个位置给应用的 LogoOops如果这个应用采用的是 iOS UI 的话那 Top Bar 上确实是没有放 Logo 的地方呢)。更何况想要呈示应用品牌的话还有很多更好的办法为什么非要选择 Splash Screen 这种最不讨喜的办法呢?

更重要的是不管你的 Splash Screen 做得多精美好看它都是在浪费用户的时间而当 Apple 最早提出启动画面得概念时是为了让用户觉得应用启动迅速响应灵敏而这个出于好意的决定今天却被各个开发商用来无端浪费用户的时间作为一个移动应用内容和功能才是第一要义而应用多显示一毫秒 Splash Screen就是多浪费了无数用户一毫秒时间Android 的设计原则特别强调了 Simplified My Life 以及 Make important things fast不就是为了避免用户的时间被无端浪费? 开发方没有任何的理由给用户增加无谓的等待人们已经在生活中等待了足够多的了: 等地铁等红灯排队等待网页内容加载等待下载化妆/等待伴侣化妆…… 为什么还要再让他们在应用里浪费时间呢? 更何况智能手机本就是为了减少我们的等待而生的

题图来自 How To Do In Java

iOSAction BarAndroid
下载极客公园客户端
iOS下载
反馈