细节决定交互设计的成败
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.1 直接操控

现在请考虑这样一个生活中的情形。你的目的是要把书房的书桌上的一本书拿到客厅的茶几上。你可以选择自己来亲自做这件事,也可以让某人帮你来做。看起来似乎让别人做的方法更容易些,你只需动动嘴就可以了。不过现在假设那个人只能听懂英语,而你却不会说英语,情况又会怎么样呢?

很显然,在这种情况下,亲自动手的方法更容易些,因为你不需要去学习英语的语法规则来把这个意思表达出来,而是可以通过直接把动作施加于物体上来达到对它进行某种操作的目的。

在软件界面中也有着与上述例子类似的情形。假设你要把某个文件从一个目录移动到另一个目录,你可以有两种基本的方法,一种是在文件管理器中,首先选中该文件,然后把它拖拽到目标目录中,而另一种方法是进入DOS命令行状态,然后输入DOS的move命令及相应的参数。哪种方法更容易学习和直观呢?当然是第一种了,因为它能让用户感觉到像是直接抓住这个文件,然后把它从一个地方移动到了另一个地方,最后松手把它放下。或许你起初并不知道这种方法,而且你也无法从界面上看出可以用这种方法完成移动文件的操作,不过当你这样学着用了一次之后,你将能很快地掌握这种方法。而对于那种基于DOS命令行方式的操作方式,当你学过一次之后,你仍然很难掌握和记忆。比如说,你首先要记住“move”这个命令的文字本身,其次你要记住每个参数的意义和正确的顺序,例如是应当把目标目录写在前面呢还是后面?我敢打赌,即便是很多年前曾经常使用过DOS的用户,现在也记不清这条命令的正确语法了。

通过拖拽操作来移动文件的方法就是一种直接操控的方法。“直接操控”这个术语最早是由Ben Shneiderman在1983年提出来的。它的基本特征是,用户使用物理性的操作来直接把动作施加于目标之上,而不是间接地通过发出抽象的命令来完成(发出这些命令的具体形式可能是点击按钮、选择菜单或键入文字),同时,目标对象的状态随着用户操作的进行被实时、连续地反馈了出来。

用户通过拖拽窗口右下角的方式来调整一个窗口的大小是另一种常见的直接操控方法。在进行这个操作时,我们并没有通过执行菜单或按钮命令,而是直接地通过拖拽窗口对象自身的方法来连续地改变窗口的大小。在这个拖拽过程中,窗口的大小随着鼠标的移动而实时地改变着,窗口中的内容也跟着变化。当我们看到窗口大小调整到了一个满意的尺寸后,我们就可以松开鼠标按钮而结束这个操作了。

下面再来看几个例子,它们很好地说明了直接操控的方法和基于命令的方法的不同。

● “画图”程序中改变图片尺寸大小的操作方法

在Windows自带的“画图”程序中,当打开一个图片文件后,为了达到改变图片的宽或高的目的,软件提供了分别基于命令和直接操控的两种方法。在基于命令的方法中,用户需要从“图像”菜单中选择“属性”菜单项,然后在随后弹出的对话框中输入图片的宽和高的数值,最后点击“确定”按钮。如图3-1所示。

图3-1 Windows的绘图软件中的属性对话框可以用来调整图片的大小

而在基于直接操控的方法中,用户只需将鼠标指针移动到图片右边或底边的边框线上,然后横向或纵向拖拽即可。

● 七巧板软件中旋转七巧板的操作方法

图3-2和图3-3两幅屏幕截图分别显示的是两款运行于Windows Mobile平台上的七巧板游戏软件。正如大家可能猜想到的,在这个游戏中,一个非常重要和常用的操作是对某个块进行旋转。左边的一款软件采用的是基于命令的方法。具体来说,从其屏幕上可以看出,底部的工具栏中有两个按钮是用于旋转操作的,一个用于顺时针旋转,另一个用于逆时针旋转。右边的软件采用的则是直接操控方式:它的工具栏中并没有任何“旋转”命令,用户只需用触笔按住想要对其进行旋转的某个块的顶点,然后绕着该块的中心点旋转即可,就好像我们真的用手去转动一个真正的木块时的操作方法。

图3-2 基于命令方式来旋转

图3-3 基于直接操控方式来旋转

