Android-Geräte lassen sich nahtlos mit verbundenen Displays verwenden
7 Minuten Lesezeit
Wir freuen uns, einen wichtigen Meilenstein auf dem Weg zu einer engeren Verknüpfung von mobilen und Desktop-Computern auf Android bekannt zu geben: Die Unterstützung für verbundene Displays ist mit der Veröffentlichung 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 betreiben, genau wie auf einem Desktop-Betriebssystem.
Google und Samsung haben zusammengearbeitet, um eine nahtlose und leistungsstarke Desktop-Fensterumgebung für Geräte im gesamten Android-Ökosystem zu schaffen, auf denen Android 16 ausgeführt wird und die mit einem externen Display verbunden sind.
Dies ist jetzt für unterstützte Geräte* 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 ansprechenderer und produktiverer App-Erlebnisse schaffen, die sich an verschiedene Formfaktoren anpassen.
Wie funktioniert das?
Wenn ein unterstütztes Android-Smartphone oder ein faltbares Gerät mit einem externen Display verbunden wird, wird auf dem verbundenen Display eine neue Desktop-Sitzung gestartet.
Die Nutzung auf dem verbundenen Display ähnelt der auf einem Desktop, einschließlich einer Taskleiste, auf der aktive Apps angezeigt werden und Nutzer Apps für den schnellen Zugriff anpinnen können. Nutzer können mehrere Apps gleichzeitig nebeneinander in frei skalierbaren Fenstern auf dem verbundenen Display ausführen.
Smartphone, das mit einem externen Display verbunden ist, mit einer Desktop-Sitzung auf dem Display, während das Smartphone seinen eigenen Status beibehält.
Wenn ein Gerät, das Desktop-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, wodurch ein noch größerer Arbeitsbereich entsteht. Die beiden Displays fungieren dann als ein einziges System, sodass App-Fenster, Inhalte und der Cursor frei zwischen den Displays bewegt werden können.
Tablet, das mit einem externen Display verbunden ist, wodurch die Desktop-Sitzung auf beide Displays erweitert wird.
Welchen Zweck erfüllt es?
In der Android 16 QPR3-Version haben wir die Fensterverhaltensweisen, Taskleisteninteraktionen und Eingabekompatibilität (Maus und Tastatur) fertiggestellt, die die Nutzung auf verbundenen Displays definieren. Wir haben auch Kompatibilitätsbehandlungen hinzugefügt, um Fenster zu skalieren und App-Neustarts beim Wechseln von Displays zu vermeiden.
Wenn Ihre App mit adaptiven Designprinzipien entwickelt wurde, hat sie automatisch das Aussehen und die Bedienung eines Desktops 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.
Beachten Sie insbesondere diese wichtigen Best Practices für optimale App-Erlebnisse auf verbundenen Displays:
- Gehen Sie nicht von einem konstanten
Display-Objekt aus: DasDisplay-Objekt, das mit dem Kontext Ihrer App verknüpft ist, kann sich ändern, wenn ein App-Fenster auf ein externes Display verschoben wird oder wenn sich die Displaykonfiguration ändert. Ihre App sollte Konfigurationsänderungsereignisse ordnungsgemäß verarbeiten und Displaymesswerte dynamisch abfragen, anstatt sie zu cachen. - Berücksichtigen Sie Änderungen der Dichtekonfiguration: Externe Displays können eine ganz andere Pixeldichte als der Bildschirm des primären Geräts haben. Achten Sie darauf, dass sich Ihre Layouts und Ressourcen korrekt an diese Änderungen anpassen, um die Übersichtlichkeit und Nutzbarkeit der Benutzeroberfläche zu gewährleisten. Verwenden Sie dichteunabhängige Pixel (dp) für Layouts, stellen Sie dichteabhängige Ressourcen bereit und sorgen Sie dafür, dass Ihre Benutzeroberfläche entsprechend skaliert wird.
- Unterstützen Sie externe Peripheriegeräte korrekt: Wenn Nutzer eine Verbindung zu einem externen Monitor herstellen, schaffen sie oft eine desktopähnlichere Umgebung. Dazu werden häufig externe Tastaturen, Mäuse, Trackpads, Webcams, Mikrofone und Lautsprecher verwendet. Verbessern Sie die Unterstützung für Tastatur und Maus Interaktionen.
Mit modernen Tools für die Desktop-Zukunft entwickeln
Wir bieten verschiedene Tools, mit denen Sie die Desktop-Nutzung entwickeln können. Sehen wir uns die neuesten Updates für unsere wichtigsten adaptiven Bibliotheken an.
Neue Fenstergrößenklassen: „Groß“ und „Sehr 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, meinungsbasierten Viewport-Breakpoints, mit denen Sie adaptive Layouts entwerfen und entwickeln können. Mit 1.5.0 erweitern wir diese Anleitung für Bildschirme, die größer als typische Tablets sind.
Hier sind die neuen Breakpoints für die Breite:
- Groß: Für Breiten zwischen 1200 dp und 1600 dp
- Sehr groß: Für Breiten ≥ 1600 dp
Die verschiedenen Fenstergrößenklassen basierend auf der Displaybreite.
Auf sehr großen Oberflächen ist es nicht immer die beste Nutzererfahrung, einfach das erweiterte Layout eines Tablets zu vergrößern. Ein E-Mail-Client kann beispielsweise bequem zwei Bereiche (ein Postfach und eine Nachricht) in der Fenstergrößenklasse „Erweitert“ anzeigen. Auf einem sehr großen Desktop-Monitor 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 ein Kalender-/Aufgabenfeld.
Wenn Sie die neuen Fenstergrößenklassen in Ihr Projekt einbeziehen möchten, rufen Sie einfach die Funktion aus dem WindowSizeClass.BREAKPOINTS_V2 Set 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, die gerade die 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 und nahtlos zwischen diesen Layouts gewechselt werden kann.
Dieses System zur Verwaltung des UI-Ablaufs Ihrer App basiert auf Szenen. Eine Szene ist ein Layout, in dem ein oder mehrere Ziele gleichzeitig angezeigt werden. Eine SceneStrategy bestimmt, ob eine Szene erstellt werden 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 sofort einsatzbereite kanonische Layouts wie „Liste – Details“ und „Unterstützungsbereich“ 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 benutzerdefinierte Szenen erstellen, indem Sie die Szenenrezepte ändern oder von Grund auf neu beginnen. Betrachten wir beispielsweise eine Szene, 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 ausreichend ist und die Einträge aus dem 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 von NavDisplay mit anderen Strategien verwenden. Wir könnten beispielsweise auch eine TwoPaneStrategy hinzufügen, um zwei Bereiche nebeneinander anzuzeigen, wenn nicht genügend Platz für drei Bereiche 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 und drei Bereichen hinzufügen.
Eine adaptive App mit einer Navigation mit drei Bereichen auf breiten Bildschirmen.
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 Layouts für „Liste – Details“ und „Unterstützungsbereich“ erstellen, die sich automatisch an Fensterkonfigurationen anpassen, basierend auf Fenstergrößenklassen oder Gerätepositionen.
Die gute Nachricht ist, dass die Bibliothek bereits auf dem neuesten Stand mit den neuen Breakpoints ist. Ab Version 1.2 unterstützen die Standard-Pane-Scaffold-Direktiven die Fenstergrößenklassen „Groß“ und „Sehr groß“.
Sie müssen sich nur anmelden, indem Sie in Ihrer Gradle-Build-Datei deklarieren, dass Sie die neuen Breakpoints verwenden möchten:
currentWindowAdaptiveInfo(supportLargeAndXLargeWidth = true)
Erste Schritte
Entdecken Sie die Funktion für verbundene Displays in der neuesten Android-Version. Laden Sie Android 16 QPR3 auf ein unterstütztes Gerät herunter und verbinden Sie es dann mit einem externen Monitor, um Ihre App noch heute zu testen.
In der aktualisierten Dokumentation zur Unterstützung für mehrere Displays und zur Fensterverwaltung erfahren Sie mehr über die Implementierung dieser Best Practices.
Feedback
Ihr Feedback ist entscheidend, da wir die Desktop-Nutzung auf verbundenen Displays weiter verbessern. Teilen Sie uns Ihre Meinung mit und melden Sie Probleme über unsere offiziellen Feedbackkanäle.
Wir möchten Android zu einer vielseitigen Plattform machen, die sich an die vielen Möglichkeiten anpasst, mit denen Nutzer mit ihren Apps und Geräten interagieren möchten. Die Verbesserungen an der Unterstützung für verbundene Displays sind ein weiterer Schritt in diese Richtung und wir sind zuversichtlich, dass Ihre Nutzer die Desktop-Nutzung lieben werden, die Sie entwickeln.
*Hinweis:Zum Zeitpunkt der Erstellung dieses Artikels werden verbundene Displays auf Geräten der Pixel 8-, 9- und 10-Serie sowie auf einer Vielzahl von Samsung-Geräten unterstützt, darunter S26, Fold7, Flip7 und Tab S11.
-
ProduktneuheitenWir freuen uns, bekannt geben 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 • 3 Minuten Lesezeit -
ProduktneuheitenIm März haben wir Android Bench eingeführt, unsere LLM-Bestenliste für Android-Entwicklungsaufgaben in der Praxis. Seitdem haben wir den Benchmark basierend auf Ihrem Feedback verbessert, einschließlich der Bewertung von Modellen mit offenem Gewicht und der Hinzufügung von Kosten- und Effizienzkriterien zur Bestenliste.
Zoe Lopez-Latorre • 3 Minuten Lesezeit -
ProduktneuheitenWir bei Google Play möchten Nutzern die bestmögliche Erfahrung bieten und gleichzeitig dafür sorgen, dass Entwickler die Tools und die Anpassungsfähigkeit haben, um erfolgreich zu sein.
Paul Feng • 3 Minuten Lesezeit
Lassen Sie sich Woche für Woche die neuesten Informationen zur Android-Entwicklung zusenden.