Unterstützung von Desktop-Fenstern

Mit Desktopfenstern können Nutzer mehrere Apps gleichzeitig in veränderbaren App-Fenstern ausführen und so eine vielseitige, desktopähnliche Umgebung nutzen.

In Abbildung 1 sehen Sie die Organisation des Bildschirms mit aktivierten Desktop-Fenstern. Hinweise:

  • Nutzer können mehrere Apps gleichzeitig ausführen.
  • Die Taskleiste befindet sich unten auf dem Display und zeigt die laufenden Apps an. Nutzer können Apps für den schnellen Zugriff anpinnen.
  • Die neue anpassbare Kopfzeile enthält Steuerelemente wie Minimieren und Maximieren.
Abbildung 1. Desktopfenster auf einem Tablet

Auf Android-Tablets werden Apps standardmäßig im Vollbildmodus geöffnet. Wenn Sie eine App im Desktopfenster starten möchten, halten Sie den Fenster-Draht oben auf dem Bildschirm gedrückt und ziehen Sie ihn in die Benutzeroberfläche, wie in Abbildung 2 dargestellt.

Wenn eine App in einem Desktopfenster geöffnet ist, werden auch andere Apps in Desktopfenstern geöffnet.

Abbildung 2 Halten Sie den App-Fenster-Drahtseil gedrückt und ziehen Sie ihn, um den Desktop-Fenstermanager aufzurufen.

Nutzer können Desktop-Windowing auch über das Menü aufrufen, das unter dem Fensterziehpunkt angezeigt wird, wenn Sie auf den Ziehpunkt tippen oder klicken, oder die Tastenkombination Metataste (Windows, Befehl oder Suchtaste) + Strg + Abwärtspfeil verwenden.

Nutzer können Desktop-Fenster schließen, indem sie alle aktiven Fenster schließen oder den Fensterziehpunkt oben in einem Desktop-Fenster verwenden und die App zum oberen Bildschirmrand ziehen. Mit der Tastenkombination Meta + H wird außerdem das Desktop-Fenster geschlossen und Apps wieder im Vollbildmodus ausgeführt.

Wenn Sie zum Desktopfenster zurückkehren möchten, tippen oder klicken Sie auf dem Bildschirm „Letzte“ auf die Kachel für den Desktopbereich.

Größe anpassbar und Kompatibilitätsmodus

Im Desktopfenster können Apps mit gesperrter Ausrichtung frei skaliert werden. Das bedeutet, dass Nutzer auch dann die Größe der App für ein Fenster im Querformat anpassen können, auch wenn eine Aktivität auf das Hochformat gesperrt ist.

Abbildung 3 Größe des Fensters einer App, die nur im Hochformat angezeigt werden kann, auf Querformat ändern

Bei Anwendungen, die als nicht veränderbar deklariert sind (d. h. resizeableActivity = false), wird die UI unter Beibehaltung des Seitenverhältnisses skaliert.

Abbildung 4: Die Benutzeroberfläche einer App, deren Größe nicht geändert werden kann, wird skaliert, wenn das Fenster verkleinert oder vergrößert wird.

Bei Kamera-Apps, bei denen die Ausrichtung festgehalten oder als nicht veränderbar deklariert wird, wird der Kamerasucher entsprechend angepasst: Das Fenster kann vollständig in der Größe angepasst werden, der Sucher behält jedoch das Seitenverhältnis bei. Wenn Apps immer im Hoch- oder Querformat ausgeführt werden, hartcodieren oder auf andere Weise Annahmen treffen, die zu Fehlberechnungen der Ausrichtung oder der Ausrichtung des aufgenommenen Bildes oder des Seitenverhältnisses führen, was zu verzerrten, seitlich gedrehten oder auf dem Kopf stehenden Bildern führt.

Bis Apps vollständig responsive Kameras unterstützen, bietet die spezielle Behandlung eine einfachere Nutzererfahrung, die die Auswirkungen falscher Annahmen abmildert.

Weitere Informationen zum Kompatibilitätsmodus für Kamera-Apps finden Sie unter Gerätekompatibilitätsmodus.

Abbildung 5: Das Seitenverhältnis des Kamerasuchers bleibt beim Ändern der Fenstergröße unverändert.

Benutzerdefinierbare Kopfzeileneinzüge

Alle Apps, die im Desktopfenster ausgeführt werden, haben eine Kopfzeile, auch im Vollbildmodus.
Achten Sie darauf, dass die Inhalte Ihrer App nicht von der Kopfzeile verdeckt werden. Die Headerleiste ist ein Einfügen-Typ für Untertitelleiste: androidx.compose.foundation.layout.WindowInsets.Companion.captionBar(); in Ansichten ist WindowInsets.Type.captionBar() Teil der Systemleisten.

Weitere Informationen zum Umgang mit Einblendungen finden Sie unter Inhalte in Ihrer App randlos anzeigen und Fenstereinblendungen in Compose bearbeiten.

