Desktop-Freiform-Fenster

Auf dieser Seite werden Funktionen und Testszenarien im Zusammenhang mit Desktop-Freiform-Fenstern beschrieben.

In Android 17 und höher können Sie Desktop-Freiform-Fenster pro Display aktivieren. Weitere Informationen finden Sie unter Desktop-Freiform-Fenster aktivieren.

Desktopfunktionen

In diesem Abschnitt werden die wichtigsten Funktionen und Konfigurationen im Zusammenhang mit Desktop-Freiform-Fenstern beschrieben.

Aufgabenlimits aktivieren

So konfigurieren Sie die maximale Anzahl von Aufgaben, die in Desktop-Freiform-Fenstern unterstützt werden:

  1. Aktivieren Sie Desktop-Freiform-Fenster.
  2. Legen Sie das Konfigurations-Overlay-Flag config_maxDesktopWindowingActiveTasks in config.xml auf die maximale Anzahl der unterstützten Aufgaben fest. Wenn eine unbegrenzte Anzahl von Aufgaben unterstützt werden soll, legen Sie das Flag auf den Standardwert 0 fest:

    <integer name="config_maxDesktopWindowingActiveTasks">4</integer>
    

Browserspezifische Funktionen

In Android 16 wurden zwei browserspezifische Funktionen eingeführt: anpassbare Kopfzeilen Insets und App-Instanzverwaltung. In diesem Abschnitt werden die Testszenarien beschrieben, mit denen die Browserkompatibilität überprüft werden kann. OEMs müssen prüfen, ob die Implementierung der Funktion wie vorgesehen funktioniert.

Testfälle für anpassbare Kopfzeilen-Insets

Mit den folgenden Testfällen wird die Browserkompatibilität mit anpassbaren Kopfzeilen-Insets überprüft:

  • UI-Interaktivität:Prüfen Sie, ob die Titelleisten-UI des Browsers in allen Fensterkonfigurationen (Freiform, geteilter Bildschirm und Vollbild) vollständig interaktiv bleibt.
  • Abstand zu Systemsymbolen:Prüfen Sie, ob die Browser-UI nicht unter Systemsymbolen angezeigt wird.
  • Anwendung der Vordergrundfarbe:Prüfen Sie, ob die richtigen Vordergrundfarben auf Systemsymbole in der App-Kopfzeile angewendet werden, basierend auf dem Design des Browsers. Dies ist besonders wichtig, wenn sich das Design des Browsers vom Systemdesign unterscheidet.
  • Fenster ziehen:Prüfen Sie, ob ein Freiform-Fenster gezogen werden kann, indem Sie lange auf einen leeren Bereich der Tableiste drücken.
  • Sichtbarkeit von Tabs beim Ändern der Größe:Testen Sie, ob Tabs basierend auf der Breite des Fensters ein- oder ausgeblendet werden, um eine optimale Nutzerfreundlichkeit zu gewährleisten.

Testfälle für die App-Instanzverwaltung mit Ziehgestenverhalten

Mit den folgenden Testfällen wird die Browserkompatibilität mit der App-Instanzverwaltung überprüft:

  • Neues Fenster erstellen:Prüfen Sie, ob durch Ziehen eines Tabs aus der Tableiste in einen leeren Bereich ein neues Browserfenster mit diesem Tab erstellt wird.
  • Kein neues Fenster für den letzten Tab (einzelne Instanz) : Wenn nur eine Browserinstanz geöffnet ist, prüfen Sie, ob durch Ziehen des letzten Tabs in diesem Fenster kein neues Fenster erstellt wird.

Verhaltensmodi „Desktop-first“ und „Touch-first“

Desktop-Freiform-Fenster sind so konzipiert, dass sie eine Vielzahl von Formfaktoren unterstützen, darunter Clamshells und Geräte mit angeschlossenen externen Displays. Da verschiedene Formfaktoren unterschiedliche Erwartungen der Nutzer an die Interaktion mit sich bringen, die oft von der primären Eingabemethode (Touch oder Tastatur und Maus) bestimmt werden, werden bei Desktop-Freiform-Fenstern zwei verschiedene Verhaltensmodi verwendet:

  • Desktop-first-Modus:Bietet eine für Tastatur und Touchpad optimierte Benutzeroberfläche, bei der das System Freiform-Fenster bevorzugt. Dieser Modus ist für laptopähnliche Konfigurationen vorgesehen.
  • Touch-first-Modus:Bietet eine für Touch optimierte Benutzeroberfläche, bei der das System Vollbild-Fenster bevorzugt. Dieser Modus ist die Standardeinstellung für eigenständige Tablets.

