Produktneuheiten

Jetpack WindowManager 1.5 ist stabil

Lesezeit: 2 Minuten
Profil von Francesco Romano ansehen
Francesco Romano Developer Relations Engineer, Android

Wir 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. Das Android-Ökosystem wächst stetig und Nutzer interagieren mit Apps auf einer Vielzahl von Geräten – von Smartphones und faltbaren Geräten über Tablets, vernetzte Displays und Chromebooks bis hin zu Autodisplays im geparkten Modus.

WindowManager 1.5 bietet bessere Tools für diese vielfältige Geräteumgebung.

Neu in WindowManager 1.5

In diesem stabilen Release werden neue Breakpoints für sehr große Displays eingeführt, die API zum Einbetten von Aktivitäten wird verbessert und die Berechnung von Fenstermesswerten wird flexibler.

Neue Fenstergrößenklassen: „Groß“ und „Extragroß“

Die größte Neuerung in Version 1.5 ist die Einführung von zwei neuen Klassen für die Fensterbreite: „Large“ und „Extra-large“.

Fenstergrößenklassen sind unsere offiziellen, meinungsbasierten Viewport-Breakpoints, die Ihnen beim Entwerfen und Entwickeln adaptiver Layouts helfen. Mit Version 1.5 erweitern wir diese Richtlinien auf Bildschirme, die über typische Tablets hinausgehen.

Das sind die neuen Breiten-Breakpoints:

  • Groß:Für Breiten zwischen 1.200 und 1.600 dp
  • Sehr groß:Für Breiten ≥1.600 dp
window_size_classes_width.png

Die verschiedenen Fenstergrößenklassen basierend auf der Displaybreite. 

Warum sind diese wichtig?

Ab Android 16 QPR1 Beta 2 unterstützt Android angeschlossene Displays. Nutzer können also ein externes Display an ihr Gerät anschließen und es so in ein großes Display verwandeln, das sich wie ein Desktop nutzen lässt.

ADB_5350_asset.gif

Smartphone ist mit einem externen Display verbunden und auf dem externen Display wird eine Desktop-Sitzung angezeigt. 

Da diese neue Funktion verfügbar ist, ist es wichtig, dass wir eine klare Empfehlung für größere Displays aussprechen. 

Auf diesen 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 „Maximiert“ bequem zwei Bereiche (ein Postfach und eine Nachricht) anzeigen. Auf einem extragroßen Desktopmonitor könnte der E‑Mail-Client jedoch elegant drei oder sogar vier Bereiche gleichzeitig anzeigen – vielleicht ein Postfach, eine Nachrichtenliste, den vollständigen Nachrichteninhalt und einen Kalender-/Aufgabenbereich.

Mit offiziellen Breakpoints für sehr große Displays bietet WindowManager 1.5 ein klares Signal, um Layouts einzuführen, die speziell für eine produktive, informationsreiche Desktopumgebung entwickelt wurden.

Die Fenstergrößenklassen können mit computeWindowSizeClass() berechnet werden. Das ist eine androidx.window.core.layout-Bibliotheks-Erweiterungsfunktion, die den Typ Set<WindowSizeClass> erweitert. 

Wenn Sie die neuen Fenstergrößenklassen in Ihr Projekt einbeziehen möchten, rufen Sie die Funktion einfach 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 Bibliotheken

Mit der Compose Material 3 Adaptive-Bibliothek können Sie adaptive UIs erstellen, die sich automatisch an die aktuellen Fensterkonfigurationen wie Fenstergrößenklassen oder Gerätestatus anpassen. 

Die gute Nachricht: Die Bibliothek ist bereits auf dem neuesten Stand und enthält die neuen Breakpoints. Ab Version 1.2 (derzeit Release Candidate) unterstützen die Standard-Pane-Scaffold-Direktivenfunktionen die Größenklassen „Large“ und „Extra-large“ für die Fensterbreite.

Sie müssen die neuen Breakpoints nur aktivieren, indem Sie in Ihrer Gradle-Build-Datei deklarieren, dass Sie sie verwenden möchten:

currentWindowAdaptiveInfo(

    supportLargeAndXLargeWidth = true)

Weitere Verbesserungen

  • Einbetten von Aktivitäten – automatisches Speichern und Wiederherstellen: WindowManager kann jetzt den Status Ihrer Splits für das Einbetten von Aktivitäten automatisch speichern und wiederherstellen. So bleibt das Layout des Nutzers auch nach dem erneuten Erstellen des Prozesses erhalten, was zu einer stabileren und konsistenteren Nutzererfahrung führt. Entwickler müssen den Status nicht mehr manuell speichern und wiederherstellen, sondern können die automatische Speicherung einfach aktivieren, indem sie die Property EmbeddingConfiguration#isAutoSaveEmbeddingState festlegen.
  • Erweiterte WindowMetrics: Sie können WindowMetrics jetzt nicht nur im Activity-Kontext, sondern auch im Application-Kontext berechnen. So können Sie flexibler von verschiedenen Teilen Ihrer App aus auf Fensterinformationen zugreifen.

Erste Schritte

Wenn Sie die neuen Größenklassen „Groß“ und „Extragroß“ sowie andere Funktionen von Version 1.5 in Ihren Android-Projekten verwenden möchten, aktualisieren Sie die App-Abhängigkeiten in build.gradle.kts auf die aktuelle stabile Version:

dependencies {
    implementation("androidx.window:window:1.5.0") 

    // or, if you're using the WindowManager testing library:

    testImplementation("androidx.window:window-testing:1.5.0")

}

WindowManager 1.5 ist ein weiterer Schritt nach vorn bei der Entwicklung vollständig adaptiver Apps, die auf allen Android-Formfaktoren ausgeführt werden können. Eine vollständige Liste der Änderungen und Fehlerkorrekturen finden Sie in den offiziellen Versionshinweisen.

Viel Spaß beim Programmieren!

Geschrieben von:
Weiterlesen