Fenstermanager

Mit der Jetpack WindowManager-Bibliothek können Anwendungsentwickler neue Geräteformfaktoren und Mehrfensterumgebungen unterstützen. Die Bibliothek bietet eine gemeinsame API-Oberfläche für API-Versionen 14 und höher. Die ursprüngliche Version ist auf faltbare Geräte ausgerichtet. Zukünftige Versionen werden jedoch auf weitere Anzeigetypen und Fensterfunktionen ausgeweitet.
Letzte Aktualisierung Stabile Version Releasekandidat Beta-Ausgabe Alpharelease
3. April 2024 1.2.0 - 1.3.0-beta01 -

Abhängigkeiten deklarieren

Zum Hinzufügen einer Abhängigkeit von WindowManager 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 Anwendung oder Ihr Modul die Abhängigkeiten für die benötigten Artefakte hinzu:

Groovig

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

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

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

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

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

Kotlin

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

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

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

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

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

Feedback

Dein Feedback hilft uns, Jetpack zu verbessern. Lassen Sie uns wissen, wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie eine neue erstellen. Durch Klicken auf die Stern-Schaltfläche können Sie zu einem vorhandenen Problem abstimmen.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.

Version 1.3

Version 1.3.0-beta01

3. April 2024

androidx.window:window-*:1.3.0-beta01 wird freigegeben. 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 freigegeben. Version 1.3.0-alpha03 enthält diese Commits.

API-Änderungen

  • Sie können WindowSizeClassUtil in fokussiertere Methoden aufteilen. (Ie9292)
  • WindowSizeClass#compute wiederherstellen (I21355, b/324293374)

Fehlerkorrekturen

  • Es wurde ein Absturz 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 freigegeben. Version 1.3.0-alpha02 enthält diese Commits.

Neue Funktionen

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

Fehlerkorrekturen

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

Version 1.3.0-alpha01

15. November 2023

androidx.window:window-*:1.3.0-alpha01 wird freigegeben. Version 1.3.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Experimentelle Fenster-APIs für den Zugriff auf den rückwärtigen Bildschirm freigeben
  • Die Test-APIs zum Erstellen einer FoldingFeature sind jetzt stabil.
  • Test-APIs zum Einrichten falscher ActivityEmbedding-Werte sind jetzt stabil.
  • WindowLayoutInfoPublisherRule meldet jetzt die Überschreibung, wenn ein Wert aus UiContext abgerufen wird.
  • WindowInfoTracker“ meldet Funktionsdaten an UiContext Parameter.
  • Machen Sie die Erweiterungsversion auf dem Gerät sichtbar.
  • WindowProperties-Konstanten für Überschreibungen pro App:
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE: Informiert das System darüber, dass die App das Überschreiben der für den Nutzer sichtbaren Seitenverhältnis-Kompatibilität deaktiviert hat.
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE: Informiert das System darüber, dass die Vollbildoption in den Einstellungen zum Überschreiben der Kompatibilität des Seitenverhältnisses des Nutzers deaktiviert wurde.

Version 1.2

Version 1.2.0

15. November 2023

androidx.window:window-*:1.2.0 wird freigegeben. 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ückwärtigen Bildschirm freigeben
  • Die Test-APIs zum Erstellen einer FoldingFeature sind jetzt stabil.
  • Test-APIs zum Einrichten falscher ActivityEmbedding-Werte sind jetzt stabil.
  • WindowLayoutInfoPublisherRule meldet jetzt die Überschreibung, wenn ein Wert aus UiContext abgerufen wird.
  • WindowInfoTracker“ meldet Funktionsdaten an UiContext Parameter.
  • Machen Sie die Erweiterungsversion auf dem Gerät sichtbar.

Version 1.2.0-rc01

1. November 2023

androidx.window:window-*:1.2.0-rc01 wird freigegeben. Version 1.2.0-rc01 enthält diese Commits.

Neue Funktionen

  • Experimentelle Fenster-APIs für den Zugriff auf den rückwärtigen Bildschirm freigeben
  • Die Test-APIs zum Erstellen einer FoldingFeature sind jetzt stabil.
  • Test-APIs zum Einrichten falscher ActivityEmbedding-Werte sind jetzt stabil.
  • WindowLayoutInfoPublisherRule meldet jetzt die Überschreibung, wenn ein Wert aus UiContext abgerufen wird.
  • WindowInfoTracker“ meldet Funktionsdaten an UiContext Parameter.
  • Machen Sie die Erweiterungsversion auf dem Gerät sichtbar.

Version 1.2.0-beta04

18. Oktober 2023

androidx.window:window-*:1.2.0-beta04 wird freigegeben. 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 freigegeben. Version 1.2.0-beta03 enthält diese Commits.

Neue Funktionen

  • Fügen Sie RequiresApi-Prüfungen für APIs hinzu, die eine bestimmte Version der Erweiterungen benötigen, damit sie ordnungsgemäß funktionieren.
  • Fügen Sie eine API hinzu, um die Version der Erweiterungen auf dem Gerät freizugeben.

