Mejoras de widgets en Android 12

Android 12 (nivel de API 31) renovó la API de Widgets existente para mejorar la experiencia del usuario y del desarrollador en la plataforma y los selectores. Usa esta guía con el fin de obtener información para asegurarte de que el widget sea compatible con Android 12 y también como referencia para las API que actualizan el widget existente.

Texto alternativo

Cómo asegurarte de que el widget sea compatible con Android 12

Los widgets en Android 12 tienen esquinas redondeadas. Cuando se usa el widget de una app en un dispositivo que ejecuta Android 12 o versiones posteriores, el selector identifica automáticamente el fondo del widget y lo recorta para que tenga esquinas redondeadas.

En este caso, es posible que el widget no se muestre de manera correcta en ninguna de las siguientes situaciones:

  • El widget incluye contenido en las esquinas. Es posible que se recorte parte del contenido en el área de la esquina.

  • El widget usa un fondo que no se puede recortar. Incluye un fondo transparente, vistas o diseños vacíos, o cualquier otro tipo de fondo especial que no suela recortarse. Es posible que el sistema no pueda identificar de manera correcta el fondo que se usará.

Si este cambio afecta al widget, te recomendamos que lo actualices con esquinas redondeadas (como se describe en la siguiente sección) para asegurarte de que se muestre de manera correcta.

Cómo usar la muestra

Para ver todas estas API en funcionamiento, consulta nuestro widget de la lista de muestras.

Cómo implementar esquinas redondeadas

En Android 12, se introducen los parámetros del sistema system_app_widget_background_radius y system_app_widget_inner_radius para establecer los radios de las esquinas redondeadas del widget.

Widget del clima en Tokio
Figura 1: Esquinas redondeadas en un widget y una vista dentro del widget

1 Esquina del widget.

2 Esquina de una vista dentro del widget.

Para obtener más información, consulta Cómo implementar esquinas redondeadas.

Cómo agregar temas del dispositivo

A partir de Android 12, un widget puede usar los colores del tema del dispositivo para botones, fondos y otros componentes, incluidos los temas claro y oscuro. De esta manera, se permiten transiciones más fluidas y coherencia en distintos widgets.

Consulta Cómo agregar temas del dispositivo para obtener más información.

Widget en el tema del modo claro
Figura 2: Widget en el tema claro
Widgets en el tema del modo oscuro
Figura 3: Widgets en el tema oscuro

Cómo personalizar widgets con mayor facilidad

Si especificas una actividad de configuración con el atributo configure de appwidget-provider, el host de widgets de la app inicia esa actividad inmediatamente después de que el usuario agregue el widget a su pantalla principal.

En Android 12, se agregan opciones nuevas para que puedas ofrecerles una mejor experiencia de configuración a los usuarios. Consulta Cómo permitir que los usuarios configuren widgets para obtener más información.

Cómo agregar botones compuestos nuevos

En Android 12, se agrega compatibilidad nueva para comportamientos con estados mediante los siguientes componentes existentes:

El widget todavía no tiene un estado. La app debe almacenar el estado y registrarse para los eventos de cambio de estado.

Figura 4: Widget de ejemplo con casillas de verificación

Para obtener más información, consulta Compatibilidad para comportamientos con estado.

Cómo usar API mejoradas para tamaños y diseños de widgets

A partir de Android 12, para aprovechar atributos de tamaño más definidos y diseños más flexibles, especifica restricciones adicionales para el tamaño de widgets y brinda diseños responsivos y exactos.

Consulta Cómo proporcionar diseños de widgets flexibles para obtener más información.

Cómo mejorar la experiencia con el selector del widget de la app

En Android 12, a fin de mejorar la experiencia del selector del widget para la app, puedes agregar vistas previas dinámicas y descripciones de widgets. Si deseas obtener más información, consulta Cómo agregar vistas previas escalables de widgets al selector del widget y Cómo agregar una descripción para el widget.

Cómo habilitar transiciones más fluidas

A partir de Android 12, los selectores brindan una transición más fluida cuando un usuario inicia la app desde un widget. Consulta Cómo habitar transiciones más fluidas para obtener más información.

Cómo usar colecciones RemoteViews simplificadas

En Android 12, se agrega el método setRemoteAdapter(int viewId, RemoteViews.RemoteCollectionItems items), que le permite a la app pasar una colección directamente cuando se propaga ListView. Anteriormente, cuando se usaba ListView, era necesario implementar y declarar RemoteViewsService para mostrar RemoteViewsFactory.

Para obtener más información, consulta Cómo usar colecciones RemoteViews.

Cómo usar la modificación del tiempo de ejecución de RemoteViews

En Android 12, se agregan varios métodos RemoteViews que permiten la modificación del tiempo de ejecución de los atributos RemoteViews. Consulta la referencia de la API de RemoteViews para ver la lista completa de métodos agregados.

Para obtener más información, consulta Cómo usar la modificación del tiempo de ejecución de RemoteViews.