跨平台设计探讨:如何为 Android 平台做好设计

跨平台设计探讨:如何为 Android 平台做好设计

Ruthia 何如佳Ruthia 何如佳
最近在 Facebook 遇到一些年轻设计师,说在 Medium 上读了我写的关于 Android 设计文章,专门约时间和我讨论。我这才突然想起 2 年前确实写过一篇探讨跨平台设计的文章,不禁倍感欣慰:没想到在互联网这么快节奏的行业,这篇文章还没有被时间淘汰。虽然已经很久没有再做 Android 平台的设计工作,但看到现在 Android 平台愈加壮大,尤其是身边一些挑剔的设计师朋友也开始用 Pixel 来替代 iPhone。于是萌生了把中文版本发布出来的想法,希望分享给更多国内做 Android 平台开发与设计的朋友。特别要感谢 UXCoffee 的 Hoka 和 Riceman 编辑。

原文:medium.com/@rujia/how-t

为 Android 平台做设计是一件体力活。你可能案头常备 4 台手机,来测试各种尺寸和分辨率,还要画连程序员都一知半解的 9-Patch(一种可以拉伸素材的切图方式)。

除了分辨率和技术上的挑战,安卓设计简直充满惊(jīng)喜(xià)。你要随时做好准备,不要被某个小众手机上的界面效果吓到。有时惨不忍睹的色差会让本该是蓝色的地方变成了绿色,有时在某个非典型设备上,界面会发生严重的位置偏移。


世界上有多于 18,796 种不同的 Android 设备(截至2014年8月)

这大概就是为什么你很难找到处女座的 Android 设计师——因为你太难保证最终呈现的效果与你的设计一致了。

让最终界面完全按照你的设计意愿呈现,只是一名好的 Android 设计师的入门试炼(网上已经有很多资源告诉你如何通过这一关)。通过入门考试之后,你会发现接下来的考验,却比入门考核还要难得多。最大的难点,不在于设计技法,而在于……

妥协的艺术


如果你在一个 20-30 人的的中型团队,你可能会和产品经理、程序员、用户研究员、文案等人密切合作。如果你是专注做 Android 的设计师,那么很有可能你还要和至少一名 iOS(或者其他平台)设计师合作。

在这样一个团队中,就像一个成熟的人会渐渐彻悟人生一样,渐渐地,你就会明白:

设计是一种妥协的艺术。

设计是一个不断探索的过程。在一开始,你可能会沉浸于某一个方向上的探索,比如从创意开始,但你很快会发现,设计的探索是有边界的。定义这个边界的因素可能会有所不同,但几种比较常见的因素有:产品目标,技术资源,用户体验创新性。如下图所示:

设计出创新的体验固然好,但也要考虑是不是易于大众接受;工程师资源永远是有限的;产品目标和进度的实现需要设计的配合。如何在探索的过程进行取舍,是一种艺术。

在几个月的探索之后,如果你足够幸运,你将最终发现一个平衡点,可以让这几个因素都得到比较大的满足。我们把这个点称为完美平衡点(上图中的红色圆点)。往往一个好的设计就这样诞生了。

但如果你是一个 Android 设计师,情况很可能会更复杂。一方面,在美国,因为 iOS 的市场占有率略高,iOS 平台往往有更多的工程师资源和更快的开发速度。而 Android 因为设备的多元化、需要兼容适配等原因,往往会拖慢进度。另一方面,随着近年 Google 不断优化提升 Android 的体验,两个平台的体验已经越来越相似,彼此也更加依赖。

它会对你的设计产生什么影响呢?

我们在图上加上 iOS 的设计探索范围(蓝色边框)后,你的 Android 设计将受限于 Android 和 iOS 的设计探索范围,也就是下图中蓝色填充的区域:

而且,当你开始在 Android 平台进行设计时,如果一个功能已经在 iOS 上实现了,而解决方案又恰好落在 iOS 设计的满意平衡点,那么留给 Android 的探索边界就大大减小——除非资源很充足,否则团队会尽量避免用两种截然不同的方式实现同一应用上的同一功能。所以,你的设计探索会围绕着 iOS 的满意平衡点(下图中的蓝点)。这时,下图中蓝色填充的圆形区域才是你真正可以探索的边界:

