Ícones adaptativos

Cabeçalho de ícones adaptáveis

Um ícone adaptativo, ou AdaptiveIconDrawable, pode ser exibido de maneira diferente dependendo dos recursos do dispositivo e do tema do usuário. Os ícones adaptativos são usados principalmente na tela de início, mas também podem ser usados em atalhos, no app Configurações, em caixas de diálogo de compartilhamento e na tela de visão geral. Os ícones adaptativos são usados em todos os formatos do Android.

Ao contrário das imagens de bitmap, os ícones adaptativos podem se adaptar a diferentes casos de uso:

  • Formas diferentes:um ícone adaptativo pode mostrar várias formas em diferentes modelos de dispositivos. Por exemplo, ele pode mostrar uma forma circular em um dispositivo OEM e uma forma quadrada com cantos arredondados em outro. Cada OEM de dispositivo precisa fornecer uma máscara usada pelo sistema para renderizar todos os ícones adaptativos com a mesma forma.

    Um GIF mostrando uma animação repetida do mesmo ícone de amostra do Android,
com diferentes formas dependendo da máscara usada: um círculo e depois
dois tipos diferentes de squircle.
    Figura 1. Os ícones adaptativos são compatíveis com várias máscaras, que variam de acordo com o dispositivo.
  • Efeitos visuais:um ícone adaptativo é compatível com vários efeitos visuais interessantes, que aparecem quando os usuários colocam ou movem o ícone na tela de início.

    Um GIF mostrando exemplos de dois ícones de amostra do Android em formato de círculo,
animados para mostrar a resposta do usuário. O primeiro ícone mostra o logotipo do Android
oscilando para a esquerda e para a direita, depois para cima e para baixo dentro do círculo. O segundo ícone se expande e depois se contrai novamente.
    Figura 2. Exemplos de efeitos visuais mostrados por um ícone adaptativo.
  • Temas do usuário:a partir do Android 13 (nível 33 da API), os usuários podem tematizar os ícones adaptativos. Se um usuário ativar os ícones de app temáticos nas configurações do sistema e a tela de início for compatível com esse recurso, o sistema vai usar a cor do plano de fundo e o tema escolhidos pelo usuário para determinar a tonalidade dos ícones de apps que têm uma camada monochrome no ícone adaptativo. A partir do Android 16 QPR 2, o Android tematiza automaticamente os ícones de apps que não fornecem os próprios.

    Exemplo de três dispositivos Android, cada um mostrando um
tema de usuário diferente com tons diferentes: o primeiro mostra um plano de fundo com
tons escuros; o segundo mostra um plano de fundo dourado; o terceiro mostra um
plano de fundo cinza claro com tons azulados. Em cada exemplo, os ícones herdaram a coloração do papel de parede e se misturam perfeitamente.
    Figura 3. Ícones adaptativos herdando o plano de fundo e os temas do usuário.

    Nos cenários a seguir, a tela inicial não mostra o ícone do app com tema, mas sim o ícone adaptativo ou padrão:

    • Se o usuário não ativar os ícones de app com tema.
    • Se o app não tiver um ícone do app monocromático e o dispositivo do usuário estiver executando uma versão do Android anterior ao Android 16 QPR 2.
    • Se a tela de início não oferecer suporte para ícones de apps com tema.

Criar ícones adaptativos

Para garantir a compatibilidade do ícone adaptativo com diferentes formas, efeitos visuais e temas do usuário, o design precisa atender aos seguintes requisitos:

  • Forneça duas camadas para a versão colorida do ícone: uma para o primeiro plano e outra para o segundo plano. As camadas podem ser vetores ou bitmaps, embora os vetores sejam preferíveis.

    Exemplo de uma camada de primeiro plano (esquerda) e uma camada de segundo plano (direita). O primeiro plano mostra o ícone de 16 lados de um logotipo de amostra do Android centralizado em uma zona de segurança de 66 x 66. A zona de segurança fica centralizada em um contêiner de 108 x 108. O plano de fundo mostra as mesmas dimensões medidas para a zona de segurança e o contêiner, mas apenas um plano de fundo azul e nenhum logotipo.
    Figura 4. Ícones adaptativos definidos usando camadas de primeiro e segundo planos. A zona de segurança de 66 x 66 mostrada é a área que nunca é cortada por uma máscara com uma forma definida por um OEM.
    Um exemplo mostrando o ícone da figura anterior sobreposto a uma máscara circular.
    Figura 5. Um exemplo de como as camadas de primeiro e segundo planos aparecem juntas com uma máscara circular aplicada.
  • Se você quiser oferecer suporte a temas de ícones de apps, forneça uma única camada para a versão monocromática do ícone.

    Um exemplo de camada de ícone monocromático (esquerda)
