Um corte da tela é uma área em alguns dispositivos que se estende até a superfície da tela. Ele permite uma experiência de ponta a ponta e, ao mesmo tempo, oferece espaço para sensores importantes na parte frontal do dispositivo.
O Android oferece suporte a cortes de tela em dispositivos com o Android 9 (nível 28 da API) e versões mais recentes. No entanto, os fabricantes de dispositivos também podem oferecer suporte a cortes de tela em dispositivos com o Android 8.1 ou versões anteriores.
Nesta página, descrevemos como implementar o suporte a dispositivos com cortes no Compose, incluindo como trabalhar com a área de corte, ou seja, o retângulo de ponta a ponta na superfície da tela que contém o corte.
Caso padrão
Os apps destinados ao nível desejado da API 34 ou versões anteriores, ou as Activities que não chamam
enableEdgeToEdge, não vão renderizar na região de corte por padrão, a menos que o app
renderize em uma barra de sistema que contenha o corte da tela.
Os apps direcionados ao nível 35 da API ou versões mais recentes em dispositivos com o Android 15 ou
versões mais recentes, ou as atividades que chamam enableEdgeToEdge, são renderizados na região do corte.
Em outras palavras, LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT,
LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES e
LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER são interpretados como
LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS para janelas não flutuantes em apps
que usam o nível 35 da API ou versões mais recentes em dispositivos com o Android 15 ou
versões mais recentes.
Processar informações de corte manualmente
Você precisa processar as informações do corte para evitar que a área do corte oculte textos, controles ou elementos interativos importantes que exigem reconhecimento de toque preciso (a sensibilidade ao toque pode ser menor na área do corte). Ao processar recortes, não fixe no código a altura da barra de status, porque isso pode levar à sobreposição ou ao corte do conteúdo. Em vez disso, processe os cortes de uma das seguintes maneiras:
Como usar
WindowInsets.displayCutout,WindowInsets.safeContentouWindowInsets.safeDrawingComo acessar o objeto de corte
PathcomLocalView.current.rootWindowInsets.displayCutout
Para o Compose, recomendamos o uso de displayCutout, safeContent ou
safeDrawing para processar as inserções de corte nos elementos que podem ser compostos. Essa abordagem permite
respeitar o padding do corte da tela quando necessário ou ignorá-lo quando não
for necessário.
Canvas(modifier = Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.displayCutout)) { drawRect(Color.Red, style = Stroke(2.dp.toPx())) }
Recomendados para você
- Observação: o texto do link aparece quando o JavaScript está desativado.
- Encartes de janela no Compose
- Modificadores gráficos
- Estilizar parágrafo