并没有剩下太多空间,是么?

其实上图已经是一种比较幸运的情况,毕竟 Android 的完美平衡点(上图中的红点)还在你的探索范围内。如果你没有这么幸运,你的探索范围甚至可能远离 Android 的最佳设计点,如下图:

很遗憾,边界变小可能让你不得不错过本来在 Android 平台上的满意平衡点。

另外一个问题是,现在很多团队喜欢快速迭代的 Scrum 开发模式,它会让情况变得更加复杂,你的 Android 设计可能需要随着 iOS 的设计改变,就像这样:

这种开发模式在大多数情况下可以达到还比较满意的效果,但也是柄双刃剑。 Scrum 的设计初衷是,鼓励你节省做决定的时间,并把节约的时间投入在真正的开发上。 但久而久之,它会让你在做决定时,不想投入太多时间进行充分考虑,因为你知道如果出现问题,随时可以再做修改。但矛盾的是,缺乏充分考虑做出的决定,往往会带来新的问题。 这种恶性循环带来的后果,就是在迭代中成堆的被抛弃的代码或者设计稿。而在一个现实的团队中,这种结果无论对资源利用,还是团队士气,都是有弊而无利的。 更糟糕的是,iOS 的设计师可能已经知道,当自己做出决定时,这其实只是无尽探索中的其中一站,但 Android 设计师可能已经开始设计并将它考虑在内,「决定」听起来应该是不会轻易改变的,不是么? (如果你是 Scrum 的粉丝,我想说,Scrum 对于目标比较明确的产品是一种很好的开发方法,但对于一个没有很清晰解答方案的问题,它可能并不是最合适的方法。)

这些都是在真实的产品设计开发中,Android 设计师可能遇到的挑战。

如何为 Android 平台做好设计

随着我努力了 8 个月的新产品顺利发布,我想和大家分享一些自己的经验——关于如何为 Android 平台(或者非主优先级的平台)做好设计。这些经验也许不适用于所有的产品、团队,但也许会对你有所启发。

1. 永远不要只局限于一个平台


就像之前提到的,设计是做妥协的艺术。而做妥协,首先需要收集足够多的信息,以便理解所受的限制和各方的需求。

我之前提到过,由于近年来平台设计有逐渐接近的趋势,Android 的设计边界越来越受 iOS 所影响。iOS 的设计师可能只需要考虑 iOS,而 Android 则永远不能只考虑 Android。只有对两个平台有同样深入的理解,才可以让你更方便地进行设计。

如果没有对 iOS 平台的深入理解,那么你将很难理解每一个 iOS 设计背后的原因。比如,这个菜单之所以放在这里,多大程度上是因为它真的对用户体验有帮助(将会影响到设计边界中的用户体验因素),还是只是因为它是 iOS 的系统惯例(能够减少工程师的工作量)?

