WindowManager

Mit der Jetpack WindowManager-Bibliothek können App-Entwickler neue Geräteformfaktoren und Mehrfensterumgebungen unterstützen. Die erste Version ist auf faltbare Geräte ausgerichtet, zukünftige Versionen werden jedoch auf weitere Displaytypen und Fensterfunktionen ausgeweitet.
Letzte Aktualisierung Stabile Version Release Candidate Beta-Ausgabe Alphaversion
16. Oktober 2024 1.3.0 - - 1.4.0-alpha05

Abhängigkeiten deklarieren

Wenn Sie eine Abhängigkeit von WindowManager hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.

Fügen Sie der Datei build.gradle für Ihre App oder Ihr Modul die Abhängigkeiten für die erforderlichen Artefakte hinzu:

Cool

dependencies {
    implementation "androidx.window:window:1.3.0"

    // For Java-friendly APIs to register and unregister callbacks
    implementation "androidx.window:window-java:1.3.0"

    // For RxJava2 integration
    implementation "androidx.window:window-rxjava2:1.3.0"

    // For RxJava3 integration
    implementation "androidx.window:window-rxjava3:1.3.0"

    // For testing
    implementation "androidx.window:window-testing:1.3.0"
}

Kotlin

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

    // For Java-friendly APIs to register and unregister callbacks
    implementation("androidx.window:window-java:1.3.0")

    // For RxJava2 integration
    implementation("androidx.window:window-rxjava2:1.3.0")

    // For RxJava3 integration
    implementation("androidx.window:window-rxjava3:1.3.0")

    // For testing
    implementation("androidx.window:window-testing:1.3.0")
}

Feedback

Ihr Feedback hilft uns, Jetpack zu verbessern. Bitte teilen Sie uns mit, wenn Sie neue Probleme feststellen oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können einem vorhandenen Problem Ihre Stimme geben, indem Sie auf die Schaltfläche mit dem Stern klicken.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.

Version 1.4

Version 1.4.0-alpha05

16. Oktober 2024

androidx.window:window-*:1.4.0-alpha05 wird veröffentlicht. Version 1.4.0-alpha05 enthält diese Commits.

Neue Funktionen

  • Fügen Sie praktische Funktionen hinzu, um das widthDp und das heightDp aus WindowMetrics abzurufen.

API-Änderungen

  • Fügen Sie widthDp und heightDp zu WindowMetrics hinzu. (Ide026)
  • Die experimentelle WindowInsets API wurde entfernt. (I68a71)
  • Namen der Grenzwertprüfung auf isAtLeast (Ib0ab7) aktualisieren

Version 1.4.0-alpha04

2. Oktober 2024

androidx.window:window-*:1.4.0-alpha04 wird veröffentlicht. Version 1.4.0-alpha04 enthält diese Commits.

API-Änderungen

  • Es wurde eine Methode hinzugefügt, mit der WindowSizeClass aus WindowMetrics berechnet werden kann. (874dba)
  • Ändern Sie die WindowSizeClass-Methoden zu containsWidthDp, containsHeightDp und containsWindowSizeDp, um für Klarheit zu sorgen. (fa760d)
  • Konvertieren Sie WindowAreaController in eine abstrakte Basisklasse. (I90893)

Fehlerkorrekturen

  • Unterstützung für relative Begrenzungen beim Erstellen eines Tests FoldingFeature hinzufügen (2e6b3e)
  • Allgemeine Fehlerkorrekturen bei der Auswahl eines WindowSizeClass.

Version 1.4.0-alpha03

18. September 2024

androidx.window:window-*:1.4.0-alpha03 wird veröffentlicht. Version 1.4.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Fügen Sie eine Dienstmethode hinzu, um eine WindowSizeClass aus WindowMetrics abzurufen. (I83f1f)
  • Benennen Sie isAtLeast in containsBreakpoint um. (I85b47)
  • Fügen Sie computeWindowSizeClass mithilfe von Floats eine Überladung hinzu. (I3dcb2, b/364677934, b/364677802, b/364680886)

Fehlerkorrekturen

  • Fügen Sie dem Standard-WindowSizeClass-Haltepunktsatz fehlende Haltepunkte hinzu.
  • Ein Fehler wurde behoben, durch den kompakte Dimensionen in einigen Fällen nicht richtig ausgewählt wurden.

Version 1.4.0-alpha02

4. September 2024

androidx.window:window-*:1.4.0-alpha02 wird veröffentlicht. Version 1.4.0-alpha02 enthält diese Commits.

Neue Funktionen

Unterstützung für benutzerdefinierte WindowSizeClass hinzufügen

  • Öffne den Konstruktor für WindowSizeClass, damit Entwickler ihren eigenen verwenden können.
  • Fügen Sie isAtLeast-Dienstmethoden hinzu, damit Entwickler eine Reihe von WindowSizeClass-Werten verarbeiten können.
  • Fügen Sie eine Erweiterungsfunktion für Set<WindowSizeClass> hinzu, um den besten Übereinstimmungsvorschlag aus dem Set zu berechnen.
  • Fügen Sie Konstanten für die von Android empfohlenen Haltepunkte hinzu.
  • Fügen Sie den Haltepunktsatz hinzu, der den von Android empfohlenen Haltepunkten entspricht.

API-Änderungen

  • Aktualisieren Sie die Namen der Grenzwertmethoden für WindowSizeClass. (If89a6)
  • Aktualisieren Sie die WindowSizeClass API, damit in Zukunft neue Grenzwertwerte hinzugefügt werden können. Anstatt absolute Grenzwerte zu verwenden, verwenden wir die Untergrenzen. Wir empfehlen Entwicklern, bei der Verarbeitung von WindowSizeClass Untergrenzwertprüfungen durchzuführen. Die vorhandenen WindowWidthSizeClass und WindowHeightSizeClass werden eingestellt, da sie nicht weiter entwickelt werden. (I014ce)

Version 1.4.0-alpha01

7. August 2024

androidx.window:window-*:1.4.0-alpha01 wird veröffentlicht. Version 1.4.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Mit der Aktivitätsstapel-Anpinning-Funktion können Apps Inhalte in einem Container anpinnen und die Navigation davon getrennt halten.
  • Mithilfe des interaktiven Trennstrichs können Apps in einer geteilten Ansicht einen festen oder verschiebbaren Trennstrich zwischen den beiden Aktivitäten anzeigen.
  • Mit der Abdunkelung von Vollbilddialogfeldern können Apps den Bereich für die Abdunkelung des Dialogfelds angeben, um entweder das gesamte Aufgabenfenster oder nur den Container abzudunkeln, in dem das Dialogfeld angezeigt wird.
  • Mit dem Callback für Informationen zum eingebetteten Aktivitätsfenster können Apps kontinuierlich Updates zum eingebetteten Aktivitätsfenster erhalten.
  • Mit dem Eingebetteten Animationshintergrund können Apps den Animationshintergrund angeben, um die Qualität der Übergangsanimation zu verbessern, wenn ActivityEmbedding verwendet wird.
  • Durch die verbesserte Verwaltung des ActivityStacks haben Apps mehr Kontrolle über die ActivityStacks, wenn ActivityEmbedding verwendet wird. Dazu gehören:
  • Starten einer Aktivität in einem bestimmten ActivityStack
  • ActivityStack fertigstellen

API-Änderungen

  • Eine neue API WindowInfoTracker#supportedPostures:

    • Eine API, mit der ermittelt wird, ob das Gerät den Modus „Auf dem Tisch“ für faltbare Geräte unterstützt. Füge WindowAreaSessionPresenter#getWindow hinzu
  • Fügen Sie APIs hinzu, um die ActivityStack-Anpinning-Funktion zu unterstützen:

    • SplitPinRule-Kurs
    • SplitController#pinTopActivityStack
    • SplitController#unpinTopActivityStack
  • APIs hinzufügen, um den interaktiven Trennstrich zu aktivieren und zu konfigurieren

    • DividerAttributes-Kurs
    • SplitAttributes.Builder#setDividerAttributes
  • APIs hinzufügen, um EmbeddingConfiguration und DimAreaBehavior für Dialogfelder festzulegen

    • EmbeddingConfiguration-Kurs
    • DimAreaBehavior-Kurs
    • ActivityEmbeddingController#setEmbeddingConfiguration
  • APIs hinzufügen, um Informationen zum eingebetteten Aktivitätszeitraum zu erhalten

    • EmbeddedActivityWindowInfo-Kurs
    • ActivityEmbeddingController#embeddedActivityWindowInfo
  • APIs hinzufügen, um den Hintergrund der Einbettungsanimation festzulegen

    • EmbeddingAnimationBackground
    • SplitAttributes.Builder#setAnimationBackground
  • APIs hinzufügen, um ActivityStacks fertigzustellen

    • ActivityEmbeddingController#finishActivityStacks
  • APIs zum Festlegen der Einführung hinzufügen ActivityStack

    • ActivityEmbeddingOptions#setLaunchingActivityStack
  • Die folgenden APIs sind stabil und nicht mehr experimentell:

    • ActivityEmbeddingController#invalidateVisibleActivityStacks (verschoben von SplitController#invalidateTopVisibleSplitAttributes)
    • ActivityEmbeddingController#getActivityStack
    • SplitController#updateSplitAttributes
  • APIs für Version 1.4 hinzufügen (I56774)