API-Änderungen

  • Annotieren Sie die erforderliche Version der Fenster-SDK-Erweiterung in öffentlichen APIs.
    • Entfernen Sie isXXXSupported in der Komponente „Aktivitätseinbettung“. (Ie3dae).
  • Leite WindowSdkExtensions ein, um die Version der Erweiterung auf dem Gerät zu melden.
    • Leite RequiresWindowSdkExtension ein, um die erforderliche mindestens erforderliche Erweiterungsversion annotieren zu können. (I05fd4)
  • Sorgt dafür, dass WindowAreaInfo#getCapability keine Nullwerte zulässt. (I17048)

Version 1.2.0-beta01

26. Juli 2023

androidx.window:window-*:1.2.0-beta01 wird freigegeben. Version 1.2.0-beta01 enthält diese Commits.

Neue Funktionen

  • Experimentelle Fenster-APIs für den Zugriff auf den rückwärtigen Bildschirm freigeben
  • Die Test-APIs zum Erstellen einer FoldingFeature sind jetzt stabil.
  • Test-APIs zum Einrichten falscher ActivityEmbedding-Werte sind jetzt stabil.
  • WindowLayoutInfoPublisherRule meldet jetzt die Überschreibung, wenn ein Wert aus UiContext abgerufen wird.
  • WindowInfoTracker“ meldet Funktionsdaten an UiContext Parameter.

API-Änderungen

  • Kennzeichnet WindowArea APIs als experimentell, damit API-Änderungen für eine stabile Version in 1.3 (I857f5) fortgesetzt werden können
  • Aktualisierte API-Dateien, um die Kompatibilitätsunterdrückung zu erklären (I8e87a, b/287516207)

Version 1.2.0-alpha03

21. Juni 2023

androidx.window:window-*:1.2.0-alpha03 wird freigegeben. Version 1.2.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Verworfene APIs werden von der API-Oberfläche entfernt.
  • APIs hinzufügen, um die gleichzeitige Anzeige zu unterstützen.
  • Fügen Sie eine Eigenschaft hinzu, um die erzwungene Überschreibung der Größenanpassung zu deaktivieren.
  • Fügen Sie eine Property hinzu, um die Überschreibung des minimalen Seitenverhältnisses zu deaktivieren.
  • Stabilisieren Sie ActivityEmbeddingRule, um Einheitentests rund um das Einbetten von Aktivitäten zu unterstützen.

API-Änderungen

  • Veraltete APIs entfernen (I18d39)
  • Zusätzliche Unterstützung für gleichzeitige Bildschirme. (Ifcbb0)

Fehlerkorrekturen

  • Opt-out-kompatible Eigenschaft zum Überschreiben der Größenanpassung hinzufügen (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)
  • Kompatibilitätseigenschaft zum Überschreiben des minimalen Seitenverhältnisses zum Überschreiben hinzufügen (I66390)
  • Entfernt die verworfenen WindowArea APIs (Ieb67c)
  • Benennen Sie die Schleifeneigenschaft bei Ausrichtungsanfragen in PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED um. (Ie2fbd)
  • Aktualisiert die Namen der Sitzungskonstanten für Fensterbereiche (I83675)
  • Hinzufügen einer kompatiblen Opt-out-Eigenschaft, die bei Erkennung eine Schleife der Ausrichtungsanfrage ignoriert (I0a7a2)
  • Fügen Sie WindowAreaComponent#STATUS_ACTIVE hinzu, um anzugeben, dass die Funktion bereits aktiv ist. (I62bc3)
  • RearDisplayPresentationMode APIs hinzufügen (I0401c)
  • Hintergrundfarbe-API für stabile Version entfernen. (I34c3e)
  • Window Area APIs ausblenden. (I39de0)
  • Fügen Sie Methoden zum Überschreiben von SplitInfo in SplitController hinzu. Füge Testmethoden hinzu, um einen Double-Wert für SplitInfo und ActivityStack 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 Konstante SplitType SPLIT_TYPE_EQUAL, SPLIT_TYPE_EXPAND und SPLIT_TYPE_HINGE
    • Entfernen Sie die Funktion, um den Fallback-Typ der Aufteilung des Scharniers festzulegen. Wenn der Typ der Aufteilung des Scharniers 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 verwerfen
    • add/removeSplitCallback in „SplitControllerCallbackAdapter“ verschieben
    • Flow-Support hinzufügen, um die SplitInfo-Liste zu erhalten (I7f1b6)
  • Fügen Sie eine Testregel für ActivityEmbeddingController (I42e9b) hinzu
  • ActivityOptionsCompat wird in ActivityEmbeddingOptions (I89301) umbenannt
  • 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 DEFAULT-Wert besser darzustellen. Es wurde klargestellt, dass nicht deckende Animationshintergrundfarbe nicht unterstützt wird. Daher werden nicht deckende Farben als Standard behandelt und es wird die aktuelle Hintergrundfarbe des Designfensters 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 zum Testen zu erstellen. (I8e779)
  • Fügen Sie eine Methode zur Erstellung gefälschter SplitAttributesCalculatorParams hinzu, damit Entwickler ihre benutzerdefinierte SplitAttributesCalculator (Id4a6e) bestätigen 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 wird freigegeben. Version 1.2.0-alpha02 enthält diese Commits.

