Para implementar uma experiência do usuário consistente e de alta qualidade e evitar problemas que levam a falhas no Conjunto de teste de compatibilidade (CTS), implemente os princípios principais do WindowManager (WM) descritos aqui. Esses princípios se aplicam a:
Versões do Android que usam uma arquitetura de várias janelas, iniciada no Android 14 e continuada no Android 15 com a interface escalonável.
Interface escalonável do Android e suas próprias implementações personalizadas
Ao aplicar os princípios, você evita proativamente a maioria dos problemas de conformidade com o CTS e de testes funcionais.
Terminologia
- invariante
- Uma condição lógica que permanece verdadeira durante toda a execução de um app que leva à integridade estrutural. Uma invariante atua como uma regra de limite.
- atividade especial
- Também conhecida como atividade de IU automática ou atividade de interface do sistema, essa atividade crítica do app tem uma área dedicada na tela que está sempre visível ou visível na maior parte do tempo, mesmo quando o usuário pressiona Início,como um app de navegação principal ou de cluster.
- atividade padrão
- Qualquer atividade padrão do app que não seja essencial para a interface principal do sistema, como um app de mídia de terceiros iniciado na grade de apps.
Princípios de WM
Para maximizar a conformidade com o CTS, aplique estes princípios nas implementações do WM.
Usar uma configuração estável na inicialização da atividade
Inicie cada nova atividade padrão com uma única transição do WM que define a posição, o tamanho e a densidade finais dela. Não acione uma segunda transição que mude a configuração da janela da tarefa subjacente (como tamanho ou densidade) imediatamente após a primeira, porque isso causa uma mudança de configuração imediatamente após a criação da atividade.
Mover atividades padrão para o estado parado
Quando o usuário navega até a tarefa ou cena inicial, é preciso mover todas as atividades padrão em execução para o estado interrompido para manter o ciclo de vida previsível do app Android exigido pelos testes do CTS.
Impedir o encobrimento do conteúdo de atividade padrão
Não desenhe decorações personalizadas ou elementos da interface que obstruam o conteúdo de uma atividade padrão. Se você desenhar overlays personalizados (como uma barra de controle de clima personalizada), informe as dimensões ao sistema com encartes SystemOverlay. No Android 15 e versões mais recentes, use DecorPanel na interface escalonável.
Ocultar sobreposições na solicitação do modo imersivo
Quando um app solicita o modo imersivo, é necessário ocultar todos os elementos temporários da interface personalizada
e remover os encartes SystemOverlay. Obstruções persistentes
interferem nas expectativas de pixels de um app.
Aplicar cantos arredondados apenas no nível da tela
Aplique cantos arredondados apenas no nível da tela usando as configurações de recursos adequadas em frameworks/base. Não aplique cantos arredondados arbitrários à superfície de uma atividade padrão.
Isso interfere nos testes de elementos da interface. Como uma medida temporária, você pode especificar o mesmo raio de canto arredondado para a tela que aplica à superfície da atividade padrão.
Manter o tamanho do app na solicitação do modo imersivo
Quando um app solicitar a entrada no modo imersivo, não redimensione a janela dele. Isso aciona uma mudança de configuração disruptiva. Em vez disso, para maximizar o app, ofereça um botão de tela cheia controlado pelo usuário.