Présentation de l'UI évolutive

Utilisez Scalable UI pour créer des expériences utilisateur sophistiquées, dynamiques et multipanaux dans les voitures. Interface utilisateur évolutive :

  • Fournit un système de fenêtrage flexible.

  • Réduit les risques, les coûts et la complexité liés à l'ingénierie présentés par la Compatibility Test Suite (CTS) pour les implémentations d'interface utilisateur.

L'UI évolutive est compatible avec un large éventail de conceptions modernes d'infodivertissement embarqué (IVI) qui nécessitent des arrangements de fenêtres dynamiques, tout en s'adaptant pour prendre en charge les expériences traditionnelles avec des arrangements de fenêtres statiques.

Android 17 introduit les fonctionnalités suivantes spécifiques au fenêtrage avancé :

Exemples d'expériences

L'UI évolutive permet une infinité de configurations de fenêtres. Voici quelques exemples de scénarios créés pour tester l'UI évolutive :

Arrière-plan de carte avec applications flottantes

Configuration de l'arrière-plan d'une carte avec d'autres applications flottant au-dessus.

Arrière-plan de l'application

Configuration de l'arrière-plan d'une application avec des panneaux flottants.

Appli épinglée sous d'autres applis

Une application épinglée, telle qu'un conteneur de widgets, avec d'autres applications qui se lancent au-dessus.

Panneau flottant conditionnel

Il s'agit d'un panneau flottant conditionnel qui s'affiche uniquement lorsque des conditions spécifiques sont remplies, par exemple lorsqu'un contenu multimédia est en cours de lecture ou lorsqu'une alerte est déclenchée.

Appli épinglée près du conducteur

Une application épinglée plus près du conducteur.

Disposition de l'écran partagé

Mise en page en écran partagé affichant deux applications côte à côte.

Écran partagé interactif

Une mise en page interactive en écran partagé permettant un redimensionnement dynamique.

Mise en page multi-ancrage pour les grands écrans

Mise en page multi-ancres conçue pour les grands écrans.

Disposition de l'écran d'accueil avec un carrousel d'applications.

Avantages et conformité

Voici quelques-uns des avantages de l'UI évolutive :

  • Réduction des risques liés aux tests : le framework est pré-certifié et conforme au CTS, ce qui élimine le risque principal d'échec des tests en fin de cycle de programme. Une UI évolutive peut vous faire gagner des mois de travail d'ingénierie et accélérer la conformité.

  • Plus de flexibilité de conception : capacité éprouvée à recréer de nombreux modèles de vitrage automobile complexes existants. L'UI évolutive prend en charge les conceptions ambitieuses et très différenciées.

  • Complexité d'implémentation réduite : l'abstraction dans un modèle XML de haut niveau basé sur la configuration réduit la barrière à l'entrée pour la logique de fenêtrage personnalisée.

  • Meilleures performances : l'UI évolutive s'exécute sur une base de fenêtrage hautes performances, entièrement intégrée à Android standard. Les transitions sont fluides, ce qui permet une optimisation directe.

Principes de base

L'UI évolutive minimise le besoin de code spécifique à l'OEM, facilite la mise à jour et réduit les risques de lancement en éliminant les pièges et en réduisant les problèmes de certification.

L'approche basée sur XML permet de résoudre les problèmes courants liés à la gestion de systèmes de fenêtrage complexes dans AAOS, tels que le positionnement précis, les conflits d'ordre Z et le focus des applications.

L'UI évolutive fournit ces composants de base.

Panneau

Un panneau est le conteneur rectangulaire de base sur l'écran. Chaque panneau correspond à une tâche racine dédiée pour une gestion indépendante. Un panneau peut héberger des tâches d'application (TaskPanel) ou du contenu basé sur des vues, comme des widgets (DecorPanel). Pour en savoir plus, consultez Configurer un panneau.

Variante

Une variante définit un état visuel spécifique pour un panneau et inclut des propriétés telles que bounds (position et taille), visibility, layer (ordre Z) et le rayon corner. Un même panneau peut avoir plusieurs variantes, comme opened, closed ou minimized. Pour en savoir plus, consultez Utiliser une variante pour concevoir un état visuel.

Transition

Une transition définit la façon dont un panneau passe de son état actuel fromVariant à un nouvel état toVariant. Un Event déclenche la transition, qui définit l'animation utilisée par le panneau lors du changement d'état. Un panneau doit passer de son état actuel à toVariant. Pour la synchronisation, le gestionnaire de fenêtres principal anime et coordonne toutes les transitions.

  • Événement : déclencheur d'un changement d'UI. Un OEM ou le système peuvent prédéfinir un déclencheur. Par exemple, _System_OnHomeEvent, _System_TaskOpenEvent ou l'appui sur un bouton de navigation personnalisé.

Par exemple, Scalable UI utilise des événements pour déclencher des transitions. Ces transitions animent un panneau d'une variante à une autre pour afficher les modifications dynamiques dans l'UI. L'UI évolutive communique ces modifications aux autres applications système pour ajuster le contenu si nécessaire. En définissant des relations d'UI en XML, vous pouvez :

  • Spécifiez des comportements complexes de l'UI : définissez des interactions complexes de l'interface utilisateur.

  • Organiser les systèmes de fenêtres : contrôlez le positionnement et la superposition des fenêtres.

  • Implémentez des thèmes visuels : appliquez une esthétique et un branding cohérents.

  • Réduisez la complexité du code : minimisez le besoin de développer un code personnalisé étendu.

