一、Widget是什么?

App Widget是应用程序窗口小部件(Widget)是微型的应用程序视图,它可以被嵌入到其它应用程序中(比如桌面)并接收周期性的更新。你可以通过一个App Widget Provider来发布一个Widget。官方文档地址:《App Widgets》

这里涉及到两个方面的内容:AppWidgetProvider类和appwidget-provider标签;
1、appwidget-provider标签:
   这个玩意是用来定义桌面widget的大小,初始状态等等信息的,它的位置应该放在res/xml文件夹下,具体的xml  参数如下:
  android:minWidth : 最小宽度
  android:minHeight : 最小高度
  android:updatePeriodMillis : 更新widget的时间间隔(ms),"86400000"为1个小时
  android:previewImage : 预览图片
  android:initialLayout : 加载到桌面时对应的布局文件
  android:resizeMode : widget可以被拉伸的方向。horizontal表示可以水平拉伸,vertical表示可以竖直拉伸
  android:widgetCategory : widget可以被显示的位置。home_screen表示可以将widget添加到桌面,keyguard表                 示widget可以被添加到锁屏界面。
  android:initialKeyguardLayout : 加载到锁屏界面时对应的布局文件
                至于具体怎么用,等下实战的时候会讲。

2、AppWidgetProvider类:
上面我们通过appwidget-provider标签就可以得到初始化的布局,视图等,但我们的widget要实时更新怎么办,要响应用户操作怎么办,这就需要额外的类来辅助处理了,这个类就是AppWidgetProvider。
由于AppWidgetProvider要接收到当前widget的状态(是否被添加,是否被删除等),所以要接收通知,必然是派生自BroadcastReceiver。
AppWidgetProvider中的广播处理函数如下:(根据不同的使用情况,重写不同的函数)
onUpdate():
在3种情况下会调用OnUpdate()。onUpdate()是在main线程中进行,因此如果处理需要花费时间多于10秒,处理应在service中完成。(第二篇会讲为什么还要有service)
(1)在时间间隔到时调用,时间间隔在widget定义的android:updatePeriodMillis中设置; 
(2)用户拖拽到主页,widget实例生成。无论有没有设置Configure activity,我们在Android4.4的测试中,当用户拖拽图片至主页时,widget实例生成,会触发onUpdate(),然后再显示activity(如果有)。这点和资料说的不一样,资料认为如果设置了Configure acitivity,就不会在一开始调用onUpdate(),而实验显示当实例生成(包括创建和重启时恢复),都会先调用onUpate()。在本例,由于此时在preference尚未有相关数据,创建实例时不能有效进行数据设置。
(3)机器重启,实例在主页上显示,会再次调用onUpdate()
onDeleted(Context, int[]):
当 widget 被删除时被触发。
onEnabled(Context):
当第1个 widget 的实例被创建时触发。也就是说,如果用户对同一个 widget 增加了两次(两个实例),那么onEnabled()只会在第一次增加widget时触发。
onDisabled(Context):
当最后1个 widget 的实例被删除时触发。
onReceive(Context, Intent):
在接收到广播时,调用。

二、Widget的历史

⒈ Widget的这个创想来自一个叫做Rose的苹果电脑工程师。98年的一天,Rose在自己的苹果操作系统桌面玩一个可以更换皮肤的MP3播放器时忽发奇想:如果在我桌面上运行的所有工具都能够更换皮肤或外观,那将是一件很酷的事情,Rose的兴奋之情溢于言表,它给这个酷酷的玩意儿起了个名字叫"Konfabulator"。

⒉ Konfabulator是运行在用户电脑桌面上最炫的东西,就像一部老爷车一样有无数能够发挥功用并值得深入探讨的零部件,带有吸引人的神奇魅力。Rose从1999年到2001年之间,不断向自己身边的工程师宣传自己对于Konfabulator的看法和它的奇幻魔力,却没有人对它感兴趣。直到2002年的一天,Rose遇到了一个叫做Perry的工程师。两人拥有对于Konfabulator这件事情同样的构想,于是一拍即合。

⒊ 于是两人开始共同为了这个炫酷的玩意儿在深夜努力工作,他们开辟了一个和Konfabulator相关的网站向大家传播这个想法,并在论坛中征询网友的意见"到底什么才是真正的Konfabulator?"大家的说法是千奇百怪的,有人说它是一个运行在用户桌面的加热器,有人说它是桌面宠物,有人说它是张牙舞爪的机器人。但是没有人对于Konfabulator的描述是确切的。

⒋ 终于在2003年2月10日的深夜,Konfabulator1.0正式版在Rose和Perry的共同努力下正式发布了。它是运行在苹果操作系统之上的小工具,其中的主运行文件叫做Widget,在Rose头脑中酝酿了5年的想法终于第一次问世了。并且向所有人宣布Konfabulator是运行在用户桌面上最独一无二的工具,你希望它是什么样子,它就能按照你的想法而改变。

⒌ Konfabulator意想不到的快速在全美疯狂的蔓延着,Rose和Perry感到非常的吃惊,同时他们也认识到这将会成为Konfabulator发展历史上非常关键的一个时期,于是两个人都辞去了各自的工作,开始专注于Konfabulator这件事情。

