Fenstermanager

Die Jetpack WindowManager-Bibliothek ermöglicht um neue Formfaktoren für Geräte und Mehrfensterumgebungen zu unterstützen. Die Bibliothek bietet eine gemeinsame API-Oberfläche für API-Version 14 und höher. Die Die erste Version ist auf faltbare Geräte ausgerichtet, zukünftige Versionen werden jedoch auf weitere Anzeigetypen und Fensterfunktionen.
Letzte Aktualisierung Stabile Version Releasekandidat Beta-Ausgabe Alpha-Release
7. August 2024 1.3.0 - - 1.4.0-alpha01

Abhängigkeiten deklarieren

Um eine Abhängigkeit von WindowManager hinzuzufügen, müssen Sie das Maven-Repository von Google zu für Ihr Projekt. Gelesen Maven-Repository von Google für weitere Informationen Informationen.

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

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

Dein Feedback hilft uns, Jetpack zu verbessern. Teilen Sie uns mit, wenn Sie neue Ausgaben entdecken oder zur Verbesserung dieser Bibliothek. In der bestehende Probleme in dieser Bibliothek, bevor Sie eine neue erstellen. So können Sie zu einem vorhandenen Problem abstimmen: indem Sie auf die Sternschaltfläche klicken.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung. .

Version 1.4

Version 1.4.0-alpha01

7. August 2024

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

Neue Funktionen

  • Mit dem Anpinnen des Aktivitätsstacks können Apps Inhalte in einem Container anpinnen und die Navigation vom anderen Container getrennt halten.
  • Mit der interaktiven Trennlinie können Apps eine feste oder ziehbare Trennlinie zwischen den beiden Aktivitäten in einer geteilten Präsentation anzeigen.
  • Mit der Option Vollbild-Dialogfeld dimmen können Apps den Abdunkelbereich des Dialogfelds angeben, um entweder das gesamte Aufgabenfenster oder nur den Container zu dimmen, in dem das Dialogfeld angezeigt wird.
  • Der eingebettete Informationsrückruf für Aktivitätsfenster ermöglicht es Apps, kontinuierlich Updates des eingebetteten Aktivitätsfensters zu empfangen.
  • Mit der Option Hintergrund für Animationen einbetten können Apps den Animationshintergrund angeben, wodurch die Qualität der Übergangsanimation bei Verwendung von ActivityEmbedding verbessert wird.
  • Die verbesserte ActivityStack-Verwaltung bietet Apps mehr Kontrolle über die ActivityStacks, wenn ActivityEmbedding verwendet wird. Dazu gehören:
  • Aktivität in einer bestimmten ActivityStack starten
  • ActivityStack beenden

API-Änderungen

  • Eine neue API-WindowInfoTracker#supportedPostures:

    • Eine API, um festzustellen, ob das Gerät den Modus „Auf dem Tisch“ für faltbare Geräte unterstützt. Fügt WindowAreaSessionPresenter#getWindow hinzu
  • Fügen Sie APIs hinzu, um das Anpinnen von ActivityStack zu unterstützen:

    • SplitPinRule Klasse
    • SplitController#pinTopActivityStack
    • SplitController#unpinTopActivityStack
  • APIs hinzufügen, um die interaktive Trennlinie zu aktivieren und zu konfigurieren

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

    • EmbeddingConfiguration Klasse
    • DimAreaBehavior Klasse
    • ActivityEmbeddingController#setEmbeddingConfiguration
  • APIs hinzufügen, um aktualisierte Informationen zum Aktivitätsfenster zu erhalten

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

    • EmbeddingAnimationBackground
    • SplitAttributes.Builder#setAnimationBackground
  • APIs hinzufügen, um ActivityStacks abzuschließen

    • ActivityEmbeddingController#finishActivityStacks
  • APIs hinzufügen, um den Start von ActivityStack festzulegen

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

    • ActivityEmbeddingController#invalidateVisibleActivityStacks (verschoben aus SplitController#invalidTopVisibleSplitAttributes)
    • ActivityEmbeddingController#getActivityStack
    • SplitController#updateSplitAttributes
  • APIs für Version 1.4. (I56774)

Fehlerkorrekturen

  • Es wurde ein Fehler auf bestimmten Geräten behoben, auf dem bei aktiver Sitzung UNAVAILABLE statt ACTIVE zurückgegeben wurde.
  • Entfernt die Unterstützung für transferActivityToWindowArea auf Geräten mit einem vendorApiLevel von 2 aufgrund instabiler API-Unterstützung.
  • Einführung der API zur Aktivierung des Ziehens in den Vollbildmodus für die ziehbare Trennlinie beim Einbetten von Aktivitäten (I645c9)
  • Apps dürfen ActivityEmbedding-Animationen über Animationsparameter für SplitAttributes deaktivieren. (Idc01a)
  • Die manuelle Beschreibung 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 bei allen 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)
  • Erweiterungen dürfen Animationsparameter für SplitAttributes übernehmen, damit das Gerät sie für Animationsübergänge verwenden kann. (Iede00)
  • Overlay-APIs ausblenden (Ic4251)
  • Stellen Sie APIs zur Konfiguration der festen oder ziehbaren Trennlinie für die Aufteilung vor (Ia7a78).
  • Dichte zu WindowMetrics hinzugefügt (Id6723)
  • Fügen Sie eine API hinzu, um die SupportedPostures abzurufen. (If557a)
  • setLaunchingActivityStack aus experimenteller API entfernen (I191cf)
  • ActivityEmbeddingController#embeddedActivityWindowInfo vorstellen (I24312)
  • #getToken verwerfen und #getActivityStackToken hinzufügen (Ie0471)
  • Einführung des Callback-Adapters für die embeddedActivityWindowInfo Flow API (Ida77f)
  • Callback-Adapter für die OverlayInfo Flow API hinzufügen (I7264f)
  • Führe WindowSdkExtensionsRule ein, um extensionsVersion für Tests zu überschreiben. (Ifb928)
  • – Migrieren Sie #setLaunchingActivityStack zu Bundle, um die Nutzung von ActivityOptionsCompat zu erfüllen.
    • Nutzer sollten activityOptions.toBundle anstelle von ActvityOptions selbst übergeben.
    • #setLaunchingActivityStack(Activity) entfernen. Nutzer sollten zu ActivityEmbeddingController#getActivityStac(Activity) migrieren, um eine ActivityStack zu erhalten, und die ActivityStack an #setLaunchingActivityStack übergeben. (Ie0ccc)
  • ActivityStack.Token und SpltInfo.Token als Kennung für die Kommunikation zwischen WM Jetpack und Erweiterungen einführen
    • APIs einstellen/ersetzen, um Token anstelle von IBinder zu übernehmen/zurückzugeben. (I12b24)
  • ActivityEmbeddingController#invalidateVisibleActivityStacks vorstellen
    • Entfernen Sie SplitController#invalidateTopVisibleSplitAttributes, da das Feature in #invalidateVisibleActivityStacks konsolidiert wird (I02ef5)
  • – API wird hinzugefügt, um Einbettungskonfiguration festzulegen. (I59a4a)
  • - Top-ActivityStack androidx.Window APIs werden hinzugefügt bzw. losgelöst
    • Demo-App wird aktualisiert, um das Anpinnen/Loslösen von ActivityStack oben (I24dd3) zu ermöglichen
  • #finishActivityStacks und ActivityEmbeddingOptions (Ic1ab3) wieder hinzufügen
  • Entfernen Sie instabile APIs. (Ibc534, b/302380585)

