GlanceAppWidget光速入门

11 阅读1分钟

GlanceAppWidget光速入门

最近工作中有用到GlanceAppWidget,正好可以水篇博客记录一下~

1.创建GalceAppWidget的子类

class NewsWidget : GlanceAppWidget(){

    override suspend fun provideGlance(context: Context, id: GlanceId) {

        provideContent {
            Text(
                text = "NewsWidget"
            )
        }
    }
}

2.创建GlanceAppWidgetReceiver的子类

class NewsReceiver : GlanceAppWidgetReceiver() {

    override val glanceAppWidget: GlanceAppWidget = NewsWidget()
}

光速撇一眼GlanceAppWidgetReceiver是谁的子类:

1.png

没错,是四大组件之一BroadcastReceiver,所以需要在AndroidManifest注册一下。

3.注册GlanceAppWidgetReceiver

<receiver android:name=".ui.widgets.messagebox.receiver.NewsReceiver"
          android:label="@string/message_board"
          android:exported="false">
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
    </intent-filter>

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

4. 填写widget的配置文件信息

res目录下的xml文件夹下创建对应的resource文件:

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:description="@string/rewards" //缩略图下的名称
    android:minWidth="@dimen/rewardMinWidth" //最小宽度
    android:minHeight="@dimen/rewardMinHeight" //最小高度
    android:updatePeriodMillis="1800000"  //多久更新一次
    android:previewImage="@drawable/reward_widget"  //缩略图
    android:resizeMode="vertical|horizontal"  //是否可横向或纵向拉伸
    android:widgetCategory="home_screen"
    />

到目前为止,你的应用就已经有widget功能了!在桌面上长按图标就可以创建~

恭喜!你学会了给自己的APP添加小组件功能!!Happy Coding !