写给设计师,帮助大家消除恐惧。尽量通俗易懂,不会追求『技术术语』的严谨,也不希望被吹毛求疵。
看过交互水深系列的前6篇文章,大家一定感觉:Hozin对移动端好像没那么熟悉和偏爱,但是好像又能一下看透很多交互的本质。没错,如果长期设计Web界面,并且从事过桌面客户端的设计,那么移动APP是很容易理解,并且是简单到会把设计师变傻的存在。
创造力被抹煞,目前是个大问题。在很多设计师的作品集当中,普遍存在『带底部导航的首页』、『带返回的列表页』、『带返回的详情页』,这种千篇一律的APP设计。
诚然,主流中文用户已经习惯了这种『层层进、层层退』的结构,可是在Web界面当中,每个界面都设计一个返回,有点画蛇添足。并且,在桌面环境下,中文用户对浏览器的『返回按钮』并未形成习惯,设计『网页内返回』是个两难问题。
上图是移动Web设计中的常见错误,左上角的『返回』和浏览器的『返回』重复出现。
如果明确APP和Web的设计差异,也就不难理解:为什么微信小程序会把『菜单』和『关闭』设计在右上角?
作为设计师,不被时代抛弃,就要保持宽广的视野;除了抓住潮流,还要追本溯源,搞清楚差异的来源。
这个话题很大,也可以很小。如果觉得危言耸听,可以了解一下当年Symbian程序员如何批量失业。
互联网是Internet,万维网是World Wide Web,如果能分清楚二者,就不难理解客户端与web的差异,也就是所谓C/S结构与B/S结构的差异。
客户端软件历史非常悠久,早在二十世纪70年代人类就发送了第一封电子邮件(中国是1987年);而Web是1990年才诞生,属于新生事物。
客户端软件是什么呢?就是安装在操作系统上,能够通过网络与服务器远程交换数据的软件,通常称之为Client/Server结构,比如QQ和Foxmail。它的特点是:
如果上面这些都不太明白,那么只需要记住下面这句话:
Web浏览器是一种客户端软件,各种手机上的APP也是客户端软件。
客户端可以拥有各种强大的功能,甚至是破坏力,但是它们的开发维护有些繁琐。对于某些简单的任务,有点『杀鸡用牛刀』的感觉,于是人们发明了Web/HTML(准确来讲,并非发明,而是制定了标准)。
基于浏览器这种客户端,按照共同标准渲染和解释超文本,就形成了今天的Web,即在C/S结构基础上有了Browser/Server结构,例如各种网页和所谓H5。它的特点是:
显而易见,C/S结构和B/S结构在特点上截然相反,完全互补。同时,还有两个问题需要补充:
如果上面这些都不太明白,那么只需要记住下面这句话:
Web/HTML是一种可运行在任何浏览器/任何客户端当中通用标准。
第一,屏幕空间和性能所限,很难支持复杂业务;
手机的屏幕空间局促,大家都能理解,但是有朋友会说iPadPro这样的设备已经很强大了啊。没错,应对移动办公和娱乐,iPadPro还是可以的,但是真的用Pad做影视后期、3D建模、科学计算……目前来看还是非常有难度的!从电量和便携性的角度,移动设备还是以消息通知、事务处理、简单查看这类业务为主。
绝大部分复杂的控制业务都使用Web承载,而涉及到安全、计算、系统控制等领域的业务几乎是桌面客户端软件的天下(这些领域大量缺乏有经验的设计师!)。
第二,便携设备从心智上是单进程的;
iOS和Android从技术上都是多进程,但呈现的方式几乎是单进程,即在某一时刻,用户只在全屏环境下运行一个APP。这往往让设计师意识不到窗体(进程)之间传值、响应和实时同步的问题,设计思维变得简单(甚至比Web还简单)。
第三,交互触发手段太单一;
咦?有没有搞错!移动端提供了大量的手势啊,比如Tap、Press、Drag、Flick、Pinch、Spread……更何况还有触控笔哦……网页上只有Click和Hover而已,右键也只是个半残废,到底谁比谁少呢?好好好,你们赢了,但请不要忽略『键盘』的存在!虽然移动设备也能使用蓝牙键盘,但是除了网页之外,有多少款移动APP支持热键呢?热键对操作效率来说是神一样的存在啊!
更何况有了『触控板』这种神器,macOS和Windows上的各种客户端也完全可以Tap、Press、Drag、Flick、Pinch、Spread……
第四,官方设计指南太细致;
每当小伙伴拿着一个APP来问:为什么这个设计违反了官方指南?呃,Hozin想说Guidelines这种东西,本身就是个参考而已。虽然每一次版本更新都伴随Guidelines的更新,但是设计师们完全不必太在意,比起所谓指南,适配设备更有意义。
『指南』与『标准』,本身就是两样东西;指南是公共原则,标准才是严格规范;如果严格按照指南,那设计师就没存在的意义了;遵照指南去建立实用标准,才是设计师的价值,甚至必要时可以违背指南。
如何区分使用原生/H5/Hybrid
前文提到,几乎所有的客户端软件都能使用WebView,但不能简单的理解为:APP中嵌入H5就是Hybrid混合编程。确切的说,只有原生代码和H5产生数据交换的开发方式,才能算作真正的Hybrid编程。
如果理解APP只是便携操作系统中的一种C/S结构的客户端,H5是运行在APP里的一种B/S结构。那么,就有下面的总结啦!
原生代码的优势:
原生代码的劣势:
H5的优势:
H5的劣势:
Hybrid混合编程实际集合了原生代码和H5的优势,于是有下面几个原则:
几乎每一个主流APP都会用到Hybrid混合编程,只是『大量』还是『少量』的差异,必须要嘱咐一下各位设计师:
混合编程提高了对程序员和测试人员的要求,成本较高;在设计过程中,请一定和开发人员保持密切沟通,确认技术方案的可行性。
世界上没有傻瓜,只有懒汉。以下这些期望都非常具体:
通过以上学习与锻炼,可以扩展视野和技能,提升对交互本质的深层认知。
总之,不要再把时间浪费在什么区块链、VR、人工智能之类的时髦词汇上了,那些并非凭空产生,只是近期进入了大众传播视野而已。
既然来了,说些什么?