Pour en savoir plus, consultez Configurer une transition.

Boutons de l'UI du système

En plus de déclencher des intents, CarSystemBarButtons peut déclencher un événement d'UI évolutive lorsqu'il est appuyé à l'aide des attributs event, selectedEvent et unselectedEvent.

event décrit l'événement à déclencher lorsque l'utilisateur appuie sur le bouton. Si vous avez besoin d'un contrôle plus précis sur un événement, utilisez les attributs selectedEvent et unselectedEvent pour spécifier l'événement à déclencher lorsque le bouton est sélectionné ou désélectionné, respectivement.

Quand implémenter l'UI du système ?

Cette section décrit les utilisations optimales de l'UI évolutive.

Créer des mises en page multipanaux persistantes

Créez une expérience multizone dans laquelle différentes zones de l'écran sont dédiées en permanence à des fonctions spécifiques. Par exemple, des commandes multimédias dédiées, une bande de climatisation ou une carte en plein écran.

Utilisez TaskPanels pour les applications principales (comme la navigation) et DecorPanels pour les éléments d'interface utilisateur, sous forme de vues, qui doivent être placés entre TaskPanels.

Implémenter une scène de maison dynamique

Implémentez une scène Home composée de plusieurs panneaux d'application interactifs et visibles simultanément. Par exemple, la carte, le lecteur multimédia et la grille d'applications.

Pour faire passer tous les panneaux concernés à leur variante opened ou default, configurez _System_HomeEvent.

Appliquer des calques contextuels

Placez des éléments d'interface utilisateur non liés à l'application, tels que des widgets contextuels, une identité visuelle personnalisée et des barres de déplacement qui peuvent être animées en coordination avec les tâches de l'application.

Utilisez DecorPanels pour tous les éléments purement décoratifs ou hébergeant des widgets. Si un widget héberge une application entièrement fonctionnelle et pouvant être lancée, un Panel > TaskPanel est optimal. Utilisez DecorPanels pour les éléments d'UI basés sur les vues lorsque la superposition doit être synchronisée avec la superposition TaskPanel.

Concevoir des interactions complexes avec les panneaux

Concevez des actions utilisateur avancées, comme le redimensionnement dynamique d'un panneau d'application ou l'ajustement des vues du tableau de bord en fonction du contenu de l'écran principal.

Définissez des Events personnalisés pour déclencher des Transitions spécifiques non standards.

Étendre les mises en page IVI à un cockpit numérique unifié

L'UI évolutive gère le fenêtrage multipanneau (TaskPanel et DecorPanel) sur l'écran d'info-divertissement principal (display0) dans la VM SDV IVI. Vous pouvez associer l'UI évolutive à Display Safety pour mettre à jour les vues du tableau de bord lorsque la mise en page de l'écran principal change :

  • Actions d'UI évolutives (VM SDV IVI) : lorsqu'un état de panneau change sur l'écran principal, l'UI évolutive peut envoyer un intent à l'aide d'un <Action> dans xml/scalable_ui_actions.xml pour informer les composants du cluster des modifications de la mise en page ou du mode. Pour en savoir plus, consultez Configurer une action.
  • DriverUI (VM SDV IVI) : s'exécute sur l'écran du cluster (display1) en tant qu'application système lancée par ClusterHomeManager et conçue avec automotive-design-compose. DriverUI affiche le contenu des clusters non liés à la sécurité (comme les cartes, les contenus multimédias et les appels téléphoniques) et gère les mises à jour d'état du système IVI.
  • Passerelle SDV sur IVI (VM SDV IVI) : DriverUI utilise SDV Gateway Client pour se connecter au rendu à haute disponibilité (HAR) via gRPC (driverui.proto). DriverUI envoie des mises à jour de l'état du cluster (telles que les variantes de mise en page, les jetons de thème et les modifications de paramètres régionaux) ainsi que des messages de pulsation périodiques.
  • HAR et Safety Monitor (VM SDV Media) : s'exécutent dans une VM SDV Media distincte pour afficher les éléments essentiels à la sécurité (tels que la vitesse, le rapport engagé, les voyants, les carillons et les flux de caméras de recul). Bien qu'il reçoive des signaux de présence de DriverUI, HAR conserve la transparence des régions du cluster Android afin que le contenu DriverUI se fonde avec les calques de sécurité HAR. Si SDV IVI est en cours de démarrage ou n'est pas disponible, HAR affiche des espaces réservés de remplacement.
  • Configuration OEM : pour configurer ce flux, configurez les déclencheurs <Event> et les intents <Action> dans xml/scalable_ui_actions.xml sur SDV IVI, mettez à jour le fichier de conception Figma et les mappages de signaux Config.json pour la chaîne d'outils de conception de sécurité, et implémentez la couche d'abstraction de plate-forme (PAL) HAR pour votre matériel cible.