首页 > 代码库 > 【Android】AppWidget桌面小部件

【Android】AppWidget桌面小部件


什么是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>

属性说明:

minWidthminHeight

指定App Widget布局需要的最小区域

minResizeWidthminResizeHeight

指定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位于锁屏界面的布局资源文件。

 

 

【Android】AppWidget桌面小部件