Neue Funktionen

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

API-Änderungen

  • Konstante für eine nicht angegebene zentrale Faltfunktion hinzufügen. (I7530c)

Fehlerkorrekturen

  • Aktualisieren Sie WindowLayoutInfoPublishRule, um Überschreibungen auf Context-basierten WindowLayoutInfo zu unterstützen. (I2037a)

Version 1.2.0-alpha01

24. Mai 2023

androidx.window:window-*:1.2.0-alpha01 wird freigegeben. Version 1.2.0-alpha01 enthält diese Commits.

Neue Funktionen

Test-APIs rund um Activity Embedding und WindowLayoutInfoTracker stabilisieren ActivityEmbeddingRule wurde auf die stabile Version hochgestuft. WindowMetricsCalculatorRule wurde auf die stabile Version hochgestuft. Dienstprogrammfunktionen zum Erstellen einer FoldingFeature für Testzwecke wurden auf die stabile Version hochgestuft.

API-Änderungen

  • Stabilisieren Sie ActivityEmbeddingRule, um Einheitentests rund um das Einbetten von Aktivitäten zu unterstützen. (I8d6b6)
  • WindowMetrisCalculatorTestRule ist stabil und lässt Stub-Messwerte für JVM-Tests zu. Für genaue Ergebnisse empfehlen wir die Verwendung eines Emulators.
  • Stabilisieren Sie Test-APIs für WindowLayoutInfo, um JVM-Tests zu unterstützen. (Ie036e)
  • Füge IntRange hinzu, um die Werte der Faltfunktionen zu testen. (I69f7d)

Version 1.1

Version 1.1.0

7. Juni 2023

androidx.window:window-*:1.1.0 wird freigegeben. Version 1.1.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.0.0

Aktivitätseinbettung

  • PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED wurde im App-Manifest als boolesche Eigenschaft des <application>-Tags hinzugefügt.
  • isSplitSupported wurde verworfen und durch splitSupportStatus ersetzt, um ausführlichere Informationen dazu zu liefern, warum die Aufteilungsfunktion nicht verfügbar ist.
  • Die verschachtelte Klasse SplitController.SplitSupportStatus wurde hinzugefügt, um Statuskonstanten für die Eigenschaft splitSupportStatus bereitzustellen.
  • SplitController wurde auf mehrere Module umgearbeitet:
    • Modul ActivityEmbeddingController für Activity- oder ActivityStack-verwandte APIs.
    • isActivityEmbedded wurde von SplitController nach ActivityEmbeddingController verschoben.
    • Modul RuleController für EmbeddingRule verwandte Vorgänge:
    • SplitController APIs entfernt:
    • clearRegisteredRules()
    • getSplitRules()
    • initialize()
    • registerRule()
    • unregisterRule()
    • RuleController APIs hinzugefügt:
    • addRule(): Damit wird eine Regel hinzugefügt oder eine Regel mit demselben Tag aktualisiert.
    • removeRule(): Entfernt eine Regel aus der Sammlung registrierter Regeln.
    • setRules(): Erstellt eine Sammlung von Regeln.
    • clearRules(): Entfernt alle registrierten Regeln.
    • parseRules(): Parst Regeln aus XML-Regeldefinitionen.
  • Alle Module erfordern einen Kontext, der durch die Methode #getInstance() initialisiert wird, darunter:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Die Klasse EmbeddingAspectRatio wurde hinzugefügt, um enum-ähnliche Verhaltenskonstanten in Bezug auf das Seitenverhältnis der Anzeige zu definieren.
  • Die Klasse SplitAttributes wurde hinzugefügt, um das geteilte Layout zu definieren.
  • SplitController wurden Rechnerfunktionen für SplitAttributes hinzugefügt, um aufgeteilte Layouts anzupassen:
    • 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 wurde hinzugefügt: Definiert das Standardlayout für die Aufteilung einer Aufteilung und ersetzt splitRatio und layoutDirection.
    • Übersetzung der XML-Eigenschaften splitRatio und splitLayoutDirection zu defaultSplitAttributes hinzugefügt.
    • Die Definitionen der Mindestabmessungen wurden geändert, sodass nun dichteunabhängige Pixel (dp) anstelle von Pixeln verwendet werden.
    • minHeightDp wurde mit dem Standardwert 600 dp hinzugefügt.
    • minWidth wurde zu minWidthDp geändert. Der Standardwert ist 600 dp.
    • minSmallestWidth wurde zu minSmallestWidthDp geändert. Der Standardwert ist 600 dp.
    • maxAspectRatioInHorizontal wurde mit dem Standardwert ALWAYS_ALLOW hinzugefügt.
    • maxAspectRatioInPortrait wurde mit dem Standardwert 1.4 hinzugefügt.
    • Die verschachtelte Klasse FinishBehavior wurde definiert, um Konstanten für das Abschlussverhalten zu ersetzen.
    • Die Eigenschaftsä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 anzugeben.

WindowLayout

  • Zusätzliche Unterstützung für experimentellen Kontext in der Benutzeroberfläche ohne Aktivität zu WindowInfoTracker.
  • WindowMetricsCalculator wurde experimenteller UI-Kontext ohne Aktivität hinzugefügt.

