什么是桌面微件

App Widget 是挂在桌面启动器上的一块小界面。它不用打开应用,就能在桌面上显示天气、待办、音乐进度。用户长按桌面就能把它摆上来,这是应用触达用户的轻量入口。

桌面微件是应用伸到用户桌面上的一只手,看一眼就能拿到关键信息。

这篇把怎么做一个安卓桌面微件走一遍。

RemoteViews 的限制

微件的界面跑在启动器进程里,你的进程碰不到它的 View 树,只能用 RemoteViews 远程描述。这意味着能用的控件有限:不支持随便的自定义 View,布局也有一套白名单。想要复杂交互,点一下跳进真正的应用里做。

微件速查
  • RemoteViews在启动器进程里画界面。
  • 控件受限只用白名单布局和控件。
  • 点跳应用复杂交互进 App 里做。

定义一个微件

三要素:一个 RemoteViews 布局、一个 AppWidgetProvider 广播接收器、一份描述元数据的 xml。元数据里写清楚最小尺寸、更新周期、预览图。配好后用户就能在微件列表里看到它。

<appwidget-provider
  android:minWidth="110dp"
  android:minHeight="40dp"
  android:updatePeriodMillis="1800000">
</appwidget-provider>

元数据定好了,微件才知道该多大、多久刷一次。

更新微件数据

微件显示的数据靠 RemoteViews 局部更新:拿到 RemoteViews 实例,setText 改文字、setImageViewBitmap 换图,再用管理器整体推回去。不要每次重画整棵树,只动变了的部分,省电省内存。

安卓桌面微件:一块方形卡片悬浮在手机桌面外、显示占位图形与进度环的蓝调插画
一块小卡片,信息摆在桌面上。