widget的字面意思是小部件,所以在PC端和手机客户端,能漂浮在桌面或者网页的的独立小窗口程序都叫做widget。
先来介绍一下PC端widget。其中网页widget最为简单,只是一段html和js代码,浏览器在显示网页的同时,执行这段代码,从而呈现出widget效果。将此技术发挥到极致的是WebQQ。
比较复杂的是桌面widget。以下widget都指的是桌面widget。
首先,来了解一下操作系统的UI框架:
内核层 -------> 图像层 --------> 桌面层(以独立的进程存在)
Mac系统和Windows系统框架一致,只是每层的实现及API不同。如果想实现一个widget程序,在UI功能上就必须和桌面层进行交互,甚至更底层地和图像层进行交互,从而实现桌面的定制效果和自身的图像展示。但是每个widget都这样实现,工作量巨大,所以业界仿造网页widget的模式,先开发出一个桌面widget引擎,来封装和底层操作系统交互的部分。而每个widget应用都只是一个js,html,css或falsh脚本的打包。
关于widget引擎,首先是根据不同操作系统定制的。Mac系统有自带的引擎,Windows7也有,叫做gidget。Google,Yahoo等大公司也实现了自己的widget引擎,这些第三方的引擎和操作系统自带的引擎相比,不同点在于操作系统自带的引擎可以调用很多操作系统自带的功能,而第三方的引擎却可以维护一个自己的widget生态环境,原因是每个widget引擎都有自己专有的widget应用库,类似苹果的app模式。这就涉及到另一个问题,widget引擎面向widget程序的API标准。现在的情况是:每个引擎虽然支持的语言基本都是js,html,css等,但都有自己的API标准。这造成的情况是,用脚本写的一个widget应用只能在指定的引擎上运行,而在其他引擎上却不行,至少需要改50%的代码量。针对这种情况,有公司和机构推行统一widget API协议,但是只推广了50%,况且还有的引擎还支持C++, C#, fash js。
(widget引擎部分功能需要用到浏览器引擎部分模块)
下面来谈一下手机端的widget。手机操作系统厂商摒弃了引擎执行脚本的widget模式。比如android自带的widget框架,运行开发者用java和xml进行开发,即和传统的android应用程序一样。而iOS的dash board框架 (它是类widget效果,你也可以通过和iOS的图像层,桌面层进行底层交互,开发出真正的widget应用,当然这违背了iPhone的UI设计理念)也只开放了obj-C接口。然而第三方公司也积极在手机端布局自己的widget引擎,类似桌面上做的那样,幻想形成自己手机端widget生态系统。比如中国移动公司,有自己的引擎,仅限于android,并提出了自己的一套API标准;91手机助手也实现了自己的widget引擎,但是她里面的widget应用很少,且基本上都是自己的开发的。
参考链接:http://zhidao.baidu.com/question/165925753.html
http://www.docin.com/p-83005256.html
http://blog.csdn.net/wanghero/article/details/4159832
http://www.zte.com.cn/cndata/magazine/zte_communications/2011/2/articles/201103/t20110323_225089.htm
http://team.i.sohu.com/blog/view/73357267.htm
http://cdmd.cnki.com.cn/Article/CDMD-10013-2010224799.htm
http://news.newhua.com/news/2011/0402/119288_2.shtml
http://wenku.baidu.com/view/127ad4fe700abb68a982fb7e.html
http://www.apple.com/downloads/dashboard/sports/106millos.html
http://it.sohu.com/20081218/n261292433.shtml
http://blog.tianya.cn/blogger/post_read.asp?BlogID=200349&PostID=18997419
http://tech.sina.com.cn/s/2011-04-20/18115429700.shtml
http://wenku.baidu.com/view/8f59c1fe770bf78a65295487.html
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。