Fehlerkorrekturen

  • Ein Fehler wurde behoben, bei dem auf bestimmten Geräten bei einer aktiven Sitzung „NICHT VERFÜGBAR“ anstelle von „AKTIV“ zurückgegeben wurde.
  • Die Unterstützung für transferActivityToWindowArea auf Geräten mit einer vendorApiLevel von 2 wurde aufgrund instabiler API-Unterstützung entfernt.
  • Einführung einer API, mit der sich der Trennstrich für eingebettete Aktivitäten per Drag-and-drop in den Vollbildmodus ziehen lässt. (I645c9)
  • Apps dürfen ActivityEmbedding-Animationen über Animationsparameter für SplitAttributes deaktivieren. (Idc01a)
  • Die manuelle Kennzeichnung des Zugriffs auf neue Plattform-APIs wurde entfernt, da dies bei Verwendung von R8 mit AGP 7.3 oder höher (z.B. R8 Version 3.3) und für alle Builds bei Verwendung von AGP 8.1 oder höher (z.B. D8 Version 8.1) automatisch über die API-Modellierung erfolgt. Kunden, die AGP nicht verwenden, wird empfohlen, auf D8 Version 8.1 oder höher zu aktualisieren. Weitere Details findest du in diesem Artikel. (Ia60e0, b/345472586)
  • Ermöglichen Sie Erweiterungen, Animationen für SplitAttributes zu verwenden, damit das Gerät sie für Animationsübergänge nutzen kann. (Iede00)
  • Overlay-APIs ausblenden (Ic4251)
  • Einführung von APIs zum Konfigurieren des festen oder verschiebbaren Trennstrichs für die Aufteilung (Ia7a78)
  • Dichte für WindowMetrics (Id6723) hinzugefügt
  • Fügen Sie die API hinzu, um die SupportedPostures abzurufen. (If557a)
  • setLaunchingActivityStack aus der experimentellen API entfernen (I191cf)
  • ActivityEmbeddingController#embeddedActivityWindowInfo (I24312) einführen
  • #getToken einstellen und #getActivityStackToken hinzufügen (Ie0471)
  • Einführung eines Callback-Adapters für die embeddedActivityWindowInfo-Flow API (Ida77f)
  • Callback-Adapter für die OverlayInfo-API hinzufügen (I7264f)
  • Geben Sie WindowSdkExtensionsRule ein, um extensionsVersion für Tests zu überschreiben. (Ifb928)
  • – #setLaunchingActivityStack zu Bundle migrieren, um mit ActivityOptionsCompat-Nutzungen kompatibel zu sein
    • Nutzer sollten activityOptions.toBundle anstelle von ActvityOptions selbst übergeben.
    • Entfernen Sie #setLaunchingActivityStack(Activity). Nutzer sollten zu ActivityEmbeddingController#getActivityStac(Activity) migrieren, um eine ActivityStack zu erhalten, und die ActivityStack an #setLaunchingActivityStack weitergeben. (Ie0ccc)
  • – ActivityStack.Token und SpltInfo.Token als Kennung für die Kommunikation zwischen WM Jetpack und Erweiterungen einführen
    • APIs, die ein Token anstelle von IBinder annehmen/zurückgeben, werden eingestellt oder ersetzt. (I12b24)
  • ActivityEmbeddingController#invalidateVisibleActivityStacks einführen
    • SplitController#invalidateTopVisibleSplitAttributes entfernen, da die Funktion in #invalidateVisibleActivityStacks zusammengeführt wird (I02ef5)
  • – API zum Festlegen der Einbettungskonfiguration hinzufügen (I59a4a)
  • – ActivityStack androidx.Window APIs anpinnen/loslösen
    • Demo-App wird aktualisiert, damit oben angepinnte Elemente wieder gelöst werden können ActivityStack (I24dd3)
  • #finishActivityStacks und ActivityEmbeddingOptions wieder hinzufügen (Ic1ab3)
  • Entfernen Sie instabile APIs. (Ibc534, b/302380585)

Version 1.3

Version 1.3.0

29. Mai 2024

androidx.window:window-*:1.3.0 wird veröffentlicht. Version 1.3.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.2.0

  • Kotlin Multiplatform-Unterstützung für Fenstergrößenklassen

Version 1.3.0-rc01

14. Mai 2024

WindowManager Jetpack 1.3 bietet Kotlin Multiplatform-Unterstützung für WindowSizeClass-Funktionen sowie mehrere Fehlerkorrekturen.

androidx.window:window-*:1.3.0-rc01 wird veröffentlicht. Version 1.3.0-rc01 enthält diese Commits.

Version 1.3.0-beta02

1. Mai 2024

androidx.window:window-*:1.3.0-beta02 wird veröffentlicht. Version 1.3.0-beta02 enthält diese Commits.

API-Änderungen

  • Die Unterstützung für das Erstellen und Verwenden benutzerdefinierter WindowSizeClass wurde entfernt. (Id1143)

Fehlerkorrekturen

  • Behebung von KotlinReflectionInternalError, die durch das Entfernen einiger Dateien durch Proguard bei bestimmten Geräteimplementierungen verursacht wurden. (I01b02)

Version 1.3.0-beta01

3. April 2024

androidx.window:window-*:1.3.0-beta01 wird veröffentlicht. Version 1.3.0-beta01 enthält diese Commits.

Version 1.3.0-alpha03

6. März 2024

androidx.window:window-*:1.3.0-alpha03 wird veröffentlicht. Version 1.3.0-alpha03 enthält diese Commits.

API-Änderungen

  • WindowSizeClassUtil in spezifischere Methoden aufteilen (Ie9292)
  • WindowSizeClass#compute wiederherstellen (I21355, b/324293374)

Fehlerkorrekturen

  • Ein Absturz wurde behoben, bei dem der bereitgestellte Kontext nicht richtig entpackt wurde. (94d10ce , b/318787482)

Version 1.3.0-alpha02

7. Februar 2024

androidx.window:window-*:1.3.0-alpha02 wird veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Die API-Oberfläche der Window Size Class API wurde aktualisiert, um die Flexibilität für Entwickler zu verbessern, die ihre eigenen Größenklassen verwenden möchten.

API-Änderungen

  • Fügen Sie der Breitenauswahl Höhenbeschränkungen hinzu. (I23393)
  • Dienstfunktionen zum Auswählen einer WindowSizeClass aus einem Satz hinzufügen Es werden experimentelle Bewertungsfunktionen hinzugefügt, damit Entwickler ihre eigenen Auswahlkriterien erstellen können. Fügen Sie eine Auswahlerweiterungsfunktion hinzu, um die breiteste WindowSizeClass innerhalb einer bestimmten Grenze auszuwählen. (I0c944)
  • Öffnen Sie den Konstruktor von WindowSizeClass, damit benutzerdefinierte Haltepunkte hinzugefügt werden können. (Ic1ff3)
  • Eine praktische Funktion zum Erstellen einer Größenklasse aus Breite, Höhe und Dichte hinzufügen (If67f4)

Fehlerkorrekturen

  • Ausnahme behoben, wenn der Gleitkommawert auf 0 gekürzt wird. (272ffac)

Version 1.3.0-alpha01

15. November 2023

androidx.window:window-*:1.3.0-alpha01 wird veröffentlicht. Version 1.3.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Experimentelle Fenster-APIs für den Zugriff auf den Rückbildschirm freigeben
  • Test-APIs zum Erstellen einer FoldingFeature sind jetzt stabil.
  • Test-APIs zum Einrichten gefälschter ActivityEmbedding-Werte sind jetzt stabil.
  • WindowLayoutInfoPublisherRule gibt jetzt die Überschreibung an, wenn ein Wert aus einer UiContext abgerufen wird.
  • In WindowInfoTracker-Berichten werden Daten zu Funktionen in UiContext-Parametern zusammengefasst.
  • Die Version der Erweiterungen auf dem Gerät offenlegen
  • WindowProperties-Konstanten für appspezifische Überschreibungen von Nutzern:
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE: Informiert das System darüber, dass die App die Nutzeroberfläche für die Überschreibung der Seitenverhältniskompatibilität deaktiviert hat.
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE – Informiert das System darüber, dass die App die Option „Vollbild“ in den Einstellungen für die Überschreibung der Nutzerkompatibilität für das Seitenverhältnis deaktiviert hat

