美文网首页
安卓桌面小组件

安卓桌面小组件

作者: 陈大吼 | 来源:发表于2022-09-13 12:43 被阅读0次

1.小组件声明

在<application>中声明<receiver>,相当于是注册广播接收者

<receiver android:name=".TestWidgetProvider" >
      <intent-filter>
           <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
           <action android:name="android.appwidget.action.APPWIDGET_DELETED" />
           <action android:name="android.appwidget.action.APPWIDGET_DISABLED" />
           <action android:name="android.appwidget.action.APPWIDGET_ENABLED" />
        </intent-filter>

       <meta-data
            android:name="android.appwidget.provider"
            android:resource="@xml/test_widget" />
</receiver>

其中必须有<meta-data>,name固定为"android.appwidget.provider",resource指定小组件的UI样式:
test_widget.xml定义在res/xml/目录下:

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="54dp"
    android:minHeight="54dp"
    android:updatePeriodMillis="1800000"
    android:initialLayout="@layout/layout_test_widget"
    android:previewImage="@drawable/icon_hot_spot_label"
    android:resizeMode="horizontal"
    android:widgetCategory="keyguard|home_screen">
</appwidget-provider>

其中widgetCategory指定了 widget 能显示的地方:能否显示在 home Screen 或 lock screen 或 两者都可以。previewImage指定在小组件管理工具里的图标,initialLayout指定挪到桌面上之后的样式:
layout_test_widget.xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ImageView
        android:layout_width="52dp"
        android:layout_height="52dp"
        android:scaleType="fitXY"
        android:src="@drawable/icon_hot_spot_label" />
</FrameLayout>

有了上述声明和定义,在小组件管理工具里便能看到该小组件,即使没有.TestWidgetProvider类
2.小组件逻辑实现
逻辑实现便是依赖.TestWidgetProvider类,来处理<receiver>中定义的不同action消息,这里简单举例,写个空壳类:

class TestWidgetProvider : AppWidgetProvider() {
    override fun onUpdate(
        context: Context?,
        appWidgetManager: AppWidgetManager?,
        appWidgetIds: IntArray?
    ) {
    }
}

更多细节参看https://blog.csdn.net/ymtianyu/article/details/115178619

相关文章

网友评论

      本文标题:安卓桌面小组件

      本文链接:https://www.haomeiwen.com/subject/cjxhortx.html