⒍ 在2003年的7月Konfabulator1.5版本发布了,主运行文件Widget的开发变得风靡一时,越来越多的人参与其中,也因为如此Konfabulator更名为Widget。Widget在苹果操作系统中所表现出的热潮,使得Rose和Perry认为它应该有更广的应用领域。于是在接下的半年中Perry的一个朋友参与到开发Widget Windows平台版本的工作中来,但最开始的一些尝试都是失败的。

⒎ 不久之后Rose找到了一个自己的好朋友ED,ED是苹果电脑公司工作超过十年有着深厚资历的一名优秀的开发工程师。在和他沟通Windows平台下开发Widget的事情之后,ED认为Rose希望在Windows平台下运行Widget的想法有些不可理喻。Rose和Perry开始很失望,但令他们感到吃惊的是,两天以后ED居然拿出了一个Windows平台下运行的Widget原型。

⒏ 2004年的11月Widget1.8版本正式对外发布了,由此开始Widget进入了一个新的时代,成为了跨平台的产品。使用Windows和Mac操作系统的用户都可以使用和开发自己喜欢的Widget工具。当然这还仅仅只是一个开端。

⒐2005年07月25日,雅虎收购插件引擎Konfabulator。Konfabulator是基于mac osx和windows操作系统的免费的应用平台。但是在被计算机服务公司雅虎收购后,它被重新命名了。名字Konfabulator 随后恢复作为后台运行的服务引擎的名字。这个引擎使用java脚本运行环境和XML解析器来运行一些所谓插件的小应用程序。因此是插件引擎一类应用程序的一部分。

⒑2006年8月22日,雅虎中国发布了其最新产品Widget中文版。

11.2006年6月,Google桌面4.0正式发布,其中集成了很多Google小工具(Google Gadgets)。

⒓2005年下半年,Windows Vista上市,小工具第一次与消费者见面。一些评论家与Mac爱好者迅速地指出Windows边栏在形式及功能上与苹果公司的Dashboard以及Yahoo! Widget Engine(原为Konfabulator)相似。虽然现时有许多相似形式及功能的产品,边栏在Windows Vista开发期间(当时代号为Longhorn)已经存在。首个包含该功能的版本号于2002年9月发布,在Konfabulator或Dashboard两者发表之前。2009年,Windows 7发布,"Windows边栏"消失。小工具摆脱了边栏的束缚,在收缩模式下也可以在屏幕上自由移动。

⒔2006年10月,诺基亚发布"维信"英文版,被看作其开拓移动互联网领域的第一步。2007年5月25日,"维信"在全球范围内的注册用户达到100万。当时英文版维信已集成诸如Wikipedia、Technorati、Digg和Flickr等网站;而维信中文版集成大众点评网、豆瓣和一些中国本地博客等很多中文网站的应用。2009年8月,维信在官网上发出了公告,决定停止维信服务。维信在中国开办了2年后,终于也退出了人们的视线。
14.2009年4月30日,官方1.5版本(Cupcake 纸杯蛋糕)的Android发布。主屏幕增加音乐播放器和相框widgets。

⒖ 2010年10月,微软公司正式发布Windows Phone智能手机操作系统的第一个版本Windows Phone 7,加入了特有的动态磁贴(Live Tiles),尽管与Widget有着看似相似的信息传递功能,却有着不同的设计原理和理念。

折叠编辑本段特征

widget具有哪些特征呢? 《网络整合营销兵器谱》一书中提出了以下几点

1.身材微:它们一般都很小,在终端上嵌入非常方便,运行快速。

2.形式多:Widget可以以多种形式呈现出来,幻灯秀、视频、地图、新闻、小游戏……

3.功能巨:别看它们小,却服务周到,它可以为你报告新闻、帮你买东西、列出你最喜欢的乐队,还有你看的视频。另外,它还是一个殷勤的管家,你不必亲自去Flickr或者天气预报网站,Widget会将信息主动带给你。

4.姿容丽:它们可以称得上玉面飞龙、以色服人。只要你愿意,你可以把它变成任何你想要得样子。它的出现,无异于一枚"桌面炸弹",狭窄而单调的IE窗口将被更为广阔和绚丽的桌面空间所取代。

5.个性化:Widget更像一个属于我们每个人的魔方,任由用户聚合。你可以根据自己喜好,将多个Widget,随心所欲的去精心组装你的网络世界。通过Widget,可以用户把一切在"网"中的内容打乱重来,并按照用户希望看到的样子重新排列组合一个属于自己的互联网。比如说一个由微件搭建个人空间,可以包括来自新浪的体育新闻,来自论坛的一个板块,来自权威财经网站的一则随时更新的股票信息--这些以往需要用户同时分别进入几个网站才能看到的信息,由一个个微件将其转变为用户个人空间的一部分,从而可以直接在同一个页面中并存。传统互联网访问方式处于分裂状态的后Web2.0时期,多样性、炫酷且更具个性化的Widget流行,或许能引领一个新的潮流。