Version 1.3

Version 1.3.0

29. Mai 2024

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

Wichtige Änderungen seit Version 1.2.0

  • Kotlin Multi-Platform-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 wurde 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 wurde veröffentlicht. Version 1.3.0-beta02 enthält diese Commits.

API-Änderungen

  • Unterstützung für das Erstellen und Verwenden benutzerdefinierter WindowSizeClasss wird entfernt. (ID1143)

Fehlerkorrekturen

  • Das Problem KotlinReflectionInternalError wurde behoben, das verursacht wurde, weil Proguard einige Dateien in bestimmten Geräteimplementierungen entfernt hat. (I01b02)

Version 1.3.0-beta01

3. April 2024

androidx.window:window-*:1.3.0-beta01 wurde 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 wurde veröffentlicht. Version 1.3.0-alpha03 enthält diese Commits.

API-Änderungen

  • Unterteilen Sie WindowSizeClassUtil in fokussiertere Methoden. (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 wurde veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Aktualisierungen der API-Oberfläche der Window Size Class-APIs, 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)
  • Fügen Sie Dienstfunktionen zum Auswählen eines WindowSizeClass aus einer Gruppe hinzu. Fügen Sie experimentelle Bewertungsfunktionen hinzu, damit Entwickler ihre eigenen Selektoren schreiben können. Fügen Sie eine Selektorerweiterungsfunktion hinzu, um das breiteste WindowSizeClass innerhalb einer bestimmten Grenze auszuwählen. (I0c944)
  • Öffnen Sie den WindowSizeClass-Konstruktor, damit benutzerdefinierte Haltepunkte hinzugefügt werden können. (IC1ff3)
  • Fügen Sie eine praktische Funktion hinzu, um die Größenklasse aus Breite, Höhe und Dichte zu erstellen. (If67f4)

Fehlerkorrekturen

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

Version 1.3.0-alpha01

15. November 2023

androidx.window:window-*:1.3.0-alpha01 wurde 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
  • Die Test-APIs zum Erstellen einer FoldingFeature sind jetzt stabil.
  • Test-APIs zum Einrichten gefälschter ActivityEmbedding-Werte sind jetzt stabil.
  • WindowLayoutInfoPublisherRule meldet jetzt die Überschreibung, wenn ein Wert von einem UiContext abgerufen wird.
  • WindowInfoTracker“ meldet, dass Funktionsdaten in UiContext-Parameter zusammengefasst werden.
  • Stelle die Version der Erweiterung auf dem Gerät bereit.
  • WindowProperties-Konstanten für Überschreibungen pro Nutzer pro App:
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE – informiert die System, für das die App die für Nutzer sichtbare Seitenverhältniskompatibilität deaktiviert hat überschreiben.
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE – Informiert Das System, von dem die App die Vollbildoption des Nutzers deaktiviert hat Einstellungen zum Überschreiben der Seitenverhältniskompatibilität

Version 1.2

Version 1.2.0

15. November 2023

androidx.window:window-*:1.2.0 wurde 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
  • Die Test-APIs zum Erstellen einer FoldingFeature sind jetzt stabil.
  • Test-APIs zum Einrichten gefälschter ActivityEmbedding-Werte sind jetzt stabil.
  • WindowLayoutInfoPublisherRule meldet jetzt die Überschreibung, wenn ein Wert von einem UiContext abgerufen wird.
  • WindowInfoTracker“ meldet, dass Funktionsdaten in UiContext-Parameter zusammengefasst werden.
  • Stelle die Version der Erweiterung auf dem Gerät bereit.

Version 1.2.0-rc01

1. November 2023

androidx.window:window-*:1.2.0-rc01 wurde 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
  • Die Test-APIs zum Erstellen einer FoldingFeature sind jetzt stabil.
  • Test-APIs zum Einrichten gefälschter ActivityEmbedding-Werte sind jetzt stabil.
  • WindowLayoutInfoPublisherRule meldet jetzt die Überschreibung, wenn ein Wert von einem UiContext abgerufen wird.
  • WindowInfoTracker“ meldet, dass Funktionsdaten in UiContext-Parameter zusammengefasst werden.
  • Stelle die Version der Erweiterung auf dem Gerät bereit.

Version 1.2.0-beta04

18. Oktober 2023

androidx.window:window-*:1.2.0-beta04 wurde 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 wurde veröffentlicht. Version 1.2.0-beta03 enthält diese Commits.

Neue Funktionen

  • Füge RequiresApi-Prüfungen für APIs hinzu, die eine bestimmte Version von Erweiterungen benötigen, um ordnungsgemäß zu funktionieren.
  • Fügen Sie eine API hinzu, um die Version der Erweiterung auf dem Gerät verfügbar zu machen.

API-Änderungen

  • Annotieren Sie die erforderliche Version der Window SDK-Erweiterung in öffentlichen APIs.
    • Entferne „isXXXSupported“ in der Komponente „Aktivitätseinbettung“. (Ie3dae)
  • Stelle WindowSdkExtensions vor, um die Version der Erweiterung auf dem Gerät zu melden.
    • Leite RequiresWindowSdkExtension ein, um die mindestens erforderliche Erweiterungsversion anzugeben. (I05fd4)
  • Macht WindowAreaInfo#getCapability nicht mit Nullwerten kompatibel. (I17048)

Version 1.2.0-beta01

26. Juli 2023

androidx.window:window-*:1.2.0-beta01 wurde 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
  • Die Test-APIs zum Erstellen einer FoldingFeature sind jetzt stabil.
  • Test-APIs zum Einrichten gefälschter ActivityEmbedding-Werte sind jetzt stabil.
  • WindowLayoutInfoPublisherRule meldet jetzt die Überschreibung, wenn ein Wert von einem UiContext abgerufen wird.
  • WindowInfoTracker“ meldet, dass Funktionsdaten in UiContext-Parameter zusammengefasst werden.

