引言
最近在看一本书《精彩绝伦的AndroidUI设计-响应式用户界面与设计模式》,于是就写下这系列的博客。用于分享也好,用于笔记也好,反正写下来没坏。
用户界面设计和易用性入门
一款应用最重要的品质就是易用性。如果用户不知道如何得到并且使用它,那么这个应用再屌也是无济于事。例如一款应用集成了超级棒的特性,但是由于易用性的问题,用户找不到展现该特性的入口,或者入口并不那么直观。那么就有用户不能去尝试该特性的风险,甚至是由于用户体验而卸载应用。
考虑技术与设计
对于开发人员来说:某些用户知道如何操作你的应用不能说明什么,某些用户不知道如何操作你的应用也不能说明他们愚蠢,而恰恰说明产品的交互体验设计得非常的糟糕。开发人员应该永远把用户当做傻子看待,他们不会去探索你的应用怎么用,应用的易用程度应该是一目了然的。
对于设计人员来说:设计人员应该多去与开发人员进行沟通。毕竟有些UI效果用技术实现的代价比较大,这时候就需要沟通找到折中的方案。
心智模型
心智模型的概念比较简单,就是人根据经验建立出来的一种联系。例如司机转动方向盘就能导致轮子的转动。我们的应用操作也一样,在Android有一套操作习惯,在IOS上又有一套操作习惯。例如下拉刷新,双指捏合拉伸进行图片或者地图的缩放等等。
构建心智模型
前面也说过心智模型是根据经验建立出来的一种联系。就是说心智模型是可以构建出来的,但是这个过程需要应用的引导。
例如下面两个应用
第一个是通过文字去引导用户,上拉滑动解锁。但是很多时候使用这种方式去引导用户就把UI破坏了,显得非常的机械。
第二个是一个应用,通过在UI设计上去引导用户。图片显示那里右边有一个未完全显示,告诉用户右边还有内容,这就能引导用户去滑动去点击。
用户心智模型构建是非常重要的。设计前应该多去看一下其他应用的设计,参考它们好的交互方式。
用户目标
用户并未单纯地想使用你的应用,他们是想通过你的应用去完成一些事情。所以很多时候是需要把需求转换成用户目标来看待。
下表展示了什么是用户目标
不是一个用户目标 | 对用的用户目标 |
---|---|
用户想要保存一份文档(暗示功能) | 过一会要工作的时候,用户想继续操作刚刚的文档 |
当收到新邮件的时候,用户想要获得通知(暗示功能) | 想要知道新邮件何时到达 |
打开日历看演讲时间(太简单) | 用户想知道指定的演讲何时开始 |
用户想看日历(太抽象) | 包含多个用户目标 |
用户想通过搜索查找一场演讲(描述功能) | 包含多个用户目标,其中之一就是用户想要知道某人是否参加了某场演讲 |
用户想要在日历中增加新的提醒(描述功能) | 用户需要记住约会的开始时间 |
确定用户目标
用户目标应该是原子用户调研、领域内的专业知识和对应视图去解决问题的理解。
一定要看重第一份用户目标调研,这是非常有价值的。一份完整的为用户目标是对产品的功能作非技术性的描述。问题应该是简单的,例如『你觉得这个重要吗?』。
创建用户目标列表过程中,用户的思维过程是很重要的,尝试去跟着用户的思维。之后和消费者、领域专家、用户以及所有你认为有帮助的人交流。
最后总结你的用户目标调研过程中的思维过程和结果。
最后每一个用户目标都应该与产品特性对应,剩下没有对应的产品特性可以考虑是否需要砍掉
没有应用无所不精,选择适合自己的领域
不要尝试做所有的事。从关键的用户目标开始,然后从这些目标往外眼神。完美契合一小部分用户目标的应用,远远好于想要完成拥有诸多功能却粗制滥造的应用。项目初期,就应该记录你的应用是干嘛的。
例如你要开发一个随手记的应用,你只需要把文字(可能还有语音,视频等)记录下来,你的应用不需要处理小说级的文字,更不需要打开多种格式的文件。所以把时间精力放在关键的点上,而不是文字处理的性能优化和多种格式的解码。
决定做什么和决定不做什么一样重要
你是专家,而用户不是设计师
总是有一些人告诉你产品需要有什么功能。用户反馈通常也会充斥着各种需求。对于这些回馈,不要假设他们都是对的,也不能忽略他们。 随意实现用户需求可能使应用变得繁杂臃肿而无法控制。相反,应当尝试了解用户需求背后的用户目标,然后看看你的产品是否有必要对应上这种目标。
引用福特的一句话『如果问大家你们想要什么,他们会说我想要更快的马』。转换成用户目标后,就编程了『我想提高移动的速度,减少不必要话费的时间』。最后解决这个问题的关键是其实,而不是一匹更快的马。
了解用户,为普通用户设计
要你的应用去适应每一个人是不可能的,试着去了解目标人群,只要适应他们,抓住这部分用户的流量就够了。
使用人物角色
确定目标用户,和目标用户交流往往并不容易。使用任务角色就能帮到你。一个人物角色是一个虚拟的人,是你目标用户人群的缩影,注意是人群。创造一个人物角色就好像创造一个剧本角色。
如果可能,你的人物角色是基于调研的数据而创建的。写下你最佳的猜测并且与消费者、领域专家讨论。这能让你形成一个更有针对性的人物角色。
每个人物角色代表一种用户群体,一般3-7个人物角色就够了。
一般人物角色如下
关键目标 | 信息(高优先级) |
---|---|
希望能通过手机每周7天每天24使用 | 居住在法国哥根廷 |
希望能够随时随地读写工作邮件 | 37岁 |
经济顾问 | |
已婚,俩孩子父亲 | |
爱好:足球、阅读 | |
每天开车画45分钟到工作地点 | |
拥有一台Galaxy S系列的只能手机,用来查看私人和工作邮件,也用来拍摄照片和与亲朋�好友通话 |
- 虚构的姓名
- 一张人物照片
- 一段包含年龄、性别、教育程度等信息的简介
- 人物角色拥有的与你一应用领域相关的关键用户目标列表
- 优先级,用来描述任务角色在应用制作过程中的重要性
进入用户的大脑
不断使用人物角色的思想去检验你的设计工作,利用用户目标在大脑中模拟应用。问一些类似这样的问题:『某个角色能明白这点吗?』和『此橘色在这种情景下会怎么做?』。在考虑的时候更多地站在用户的角度上思考,毕竟应用不是只给你用的。
在设计的过程总,总会冒出一些出色的点子,即便这些功能既不符合人物角色的需要,也没有用户目标与之对应,但仍不失为一个好点子。小心处理这些情况。
有时候这些想法能带来真正的创新,值得追求,每当遇到不符合用户目标的特性时,需要极其谨慎地评估这个特性。
不要马上开始编程
原型设计
在真正开始编程之前,最好先做好原型设计。首先将你的设计灵感记录下来(最好是纸质),让脑海中的想法更加具体,也容易和其他成员探讨,这个过程阶段就叫做原型设计。
框架
应用的结构关乎设计全局,考虑需要什么界面,界面与界面之间如何关联是良好的切入点。开始要忽略界面的细节,而是把更多的时间去设计各个页面与模块之间的逻辑关系。
高保真度的原型
制作一款应用的部分共轭能原型在某个概念上过于复杂时颇有意义,应为无法确定这个功能在实践中是否可以正常工作。因为很多的想法真的是天马行空,有了想法,技术支持也是需要考虑的。
概念验证
概念验证是把软件的某个功能充分实现,以此来验证概念的可行性。
用户测试
正式的用户测试中,会邀请一些专业的第三方测试。测试用户会看到原型设计或者功能性应用,并且要求在真是环境中进行一些操作。要求用户边思考、边操作,这样更能够去理解和深入用户的思考过程,经常还会做录像,方便回顾和进一步观察。
但是由于资金,时间等各种因素,往往不会委托第三方的测试公司去测试,除了身边的同事,我们最好到外面
寻找测试人员,亲朋好友也是可以的,不要告诉他们应用是你的,这样他们才能给出更加中肯,有建设性的建议。
除了场景的测试外,还可以提一些问题,例如『你认为这个按钮是干嘛的?』『你怎样通过这款应用去发送电子邮件?』,这些问题的答案也能帮你更好地去改善应用。
明白深爱自己的创造而不能自拔是一种正常的现象,如果你花费大量时间来制作某个产品,你当然希望它能获得成功。如果应用存在问题,那么这些问题最好就在测试阶段暴露出来。越早越好!!!
为用户测试指定一份计划
尽量根据应用的核心功能来确定用户场景测试。场景中不要包含技术性特性,让用户明白�哪写才是他们想要的特性。
一个糟糕的测试计划『打开一份文档,按保存键将其作为附件加入邮件附件中。』
而更好的测试计划应该是『你记得曾经写给朋友的一个文档,现在你想要重温一下那份文档,然后发送给你的那位朋友。』
保持中立,不要引导用户
同时不要引导用户,如果用户在应用使用过程中迷失了方向,不能进入下一个页面。不要尝试引导他,应该深究问题的本质用户为什么会迷失方向。改进之后再去让测试用户测试。
不要矫正过度,调查结果 真的真真实吗?
不是每一个测试者遇到的问题都是真是的,应用程序的测试欢迎与现实并不一定十分吻合,�测试人员在压力的情况下可能会遇到一些平时操作不会遇到的问题。所以测试的结果一定要进行挑选和筛选。
行动起来吧
在每一轮测试之后,你必须要安排充分的时间对发现的问题作出反应,否则测试就变得毫无意义了。
在你确定一个合适的设计之前,不要将自己封闭在这个设计中。逐步完成从一份低保真度的纸质原型到一份具体的设计和成品的过程吧。