统一界面设计
想像如果我们可以用设计Web页面的方式去设计Windows(Linux、Unix,任何你可以想像到的图形化操作系统)界面那会是什么样子的?我们将可以统一界面设计,我们可以将可以跨平台设计界面。
我们都知道Web就是这样做的,为了让全世界的人能够在不同的地方不同的操作系统下看到同样的界面,W3C推出了一系列的标准:HTML、CSS、DOM等等,如果一个Web浏览器完全符合标准的话那么我们在世界的每一个角落看到的网页将都是相同的。同样Java下的Swing也有同样的目标,为不同的平台提供同样的界面与设计方式。但是它们都有一个很大的缺点(或不足),那就是它们的设计方式还不够好,没有将界面设计的要领规划分类、使界面的设计成为一种很漫长的过程。什么意思呢?让我们来看看,做界面的需求不外乎以下几大类:
- 元素:界面上可以有的界面元素,如Button、TextBox、图片、文字等。
- 排版:界面元素的位置以及元素间位置的关系。
- 样式:元素的大小、颜色等装饰性的特性。
- 文化:多国语言、语言间差异性的处理等。
- 文件模型:将界面通过一个模型来展现,通过文件模型与UI脚本可以动态地定义界面。
- UI脚本:用来控制文件模型好实现一些动态效果,如动画等。
现在的问题是HTML、Swing、System.Windows.Forms等(对Avalon不是很熟悉,略微看了一下,不是特别强)都没有将这几种需求分开处理,而是混合在了一起,这样设计出来的界面就很死板,再想改界面的时候就会发现很麻烦。但是注意现在W3C已经开始推荐XHTML+CSS来实现界面设计了,也就是说,它将元素与样式分隔开了,但是排版与元素还没有完全分隔开,还是需要DIV元素来做排版,而且由于XHTML的性质没有做到文化处理。
现在想像一下,如果我们可以使用一种类似XHTML 1.1的基于XML的语言来定义界面元素,用类似CSS的语言来定义样式,用自创的方便排版的语言来定义排版信息,再用资源文件+自定义文化语言来定义文化的话我们能实现什么效果呢?答案当然是所有我们上面所谈过的了,统一的、跨平台的、支持多国语言的、动态的、样式可替换的(不仅仅是皮肤的功能)并且可多次转换(因为基于XML)的界面定义。Cool, no?
当然这些都只是一些构想,实现它们需要相当的时间,而且也需要一定推广,不过我相信有朝一日当W3C等标准化组织推出相关标准后这一切就都会变成可能了。目前,我们还是可以利用一部分概念小面积的改善我们项目中的UI设计体验!