随第一款Android手机的发布后,Android用户就开始尝试编写各种应用Widget(小工具)了。随着Widget API的公开,为开发人员带来了全新有趣的开发模式,除了传统的电话应用外,还可以做其它方面的应用开发。
开发人员可以使用Widget API(包含在Android手机中,最新版本已经到Android 2.0了)创建简单的控件,然后在新的Widget中显示和使用这些控件。本文向你介绍如何从零开始创建一个主屏幕应用Widget。
通过使用AlarmManager接口,以用户设定的时间间隔更新图片。你将看到如何创建一个Widget,以及如何随机地从一组图片中选择一张图片显示,根据用户设定的时间间隔周期性改变显示的图片。
创建一个简单的Widget包括以下几个步骤:
1、创建一个RemoteView,由它为Widget提供用户界面;
2、将RemoteView绑定一个Activity(行为)实现AppWidgetProvider接口;
3、在Android手机 manifest配置文件中提供Widget的关键配置信息。
项目准备一个Widget就是一个处理特定行为的BroadcastReceiver,AppWidgetProvider接口为开发人员提供了一个框架来简化处理这些行为,它包括以下方法:
1、onEnabled():创建第一个Widget时调用,如果可以,应在这里进行全局初始化。
2、onDisabled():它和onEnabled()相反,创建最后一个Widget时才调用它,如果可以,应在这里进行全局清理。
3、onUpdate():当Widget需要更新它的View时调用,用户第一次创建Widget时也需要调用它。
4、onDeleted():当Widget的一个特定实例被删除时调用,清理特定实例应放在这里进行。
5、onReceive():此方法默认情况下处理BroadcastReceiver行为,并调用上面的方法(警告:根据相关文档记载,需要开发人员自己处理某些特殊情况,更多信息请看下面的说明)。
你可能已经注意到,和常见的定义不一样,小节引用了一个XML文件资源,这个文件为Widget定义了额外的数据。与AppWidgetProviderInfo类一致,这里定义的信息是不变的,因此这个例子不包括updatePeriodMillis的值。
因为这个程序允许用户修改与更新时间,如果你在这里分配updatePeriodMillis,它就不能这样做。下面是imageswidget_info.xml文件的完整代码:
- 1 <receiver android:name="ImagesWidgetProvider">
- 2 <intent-filter>
- 3 <action
- 4 android:name="android.appwidget.action.APPWIDGET_UPDATE" />
- 5 </intent-filter>
- 6 <meta-data
- 7 android:name="android.appwidget.provider"
- 8 android:resource="@xml/imageswidget_info" />
- 9 </receiver>
- 10
【编辑推荐】