Version 1.2

Version 1.2.0

15. November 2023

androidx.window:window-*:1.2.0 wird veröffentlicht. Version 1.2.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.1.0

  • Experimentelle Fenster-APIs für den Zugriff auf den Rückbildschirm freigeben
  • Test-APIs zum Erstellen einer FoldingFeature sind jetzt stabil.
  • Test-APIs zum Einrichten gefälschter ActivityEmbedding-Werte sind jetzt stabil.
  • WindowLayoutInfoPublisherRule gibt jetzt die Überschreibung an, wenn ein Wert aus einer UiContext abgerufen wird.
  • In WindowInfoTracker-Berichten werden Daten zu Funktionen in UiContext-Parametern zusammengefasst.
  • Die Version der Erweiterungen auf dem Gerät offenlegen

Version 1.2.0-rc01

1. November 2023

androidx.window:window-*:1.2.0-rc01 wird veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.

Neue Funktionen

  • Experimentelle Fenster-APIs für den Zugriff auf den Rückbildschirm freigeben
  • Test-APIs zum Erstellen einer FoldingFeature sind jetzt stabil.
  • Test-APIs zum Einrichten gefälschter ActivityEmbedding-Werte sind jetzt stabil.
  • WindowLayoutInfoPublisherRule gibt jetzt die Überschreibung an, wenn ein Wert aus einer UiContext abgerufen wird.
  • In WindowInfoTracker-Berichten werden Daten zu Funktionen in UiContext-Parametern zusammengefasst.
  • Die Version der Erweiterungen auf dem Gerät offenlegen

Version 1.2.0-beta04

18. Oktober 2023

androidx.window:window-*:1.2.0-beta04 wird veröffentlicht. Version 1.2.0-beta04 enthält diese Commits.

API-Änderungen

Version 1.2.0-beta03

20. September 2023

androidx.window:window-*:1.2.0-beta03 wird veröffentlicht. Version 1.2.0-beta03 enthält diese Commits.

Neue Funktionen

  • Fügen Sie RequiresApi-Prüfungen für APIs hinzu, für die eine bestimmte Version von Erweiterungen erforderlich ist, damit sie ordnungsgemäß funktionieren.
  • Fügen Sie eine API hinzu, um die Erweiterungsversion auf dem Gerät verfügbar zu machen.

API-Änderungen

  • Notwendige Version der SDK-Erweiterung für Fenster in öffentlichen APIs angeben
    • Entfernen Sie isXXXSupported in der Komponente „Aktivitäten einbetten“. (Ie3dae)
  • Führen Sie WindowSdkExtensions ein, um die Erweiterungsversion auf dem Gerät zu melden.
    • Fügen Sie RequiresWindowSdkExtension hinzu, um die erforderliche Mindestversion der Erweiterung anzugeben. (I05fd4)
  • Damit wird WindowAreaInfo#getCapability als Pflichtfeld festgelegt. (I17048)

Version 1.2.0-beta01

26. Juli 2023

androidx.window:window-*:1.2.0-beta01 wird veröffentlicht. Version 1.2.0-beta01 enthält diese Commits.

Neue Funktionen

  • Experimentelle Fenster-APIs für den Zugriff auf den Rückbildschirm freigeben
  • Test-APIs zum Erstellen einer FoldingFeature sind jetzt stabil.
  • Test-APIs zum Einrichten gefälschter ActivityEmbedding-Werte sind jetzt stabil.
  • WindowLayoutInfoPublisherRule gibt jetzt die Überschreibung an, wenn ein Wert aus einer UiContext abgerufen wird.
  • In WindowInfoTracker-Berichten werden Daten zu Funktionen in UiContext-Parametern zusammengefasst.

API-Änderungen

  • Die WindowArea API wird als experimentell gekennzeichnet, damit API-Änderungen für eine stabile Version in 1.3 fortgesetzt werden können (I857f5)
  • API-Dateien wurden aktualisiert, um die Unterdrückung der Kompatibilität zu vermerken (I8e87a, b/287516207)

Version 1.2.0-alpha03

21. Juni 2023

androidx.window:window-*:1.2.0-alpha03 wird veröffentlicht. Version 1.2.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Veraltete APIs werden aus der API-Oberfläche entfernt.
  • Fügen Sie APIs hinzu, um gleichzeitige Anzeigen zu unterstützen.
  • Fügen Sie eine Property hinzu, um die Erzwingung der Größe zu deaktivieren.
  • Fügen Sie eine Property hinzu, um die Überschreibung des Mindestseitenverhältnisses zu deaktivieren.
  • ActivityEmbeddingRule stabilisieren, um Unittests für das Einbetten von Aktivitäten zu unterstützen

API-Änderungen

  • Verworfene APIs entfernen (I18d39)
  • Unterstützung für parallele Bildschirme hinzufügen (Ifcbb0)

Fehlerkorrekturen

  • Hinzufügen einer Option zum Deaktivieren der Kompatibilitätseigenschaft für die Überschreibung der Erzwingung der Größe (Ie7ab1)
  • SESSION_STATE_CONTENT_INVISIBLE wird aus der Erweiterungsoberfläche entfernt. (I6ed19)
  • ActivityEmbeddingRule stabilisieren, um Unittests für die Einbettung von Aktivitäten zu unterstützen (I8d6b6)
  • Es wird eine optionale Kompatibilitätseigenschaft für die Überschreibung des Mindestseitenverhältnisses hinzugefügt. (I66390)
  • Veraltete WindowArea API entfernt (Ieb67c)
  • Benennen Sie die Eigenschaft „loop“ der Ausrichtungsanfrage in PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED um. (Ie2fbd)
  • Namen der Fensterbereichssitzungskonstanten werden aktualisiert (I83675)
  • Hinzufügen einer Kompatibilitätseigenschaft, die bei Erkennung einer Schleife von Anfragen zur Geräteausrichtung ignoriert wird (I0a7a2)
  • Fügen Sie WindowAreaComponent#STATUS_ACTIVE hinzu, um anzugeben, dass die Funktion bereits aktiv ist. (I62bc3)
  • RearDisplayPresentationMode APIs hinzufügen (I0401c)
  • API für die Hintergrundfarbe für die stabile Version entfernt. (I34c3e)
  • Fensterbereich-APIs ausblenden (I39de0)
  • Fügen Sie Methoden hinzu, um die SplitInfo in SplitController zu überschreiben. Fügen Sie Testmethoden hinzu, um ein Doppel für SplitInfo und ActivityStack zu erstellen. (Icd69f)
  • Tag für ActivityRule.Builder als optional festlegen (Ib0b44)
  • Entfernen Sie RatioSplitType, ExpandContainersSplit und HingeSplitType. Sie sind jetzt SplitType.
    • Ersetzen Sie #splitEqually(), #expandContainers() und #splitByHinge durch die Konstanten SplitType SPLIT_TYPE_EQUAL, SPLIT_TYPE_EXPAND und SPLIT_TYPE_HINGE.
    • Die Funktion zum Festlegen des Fallback-Typs für den Scharniertyp wird entfernt. Wenn der Scharniertyp aufgrund des aktuellen Geräte- oder Fensterstatus nicht angewendet werden kann, wird der übergeordnete Aufgabencontainer gleichmäßig aufgeteilt. Verwenden Sie SplitController#setSplitAttributesCalculator, um den Fallback-Splittyp anzupassen. (Ifcc59)
  • Einstellung von add/removeSplitCallback
    • add/removeSplitCallback nach SplitControllerCallbackAdapter verschieben
    • Unterstützung für Flow hinzufügen, um SplitInfo-Liste abzurufen (I7f1b6)
  • Testregel für ActivityEmbeddingController (I42e9b) hinzufügen
  • ActivityOptionsCompat in ActivityEmbeddingOptions umbenannt (I89301)
  • Fügen Sie splitSupportStatus hinzu, um anzugeben, ob das Einbetten von Aktivitäten verfügbar ist. (I10024)
  • Führen Sie SplitAttributes.BackgroundColor ein, um den Wert von DEFAULT besser darzustellen. Es wird klargestellt, dass keine nicht opaken Hintergrundfarben für Animationen unterstützt werden. Alle nicht opaken Farben werden als Standard behandelt, d. h. die Hintergrundfarbe des aktuellen Fensters wird verwendet. (Ic6b95)
  • Ersetzen Sie alwaysAllow() und alwaysDisallow() durch ALWAYS_ALLOW und ALWAYS_DISALLOW. (I3057b)
  • Fügen Sie APIs für SplitRule, SplitAttributes und SplitAttributesCalculator hinzu. (I92d23)
  • Fügen Sie TestActivityStack hinzu, um ActivityStack zum Testen zu erstellen.
    • Fügen Sie TestSplitInfo hinzu, um SplitInfo für Tests zu erstellen. (I8e779)
  • Möglichkeit zum Erstellen gefälschter SplitAttributesCalculatorParams hinzufügen, damit Entwickler ihre benutzerdefinierten SplitAttributesCalculator überprüfen können (Id4a6e)
  • Fügen Sie WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context) und WindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context) hinzu (I66c7f).

