点击关注异步图书,置顶公众号

每天与你分享IT好书 技术干货 职场知识

​系统状态的可视性是用户界面设计中最重要的原则之一。用户希望在使用产品的时候体验到足够的控制感,即他们想要及时知道和理解产品的当前状态,尤其是当系统忙于处理任务的时候。动态等待符是当产品在运行任务或加载时为用户提供系统状态的最常见形式。

我们应该去深入了解动态等待符对界面设计的帮助,因为这些信息无疑能够帮助我们设计更好的产品。在本文中,Nick Babich介绍了几种主要的等待符的设计形式,并提供了关于何时及如何使用这些等待符的建议。

1. 好的交互设计提供及时的反馈

能够做到即时响应无疑是最好的,但总有你的产品不能提供即时反馈的情况:可能由网速慢、操作本身需要长时间完成(例如系统升级)等原因导致。在这些情况下,为了减少用户的心理紧迫感,你需要告知用户你的产品正在为满足他们的需求而努力工作,并且在逐步接近目标。因此,你应该在合理的时间内向用户告知你的产品在做什么、做到什么程度了。

2. 总是给予一定程度的即时反馈

用户在发起动作的那一刻就开始等待了,然而最糟糕的情况是没有任何指示来告知他们系统已经接收了请求。当产品没有告知用户它需要一定的时间去执行任务时,用户通常会认为该产品没有接收到用户的请求,他们会再次尝试操作。缺乏反馈会引发大量额外的点击或点触。

产品应该对用户的任何操作 (例如点击按钮或下拉刷新)提供相应的即时反馈。在接收到用户的操作请求之后就立即提供相应的视觉反馈,以便用户了解产品已经收到请求并开始处理了,如图1所示。

​图1 下拉刷新的操作(图片源于Behance)

3. 为长于1s的进程提供进度指示

当产品的响应速度处于0.1~1s时,尽管用户能够感觉到一定的延迟,但他们的注意力仍然会维持在当前任务上。但是当响应速度长于1s时,用户就会开始走神,然后发现产品的响应速度不够快。

因此,对长于1s的处理过程就需要用进度指示器减少用户的不确定感,并提供给用户一个等待的理由(注意:我们不推荐使用加载时间低于1s的动态指示器,因为它们的闪现可能反而容易增加用户的烦恼:刚才有个什么过去了……)。动态的进度指示器能够舒缓用户等待过程带来的负面影响,延长用户对网站或App的注意时间。

4. 等待符的种类

等待符让用户知道产品需要更多的时间来处理他们最近一次的请求。

不确定的等待符是最简单的进度指示符,它们告知用户需要等待任务处理的完成,但并不确定需要多长时间才能完成任务,如图2所示。

​图2 无限循环模式的等待符(图片源于Behance)

不确定的等待符通常用于能够快速完成的处理(2~10s)。若长于这个时间,让用户盯着此类无限循环的旋转符/线条会增加网站的跳出率或导致用户关闭App,如图3所示。
与之相反的是确定的等待符,能够大致(或准确)告知用户完成任务需要的时间以及任务处理的进度,如图3所示。使用这种等待符能够提高用户的等待意愿。确定的等待符是等待符中最具信息量的一种:展示当前的进程、告知完成度和剩余工作量。看着视觉标识不断朝着完成指示接近能够使用户平静下来并且更加愿意等待。

​图3 不确定的等待符(左)和确定的等待符(右)(图片源于 Material Design)

5. 两种常用的等待符

循环动画和百分比进度指示是两种常见的等待符。

(1)循环动画

大多数的循环动画不提供确定的进度信息,并多在延迟情况下发挥作用,包括长时间的延迟。这种等待符的应用场景通常带有负面的影响。例如,Apple iOS默认的加载图标从设备启动到网络问题以及数据加载都有应用,如图4所示。但是,用户并不喜欢看到没有其他进度或时间标识只是不断循环的旋转符。

​图4 iOS的加载指示符(图片源于 appance)

(2)百分比进度条

百分比进度条会明确告知用户任务处理从0%~100%的进程,基本不存在数值回退。百分比可以用线条或环形线的形式实现,如图5所示。

对于10s及以上的任务处理过程,百分比指示是比较好的选择。根据Jakob Nielsen关于响应时间的研究,10s是用户的注意力维持在某个任务上的极限,一旦超过这个限度,用户便会迅速失去耐心,尤其是在用户不知道他们需要等待多久的时候。

​图5 条状(左)和环状(右)进度条(图片源于Adobe Stock)

6. 等待符的设计建议

如果不能避免,那么至少应该努力使等待变得愉悦,可以采取如下建议。

(1)告知用户等待/延迟的原因

用户如果知道了等待原因,他们可能会变得更加耐心。设计者可以通过增加额外的文本信息来告知用户,产品正在处理什么或者其他必须等待的原因,如图6所示。

