参考文献
Desk Ornaments Author:Andy Hertzfeld
Konfabulous daringfireball.net
Yahoo!_Widgets wikipedia.org
Widget商业价值
最终驱动一切的还是商业价值,所以还是把商业价值放在前面吧
威智通-中国第一款Widget广告
http://www.ad-widget.com/
widget将成网络广告新宠 Google等巨头支持
http://news.xinhuanet.com/internet/2007-12/20/content_7283764.htm
widget将成为网络广告新宠
http://tech.sina.com.cn/i/2007-12-20/09341925339.shtml
Widget历史
史前时代-desk accessories(桌面附件)
1981-1983
人物:Bud Tribble, Chris Espinosa, Donn Denman, Larry Kenyon, Steve Capps, Bill Atkinson, Steve Jobs, Susan Kare, Andy Hertzfeld
1981年(秋季),当很多80后“作家”们都还是液体的时候,当时的很多电脑都只有很小的RAM,运行一个程序都得先进入再退出(用过dos的朋友们都还记得相似的经历吧),Bud Tribble跟Andy Hertzfeld提到同时出现在一个画面上的多个小程序的这个idea,比如说计算器啦、记事本啦、闹钟啦,这些都可以出现在同一个屏幕上,用同一个menu bar,同时互相之间还可以cut and paste。
但是不久之后(1981年12月),提出想法的Bud就回去读医学院了。紧接着新的团队继续,Chris Espinosa也挺喜欢这个主意,而且下手开始做计算器的图形化工作。等到1982年5月的时候,前期的一些工作让他们可以开始试试制作这个当时还被称为Desk Ornaments的东西了。
1982年(秋季),一年过去了,Desk Ornaments被重命名为 “desk accessories”,他们认为ornament这个词太装饰性了(太轻浮?)。这个时候的desk accessories已经有计算器(calculator)、时钟(clock)、桌面背景编辑器(desktop pattern editor)、拼图(puzzle)等功能。
后来开发到”剪切”和”粘贴”的时候,剪贴板(Scrapbook)这个概念又冒出来了,成为一个极为有用的东西。
1983年11月,desk accessories快正式提交的时候,控制面板(Control Panel)也完成了。Susan Kare负责图形界面的设计。桌面背景编辑器(desktop pattern editor)也在安排这个控制面板之中。(后来引发了一些问题,比如说用户胡乱点几个丑图案以后,桌面也随之变丑,有人觉得这样也不爽啦)。
尽管desk accessories这离以后的widget这一概念还是相当遥远,但是这种常用的简单的小程序集成显示到桌面的思想,确实有异一定的脉络相承的,索性,我们称之为史前的故事吧。
图为控制面板
图为最初的一些desk accessories
到了1983年底,时光如梭,盖茨的Windows 3.x, Windows 95, Windows XP城头变幻大王旗,占领着操作系统的市场, 而GUI方面仍存在很多的不足, 一下子晃到了2003年。(20年过去了!)
Arlo Rose, 一个在90年代曾经在苹果担任人机交互设计师、而后参与创建了 Kaleidoscope(业务为Mac主题hack)的人, 说自己在98年mp3 player的换肤风潮中,得到了灵感,觉得为什么不把很多信息的呈现方式都做成这种GUI很华丽的小物件呢, 他开始寻求能实现这个idea的工程师的帮助。直到2002年,他遇到了志同道合的Perry Clarke, 开始了频繁的讨论和设计,最后在2003年2月, Konfabulator 以25美元的价格在Mac OS X上面发布了。
Konfabulator是一个runtime engine, 也就是说启动Konfabulator之后,这些Widget方可运行和出现, 而编写Widget, 主要使用Javascript(Perry最初考虑过用Perl)来实现。
图形界面方面,不可以使用原生的苹果aqua风格,必须用图片自己重新构造Widget界面。
Konfabulator的界面还是颇受Mac风格的影响,大部分都是走aqua的风格。 时钟、天气预报、快速搜索栏、像框、股票行情、迷你itunes、日历这些Widgets出现在了桌面上面。
2003年7月, Konfabulator升级到1.5。Perry劝说他的一个朋友开始尝试在Windows平台上开发Konfabulator。
2004年11月, Konfabulator升级到1.8,并且终于有了Windows的版本。(虽然资源占用并不是如此的理想)
2005年7月25日, Konfabulator升级到2.1,并且成为freeware,因为它被Yahoo买下了,并且改为现在的名字Yahoo Widgets。
图为Yahoo Widgets, 来自Wikipedia。
关于这段历史,在Konfabulator的网站上,留存了一段卡通漫画来说明(画的还真可爱)。
图为这份卡通的第一页。
在此之前的3个月,也就是2005年4月,对于Konfabulator来说,一个Mac平台上的对手出现了 - OS X原生的 Dashboard 发布了(Konfabulator应该庆幸Yahoo买下了它,要不然结局可能没有现在好看),同时因为这一事件,也有人指出,苹果的Dashboard就是对Konfabulator的抄袭(”ripped off”),说Apple是一只copycat。
Weather Widget from Dashboard
September 13th, 2007 10:42 am Collection, Design Comments to this post
Tags: apple, dashboard, Design, widget
Dashboard上的天气Widget我相信大家都不会陌生,这么精湛的界面设计怪不得每次演示Dashboard的时候都要秀了。这里是全部的18个天气图示(并不是统一尺寸的图标哟)。
图:苹果Dashboard的weather widget(天气预报)图标、界面
细节上,17个是静态的,但是居然有一个风吹的效果是动态的动画! 而从绘制水准来看,实在可以称为精湛!
(这个是一个动画! )
源文档 <http://www.lemoons.com/Blog/topic.asp?id=1237>
鱼鱼的桌面天气秀,效果模仿的也不错。
http://www.xdesksoft.com/xdw/show.htm
Widget技术
基本所有的技术都有渊源,就像金庸笔下的每一段儿女情仇都有来由一样。
Widget也是一场界面战争,是一场UI换肤技术的战争。
入门级
更换背景图片,最简单的换肤技术,给用户不再单调的UI。现在多用在手机等嵌入式产品中。
初级
更换异型图片,实现各种各样形状的窗体,看起来很有趣。这些大概发生在win98时期,很多桌面工具和桌面游戏,以及msagent的出现。
中级
开始使用脚本设定,界面变化更丰富,开始使用ini文件+bmp图片,实现各个部分图片的拼装。现在winamp和sougou输入法,还多少是这种。在界面上实现的UI操作几乎没有。和高级一直处于混合时期,很难分清。
高级
同样是提供类似ini+bmp格式的皮肤文件,不过在UI上,改进很多,使用统一绘图,在窗体中实现在脚本指定区域响应特定函数。主流产品QQ,UC等聊天换肤软件。出现独立皮肤编辑器。
骨灰级
mediaplayer,这个微软的产品,提供SDK,界面变化一直无人能敌。技术实现,和高级相差不多远。但是由于收到控件,人员等多种限制,几乎没有几个软件能够实现。尽管在codeproject和codeguru在2001年就出现了,使用IE控件模仿该功能的技术,在VS2003发布的同时,也使DHTML方便的使用,促进了IE丰富界面的实现。随后就是酷炫的FLASH风。在技术的帖子上,也开始有人在想如何使用Flash丰富UI,但是作为异型变化,实现并非易事。2005年QQ推出QQPET,实现了这个技术。
总体说来,界面变化都是给用户一个很好的体验。
QQ一直在使用cximage实现其大部分变化的功能。直到gdiplus出现,才逐渐过度。
技术也是随着发展出现的。
前期gdi和bmp读取都比较复杂,实现透明也需要系统提供API。
转换RGN区域成为主题。
随着微软的发展,VS2003,不仅提供了gdiplus,解决了很多图片操作方面的问题,几乎你能够省至少一半的代码。window也提供了SetLayeredWindowAttributes可以实现透明。DHTML的集成。在技术上为复杂变化也奠定了基础。
换肤技术Js+dhtml+ie+bmp和js+flash+bmp开始有出现。但是IE控件有一个很大的缺点,就是显示速度比较慢。当然也有解决方法。总体实现起来,FLASH的显示速度好一些。
如果想实现高级的换肤,必然要涉及到COM,MFC等多种知识。否则,就完全重头实现这一个系统。我想,不是我等开发人员能做的。如果想从头实现,是需要多年技术的积累的。不过对于用户来说,用户并不关心你是怎么实现的。
随感:
现在基本发展到大家都开始使用PNG,XML,JS,VB换肤的水平了。另外还有换肤控件,提供这个功能。如果团队真的不能给用户很好的体验,使用第三方控件也是不错的选择。