Use a IU 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 janela flexível.
Minimiza os riscos, custos e complexidades de engenharia apresentados pelo conjunto de teste de compatibilidade (CTS) para implementações de interface do usuário.
A interface escalonável é compatível com uma ampla variedade de designs modernos de infoentretenimento no veículo (IVI) que precisam de arranjos de janela dinâmicos, além de reduzir a escala para oferecer suporte a experiências tradicionais com arranjos de janela estáticos.
O Android 17 apresenta os seguintes recursos específicos para janelas avançadas:
- Implementar painéis de notificação de alerta
- Personalizar barras de 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 janelamento. Confira alguns exemplos de cenários criados para testar a interface escalonável:
Plano de fundo do mapa com apps flutuantes
Uma configuração de plano de fundo de mapa com outros aplicativos flutuando na parte de cima.
Segundo plano do app
Uma configuração de plano de fundo do aplicativo com painéis flutuantes.
App fixado abaixo de outros apps
Um aplicativo fixado, como um contêiner de widget, com outros aplicativos sendo iniciados por cima.
Painel flutuante condicional
Um painel flutuante condicional que aparece apenas quando condições específicas são atendidas, como quando uma mídia está sendo reproduzida ou quando um alerta é acionado.
App fixado perto do motorista
Um app 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 interativo de tela dividida que permite redimensionamento dinâmico.
Layout de várias âncoras para telas grandes
Um layout de várias âncoras criado para telas grandes.
Carrossel de apps na tela inicial
Um layout de 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 compliance.
Mais flexibilidade de design: capacidade comprovada de recriar vários modelos de janela automotiva complexos. A interface escalonável é compatível com designs ambiciosos e altamente diferenciados.
Menos complexidade de implementação: a abstração em um modelo XML de alto nível e orientado por configuração reduz a barreira de entrada para a lógica de janela personalizada.
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 ao eliminar armadilhas e diminuir problemas de certificação.
A abordagem baseada em XML resolve desafios comuns ao gerenciar sistemas de janelas complexos no AAOS, como posicionamento preciso, conflitos de ordem Z e foco do app.
A interface escalonável fornece esses elementos básicos.
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 apps (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 passa 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
mudar do estado atual para toVariant. Para sincronização, o gerenciador de janelas
principal anima e coordena todas as transições.
- Evento:um acionador para iniciar uma mudança na interface. Um OEM ou o sistema podem
pré-definir um gatilho. Por exemplo,
_System_OnHomeEvent,_System_TaskOpenEventou um toque em um botão de navegação personalizado.
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:defina interações complexas da interface do usuário.
Organizar sistemas de janelas:controle o posicionamento e a sobreposição de janelas.
Implemente temas visuais:aplique uma estética e um branding consistentes.
Reduza a complexidade do código:minimize a necessidade de desenvolvimento extenso de código personalizado.
Para saber mais, consulte Configurar uma transição.
Botões da interface do sistema
Além de acionar intents, o CarSystemBarButtons pode acionar um
evento de interface escalonável quando tocado usando os atributos event, selectedEvent e
unselectedEvent.
event descreve o evento que será acionado quando o botão for 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 persistentes de vários painéis
- Implementar uma cena inicial dinâmica
- Aplicar sobreposições contextuais
- Projetar interações complexas com painéis
Criar layouts multipainel persistentes
Crie uma experiência multizona em que diferentes áreas da tela são permanentemente dedicadas a funções específicas. Por exemplo, controles de mídia dedicados, uma faixa de clima ou um mapa em 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 dinâmica na casa
Implemente uma cena Início 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 de casa opened ou default,
configure _System_HomeEvent.
Aplicar sobreposições contextuais
Coloque elementos de interface que não sejam de apps, como widgets contextuais, branding personalizado e barras de arrastar que podem ser animadas em coordenação com as tarefas do app.
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 sobreposição precisar ser
sincronizada com a sobreposição TaskPanel.
Criar interações complexas com painéis
Projete 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 personalizado para acionar Transitions específicos que não são padrão do sistema.
Estender layouts de IVI para um cockpit digital unificado
A interface escalonável gerencia o janelamento de vários painéis (TaskPanel e DecorPanel) na tela principal de infoentretenimento (display0) na VM SDV IVI. Você pode parear a
UI escalonável com a Segurança da tela para atualizar as visualizações do painel de instrumentos
quando o layout da tela principal muda:
- Ações de interface escalonáveis (VM
SDV IVI): quando o estado de um painel muda na tela principal, a interface escalonável pode enviar uma intent usando um<Action>emxml/scalable_ui_actions.xmlpara notificar os componentes do cluster sobre mudanças de layout ou modo. Para mais informações, consulte Configurar uma ação. - DriverUI (VM
SDV IVI): é executado na tela do cluster (display1) como um app do sistema iniciado porClusterHomeManagere criado comautomotive-design-compose. ODriverUIrenderiza conteúdo de cluster não relacionado à segurança (como mapas, mídia e ligações) e processa atualizações de estado do sistema IVI. - Gateway SDV no IVI (VM
SDV IVI):DriverUIusa oSDV Gateway Clientpara se conectar ao renderizador de alta disponibilidade (HAR) via gRPC (driverui.proto). ODriverUIenvia atualizações de estado do cluster (como variantes de layout, tokens de tema e mudanças de localidade) junto com mensagens periódicas de pulsação. HARe Monitor de segurança (VMSDV Media): executados em uma VMSDV Mediaseparada para renderizar elementos essenciais à segurança, como velocidade, marcha, indicadores, avisos sonoros e feeds da câmera traseira. Enquanto recebe pulsações deDriverUI, oHARmantém as regiões de cluster do Android transparentes para que o conteúdo doDriverUIse misture com as sobreposições de segurança doHAR. Se oSDV IVIestiver sendo inicializado ou indisponível, oHARvai mostrar marcadores de posição substitutos.- Configuração do OEM:para configurar esse fluxo, configure gatilhos
<Event>e intenções<Action>emxml/scalable_ui_actions.xmlnoSDV IVI, atualize o arquivo de design do Figma e os mapeamentos de sinalConfig.jsonpara a ferramenta de design de segurança e implemente a camada de abstração da plataforma HAR (PAL) para o hardware de destino.