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.
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.
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.
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.
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
.