Version 1.2.0-alpha02

7. Juni 2023

androidx.window:window-*:1.2.0-alpha02 wird veröffentlicht. Version 1.2.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Test-API mit einer Konstante für nicht angegebene Faltfunktionen aktualisieren
  • Wenn Sie WindowLayoutInfoPublishRule überschreiben, werden alle Werte von windowLayoutInfo überschrieben, einschließlich der kontextbasierten API.

API-Änderungen

  • Konstante für nicht angegebene Mittelfalte hinzufügen (I7530c)

Fehlerkorrekturen

  • Aktualisieren Sie WindowLayoutInfoPublishRule, um Überschreibungen für Context-basierte WindowLayoutInfo zu unterstützen. (I2037a)

Version 1.2.0-alpha01

24. Mai 2023

androidx.window:window-*:1.2.0-alpha01 wird veröffentlicht. Version 1.2.0-alpha01 enthält diese Commits.

Neue Funktionen

APIs für die Aktivitätseinbettung und WindowLayoutInfoTracker stabilisieren ActivityEmbeddingRule wurde zur stabilen Version hochgestuft. WindowMetricsCalculatorRule wurde zur stabilen Version hochgestuft. Dienstprogrammfunktionen zum Erstellen einer FoldingFeature für den Test wurden zur stabilen Version hochgestuft.

API-Änderungen

  • ActivityEmbeddingRule stabilisieren, um Unittests für die Einbettung von Aktivitäten zu unterstützen (I8d6b6)
  • WindowMetrisCalculatorTestRule ist stabil und ermöglicht Stub-Messwerte für JVM-Tests. Für genaue Ergebnisse empfehlen wir die Verwendung eines Emulators.
  • Test-APIs für WindowLayoutInfo stabilisieren, um JVM-Tests zu unterstützen. (Ie036e)
  • Fügen Sie IntRange für Werte des Attributs „Test fold“ hinzu. (I69f7d)

Version 1.1

Version 1.1.0

7. Juni 2023

androidx.window:window-*:1.1.0 wird veröffentlicht. Version 1.1.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.0.0

Aktivitätseinbettung

  • PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED wurde als boolesche Property des <application>-Tags im App-Manifest hinzugefügt.
  • isSplitSupported wurde eingestellt und durch splitSupportStatus ersetzt, um detailliertere Informationen dazu zu erhalten, warum die Funktion zum Aufteilen nicht verfügbar ist.
  • Die verschachtelte Klasse SplitController.SplitSupportStatus wurde hinzugefügt, um Statuskonstanten für die Property splitSupportStatus bereitzustellen.
  • SplitController in mehrere Module umstrukturiert:
    • ActivityEmbeddingController-Modul für APIs, die mit Activity oder ActivityStack zusammenhängen.
    • isActivityEmbedded wurde von SplitController nach ActivityEmbeddingController verschoben.
    • RuleController-Modul für EmbeddingRule-bezogene Vorgänge:
    • Entfernte SplitController APIs:
    • clearRegisteredRules()
    • getSplitRules()
    • initialize()
    • registerRule()
    • unregisterRule()
    • Es wurden RuleController APIs hinzugefügt:
    • addRule(): Hiermit wird eine Regel hinzugefügt oder die Regel mit demselben Tag aktualisiert.
    • removeRule() – Entfernt eine Regel aus der Sammlung der registrierten Regeln.
    • setRules() – Hiermit wird eine Sammlung von Regeln festgelegt.
    • clearRules(): Entfernt alle registrierten Regeln.
    • parseRules(): Hier werden Regeln aus XML-Regeln geparst.
  • Alle Module erfordern einen Kontext, der von der #getInstance()-Methode initialisiert wird. Dazu gehören:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Die Klasse EmbeddingAspectRatio wurde hinzugefügt, um enum-ähnliche Verhaltenskonstanten für das Displayseitenverhältnis zu definieren.
  • Die Klasse SplitAttributes wurde hinzugefügt, um das Split-Layout zu definieren.
  • SplitController-Rechnerfunktionen wurden zu SplitAttributes hinzugefügt, um Split-Layouts anzupassen:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported(), um zu prüfen, ob die SplitAttributesCalculator APIs auf dem Gerät unterstützt werden
  • Feld EmbeddingRule#tag hinzugefügt.
  • API-Änderungen im SplitRule:
    • defaultSplitAttributes hinzugefügt: Definiert das Standardlayout einer Aufteilung. Ersetzt splitRatio und layoutDirection.
    • Die Übersetzung der XML-Properties splitRatio und splitLayoutDirection in defaultSplitAttributes wurde hinzugefügt.
    • Die Definitionen für Mindestabmessungen wurden geändert, sodass jetzt Dichte-unabhängige Pixel (dp) anstelle von Pixeln verwendet werden.
    • minHeightDp mit dem Standardwert 600 dp hinzugefügt.
    • minWidth in minWidthDp mit dem Standardwert 600 dp geändert.
    • minSmallestWidth in minSmallestWidthDp mit dem Standardwert 600 dp geändert.
    • maxAspectRatioInHorizontal mit dem Standardwert ALWAYS_ALLOW hinzugefügt.
    • maxAspectRatioInPortrait mit dem Standardwert 1.4 hinzugefügt.
    • Es wurde eine verschachtelte FinishBehavior-Klasse definiert, um Konstanten für das Beendigungsverhalten zu ersetzen.
    • Die Property-Änderungen wurden auf die verschachtelte Builder-Klasse von SplitPairRule und SplitPlaceholderRule angewendet.
  • SplitInfo#getSplitRatio() wurde durch SplitInfo#getSplitAttributes() ersetzt, um zusätzliche Informationen zur Aufteilung bereitzustellen.

WindowLayout

  • Für WindowInfoTracker wurde die experimentelle Unterstützung von UI-Kontexten ohne Aktivität hinzugefügt.
  • WindowMetricsCalculator wurde ein experimenteller UI-Kontext hinzugefügt, der keine Aktivität umfasst.

