Android AppWidgets的原理和应用

 AppWidgets生命周期:

1. Widget定义

2. Widget实例创建

3. onUpdate() (当设定的时间过去后)
4. 响应在屏幕上的widget窗口点击事件

5. Widget 从home屏幕删除

6. 卸载

 

AppWidgets在AndroidManifest.xml中的定义如下:

 

由此可以看出AppWidgets就是一个receiver对象,在intent-filter中定义的action"android.appwidget.action.APPWIDGET_UPDATE"是AppWidgets必须接收的广播Action。而对应的resource属性显示了AppWidgets的配置信息。示例如下:

 

minWidth,minHeight分别对应AppWidgets在屏幕中的最小宽度和高度,构成了在屏幕中显示的实际大小,如果参数之一大于屏幕的实际的参数,那么添加这个AppWidgets就会弹出提示屏幕空间不够的消息。updatePeriodMillis定义了AppWidgets的更新周期,单位为ms。configure定义了配置Activity的类名称,initialLayout定义了初始的AppWidgets的布局文件。示例如下:

可以看出它的布局文件就是一个普通的布局文件,需要注意的是它的布局元素仅支持以下的几种类型(并且其子类也不被支持):

FrameLayout
LinearLayout
RelativeLayout
AnalogClock
Button
Chronometer
ImageButton
ImageView
ProgressBar
TextView

 

了解AppWidgets的大概框架后,我们需要介绍其创建过程。首先是配置Activity的实现(它并不是必须的,起到对AppWidgets信息的配置作用)。当用户从菜单中选择对应的AppWidgets时,首先弹出的是它的配置Activity,所以需要配置Activity执行以下操作:

1.    获取widget实例ID

2.    给用户提示需要输入保存的信息。

3.    保存widget实例以备后面的widget更新时能够获取所设置的信息。

4.    通过制定对应的布局和创建一个对应RemoteViews对象准备首次显示widget视图。

5.    调用RemoteViews对象方法设置对应的值,同时注册按钮点击事件消息等。

6.    通过传递widget实例IDAppWidgetManager来绘制RemoteViews对象到home屏幕。

7.    返回widget实例ID并关闭。

 

剩下的就是执行对应的Receiver的过程,请看如下示例:

onEnabled()第一次添加一个widget到桌面的时候会调用这个方法。可以在里面做一些初始化,比如启动一个后台服务。

onUpdate()在更新周期到来的时候会被调用,如果设置了配置Activity,那么在第一次将调用配置Acitivity,然后在更新周期到来的时候将被调用。
onDisabled()桌面最后一个widget被删除的时候将调用此方法。

onDeleted()一般在一个widget被删除的时候调用此方法。

onReceive()如果有广播的话,那么该方法会被调用。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值