Migrationsschritte

  • Damit das Einbetten von Aktivitäten aktiviert ist, um Aktivitäten in Aufteilungen anzuzeigen, müssen Apps dem <application>-Manifest-Tag die PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED-Eigenschaft 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 App im Voraus optimieren.
  • SplitInfo-Verhältnis
    • Prüfen Sie, ob der aktuelle Split 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() Änderungen am SplitController.getInstance(Context).
    • SplitController.initialize(Context, @ResId int) Änderungen am RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).
    • SplitController.getInstance().isActivityEmbedded(Activity) Änderungen am ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).
    • SplitController.getInstance().registerRule(rule) Änderungen am RuleController.getInstance(Context).addRule(rule).
    • SplitController.getInstance().unregisterRule(rule) Änderungen am RuleController.getInstance(Context).removeRule(rule).
    • SplitController.getInstance().clearRegisteredRules() Änderungen am RuleController.getInstance(Context).clearRules().
    • SplitController.getInstance().getSplitRules() Änderungen am 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 einfach minWith in Pixeln durch displayMetrics#density teilen.
  • Abschlussverhaltenskonstanten müssen zu FinishBehavior-enum-ähnlichen Klassenkonstanten migriert werden:
    • FINISH_NEVER Änderungen am FinishBehavior.NEVER.
    • FINISH_ALWAYS Änderungen am FinishBehavior.ALWAYS.
    • FINISH_ADJACENT Änderungen am FinishBehavior.ADJACENT.
  • Die Layoutrichtung muss zu SplitAttributes.LayoutDirection migriert werden:
    • ltr Änderungen am SplitAttributes.LayoutDirection.LEFT_TO_RIGHT.
    • rtl Änderungen am SplitAttributes.LayoutDirection.RIGHT_TO_LEFT.
    • locale Änderungen am SplitAttributes.LayoutDirection.LOCALE.
    • splitRatio muss zu SplitAttributes.SplitType.ratio(splitRatio) migriert werden.
  • SplitPairRule.Builder-Migrationen:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) Änderungen am kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection) und setSplitRatio(ratio) werden zu kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() ) geändert
    • setFinishPrimaryWithSecondary und setFinishSecondaryWithPrimary verwenden die FinishBehavior-enum-ähnlichen Konstanten. Weitere Informationen finden Sie unter „SplitRule-Migrationen“.
    • Verwende setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW), um Teilstrecken auf Geräten im Hochformat anzuzeigen.
  • SplitPlaceholder.Builder-Migrationen:
    • Hat nur die Parameter filters und placeholderIntent. Andere Eigenschaften 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() )
    • Verwende setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW), um Teilstrecken auf Geräten im Hochformat anzuzeigen.

Version 1.1.0-rc01

10. Mai 2023

androidx.window:window-*:1.1.0-rc01 wird freigegeben. Version 1.1.0-rc01 enthält diese Commits.

Neue Funktionen

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

Version 1.1.0-beta02

5. April 2023

androidx.window:window-*:1.1.0-beta02 wird freigegeben. Version 1.1.0-beta02 enthält diese Commits.

Neue Funktionen

  • Interne Korrekturen und Bereinigung.

Version 1.1.0-beta01

22. März 2023

androidx.window:window-*:1.1.0-beta01 wird freigegeben. Version 1.1.0-beta01 enthält diese Commits.