● “Google地球”软件中的“旋转”地球的操作方法

Google地球软件中对于“旋转”地球这个操作也是提供了两种方法,如图3-4所示。基于命令的方法是把转到各个方向的控制命令按钮显示在右上角的区域中。

图3-4 Google地球软件中对于“旋转”地球的操作提供了两种方法

比如说,如果你希望向左转地球,你只需去点击指向左边的箭头按钮。而在基于直接操控的方法中,你通过直接用鼠标指针拖拽地球自身的方法就可以将其以任何角度和方向进行旋转,而不仅仅是上下左右四个方向,操控相当自如。这种直接操控的体验就好像你用双手去直接旋转一个飘在空中的气球那样随意。

● 苹果的iPhone手机中基于多点触摸的放大和缩小图片的操作方法

尽管苹果的iPhone手机是2007年最热门的IT产品,但它所使用的多触点触摸屏其实并不是一种全新的技术,早在20世纪80年代鼠标刚刚问世之后不久,Bill Buxton就提出了类似的多手输入技术(Multi-hand input)。而在1996年,Bruce Tognazzini就已经在他的“Tog on Software Design”一书中提到了和iPhone中的触摸屏几乎完全一样的输入技术,如图3-5所示:

图3-5 Bruce Tognazzini所设计的用手指的动作来表示某种操作

相对于普通的单触点式触摸屏,多触点技术最明显的优点在于,它能支持更复杂的姿势识别(Gesture Recognition)。这里的姿势指的是触点的轨迹在时空上的综合特征。例如,你可以从上到下画一条直线,或从左到右画一条直线,或者按照顺时针的方向画个圆(实际上,有一项大家已经非常熟悉的基于姿势识别的应用,那就是联机手写体识别)。对于某些操作,基于单触点的姿势就足够了。例如,在特定的控件或窗口中,你可以将向下画直线定义为向下卷滚,这是一种很自然并且易于记忆的方式。然而,对于其他一些更为抽象和复杂的操作,单触点姿势就显得比较勉强了。现在来考虑一下如何设计一种将屏幕上显示的图片进行放大或缩小的姿势。你固然可以指定一些基于单触点的姿势,例如从上向下画直线表示放大,从下向上则表示缩小。但是,这些操作方式的随意性太强,它们同执行这些动作所要达到的效果之间没有一种自然的关系,这将导致人们难以记忆这些操作方式。但是,基于两个触点的姿势却有可能定义出功能更为强大但却更自然的操作方式。正如iPhone的照片浏览软件中所展现的:当两个手指按在屏幕上并逐渐靠近时,这种姿势就被认为是缩小照片,反之当两个手指逐渐分开时,它就被认为是放大照片。这种操作方式之所以容易记忆,是因为它和人们在物理世界中所形成的经验完全吻合:即人们会将两指靠近的姿势联想为捏的动作,而将两指分开理解为拉伸的动作。通过采用的这样的操作方法,人们仿佛感觉到是在直接操控一个实际的物体。

从以上这些例子可以看出,直接操控式界面具有以下优点。

● 界面的可学习性好:通过有经验用户的演示,初级用户能够快速掌握各种操作方法,方便而轻松地完成任务。

● 用户在操作过程中能够立刻地看到行为的结果是否越来越接近于自己的意图,从而能够即时调整自己的操作。

● 错误信息不再需要或很少需要,这是因为没有了复杂的命令语法,界面的设计使得用户很难或根本不可能犯错误。

● 界面的可记忆性好:即使是在很长时间后再次重新使用时,用户也能很容易地回忆起该如何操作界面。

● 由于界面会对用户的操作进行即时和连续的视觉反馈,用户会具有较好的控制感,并且能预测系统的响应,因而主观满意度会得到明显提高。

直接操控式界面之所以能够具有这些优点,其深层的原因有以下两点:

