Um eine einheitliche und hochwertige Nutzererfahrung zu bieten und Probleme zu vermeiden, die zu CTS-Fehlern (Compatibility Test Suite) führen, sollten Sie die hier beschriebenen grundlegenden WindowManager-Prinzipien (WM) implementieren. Diese Grundsätze gelten für:
Android-Versionen mit einer Mehrfenstermodus-Architektur, die in Android 14 eingeführt und in Android 15 mit Scalable UI fortgesetzt wurde.
Skalierbare Android-Benutzeroberfläche und eigene benutzerdefinierte Implementierungen
Wenn Sie die Prinzipien anwenden, vermeiden Sie die meisten Probleme mit CTS-Compliance und Funktionstests.
Terminologie
- invariant
- Eine logische Bedingung, die während der gesamten Ausführung einer App wahr bleibt und zu struktureller Integrität führt. Eine Invariante fungiert als Grenzregel.
- besondere Aktivität
- Diese kritische App-Aktivität, die auch als „Auto-UI-Aktivität“ oder „System-UI-Aktivität“ bezeichnet wird, hat einen eigenen Bereich auf dem Display, der entweder immer oder die meiste Zeit sichtbar ist, auch wenn der Nutzer Home drückt. Beispiele sind eine primäre Navigations- oder Cluster-App.
- Standardaktivität
- Alle Standard-App-Aktivitäten, die nicht für die Hauptnutzeroberfläche des Systems erforderlich sind, z. B. eine Drittanbieter-Media-App, die über das App-Raster gestartet wird.
WM-Grundsätze
Um die CTS-Konformität zu maximieren, sollten Sie diese Grundsätze in Ihren WM-Implementierungen anwenden.
Stabile Konfiguration beim Start der Aktivität verwenden
Starten Sie jede neue Standardaktivität mit einem einzelnen WM-Übergang, der ihre endgültige Position, Größe und Dichte festlegt. Sie dürfen nicht unmittelbar nach dem ersten Übergang einen zweiten Übergang auslösen, der die Fensterkonfiguration der zugrunde liegenden Aufgabe ändert (z. B. Größe oder Dichte). Andernfalls wird unmittelbar nach dem Erstellen der Aktivität eine Konfigurationsänderung ausgelöst.
Standardaktivitäten in den Status „Beendet“ verschieben
Wenn der Nutzer zur Home-Aufgabe oder Home-Szene wechselt, müssen Sie alle laufenden Standardaktivitäten in den Status „Beendet“ versetzen, um den vorhersagbaren Android-App-Lebenszyklus beizubehalten, der für CTS-Tests erforderlich ist.
Verhindern, dass Standardinhalte für Aktivitäten verdeckt werden
Zeichnen Sie keine benutzerdefinierten Dekorationen oder UI-Elemente, die den Inhalt einer Standardaktivität verdecken. Wenn Sie benutzerdefinierte Overlays zeichnen, z. B. eine benutzerdefinierte Klimasteuerung, müssen Sie die Abmessungen mit SystemOverlay-Insets an das System melden. Verwenden Sie für Android 15 und höher DecorPanel in der skalierbaren Benutzeroberfläche.
Overlays bei Anfragen im Immersive-Modus ausblenden
Wenn eine App den immersiven Modus anfordert, müssen Sie alle temporären benutzerdefinierten UI-Elemente ausblenden und ihre SystemOverlay-Einzüge entfernen. Anhaltende Hindernisse beeinträchtigen die Pixelerwartungen einer App.
Abgerundete Ecken nur auf Displayebene anwenden
Wenden Sie abgerundete Ecken nur auf Displayebene an. Verwenden Sie dazu die entsprechenden Ressourcenkonfigurationen in frameworks/base. Wenden Sie keine willkürlichen abgerundeten Ecken auf die Oberfläche einer Standardaktivität an.
Dies beeinträchtigt Tests von UI-Elementen. Als vorübergehende Maßnahme können Sie für das Display denselben Radius für abgerundete Ecken angeben wie für die Oberfläche der Standardaktivität.
App-Größe bei Anforderung des Immersive-Modus beibehalten
Wenn eine App den immersiven Modus anfordert, darf die Größe des App-Fensters nicht geändert werden. Dadurch wird eine störende Konfigurationsänderung ausgelöst. Bieten Sie stattdessen eine vom Nutzer steuerbare Vollbildschaltfläche an, um die App zu maximieren.