​图6 Skyscanner告知用户,产品正在从现有的供应商中搜索最适合的航空结果

(2)对长时间等待的任务,给用户一个预计的完成时间

不需要完全准确,简单的“这个任务大概需要5分钟”就足以鼓励用户完成等待,如图7所示。

​图7 iOS在系统更新时告诉用户大概的完成时间

(3)告诉用户已经完成了哪些工作

对于那些耗时但又无法预估完成时间的任务,用百分比的进度指示明显是不合适的。但仍然可以通过告知用户“已经完成了哪些工作/步骤”,如图8所示。通过这些反馈能够帮助用户估算出完成整个任务需要的时间。

​图8 当不能准确监控运行进程时,考虑展示已完成的步骤

(4)不要让进度条停下来

通过进度条的显示能够帮助用户对产品的处理能力形成一定的预判(如图9所示)。因此任何预料之外的停顿都可能被注意到,进而影响用户的满意度。最糟心的事情莫过于进度条走到99%就不动了。不过我们还有补救的机会——通过即时和稳定的进度显示能够在一定程度上掩盖不算严重的延迟。

​图9 不要让进度条停下来(图片源于Behance)

(5)让进度看起来更快一些

用户感知到的处理速度和实际的处理速度一样重要。你可以让进度条在刚开始的时候慢一点儿,然后在结束前移动得更快一些。这样用户就会感觉产品的处理速度快于预期,如图10所示。

​图10 让进度看起来更快一些(图片源于Behance)

(6)应用视觉干扰

有创意的等待符能够减弱用户对时间的感知。如果产品能够在用户等待时提供一些有趣的事物给他们观看,用户将减少对等待本身的关注。因此,为了确保用户不会在等待过程中感到无聊,给他们看点儿好玩的吧,比如图11所示的有趣画面。

​图11 应用视觉干扰1(图片源于Behance)

或者像图12所示的可爱画面。

​图12 应用视觉干扰2(图片源于Vimeo)

又或者其他能够在App加载过程中吸引用户注意力的东西,如图13所示。

​图13 精致的动图能够吸引用户的注意力,让他们忽略长时间的等待

7. 页面框架:传统等待符的替代物

以上的所有内容都表明:如果某个操作需要一段时间来进行处理,应该通过等待符给用户更好的等待体验。然而,尽管这样做是出于好意,但最终的结果可能并不理想。Luke Wroblewski在其文章中指出:“从其定义上来看就知道等待符意味着用户必需等待。这就好像看着时钟嘀嗒嘀嗒地走一样——当你真去看的时候,时间好像是变慢了。”在产品中加入等待符就好像给了用户一个时钟去关注。尽管比什么都不做更强,但UI设计应该致力于让等待变得更加愉悦。

幸运的是,我们有页面框架(Skeleton Screen)这个等待符的优秀替代物。页面框架事实上是内容逐渐加载过程中的空白状态。与进度条/加载指示不同,页面框架关注于信息处理的具体过程并为用户提供完成状态的框架预览。这样做能够给用户提供足够的反馈:随着加载的进行,数据/信息一点点地展现出来。用户会知道在他们等待的过程中,你的产品具体在做些什么。

Medium就使用这样的技巧。在内容加载的过程中,展示线框图似的占位符。同时,这个加载页面也让用户熟悉加载完成后的内容展示会是怎样显示的,如图14所示。

​图14 Medium使用页面框架作为内容加载时的等待符

8. 总结

不管我们如何努力提升App或网站的速度,总有些任务是需要时间去处理的。等待符,例如加载的循环和百分比进度条,能够通过告知用户产品当前的工作状态以减少不确定性,同时增加用户等待任务加载完成的意愿。根据经验,对需要2~10s处理速度较快的任务最好使用循环动画或页面框架,而对于需要10s以上处理时间的任务,则百分百进度条会更适用。在循环动画和页面框架之间,我们更加推荐后者,因为页面框架有着较大的优势——任何需要几毫秒以上时间的任务都能借助他们提升用户的体验。

本文摘自异步社区, 异步社区走刀口,作品《【Samshing专栏】动态等待符的实践指南》,未经允许禁止转载。

推荐阅读

2018年4月新书书单

异步图书最全Python书单

一份程序员必备的算法书单

第一本Python神经网络编程图书

​长按二维码,可以关注我们哟

每天与你分享IT好文。

在“

异步图书

”后台回复“

关注

”,即可免费获得

2000门在线视频课程

;推荐朋友关注根据提示获取赠书链接,

免费得异步e读版图书一本

。赶紧来参加哦!

点击阅读原文,查看更多内容

阅读原文