第一,人类更擅长理解和处理形象化的事物。在人类进化的过程中,人类的行为和视力在语言出现之前就已经存在了。心理学家的研究结果表明:当提供给人们可视化的形象表示而非抽象的语言描述时,人们的理解和反应速度会更快一些。同时,原本就是抽象信息的数学或形式化的系统如果能够辅以恰当的可视化表示,将会非常有助于人们的直觉洞察力和新发现。瑞士心理学家Jean Piaget认为,人的发育有四个阶段:从出生到2岁时是感觉运动阶段,从2岁到7岁是前运算阶段,从7岁到11岁是具体运算阶段,从11 岁以后是形式运算阶段。根据他的理论,在具体运算阶段,对于一个对象的实际物理性操作时可以理解的,孩子们会理解守恒或不变性的概念。从11 岁开始,孩子们进入形式运算阶段,在这个阶段中他们使用抽象的符号操作表示对于对象的操作。这对于他们来说有可能是困难的。一个非常典型的例子是,对于10 以内的加法,小孩子可以通过数手指的方式来得到正确的答案。但是如果你直接问3+5等于几而不允许他们数手指,他们就会觉得很难了。在直接操控式界面中,原本那些抽象的或形式化的概念或对象被以一种形象化的可视方式显示了出来,因而用户不必费力地去想像出那些概念和对象,这将减轻用户的思维负担,让用户觉得界面容易理解。

第二,人们在使用计算机软件来完成某种任务时,实际上需要掌握两个领域的知识,一个是所要解决的任务领域,另一个是计算机软件中的界面领域,并且还需要掌握从任务领域到界面领域的映射。这两个领域中分别有着自己的对象、概念以及可以作用于其上的动作或操作。如果与语言学做一个类比的话,任务领域中的知识就像是文字的语义,而界面领域中的知识就像是语法。为了表达出自己的语义,用户需要掌握正确的语法。不幸的是,在传统的非直接操控式界面中,尤其是基于命令的界面中,这两个领域中的对象、概念以及操作之间的相互关系没有相似之处,或者说,用户无法从任务领域中的对象及其上的操作很容易地想像出或映射到界面领域中的某个对象及其上的操作。界面领域中的操作是很随意的。例如,对于文本编辑器软件来说,某个编辑器可能是用某个快捷键表示跳转到某行,而另一个编辑器可能是用另一个快捷键表示同样的含义。这些快捷键的选择很随意,用户很难从任务本身想像出这些用法,即使是在使用了几次之后也未必能记住。而在采用了基于可视化表示后的直接操控式界面中,用户可以直接用指点设备很直观地指出自己想要去到的行号。换句话说,直接操作式界面使得语法层似乎不存在了,用户可以直接从任务领域中所要达到的目标直接想像出应当如何对界面上的哪些对象进行怎样的操作。在这里,用户可以专注于自己所要完成的任务,而感觉不到工具的存在。

如果对于上述例子进行仔细分析,你将不难看出直接操控界面的应用环境有以下的一些规律性:

● 要操作的目标对象在屏幕上是可见的。换句话说,软件必须将需要对其进行直接操控的对象以一种可视化的方式表示出来。这是一个最基本的条件;

● 要改变的目标对象的属性是一种具体的空间特征,例如大小、位置、方向等。之所以如此是因为,假设我们不是用鼠标、而是用自己的手去真正操纵一个真实的物体时,我们所能改变的大概也只是这些属性;

● 对于目标对象的属性值的改变是连续性的。这一点不是必须的,但是如果有这个需求,直接操控的优势将能得到最大的发挥。例如在七巧板软件的例子中,旋转的最终结果一定是90度的倍数,因此采用基于命令的操作方法也是可以接受的。然而,当要调整的数量是连续变化时,采用基于本质上是一种离散方式的命令操作就会很不方便。例如在Google地球软件的转动地球的例子中,固然可以通过上、下、左、右箭头按钮来离散地每次转动一定的角度,不过这里的困难在于,每一次命令所控制的转动角度是固定的,它的大小不好确定。太小的单位角度会使得在进行大角度转动时需要连续点击多次按钮,而太大的单位角度又会导致无法转动到小于单位角度的位置。在这种情况下,能够一次性连续、直接地转动到目标位置的直接操控方法就显得很有必要和方便了;

● 对于精确控制没有要求。例如在“绘图”软件的调整图片尺寸的界面设计中,如果你只是要调整到一个用肉眼看上去大概差不多的大小,那么采用直接操控方法将会是很直观和方便的。但是如果你想把它调整为精确到以像素为单位的某个特定的长或宽,那么采用命令的方法就会更好和更准确些。