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 Bildschirmansicht, wenn die Desktopfensterfunktion aktiviert ist. Hinweise:

  • Nutzer können mehrere Apps gleichzeitig ausführen.
  • Die Taskleiste befindet sich an einer festen Position unten auf dem Display und zeigt die laufenden Apps an. Nutzer können Apps anpinnen, um schnell darauf zuzugreifen.
  • 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. Um eine App in einem Desktop-Fenster zu starten, halten Sie den Fensterziehpunkt an der oben auf den Bildschirm und ziehen Sie den Ziehpunkt innerhalb der Benutzeroberfläche (siehe Abbildung 2).

Wenn eine App in einem Desktop-Fenster geöffnet ist, werden andere Apps gut.

Abbildung 2 Halten Sie den Ziehpunkt des App-Fensters gedrückt und ziehen Sie ihn, um die Desktop-Fenster zu öffnen.

Nutzer können die Desktopfenster auch über das Menü aufrufen, das unter dem Fenster-Dreipunkt-Menü angezeigt wird, wenn Sie darauf tippen oder klicken. Alternativ können Sie auch die Tastenkombination Meta-Taste (Windows-, Befehls- oder Suchtaste) + Strg + Abwärts verwenden.

Nutzer schließen die Desktop-Fenster, indem sie alle aktiven Fenster schließen oder Fensterziehpunkt oben in einem Desktop-Fenster und ziehen die App nach oben des Bildschirms. Die Tastenkombination Meta + H wird ebenfalls beendet. und führt Apps wieder im Vollbildmodus aus.

Wenn Sie zu den Desktop-Fenstern zurückkehren möchten, tippen oder klicken Sie auf die Kachel „Desktop-Bereich“ in der Bildschirm „Letzte“.

Größe anpassbar und Kompatibilitätsmodus

Beim Desktop-Fenstermodus kann die Größe von Apps mit gesperrter Ausrichtung frei angepasst werden. Das bedeutet, dass Nutzer die App auch dann im Querformat anzeigen können, wenn eine Aktivität auf das Hochformat festgelegt ist.

Abbildung 3 Größe des Fensters einer App im Hochformat an das Querformat anpassen

Bei Apps, die als nicht skalierbar deklariert wurden (resizableActivity = false), wird die Benutzeroberfläche skaliert, wobei das Seitenverhältnis beibehalten wird.

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.

Kamera-Apps, bei denen die Ausrichtung gesperrt ist oder die nicht skalierbar sind, werden beim Sucher der Kamera besonders behandelt: Das Fenster kann vollständig skaliert werden, der Sucher behält jedoch das gleiche Seitenverhältnis bei. Indem wir davon ausgehen, immer im Hoch- oder Querformat ausgeführt werden, hartcodieren oder anderweitig Annahmen, die zu Fehlkalkulationen in der Vorschau oder dem aufgenommenen Bild führen Ausrichtung oder Seitenverhältnis, was zu gestreckten, 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 Kompatibilitätsmodus für Geräte.

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

Anpassbare Header-Insets

Alle Anwendungen, die in Desktop-Fenstern ausgeführt werden, haben eine Headerleiste, auch in immersiven Modus.
Achten Sie darauf, dass die Inhalte Ihrer App nicht von der Kopfzeile verdeckt werden. Die Kopfzeile ist eine eingeblendete Titelleiste: androidx.compose.foundation.layout.WindowInsets.Companion.captionBar(); in Ansichten WindowInsets.Type.captionBar(), die zu den Systemleisten gehört.

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

Auch die Headerleiste kann 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.

Apps gestalten dann den oberen Teil ihrer Inhalte so, das Aussehen der Untertitelleiste (Hintergrund, benutzerdefinierter Inhalt usw.) mit dem mit Ausnahme der System-Untertitelelemente (Schließen- und Maximieren-Schaltflächen), die vom System in der transparenten Untertitelleiste über der App gezeichnet.

Apps können das Aussehen der Systemelemente in der Beschriftung für helle und dunkle Designs mit APPEARANCE_LIGHT_CAPTION_BARS umschalten, ähnlich wie bei der Statusleiste und der Navigationsleiste.

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

Die Liste der Rect -Objekte, die von der API zurückgegeben werden, geben Systemregionen an, sollten vermieden werden. 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 benutzerdefinierter Header
Abbildung 6: Chrome vor und nach der Implementierung von benutzerdefinierten Headern.

Multitasking und Multi-Instanz-Unterstützung

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

In 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 Mehrfenstermodus können Nutzer eine neue App-Instanz durch Ziehen einer Ansicht starten aus dem App-Fenster. 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 Desktop-Fenster ziehen.

In Android 15 werden zwei Flags eingeführt, um das Drag-and-drop-Verhalten anzupassen:

  • DRAG_FLAG_START_INTENT_SENDER_ON_UNHANDLED_DRAG: Gibt an, dass ein unbehandelter Drag-Vorgang an das zu startende System delegiert werden sollte wenn kein sichtbares Fenster den Abbruch vornimmt. Wenn dieses Flag verwendet wird, muss der Aufrufer ClipData mit einem Item angeben, der eine unveränderliche IntentSender zu einer zu startenden Aktivität enthält (siehe ClipData.Item.Builder#setIntentSender()). Ob der Intent gestartet wird oder nicht, hängt von Faktoren wie der aktuellen Bildschirmgröße oder dem Fenstermodus ab. 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 Drag-Vorgang die 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 umschalten.

Standardgröße und -position angeben

Nicht alle Apps benötigen ein großes Fenster, um Nutzern einen Mehrwert zu bieten, auch wenn ihre Größe angepasst werden kann. Sie können die ActivityOptions#setLaunchBounds() verwenden Methode zum Angeben einer Standardgröße und -position beim Start einer Aktivität.

Vollbildmodus über den Desktop-Bereich aktivieren

Apps können programmatisch in den Vollbildmodus wechseln, indem sie folgenden Befehl aufrufen: Activity#requestFullScreenMode() Bei dieser Methode wird die App direkt über einen Desktop-Fenster im Vollbildmodus angezeigt.