桌面窗口小部件添加List

桌面窗口小部件添加List

@Author GQ 2018年07月08日

练习使用添加窗口小部件功能

长按桌面-添加窗口小部件-找到Flag-拖动到屏幕

效果图

桌面窗口小部件添加List_第1张图片
桌面窗口小部件添加List_第2张图片

流程

  1. 创建 MyAppWidgetProvider 重写 onUpdate() 方法
  2. 使用 RemoteView 承载小部件的布局
  3. appWidgetManager.updateAppWidget(appWidgetId, mRemoteViews) 方法更新小部件

AppWidgetProvider重写方法

onAppWidgetOptionsChanged 当widget被初次添加或者当widget 的大小被改变时,被调用

onEnabled 第一个widget被创建时调用

onDeleted widget被删除时调用

onDisabled 最后一个widget被删除时调用

  • 重要

onReceive 广播接收处理事件,我们的主要逻辑就需要在这里处理了

创建窗口小部件

  • 继承自 AppWidgetProvider
  • 声明Receiver

        <receiver android:name=".MyAppWidgetProvider">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
                <action android:name="CHANGE_POSITION" />  点击item刷新
                <action android:name="CHANGE_DATA" />      刷新list列表
            intent-filter>
            <meta-data
                android:name="android.appwidget.provider"
                android:resource="@xml/appwidget_info" />   声明小部件布局
        receiver>

声明小部件

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:initialLayout="@layout/widget_layout"
    android:minHeight="150dp"
    android:minWidth="326dp"
    android:previewImage="@mipmap/ic_flag"
    android:resizeMode="horizontal|vertical"
    android:widgetCategory="home_screen|keyguard">

    

appwidget-provider>

在小部件使用List

  • 创建 ListViewService 继承 RemoteViewsService
class ListViewService : RemoteViewsService() {

    override fun onGetViewFactory(intent: Intent?): RemoteViewsFactory {
        return ListRemoteViewsFactory(this.applicationContext, intent)
    }
}
  • Manifest 声明 Service
 <service
            android:name=".ListViewService"
            android:enabled="true"
            android:exported="false"
            android:permission="android.permission.BIND_REMOTEVIEWS" />

ListRemoteViewsFactory

  • 继承自 RemoteViewsService.RemoteViewsFactory
  • 主要复写方法 :

onCreate()

onDataSetChanged()

getCount()

getViewAt()

onDestroy()

有点类似于Adapter的内容,具体内容可以查看demo

查看Demo

你可能感兴趣的:(安卓,小部件,窗口)