7

我最近一直在玩 php-gtk,过去我曾尝试用 Java 制作 GUI 'hello world' 应用程序。

然而,这两种类型的应用程序都有一些笨拙(几乎是幼稚)的外观和感觉。我不能否认它们对于制作供内部使用的应用程序很方便(而且我完全尊重社区为这些项目付出的努力)。但我不一定会为将它作为商业应用程序以 450 英镑或 1,000 英镑的价格出售而感到自豪。

如果我想制作一个外观和感觉类似于 Firefox for Windows 或 Adob​​e xyz 的应用程序,我应该使用哪种 GUI/语言?

“专业的光泽”或智能的外观和感觉是否 100% 取决于设计师,还是无论设计师多么优秀,选择正确的 GUI 框架对于获得这种外观至关重要?

4

5 回答 5

7

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

  1. 使用平台最原生的框架。Win32/WPF for Windows, Cocoa for Mac 等。
  2. 应用程序的视觉伪影是连贯的 - 这包括图像、图形、工具栏图标等。
  3. 遵循平台指南和最佳实践。
于 2010-05-03T05:13:41.203 回答
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 毫秒或更长时间才能显示菜单而变得困难,此时单击不是t 按预期注册。

精致的 UI 需要很长时间才能正确- 一个好的控件库可以解决大多数每个控件的问题,但最后 10% 的问题需要 90% 的时间,并且您可以进行控件交互。你必须尝试不同的方法,你必须期待具有 FPS 训练反应的用户,你必须尝试各种工作流程。

跨平台工具包不能完全正确——它们夹在两难之间:它们可以选择独立于平台的内部一致性,或者与它们当前运行的平台保持一致。为了做到这一点,后者通常需要在调用代码中使用依赖于平台的代码,这是您试图避免的实际情况。

于 2010-05-03T05:40:44.253 回答
3

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

好的用户界面是关于:

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

要做到这一点,您需要查看许多“好”的应用程序,并剖析是什么让它们变得好。找一个好的艺术家/平面设计师为你画好图标等。花很多时间思考用户的工作流程。

确保将业务逻辑与 UI 分开——这将允许您轻松地重新设计应用程序以改进 UI。而且通常程序需要的数据与用户需要使用应用程序的方式无关——不要试图在可编辑的字段中公开你的 x、y、z 变量!UI 是隐藏您的实现并使其可用的层!

于 2010-05-03T05:33:44.353 回答
3

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

于 2010-05-03T05:06:56.913 回答
1

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

另一方面,这不仅仅与工具包有关。好的界面设计是一门艺术,像 Firefox 这样的界面是通过无穷无尽的反馈演变而来的。最好的办法是与用户交谈,找出让他们更舒适地使用您的应用程序的方法。我发现软件在功能强大时往往看起来不错。

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

祝你好运!

于 2010-05-03T05:12:10.783 回答