Die Kopfzeile kann auch angepasst werden. Mit Android 15 wurde der Darstellungstyp APPEARANCE_TRANSPARENT_CAPTION_BAR_BACKGROUND eingeführt, um die Kopfzeile transparent zu machen, damit Apps benutzerdefinierte Inhalte in der Kopfzeile zeichnen können.

Die Apps sind dann dafür verantwortlich, den oberen Teil ihrer Inhalte so zu gestalten, dass er wie die Untertitelleiste aussieht (Hintergrund, benutzerdefinierte Inhalte usw.), mit Ausnahme der Systemelemente für Untertitel (Schaltflächen zum Schließen und Maximieren), die vom System in der transparenten Untertitelleiste oben in der App gezeichnet werden.

Apps können die Darstellung der Systemelemente innerhalb der Untertitel für helle und dunkle Designs mit APPEARANCE_LIGHT_CAPTION_BARS ein- und ausschalten. Dies funktioniert ähnlich wie bei der Status- und Navigationsleiste.

Mit Android 15 wurde auch die Methode WindowInsets#getBoundingRects() eingeführt, mit der Apps Untertitelleisten genauer untersuchen können. Anwendungen können zwischen Bereichen unterscheiden, in denen das System Systemelemente zieht, und nicht genutzten Bereichen, in denen Anwendungen benutzerdefinierte Inhalte platzieren können, ohne sich mit Systemelementen zu überschneiden.

Die Liste der von der API zurückgegebenen Rect-Objekte gibt Systemregionen an, die vermieden werden sollten. Im verbleibenden Bereich (berechnet durch Subtraktion der Rechtecke von den Einzügen der Untertitelleiste) kann die App zeichnen, ohne Systemelemente zu überlappen und Eingaben zu erhalten.

Chrome vor und nach der Implementierung von benutzerdefinierten Headern.
Abbildung 6. Chrome vor und nach der Implementierung von benutzerdefinierten Headern.

Unterstützung für Multitasking und mehrere Instanzen

Multitasking ist ein zentrales Element von Desktopfenstern. Wenn Sie mehrere Instanzen Ihrer App zulassen, kann die Produktivität der Nutzer erheblich gesteigert werden.

Mit Android 15 wird PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI eingeführt. Mit diesem Attribut können Entwickler angeben, dass die System-UI für die App angezeigt werden soll, damit sie als mehrere Instanzen gestartet werden kann.

App-Instanzen per Ziegesten verwalten

Im Modus mit mehreren Fenstern können Nutzer eine neue App-Instanz starten, indem sie ein Ansichtselement aus dem Fenster der App ziehen. Nutzer können Elemente auch zwischen Instanzen derselben App verschieben.

Abbildung 7 Starten Sie eine neue Instanz von Chrome, indem Sie einen Tab aus dem Desktopfenster ziehen.

In Android 15 gibt es zwei Flags, mit denen sich das Verhalten beim Ziehen und Ablegen anpassen lässt:

  • DRAG_FLAG_START_INTENT_SENDER_ON_UNHANDLED_DRAG: Gibt an, dass ein nicht verarbeitetes Ziehen an das System delegiert werden soll, um gestartet zu werden, wenn kein sichtbares Fenster die Drop-Aktion verarbeitet. Bei Verwendung dieses Flags muss der Aufrufer ClipData mit einem Item-Objekt bereitstellen, das eine unveränderliche IntentSender für eine zu startende Aktivität enthält (siehe ClipData.Item.Builder#setIntentSender()). Das System kann den Intent basierend auf Faktoren wie der aktuellen Bildschirmgröße oder dem Fenstermodus starten. Wenn das System den Intent nicht startet, wird er durch das normale Drag-and-drop-Verfahren abgebrochen.

  • DRAG_FLAG_GLOBAL_SAME_APPLICATION: Gibt an, dass ein Ziehvorgang Fenstergrenzen überschreiten kann (für mehrere Instanzen derselben Anwendung).

    Wenn startDragAndDrop() mit diesem Flag aufgerufen wird, können nur sichtbare Fenster derselben Anwendung am Ziehen teilnehmen und die gezogenen Inhalte empfangen.

Abbildung 8: Einen Tab zwischen zwei Instanzen der Chrome App verschieben.

Zusätzliche Optimierungen

Sie können das Starten von Apps anpassen und Apps vom Desktopfenster in den Vollbildmodus wechseln.

Standardgröße und -position angeben

Nicht alle Apps, auch wenn sie veränderbar sind, benötigen ein großes Fenster, um einen Mehrwert für Nutzer zu bieten. Mit der Methode ActivityOptions#setLaunchBounds() können Sie eine Standardgröße und -position beim Starten einer Aktivität angeben.

Vollbildmodus über den Desktopbereich aktivieren

Apps können im Vollbildmodus geöffnet werden, indem Activity#requestFullScreenMode() aufgerufen wird. Bei dieser Methode wird die App direkt über das Desktopfenster im Vollbildmodus angezeigt.