【Samshing专栏】动态等待符的实践指南相关推荐

  1. 算法原理稳如狗,工程落地慌得很!AI炼丹炉实践指南来啦~

    点击上方"AI派",选择"设为星标" 最新分享,第一时间送达! 编辑: 王老湿 作者: Leon Wang 作者简介: 现为中科院特别研究助理 (博士后),国内 ...

  2. 入门学习Nginx代理服务器?就看这篇Nginx进阶学习最佳配置实践指南

    前置基础知识学习 1.Nginx基础安装与配置详细 https://blog.weiyigeek.top/2019/9-1-121.html 2.Nginx进阶学习之最佳配置实践指南 https:// ...

  3. 前端 DSL 实践指南(上)—— 内部 DSL

    编者按:本文转载自云音乐前端技术团队,作者网易云音乐前端工程师郑海波 前言 近几年,前端社区中 DSL 这个词开始频繁出镜,这和环境的变化有很大关系: React.Vue.Angular 等现代框架的 ...

  4. python组件的react实现_React-Router动态路由设计最佳实践

    写在前面 随着单页应用(SPA)概念的日趋火热,React框架在设计和实践中同样也围绕着SPA的概念来打造自己的技术栈体系,其中路由模块便是非常重要的一个组成部分.它承载着应用功能分区,复杂模块组织, ...

  5. 现货!《PHP7实践指南:o2o网站与App后台开发》京东天猫有售

    终于发售了,啥也不想说了,喜欢的或需要的就点击 链接 进去购买吧. 另外此书将作为 2017 PHP全球开发者大会 现场活动用书 天猫购书 包邮 PHP7实践指南:O2O网站与App后台开发 数据库设 ...

  6. 《DevOps实践指南》——阅读笔记(长文告警)

    DevOps实践指南 <DevOps实践指南>简介 Part 1--DevOps介绍 简史 第1章 敏捷.持续交付和三步法 第2章 第一步:流动原则 第3章 第二步:反馈原则 第4章 第三 ...

  7. SSL/TLS协议原理与证书签名多种生成方式实践指南

    本章目录: 0x00 前言简述 CA 认证原理 PKI 公钥基础设施 0x01 自签名SSL证书生成 1.在线(脚本)生成 2.OpenSSL 生成 3.CFSSL 生成 0x03 cfssl 使用实 ...

  8. 美图Android编译速度优化实践指南

    分享嘉宾:张仙华 美图 资深开发工程师 分享嘉宾:张仙华,美图秀秀android团队资深研发工程师,负责编译加速.性能优化.架构设计等公共基础相关工作 导读:本文的主题是美图秀秀的Android编译速 ...

  9. DevOps实践指南 记录

    DevOps实践指南 Gene Kim Jez Humble Patrick Debois John Willis◆ 导言:展望DevOps新世界>> 技术债务是指我们当前所做出的决定会导 ...

最新文章

  1. C#基础—不安全代码(unsafe code)
  2. Shell之while循环
  3. HDU1421 搬寝室
  4. js将object转化为json数据,json数据转js对象
  5. leetcode955. Delete Columns to Make Sorted II
  6. HDU 6090 Rikka with Graph 思维 公式
  7. 浏览器存储用户登录信息的位置
  8. mybatis 依赖于jdbc_面试BAT问的最多的27道MyBatis 面试题(含答案和思维导图总结)...
  9. YYKit-YYCache分析
  10. RSA/数字证书/签名原理详解
  11. mysql中角色权限表的设计_用户、角色、权限数据库设计
  12. 单页面模式和多页面模式详解
  13. 求两者较大值的max函数的用法(c++基础)
  14. Java实现一个学生成绩管理系统,要求存储学生信息并进行增删改查操作。
  15. 使用java -jar 修改SpringBoot项目中application.properties的配置项
  16. JAVA23种设计模式学习,源码+案例分析+类图讲解
  17. 上网看视频国家版八段锦,很好的预防和治疗久坐办公室带来的肩周颈椎疾病...
  18. JS获取前一年或后一年的时间
  19. Idea快捷键大全(Windows)保存起来,用着就来看看。。
  20. 如何用人工智能秒杀超级马里奥游戏

热门文章

  1. 赣州师范高等专科学校计算机网络技术,赣州师范高等专科学校2021年招生简章...
  2. html考试多选题,Dreamweaver考试试题之多选题合集
  3. linux mv命令源码,linux命令学习(8):mv命令
  4. Linux线程屏障,线程屏障(基于linuxthreads-2.3)
  5. 创建 Refs 的几种方式
  6. java字符排序_Java实现对字符串中的数值进行排序操作示例
  7. python左闭右开_漫话:为什么程序员喜欢使用0 ≤ i 10这种左闭右开的形式写for循环?...
  8. 2021.09.27 MySQL笔记
  9. 无SSH工具部署网站到火腿云
  10. python打包exe有什么用_Python 打包exe