Use a interface escalonável para criar experiências de usuário sofisticadas, dinâmicas e com vários painéis em carros. Interface escalonável:
Oferece um sistema de janelas flexível.
Minimiza os riscos, custos e complexidades de engenharia apresentados pelo conjunto de teste de compatibilidade (CTS, na sigla em inglês) para implementações de interface do usuário.
A interface escalonável oferece suporte a uma ampla variedade de designs modernos de infoentretenimento no veículo (IVI, na sigla em inglês) que precisam de arranjos de janela dinâmicos.
O Android 17 apresenta os seguintes recursos específicos para janelas avançadas:
- Implementar painéis de notificação heads-up
- Personalizar barras do sistema
- Maximizar a conformidade do teste com invariantes do WindowManager
- Integrar o assistente de configuração
Exemplos de experiências
A interface escalonável permite uma variedade infinita de configurações de janelas. Confira alguns exemplos de cenários criados para exercitar a interface escalonável:
Plano de fundo do mapa com apps flutuantes
Uma configuração de plano de fundo do mapa com outros aplicativos flutuando na parte de cima.
Segundo plano do app
Uma configuração de segundo plano do aplicativo com painéis flutuantes.
App fixado em outros apps
Um aplicativo fixado, como um contêiner de widget, com outros aplicativos sendo iniciados na parte de cima.
Painel flutuante condicional
Um painel flutuante condicional que aparece apenas quando condições específicas são atendidas, como quando a mídia está sendo reproduzida ou quando um alerta é acionado.
App fixado perto do motorista
Um aplicativo fixado posicionado mais perto do motorista.
Layout de tela dividida
Um layout de tela dividida mostrando dois aplicativos lado a lado.
Tela dividida interativa
Um layout de tela dividida interativo que permite o redimensionamento dinâmico.
Layout de vários pontos de ancoragem para telas grandes
Um layout de vários pontos de ancoragem projetado para telas grandes.
Carrossel de apps da tela inicial
Um layout da tela inicial com um carrossel de aplicativos.
Benefícios e conformidade
Os benefícios da interface escalonável incluem:
Menor risco de teste: o framework é pré-certificado e compatível com o CTS, o que elimina o principal risco de falhas de teste no final de um ciclo de programa. A interface escalonável pode economizar meses de esforço de engenharia e acelerar a conformidade.
Mais flexibilidade de design: capacidade comprovada de recriar vários modelos complexos de janelas automotivas. A interface escalonável oferece suporte a designs ambiciosos e altamente diferenciados.
Menos complexidade de implementação: a abstração em um modelo XML de alto nível e orientado à configuração diminui a barreira de entrada para a lógica de janelas personalizadas.
Melhor desempenho: a interface escalonável é executada em uma base de janelas de alto desempenho, totalmente integrada ao Android padrão. As transições fluem sem problemas, permitindo a otimização direta.
Principais blocos de desenvolvimento
A interface escalonável minimiza a necessidade de código específico do OEM, facilita a capacidade de atualização e reduz os riscos de lançamento, eliminando armadilhas e reduzindo problemas de certificação.
A abordagem orientada a XML aborda desafios comuns ao gerenciar sistemas complexos de janelas no Android Automotive OS (AAOS), como posicionamento preciso, conflitos de ordem Z e foco do app.
A interface escalonável oferece esses principais blocos de desenvolvimento.
Painel
Um painel é o contêiner retangular fundamental na tela. Cada painel é mapeado para uma tarefa raiz dedicada para gerenciamento independente. Um painel pode hospedar
tarefas de app (TaskPanel) ou conteúdo baseado em visualização, como widgets (DecorPanel).
Para saber mais, consulte Configurar um painel.
Variante
Uma variante define um estado visual específico para um painel e inclui propriedades como bounds (posição e tamanho), visibility, layer (ordem Z) e raio corner. Um único painel pode ter variantes, como opened, closed ou minimized. Para saber mais, consulte Usar uma variante para criar um estado visual.
Transição
Uma transição define como um painel se move do estado atual fromVariant para um novo estado, toVariant. Um Event aciona a transição, que define a animação usada pelo painel durante a mudança de estado. Um painel precisa passar do estado atual para toVariant. Para sincronização, o Window Manager principal anima e coordena todas as transições.
- Evento:um acionador para iniciar uma mudança de interface. Um OEM ou o sistema pode predefinir um acionador. Por exemplo,
_System_OnHomeEvent,_System_TaskOpenEventou uma pressão de botão de navegação personalizada.
Por exemplo, a interface escalonável usa eventos para acionar transições. Essas transições animam um painel de uma variante para outra para mostrar mudanças dinâmicas na interface. A interface escalonável comunica essas mudanças a outros apps do sistema para ajustar o conteúdo conforme necessário. Ao definir relações de interface em XML, você pode:
Especificar comportamentos complexos da interface:definir interações complexas da interface do usuário.
Organizar sistemas de janelas:controlar o posicionamento e a camada da janela.
Implementar temas visuais:aplicar marcação e estética consistentes.
Reduzir a complexidade do código:minimizar a necessidade de desenvolvimento de código personalizado extenso.
Para saber mais, consulte Configurar uma transição.
Botões da interface do sistema
Além de acionar intents, CarSystemBarButtons pode acionar um
evento de interface escalonável quando tocado usando event, selectedEvent e
unselectedEvent atributos.
event descreve o evento a ser acionado quando o botão é tocado. Se
for necessário um controle mais granular sobre um evento, use os atributos selectedEvent
e unselectedEvent para especificar o evento a ser acionado quando o botão
for selecionado ou desmarcado, respectivamente.
Quando implementar a interface do sistema
Esta seção descreve os usos ideais da interface escalonável.
- Criar layouts multipainéis persistentes
- Implementar uma cena inicial dinâmica
- Aplicar sobreposições contextuais
- Criar interações complexas de painel
Criar layouts multipainéis persistentes
Crie uma experiência multizona em que diferentes áreas da tela sejam dedicadas permanentemente a funções específicas. Por exemplo, controles de mídia dedicados, uma faixa de clima ou um mapa de tela cheia.
Use TaskPanels para apps principais (como navegação) e DecorPanels para elementos de interface, na forma de visualizações, que precisam ser colocados entre TaskPanels.
Implementar uma cena inicial dinâmica
Implemente uma cena inicial composta por vários painéis de apps visíveis e interativos simultaneamente. Por exemplo, mapa, player de mídia e grade de apps.
Para fazer a transição de todos os painéis relevantes para as variantes iniciais opened ou default, configure _System_HomeEvent.
Aplicar sobreposições contextuais
Coloque elementos de interface não relacionados a apps, como widgets contextuais, marcação personalizada e barras de arrastar que podem ser animadas em coordenação com tarefas de apps.
Use DecorPanels para todos os elementos puramente decorativos ou de hospedagem de widgets. Se um
widget hospedar um app totalmente funcional e inicializável, um Panel > TaskPanel será
ideal. Use DecorPanels para elementos de interface baseados em visualização quando a camada precisar ser sincronizada com a camada TaskPanel.
Criar interações complexas de painel
Crie ações avançadas orientadas pelo usuário, como redimensionar dinamicamente um painel de app ou ajustar as visualizações do painel de instrumentos com base no conteúdo da tela principal.
Defina Events personalizados para acionar Transitions específicas e não padrão do sistema.