demo,moxiuzhuomiannzaxiaoshi

前言:这段时间真的是有点堕落了,没怎么看书,项目也做的乱七八糟,基本没什么长进,好像男人也有生理期一样,每个月总有那么几天提不起精神,等自己彻底感到罪恶感的时候再重新整装前行。这几天做桌面widget,现将所涉及内容整理分享给大家。写博客时间长了,觉得只是把学到的知识写出来才算是已经学会了的。这也算是强迫症了吧。今天头有点痛,心情不太好,就不多请废话了,估计也没几个人会看我的前言部分,哈哈。开整吧。


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

这个玩意是用来定义桌面widget的大小,初始状态等等信息的,它的位置应该放在res/xml文件夹下,具体的xml参数如下:

至于具体怎么用,等下实战的时候会讲。

上面我们通过appwidget-provider标签就可以得到初始化的布局,视图等,但我们的widget要实时更新怎么办,要响应用户操作怎么办,这就需要额外的类来辅助处理了,这个类就是AppWidgetProvider。

由于AppWidgetProvider要接收到当前widget的状态(是否被添加,是否被删除等),所以要接收通知,必然是派生自BroadcastReceiver。

AppWidgetProvider中的广播处理函数如下:(根据不同的使用情况,重写不同的函数)

prviewImage:就是添加桌面控件时,我们的控件在列表中的显示状态,如下图所示,下面这个丑娃娃就是我们的显示图标……

这个布局就是最上头显示出来的那个播放器的布局。


在布局成功之后,下面就是根据通知实现逻辑了,这篇我们只接收通知,逻辑下篇再说。首先新建一个类ExampleAppWidgetProvider,将其派生自AppWidgetProvider;然后就会有下面的代码:

* 在3种情况下会调用OnUpdate()。onUpdate()是在main线程中进行,因此如果处理需要花费时间多于10秒,处理应在service中完成。 *(2)用户拖拽到主页,widget实例生成。无论有没有设置Configure activity,我们在Android4.4的测试中,当用户拖拽图片至主页时,widget实例生成,会触发onUpdate(),然后再显示activity(如果有)。这点和资料说的不一样,资料认为如果设置了Configure acitivity,就不会在一开始调用onUpdate(),而实验显示当实例生成(包括创建和重启时恢复),都会先调用onUpate()。在本例,由于此时在preference尚未有相关数据,创建实例时不能有效进行数据设置。 *(3)机器重启,实例在主页上显示,会再次调用onUpdate() // 最后一个widget被删除时调用 // 接收广播的回调函数

这里不是继承接口,这几个函数并不是需要全部重写的,根据需要,要用到哪个可以重写哪个。

前面我们讲到AppWidgetProvider派生自BroadcastReciver,所以要提前注册,有关BroadcastReciver的注册有两种方法,静态注册和动态注册,因为这里要接收来自的消息,而且在程序启动时就开始自动监听,所以,这里需要静态注册。有关BroadcastReciver的问题,可以参看

在构造Widget布局时,App Widget支持的布局和控件非常有限,有如下几个:

除此之外的所有控件(包括自定义控件)都无法显示,无法显示时,添加出来的widget会显示“加载布局出错”

这是由于build target应该在17以上,有两种方法解决:


如果我的文章有帮到你,记得加关注哦!

源码来啦,本文所涉及源码下载地址:

请大家尊重原创者版权,转载请标明出处:

}

前言:这段时间真的是有点堕落了,没怎么看书,项目也做的乱七八糟,基本没什么长进,好像男人也有生理期一样,每个月总有那么几天提不起精神,等自己彻底感到罪恶感的时候再重新整装前行。这几天做桌面widget,现将所涉及内容整理分享给大家。写博客时间长了,觉得只是把学到的知识写出来才算是已经学会了的。这也算是强迫症了吧。今天头有点痛,心情不太好,就不多请废话了,估计也没几个人会看我的前言部分,哈哈。开整吧。


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

这个玩意是用来定义桌面widget的大小,初始状态等等信息的,它的位置应该放在res/xml文件夹下,具体的xml参数如下:

至于具体怎么用,等下实战的时候会讲。

上面我们通过appwidget-provider标签就可以得到初始化的布局,视图等,但我们的widget要实时更新怎么办,要响应用户操作怎么办,这就需要额外的类来辅助处理了,这个类就是AppWidgetProvider。

由于AppWidgetProvider要接收到当前widget的状态(是否被添加,是否被删除等),所以要接收通知,必然是派生自BroadcastReceiver。

AppWidgetProvider中的广播处理函数如下:(根据不同的使用情况,重写不同的函数)

prviewImage:就是添加桌面控件时,我们的控件在列表中的显示状态,如下图所示,下面这个丑娃娃就是我们的显示图标……

这个布局就是最上头显示出来的那个播放器的布局。


在布局成功之后,下面就是根据通知实现逻辑了,这篇我们只接收通知,逻辑下篇再说。首先新建一个类ExampleAppWidgetProvider,将其派生自AppWidgetProvider;然后就会有下面的代码:

* 在3种情况下会调用OnUpdate()。onUpdate()是在main线程中进行,因此如果处理需要花费时间多于10秒,处理应在service中完成。 *(2)用户拖拽到主页,widget实例生成。无论有没有设置Configure activity,我们在Android4.4的测试中,当用户拖拽图片至主页时,widget实例生成,会触发onUpdate(),然后再显示activity(如果有)。这点和资料说的不一样,资料认为如果设置了Configure acitivity,就不会在一开始调用onUpdate(),而实验显示当实例生成(包括创建和重启时恢复),都会先调用onUpate()。在本例,由于此时在preference尚未有相关数据,创建实例时不能有效进行数据设置。 *(3)机器重启,实例在主页上显示,会再次调用onUpdate() // 最后一个widget被删除时调用 // 接收广播的回调函数

这里不是继承接口,这几个函数并不是需要全部重写的,根据需要,要用到哪个可以重写哪个。

前面我们讲到AppWidgetProvider派生自BroadcastReciver,所以要提前注册,有关BroadcastReciver的注册有两种方法,静态注册和动态注册,因为这里要接收来自的消息,而且在程序启动时就开始自动监听,所以,这里需要静态注册。有关BroadcastReciver的问题,可以参看

在构造Widget布局时,App Widget支持的布局和控件非常有限,有如下几个:

除此之外的所有控件(包括自定义控件)都无法显示,无法显示时,添加出来的widget会显示“加载布局出错”

这是由于build target应该在17以上,有两种方法解决:


如果我的文章有帮到你,记得加关注哦!

源码来啦,本文所涉及源码下载地址:

请大家尊重原创者版权,转载请标明出处:

}

我要回帖

更多关于 zhuomian 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信