Android 使用Widget 添加桌面小组件

来源:互联网 发布:linux没有yum命令 编辑:程序博客网 时间:2024/04/28 04:12

Widget 桌面时间小组件

使用Widget添加桌面小组件 实现桌面时间更新

Demo 地址https://wzeqiu.github.io/

AppWidgetProvider 继承自 BroadcastReceiver,它能接收 widget 相关的广播,例如 widget 的更新、删除、开启和禁用等。

AppWidgetProvider中的广播处理函数如下:


  1. onUpdate()
    当 widget 更新时被执行。
    同样,当用户首次添加 widget 时,onUpdate() 也会被调用,这样 widget 就能进行必要的设置工作(如果需要的话) 。但是,如果定义了 widget * 的 configure属性(即android:config,后面会介绍),那么当用户首次添加 widget 时,onUpdate()不会被调用;之后更新 widget * 时,onUpdate才会被调用。

  2. onAppWidgetOptionsChanged()
    当 widget 被初次添加 或者 当 widget 的大小被改变时,执行onAppWidgetOptionsChanged()。你可以在该函数中,根据 widget 的大小来显示/隐藏某些内容。可以通过 getAppWidgetOptions() 来返回 Bundle 对象以读取 widget 的大小信息,Bundle中包括以下信息:
    OPTION_APPWIDGET_MIN_WIDTH – 包含 widget 当前宽度的下限,以dp为单位。
    OPTION_APPWIDGET_MIN_HEIGHT – 包含 widget 当前高度的下限,以dp为单位。
    OPTION_APPWIDGET_MAX_WIDTH – 包含 widget 当前宽度的上限,以dp为单位。
    OPTION_APPWIDGET_MAX_HEIGHT – 包含 widget 当前高度的上限,以dp为单位。

  3. onAppWidgetOptionsChanged() 是 Android 4.1 引入的。

  4. onDeleted(Context, int[])
    当 widget 被删除时被触发。

  5. onEnabled(Context)
    当第1个 widget 的实例被创建时触发。也就是说,如果用户对同一个 widget 增加了两次(两个实例),那么onEnabled()只会在第一次增加widget时触发。

  6. onDisabled(Context)
    当最后1个 widget 的实例被删除时触发。

  7. onReceive(Context, Intent)
    接收到任意广播时触发,并且会在上述的方法之前被调用。


    总结,AppWidgetProvider 继承于 BroadcastReceiver。实际上,App Widge中的onUpdate()、onEnabled()、onDisabled()等方法都是在 onReceive()中调用的;是onReceive()对特定事情的响应函数。参考android源码frameworks/base/core/java/android/appwidget/AppWidgetProvider.java中onReceive()的定义:

0 0