iOS 停止不必要的UI动效设计
http://www.cocoachina.com/design/20151124/14400.html
前言:这篇短文将会探讨UI设计中动画的过度使用,并将其与早期的视觉设计进行对比,提出一些对于有效的GUI动效设计的建议。
我们将在下文中,简单探讨如何改善下面的这个交互。
UI动效设计的反面案例(线上Demo)
注:这个反面案例并非假设,而是来自近期的真实客户案例。
概述
自从 70、80 年代首个光栅图像在CRT屏幕出现以来,人们对于(数字)视觉设计的态度一直在不断进化。与其他艺术领域不同,在数字设计领域显露的趋势,与使用设备的发展史紧密相关。
设备能力的提升有目共睹,显示器技术使分辨率从CGA320*200,到VGA的640*480,然后到SVGA的800*600,到现在已快速提升至4k及以上。
类比视觉设计发展历程
动效设计正在经历成长的疼痛,正如在当年90年代和21世纪初的视觉设计。追溯视觉设计进化发展的过程,有助于我们去理解现阶段的动效设计。
21世纪初期的网页设计
在更精妙的设计语言出现之前,设计师们在初期阶段容易滥用新功能,这是正常的。90年代末和21世纪初的界面设计师,应该还记得以阴影、斜角、高光,无留白这特征的过度设计。当设计师们着迷于新媒体,并陶醉于像素的奇妙时,这一结果再自然不过了。
扁平化设计
扁平化设计示例
不管你喜欢与否,扁平化设计在设计圈中已成为主流思想。所有的主要系统平台(Android、iOS、OSX、Windows、Windows phone)都已经开始拥抱这种极简设计语言。同时,它还主宰着高速发展的网页设计。
扁平化设计是视觉设计思考成熟的体现。它是一个自然的进程,一方面是被潮流和时尚驱使,另一方面折射出业内人士终于逐渐掌握了数字媒体 。
动效设计
现阶段的动效设计,可以类比视觉设计史的“阴影阶段”。
网页动效能力有了显著提升,得益于CSS中的过渡属性(transition)和被硬件加速支持的变形属性(transform),以及正在发展的标准,如JS动效(JS Web Animations)。
另外,现在的移动设备由于其不断精进的性能,以及多核、多存储、高dpi等优越的特性,可以流畅地输出60fps动画效果。
让所有东西都动起来!这样的动效仿佛让人回到了1999年。
考虑到现在是UI动效的早期设计阶段,设计师试图通过增加动效来增强视觉亮点,和曾经的阴影和斜角没什么不同。
但是我很确信,与视觉设计不同,动效设计的成熟不需要耗时15年。
过度的动效使用
无意义的动效随处可见,它们也不仅出自业余设计师之手。作为用户,我们可以很轻易地发现这种妨碍着你的动画,它阻隔着你和你的目标,令你困扰皱眉。作为设计师,你需要意识到你的UI设计并非什么娱乐。没有人只为看着酷炫的动效爽,就使用你的app或者网页。
UI动画的使用反例
OS X的全屏动画
桌面端和移动端都有无数的糟糕UI动画示例,其中之一,就是OS X的窗口切换到全屏模式的过渡动画。因为它来自因前沿的设计感著称的苹果公司,且是旗舰产品的主要特点,所以格外令人困惑。
(视频:5-yosemite fullscreen.mp4)
这个UI动画有以下几个问题:
缓慢
非必要
不可设置(除非通过命令行修改)
如何知道你的UI动效使人厌烦?人们会在博客上写文抱怨。无数探讨如何加速或禁用动效的博文和论坛问题帖,都很有力地说明这个转场动效除了让用户烦恼,毫无作用,这是UI动效设计的一个大忌。
动效设计案例研究
我们使用一个简单设计做示例,它来自我最近为客户进行的工作。这个交互包含了一些糟糕的设计决策。
UI动效设计的反面案例(线上demo)
这个设计包括如下问题:
遮挡了界面的蒙层
缺少后台正在执行操作的指示
动画缓慢
动画非必要
这个动画最烦人的一点,是在耗时间的网络请求完成后,这个动画才发生,导致增加用户额外的等待时间。
动画是否必要?
首要问题理应为:这个动画提升了用户体验吗?
上述交互案例中,出现了正确使用UI动画的绝佳时机。考虑到这一交互需要一个耗时100-500毫秒的网络请求,这是个利用动画来掩盖请求耗时的绝好机会。
设计改进
改进1(线上Demo)
这是很小的一个改进,增加一个加载指示器,告诉用户正在等待额外的数据。然而,弹出动画是多余的,减缓了用户流程。
改进2(线上Demo)
删减了不必要的滑出动画,使用户在操作后即可看到所需数据。蒙层的使用阻挡了用户视图,是多余的打扰。
动画——障眼法
延迟,即使是网络应用的延迟,通过缓存和预读取资源,也可以减少甚至消除。然而这种方式也有其问题。使用流量有限的移动网络的用户,并不愿意应用预读取大量可能根本不不需要的数据。
考虑到延迟并不总能完全避免,我们可以使用动画制造更利落的错觉。这种情况下,使用分层动画尤其有效。
改进3(线上Demo)
改进如下:
使用了不遮挡界面的加载指示。
重叠的动画分散了用户对数据读取延迟的注意力。
渐进式加载
渐进式加载可用来进一步减少可感知的数据加载时间。用户基本不可能立刻用到应用展示的所有数据。通过分块下载、数据可用后再显示信息的方法,用户会产生应用比实际上响应更及时的错觉。
改进4(线上Demo)
很多留言的人,包括来自用户体验社区的Isak Falch,推荐我使用“扩展式卡片”,这个方法最切实的好处是保持了用户对上下文环境的感知。
作为另一种备选方案,也已经实现如下:
改进5(线上Demo)
感谢大家的建设性意见!
结论
我们要注意,不要重复过去形式超越功能的错误。动画可以且应该应用于加强网站或应用的用户体验,而纯装饰性的动画效果,不太可能有助于产品变得更好。
长时间的网络请求,是使用动画障眼法,缩短等待时间感知的好机会。
注:如果你对这篇文章感兴趣的话,你应该也会对《有效的原型设计》感兴趣。
iOS 停止不必要的UI动效设计的更多相关文章
- 前端读者 | 前端用户体验-UI动效设计
本文来自互联网 @羯瑞 整理 UI动效现如今在 APP 和网页中几乎已经成为了基本的组成部分,经过仔细打磨的 UI动效对于整个界面的提升是显著的. 动效呈现出状态切换的过程,展现了元素之间的逻辑关系, ...
- 很好的UI动效设计参考
toolBar下拉:
- Google I/O 官方应用中的动效设计
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/jILRvRTrc/article/details/82881743 作者:Nick Butcher, ...
- 拒绝枯燥,有意思的 Loading 页面动效设计
互联网时代,网络“提速”日益频繁,人们打开Web或软件的速度越来越快,一般页面缓冲和加载地过程也是几不可查.然而,在某些情况下,例如软件急需加载大量页面,首页急需加载大量内容,用户下载文件过大,甚至是 ...
- Principle如何制作动效设计?简单易学的Principle动效设计教程
Principle for Mac是一款新开发的交互设计软件.相比 Pixate 更容易上手,界面类似 Sketch 等做图软件,思路有点像用 Keynote 做动画,更「可视化」一些. 如果您还没有 ...
- 新版MATERIAL DESIGN 官方动效指南(一)
Google 刚发布了新版Material Design 官方动效指南,全文包括三个部分:为什么说动效很重要?如何制作优秀的Material Design动效及转场动画,动效的意义.新鲜热辣收好不谢! ...
- Web动效研究与实践
随着CSS3和HTML5的发展,越来越多狂拽炫酷叼炸天的动效在网页设计上遍地开花,根据最新的浏览器市场份额报告,IE6的份额已经降到了5.21%,这简直是一个喜大普奔的消息,做动效可以完全不care低 ...
- 新版MATERIAL DESIGN 官方动效指南(二)
继上一篇,本文继续第二部分,从动效的速度.动态持续时间.通用持续时间和缓动曲线4个部分,教你创建平滑一致的Material Design 动效.再系统的干货都比不上官方的动效指南,西瓜就在这,赶紧来捡 ...
- 百度MUX:APP动效之美需内外兼修
移动互联网时代已经到来.APP已如天空的繁星.数也数不清.随着手机硬件的不断升级,实现炫酷且流畅的动效不再是遥远的梦想.假设你是APP达人,喜欢试用各种APP,你肯定会发现越来越多的APP開始动效化. ...
随机推荐
- webpack4.0打包的时候一些技巧
4.0的webpack要比之前的版本强大的不是一点点 打包的时候也做了很多优化 然后说一些这段时间发现的有趣的技巧 1. 打包出来的文件很大,不知道是什么原因可以用 webpack-bundle-an ...
- 查找IE中网页的源代码
一般我们在查看网页的源代码时,在网页上右键就能点击“查看源代码”.但是有些网页的右键功能被屏蔽了.这时候我们可以在ie菜单栏的“查看”选项里“源”查找. 如果发现ie菜单没在的话,点击键盘上的“Alt ...
- git 创建.gitignore忽略不必要的文件
问题: 创建java项目,使用git提交,有时需要忽略不必要的文件或文件夹,只保留一些基本. 例如maven创建好后,实际开发中我们只需提交:src,.gitignore,pom.xml等文件 但是有 ...
- 学习mysql数据库
1.数据库是怎么回事 数据库是存储数据的永久空间,通过一种特殊的方式存储到硬盘中 数据库分为关系型数据库和非关系型数据库 mysql查看数据的方式为:结构化查询语言(SQL语句) 访问mysql数据库 ...
- react高阶函数组件
Layout as a Higher Order Component // components/MyLayout.js import Header from './Header'; const la ...
- tr的display属性出现td的colspan无效问题
http://www.aichengxu.com/other/9262680.htm 今天在做项目的时候发现用javascript控制 tr 的显示隐藏时,当把tr的显示由“display:none” ...
- beego 入门 - 常见错误
参考网址:http://beego.me/quickstart 按照官网教程,执行命令 $ go get github.com/astaxie/beego $ go get github.com/be ...
- 移动端H5适配流程
(一) 由于手机生产商越来越多,不同手机的硬件尺寸又不尽相同,这就给我们的设计适配造成很大困扰.但我们可以围绕从基准分辨率设计,上下进行兼容适配的原则来进行快捷操作.以IOS阵营为例: 图注:移动适配 ...
- python类相关总结(持续更新)
__init__() 构造函数 __new__ () 在构造函数之前,用来创建对象的,返回值是一个对象,__init__指的是将__new__返回的对象作为self来传入函数中,后续参数两者都可以一样 ...
- 【Scala学习笔记】一、函数式编程的思想
1. 函数是头等值. 在函数编程中,函数也是值,与整数和字符串处于同一地位.函数可以像变量一样被创建,修改,并当成变量一样传递,返回或是在函数中嵌套函数. 函数可以当做参数传递给其他函数. ...