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 dinâmicos de janelas.
Benefícios e compliance
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 trabalho 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 janelas personalizada.
Melhor desempenho: a interface escalonável é criada em uma base de janelas de alto desempenho, totalmente integrada ao Android padrão. As transições são suaves e podem ser otimizadas.
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 os relacionados a 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
. A transição pode ser acionada por um Event
e
pode definir a animação que o painel passa durante a mudança de estado.
Um painel precisa mudar do estado atual para toVariant
. Para sincronização, todas as transições são animadas e coordenadas pelo gerenciador de janelas principal.
- 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_TaskOpenEvent
ou 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. Essas mudanças são comunicadas 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 do usuário: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
ScalableUI 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
- Criar 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 temperatura 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 iniciais opened
ou default
,
configure _System_HomeEvent
.
Aplicar sobreposições contextuais
Coloque elementos da 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, o ideal é usar Panel
> TaskPanel
. 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
personalizados para acionar Transitions
específicos que não são padrão do sistema.