Pour offrir une expérience utilisateur cohérente et de haute qualité, et pour éviter les problèmes qui entraînent des échecs de la Compatibility Test Suite (CTS), implémentez les principes de base de WindowManager (WM) décrits ici. Ces principes s'appliquent aux éléments suivants :
Versions d'Android qui utilisent une architecture en mode multifenêtre, lancée dans Android 14 et poursuivie dans Android 15 avec l'UI évolutive.
UI évolutive Android et vos propres implémentations personnalisées
En appliquant ces principes, vous éviterez de manière proactive la plupart des problèmes de conformité CTS et de tests fonctionnels.
Terminologie
- invariant
- Condition logique qui reste vraie tout au long de l'exécution d'une application et qui conduit à l'intégrité structurelle. Un invariant agit comme une règle de limite.
- activité spéciale
- Également appelée activité d'UI automatique ou activité d'UI système, cette activité d'application critique dispose d'une zone dédiée sur l'écran qui est toujours visible ou la plupart du temps, même lorsque l'utilisateur appuie sur Accueil,comme une application de navigation principale ou de cluster.
- activité standard
- Toute activité d'application standard qui n'est pas essentielle à l'interface utilisateur principale du système, comme une application multimédia tierce lancée depuis la grille d'applications.
Principes WM
Pour maximiser la conformité au CTS, appliquez ces principes dans vos implémentations WM.
Utiliser une configuration stable au lancement de l'activité
Lancez chaque nouvelle activité standard avec une seule transition WM qui définit sa position, sa taille et sa densité finales. Vous ne devez pas déclencher une deuxième transition qui modifie la configuration de la fenêtre de la tâche sous-jacente (telle que la taille ou la densité) immédiatement après la première, car cela entraîne un changement de configuration immédiatement après la création de l'activité.
Passer les activités standards à l'état "Arrêtée"
Lorsque l'utilisateur accède à la tâche ou à la scène d'accueil, vous devez déplacer toutes les activités standards en cours d'exécution vers l'état arrêté afin de maintenir le cycle de vie prévisible des applications Android requis par les tests CTS.
Empêcher l'obscurcissement du contenu d'activité standard
Ne dessinez pas de décorations ni d'éléments d'interface utilisateur personnalisés qui obstruent le contenu d'une activité standard. Si vous dessinez des calques personnalisés (par exemple, une barre de contrôle de la température personnalisée), vous devez signaler les dimensions au système avec des encarts SystemOverlay. Pour Android 15 et versions ultérieures, utilisez DecorPanel dans l'UI évolutive.
Masquer les superpositions sur la demande de mode immersif
Lorsqu'une application demande le mode immersif, vous devez masquer tous les éléments d'UI personnalisés temporaires et supprimer leurs encarts SystemOverlay. Les obstructions persistantes interfèrent avec les attentes en termes de pixels d'une application.
Appliquer des angles arrondis uniquement au niveau de l'écran
Appliquez des angles arrondis uniquement au niveau de l'affichage à l'aide des configurations de ressources appropriées dans frameworks/base. N'appliquez pas d'angles arrondis arbitraires à la surface d'une activité standard.
Cela interfère avec les tests des éléments d'interface utilisateur. À titre temporaire, vous pouvez spécifier le même rayon d'angle arrondi pour l'affichage que celui que vous appliquez à la surface de l'activité standard.
Maintenir la taille de l'application lors d'une demande de mode immersif
Lorsqu'une application demande à passer en mode immersif, ne redimensionnez pas sa fenêtre. Cela déclenche une modification de configuration perturbatrice. À la place, pour maximiser l'application, proposez un bouton plein écran contrôlé par l'utilisateur.