Melhorias nos widgets do Android 12

O Android 12 (nível 31 da API) reformula a API Widgets para melhorar a experiência do usuário e do desenvolvedor na plataforma e nas telas de início. Neste guia, você aprenderá como garantir que o widget seja compatível com o Android 12. Ele também serve como referência de APIs para atualizar seu widget existente.

Texto alternativo

Garantir que o widget seja compatível com o Android 12

Os widgets do Android 12 têm cantos arredondados. Quando um widget de app é usado em um dispositivo com o Android 12 ou mais recente, a tela de início identifica o plano de fundo do widget e o corta para ter cantos arredondados.

Nesse cenário, o widget pode não ser exibido corretamente em uma destas condições:

  • O widget tem conteúdo nos cantos: isso pode fazer com que algum conteúdo no área do canto seja cortado.

  • O widget usa um fundo que não é suscetível a cortes. Isso inclui um plano de fundo transparente, visualizações ou layouts vazios, ou qualquer outro tipo de plano de fundo especial não propenso a cortes. O sistema pode não conseguir identificar corretamente o fundo a ser usado.

Se o widget for afetado por essa mudança, recomendamos que você o atualize para ter cantos arredondados, conforme descrito na seção a seguir, para garantir que ele seja exibido corretamente.

Usar o exemplo

Para ver todas essas novas APIs em ação, confira nossa lista de widgets de exemplo (link em inglês).

Implementar cantos arredondados

O Android 12 introduz os parâmetros de sistema system_app_widget_background_radius e system_app_widget_inner_radius para definir o raio dos cantos arredondados do widget.

Widget do clima de Tóquio
Figura 1: cantos arredondados em um widget e uma visualização dentro dele

1 Canto do widget.

2 Canto de uma visualização dentro do widget.

Veja mais detalhes em Implementar cantos arredondados.

Adicionar temas de dispositivo

A partir do Android 12, um widget pode usar as cores de tema do dispositivo para botões, planos de fundo e outros componentes, incluindo temas claros e escuros. Isso possibilita transições mais suaves e consistência em diferentes widgets.

Consulte Adicionar temas de dispositivos para saber mais.

Widget no tema do modo claro
Figura 2: widget no tema claro
Widgets no tema do modo escuro
Figura 3: widget no tema escuro

Facilitar a personalização de widgets

Se você especificar uma atividade de configuração usando o atributo configure do appwidget-provider, o host do widget do app iniciará essa atividade imediatamente após um usuário adicionar o widget à tela inicial.

O Android 12 adiciona novas opções para fornecer uma experiência de configuração melhorada aos usuários. Consulte Permitir que os usuários configurem widgets para mais detalhes.

Adicionar novos botões compostos

O Android 12 adicionou novo suporte a comportamentos com estado usando os componentes existentes abaixo:

O widget ainda não tem estado. O app precisa armazenar o estado e se registrar para eventos de mudança de estado.

Figura 4: exemplo de widget com caixas de seleção

Para detalhes, consulte Suporte a comportamento com estado.

Usar APIs melhoradas para tamanhos e layouts de widgets

A partir do Android 12, é possível aproveitar atributos de tamanho mais refinados e layouts mais flexíveis ao especificar outras restrições de dimensionamento de widget e fornecer layouts responsivos ou exatos.

Consulte Oferecer layouts de widget flexíveis para saber mais detalhes.

Melhorar a experiência com o seletor de widgets do app

O Android 12 possibilita que você melhore a experiência do seletor de widgets para o app adicionando visualizações e descrições dinâmicas de widgets. Para detalhes, consulte Adicionar visualizações de widgets escalonáveis ao seletor de widgets e Adicionar uma descrição ao widget.

Ativar transições mais suaves

No Android 12, as telas de início oferecem uma transição mais suave quando um usuário inicia o app de um widget. Consulte Ativar transições mais suaves para mais detalhes.

Usar coleções RemoteViews simplificadas

O Android 12 adiciona o método setRemoteAdapter(int viewId, RemoteViews.RemoteCollectionItems items), que possibilita ao app transmitir uma coleção diretamente ao preencher uma ListView. Anteriormente, ao usar uma ListView, era necessário implementar e declarar um RemoteViewsService para retornar a RemoteViewsFactory.

Para ver mais detalhes, consulte Usar coleções RemoteViews.

Usar a modificação de RemoteViews durante a execução

O Android 12 adiciona vários métodos de RemoteViews que possibilitam a modificação dos atributos RemoteViews durante a execução. Consulte a referência da API RemoteViews para ver a lista completa de métodos adicionados.

Para detalhes, consulte Usar a modificação de RemoteViews durante a execução.