理解这些,能够让你更好地理解你所面临的设计边界,而理解设计边界则是你进行设计的基础。 而且,如果你可以理解 iOS 平台做设计决定时的种种考虑因素,你会得到一些意外的惊喜。比如,大家都知道 iOS 的系统限制会相对严格。很多时候,因为系统上的限制,一个 iOS 上的设计并不能达到最好的效果,而 Android 则不一定有同样的系统限制,自由发挥的空间更大。不要轻易因为 iOS 的设计已经先入为主,而放弃这些 Android 上的「特权」。 一个例子是由 Joey Flynn 设计的 Facebook Messenger(脸信) 的 Chatheads (快聊),它是一个浮动在桌面上的快捷入口,让 Android 用户可以在使用其他应用时,也收到消息提醒,并且不用离开正在使用的应用,就能回复 Facebook Messenger 内的消息。这个功能在 iOS 上因为平台限制,所以无法实现,但是在 Android 平台上极大提升了用户活跃度。
(Android 版 Facebook Messenger 的快聊功能 - 一个浮动在桌面上的快捷聊天入口。图片来源:ethicalhackx.com/wp-con


2. 尽早参与讨论,让你的想法产生影响


在思考如何把一个 iOS 上的设计移植到 Android 设备时,有时在你重新拆解、探索要解决的问题后,你会发现一个非常完美的、新的解决方法,它不仅可以达到一个新的平衡点,还可以对现有的解决方案本身有极大提升。


你可能有非常充分的理由,但在这个时候,要推进你的解决方案,会很困难。在团队做出决定之前,也许大家可以客观地考虑设计的利弊、做出选择,但当你们已经做出了决定,想要改变就会非常困难。 产品经理还要考虑 iOS 的进度,也许他们的工程师已经在开发,甚至开发完了这个功能,也许……这些都让决定做出之后,很难被改变。

所以,尽量从一个设计问题开始浮现的时候就加入讨论,开始思考,并让你的想法产生影响——即使代价是它会大大增加你的时间投入。你最终会发现回报是值得的。毕竟,跨平台设计是一个互相协作、沟通的过程。

3. 沟通,沟通,主动沟通


重要的事情说三遍。在 iOS 平台做决定时, 可能不会有时间考虑 Android 的情况——这完全可以理解,毕竟只考虑 iOS 一个平台已经够他们忙了。但对你来说,他们做出的决定有时却会对 Android 产生极大的影响。这时候,主动沟通将是关键

即便是做出决定后,这种沟通也要持续进行。还记得这幅图么?
因为一个大的项目是由无数细节组成,即便是一个微小的细节变动,也需要花很多时间在跨平台协调上。最好的方法就是,时刻关注其他平台的动态。

换言之,不要害怕成为一个「好奇宝宝

如果有一天你惊讶地发现,一个其他平台上的变动,没有及时通知你——即使你要因为这个变动而修改很多个相关的界面,也先请保持冷静。不要首先责怪别人没有告诉你,而要主动询问并寻找相应的解决方法:试着理解这个改变背后的原因,是不是 Android 平台也存在相似的问题需要解决,还是没有受到影响。如果有可能,想想看在未来如何更早参与这个决定。

毕竟,有的时候,可能你在 Android 做了一个界面上的改变,也会忘记通知其他的平台。有合作的地方就需要在沟通上投入精力,这是由人类的天性决定的。互相的理解与支持,就是跨平台合作的精神。

4. 维护统一性


有些时候,你可能会被一个 Android 平台量身定制的设计所吸引,它是你多天思考得出的精华,可以完美解决用户遇到的问题,甚至带来更好的体验,而且又非常具有 Android 的平台特色。但仔细想想,它带来的价值真的可以弥补平台统一性的损失吗?

如果你没办法得到很确定的答案,那就适当妥协吧——让这个解决方法腹死胎中。

也许有些设计师会开始对自己存在的意义产生质疑:公司付钱雇我当 Android 设计师,不就是因为想要具有 Android 特色的设计吗?

虽然表面上是这样,但无论是使用统一的设计,还是分开使用不同的设计,在这个做决定的过程中,你已经用自己对 Android 系统的了解与经验,为团队做出了贡献。

维护界面在不同平台的统一性,可以帮助人们更好地识别 App 的品牌。而且,如果未来设计再次改变,比如 iOS 要在主屏很醒目的位置增加一个很棒的功能,而这个位置……不幸地在 Android 上已经别有他用,但又没有其他地方比它更加合适。这种情况下,难道你要重新设计主屏?如果这样,其他相关的界面又怎么办?

没有人喜欢遇到这种的情况。所以相信我,保持统一性,有时会帮助你节省很多的时间和本可避免的争论。

当然,更多时候,具有平台特色的设计还是可以带来更多的价值。它可以让这个平台的用户感受到团队对这个平台的用心,而且不会增加很多学习成本和未来开发设计过程中的「技术债」。那么,就跟随你的判断与直觉吧。

最后

我写下这些,是想让更多人了解,跨平台合作的产品设计面临着很多挑战。这些是我希望自己在开始设计的时候就意识到的。希望能通过分享,帮助后来人绕过一些坑。

同时,我们还可以从组织结构上进行一些优化。比如,在计划跨平台开发时,更多思考如何降低组间沟通的成本,避免重复的迭代工作量,从根本上降低合作的工作难度。

成为一个优秀的跨平台设计师,不仅要求更多的时间投入,还需要过人的沟通能力、对各平台同样深入的了解。更重要的,还有永远不嫌多的换位思考的合作精神。

这是一段充满挑战的旅途,当然,也充满了收获。
文章被以下专栏收录
12 条评论
推荐阅读