Android-Geräte lassen sich nahtlos auf verbundene Displays erweitern
Lesezeit: 7 Minuten
Wir freuen uns, einen wichtigen Meilenstein bei der Zusammenführung von Mobil- und Desktop-Computing auf Android bekannt geben zu können: Die Unterstützung für verbundene Displays ist mit dem Release von Android 16 QPR3 allgemein verfügbar.
Wie auf der Google I/O 2025 gezeigt, können Nutzer ihre Android-Geräte mit einem externen Monitor verbinden und sofort auf eine Desktop-Fensterumgebung zugreifen. Apps können in Freiform- oder maximierten Fenstern verwendet werden und Nutzer können Multitasking wie auf einem Desktop-Betriebssystem ausführen.
Google und Samsung haben gemeinsam daran gearbeitet, auf Geräten im Android-Ökosystem mit Android 16, die mit einem externen Display verbunden sind, einen nahtlosen und leistungsstarken Desktop-Freiform-Fenster-Modus zu ermöglichen.
Diese Funktion ist jetzt auf unterstützten Geräten* allgemein verfügbar. Nutzer können ihre unterstützten Pixel und Samsung Smartphones mit externen Monitoren verbinden und so neue Möglichkeiten für die Entwicklung von ansprechenderen und produktiveren App-Erlebnissen nutzen, die sich an verschiedene Formfaktoren anpassen.
Wie funktioniert das?
Wenn ein unterstütztes Android-Smartphone oder -Foldable mit einem externen Display verbunden wird, startet auf dem verbundenen Display eine neue Desktop-Sitzung.
Die Nutzung auf dem verbundenen Display ähnelt der auf einem Desktop-Computer, einschließlich einer Taskleiste, in der aktive Apps angezeigt werden und in der Nutzer Apps für den schnellen Zugriff anpinnen können. Nutzer können mehrere Apps gleichzeitig nebeneinander in Fenstern mit frei anpassbarer Größe auf dem verbundenen Display ausführen.
Smartphone, das mit einem externen Display verbunden ist, auf dem eine Desktop-Sitzung angezeigt wird, während das Smartphone seinen eigenen Status beibehält.
Wenn ein Gerät, das Desktop-Freiform-Fenster unterstützt (z. B. ein Tablet wie das Samsung Galaxy Tab S11), mit einem externen Display verbunden ist, wird die Desktop-Sitzung auf beide Displays erweitert. So steht ein noch größerer Arbeitsbereich zur Verfügung. Die beiden Displays funktionieren dann als ein zusammenhängendes System, sodass App-Fenster, Inhalte und der Cursor frei zwischen den Displays verschoben werden können.
Tablet, das mit einem externen Display verbunden ist, wobei die Desktop-Sitzung auf beide Displays erweitert wird.
Welchen Zweck erfüllt es?
Im Android 16 QPR3-Release haben wir das Fensterverhalten, die Interaktionen mit der Taskleiste und die Eingabekompatibilität (Maus und Tastatur) finalisiert, die die Nutzung auf verbundenen Displays definieren. Außerdem haben wir Kompatibilitätsbehandlungen hinzugefügt, um Fenster zu skalieren und App-Neustarts beim Wechseln des Displays zu vermeiden.
Wenn Ihre App nach den Prinzipien des adaptiven Designs entwickelt wurde, hat sie automatisch das Design und die Bedienung einer Desktop-App und Nutzer werden sich sofort zurechtfinden. Wenn die App auf das Hochformat beschränkt ist oder eine reine Touch-Oberfläche voraussetzt, ist es jetzt an der Zeit, sie zu modernisieren.
Achte insbesondere auf die folgenden Best Practices, um die Nutzerfreundlichkeit der App auf Smart Displays zu optimieren:
- Gehen Sie nicht von einem konstanten
Display-Objekt aus:Das mit dem Kontext Ihrer App verknüpfteDisplay-Objekt kann sich ändern, wenn ein App-Fenster auf ein externes Display verschoben wird oder sich die Displaykonfiguration ändert. Ihre App sollte Ereignisse zur Konfigurationsänderung ordnungsgemäß verarbeiten und Anzeigemesswerte dynamisch abfragen, anstatt sie im Cache zu speichern. - Berücksichtige Änderungen der Pixeldichte: Externe Displays können eine ganz andere Pixeldichte haben als das primäre Gerätedisplay. Achte darauf, dass deine Layouts und Ressourcen an diese Änderungen angepasst werden, damit die Benutzeroberfläche übersichtlich und nutzerfreundlich bleibt. Verwenden Sie dichteunabhängige Pixel (dp) für Layouts, stellen Sie dichte-spezifische Ressourcen bereit und achten Sie darauf, dass Ihre Benutzeroberfläche entsprechend skaliert wird.
- Externe Peripheriegeräte korrekt unterstützen: Wenn Nutzer einen externen Monitor anschließen, schaffen sie oft eine desktopähnliche Umgebung. Dazu werden häufig externe Tastaturen, Mäuse, Trackpads, Webcams, Mikrofone und Lautsprecher verwendet. Verbessern Sie die Unterstützung für Tastatur- und Mausinteraktionen.
Mit modernen Tools für die Zukunft des Desktops entwickeln
Wir stellen verschiedene Tools zur Verfügung, mit denen Sie die Desktop-Version erstellen können. Fassen wir die neuesten Updates für unsere adaptiven Kernbibliotheken zusammen.
Neue Fenstergrößenklassen: Groß und Extra groß
Die größte Neuerung in Jetpack WindowManager 1.5.0 sind zwei neue Fenstergrößenklassen für die Breite: „Groß“ und „Sehr groß“.
Fenstergrößenklassen sind unsere offiziellen, vordefinierten Haltepunkte für den Darstellungsbereich, die euch beim Entwerfen und Entwickeln adaptiver Layouts helfen. Mit Version 1.5.0 erweitern wir diese Richtlinien für Bildschirme, die größer als typische Tablets sind.
Hier sind die neuen Haltepunkte für die Breite:
- Groß: Für Breiten zwischen 1.200 dp und 1.600 dp
- Sehr groß: Für Breiten ≥ 1.600 dp
Die verschiedenen Fenstergrößenklassen basierend auf der Displaybreite.
Auf sehr großen Oberflächen ist das einfache Hochskalieren des erweiterten Layouts eines Tablets nicht immer die beste Lösung. Ein E-Mail-Client kann beispielsweise in der Fenstergrößenklasse „Erweitert“ zwei Bereiche (ein Postfach und eine Nachricht) anzeigen. Auf einem extragroßen Desktopmonitor kann der E‑Mail-Client jedoch elegant drei oder sogar vier Bereiche gleichzeitig anzeigen, z. B. ein Postfach, eine Nachrichtenliste, den vollständigen Nachrichteninhalt und einen Bereich für Kalender/Aufgaben.
Wenn Sie die neuen Fenstergrößenklassen in Ihr Projekt aufnehmen möchten, rufen Sie einfach die Funktion aus dem Set WindowSizeClass.BREAKPOINTS_V2 anstelle von WindowSizeClass.BREAKPOINTS_V1 auf:
val currentWindowMetrics =
WindowMetricsCalculator.getOrCreate()
.computeCurrentWindowMetrics(LocalContext.current)
val sizeClass = WindowSizeClass.BREAKPOINTS_V2
.computeWindowSizeClass(currentWindowMetrics)Wenden Sie dann das richtige Layout an, wenn Sie sicher sind, dass Ihre App mindestens so viel Platz hat:
if(sizeClass.isWidthAtLeastBreakpoint(
WindowSizeClass.WIDTH_DP_LARGE_LOWER_BOUND)){
...
// Window is at least 1200 dp wide.
}Adaptive Layouts mit Jetpack Navigation 3 erstellen
Navigation 3 ist die neueste Ergänzung der Jetpack-Sammlung. Navigation 3, das gerade seine erste stabile Version erreicht hat, ist eine leistungsstarke Navigationsbibliothek, die für die Verwendung mit Compose entwickelt wurde.
Navigation 3 ist auch ein hervorragendes Tool zum Erstellen adaptiver Layouts, da mehrere Ziele gleichzeitig angezeigt werden können und ein nahtloser Wechsel zwischen diesen Layouts möglich ist.
Dieses System zum Verwalten des UI-Flusses Ihrer App basiert auf Szenen. Eine Szene ist ein Layout, in dem ein oder mehrere Ziele gleichzeitig angezeigt werden. Eine SceneStrategy bestimmt, ob sie eine Szene erstellen kann. Durch das Verketten von SceneStrategy-Instanzen können Sie verschiedene Szenen für unterschiedliche Bildschirmgrößen und Gerätekonfigurationen erstellen und anzeigen.
Für vordefinierte kanonische Layouts wie Listen-Detailansichten und unterstützende Bereiche können Sie die Szenen aus der Compose Material 3 Adaptive-Bibliothek verwenden (verfügbar in Version 1.3 und höher).
Sie können auch ganz einfach eigene Szenen erstellen, indem Sie die Szenenrezepte ändern oder von Grund auf neu beginnen. Sehen wir uns zum Beispiel eine Szene an, in der drei Bereiche nebeneinander angezeigt werden:
class ThreePaneScene<T : Any>(
override val key: Any,
override val previousEntries: List<NavEntry<T>>,
val firstEntry: NavEntry<T>,
val secondEntry: NavEntry<T>,
val thirdEntry: NavEntry<T>
) : Scene<T> {
override val entries: List<NavEntry<T>> = listOf(firstEntry, secondEntry, thirdEntry)
override val content: @Composable (() -> Unit) = {
Row(modifier = Modifier.fillMaxSize()) {
Column(modifier = Modifier.weight(1f)) {
firstEntry.Content()
}
Column(modifier = Modifier.weight(1f)) {
secondEntry.Content()
}
Column(modifier = Modifier.weight(1f)) {
thirdEntry.Content()
}
}
}In diesem Szenario können Sie eine SceneStrategy definieren, um drei Bereiche anzuzeigen, wenn die Fensterbreite groß genug ist und die Einträge aus Ihrem Back Stack deklariert haben, dass sie in einer Szene mit drei Bereichen angezeigt werden können.
class ThreePaneSceneStrategy<T : Any>(val windowSizeClass: WindowSizeClass) : SceneStrategy<T> {
override fun SceneStrategyScope<T>.calculateScene(entries: List<NavEntry<T>>): Scene<T>? {
if (windowSizeClass.isWidthAtLeastBreakpoint(WIDTH_DP_LARGE_LOWER_BOUND)) {
val lastThree = entries.takeLast(3)
if (lastThree.size == 3 && lastThree.all { it.metadata.containsKey(MULTI_PANE_KEY) }) {
val firstEntry = lastThree[0]
val secondEntry = lastThree[1]
val thirdEntry = lastThree[2]
return ThreePaneScene(
key = Triple(firstEntry.contentKey, secondEntry.contentKey, thirdEntry.contentKey),
previousEntries = entries.dropLast(3),
firstEntry = firstEntry,
secondEntry = secondEntry,
thirdEntry = thirdEntry
)
}
}
return null
}
}Sie können Ihre „ThreePaneSceneStrategy“ beim Erstellen des NavDisplay mit anderen Strategien kombinieren. Wir könnten beispielsweise auch eine TwoPaneStrategy hinzufügen, um zwei Bereiche nebeneinander anzuzeigen, wenn nicht genügend Platz für drei vorhanden ist.
val strategy = ThreePaneSceneStrategy() then TwoPaneSceneStrategy()
NavDisplay(...,
sceneStrategy = strategy,
entryProvider = entryProvider {
entry<MyScreen>(metadata = mapOf(MULTI_PANE_KEY to true))) { ... }
... other entries...
}
)Wenn nicht genügend Platz für drei oder zwei Bereiche vorhanden ist, geben beide benutzerdefinierten Szenenstrategien null zurück. In diesem Fall greift NavDisplay auf die Anzeige des letzten Eintrags im Back Stack in einem einzelnen Bereich mit SinglePaneScene zurück.
Mit Szenen und Strategien können Sie Ihrer App Layouts mit einem, zwei oder drei Bereichen hinzufügen.
Eine adaptive App mit dreispaltiger Navigation auf Breitbildschirmen.
Weitere Informationen zum Erstellen benutzerdefinierter Layouts mit Szenen in Navigation 3 finden Sie in der Dokumentation.
Eigenständige adaptive Layouts
Wenn Sie ein eigenständiges Layout benötigen, können Sie mit der Compose Material 3 Adaptive-Bibliothek adaptive Benutzeroberflächen wie Listen-Detail- und unterstützende Bereichslayouts erstellen, die sich automatisch an Fensterkonfigurationen anpassen, basierend auf Fenstergrößenklassen oder Gerätepositionen.
Die gute Nachricht ist, dass die Bibliothek bereits mit den neuen Breakpoints auf dem neuesten Stand ist. Ab Version 1.2 unterstützen die Standardfunktionen der Scaffold-Anweisung für Bereiche die Fenstergrößenklassen „Groß“ und „Sehr groß“.
Sie müssen nur in Ihrer Gradle-Build-Datei angeben, dass Sie die neuen Haltepunkte verwenden möchten:
currentWindowAdaptiveInfo(supportLargeAndXLargeWidth = true)
Erste Schritte
Entdecke die Funktion für verbundene Displays in der neuesten Android-Version. Installieren Sie Android 16 QPR3 auf einem unterstützten Gerät und verbinden Sie es mit einem externen Monitor, um Ihre App noch heute zu testen.
In der aktualisierten Dokumentation zur Unterstützung mehrerer Displays und zur Fensterverwaltung finden Sie weitere Informationen zur Implementierung dieser Best Practices.
Feedback
Ihr Feedback ist wichtig für uns, da wir die Desktop-Version für verbundene Displays weiter optimieren. Über unsere offiziellen Feedbackkanäle kannst du uns deine Meinung mitteilen und Probleme melden.
Wir möchten Android zu einer vielseitigen Plattform machen, die sich an die vielen verschiedenen Arten anpasst, wie Nutzer mit ihren Apps und Geräten interagieren möchten. Die Verbesserungen bei der Unterstützung von verbundenen Displays sind ein weiterer Schritt in diese Richtung. Wir sind uns sicher, dass deine Nutzer die von dir entwickelten Desktop-Anwendungen lieben werden.
*Hinweis:Zum Zeitpunkt der Veröffentlichung dieses Artikels werden verbundene Displays auf Geräten der Pixel 8-, Pixel 9- und Pixel 10-Serie sowie auf einer Vielzahl von Samsung-Geräten unterstützt, darunter S26, Fold7, Flip7 und Tab S11.
-
ProduktneuigkeitenWir freuen uns, Ihnen mitteilen zu können, dass Jetpack WindowManager 1.5.0 jetzt stabil ist. Diese Version baut auf der starken Grundlage der Anpassungsfähigkeit in WindowManager auf und macht es noch einfacher, ansprechende, adaptive Benutzeroberflächen zu erstellen, die auf allen Bildschirmgrößen gut aussehen.
Francesco Romano • Lesezeit: 2 Minuten -
ProduktneuigkeitenApps, die auf die kommende Android-Version ausgerichtet sind, können mit der Berechtigung WRITE_CONTACTS nicht mehr direkt in Kontakte schreiben.
Roxanna Aliabadi Walker • Lesezeit: 6 Minuten -
ProduktneuigkeitenDie Entwicklung von KI-Agenten schreitet rasant voran und die Android-Entwicklung erreicht einen spannenden neuen Meilenstein: von der unterstützenden Codevervollständigung hin zu KI-Agenten, die unter Ihrer Anleitung End-to-End-Aufgaben ausführen. Sie haben die volle Auswahl und Flexibilität bei den Modellen und Agents, die Sie verwenden.
Jason Buchel • Lesezeit: 3 Minuten
Lassen Sie sich Woche für Woche die neuesten Informationen zur Android-Entwicklung zusenden.