当应用程序中的按钮数量超出工具栏UI的舒适区域时,该怎么办?我正在接近1000个按钮标记,并且没有减速的迹象。我现在的标签式工具栏UI现在已经远远超出了舒适区域。
我添加了一个动态工具栏(双击弹出),您可以在其中键入一个关键短语,工具栏中会填充您可能一直在寻找的按钮。这与具有某种自动完成机制的许多命令行UI非常相似。这也是一个相当老式的解决方案。
您是否遇到过以独特/令人惊讶/有效的方式解决此问题的用户界面?跟踪最近用户操作的UI是否真的可以更快地访问所需的工具,或者他们经常猜错?允许用户自定义用户界面有多重要(根据我的经验,很少有人真正这样做,但他们对此非常感兴趣)。
(如果这超出了SO的范围,我很抱歉,这是我所知道的唯一提供快速有用答案的地方)
修改:上传了我的典型标签工具栏的屏幕截图:Grasshopper Toolbar http://en.wiki.mcneel.com/content/upload/images/grasshopperUIExample.png
答案 0 :(得分:8)
你好好走出舒适区,穿过不舒服的区域,然后在一个热门的扑克推进你的后侧区域的中途: - )
您应该将工具栏视为速度条,用户可以通过最少的操作进行常规操作。除了Gimp及其臭名昭着的UI之外,我无法理解任何需要在速度条中值得使用的近1000种常见操作的应用程序。
也许你需要重新思考你提供的东西。
一些Microsoft应用程序做得相当好,他们将工具栏划分为多个部分(例如,绘图,统计,格式化),并让用户决定显示哪些部分。这样,用户就可以决定他们是否需要最小的工作空间,或者他们是否希望工具栏占用整个工作区的上半部分。
无论如何,菜单应始终提供非常见操作,无论是由您修复的常见操作(硬编码),由用户选择(配置这些部分)还是由程序显示的“智能”(基于以前的使用) )。
这是我认为的好方法。
通过将菜单划分为多个部分,可以从菜单访问所有操作(部分内的操作应至少模糊相关)。让我们假设你现在可以拥有30个部分,每部分30个操作(不太可能,我知道,但这个讨论很简单)。
有一个特殊的自适应操作部分。我的意思是,程序将根据用户使用它们的频率来填充操作。为此,您需要记录用户使用操作的次数(当然,每个用户都有自己的计数,因为他们的使用情况会有所不同)。
允许用户配置工具栏中显示的部分,包括自适应部分。这使他们控制它。
自适应部分应填充最常用的操作,前提是它们尚未出现在另一个工具栏中。这样,用户就可以获得最常用的操作,这些操作还没有放在他们选择的工具栏上。
在我看来,这是最灵活的解决方案,让用户总控制其屏幕空间的使用。
答案 1 :(得分:5)
这些按钮适用于“2点之间的线”,“3点圆”等命令。许多现代CAD应用程序有数百甚至数千种工具来操纵几何
这对我来说是最大的失败。也许这就是为什么我总是发现CAD程序难以置信和令人沮丧的使用。
这是我看待它的方式。 CAD之前,我们做了什么?铅笔和纸,用尺子,指南针,三角形,T字形,法国曲线等。因此,通过使每个工具成为“工具”来完成向计算机的过渡。然后添加更多功能,添加更多“工具”。
但那是倒退。我没有使用指南针,因为它有一个很棒的用户界面 - 它实际上有点笨拙 - 但因为它提供了一个完美的圆圈。如果我可以用铅笔手绘一个完美的圆圈,我就不会伸手去拿指南针了!
好吧,我的电脑可以画出一个完美的圆圈,“工具”的概念与它无关。在我们知道“工具栏”是什么之前,先看一些人机交互的旧视频。在RAND的GRAIL上,如果你想删除某些东西,你就会把它弄糟。如果你想画一个角落切掉的盒子,你画一个盒子然后砍掉角落。在Ivan Sutherland的画板上,如果我想在两点之间画一条线,我在两点之间绘制一条线,并且计算机理解线应该在这两点之间的约束。这些 计算机很难找到。
我不知道你的CAD程序做了1000件事,但我认为他们可能属于相对较少的类别:
那为什么我需要的工具不止一些呢?如果我绘制一个波浪形的圆圈,我想要一个真正的圆圈的可能性非常大。让我画出并弄清楚我想要什么。不要让我使用任何工具栏。
答案 2 :(得分:4)
我认为这里最大的问题是“您的典型用户正在寻找什么样的互动流程?”看看您的用户如何与您的程序进行实际交互 - 他们如何访问您在工具栏上拥有的各种项目时会有某些模式吗?
例如,您的一些工具栏项目是否经常被使用,而其他工具栏很少被访问,当它们被访问时,通常与其他类似的功能一起访问?也许前面的项目属于工具栏,而后面的项目更适合某些可以在侧边栏中打开的调色板。
有什么方法可以让一些工具栏更加敏感上下文?似乎不太可能所有1000多个工具栏项实际上与应用程序的任何特定状态相关。不显示每个可能的操作,只显示满足先决条件的操作:如果您可以选择通过两个点创建一条直线,则在实际选择2个点之前不要显示它。
要记住的关键是用户界面应该由用户需要做的事情驱动,并在任何给定的时间点看到。
答案 3 :(得分:3)
Adobe Photoshop通过控件托盘接近(我不能说“解决”)这个问题。单个托盘可以漂浮在屏幕上,停靠在窗户上,并且可以在其中放置带有附加托盘的标签。此外,大多数托盘都可以有一个上下文菜单,可以访问托盘本身的元设置。
传统工具栏中还有许多关键项,其中一些项随着上下文的变化而动态变化。例如,当您开始拉伸图层时,会出现一个框,您可以在其中键入精确尺寸。更改工具时,工具栏将更改为包含仅与该工具相关的控件。等等。
这种方法的一个好处是,许多重型用户都有多个显示器,将许多托盘放到第二台显示器上通常很实用且有用。
我认为它的工作原理部分是因为控制装置被合理地收集到托盘中,因此相关的控制装置在一起。
但我确定它的总控制数有上限。
答案 4 :(得分:2)
你能描述一下你在做什么吗?从事物的声音来看,它是一种CAD工具。
在这种情况下,我可能会做一些不同但也很常见的事情。
我首先建议尽可能使所有内容都与上下文相关,然后执行此操作:
新窗口将在用户的第二个监视器上停留。它可以很大并且非常有用,并且包含搜索和大图标以便在其中进行搜索。但是,具体而言,我还可以使用小键盘添加一种能够非常快速导航的功能。
您可以在主窗口中检测小键盘何时具有焦点并正在使用,并将其作为输入来搜索偏移窗口中的特定命令。也许您可以对它们进行分组,因此每组有100个函数,对于类型X的函数,您可以从“9”开始。我不知道你的用户群,这只适用于人们开始成为软件专家的情况,但我认为这不是一般的坏模型(管理所有这些行动的一个窗口)。
答案 5 :(得分:2)
用户有两只手。一个通常在键盘上,用于修改键等,另一个在鼠标上。 CAD用户可能有一个非常漂亮的鼠标,有5或6个按钮。
我相信我可能想要一个设计用于弹出当前鼠标位置的界面。不只是右键单击上下文菜单,而是用文本菜单,图标工具栏或三个鼠标环绕鼠标。也许两个上下文菜单。虽然径向看起来不错,但这不一定是径向的。我喜欢爆炸的径向,在中心有一个大洞,所以鼠标周围的区域保持可见。但界面可以是矩形的,工作正常。
然后我会用键盘上的左手手指。将12345
分配给一个工具箱/菜单中的功能。为另一个工具箱/菜单和qwert
以及asdfg
分配zxcvb
。给空格键一个重要的功能,当然还有Ctrl,Alt,Shift,甚至大写锁定。
然后使用这些易于点击左手键的序列来选择功能。 asdf
和qwer
应该获得最重要的内容。对于较新的用户,每次击键都应更新菜单显示,以便他们可以看到正在发生的事情。对于有经验的用户,显示器不应该减慢命令输入的速度。
哦,并有一个快速的方法来重复最后一个命令,也许是第二个 - 第五个最后一个命令。也许有一个可见的最后一个命令堆栈并使用数字1-5将一个不同的命令移动到堆栈的顶部,另一个很容易按下后退,以便在堆栈上运行top命令。
例如,用户应该能够点击Space来弹出菜单,然后qqrwe
选择该功能,然后让它执行。
当然,鼠标仍可用于导航和选择命令。但我认为键盘方法会提供最佳速度,就像文本编辑器那样vi
。我认为必须按住Ctrl Alt和Shift并按下键,所有用左手都会导致手指痉挛。
答案 6 :(得分:1)
您可能会考虑从网站上查看技术,因为拥有数百页的网站比拥有数百个按钮的应用更常见。
类似网络的解决方案是添加“搜索命令”框。它确实需要用户使用键盘,但如果你很好地索引命令,他们就不必记住所有命令的名称,只需记住它们的作用。
一种可能性是使标签工具栏分层。例如在您展示的屏幕截图中,Analysis,Freeform,Primitive和Util将成为Surface下方的标签。
要弄清楚如何对事物进行分类,您可以尝试抓住一些典型用户并进行card sorting测试。使用1,000张卡可能会有点毛茸茸,但您会发现用户希望如何对按钮进行分组。
戴维对上下文相关工具栏的建议听起来也不错。答案 7 :(得分:1)
我在GIS程序中看到的另一种选择是放弃将它放在窗口的顶部。例如,ArcGIS将(极少数)非常常见的“命令”放在菜单/工具栏中,但随后在其UI中有一个完整的停靠窗口(可以打开和关闭),提供所有可用的树视图命令(他们称之为ArcToolbox - 他们的名字并不太具创意,但对用户来说却是有意义的。)
这有很多优点 - 主要的一点是你可以拥有一个分层的,分类的命令结构,导航速度相当快。此外,插件变得非常容易,因为插件只需向树添加命令或创建新的树节点。
在某些方面,它并不优雅,但对大多数人来说似乎相当容易。
答案 8 :(得分:1)
大卫,
这篇文章已经很老了,但我想我还是会回应,因为我是你软件的狂热用户,Grasshopper,以及Stack Overflow。在软件中使用组件时,我通常会在两种不同的模式中找到自己:寻找我已经知道的组件,或者找出可能能够执行我想要实现的目标的其他组件。
当使用我已经知道99%的时间的组件时,我最终使用了这个功能,您可以双击画布并键入全部或部分组件名称。即使我正在寻找新组件,我倾向于使用该功能,而不是工具栏。说我知道我想划分一条线,但我不知道Icon在哪里。我只需输入名称“Divide”即可搜索名称中包含“Divide”的所有命令。
虽然工具栏对于查看可用内容的整体视图非常有用。我最终花了很多时间拖出组件,看看他们接受了什么输入。因此,我认为使工具栏更具动态性和上下文敏感性会很有用。例如,如果用户选择了可以输出点的组件,那么我希望看到一个单独的工具栏弹出,它只显示可以将点作为输入的组件。 Autodesk Revit具有这样的功能,例如,如果用户选择墙,他们将看到与修改墙相关的所有工具。
使用您的软件,这很容易,因为您可以简单地将当前所选组件的输出与所有可用组件的输入交叉引用,以生成动态选项卡。最终,这将允许用户通过选择当前定义中的各个组件来快速回答“我可以从何处开始”的问题。
答案 9 :(得分:0)
一些标签和工具提示(和逻辑分组!)可以有很长的路要走:看看Office 2007/2010中的用户界面;它实际上非常好(人们抱怨因为它与以前不同)。
现在假设没有按钮上的标签的相同UI ...
只需在按钮上添加标签并将其分组为下拉菜单,您的用户界面就会非常棒!