Migrationsschritte

  • Damit Aktivitäten in Splits eingebettet werden können, müssen Apps dem Manifest-<application>-Tag die Eigenschaft PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED hinzufügen: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> So kann das System das Split-Verhalten für eine Anwendung im Voraus optimieren.
  • SplitInfo-Verhältnis
    • Prüfen Sie, ob die aktuelle Aufteilung gestapelt ist: kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • Prüfen Sie das aktuelle Verhältnis: kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • SplitController-Migrationen:
    • SplitController.getInstance() in SplitController.getInstance(Context) geändert.
    • SplitController.initialize(Context, @ResId int) in RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)) geändert.
    • SplitController.getInstance().isActivityEmbedded(Activity) in ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity) geändert.
    • SplitController.getInstance().registerRule(rule) in RuleController.getInstance(Context).addRule(rule) geändert.
    • SplitController.getInstance().unregisterRule(rule) in RuleController.getInstance(Context).removeRule(rule) geändert.
    • SplitController.getInstance().clearRegisteredRules() in RuleController.getInstance(Context).clearRules() geändert.
    • SplitController.getInstance().getSplitRules() in RuleController.getInstance(Context).getRules() geändert.
  • SplitRule-Property-Migrationen:
    • Für minWidth und minSmallestWidth werden jetzt dp-Einheiten anstelle von Pixeln verwendet. Apps können den folgenden Aufruf verwenden: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) oder einfach minWith in Pixeln durch displayMetrics#density teilen.
  • Konstanten für das Beendigungsverhalten müssen zu enum-ähnlichen Klassenkonstanten von FinishBehavior migriert werden:
    • FINISH_NEVER in FinishBehavior.NEVER geändert.
    • FINISH_ALWAYS in FinishBehavior.ALWAYS geändert.
    • FINISH_ADJACENT in FinishBehavior.ADJACENT geändert.
  • Die Layoutrichtung muss zu SplitAttributes.LayoutDirection migriert werden:
    • ltr in SplitAttributes.LayoutDirection.LEFT_TO_RIGHT geändert.
    • rtl in SplitAttributes.LayoutDirection.RIGHT_TO_LEFT geändert.
    • locale in SplitAttributes.LayoutDirection.LOCALE geändert.
    • splitRatio muss zu SplitAttributes.SplitType.ratio(splitRatio) migriert werden.
  • SplitPairRule.Builder Migrationen:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) in kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600. geändert
    • setLayoutDirection(layoutDirection) und setSplitRatio(ratio) in kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() ) geändert
    • Für setFinishPrimaryWithSecondary und setFinishSecondaryWithPrimary werden die enum-ähnlichen Konstanten FinishBehavior verwendet. Weitere Informationen finden Sie unter „SplitRule-Migrationen“.
    • Verwenden Sie setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW), um Splitscreens auf Hochformatgeräten anzuzeigen.
  • SplitPlaceholder.Builder Migrationen:
    • Enthält nur die Parameter filters und placeholderIntent. Andere Eigenschaften werden in Setter verschoben. Weitere Informationen finden Sie unter „SplitPairRule.Builder-Migrationen“.
    • setFinishPrimaryWithPlaceholder nimmt die enum-ähnlichen Konstanten FinishBehavior an. Weitere Informationen finden Sie unter „SplitRule-Migrationen“.
    • setLayoutDirection(layoutDirection) und setSplitRatio(ratio) ändern sich in: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Verwenden Sie setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW), um Splitscreens auf Hochformatgeräten anzuzeigen.

Version 1.1.0-rc01

10. Mai 2023

androidx.window:window-*:1.1.0-rc01 wird veröffentlicht. Version 1.1.0-rc01 enthält diese Commits.

Neue Funktionen

  • ActivityEmbedding als stabile API veröffentlichen
  • Verschiedene Fehlerkorrekturen.

Version 1.1.0-beta02

5. April 2023

androidx.window:window-*:1.1.0-beta02 wird veröffentlicht. Version 1.1.0-beta02 enthält diese Commits.

Neue Funktionen

  • Interne Fehlerbehebungen und Bereinigungen.

Version 1.1.0-beta01

22. März 2023

androidx.window:window-*:1.1.0-beta01 wird veröffentlicht. Version 1.1.0-beta01 enthält diese Commits.

Aktivitätseinbettung

  • PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED wurde als boolesche Property des <application>-Tags im App-Manifest hinzugefügt.
  • isSplitSupported wurde eingestellt und durch splitSupportStatus ersetzt, um detailliertere Informationen dazu zu erhalten, warum die Funktion zum Aufteilen nicht verfügbar ist.
  • Die verschachtelte Klasse SplitController.SplitSupportStatus wurde hinzugefügt, um Statuskonstanten für die Property splitSupportStatus bereitzustellen.
  • SplitController in mehrere Module umstrukturiert:
    • ActivityEmbeddingController-Modul für APIs, die mit Activity oder ActivityStack zusammenhängen.
    • isActivityEmbedded wurde von SplitController nach ActivityEmbeddingController verschoben.
    • RuleController-Modul für EmbeddingRule-bezogene Vorgänge:
    • Entfernte SplitController APIs:
      • clearRegisteredRules()
      • getSplitRules()
      • initialize()
      • registerRule()
      • unregisterRule()
    • Es wurden RuleController APIs hinzugefügt:
      • addRule(): Hiermit wird eine Regel hinzugefügt oder die Regel mit demselben Tag aktualisiert.
      • removeRule() – Entfernt eine Regel aus der Sammlung der registrierten Regeln.
      • setRules() – Hiermit wird eine Sammlung von Regeln festgelegt.
      • clearRules(): Entfernt alle registrierten Regeln.
      • „parseRules()“ – Parset Regeln aus XML-Regeldefinitionen.
  • Für alle Module muss ein Kontext mit der Methode #getInstance() initialisiert werden, einschließlich:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Die Klasse EmbeddingAspectRatio wurde hinzugefügt, um enum-ähnliche Verhaltenskonstanten für das Displayseitenverhältnis zu definieren.
  • Die Klasse SplitAttributes wurde hinzugefügt, um das Split-Layout zu definieren.
  • SplitController-Rechnerfunktionen wurden zu SplitAttributes hinzugefügt, um Split-Layouts anzupassen:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported(), um zu prüfen, ob die SplitAttributesCalculator APIs auf dem Gerät unterstützt werden
  • Feld EmbeddingRule#tag hinzugefügt.
  • API-Änderungen im SplitRule:
    • defaultSplitAttributes hinzugefügt: Definiert das Standardlayout einer Aufteilung. Ersetzt splitRatio und layoutDirection.
    • Die Übersetzung der XML-Properties splitRatio und splitLayoutDirection in defaultSplitAttributes wurde hinzugefügt.
    • Die Definitionen für Mindestabmessungen wurden geändert, sodass jetzt Dichte-unabhängige Pixel (dp) anstelle von Pixeln verwendet werden.
    • minHeightDp mit dem Standardwert 600 dp hinzugefügt.
    • minWidth in minWidthDp mit dem Standardwert 600 dp geändert.
    • minSmallestWidth in minSmallestWidthDp mit dem Standardwert 600 dp geändert.
    • maxAspectRatioInHorizontal mit dem Standardwert ALWAYS_ALLOW hinzugefügt.
    • maxAspectRatioInPortrait mit dem Standardwert 1.4 hinzugefügt.
    • Es wurde eine verschachtelte FinishBehavior-Klasse definiert, um Konstanten für das Beendigungsverhalten zu ersetzen.
    • Die Property-Änderungen wurden auf die verschachtelte Klasse Builder von SplitPairRule und SplitPlaceholderRule angewendet.
  • SplitInfo#getSplitRatio() wurde durch SplitInfo#getSplitAttributes() ersetzt, um zusätzliche Informationen zur Aufteilung bereitzustellen.

WindowLayout

  • Für WindowInfoTracker wurde die Unterstützung für den UI-Kontext ohne Aktivität hinzugefügt.
  • Für WindowMetricsCalculator wurde ein UI-Kontext ohne Aktivität hinzugefügt.

Schritte zur Migration

  • Damit Aktivitäten in Splits eingebettet werden können, müssen Apps dem Manifest-<application>-Tag die Eigenschaft PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED hinzufügen: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> So kann das System das Split-Verhalten für eine Anwendung im Voraus optimieren.
  • SplitInfo-Verhältnis
    • Prüfen Sie, ob die aktuelle Aufteilung gestapelt ist: kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • Prüfen Sie das aktuelle Verhältnis: kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • SplitController Migrationen:
    • SplitController.getInstance() in SplitController.getInstance(Context) geändert.
    • SplitController.initialize(Context, @ResId int) in RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)) geändert.
    • SplitController.getInstance().isActivityEmbedded(Activity) in ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity) geändert.
    • SplitController.getInstance().registerRule(rule) in RuleController.getInstance(Context).addRule(rule) geändert.
    • SplitController.getInstance().unregisterRule(rule) in RuleController.getInstance(Context).removeRule(rule) geändert.
    • SplitController.getInstance().clearRegisteredRules() in RuleController.getInstance(Context).clearRules() geändert.
    • SplitController.getInstance().getSplitRules() in RuleController.getInstance(Context).getRules() geändert.
  • SplitRule-Property-Migrationen:
    • Für minWidth und minSmallestWidth werden jetzt dp-Einheiten anstelle von Pixeln verwendet. Apps können den folgenden Aufruf verwenden: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) oder einfach minWith in Pixeln durch displayMetrics#density teilen.
  • Konstanten für das Beendigungsverhalten müssen zu enum-ähnlichen Klassenkonstanten von FinishBehavior migriert werden:
    • FINISH_NEVER in FinishBehavior.NEVER geändert.
    • FINISH_ALWAYS in FinishBehavior.ALWAYS geändert.
    • FINISH_ADJACENT in FinishBehavior.ADJACENT geändert.
  • Die Layoutrichtung muss zu SplitAttributes.LayoutDirection migriert werden:
    • ltr in SplitAttributes.LayoutDirection.LEFT_TO_RIGHT geändert.
    • rtl in SplitAttributes.LayoutDirection.RIGHT_TO_LEFT geändert.
    • locale in SplitAttributes.LayoutDirection.LOCALE geändert.
    • splitRatio muss zu SplitAttributes.SplitType.ratio(splitRatio) migriert werden.
  • SplitPairRule.Builder Migrationen:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) in kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600. geändert
    • setLayoutDirection(layoutDirection) und setSplitRatio(ratio) in kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() ) ändern
    • Für setFinishPrimaryWithSecondary und setFinishSecondaryWithPrimary werden die enum-ähnlichen Konstanten von FinishBehavior verwendet. Weitere Informationen finden Sie unter „SplitRule-Migrationen“.
    • Verwenden Sie setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW), um Splitscreens auf Hochformatgeräten anzuzeigen.
  • SplitPlaceholder.Builder Migrationen:
    • Enthält nur die Parameter filters und placeholderIntent. Andere Eigenschaften werden in Setter verschoben. Weitere Informationen finden Sie unter „SplitPairRule.Builder-Migrationen“.
    • setFinishPrimaryWithPlaceholder nimmt die enum-ähnlichen Konstanten FinishBehavior an. Weitere Informationen finden Sie unter „SplitRule-Migrationen“.
    • setLayoutDirection(layoutDirection) und setSplitRatio(ratio) ändern sich in: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Verwenden Sie setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW), um Splitscreens auf Hochformatgeräten anzuzeigen.

