Android 12(API 级别 31)改进了现有的 Widgets API,以改善平台和启动器中的用户和开发者体验。您可以通过本指南了解如何确保微件与 Android 12 兼容,也可以将其用作更新现有微件的 API 的参考。
确保微件与 Android 12 兼容
Android 12 中的微件采用圆角设计。将应用微件用在搭载 Android 12 或更高版本的设备上时,启动器会自动识别微件的背景,并将其剪裁成具有圆角。
在这种情况下,微件在以下任一条件下可能无法正确显示:
微件的角包含内容:这可能会导致角区域的某些内容被剪裁。
微件使用不易裁剪的背景:这包括透明背景、空视图或布局,或者其他任何类型的不易裁剪的特殊背景。系统可能无法正确识别要使用的背景。
如果微件将受此变更的影响,我们建议您将其更新为具有圆角(如下一部分所述),以确保其正确显示。
使用示例
如需了解所有这些 API 的实际运用,请查看我们的示例列表微件。
实现圆角
Android 12 引入了 system_app_widget_background_radius
和 system_app_widget_inner_radius
系统参数来设置微件圆角的半径。
![东京天气微件](https://developer.android.google.cn/static/images/appwidgets/widget-weather.png?authuser=6&hl=nb)
1 微件的角。
2 微件内视图的角。
如需了解详情,请参阅实现圆角。
添加设备主题
从 Android 12 开始,微件可以为按钮、背景及其他组件使用设备主题颜色,包括浅色主题和深色主题。这样可使过渡更流畅,而且还能在不同的微件之间保持一致。
如需了解详情,请参阅添加设备主题。
![采用浅色模式主题的微件](https://developer.android.google.cn/static/images/appwidgets/example-lightmode.png?authuser=6&hl=nb)
![采用深色模式主题的微件](https://developer.android.google.cn/static/images/appwidgets/example-darkmode.png?authuser=6&hl=nb)
使微件的个性化设置更容易
如果您使用 appwidget-provider
的 configure
属性指定配置 activity,在用户将微件添加到其主屏幕之后,应用微件宿主会立即启动该 activity。
Android 12 添加了一些新选项,可让您为用户提供更好的配置体验。如需了解详情,请参阅允许用户配置微件。
添加新的复合按钮
Android 12 使用以下现有组件新增了对有状态行为的支持:
微件仍然无状态。您的应用必须存储状态并注册状态更改事件。
![](https://developer.android.google.cn/static/images/appwidgets/home.png?authuser=6&hl=nb)
如需了解详情,请参阅对有状态行为的支持。
使用改进的 API 设置微件大小和布局
从 Android 12 开始,您可以通过指定额外的微件尺寸调整限制以及提供自适应布局和精确布局,来利用更精细的尺寸属性和更灵活的布局。
如需了解详情,请参阅提供灵活的微件布局。
改进应用的微件选择器体验
Android 12 可让您通过添加动态微件预览和微件说明来改进应用的微件选择器体验。如需了解详情,请参阅向微件选择器添加可缩放的微件预览和为微件添加说明。
实现更流畅的过渡
从 Android 12 开始,当用户从微件启动您的应用时,启动器会提供更流畅的过渡。如需了解详情,请参阅实现更流畅的过渡。
使用简化的 RemoteViews
集合
Android 12 添加了 setRemoteAdapter(int viewId, RemoteViews.RemoteCollectionItems items)
方法,可让您的应用在填充 ListView
时直接传递集合。以前,在使用 ListView
时,必须实现并声明 RemoteViewsService
以返回 RemoteViewsFactory
。
如需了解详情,请参阅使用 RemoteViews
集合。
使用 RemoteViews
的运行时修改
Android 12 添加了几个 RemoteViews
方法,可用于在运行时修改 RemoteViews
属性。如需查看所添加方法的完整列表,请参阅 RemoteViews
API 参考文档。
如需了解详情,请参阅使用 RemoteViews
的运行时修改。