给产品经理讲技术
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

“骗人”的动画

从理论上讲,即使应用没有任何动画也是可以正常使用的。用动画展示一个界面出现的过程似乎在拖慢用户使用应用的节奏,可是完全取消动画展示会带来用户更不能接受的体验。

现在,很多应用在动画上下的功夫可能不比功能研发少,各种滑动、翻转、回弹的炫酷效果让人眼花缭乱。动画除了承担这些特效任务,还承担着施展“障眼法”的任务,这种任务和近景魔术拥有相同的目标——在用户的眼皮底下做些小手脚而不被发现。例如常见的闪屏,它除了承载运营功能,还有一项任务就是减少应用启动耗时带来的体验下降。应用的启动是一个从无到有的过程,在这个过程中需要准备大量供应用正常运行的资源。一般来说,越复杂的应用启动耗时越长,这是一个难以避免的问题。如果这个过程没有闪屏来“遮羞”的话,用户就会遇到点击应用的图标后,要等一秒甚至更长的时间才能看到应用界面的情况,这种体验太糟糕了。

所以,开发者利用闪屏展示的时间,把应用启动的准备工作在闪屏“后面”做完,同时,还能在闪屏上进行一些运营活动,可谓一石二鸟。

久而久之,开发者越来越依赖用闪屏遮住自己糟糕的代码设计,将各种耗时操作不加优化地向闪屏阶段塞。有一天用户觉得烦了——这闪屏时间怎么这么长?能不能缩短点,甚至干脆不展示闪屏?产品运营人员也觉得运营需求不是天天有,默认闪屏也没必要显示那么长时间,甚至可以去掉。这时,开发者才意识到这闪屏已经不是想去就能去掉的。去掉闪屏后,用户可能会看到一团糟的界面,在应用正常运行所需的资源还没有完全准备好的时候进行操作也会产生各种异常,使之前被闪屏挡住的缺陷全都赤裸裸地暴露出来。于是开发者开动脑筋,想到了办法——退出应用的时候截一张界面的图,启动应用的时候用这张截图代替闪屏做启动动画,看起来就像取消了闪屏。如果哪天用户发现某个应用的启动变快了,但是进了界面却没办法操作,就很可能被“骗”了。

还有很多应用支持抠边滑动,它的展示效果是应用的很多界面像纸片一样叠在一起,“搓”掉上面的界面,下面的界面就露出来了。但很多应用在最初设计时选择的就是单层视图,如果要迎合趋势,把单层视图的层次结构修改成天然支持抠边滑动的多层视图层次结构,将是一项浩大的工程,仅仅为了动画效果的话,有点得不偿失。于是开发者又开动脑筋:不如在用户滑动时在上层添加一个有层次的、天然支持抠边的视图结构,把当前页面内容和“抠出来”的页面内容做成截图,放到这个有层次的视图结构中。同时,用这个视图结构替换当前的页面,这样用户就会感觉到滑动时界面的层次了。动画完成后,还得把截图去掉,不过首先要悄悄地把被截图挡住的界面换掉,这样去掉截图时用户也感觉不到中间有跳变的过程。

是的,用户又被“骗”了。对用户来讲,被“骗”也无所谓,只要体验能得到保证就行。对开发者来讲,上面两种只算是入门级“骗术”,很多时候因为各种原因(功能的耦合等),想做一些动画上的调整真的很复杂,开发者为能够“骗”得恰到好处绞尽脑汁。