API-Änderungen

  • Kennzeichnet WindowArea-APIs als experimentell, damit API-Änderungen für eine stabile Version in 1.3 (I857f5) fortgesetzt werden können
  • API-Dateien wurden aktualisiert, um mit Anmerkungen zur Unterdrückung der Kompatibilität zu versehen (I8e87a, b/287516207)

Version 1.2.0-alpha03

21. Juni 2023

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

Neue Funktionen

  • Verworfene APIs werden aus der API-Oberfläche entfernt.
  • Füge APIs hinzu, um gleichzeitige Darstellungen zu unterstützen.
  • Fügen Sie eine Property hinzu, um die erzwungene Überschreibung der Größenänderung zu deaktivieren.
  • Fügen Sie eine Property hinzu, um das Überschreiben des min. Seitenverhältnisses zu deaktivieren.
  • Stabilisieren Sie ActivityEmbeddingRule, um Einheitentests rund um das Einbetten von Aktivitäten zu unterstützen.

API-Änderungen

  • Verworfene APIs entfernen (I18d39)
  • Unterstützung für gleichzeitige Displays wurde hinzugefügt. (Ifcbb0)

Fehlerkorrekturen

  • Opt-out-kompatible Property zum Überschreiben der Größenanpassung erzwingen (Ie7ab1)
  • Entfernt SESSION_STATE_CONTENT_INVISIBLE aus der Oberfläche für Erweiterungen. (I6ed19)
  • Stabilisieren Sie ActivityEmbeddingRule, um Einheitentests rund um das Einbetten von Aktivitäten zu unterstützen. (I8d6b6)
  • Opt-out-kompatible Property zum Überschreiben des minimalen Seitenverhältnisses wird hinzugefügt. (I66390)
  • Entfernt verworfene WindowArea APIs (Ieb67c)
  • Schleifeneigenschaft der Ausrichtungsanfrage wurde in PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED umbenannt. (Ie2fbd)
  • Aktualisiert die Namen von Fensterbereich-Sitzungskonstanten (I83675)
  • Hinzufügen einer kompatiblen Opt-out-Property, die die Ausrichtungsanforderungsschleife ignoriert, wenn diese erkannt wird (I0a7a2)
  • Fügen Sie WindowAreaComponent#STATUS_ACTIVE hinzu, um anzuzeigen, dass die Funktion bereits aktiv ist. (I62bc3)
  • RearDisplayPresentationMode-APIs hinzufügen (I0401c)
  • Entferne die Hintergrundfarben-API für stabile Ergebnisse. (I34c3e)
  • Window Area APIs ausblenden. (I39de0)
  • Fügen Sie Methoden hinzu, um SplitInfo in SplitController zu überschreiben. Fügen Sie Testmethoden hinzu, um für SplitInfo und ActivityStack ein Double zu erstellen. (Icd69f)
  • Tag für ActivityRule.Builder optional machen. (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 Scharniergelenktyp wurde entfernt. Wenn der Aufteilungstyp „Scharnier“ 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-Aufteilungstyp anzupassen. (Ifcc59)
  • add/removeSplitCallback einstellen
    • add/removeSplitCallback nach SplitControllerCallbackAdapter verschieben
    • Flow-Unterstützung hinzufügen, um SplitInfo-Liste zu erhalten (I7f1b6)
  • Testregel für ActivityEmbeddingController hinzufügen (I42e9b)
  • ActivityOptionsCompat wird in ActivityEmbeddingOptions umbenannt (I89301)
  • Füge splitSupportStatus hinzu, um anzugeben, ob das Einbetten von Aktivitäten verfügbar ist. (I10024)
  • Führe SplitAttributes.BackgroundColor ein, um den Wert von DEFAULT besser darzustellen. Es wurde klargestellt, dass die Hintergrundfarbe einer nicht undurchsichtigen Animation nicht unterstützt wird, sodass alle nicht deckenden Farben als Standardfarben behandelt werden, d. h., die aktuelle Hintergrundfarbe des Designfensters 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)
  • TestActivityStack hinzufügen, um ActivityStack für Tests zu erstellen
    • Fügen Sie TestSplitInfo hinzu, um SplitInfo für Tests zu erstellen. (I8e779)
  • Es wurde eine Möglichkeit hinzugefügt, eine gefälschte SplitAttributesCalculatorParams zu erstellen, damit Entwickler ihre benutzerdefinierte SplitAttributesCalculator (Id4a6e) überprüfen können.
  • WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context) und WindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context) hinzufügen (I66c7f)

Version 1.2.0-alpha02

7. Juni 2023

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

Neue Funktionen

  • Die Test-API wurde so aktualisiert, dass sie eine Konstante für nicht angegebene Faltfunktionen hat.
  • Beim Überschreiben mit WindowLayoutInfoPublishRule werden alle Werte von windowLayoutInfo überschrieben, einschließlich der kontextbasierten API.

API-Änderungen

  • Konstante für nicht angegebenes Faltelement mittig 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 wurde veröffentlicht. Version 1.2.0-alpha01 enthält diese Commits.

Neue Funktionen

Test-APIs zur Aktivitätseinbettung und WindowLayoutInfoTracker stabilisieren ActivityEmbeddingRule wurde auf die stabile Ebene hochgestuft. WindowMetricsCalculatorRule wurde auf die stabile Ebene hochgestuft. Dienstprogrammfunktionen zum Erstellen einer FoldingFeature für Testzwecke wurden auf „stable“ hochgestuft.

API-Änderungen

  • Stabilisieren Sie ActivityEmbeddingRule, um Einheitentests rund um das Einbetten von Aktivitäten zu unterstützen. (I8d6b6)
  • WindowMetrisCalculatorTestRule ist stabil und ermöglicht Stub-Messwerte für JVM-Tests. Wir empfehlen die Verwendung eines Emulators, um genaue Ergebnisse zu erhalten.
  • Test-APIs für WindowLayoutInfo stabilisieren, um JVM-Tests zu unterstützen (IE036e)
  • Füge IntRange hinzu, um die Werte der Funktionen für das Falten zu testen. (I69f7d)

Version 1.1

Version 1.1.0

7. Juni 2023

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

Wichtige Änderungen seit Version 1.0.0

