Criar uma notificação de estilo de métrica

O Android 17 apresenta o modelo de notificações MetricStyle para oferecer suporte a apps de saúde e fitness, timers e casos de uso de apps de viagem.

Exemplo de timer usando MetricStyle
Figura 1:um modelo de notificação MetricStyle e uma atualização dinâmica para um app de relógio

Recursos

As notificações de estilo de métrica têm os seguintes recursos:

  • Aceita o uso do método setContentTitle.
  • Não mostra o texto de contexto.
  • Aceita até três botões de ação.
  • Permite a medição de até três métricas.
    • Cada Notification.Metric requer um rótulo, um valor e uma unidade opcional.
    • A aparência do layout expandido varia de acordo com o número de métricas coletadas.
O modelo MetricStyle em vários estados
Figura 2:exemplos do modelo MetricStyle em vários estados. Da esquerda para a direita: tela sempre ativada (AOD), promovida como uma atualização ao vivo, padrão/expandida e padrão/reduzida.

Comportamento

A notificação de estilo de métrica muda de comportamento com base no estado dela:

  • As unidades de métrica são anexadas ao rótulo no estado expandido.
  • A segunda linha do estado recolhido mostra o conteúdo das métricas concatenado em uma única linha. A segunda e a terceira métricas só aparecem se couberem completamente quando concatenadas.
  • A unidade é omitida no estado recolhido.
  • Cada métrica recebe o mesmo espaço horizontal, independente do conteúdo.

Como uma atualização em tempo real

Quando uma notificação de estilo de métrica é promovida a uma atualização em tempo real, considere o seguinte:

  • Não é necessário fornecer Notification.Builder#setContentTitle porque o valor da métrica é usado. Se nenhum título for fornecido, o nome do app será mostrado.
  • Se Notification.Builder#setSubtext for fornecido, ele será mostrado na linha de cabeçalho, em vez de ser movido para uma nova linha, como acontece com outros estilos promovidos.
  • Os botões de ação têm o mesmo tratamento visual de pílula.

Pontos principais sobre o código

Veja também