Android

Analisando o Tema Escuro Expandido

O texto explora a implementação do Expanded Dark Theme no Android, que permite aos usuários escurecer aplicativos mesmo quando os desenvolvedores não forneceram um tema escuro. O autor utilizou Claude Science para analisar como o sistema opera e descobriu que, embora o tema automático preserve muitas características visuais, ele pode falhar em elementos de cor saturada ou cinza médio, destacando a importância da personalização manual.

Compartilhar
Medium

Analisando o Tema Escuro Expandido

Pressione enter ou clique para ver a imagem em tamanho completo
O robô Android comparando temas claros e escuros. Imagem gerada pelo autor.
Press enter or click to view image in full size
Da esquerda para a direita: Modo claro, Tema Escuro Expandido do Android (modo escuro automático) e um tema escuro construído manualmente com Material 3
Press enter or click to view image in full size
O tema escuro automático preservou em grande parte as famílias de cores. A cor laranja da marca foi a exceção, mudando para vermelho.
Press enter or click to view image in full size
Auto-dark reduz a legibilidade em elementos coloridos, por 1,8 a 2,5 vezes mais do que no texto simples e na cor preta
Press enter or click to view image in full size
Relação de contraste para os nove padrões limpos medidos em comparação com as metas do WCAG

The failures clustered around saturated colors and middle grays. To understand why those colors behaved differently, I traced how Android transforms them in the renderer.

Inside the renderer

For ordinary Android UI rendering, the app records drawing instructions that eventually pass through HWUI, Android’s hardware-accelerated UI renderer. Expanded Dark Theme can transform colors in those drawing instructions before they become pixels.

Press enter or click to view image in full size
Expanded Dark Theme situa-se entre as instruções de desenho do aplicativo e os pixels

Roughly, Android first decides whether a rendered chunk behaves like foreground or background. Text-containing nodes tend to become foreground and get pushed lighter; backgrounds get pushed darker, and the background guess is a heuristic the source itself labels a crude overlap check. Then one small piece of math picks the new color:

new lightness = min(110 − old lightness, 100)

applied only when it moves in the right direction. That guard is why my mid-grays never moved; a gray at lightness 50 maps to 60, wrong direction, left alone. Left alone is the trap. The gray stays put while everything behind it goes black, which is why the hand-built theme beat auto-dark on my placeholder; a designer re-lightens that gray, and the math never does. Here it is in the source:

The math runs in CIELAB, a color system from 1976 that describes a color with three numbers:

L = luminosidade, de 0 (preto) a 100 (branco)
a = posição entre verde (-) e vermelho (+)
b = posição entre azul (-) e amarelo (+)

O sistema promete que a luminosidade vive em L, então você pode alterá-la sem tocar na cor. O Android reescreve L e deixa a e b inalterados.

Essa promessa cria dois problemas na prática. Primeiro, ela não é cumprida perfeitamente. A matemática se curva para alguns tons, como o laranja, que é parte do motivo pelo qual sistemas mais recentes como OKLab existem. Segundo, as telas trabalham em um intervalo de cores fixo chamado sRGB, e quando a matemática pede uma cor fora desse intervalo, a tela substitui pela mais próxima.

Meu banner laranja atingiu ambos os problemas. A curvatura o moveu cerca de quatro graus para o vermelho. Em seguida, o laranja escuro ficou fora do sRGB; não existe um laranja escuro e vívido, então a substituição fez os dez graus restantes. O padrão se curvou um pouco, e a tela não conseguiu entregar o resto.

Pressione enter ou clique para ver a imagem em tamanho completo
Movimento de tom após escurecimento. O laranja moveu 14 graus

O ponto

A Expansão do Tema Escuro é uma alternativa útil, especialmente para pessoas que precisam ou preferem fortemente interfaces mais escuras. Mas para desenvolvedores, o conselho antigo da Google ainda vale: envie seu próprio tema escuro. O Android pode transformar pixels. Ele não sabe que laranja é a cor de sua marca, que cinza é texto placeholder ou que vermelho comunica um erro. Conte com o modo escuro automático, e essas decisões caem sobre heurísticas do renderizador, matemática de cores e os limites do sRGB.

Para uma alternativa automática, os resultados são surpreendentemente bons. Eles ainda não substituem um tema projetado com significado em mente.

Fonte original

Conteúdo traduzido e adaptado pela redação do Notícias Mobile. Confira também a matéria na fonte original.

Leia a matéria completa