什么是App Widget?
AppWidget是应用程序窗口小部件,是微型的应用程序视图,它可以被嵌入到桌面应用程序中,并接收周期的更新。
如何实现AppWidget?
1. 新建一个AppWidget类继承AppWidgetProvider(AppWidgetProvider继承BroadcastReceiver),并实现相关生命周期方法。
onUpdate()
当widget更新时被执行。
注意:用户首次添加widget时,onUpdate()也会被调用。但是如果定义了widget的configure属性(即android:config),onUpdate()不会被调用,之后更新widget时,onUpdate()才会被调用。
onAppWidgetOptionsChanged()
当widget初次被添加或者当widget的大小被改变时,执行该方法。
onDeleted()
当widget被删除时执行。
onEnabled()
当第一个widget实例被创建时执行。
onDisabled()
当最后一个widget实例被删除执行。
onReceiver()
当接收到广播时执行。
2. 在清单文件中配置AppWidgetProvice实现类
<receiverandroid:name="com.itcast.weibo.ui.WeiboWidget"> <intent-filter> <actionandroid:name="android.appwidget.action.APPWIDGET_UPDATE"/> </intent-filter> <meta-dataandroid:name="android.appwidget.provider" android:resource="@xml/weibo_widget"/> </receiver> |
3. 在res目录下新建xml文件夹,新建widget的xml描述文件
<?xmlversion="1.0"encoding="utf-8"?> <appwidget-providerxmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="300dip" android:minHeight="72dip" android:updatePeriodMillis="0" android:initialLayout="@layout/weibo_widget"> </appwidget-provider> |
属性说明:
minWidth和minHeight
指定App Widget布局需要的最小区域
minResizeWidth和minResizeHeight
指定Widget的最小尺寸。
updatePerioMillis
定义widget的更新频率。
注意:
n 当updatePeriodMillis的值小于30分钟时,系统会自动将更新频率设为30钟。
n 如果需要频繁更新,或者不希望设备休眠状态更新,那么可以使用基于alarm的更新替代widget自身的刷新机制。将alarm类型设置为ELAPSED_REALTIME或RTC,将不会唤醒休眠的设备,同时应将updatePeriodMillis设为0。
initialLayout
指向widget的布局资源文件
configure
可选属性,定义了widget的配置Activity。如果定义了该项,那么当widget创建时,会自动启动该Activity。
previewImage
指定预览图,该预览图在用户选择widget时出现,如果没有提供,则会显示应用的图标。
autoAdvanceViewId
指定一个子View ID,表明该子View会自动更新。
resizeMode
指定widget调整尺寸的规则。(可选值:”horizontal”[水平拉伸], ”vertical”[垂直拉伸], ”none”[不能拉伸])
widgetCategory
指定widget能显示的地方,如Home界面、锁屏界面(可选值:”home_screen”, “keyguard”)
initialKeyguardLayout
指向widget位于锁屏界面的布局资源文件。