Diese Modi sind keine separaten Desktopumgebungen, sondern Zustände pro Display, die das Standardverhalten der Benutzeroberfläche bestimmen.

Verhaltensunterschiede

In der folgenden Tabelle sind die wichtigsten Unterschiede zwischen den Modi „Desktop-first“ und „Touch-first“ in Bezug auf Benutzeroberfläche und Funktionen zusammengefasst:

Funktion Touch-first-Modus Desktop-first-Modus
Standardstart Fenster werden im Vollbildmodus gestartet, es sei denn, ein Freiform-Fenster ist bereits im Vordergrund. Fenster werden im Freiform-Modus gestartet, es sei denn, ein Vollbildfenster ist bereits im Vordergrund.
Taskleistentyp Verwendet im Vollbildmodus die vorübergehende Taskleiste (auf der nur angepinnte Apps angezeigt werden). Verwendet immer die Desktop-Taskleiste (auf der angepinnte und geöffnete Apps angezeigt werden).
Neufokussierung Fenster werden basierend auf dem aktuellen Anzeigemodus reaktiviert (z. B. Reaktivierung im Freiform-Modus, wenn sich das Display im Desktop-Freiform-Fenster befindet). Fenster werden basierend auf dem eigenen gespeicherten Fenstermodus reaktiviert (z. B. wird ein Vollbildfenster immer im Vollbildmodus fortgesetzt).
Nach oben ziehen Wenn Sie ein Fenster an den oberen Rand ziehen, wird der Vollbildmodus aktiviert. Wenn Sie ein Fenster an den oberen Rand ziehen, wird der Zustand Maximiert aktiviert.
Fenstersteuerelemente Verwendet das App-Handle für Vollbildsteuerelemente. Verwendet das Hover-Menü für Vollbildsteuerelemente.

Der Desktop-first-Modus ist ein Zustand pro Display. Das bedeutet, dass ein Gerät gleichzeitig ein Touch-first-Display und ein Desktop-first-Display hosten kann.

Auslöser für den Wechsel

Das System berücksichtigt mehrere Faktoren, um den geeigneten Modus für ein Display zu bestimmen:

  • Eingabegerät:Ein Display wechselt in den Desktop-first-Modus, wenn sowohl eine Tastatur als auch ein Touchpad oder eine Maus angeschlossen und aktiviert sind.
  • Externes Display:Bei angeschlossenen externen Displays wird in der Regel standardmäßig der Desktop-first-Modus verwendet, es sei denn, sie spiegeln das interne Display.
  • Geräteposition:Bei Convertible-Geräten kann der Modus je nach physischer Ausrichtung wechseln (z. B. Wechsel zu Touch-first, wenn die Tastatur nach hinten geklappt wird).

Technische Implementierung

Die „Quelle der Wahrheit“ für diesen Zustand ist der Fenstermodus des Displays, insbesondere der Fenstermodus des TaskDisplayArea des Displays. Shell- und Launcher-Komponenten können über DisplayAreaInfo oder die WindowConfiguration des Displaykontexts auf diesen Zustand zugreifen.

Desktop-Freiform-Fenster pro Display

In Android 17 und höher bestimmt der WindowManager (WM) für Displays, die Aufgaben hosten können (wie durch Display.canHostTasks definiert), die Berechtigung für Desktop-Freiform-Fenster anhand von Kriterien, die von OEMs konfiguriert werden können. Standardmäßig prüft WM die folgenden Kriterien:

  • Unterstützung für Freiform-Fenster
  • Aktivierung von Systemdekorationen
  • Aktivierung des Standardwechsels für Display- oder Inhaltsmodus

Wenn sich die Berechtigung eines Displays ändert, ruft WM IDisplayWindowListener.onDesktopModeEligibleChanged auf. Die verborgene API WindowManager.isEligibleForDesktopMode gibt zurück, ob das Display für Freiform-Fenster berechtigt ist. Die WM-Shell fängt diesen Aufruf ab und entscheidet, ob das Display Desktop-Freiform-Fenster unterstützt, und weist die erforderlichen Ressourcen zu.