Einbetten von Aktivitäten

  • PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED wurde dem App-Manifest als boolesche Eigenschaft des <application>-Tags hinzugefügt.
  • isSplitSupported wurde eingestellt und durch splitSupportStatus ersetzt, um detailliertere Informationen darüber zu liefern, warum die Aufteilungsfunktion nicht verfügbar ist.
  • Die verschachtelte Klasse SplitController.SplitSupportStatus wurde hinzugefügt, um Statuskonstanten für das Attribut splitSupportStatus bereitzustellen.
  • SplitController wurde auf mehrere Module umgestaltet:
    • Modul ActivityEmbeddingController für Activity- oder ActivityStack-bezogene APIs.
    • isActivityEmbedded wurde von SplitController nach ActivityEmbeddingController verschoben.
    • Modul RuleController für EmbeddingRule-bezogene Vorgänge:
    • SplitController APIs wurden entfernt:
    • clearRegisteredRules()
    • getSplitRules()
    • initialize()
    • registerRule()
    • unregisterRule()
    • Hinzugefügte RuleController APIs:
    • addRule(): Fügt eine Regel hinzu oder aktualisiert die Regel mit demselben Tag.
    • removeRule(): Entfernt eine Regel aus der Sammlung registrierter Regeln.
    • setRules(): Es wird eine Sammlung von Regeln erstellt.
    • clearRules(): Entfernt alle registrierten Regeln.
    • parseRules(): parst Regeln aus XML-Regeldefinitionen.
  • Alle Module erfordern, dass ein Kontext durch die Methode #getInstance() initialisiert wird. Dazu gehören:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Die EmbeddingAspectRatio-Klasse wurde hinzugefügt, um Verhaltenskonstanten in Bezug auf das Seitenverhältnis von Displayanzeigen zu definieren.
  • Die Klasse SplitAttributes wurde hinzugefügt, um das geteilte Layout zu definieren.
  • SplitController wurden Rechnerfunktionen für SplitAttributes zum Anpassen von unterteilten Layouts hinzugefügt:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported(), um zu prüfen, ob die SplitAttributesCalculator APIs auf dem Gerät unterstützt werden
  • Feld „EmbeddingRule#tag“ wurde hinzugefügt.
  • API-Aktualisierungen in SplitRule:
    • defaultSplitAttributes hinzugefügt: Definiert das standardmäßige geteilte Layout einer Teilung. ersetzt splitRatio und layoutDirection.
    • Die Übersetzung der XML-Eigenschaften splitRatio und splitLayoutDirection wurde zu defaultSplitAttributes hinzugefügt.
    • Die Definitionen der Mindestabmessungen wurden so geändert, dass dichteunabhängige Pixel (dp) anstelle von Pixeln verwendet werden.
    • minHeightDp mit Standardwert von 600 dp hinzugefügt.
    • minWidth“ wurde zu „minWidthDp“ mit dem Standardwert von 600 dp geändert.
    • minSmallestWidth“ wurde zu „minSmallestWidthDp“ mit dem Standardwert von 600 dp geändert.
    • maxAspectRatioInHorizontal mit Standardwert ALWAYS_ALLOW hinzugefügt.
    • maxAspectRatioInPortrait mit Standardwert 1.4 hinzugefügt.
    • Es wurde eine verschachtelte Klasse vom Typ FinishBehavior definiert, um Konstanten des Abschlussverhaltens zu ersetzen.
    • Die Attributä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.

Fensterlayout

  • Zu WindowInfoTracker wurde eine experimentelle Unterstützung für den UI-Kontext ohne Aktivität hinzugefügt.
  • Zu WindowMetricsCalculator wurde ein experimenteller UI-Kontext ohne Aktivität hinzugefügt.

Migrationsschritte

  • Damit die Einbettung von Aktivitäten Aktivitäten in Aufteilungen darstellen kann, müssen Apps das Attribut PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED dem Manifest-<application>-Tag hinzufügen: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> So kann das System das Aufteilungsverhalten für eine Anwendung im Voraus optimieren.
  • SplitInfo-Seitenverhä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() ändert sich zu SplitController.getInstance(Context).
    • SplitController.initialize(Context, @ResId int) ändert sich zu RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).
    • SplitController.getInstance().isActivityEmbedded(Activity) ändert sich zu ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).
    • SplitController.getInstance().registerRule(rule) ändert sich zu RuleController.getInstance(Context).addRule(rule).
    • SplitController.getInstance().unregisterRule(rule) ändert sich zu RuleController.getInstance(Context).removeRule(rule).
    • SplitController.getInstance().clearRegisteredRules() ändert sich zu RuleController.getInstance(Context).clearRules().
    • SplitController.getInstance().getSplitRules() ändert sich zu RuleController.getInstance(Context).getRules().
  • SplitRule Property-Migrationen:
    • minWidth und minSmallestWidth verwenden jetzt dp-Einheiten anstelle von Pixeln. Apps können den folgenden Aufruf verwenden: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) oder teilen Sie minWith in Pixel einfach durch displayMetrics#density.
  • Konstanten für das Beenden-Verhalten müssen zu FinishBehavior-Klassenkonstanten migriert werden, die Enum-ähnlichen sind:
    • FINISH_NEVER ändert sich zu FinishBehavior.NEVER.
    • FINISH_ALWAYS ändert sich zu FinishBehavior.ALWAYS.
    • FINISH_ADJACENT ändert sich zu FinishBehavior.ADJACENT.
  • Layoutrichtung muss zu SplitAttributes.LayoutDirection migriert werden:
    • ltr ändert sich zu SplitAttributes.LayoutDirection.LEFT_TO_RIGHT.
    • rtl ändert sich zu SplitAttributes.LayoutDirection.RIGHT_TO_LEFT.
    • locale ändert sich zu SplitAttributes.LayoutDirection.LOCALE.
    • splitRatio muss zu SplitAttributes.SplitType.ratio(splitRatio) migriert werden.
  • SplitPairRule.Builder Migrationen:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) Änderungen an kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection) und setSplitRatio(ratio) ändert sich zu kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondary und setFinishSecondaryWithPrimary haben die enum-ähnlichen Konstanten FinishBehavior. Weitere Informationen finden Sie unter „SplitRule-Migrationen“.
    • Mit setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) kannst du dir Aufteilungen auf Geräten im Hochformat anzeigen lassen.
  • SplitPlaceholder.Builder Migrationen:
    • Hat nur die Parameter filters und placeholderIntent. Andere Properties werden in Setter verschoben. Weitere Informationen finden Sie unter „SplitPairRule.Builder Migrationen“.
    • setFinishPrimaryWithPlaceholder verwendet die FinishBehavior-enum-ähnlichen Konstanten. Weitere Informationen finden Sie unter „SplitRule-Migrationen“.
    • setLayoutDirection(layoutDirection) und setSplitRatio(ratio) ändern sich zu: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Mit setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) kannst du dir Aufteilungen auf Geräten im Hochformat anzeigen lassen.

Version 1.1.0-rc01