Version 1.1.0-alpha06

22. Februar 2023

androidx.window:window-*:1.1.0-alpha06 wird veröffentlicht. Version 1.1.0-alpha06 enthält diese Commits.

Neue Funktionen

  • Experimentelle Version zum Abrufen der WindowLayoutInfo aus einem UI-Kontext freigeben

API-Änderungen

  • Fügen Sie splitSupportStatus hinzu, um anzugeben, ob das Einbetten von Aktivitäten verfügbar ist. (I10024)
  • Die UI Context WindowLayoutInfo API als experimentell kennzeichnen (I58ee0)
  • Einführung der WindowAreaController und APIs, um den RearDisplay-Modus zu aktivieren und das aktuelle Fenster auf das Display zu verschieben, das mit der Rückkamera ausgerichtet ist. (Iffcbf)
  • Aktualisieren Sie die Standard-Hintergrundfarbe. (I1ac1b)
  • Füge SplitAttributes-Parameter hinzu. (I18bdd)
  • Fügen Sie APIs für SplitRule, SplitAttributes und SplitAttributesCalculator hinzu. (I92d23)
  • Verbesserungen an den APIs für maxAspectRatio:
    1. Ersetzen Sie alwaysAllow() und alwaysDisallow() durch ALWAYS_ALLOW und ALWAYS_DISALLOW.
    2. API-Dokumentation von @see mit eigenständiger Dokumentation aktualisieren (I3057b)
  • Die folgenden Konstruktoren werden aus öffentlichen APIs entfernt, da sie nicht von Apps aufgerufen werden sollen.
    • SplitInfo Konstruktor
    • ActivityStack-Konstruktor (Ide534)
  • Für SplitRule ist jetzt maxAspectRatioInPortrait/Landscape erforderlich. Aktivitäten können nur dann aufgeteilt werden, wenn das Seitenverhältnis der übergeordneten Begrenzung kleiner oder gleich dem angeforderten maxAspectRatio ist. (Ia5990)
  • RuleController#parseRules in „static“ (I785df) ändern
  • APIs für ActivityEmbedding verbessert
    1. API-Benennung anpassen – „Hinzufügen“/„Entfernen“ für mehrere Instanzen verwenden:
    2. registerRule in addRule geändert
    3. unregisterRule in removeRule geändert
    4. Ersetzen Sie getSplitRules durch getRules, da ActivityRule keine Aufteilungsregel ist.
    5. RuleController#setRules hinzufügen, um mehrere Regeln festzulegen
    6. Extrahieren Sie regelbezogene APIs aus SplitController in das Singleton RuleController. Die regionalen Gewinner sind:
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. Extrahieren Sie #isActivityEmbedded aus SplitController in das Singleton ActivityEmbeddingController. Die regionalen Gewinner sind:
    14. isActivityEmbedded
    15. Entfernen Sie SplitController#initialize. Verwenden Sie RuleController#parseRules und #setRules, um Regeln aus einer XML-Datei festzulegen. Vor dieser Änderung: SplitController.initialize(context, R.xml.static_rules) Nach dieser Änderung: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
    16. Wir unterscheiden nicht mehr zwischen statischen und Laufzeitregeln. Wenn Sie #clearRules aufrufen, werden alle Regeln gelöscht, unabhängig davon, ob sie mit statischen XML-Regeldefinitionen oder zur Laufzeit registriert wurden. Wenn Sie das bisherige Verhalten von SplitController#clearRegisteredRules verwenden möchten, rufen Sie RuleController#parseRules mit der XML-Ressourcen-ID auf und rufen Sie dann RuleController#setRules auf, um die Regeln wieder zurückzusetzen. Vor dieser Änderung: SplitController.getInstance(context).clearRegisteredRules() Nach dieser Änderung: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules) (Ib3967)
  • Verbesserungen bei den SplitRule APIs:
    1. Geben Sie für SplitRule die Mindestabmessungen in DP anstelle von Pixeln an.
    2. Für den SplitRule-Builder die Mindestdimensionen als optional definieren. (I95f17)
  • Kontext übergeben, um SplitController zu initialisieren (I42549)
  • SplitRule#layoutDir wurde in #layoutDirection und SplitRule Builder#setLayoutDir in Builder#setLayoutDirection umbenannt. (I3f6d1)

Version 1.1.0-alpha04

9. November 2022

androidx.window:window-*:1.1.0-alpha04 wird veröffentlicht. Version 1.1.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Stellen Sie eine Methode bereit, mit der ermittelt werden kann, ob ein ActivityStack für ActivityEmbedding leer ist.
  • Experimentelle API-Tags wurden aus ActivityEmbedding APIs entfernt.
  • Blenden Sie den Konstruktor von ActivityRule aus, da Builder die bevorzugte Methode zum Erstellen ist.
  • Fügen Sie eine experimentelle Methode hinzu, um die WindowInsets auf WindowMetrics abzurufen.
  • Aktualisieren Sie SplitPlaceholderFinishBehavior, um zu verhindern, dass der Platzhalter fertiggestellt wird. Das Fertigstellen des Platzhalters führte zu etwas verwirrendem Verhalten.

API-Änderungen

  • Machen Sie „val isEmpty“ öffentlich, um „fun isEmpty“ zu ersetzen.
  • Benennen Sie ActivityStack-Parameteraktivitäten in activitiesInProcess um. (Ia5055)
  • Entfernen Sie ActivityFilter#matchesClassName und ActivityFilter#matchesClassNameOrWildCard, da sie verwirrend sind.
  • Fügen Sie ActivityFilter#componentName und ActivityFilter#intentAction hinzu, damit der Anrufer verschiedene Filter unterscheiden kann (I41f22).
  • @Deprecated APIs aus der experimentellen API entfernen (I216b3)
  • @ExperimentalWindowApi für APIs zum Einbetten von Aktivitäten entfernen (I69ebe)
  • Den Konstruktor von ActivityRule ausblenden und stattdessen den Builder verwenden. (If4eb6)
  • Fügen Sie APIs hinzu, um zu prüfen, ob eine Aktivität Teil der ActivityFilter ist. (Ia43cf)
  • API-Dateien entsprechend den Änderungen an den Klassen WindowMetrics und WindowMetricsCalculatorCompat aktualisieren (I667fe)
  • Javadoc und Klassenname der Property ActivityEmbedding aktualisieren (Ia1386)
  • Namen von ActivityEmbedding-Eigenschafts-Tags für die Verwendung in AndroidManifest.xml hinzufügen (Id1ad4)
  • Es wurden die neuen APIs SplitPlaceholderFinishBehavior und SplitPlaceholderRule.finishPrimaryWithPlaceholder hinzugefügt. Diese ersetzen die vorhandene SplitPlaceholderRule.finishPrimaryWithSecondary, die definiert, wann Platzhalteraktivitäten abgeschlossen sind und wie sich zugehörige Aktivitäten im Activity Embedding verhalten sollen. (I64647)

Fehlerkorrekturen

  • Einführung der WindowAreaController und APIs, um den RearDisplay-Modus zu aktivieren und das aktuelle Fenster auf das Display zu verschieben, das mit der Rückkamera ausgerichtet ist. (I388ab)

Version 1.1.0-alpha03

27. Juli 2022