e visualizações de cores (direita). A camada monocromática mostra o ícone de 16 lados de um exemplo de logotipo do Android centralizado em uma zona de segurança de 66 x 66. A zona segura fica centralizada em um contêiner de 108 x 108. As prévias de cores mostram
a exibição dessa camada quando aplicada a temas de usuário de cores diferentes (laranja,
rosa, amarelo e verde).
    Figura 6. Uma camada de ícone monocromática (à esquerda) com exemplos de visualizações coloridas (à direita).
  • Dimensione todas as camadas para 108 x 108 dp.

  • Use ícones com bordas limpas. As camadas não podem ter máscaras ou sombras de segundo plano no contorno do ícone.

  • Use um logotipo de pelo menos 48 x 48 dp. Ele não pode exceder 66 x 66 dp, porque a área interna de 66 x 66 dp do ícone aparece na janela de visualização mascarada.

Os 18 dp externos em cada um dos quatro lados das camadas são reservados para mascaramento e para criar efeitos visuais, como paralaxe ou pulsação.

Para saber como criar ícones adaptativos usando o Android Studio, consulte o modelo do Figma de ícones de apps Android ou a documentação do Android Studio para criar ícones de apps. Leia também a postagem do blog Como criar ícones adaptativos.

Adicionar o ícone adaptativo ao app

Os ícones adaptativos, assim como os não adaptativos, são especificados usando o android:icon atributo no manifesto do app.

Um atributo opcional, android:roundIcon, é usado por telas de início que representam apps com ícones circulares e pode ser útil se o ícone do app incluir um plano de fundo circular como parte essencial do design. Essas telas de início precisam gerar ícones de apps aplicando uma máscara circular a android:roundIcon. Essa garantia permite otimizar a aparência do ícone do app, por exemplo, ampliando um pouco o logotipo e garantindo que, quando cortado, o plano de fundo circular seja de sangria total.

O snippet de código a seguir ilustra esses dois atributos, mas a maioria dos apps especifica apenas android:icon:

<application
    ...
    android:icon="@mipmap/ic_launcher"
    android:roundIcon="@mipmap/ic_launcher_round"
    ...>
</application>

Em seguida, salve o ícone adaptativo em res/mipmap-anydpi-v26/ic_launcher.xml. Use o elemento <adaptive-icon> para definir os recursos de camada de primeiro plano, segundo plano e monocromática para seus ícones. Os elementos internos <foreground>, <background> e <monochrome> oferecem suporte a imagens vetoriais e de bitmap.

O exemplo a seguir mostra como definir <foreground>, <background> e <monochrome> elementos dentro de <adaptive-icon>:

<?xml version="1.0" encoding="utf-8"?>
...
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
    <background android:drawable="@drawable/ic_launcher_background" />
    <foreground android:drawable="@drawable/ic_launcher_foreground" />
    <monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>
...

As camadas de primeiro plano e monocromáticas estão usando o mesmo drawable. No entanto, é possível criar drawables separados para cada camada, se necessário.

Também é possível definir drawables como elementos inline nos elementos <foreground>, <background> e <monochrome>. O snippet a seguir mostra um exemplo de como fazer isso com o drawable de primeiro plano.

<?xml version="1.0" encoding="utf-8"?>
...
<foreground>
   <inset
       android:insetBottom="18dp"
       android:insetLeft="18dp"
       android:insetRight="18dp"
       android:insetTop="18dp">
       <shape android:shape="oval">
           <solid android:color="#0000FF" />
       </shape>
   </inset>
</foreground>
...

Se você quiser aplicar aos seus atalhos a mesma máscara e efeito visual dos ícones adaptativos normais, use uma das seguintes técnicas:

  • Para atalhos estáticos, use o <adaptive-icon> elemento.
  • Para atalhos dinâmicos, chame o createWithAdaptiveBitmap() método ao criá-los.

Para mais informações sobre como implementar ícones adaptativos, consulte Como implementar ícones adaptáveis. Para mais informações sobre atalhos, consulte Visão geral dos atalhos de apps.

Outros recursos

Consulte os seguintes recursos para mais informações sobre como criar e implementar ícones adaptativos.