Aktivitätseinbettung

  • PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED wurde im App-Manifest als boolesche Eigenschaft des <application>-Tags hinzugefügt.
  • isSplitSupported wurde verworfen und durch splitSupportStatus ersetzt, um ausführlichere Informationen dazu zu liefern, warum die Aufteilungsfunktion nicht verfügbar ist.
  • Die verschachtelte Klasse SplitController.SplitSupportStatus wurde hinzugefügt, um Statuskonstanten für die Eigenschaft splitSupportStatus bereitzustellen.
  • SplitController wurde auf mehrere Module umgearbeitet:
    • Modul ActivityEmbeddingController für Activity- oder ActivityStack-verwandte APIs.
    • isActivityEmbedded wurde von SplitController nach ActivityEmbeddingController verschoben.
    • Modul RuleController für EmbeddingRule verwandte Vorgänge:
    • Entfernte SplitController APIs:
      • clearRegisteredRules()
      • getSplitRules()
      • initialize()
      • registerRule()
      • unregisterRule()
    • RuleController APIs hinzugefügt:
      • addRule(): Damit wird eine Regel hinzugefügt oder eine Regel mit demselben Tag aktualisiert.
      • removeRule(): Entfernt eine Regel aus der Sammlung registrierter Regeln.
      • setRules(): Erstellt eine Sammlung von Regeln.
      • clearRules(): Entfernt alle registrierten Regeln.
      • `parseRules() – parst Regeln aus XML-Regeldefinitionen.
  • Alle Module erfordern einen Kontext, der durch die Methode #getInstance() initialisiert wird, darunter:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Die Klasse EmbeddingAspectRatio wurde hinzugefügt, um enum-ähnliche Verhaltenskonstanten in Bezug auf das Seitenverhältnis der Anzeige zu definieren.
  • Die Klasse SplitAttributes wurde hinzugefügt, um das geteilte Layout zu definieren.
  • SplitController wurden Rechnerfunktionen für SplitAttributes hinzugefügt, um aufgeteilte Layouts anzupassen:
    • 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 wurde hinzugefügt: Definiert das Standardlayout für die Aufteilung einer Aufteilung und ersetzt splitRatio und layoutDirection.
    • Übersetzung der XML-Eigenschaften splitRatio und splitLayoutDirection zu defaultSplitAttributes hinzugefügt.
    • Die Definitionen der Mindestabmessungen wurden geändert, sodass nun dichteunabhängige Pixel (dp) anstelle von Pixeln verwendet werden.
    • minHeightDp wurde mit dem Standardwert 600 dp hinzugefügt.
    • minWidth wurde zu minWidthDp geändert. Der Standardwert ist 600 dp.
    • minSmallestWidth wurde zu minSmallestWidthDp geändert. Der Standardwert ist 600 dp.
    • maxAspectRatioInHorizontal wurde mit dem Standardwert ALWAYS_ALLOW hinzugefügt.
    • maxAspectRatioInPortrait wurde mit dem Standardwert 1.4 hinzugefügt.
    • Die verschachtelte Klasse FinishBehavior wurde definiert, um Konstanten für das Abschlussverhalten zu ersetzen.
    • Die Eigenschaftsä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 anzugeben.

WindowLayout

  • WindowInfoTracker wurde um Kontextunterstützung bei Nicht-Aktivitäts-UI ergänzt.
  • Der UI-Kontext ohne Aktivität wurde zu WindowMetricsCalculator hinzugefügt.

Migrationsschritte

  • Damit das Einbetten von Aktivitäten aktiviert ist, um Aktivitäten in Aufteilungen anzuzeigen, müssen Apps dem <application>-Manifest-Tag die PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED-Eigenschaft 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 App im Voraus optimieren.
  • SplitInfo-Verhältnis
    • Prüfen Sie, ob der aktuelle Split 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() Änderungen am SplitController.getInstance(Context).
    • SplitController.initialize(Context, @ResId int) Änderungen an RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).
    • SplitController.getInstance().isActivityEmbedded(Activity) Änderungen am ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).
    • SplitController.getInstance().registerRule(rule) Änderungen am RuleController.getInstance(Context).addRule(rule).
    • SplitController.getInstance().unregisterRule(rule) Änderungen am RuleController.getInstance(Context).removeRule(rule).
    • SplitController.getInstance().clearRegisteredRules() Änderungen am RuleController.getInstance(Context).clearRules().
    • SplitController.getInstance().getSplitRules() Änderungen am 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 einfach minWith in Pixeln durch displayMetrics#density teilen.
  • Abschlussverhaltenskonstanten müssen zu FinishBehavior-enum-ähnlichen Klassenkonstanten migriert werden:
    • FINISH_NEVER Änderungen am FinishBehavior.NEVER.
    • FINISH_ALWAYS Änderungen am FinishBehavior.ALWAYS.
    • FINISH_ADJACENT Änderungen am FinishBehavior.ADJACENT.
  • Die Layoutrichtung muss zu SplitAttributes.LayoutDirection migriert werden:
    • ltr Änderungen am SplitAttributes.LayoutDirection.LEFT_TO_RIGHT.
    • rtl Änderungen am SplitAttributes.LayoutDirection.RIGHT_TO_LEFT.
    • locale Änderungen am SplitAttributes.LayoutDirection.LOCALE.
    • splitRatio muss zu SplitAttributes.SplitType.ratio(splitRatio) migriert werden.
  • SplitPairRule.Builder-Migrationen:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) Änderungen am kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection) und setSplitRatio(ratio) werden zu kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() ) geändert
    • setFinishPrimaryWithSecondary und setFinishSecondaryWithPrimary verwenden die FinishBehavior-enum-ähnlichen Konstanten. Weitere Informationen finden Sie unter „SplitRule-Migrationen“.
    • Verwende setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW), um Teilstrecken auf Geräten im Hochformat anzuzeigen.
  • SplitPlaceholder.Builder-Migrationen:
    • Hat nur die Parameter filters und placeholderIntent. Andere Eigenschaften 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() )
    • Verwende setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW), um Teilstrecken auf Geräten im Hochformat anzuzeigen.

Version 1.1.0-alpha06

22. Februar 2023

androidx.window:window-*:1.1.0-alpha06 wird freigegeben. Version 1.1.0-alpha06 enthält diese Commits.

Neue Funktionen

  • Experimentelle Version zum Abrufen des WindowLayoutInfo aus einem UI-Kontext verfügbar machen.

API-Änderungen

  • Fügen Sie splitSupportStatus hinzu, um anzugeben, ob das Einbetten von Aktivitäten verfügbar ist. (I10024)
  • UI-Kontext-WindowLayoutInfo-API als experimentell festlegen. (I58ee0)
  • Einführung von WindowAreaController und APIs zum Aktivieren des RearDisplay-Modus, um das aktuelle Fenster auf den Bildschirm zu verschieben, der mit der Rückkamera ausgerichtet ist. (Iffcbf)
  • Standardhintergrundfarbe ändern (I1ac1b)
  • Fügen Sie SplitAttributes-Parameter hinzu. (I18bdd)
  • Fügen Sie APIs für SplitRule, SplitAttributes und SplitAttributesCalculator hinzu. (I92d23)
  • Verbessern Sie die APIs um maxAspectRatio:
    1. Ersetzen Sie alwaysAllow() und alwaysDisallow() durch ALWAYS_ALLOW und ALWAYS_DISALLOW.
    2. API-Dokumentation von @see mit der eigenständigen 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 dauert jetzt maxAspectRatioInPortrait/Landscape. Die Aufteilung von Aktivitäten ist nur zulässig, wenn das Seitenverhältnis der übergeordneten Grenzen kleiner oder gleich dem angeforderten maxAspectRatio ist. (Ia5990)
  • RuleController#parseRules in statisch ändern (I785df)
  • APIs für ActivityEmbedding verbessern
    1. API-Benennung anpassen – für mehrere Instanzen „Hinzufügen/Entfernen“ verwenden:
    2. registerRule Änderungen am addRule
    3. unregisterRule Änderungen am removeRule
    4. Ersetzen Sie getSplitRules durch getRules, da ActivityRule keine Aufteilungsregel ist
    5. Fügen Sie RuleController#setRules hinzu, um eine Reihe von Regeln festzulegen
    6. Extrahieren Sie regelbezogene APIs von SplitController zu Singleton RuleController. Das sind die Optionen:
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. Extrahiert #isActivityEmbedded von SplitController in Singleton ActivityEmbeddingController. Das sind die Optionen:
    14. isActivityEmbedded
    15. SplitController#initialize entfernen. Verwende 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. Statische Regeln werden nicht mehr durch Laufzeitregeln unterschieden. Allerdings werden #clearRules-Ergebnisse aufgerufen, um alle Regeln zu löschen, unabhängig davon, ob sie mit statischen XML-Regeldefinitionen oder zur Laufzeit registriert sind. Um das bisherige Verhalten von SplitController#clearRegisteredRules zu erhalten, rufen Sie RuleController#parseRules mit der XML-Ressourcen-ID auf und rufen Sie 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)
  • Verbessern Sie die SplitRule APIs:
    1. Verwenden Sie für SplitRule die Mindestgröße in DP statt Pixel.
    2. Refaktorieren Sie den SplitRule-Builder so, dass Mindestdimensionen als optional festgelegt werden. (I95f17)
  • Übergeben Sie einen Kontext, um SplitController (I42549) zu initialisieren
  • 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 freigegeben. Version 1.1.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Stelle eine Methode zur Verfügung, um festzustellen, ob ActivityStack für ActivityEmbedding leer ist.
  • Experimentelle API-Tags wurden aus ActivityEmbedding APIs entfernt.
  • Blenden Sie den ActivityRule-Konstruktor aus, da Builder die bevorzugte Konstruktionsmethode ist.
  • Fügen Sie eine experimentelle Methode hinzu, um das WindowInsets auf WindowMetrics abzurufen.
  • Aktualisieren Sie SplitPlaceholderFinishBehavior, damit der Platzhalter nicht fertig gestellt wird. Das Fertigstellen des Platzhalters hat zu einem verwirrenden Verhalten geführt.

API-Änderungen

  • Veröffentliche den Wert isEmpty, um den lustigen isEmpty zu ersetzen.
  • Benennen Sie Aktivitäten des ActivityStack-Parameters 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 Aufrufer zwischen verschiedenen Filtern unterscheiden kann (I41f22).
  • @Deprecated APIs aus der experimentellen API entfernen (I216b3)
  • @ExperimentalWindowApi für Activity Embedding APIs (I69ebe) entfernen
  • Blenden Sie den ActivityRule-Konstruktor aus. Verwenden Sie stattdessen den Builder. (If4eb6)
  • Füge 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 zu berücksichtigen (I667fe)
  • ActivityEmbedding-Property-Javadoc und Klassennamen aktualisieren (Ia1386)
  • ActivityEmbedding-Property-Tag-Namen zur Verwendung in der Datei „AndroidManifest.xml“ (Id1ad4) hinzufügen
  • Die neuen APIs SplitPlaceholderFinishBehavior und SplitPlaceholderRule.finishPrimaryWithPlaceholder wurden hinzugefügt. Dies ersetzt die vorhandene SplitPlaceholderRule.finishPrimaryWithSecondary. Diese definiert, wann die Platzhalteraktivitäten abgeschlossen sind und wie sich verknüpfte Aktivitäten in der Aktivitätseinbettung verhalten sollen. (I64647)

Fehlerkorrekturen

  • Einführung von WindowAreaController und APIs zum Aktivieren des RearDisplay-Modus, 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 wird freigegeben. 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 Eigenschaften von Einbettungsregeln. (Ic4d35)

Version 1.1.0-alpha02

11. Mai 2022

androidx.window:window-*:1.1.0-alpha02 wird freigegeben. Version 1.1.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Geben Sie die Adapterbibliotheken frei, um Java und RxJava zu unterstützen.

Version 1.1.0-alpha01

11. Mai 2022

androidx.window:window-*:1.1.0-alpha01 wird freigegeben. 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 wird freigegeben. Version 1.1.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Es wurde ein Fehler behoben, bei dem eine App im Hintergrund keine Foldfunktionen mehr ausgibt.
  • Erweitern Sie die experimentelle ActivityEmbedding API.

API-Änderungen

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

Fehlerkorrekturen

  • APIs hinzufügen, die das Abschlussverhalten für Container in Aktivitätsaufteilungen anpassen (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 freigegeben. 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 die aktuellen WindowMetrics zu berechnen.

Version 1.0.0-rc01

15. Dezember 2021

androidx.window:window-*:1.0.0-rc01 wird freigegeben. 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 hinzu, um den aktuellen und den 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 wird freigegeben. 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üge eine einfache TestRule für WindowMetricsCalculator hinzu, um Entwickler bei der Verwendung von Robolectric zu unterstützen.

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, damit sie übereinstimmen. (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 wird freigegeben. Version 1.0.0-beta03 enthält diese Commits.

Neue Funktionen

  • Fügen Sie experimentelle APIs zum Einbetten von Aktivitäten hinzu. Mit dieser anfänglichen Layoutversion können zwei Aktivitäten nebeneinander angezeigt werden.

API-Änderungen

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

Fehlerkorrekturen

Version 1.0.0-beta02

1. September 2021

androidx.window:window-*:1.0.0-beta02 wird freigegeben. Version 1.0.0-beta02 enthält diese Commits.

Neue Funktionen

  • Fügen Sie eine experimentelle Annotation hinzu, um experimentelle APIs annotieren zu können. (I9f1b6)
  • Füge eine Testmethode hinzu, um eine Test-Faltfunktion zu erstellen, die ein Rect akzeptiert. Dies macht es einfacher, Tests durchzuführen, wenn du Robolectric verwendest, anstatt eine tatsächliche Aktivität zu verwenden. (Id1cca)

Version 1.0.0-beta01

18. August 2021

androidx.window:window-*:1.0.0-beta01 wird freigegeben. Version 1.0.0-beta01 enthält diese Commits.

Neue Funktionen

  • Alte Konstanten entfernt und FoldingFeature in eine Schnittstelle umgewandelt.

API-Änderungen

  • Alte Konstanten beseitigen und FoldFeature zu einer Schnittstelle machen (I9a2d5)

Fehlerkorrekturen

  • Bibliotheken, die von der Test Core-Bibliothek abhängig sind, wurden auf Version 1.4.0 aktualisiert und funktionieren 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 wird freigegeben. 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 aktuellen Fenstermesswerte in einen Flow in WindowInfoRepository, da sich der Wert im Laufe der Zeit ändert.
  • WindowInfoRepoJavaAdapter umbenennen in WindowInfoRepoCallbackAdapter
  • Hilfsmethode zum Erstellen von FoldingFeature-Testobjekten hinzufügen
  • Aktualisieren Sie Pakete, um Klassen anhand der von ihnen unterstützten Funktion zu gruppieren.

API-Änderungen

  • Benennen Sie ActivityExt um in ActivityExtensions und ändern Sie von Repo zu Repository. (I61a16)
  • Pakete für Klassen aktualisieren. (I23ae2)
  • WindowMetrics aus WindowInfoRepo entfernen (I24663)
  • Entfernen Sie WindowManager und verwenden Sie WindowInfoRepo.
    • WindowBackend intern machen. (I06d9a)
  • Fenstermesswerte in Ablauf umwandeln.
    • Java-Adapter umbenennen in WindowInfoRepoCallbackAdapter
    • CallbackFlow wird entfernt, damit keine experimentellen APIs in Verwendung sind. (Ia4d15)
  • Fügen Sie eine Hilfsmethode zum Erstellen von Test-Displayfunktionen hinzu.
    • Von „occlusionMode“ zu „occlusionType“ (If4cff) ändern

Fehlerkorrekturen

  • Proguard-Fehler behoben, bei dem die Kernbibliothek entfernt wurde.
  • Fehler behoben, bei dem WindowLayoutInfo nicht an zusätzliche Abonnenten gesendet wurde.
  • Fehler behoben, bei dem Konfigurationsänderungen keine Updates der faltbaren Funktion auslösten.

Version 1.0.0-alpha09

30. Juni 2021

androidx.window:window-*:1.0.0-alpha09 wird freigegeben. Version 1.0.0-alpha09 enthält diese Commits.

Neue Funktionen

  • Wechsel von Ganzzahlkonstanten zu unbegrenzten Enums.
  • Füge ein Test-Dienstprogramm hinzu, um die faltbaren Funktionen zum Testen zu erstellen.

API-Änderungen

  • Fügen Sie eine Hilfsmethode zum Erstellen von Test-Displayfunktionen hinzu. (I3cf54)
    • Von „occlusionMode“ in „occlusionType“ ändern.

Fehlerkorrekturen

  • Beim Hinzufügen mehrerer Nutzer der Datenstreams wird der Anfangswert ausgegeben.

Version 1.0.0-alpha08

16. Juni 2021

androidx.window:window-*:1.0.0-alpha08 wird freigegeben. Version 1.0.0-alpha08 enthält diese Commits.

Neue Funktionen

  • Es wurde ein Testartefakt veröffentlicht, um Tests 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 wird freigegeben. Version 1.0.0-alpha07 enthält diese Commits.

Neue Funktionen

  • Migrieren Sie die Kernfensterbibliothek zu Kotlin. Es werden Koroutinen und Anhalten-Funktionen verwendet, um in Zukunft asynchrone Daten verfügbar zu machen.
  • Fügen Sie WindowInfoRepo als Hauptinteraktionspunkt zum Abrufen von WindowMetrics und dem Stream von WindowLayoutInfo hinzu.
  • Neues window-java-Artefakt, um Java-kompatible APIs verfügbar zu machen, um Callbacks zu registrieren und ihre Registrierung aufzuheben.
  • Neue window-rxjava2- und window-rxjava3-Artefakte zur Bereitstellung von RxJava angepassten APIs.

API-Änderungen

  • Fügen Sie WindowServices hinzu, um Abhängigkeiten einheitlich bereitzustellen.
    • Fügen Sie eine koroutinebasierte API hinzu, um Fensterlayoutinformationen zu nutzen. (Iab70f)
  • Migrieren Sie die Kernbibliothek 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 wird freigegeben. Version 1.0.0-alpha06 enthält diese Commits.

Neue Funktionen

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

API-Änderungen

  • Kotlin als Abhängigkeit hinzufügen
    • Zentrale Bibliothek zu Kotlin migrieren (Idd995)
  • DisplayFeature-Builder 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)
  • Veraltete Registrierungsmethoden entfernen. (Ib381b)

Version 1.0.0-alpha05

24. März 2021

androidx.window:window:1.0.0-alpha05 wird freigegeben. Version 1.0.0-alpha05 enthält diese Commits.

Neue Funktionen

„FoldingFeature“ bietet jetzt praktische Methoden, mit denen Apps erkennen können, ob sich die Funktion voneinander trennt oder verschließt, und die Ausrichtung des Scharniers bestimmen. Wir verbergen auch die Scharnierart,

Die Methoden zum synchronen Lesen werden aus WindowManager entfernt. Methoden zum synchronen Lesen sind fehleranfällig, da es eine implizite Race-Bedingung gibt. Registrieren Sie Listener und Callbacks, um Aktualisierungen 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 wird freigegeben. Version 1.0.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Es wurde ein Fehler behoben, bei dem kein WindowLayoutInfo ausgegeben wird, wenn keine OEM-Implementierung vorhanden ist. Jetzt geben wir eine leere WIndowLayoutInfo aus.
  • Ein Fehler wurde behoben, bei dem der Status nicht richtig aktualisiert wurde, wenn sich der Status des Scharniers änderte, während die App im Hintergrund war. Jetzt sollte der Zustand einheitlich sein.
  • Aktualisieren Sie unsere Proguard-Dateien, um Warnungen 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 wird freigegeben. 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. Dadurch sollte es einfacher sein, die Bibliothek auf mehr Geräten zu verwenden. Da die APIs asynchron sind, wird weiterhin empfohlen, dass Anwendungen Defensivcode schreiben und nach einem Zeitlimit einen Standardwert ausgeben. Wir übernehmen keine Garantien für Implementierungen durch OEMs und der anfä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 wird freigegeben. 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. Bedeutende Beispiele sind 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 Benutzeroberfläche umgewandelt, die in Zukunft auch in anderen Funktionen implementiert wird. Unsere erste Funktion ist FoldingFeature. 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 allen Systemeinlagen. Wir haben die API in dieser Version rückportiert, damit Entwickler WindowMetrics nutzen und weiterhin ältere Android-Versionen unterstützen können. WindowMetrics kann über die APIs WindowManager#getCurrentWindowMetrics() und WindowManager#getMaximumWindowMetrics() abgerufen werden.

API-Änderungen

  • APIs einstellen, die in der nächsten Alphaversion entfernt werden (Ib7cc4)
  • Aktualisiert ExtensionInterface, um explizite Aktivitätsreferenzen zu akzeptieren. (I07ded)
  • Stellt die WindowMetrics-API vor. (I3ccee)
  • Methoden zum synchronen Lesen aus WindowManager entfernen (I69983)
  • Schützt das ExtensionWindowBackend-Paket. (Ied208)

Fehlerkorrekturen

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

Externer Beitrag

  • Führen Sie DeviceState und WindowLayoutInfo zusammen, um den Zugriff auf Daten zu vereinfachen. (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 Fenstermanager-Bibliothek.

Neue Funktionen

  • DisplayFeature: Diese neue API erkennt Störungen an durchgehenden Flachbildfernseheroberflächen wie Scharnieren oder Klappflächen.
  • DeviceState: Diese neue API stellt den aktuellen Standort des Smartphones aus einer Liste definierter Sicherheitseinstellungen bereit (z. B. CLOSED, OPENED, HALF_OPENED usw.).