Android 12 小部件改进

Android 12(API 级别 31)重新设计了现有的 小部件 API,以改善平台和启动器中的用户和开发者体验。使用本指南了解如何确保您的 Widget 与 Android 12 兼容,以及作为刷新现有 Widget 的 API 参考。

Alt text

确保您的 Widget 与 Android 12 兼容

Android 12 中的小部件具有圆角。当在运行 Android 12 或更高版本的设备上使用应用小部件时,启动器会自动识别小部件的背景并将其裁剪为圆角。

在这种情况下,您的 Widget 在以下任一情况下可能无法正确显示

  • Widget 包含角部内容:这可能会导致角部区域的一些内容被裁剪。

  • Widget 使用不受裁剪影响的背景。这包括透明背景、空视图或布局,或任何其他不易裁剪的特殊背景。系统可能无法正确识别要使用的背景。

如果您的 Widget 会受到此更改的影响,我们建议使用圆角对其进行刷新(如以下部分所述),以确保其正确显示。

使用示例

要查看所有这些 API 的实际应用,请查看我们的 示例列表 Widget

实现圆角

Android 12 引入了 system_app_widget_background_radiussystem_app_widget_inner_radius 系统参数来设置 Widget 圆角的半径。

Tokyo weather widget
图 1:Widget 上以及 Widget 内视图上的圆角

1 Widget 的角。

2 Widget 内视图的角。

有关详细信息,请参阅 实现圆角

添加设备主题

从 Android 12 开始,Widget 可以使用设备主题颜色用于按钮、背景和其他组件,包括浅色和深色主题。这使得在不同 Widget 之间实现更平滑的过渡和一致性。

有关更多信息,请参阅 添加设备主题

Widget in light mode theme
图 2:浅色主题下的 Widget
Widgets in dark mode theme
图 3:深色主题下的 Widget

简化 Widget 个性化

如果使用 configure 属性的 appwidget-provider 指定配置活动,则应用小部件主机会在用户将小部件添加到主屏幕后立即启动该活动。

Android 12 添加了新的选项,让您可以为用户提供更好的配置体验。有关详细信息,请参阅 启用用户配置 Widget

添加新的复合按钮

Android 12 添加了对使用以下现有组件的状态行为的新支持

Widget 仍然是无状态的。您的应用必须存储状态并注册状态更改事件。

图 4:带有复选框的示例 Widget

有关详细信息,请参阅 状态行为支持

使用改进的 Widget 大小和布局 API

从 Android 12 开始,您可以通过指定其他 Widget 大小约束以及提供响应式布局和精确布局,利用更精细的大小属性和更灵活的布局。

详情请参阅 提供灵活的 Widget 布局

提升应用的 Widget 选择器体验

Android 12 允许您通过添加动态 Widget 预览和 Widget 描述来提升应用的 Widget 选择器体验。有关详细信息,请参阅 向 Widget 选择器添加可缩放的 Widget 预览为您的 Widget 添加描述

启用更流畅的过渡

从 Android 12 开始,当用户从 Widget 启动您的应用时,启动器会提供更流畅的过渡。有关详细信息,请参阅 启用更流畅的过渡

使用简化的 RemoteViews 集合

Android 12 添加了 setRemoteAdapter(int viewId, RemoteViews.RemoteCollectionItems items) 方法,该方法允许您的应用在填充 ListView 时直接传递集合。以前,在使用 ListView 时,必须实现并声明 RemoteViewsService 以返回 RemoteViewsFactory

有关详细信息,请参阅 使用 RemoteViews 集合

使用 RemoteViews 的运行时修改

Android 12 添加了几个 RemoteViews 方法,允许对 RemoteViews 属性进行运行时修改。有关添加方法的完整列表,请参阅 RemoteViews API 参考。

有关详细信息,请参阅 使用 RemoteViews 的运行时修改