androidx.window:window-*:1.1.0-alpha03 wird veröffentlicht. Version 1.1.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Aktualisiere die Standardwerte für die Regeln für das Einbetten.

API-Änderungen

  • Aktualisieren Sie die Standardwerte für die Eigenschaften von Einbettungsregeln. (Ic4d35)

Version 1.1.0-alpha02

11. Mai 2022

androidx.window:window-*:1.1.0-alpha02 wird veröffentlicht. Version 1.1.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Adapterbibliotheken für Java und RxJava veröffentlichen

Version 1.1.0-alpha01

11. Mai 2022

androidx.window:window-*:1.1.0-alpha01 wird veröffentlicht. Version 1.1.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Adapter zur Unterstützung von Java und RxJava veröffentlichen

Version 1.1.0-alpha01

20. April 2022

androidx.window:window:1.1.0-alpha01 wird veröffentlicht. Version 1.1.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Ein Fehler wurde behoben, durch den die Funktionen für faltbare Geräte nicht mehr gesendet wurden, wenn eine App im Hintergrund ausgeführt wurde.
  • Die experimentelle ActivityEmbedding API wird erweitert.

API-Änderungen

  • Eine öffentliche API, mit der geprüft werden kann, ob eine Aktivität eingebettet wird. (I39eb7)

Fehlerkorrekturen

  • APIs hinzufügen, mit denen das Fertigstellungsverhalten für Container in Aktivitätsaufteilungen angepasst werden kann (I1a1e4)
  • Es wurde eine neue Konfigurationsoption für Regeln zur Aktivitätsaufteilung hinzugefügt. (Iec6af)

Version 1.0

Version 1.0.0

26. Januar 2022

androidx.window:window-*:1.0.0 wird veröffentlicht. Version 1.0.0 enthält diese Commits.

Wichtige Funktionen von 1.0.0

  • Unterstützung für faltbare Smartphones über WindowInfoTracker und FoldingFeature WindowMetricsCalculator, um die aktuellen WindowMetrics zu berechnen.

Version 1.0.0-rc01

15. Dezember 2021

androidx.window:window-*:1.0.0-rc01 wird veröffentlicht. Version 1.0.0-rc01 enthält diese Commits.

Neue Funktionen

  • Unterstützung für faltbare Smartphones über WindowInfoTracker hinzufügen
  • Fügen Sie Methoden zum Berechnen des aktuellen und maximalen WindowMetrics hinzu.
  • Fügen Sie unterstützende Test-APIs hinzu.

Version 1.0.0-beta04

17. November 2021

androidx.window:window-*:1.0.0-beta04 wird veröffentlicht. Version 1.0.0-beta04 enthält diese Commits.

Neue Funktionen

  • Benennen Sie WindowInfoRepository in WindowInfoTracker um.
  • Machen Sie Activity zu einer expliziten Methodenabhängigkeit für WindowInfoTracker.
  • Fügen Sie eine einfache TestRule für WindowMetricsCalculator hinzu, um Entwickler zu unterstützen, die Robolectric verwenden.

API-Änderungen

  • Erweiterungen extrahieren (I25a5f)
  • isEmpty in ActivityStack hinzufügen (I5a4e6)
  • Benennen Sie WindowInfoRepository in WindowInfoTracker um.
    • Aktualisieren Sie die java/rxjava/testing-Abhängigkeiten entsprechend. (I0da63)
  • Fügen Sie eine Testregel für eine einfache WindowMetricsCalculator hinzu. (Ibacdb)

Version 1.0.0-beta03

27. Oktober 2021

androidx.window:window-*:1.0.0-beta03 wird veröffentlicht. Version 1.0.0-beta03 enthält diese Commits.

Neue Funktionen

  • Experimentelle APIs für das Einbetten von Aktivitäten hinzufügen Bei dieser ersten Layoutversion können zwei Aktivitäten nebeneinander angezeigt werden.

API-Änderungen

  • Die currentWindowMetrics API wurde entfernt, da wir sie nicht korrekt bereitstellen können. Verwenden Sie stattdessen WindowMetricsCalculator (Icda5f).
  • Die Erweiterungs-API wurde aktualisiert. (Ica92b)
  • Es wurde eine Benutzeroberfläche für eine neue Funktion hinzugefügt, mit der Aktivitäten eingebettet und im übergeordneten Aufgabenfenster nebeneinander angezeigt werden können. (I5711d)
  • Die Konstruktoren für WindowMetrics und WindowLayoutInfo wurden ausgeblendet. Verwenden Sie stattdessen die Test-APIs. (I5a1b5)
  • Fügen Sie eine API hinzu, um gefälschte WindowLayoutInfo-Objekte zu erstellen. (I4a2fd)

Fehlerkorrekturen

Version 1.0.0-beta02

1. September 2021

androidx.window:window-*:1.0.0-beta02 wird veröffentlicht. Version 1.0.0-beta02 enthält diese Commits.

Neue Funktionen

  • Fügen Sie eine experimentelle Anmerkung hinzu, um experimentelle APIs zu kennzeichnen. (I9f1b6)
  • Fügen Sie eine Testmethode hinzu, um ein Test-FoldingFeature zu erstellen, das ein Rechteck akzeptiert. Das erleichtert das Testen, wenn Sie Robolectric anstelle einer tatsächlichen Aktivität verwenden. (Id1cca)

Version 1.0.0-beta01

18. August 2021

androidx.window:window-*:1.0.0-beta01 wird veröffentlicht. Version 1.0.0-beta01 enthält diese Commits.

Neue Funktionen

  • Alte Konstanten wurden entfernt und FoldingFeature wurde zu einer Schnittstelle.

API-Änderungen

  • Entfernen Sie alte Konstanten und machen Sie FoldFeature zu einer Schnittstelle. (I9a2d5)

Fehlerkorrekturen

  • Bibliotheken, die von der Test Core-Bibliothek abhängen, wurden auf Version 1.4.0 aktualisiert und funktionieren jetzt mit der Android-Plattformversion S. (I88b72, b/189353863)

Version 1.0.0-alpha10

4. August 2021

androidx.window:window-*:1.0.0-alpha10 wird veröffentlicht. Version 1.0.0-alpha10 enthält diese Commits.

Neue Funktionen

  • Benennen Sie WindowInfoRepo in WindowInfoRepository um und passen Sie die entsprechenden Klassen / Dateien an.
  • Konvertieren Sie die Messwerte des aktuellen Fensters in einen Fluss im WindowInfoRepository, da sich der Wert im Laufe der Zeit ändert.
  • WindowInfoRepoJavaAdapter in WindowInfoRepoCallbackAdapter umbenennen
  • Hilfsmethode zum Erstellen von Testobjekten vom Typ „FoldingFeature“ hinzufügen
  • Aktualisieren Sie Pakete, um Klassen basierend auf der unterstützten Funktion zu gruppieren.

API-Änderungen

  • Benennen Sie „ActivityExt“ in „ActivityExtensions“ um. Ändern Sie „Repo“ in „Repository“. (I61a16)
  • Aktualisieren Sie die Pakete für Kurse. (I23ae2)
  • WindowMetrics aus WindowInfoRepo entfernen (I24663)
  • WindowManager entfernen und WindowInfoRepo verwenden
    • WindowBackend intern machen. (I06d9a)
  • Fenstermesswerte in „Zugriffe“ umwandeln
    • Java-Adapter in WindowInfoRepoCallbackAdapter umbenennen
    • Entfernen Sie „callbackFlow“, damit keine experimentellen APIs mehr verwendet werden. (Ia4d15)
  • Hilfsmethode zum Erstellen von Testanzeigefunktionen hinzufügen
    • Von „occlusionMode“ zu „occlusionType“ wechseln (If4cff)

Fehlerkorrekturen

  • Proguard-Fehler behoben, bei dem die Core-Bibliothek entfernt wurde.
  • Fehler behoben, durch den WindowLayoutInfo nicht an zusätzliche Abonnenten gesendet wurde.
  • Fehler behoben, bei dem Konfigurationsänderungen keine Aktualisierungen der Funktion zum Zusammenklappen auslösten.

Version 1.0.0-alpha09

30. Juni 2021

androidx.window:window-*:1.0.0-alpha09 wird veröffentlicht. Version 1.0.0-alpha09 enthält diese Commits.

Neue Funktionen

  • Ändern Sie Ganzzahlkonstanten in unbegrenzte Enumerationen.
  • Test-Dienstprogramm hinzufügen, um Funktionen zum Zusammenklappen zu testen

