GUI应用程序的专业光泽从何而来?

时间:2010-05-03 05:01:27

标签: user-interface desktop-application windows-applications

我最近一直在使用php-gtk,过去我已经尝试使用Java来制作GUI“hello world”应用程序。

然而,这些类型的应用程序都有一些笨重(几乎幼稚)的外观和感觉。我不能否认它们可以方便地制作内部使用的应用程序(我完全尊重这些项目中的社区工作量)。但我不一定会自豪地将它作为商业应用程序出售,价格为450英镑或1000英镑。

如果我想创建一个具有外观和感觉的应用程序,例如Firefox for Windows或Adobe xyz,我应该使用哪种GUI /语言?

'专业的光泽'或智能的外观和感觉是100%低于设计师还是情况是,无论设计师有多好,选择正确的GUI框架对于获得这种外观至关重要?

5 个答案:

答案 0 :(得分:7)

为一个软件提供完美的用户体验有几个方面。

  1. 使用该平台的最原生框架。适用于Windows的Win32 / WPF,适用于Mac的Cocoa等。
  2. 应用程序的视觉文物是连贯的 - 包括图像,图形,工具栏图标等。
  3. 遵循平台指南和最佳做法。

答案 1 :(得分:4)

这与伊戈尔的回答有点重叠,但这是我的看法:

原生控制外观 - 今天的UI控件外观相当复杂。我们本能地从他们那里得到许多视觉线索,即使它是一个带有一些框架的白色矩形,但是它的阴影看起来很奇怪。上下文菜单通常不仅在今天打开,它从某个方向滑入,或淡入。

本机控制行为 - 比UI更复杂,行为有很多细节:根据点击位置的不同上下文菜单,选择或拖动项目时的不同“热门”区域,键盘快捷键,等。

注重细节 - 在任何平台上都可以发现很多一致的UI行为。只是箭头键在树中的工作方式控制WRT选择,打开和关闭节点。

看看Windows:大多数非原生工具包都会导致错误的基本键盘导航 - 箭头键,Home,End,PgUp和PgDown,使用Ctrl修改的行为,使用Shift扩展选择最多可以提供32种行为。复制&粘贴传统上使用Ctrl + C / Ctrl + X / Ctrl + V和Shift + INS,Shift + DEL和缺失。鼠标双击经常选择一个单词,鼠标三次单击有时一个句子,行或段落。

响应时间和肌肉记忆 - 基本上有两种UI操作模式:

act-look loop ,等待响应,然后再决定下一步,
从肌肉记忆中回放,速度更快,需要更少的心理处理资源。

然而,有两个要求:响应必须是统一的和“即时的”,并且必须立即正确注册下一个动作(至少在10毫秒内)

通常情况下,使用非本机工具包时,由于响应滞后于一两个动作(思维锁定差异),以及需要50毫秒或更长时间来显示菜单的工具包,这会变得很难点击未按预期注册。

优秀的用户界面需要很长时间才能正确 - 一个好的控制库可以解决大部分的每个控制问题,但有一些最终的10%占用90%的时间,并且你有控制权互动。你必须尝试不同的方法,你必须期望用户接受FPS训练的反应,你必须尝试各种工作流程。

跨平台工具包无法完全正确 - 它们陷入困境之中:他们可以选择独立于平台的内部一致性,或者与平台保持一致目前正在运行。为了使它正确,后者通常需要调用代码中依赖于平台的代码,这是您试图避免的实际情况。

答案 2 :(得分:3)

始终尝试使用桌面环境使用的GUI框架。 .NET的库可能是创建Windows应用程序的最佳选择。 GTK +在GNOME上总是最好的,而Qt在KDE上运行良好 - 即使这三者在彼此的系统上运行,它们的视觉吸引力也因缺乏可视化集成而降低。

答案 3 :(得分:3)

所使用的GUI API /语言与UI设计完全无关,尽管有些API使其更容易实现或紧密实现。

良好的用户界面是关于:

  • 良好的图形设计/艺术品(视觉平衡和对称,互补色,视觉'令人愉悦'的形状和布局,应用程序内的视觉一致性以及周围的其他应用程序 - 一致的定位,尺寸,间隙,颜色等)< / LI>
  • 了解用户的工作流程,并使他们想要做的事情变得简单直观。这通常意味着实现3种或4种实现相同操作的方式(例如,“复制和粘贴”通常可以通过以下方式实现:主菜单 - &gt;复制/粘贴,上下文菜单 - &gt;复制/粘贴,ctrl + c / v,按钮:复制/粘贴,拖放)
  • 保持一切简单。尽可能删除将UI切换回用户需要的内容,而不是更多。
  • 直观且不会让用户感到惊讶。控件应该看起来像用户知道的控件,像用户知道的控件一样工作,并且位于用户期望的位置,因为他们以前使用过计算机。
  • 遵循惯例(在标准位置放置OK / Cancel按钮,使用OS定义的颜色突出显示所选对象等)

要实现这一目标,您需要查看许多“好”的应用程序并剖析使它们变得更好的内容。找一个好的艺术家/平面设计师为你画出好的图标等。花大量的时间考虑用户的工作流程。

确保将业务逻辑与UI分开 - 这将允许您轻松地重新设置应用程序以改善UI。通常,程序所需的数据与用户使用应用程序的方式无关 - 不要只想在可编辑字段中公开x,y,z变量! UI是隐藏实现并使其可用的层!

答案 4 :(得分:1)

我并不关心Java应用程序GUI使用常用工具包的方式。如果您喜欢Firefox的外观,您可以查看大多数Mozilla应用程序共享的XUL和GUI框架。 Komodo Editor / IDE使用相同的工具(以及其他几个应用程序)。 GTK是非常强大的,我真的怀疑它是什么阻止你的应用程序具有专业的光泽。继续探索它的功能,并重新思考显示组件的最佳方式,我相信你会偶然发现一种感觉更好的安排。

另一方面,并​​非所有关于工具包的内容。良好的界面设计是一门艺术,像Firefox这样的界面已经通过无穷无尽的反馈发展而来。最好的办法是与用户交谈,找出使他们使用您的应用程序更舒适的内容。我发现软件在功能上也很好看。

我建议你花很多时间在软件上,这些软件你觉得很有用。记录事情的完成方式,并寻找界面元素之间的共性。大多数软件都遵循一套非常常见的原则,这些原则使得使用软件变得更容易,而且您越是探索您觉得有吸引力的软件,模式就会越早出现。

祝你好运!