10. Mai 2023

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

Neue Funktionen

  • Veröffentlichen Sie ActivityEmbedding als stabile API.
  • Diverse Fehlerkorrekturen.

Version 1.1.0-beta02

5. April 2023

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

Neue Funktionen

  • Interne Fehlerbehebungen und Bereinigung.

Version 1.1.0-beta01

22. März 2023

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

Einbetten von Aktivitäten

  • PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED wurde dem App-Manifest als boolesche Eigenschaft des <application>-Tags hinzugefügt.
  • isSplitSupported wurde eingestellt und durch splitSupportStatus ersetzt, um detailliertere Informationen darüber zu liefern, warum die Aufteilungsfunktion nicht verfügbar ist.
  • Die verschachtelte Klasse SplitController.SplitSupportStatus wurde hinzugefügt, um Statuskonstanten für das Attribut splitSupportStatus bereitzustellen.
  • SplitController wurde auf mehrere Module umgestaltet:
    • Modul ActivityEmbeddingController für Activity- oder ActivityStack-bezogene APIs.
    • isActivityEmbedded wurde von SplitController nach ActivityEmbeddingController verschoben.
    • Modul RuleController für EmbeddingRule-bezogene Vorgänge:
    • SplitController APIs wurden entfernt:
      • clearRegisteredRules()
      • getSplitRules()
      • initialize()
      • registerRule()
      • unregisterRule()
    • Hinzugefügte RuleController APIs:
      • addRule(): Fügt eine Regel hinzu oder aktualisiert die Regel mit demselben Tag.
      • removeRule(): Entfernt eine Regel aus der Sammlung registrierter Regeln.
      • setRules(): Es wird eine Sammlung von Regeln erstellt.
      • clearRules(): Entfernt alle registrierten Regeln.
      • `parseRules() – parst Regeln aus XML-Regeldefinitionen.
  • Alle Module erfordern, dass ein Kontext durch die Methode #getInstance() initialisiert wird. Dazu gehören:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Die EmbeddingAspectRatio-Klasse wurde hinzugefügt, um Verhaltenskonstanten in Bezug auf das Seitenverhältnis von Displayanzeigen zu definieren.
  • Die Klasse SplitAttributes wurde hinzugefügt, um das geteilte Layout zu definieren.
  • SplitController wurden Rechnerfunktionen für SplitAttributes zum Anpassen von unterteilten Layouts hinzugefügt:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported(), um zu prüfen, ob die SplitAttributesCalculator APIs auf dem Gerät unterstützt werden
  • Feld „EmbeddingRule#tag“ wurde hinzugefügt.
  • API-Aktualisierungen in SplitRule:
    • defaultSplitAttributes hinzugefügt: Definiert das standardmäßige geteilte Layout einer Teilung. ersetzt splitRatio und layoutDirection.
    • Die Übersetzung der XML-Eigenschaften splitRatio und splitLayoutDirection wurde zu defaultSplitAttributes hinzugefügt.
    • Die Definitionen der Mindestabmessungen wurden so geändert, dass dichteunabhängige Pixel (dp) anstelle von Pixeln verwendet werden.
    • minHeightDp mit Standardwert von 600 dp hinzugefügt.
    • minWidth“ wurde zu „minWidthDp“ mit dem Standardwert von 600 dp geändert.
    • minSmallestWidth“ wurde zu „minSmallestWidthDp“ mit dem Standardwert von 600 dp geändert.
    • maxAspectRatioInHorizontal mit Standardwert ALWAYS_ALLOW hinzugefügt.
    • maxAspectRatioInPortrait mit Standardwert 1.4 hinzugefügt.
    • Es wurde eine verschachtelte Klasse vom Typ FinishBehavior definiert, um Konstanten des Abschlussverhaltens zu ersetzen.
    • Die Attributä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.

Fensterlayout

  • Unterstützung für UI-Kontext ohne Aktivität zu WindowInfoTracker hinzugefügt.
  • WindowMetricsCalculator wurde der UI-Kontext ohne Aktivität hinzugefügt.

Migrationsschritte

  • Damit die Einbettung von Aktivitäten Aktivitäten in Aufteilungen darstellen kann, müssen Apps das Attribut PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED dem Manifest-<application>-Tag hinzufügen: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> So kann das System das Aufteilungsverhalten für eine Anwendung im Voraus optimieren.
  • SplitInfo-Seitenverhä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() ändert sich zu SplitController.getInstance(Context).
    • SplitController.initialize(Context, @ResId int) Änderungen an RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).
    • SplitController.getInstance().isActivityEmbedded(Activity) ändert sich zu ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).
    • SplitController.getInstance().registerRule(rule) ändert sich zu RuleController.getInstance(Context).addRule(rule).
    • SplitController.getInstance().unregisterRule(rule) ändert sich zu RuleController.getInstance(Context).removeRule(rule).
    • SplitController.getInstance().clearRegisteredRules() ändert sich zu RuleController.getInstance(Context).clearRules().
    • SplitController.getInstance().getSplitRules() ändert sich zu RuleController.getInstance(Context).getRules().
  • SplitRule Property-Migrationen:
    • minWidth und minSmallestWidth verwenden jetzt dp-Einheiten anstelle von Pixeln. Apps können den folgenden Aufruf verwenden: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) oder teilen Sie minWith in Pixel einfach durch displayMetrics#density.
  • Konstanten für das Beenden-Verhalten müssen zu FinishBehavior-Klassenkonstanten migriert werden, die Enum-ähnlichen sind:
    • FINISH_NEVER ändert sich zu FinishBehavior.NEVER.
    • FINISH_ALWAYS ändert sich zu FinishBehavior.ALWAYS.
    • FINISH_ADJACENT ändert sich zu FinishBehavior.ADJACENT.
  • Layoutrichtung muss zu SplitAttributes.LayoutDirection migriert werden:
    • ltr ändert sich zu SplitAttributes.LayoutDirection.LEFT_TO_RIGHT.
    • rtl ändert sich zu SplitAttributes.LayoutDirection.RIGHT_TO_LEFT.
    • locale ändert sich zu SplitAttributes.LayoutDirection.LOCALE.
    • splitRatio muss zu SplitAttributes.SplitType.ratio(splitRatio) migriert werden.
  • SplitPairRule.Builder Migrationen:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) Änderungen an kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection) und setSplitRatio(ratio) ändern zu kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondary und setFinishSecondaryWithPrimary haben die enum-ähnlichen Konstanten FinishBehavior. Weitere Informationen finden Sie unter „SplitRule-Migrationen“.
    • Mit setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) kannst du dir Aufteilungen auf Geräten im Hochformat anzeigen lassen.
  • SplitPlaceholder.Builder Migrationen:
    • Hat nur die Parameter filters und placeholderIntent. Andere Properties werden in Setter verschoben. Weitere Informationen finden Sie unter „SplitPairRule.Builder Migrationen“.
    • setFinishPrimaryWithPlaceholder verwendet die FinishBehavior-enum-ähnlichen Konstanten. Weitere Informationen finden Sie unter „SplitRule-Migrationen“.
    • setLayoutDirection(layoutDirection) und setSplitRatio(ratio) ändern sich zu: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Mit setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) kannst du dir Aufteilungen auf Geräten im Hochformat anzeigen lassen.

Version 1.1.0-alpha06

22. Februar 2023

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

Neue Funktionen

  • Geben Sie die experimentelle Version des Abrufens von WindowLayoutInfo aus einem UI-Kontext frei.

API-Änderungen

  • Füge splitSupportStatus hinzu, um anzugeben, ob das Einbetten von Aktivitäten verfügbar ist. (I10024)
  • Die UI Context WindowLayoutInfo API als experimentell festlegen. (I58ee0)
  • Stellt die WindowAreaController und APIs zum Aktivieren des RearDisplay-Modus vor, um das aktuelle Fenster auf den Bildschirm zu verschieben, der mit der Rückkamera ausgerichtet ist. (Iffcbf)
  • Aktualisieren Sie die Standardhintergrundfarbe. (I1ac1b)
  • Fügen Sie SplitAttributes-Parameter hinzu. (I18bdd)
  • Fügen Sie APIs für SplitRule, SplitAttributes und SplitAttributesCalculator hinzu. (I92d23)
  • Verbessere die 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)
  • SplitRule braucht jetzt maxAspectRatioInPortrait/Landscape. Aktivitäten können nur dann aufgeteilt werden, wenn das Seitenverhältnis der übergeordneten Grenzen kleiner oder gleich dem angeforderten maxAspectRatio ist. (Ia5990)
  • RuleController#parseRules in statisch ändern (I785df)
  • APIs zu ActivityEmbedding verbessern
    1. API-Benennung ausrichten – Hinzufügen/Entfernen für mehrere Instanzen verwenden:
    2. registerRule Änderungen am addRule
    3. unregisterRule Änderungen am removeRule
    4. Ersetzen Sie getSplitRules durch getRules, da ActivityRule keine Aufteilungsregel ist
    5. RuleController#setRules hinzufügen, um mehrere Regeln festzulegen
    6. Extrahiert regelbezogene APIs aus SplitController in 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 Singleton ActivityEmbeddingController. Die regionalen Gewinner sind:
    14. isActivityEmbedded
    15. SplitController#initialize entfernen. Verwende zum Festlegen von Regeln aus einer XML-Datei RuleController#parseRules und #setRules. Vor dieser Änderung: SplitController.initialize(context, R.xml.static_rules) Nach dieser Änderung gilt Folgendes: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
    16. Statische Regeln werden nicht mehr von Laufzeitregeln unterschieden. Allerdings werden #clearRules-Ergebnisse aufgerufen, um alle Regeln zu löschen, unabhängig davon, ob sie mit statischen XML-Regeldefinitionen oder während der Laufzeit registriert sind. Wenn Sie das alte Verhalten von SplitController#clearRegisteredRules übernehmen möchten, rufen Sie RuleController#parseRules mit der XML-Ressourcen-ID und RuleController#setRules auf, um die Regeln wieder zurückzusetzen. Vor dieser Änderung: SplitController.getInstance(context).clearRegisteredRules() Nach dieser Änderung gilt Folgendes: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules) (Ib3967)
  • SplitRule APIs verbessern:
    1. Nehmen Sie für SplitRule Mindestabmessungen in DP anstelle von Pixeln an.
    2. Refaktorieren Sie den SplitRule Builder so, dass Mindestabmessungen als optional angegeben werden. (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 wurde veröffentlicht. Version 1.1.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Stellen Sie eine Methode bereit, um festzustellen, ob ein ActivityStack für ActivityEmbedding leer ist.
  • Experimentelle API-Tags wurden aus ActivityEmbedding APIs entfernt.
  • Blenden Sie den ActivityRule-Konstruktor aus, da Builder die bevorzugte Methode zum Erstellen ist.
  • Fügen Sie eine experimentelle Methode hinzu, um WindowInsets für WindowMetrics abzurufen.
  • Aktualisiere SplitPlaceholderFinishBehavior, damit der Platzhalter nicht fertiggestellt wird. Das Fertigstellen des Platzhalters hat zu einem verwirrenden Verhalten geführt.

API-Änderungen

  • Mach isEmpty öffentlich, um den Spaß isEmpty zu ersetzen.
  • Benennen Sie die Aktivitäten des Parameters ActivityStack in activitiesInProcess um. (Ia5055)
  • Entferne ActivityFilter#matchesClassName und ActivityFilter#matchesClassNameOrWildCard, da sie verwirrend sind.
  • Fügen Sie ActivityFilter#componentName und ActivityFilter#intentAction hinzu, damit der Aufrufer zwischen verschiedenen Filtern unterscheiden kann (I41f22)
  • Entfernen Sie die @Deprecated-APIs aus der experimentellen API (I216b3)
  • @ExperimentalWindowApi für APIs zum Einbetten von Aktivitäten (I69ebe) entfernen
  • Blenden Sie den ActivityRule-Konstruktor aus und verwenden Sie stattdessen den Builder. (If4eb6)
  • Fügen Sie APIs hinzu, um zu prüfen, ob eine Aktivität Teil des ActivityFilter ist. (Ia43cf)
  • API-Dateien aktualisieren, um Änderungen an den Klassen WindowMetrics und WindowMetricsCalculatorCompat widerzuspiegeln (I667fe)
  • ActivityEmbedding-Property-Javadoc und Klassennamen aktualisieren (Ia1386)
  • Hinzufügen von Attribut-Tag-Namen für ActivityEmbedding zur Verwendung in AndroidManifest.xml (Id1ad4)
  • Neue API SplitPlaceholderFinishBehavior und SplitPlaceholderRule.finishPrimaryWithPlaceholder wurden hinzugefügt. Diese ersetzen die vorhandenen SplitPlaceholderRule.finishPrimaryWithSecondary, die festlegen, wann Platzhalteraktivitäten abgeschlossen werden und wie sich verknüpfte Aktivitäten bei der Einbettung von Aktivitäten verhalten sollen. (I64647)

Fehlerkorrekturen

  • Stellt die WindowAreaController und APIs zum Aktivieren des RearDisplay-Modus vor, um das aktuelle Fenster auf den Bildschirm zu verschieben, der mit der Rückkamera ausgerichtet ist. (I388ab)

Version 1.1.0-alpha03

27. Juli 2022

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

Neue Funktionen

  • Aktualisieren Sie die Standardwerte für Einbettungsregeln.

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 wurde veröffentlicht. Version 1.1.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Geben Sie die Adapterbibliotheken frei, damit sie Java und RxJava unterstützen.

Version 1.1.0-alpha01

11. Mai 2022

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

Neue Funktionen

  • Releaseadapter zur Unterstützung von Java und RxJava

Version 1.1.0-alpha01

20. April 2022

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

Neue Funktionen

  • Es wurde ein Fehler behoben, bei dem im Hintergrund einer App keine Fold-Funktionen mehr ausgegeben werden.
  • Erweitern Sie die experimentelle ActivityEmbedding API.

API-Änderungen

  • Eine öffentliche API, um zu prüfen, ob eine Aktivität eingebettet wird. (I39eb7)

Fehlerkorrekturen

  • APIs hinzufügen, die das Endverhalten für Container in Aktivitätsaufteilungen anpassen (I1a1e4)
  • Eine neue Konfigurationsoption für Regeln zur Aktivitätsaufteilung wurde hinzugefügt. (Iec6af)

Version 1.0

Version 1.0.0

26. Januar 2022

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

Hauptfunktionen von Version 1.0.0

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

Version 1.0.0-rc01

15. Dezember 2021

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

Neue Funktionen

  • Faltbare Smartphones können bis zum WindowInfoTracker unterstützt werden.
  • Fügen Sie Methoden hinzu, um den aktuellen und maximalen WindowMetrics zu berechnen.
  • Unterstützende Test-APIs hinzufügen

Version 1.0.0-beta04

17. November 2021

androidx.window:window-*:1.0.0-beta04 wurde 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)
  • add isEmpty im ActivityStack (I5a4e6)
  • Benennen Sie WindowInfoRepository in WindowInfoTracker um.
    • Aktualisieren Sie die java/rxjava/testing-Abhängigkeiten entsprechend. (I0da63)
  • Fügen Sie eine Testregel für einen einfachen WindowMetricsCalculator hinzu. Ibacdb

Version 1.0.0-beta03

27. Oktober 2021

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

Neue Funktionen

  • Experimentelle APIs zum Einbetten von Aktivitäten hinzufügen Diese anfängliche Layoutversion ermöglicht die Anzeige von zwei Aktivitäten nebeneinander.

API-Änderungen

  • Die currentWindowMetrics-API wurde entfernt, da wir sie nicht genau bereitstellen können. Verwenden Sie stattdessen WindowMetricsCalculator (Icda5f).
  • Die Extensions API wurde aktualisiert. (Ica92b)
  • Es wurde eine Benutzeroberfläche für eine neue Funktion hinzugefügt, mit der Aktivitäten einzubetten und im übergeordneten Element Aufgabenfensters. (I5711d)
  • Die Konstruktoren für WindowMetrics und WindowLayoutInfo sind 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 wurde veröffentlicht. Version 1.0.0-beta02 enthält diese Commits.

Neue Funktionen

  • Fügen Sie eine experimentelle Annotation hinzu, um experimentelle APIs mit Annotationen zu versehen. (I9f1b6)
  • Füge eine Testmethode hinzu, um eine „FoldingFeature“ zum Testen zu erstellen, die eine Rechteck-Funktion akzeptiert. Auf diese Weise können Sie ganz einfach Tests durchführen, wenn Sie Robolectric verwenden – im Gegensatz zu einer tatsächlichen Aktivität. (Id1cca)

Version 1.0.0-beta01

18. August 2021

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

Neue Funktionen

  • Alte Konstanten wurden entfernt und FoldingFeature in eine Benutzeroberfläche umgewandelt.

API-Änderungen

  • Alte Konstanten entfernen und FoldFeature zu einer Oberfläche machen (I9a2d5)

Fehlerkorrekturen

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

Version 1.0.0-alpha10

4. August 2021

androidx.window:window-*:1.0.0-alpha10 wurde 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 aktuelle Fenstermesswerte in WindowInfoRepository in einen Ablauf, da sich der Wert im Laufe der Zeit ändert.
  • WindowInfoRepoJavaAdapter in WindowInfoRepoCallbackAdapter umbenennen
  • Hilfsmethode zum Erstellen von FoldingFeature-Testobjekten hinzufügen
  • Aktualisieren Sie Pakete, um Klassen anhand der von ihnen unterstützten Funktion zu gruppieren.

API-Änderungen

  • ActivityExt in ActivityExtensions umbenennen Von Repository zu Repository wechseln. (I61a16)
  • Pakete für Klassen aktualisieren. (I23ae2)
  • WindowMetrics aus WindowInfoRepo entfernen (I24663)
  • WindowManager entfernen und WindowInfoRepo verwenden
    • WindowBackend intern machen. (I06d9a)
  • Fenstermesswerte in Flow konvertieren.
    • Java-Adapter in WindowInfoRepoCallbackAdapter umbenennen
    • Entferne "callbackFlow", damit keine experimentellen APIs mehr verwendet werden. (Ia4d15)
  • Hinzufügen einer Hilfsmethode zum Erstellen von Test-Displayfunktionen.
    • Von occlusionMode zu occlusionType ändern (If4cff)

Fehlerkorrekturen

  • Proguard-Fehler behoben, bei dem die Kernbibliothek entfernt wurde.
  • Fehler behoben, bei dem WindowLayoutInfo nicht an zusätzliche Abonnenten ausgeliefert wurde.
  • Fehler behoben, bei dem Konfigurationsänderungen keine Updates für Folding-Features auslösten.

Version 1.0.0-alpha09

30. Juni 2021

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

Neue Funktionen

  • Ändern von ganzzahligen Konstanten in unbegrenzte Enums.
  • Füge ein Test-Dienstprogramm hinzu, um Test-Faltfunktionen zu erstellen.

API-Änderungen

  • Hinzufügen einer Hilfsmethode zum Erstellen von Test-Displayfunktionen. (I3cf54)
    • Von occlusionMode in occlusionType ändern.

Fehlerkorrekturen

  • Gibt einen Anfangswert aus, wenn mehrere Nutzer der Datenstreams hinzugefügt werden.

Version 1.0.0-alpha08

16. Juni 2021

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

Neue Funktionen

  • Veröffentlichung eines Testartefakts, um das Testen bei 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 wurde veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.

Neue Funktionen

  • Migrieren Sie die Hauptfensterbibliothek zu Kotlin. Verwendet Koroutinen und Aussetzungsfunktionen, um in Zukunft asynchrone Daten bereitzustellen.
  • Fügen Sie WindowInfoRepo als Hauptinteraktionspunkt zum Abrufen von WindowMetrics und dem Stream von WindowLayoutInfo hinzu.
  • Neues window-java-Artefakt zur Bereitstellung von Java-freundlichen APIs, um Callbacks zu registrieren und ihre Registrierung aufzuheben.
  • Neue window-rxjava2- und window-rxjava3-Artefakte, um angepasste RxJava-APIs verfügbar zu machen.

API-Änderungen

  • Fügen Sie WindowServices hinzu, um Abhängigkeiten einheitlich bereitzustellen.
    • Fügen Sie eine koroutinebasierte API hinzu, um Informationen zum Fensterlayout zu verarbeiten. (Iab70f)
  • Migrieren Sie die Hauptbibliothek des Fenstermanagers zu Kotlin. (Icca34)

Fehlerkorrekturen

  • Fügen Sie eine neue Datenklasse hinzu, um Featuregrenzen darzustellen. (I6dcd1)

Version 1.0.0-alpha06

5. Mai 2021

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

Neue Funktionen

  • Wir haben mit der Migration zu Kotlin begonnen und werden im nächsten Release abgeschlossen.
  • DeviceState wurde aus der öffentlichen API entfernt. Verwenden Sie stattdessen „FoldingFeature“.
  • Wir haben STATE_FLIPPED aus dem Status „FoldingFeature“ entfernt, da diese Funktion derzeit für keinen Anwendungsfall unterstützt wird.
  • Wir haben auch andere eingestellte APIs entfernt.

API-Änderungen

  • Kotlin als Abhängigkeit hinzufügen
    • Migrieren Sie die Kernbibliothek zu Kotlin. (Idd995)
  • Builder für DisplayFeature wurde entfernt. (I61fa4)
  • DeviceState wurde aus der öffentlichen API entfernt. Verwende stattdessen FoldingFeature. (ID6079)
  • Gerätestatus-Callback aus Erweiterungen entfernen. (I5ea83)
  • STATE_FLIPPED“ aus „FoldingFeature“ entfernen. (I9c4e1)
  • Entfernen Sie eingestellte Registrierungsmethoden. (Ib381b)

Version 1.0.0-alpha05

24. März 2021

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

Neue Funktionen

Wir haben „FoldingFeature“ praktische Methoden hinzugefügt, damit Apps erkennen können, ob die Funktion sich öffnet oder verdeckt und die Ausrichtung des Scharniers bestimmt. Wir blenden auch den Scharniertyp aus,

Die synchronen Lesemethoden werden aus WindowManager entfernt. Synchrone Lesemethoden sind fehleranfällig, da eine implizite Race-Bedingung vorhanden ist. Registrieren Sie Listener und Rückrufe, um Updates zu WindowLayoutInfo zu erhalten.

API-Änderungen

  • Praktische Methoden für die Arbeit mit „FoldingFeatures“ hinzufügen (Ie733f)
  • Entfernt synchrone Lesemethoden aus WindowManager (I96fd4)

Version 1.0.0-alpha04

10. März 2021

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

Neue Funktionen

  • Behebt einen Fehler, bei dem keine WindowLayoutInfo ausgegeben wird, wenn keine OEM-Implementierung vorhanden ist. Jetzt geben wir ein leeres WIndowLayoutInfo-Element aus.
  • Es wurde ein Fehler behoben, bei dem der Status nicht korrekt aktualisiert wurde, wenn sich der Zustand des Scharniers änderte, während die App im Hintergrund ausgeführt wurde. Jetzt sollte der Zustand einheitlich sein.
  • Aktualisieren Sie unsere Proguard-Dateien, um Warnungen aufgrund von Laufzeitabhängigkeiten zu ignorieren.

Fehlerkorrekturen

  • Geben Sie 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 wurde veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Gibt einen leeren Wert für WindowLayoutInfo aus, wenn die OEM-Implementierung leer ist. Dies sollte es einfacher machen, die Mediathek auf weiteren Geräten zu verwenden. Da die APIs asynchron sind, wird weiterhin empfohlen, dass Anwendungen Abwehrcode schreiben und nach einer Zeitüberschreitung einen Standardwert ausgeben. Wir übernehmen keine Garantien für OEM-Implementierungen und der ursprüngliche Wert kann sich verzögern.

Fehlerkorrekturen

  • Geben Sie 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 wurde 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. Einige nennenswerte Beispiele sind das Entfernen der synchronen Lesevorgänge aus WindowManager und die Einstellung von DeviceState. Synchrone Lesevorgänge können zu Race-Bedingungen führen und haben eine falsche Benutzeroberfläche.

  • Wir haben DisplayFeature in eine Benutzeroberfläche umgewandelt, die in Zukunft auch von anderen Funktionen implementiert wird. Unsere erste Funktion ist „FoldingFeature“, also die Darstellung einer Displayfaltung oder eines Scharniers. Hier ist auch der Status des Scharniers enthalten, 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 und Systemeinblendungen. Wir haben die API in dieser Version zurückportiert, damit Entwickler WindowMetrics nutzen und weiterhin ältere Android-Versionen unterstützen können. WindowMetrics können über die WindowManager#getCurrentWindowMetrics() und die WindowManager#getMaximumWindowMetrics() API abgerufen werden.

API-Änderungen

  • APIs einstellen, die in der nächsten Alphaversion entfernt werden (Ib7cc4)
  • ExtensionInterface wird so aktualisiert, dass explizite Aktivitäten akzeptiert werden Referenzen. (I07ded)
  • Einführung in die WindowMetrics API. (I3ccee)
  • Synchrone Lesemethoden aus WindowManager entfernen (I69983)
  • ExtensionWindowBackend-Paket schützen. (ID 208)

Fehlerkorrekturen

  • Aktualisieren Sie die ExtensionInterface APIs, um visuelle Kontexte zu akzeptieren. (I8e827)

Externer Beitrag

  • Zusammenführen von DeviceState und WindowLayoutInfo, damit es einfacher ist, auf Daten zugreifen können. (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 veröffentlicht werden. Version 1.0.0-alpha01 enthält diese Commits. Dies ist die erste Version der Fenstermanagerbibliothek.

Neue Funktionen

  • DisplayFeature: Diese neue API erkennt Störungen in der kontinuierlichen flachen Nutzung Bildschirmoberflächen wie Scharniere oder Falten
  • DeviceState: Diese neue API liefert den aktuellen Stand des Smartphones vom eine Liste definierter Sicherheitsstatus (z. B. CLOSED, OPENED, HALF_OPENED, usw.)