6.易制作:制作 Widget 部件并不复杂,只需要熟悉三方面的知识:图像处理、HTML/XML、java,就可以按照开发站点里的教程做出漂亮的部件来。Widget能够流行的一个要点在于开放制作,UGC应用带来爆炸式地增长。

参考资料来源

1、http://blog.csdn.net/harvic880925/article/details/41445407

2、(《网络整合营销兵器谱》辽宁出版集团 刘东明)

Widget的基本知识与历史渊源相关推荐

  1. 知识图谱(历史回顾及技术挑战)

    知识图谱的基础知识 什么是知识? 知识的形成分为下面四个部分,数字附上量纲信息结合生活尝试变成知识,如今天13度,直接穿件衣服就出去啦 知识的体系主要有陈述性知识和程序性知识,右侧游戏规则需要认为设置 ...

  2. 国内交流电频率和电压的历史渊源

    国内交流电频率和电压的历史渊源 发布时间:2009-6-25 14:28       发布者:xiaochunyang      阅读次数:546 商用交流电最早的频率是60Hz,电压是110V,其发 ...

  3. 米兰德比百年历史渊源

    米兰德比百年历史渊源     建队渊源 AC米兰俱乐部是意大利乃至欧洲最负盛名的足球俱乐部之一.1899年,英国人阿尔弗雷德·爱德华创建了AC米兰的前身:米兰板球-足球俱乐部,该队 经历了近半个世纪的 ...

  4. 统计推断 完备性与完备统计量的思想与历史渊源

    统计推断 完备性与完备统计量的进阶内容 完备性的定义 完备性的历史渊源 Halmos定理:UMVUE的构造方法 Neyman-Pearson引理:UMP的构造方法 指数族的完备性 因为这一年来有很多人 ...

  5. 历史渊源:闲话操作系统

    出处:天涯虚拟社区[ 2006-10-08 10:33:23 ] 最近在看Eric.Raymond写的一本<Unix编程艺 术>,里面讲了不少计算机的.特别是Unix的历史渊源,出于个人爱 ...

  6. Android系统简介(上、中、下):历史渊源

    上个月,看到微信的一系列文章,讲到Linux的鼻祖-李纳斯的传记<Just for Fun>, 其人神乎其能, 其人生过程非常有趣,值得每个程序员细细品味. 而实际上,对我而已,虽然做软件 ...

  7. linux发音历史,Linux到底怎么个读法?有什么历史渊源?

    Linux到底怎么个读法?有什么历史渊源? Linux英 ['lnks] 美 ['lnks] 1.linux发音五花八门版本颇多,见到和听到的不下10种.根据linux的创始人Linus Torval ...

  8. AI出现的历史渊源,透过现象看实质

    旧文拾遗,愈久弥新.源自某源. 目录 一.引子 二.人工智能由来 三.人工智能发展历程 3.1 看上去有智能 3.2 具有有限学习能力 3.3 具有深入学习能力 一.引子 GMIC 作为每年规模很宏大 ...

  9. 刘韧:角色、扮相、知识与历史

    以下文字皆写于2008年1月 一.角色与扮相的欺骗 1.当编辑时,最怕向名家约稿,名家赏脸写的稿子,质量不高,不能用. 2.喜欢李白的人,千万不要买<李白全集>,全集里有许多狗屁诗.< ...

最新文章

  1. Mybatis优缺点
  2. linux '$^t' 时间,Linux C时间函数 time_t struct tm
  3. 如何在UE4中创建线程
  4. NodeJs系列二:你好,世界
  5. C#枚举类型用户标志位的代码
  6. python绘制基因结构图_Python调用graphviz绘制结构化图形网络示例
  7. 关闭VMware声音
  8. CvtColor(转)
  9. 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第5节 使用骨架创建maven的java工程_13使用骨架创建maven的web工程...
  10. 网站如何经过身份验证_如何配置TLS?
  11. 2021全国研究生数学建模竞赛C题思路
  12. PAT乙级 1097 矩阵行平移
  13. 树莓派超声波 c语言,树莓派超声波测距+蜂鸣器(c语言)
  14. Bypass注入(WAF绕过)
  15. iOS开发-集成阿里云实人认证
  16. 万兆局域网方案_家庭基础万兆网络——最简单的方案
  17. CDH5.7.6-CentOS6安装
  18. SpringMVC从入门到精通(终结版)
  19. Spring MVC框架在进行表单提交,自动封装成对象提交,在以对象的形式入参
  20. P2356 弹珠游戏

热门文章

  1. 星辰天合获得鲲鹏应用创新大赛 2022 北京区域赛决赛一等奖
  2. P2592 [ZJOI2008]生日聚会(dp)
  3. 谈谈产品和运营之 - 什么是用户预期
  4. 解决Field ‘name‘ doesn‘t have a default value报错
  5. 题目:下面那个流类输出面向字符的输入流()
  6. 高效提升亚马逊搜索排名的十个方法,赶紧学起来
  7. VTK笔记-计算MPR切面-vtkImageReslice类
  8. 实现透明及半透明表单
  9. 查理·芒格:让自己配得上想要的东西
  10. 【软件工程期末复习内容】