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 janelas. Confira alguns exemplos de cenários criados para exercitar a IU escalonável:
Plano de fundo do mapa com apps flutuantes
Uma configuração de plano de fundo de mapa com outros aplicativos flutuando por 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 iniciados por 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 interativo de tela dividida que permite redimensionamento dinâmico.
Layout de várias âncoras para telas grandes
Um layout com várias âncoras projetado 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 do usuário 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 janelas automotivas 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 diminui 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 oferece 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. Uma Event aciona a transição, que define a animação usada pelo painel durante a mudança de estado. Um painel deve
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 pode
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 UI 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 das 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 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 multipainel persistentes
- Implementar uma cena inicial dinâmica
- Aplicar sobreposições contextuais
- Projetar interações complexas de 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 inicial dinâmica
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 página inicial 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 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.
Projetar interações complexas com o painel
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 personalizados para acionar Transitions específicos que não são padrão do sistema.