微软的XBox 360 kinect自从发布以来,掀起体感交互的热潮。业内不少人开始研究体感交互的各种可能性和拓展性。我正好在联想做一个类似的项目,下面将在这个项目两年多的收获略作整理,与大家分享: 一、电视平台的特点 电视机尺寸大,最高支持到1920×1080 操作距离远,一般来说人与电视机的距离在2~3米 位置固定,一般在家庭的客厅中,属于半公共空间 用户一般不会在电视机上进行复杂和费时的操作,例如文档处理、收发邮件等。 用户主要进行休闲娱乐(电视节目、易于操控的游戏等)和信息查看(天气、股票等)。 二、应用的风格分类 用户很少会在电视机上使用高效应用(对于高效应用的定义,请参见我博客中的"基于移动设备的应用设计")。基于电视平台的应用,主要分为以下两种: 工具类应用:很少需要用户输入的简单任务。用户使用工具类应用来查看快速统计信息或针对有限的对象执行简单的任务。 "天气"、"股票查询"等应用是一种典型的工具类应用。 工具类应用在视觉上是吸引人的,但其视觉效果不应喧宾夺主,不能掩盖需要重点体现的信息。 用户使用工具类应用来检查某件事情的状态或者用以查询,因此他们希望快速和容易的定位于他们感兴趣的信息。 基于电视屏幕的特点,界面应该设计的简洁、功能相对集中。不应该在一个应用中提供多个复杂的功能——因为对于复杂应用来说,PC平台更合适。 图一:联想eBox上的天气 在进行eBox平台的工具类应用设计时,你需要观察用户是如何使用此类应用的,然后将应用的任务分解为多个易于完成的子任务,然后基于这些子任务,有选择的设计你的应用。 工具类应用可能需要支持经常性的更改设置或变更信息源,因此他们经常会在主界面的功能条上提供这些设置。 工具类应用,一般以平整的列表形式组织。用户通常不需要层级查看。一种典型的方式是,每一个视图提供同样的数据组织和层级深度。 另外,在工具类应用中,尽量使用GUI提供的控件,在视觉风格上也要尽量与GUI统一。 沉浸式应用:内容相关用户体验、丰富视觉环境、丰富交互环境的应用。游戏就是一种典型的沉浸式应用。 图二:联想eBox上的游戏 电视平台的沉浸式应用尽量避免展示大量的文本信息、避免进行复杂的设置。大量的文本信息、复杂的设置会影响用户的体验。 沉浸式应用倾向于使用自定义的用户界面而非设备的用户界面,以加强用户在产品使用中的参与感。用户探索和发现的行为是沉浸式应用体验的一部分,因此使用非标准控件是恰当的。 沉浸式应用通常以游戏、故事等形式展示。基于这个原因,沉浸式应用通常采用自定义导航的方法,以替代在工具类应用中标准的、数据驱动型的方法。 沉浸式应用的用户体验模型由应用的体验决定。 三、PC应用的移植 基于电视平台的应用,在用户习惯上和PC有很大的不同,在用户体验上用户也会有不同的期望。 电视是以家庭为单位的平台,人群的年龄跨度非常大。这意味着我们要设计非常简单、易于使用的应用。 备注:如果你的PC版本应用提供了复杂的任务或一系列任务,你需要检查人们如何使用他们,以了解如何把任务拆解为一系列易于完成的子任务,然后有选择的进行设计。 在应用设计上,采用80-20法则。谨慎决定是否引入那些虽然强大,但是只有少部分用户使用的功能。应该更关注那些能满足绝大多数用户需求的功能——因为,PC可能拥有更好的环境来提供这些功能。 四、PC应用移植案例:天气应用 在PC平台,可以在一个窗口中将大多数功能都展示在一起。因为基于键鼠的操作方式精确、人与屏幕的距离近、鼠标可以在屏幕上进行跨越点击——这是PC的特点决定的。 但是在电视平台上的应用,在某些方面与移动设备(例如手机)更加类似:人们需要简洁的天气应用,他们想快速的访问核心功能。 图四:PC上的天气应用 所以,你需要对用户界面进行精简,使界面显得整洁并易于使用。另外,你还需要精简菜单结构,将菜单的结构和层级简化,使用户打开应用后,马上就能够进行所期望的操作。 图五为天气应用的主要界面。天气应用,主要包含两部分:查看特定城市的天气、对城市列表进行删除和增加操作。 在设计时,将任务分解为三部分:查看城市天气、添加城市、删除城市。 其中,天气展示为主要界面。而添加和删除城市只在特定状态(添加和删除城市)下存在。在设计时,我们将添加城市和删除城市设计成为配置性的ICON,放在下方的半圆形功能条上。 此种方法,简单、直观,避免了不必要的操作。经过采样测试,不同年龄、不同知识背景的人都能够很方便的进行使用。 图五:联想eBox上的天气 附:优秀用户界面的原则 隐喻:尽可能基于现实世界中的对象和动作来作为你的应用中的对象和动作的模型。这有助于用户快速理解和使用你的应用。 备注:除非你选择的隐喻是公认的,否则,使用标准的控件和动作,比仅仅为了适应你的应用的用户界面而对现实世界的物体和动作进行扩展更好。 设计习惯用法:在很多时候,你并不能找到恰当的隐喻,例如进程、内存地址等。这种情况,勉强使用不恰当的隐喻,反而会增加用户的困惑。所以,设计一个简单的习惯用法,更加合适——足够简单和直观的习惯用法,并不比隐喻更难理解和使用。 直接操控性:这意味着需要让用户感觉他们正在控制一些有形,而非抽象的东西。遵循直接操控原则的好处是,用户更容易理解他们动作所引起的结果。 当用户在操作对象时,保持对象的可见性 用户操控的结果需要立即反馈 少输入多选择: 程序比人更擅长记忆选项列表、命令、数据等信息。 保持最少的文字输入,以便于把用户从需要花费大量时间的输入中解放出来。 在程序中避免进行大量的错误输入检查。 选择的而非输入的方式,更有利于用户关注完成的任务,而非去思考如何操作。 反馈:基于直接操控性的原则,除了最终结果外,用户还需要立即看到他们操作的结果。以及在系统漫长的进行中的实时状态。 应该对每一个动作和状态展现一些可见的变化。 动画是一个好的反馈方式,因为其巧妙而又寓意丰富——但是,动画是用来提升用户体验,而非为了吸引用户的注意力。 用户可控性:用户可控性允许用户(而非程序自身)来开始和控制动作。这要求: 保持动作简单和直观,以便用户理解和记忆——尽可能使用用户已经熟悉的标准控件和标准行为。