API-Änderungen

  • Hilfsmethode zum Erstellen von Testanzeigefunktionen hinzufügen (I3cf54)
    • Ändern Sie occlusionMode in occlusionType.

Fehlerkorrekturen

  • Senden Sie einen Anfangswert, wenn Sie mehrere Abnehmer der Datenstreams hinzufügen.

Version 1.0.0-alpha08

16. Juni 2021

androidx.window:window-*:1.0.0-alpha08 wird veröffentlicht. Version 1.0.0-alpha08 enthält diese Commits.

Neue Funktionen

  • Wir haben ein Testartefakt veröffentlicht, um die Verwendung von WindowInfoRepository zu vereinfachen. Verwenden Sie WindowInfoRepository, um Informationen zu DisplayFeatures und WindowMetrics abzurufen. (I57f66, Ida620)

Version 1.0.0-alpha07

2. Juni 2021

androidx.window:window-*:1.0.0-alpha07 wird veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.

Neue Funktionen

  • Die Kernfensterbibliothek zu Kotlin migrieren. In Zukunft werden Tasks und Suspend-Funktionen verwendet, um asynchrone Daten bereitzustellen.
  • Fügen Sie WindowInfoRepo als Hauptinteraktionspunkt zum Abrufen der WindowMetrics und des Streams von WindowLayoutInfo hinzu.
  • Neues window-java-Artefakt zum Bereitstellen Java-kompatibler APIs zum Registrieren und Aufheben der Registrierung von Callbacks.
  • Neue window-rxjava2- und window-rxjava3-Artefakte, um RxJava-adaptierte APIs bereitzustellen.

API-Änderungen

  • Fügen Sie WindowServices hinzu, um Abhängigkeiten einheitlich anzugeben.
    • Hinzufügen einer coroutine-basierten API zum Verbrauchen von Informationen zum Fensterlayout (Iab70f)
  • Die Kernbibliothek des Fenstermanagers zu Kotlin migrieren. (Icca34)

Fehlerkorrekturen

  • Fügen Sie eine neue Datenklasse hinzu, um die Begrenzungen von Features darzustellen. (I6dcd1)

Version 1.0.0-alpha06

5. Mai 2021

androidx.window:window:1.0.0-alpha06 wird veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.

Neue Funktionen

  • Wir haben mit der Migration zu Kotlin begonnen und werden sie im nächsten Release abschließen.
  • „DeviceState“ wurde aus der öffentlichen API entfernt. Verwenden Sie stattdessen „FoldingFeature“.
  • Wir haben STATE_FLIPPED aus den Zuständen der Faltfunktion entfernt, da er derzeit von keinem Anwendungsfall unterstützt wird.
  • Außerdem haben wir weitere eingestellte APIs entfernt.

API-Änderungen

  • Fügen Sie Kotlin als Abhängigkeit hinzu.
    • Kernbibliothek zu Kotlin migrieren (Idd995)
  • DisplayFeature-Builder entfernt (I61fa4)
  • DeviceState wurde aus der öffentlichen API entfernt. Verwenden Sie stattdessen FoldingFeature. (Id6079)
  • Entfernen Sie den Rückruf für den Gerätestatus aus Erweiterungen. (I5ea83)
  • Entfernen Sie STATE_FLIPPED aus „FoldingFeature“. (I9c4e1)
  • Entfernen Sie nicht mehr unterstützte Registrierungsmethoden. (Ib381b)

Version 1.0.0-alpha05

24. März 2021

androidx.window:window:1.0.0-alpha05 wird veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.

Neue Funktionen

Wir haben der Funktion „FoldingFeature“ praktische Methoden hinzugefügt, damit Apps erkennen können, ob die Funktion getrennt oder verdeckt ist, und die Ausrichtung des Scharniers bestimmen können. Außerdem wird der Scharniertyp ausgeblendet, damit

Wir entfernen die synchronen Lesemethoden aus WindowManager. Synchrone Lesemethoden sind fehleranfällig, da es eine implizite Race-Bedingung gibt. Registrieren Sie Listener und Callbacks, um Updates zu den WindowLayoutInfo zu erhalten.

API-Änderungen

  • Praktische Methoden für die Arbeit mit FoldingFeatures hinzufügen (Ie733f)
  • Synchrone Lesemethoden aus WindowManager entfernt (I96fd4)

Version 1.0.0-alpha04

10. März 2021

androidx.window:window:1.0.0-alpha04 wird veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Es wurde ein Fehler behoben, bei dem keine WindowLayoutInfo ausgegeben wurde, wenn keine OEM-Implementierung vorhanden war. Jetzt geben wir eine leere WindowLayoutInfo aus.
  • Ein Fehler wurde behoben, durch den der Status nicht richtig aktualisiert wurde, wenn sich der Scharnierstatus geändert hat, während die App im Hintergrund ausgeführt wurde. Der Status sollte jetzt konsistent sein.
  • Aktualisieren Sie unsere ProGuard-Dateien, um Warnungen von Laufzeitabhängigkeiten zu ignorieren.

Fehlerkorrekturen

  • Gibt einen leeren Wert aus, wenn die OEM-Bibliothek fehlt. (Ide935)

Version 1.0.0-alpha03

18. Februar 2021

androidx.window:window:1.0.0-alpha03 wird veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Senden Sie einen leeren Wert für „WindowLayoutInfo“, wenn die OEM-Implementierung leer ist. Dadurch sollte die Nutzung der Bibliothek auf mehr Geräten möglich sein. Da die APIs asynchron sind, wird dennoch empfohlen, in Apps einen Schutzcode zu schreiben und nach einem Zeitlimit einen Standardwert auszugeben. Wir können keine Garantien für OEM-Implementierungen übernehmen und der Anfangswert kann sich verzögern.

Fehlerkorrekturen

  • Gibt einen leeren Wert aus, wenn die OEM-Bibliothek fehlt. (Ide935)

Version 1.0.0-alpha02

27. Januar 2021

androidx.window:window:1.0.0-alpha02 wird veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Wir haben einige APIs eingestellt, um die API zu optimieren und Fehler zu reduzieren. Zu den bemerkenswertesten Beispielen gehören das Entfernen der synchronen Lesevorgänge aus WindowManager und die Einstellung von DeviceState. Synchrone Lesevorgänge können zu Race-Bedingungen und einer falschen Benutzeroberfläche führen.

  • Wir haben DisplayFeature in eine Schnittstelle umgewandelt, die künftig für andere Funktionen verwendet wird. Die erste Funktion ist „FoldingFeature“, die jetzt die Darstellung eines faltbaren Displays oder eines Scharniers ist. Dieser enthält auch den Status des Scharniers, der DeviceState ersetzt.

  • WindowMetrics wurde in Android 11 eingeführt, um Entwicklern eine einfache Möglichkeit zu bieten, Messwerte zu einem Fenster abzufragen, z. B. seine Position und Größe auf dem Bildschirm sowie alle System-Einschnitte. Wir haben die API in diesem Release zurückportiert, damit Entwickler WindowMetrics nutzen und weiterhin ältere Android-Versionen unterstützen können. WindowMetrics können über die APIs WindowManager#getCurrentWindowMetrics() und WindowManager#getMaximumWindowMetrics() abgerufen werden.

API-Änderungen

  • APIs einstellen, die in der nächsten Alphaversion (Ib7cc4) entfernt werden
  • ExtensionInterface wurde aktualisiert, um explizite Aktivitätsverweise zu akzeptieren. (I07ded)
  • Einführung in die WindowMetrics API. (I3ccee)
  • Synchrone Lesemethoden aus WindowManager entfernen (I69983)
  • Das Paket „ExtensionWindowBackend“ schützen. (Ied208)

Fehlerkorrekturen

  • Aktualisieren Sie die ExtensionInterface APIs, damit visuelle Kontexte akzeptiert werden. (I8e827)

Externer Beitrag

  • DeviceState und WindowLayoutInfo zusammenführen, um den Zugriff auf Daten zu erleichtern (Id34f4)

Version 1.0.0-alpha01

27. Februar 2020

androidx.window:window:1.0.0-alpha01 und androidx.window:window-extensions:1.0.0-alpha01 werden freigegeben. Version 1.0.0-alpha01 enthält diese Commits. Dies ist die erste Version der Window Manager-Bibliothek.

Neue Funktionen

  • DisplayFeature: Diese neue API erkennt Unterbrechungen in der durchgehenden Oberfläche des flachen Displays, z. B. Scharniere oder Falten.
  • DeviceState: Diese neue API gibt die aktuelle Position des Smartphones aus einer Liste definierter Positionen zurück (z. B. CLOSED, OPENED, HALF_OPENED usw.).