Compose-Benutzeroberfläche

Grundlegende Komponenten der Compose-Benutzeroberfläche, die für die Interaktion mit dem Gerät erforderlich sind, einschließlich Layout, Zeichnen und Eingabe.
Letzte Aktualisierung Stabile Release Releasekandidat Beta-Release Alpha-Release
07. Oktober 2026 1.12.1 - 1.13.0-beta01 -

Struktur

Compose ist eine Kombination aus 7 Maven-Gruppen-IDs innerhalb von androidx. Jede Gruppe enthält eine bestimmte Teilmenge von Funktionen mit jeweils eigenen Versionshinweisen.

In dieser Tabelle werden die Gruppen erläutert und es sind Links zu den einzelnen Versionshinweisen enthalten.

GruppeBeschreibung
compose.animationAnimationen in Jetpack Compose-Anwendungen erstellen, um die User Experience zu verbessern.
compose.compiler@Zusammensetzbare Funktionen transformieren und Optimierungen mit einem Kotlin-Compiler-Plug-in ermöglichen
compose.foundationMit Jetpack Compose können Sie Anwendungen mit einsatzbereiten Bausteinen schreiben und die Grundlage erweitern, um eigene Designsystemkomponenten zu erstellen.
compose.materialJetpack Compose-UIs mit einsatzbereiten Material Design-Komponenten erstellen Dies ist der Einstiegspunkt auf höherer Ebene für Compose. Er soll Komponenten bereitstellen, die den auf www.material.io beschriebenen Komponenten entsprechen.
compose.material3Jetpack Compose-UIs mit Material Design 3-Komponenten erstellen – der nächsten Generation von Material Design. Material 3 umfasst aktualisierte Designs und Komponenten sowie Material You-Personalisierungsfunktionen wie dynamische Farben. Es ist auf den neuen visuellen Stil und die System-UI von Android 12 abgestimmt.
compose.runtimeGrundlegende Bausteine des Programmiermodells und der Statusverwaltung von Compose sowie die Core-Laufzeit für das Compose Compiler-Plug-in.
compose.uiGrundlegende Komponenten der Compose-Benutzeroberfläche, die für die Interaktion mit dem Gerät erforderlich sind, einschließlich Layout, Zeichnen und Eingabe.

Abhängigkeiten deklarieren

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

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

Groovy

dependencies {
    implementation "androidx.compose.ui:ui:1.12.1"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.ui:ui:1.12.1")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.

Feedback

Ihr Feedback hilft uns, Jetpack zu verbessern. Wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben, lassen Sie es uns wissen. Bevor Sie ein neues Problem erstellen, sollten Sie sich jedoch die bereits gemeldeten Probleme in dieser Bibliothek ansehen. Wenn Sie sich einer Problemmeldung anschließen möchten, klicken Sie auf den Button mit dem Stern.

Neues Problem melden

Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.

Version 1.13

Version 1.13.0-beta01

07. Oktober 2026

androidx.compose.ui:ui-*:1.13.0-beta01 ist veröffentlicht. Version 1.13.0-beta01 enthält diese Commits.

API-Änderungen

  • Modifier.interactionBarrier() wurde für Version 1.13 aus der öffentlichen API entfernt. (I47974, b/564575045, b/347038246)
  • Aktualisierte PolygonShape-APIs: CornerRounding wurde mit den Factories dp() und fraction() auf die oberste Ebene verschoben. Die Erweiterungen transformed() und scaledToFit() wurden durch die unveränderlichen PolygonShape.transform(PolygonShapeTransformScope.() -> Unit) und PolygonShape.copy() ersetzt. (If5970)
  • onValueChange ist jetzt ein erforderlicher Parameter für Slider, VerticalSlider und RangeSlider. Zuvor ausgeblendete verworfene APIs in den Komponenten Slider und RangeSlider wurden entfernt, einschließlich der DraggableState-Implementierung in SliderState und der alten Saver-Überladungen. isVertical wurde aus SliderState entfernt. Die SliderDefaults.Thumb-Überladung mit SliderState wurde zugunsten der isVertical-Überladung verworfen. (I3fdc1)
  • Die Klasse Posture in MediaQuery wurde durch WindowPosture ersetzt, wodurch physische WindowFolds (FoldState und FoldOrientation) verfügbar gemacht werden. Außerdem wurden die Convenience-Properties isTabletop und isFlat für WindowPosture hinzugefügt und die explizite Book-Ausrichtung entfernt. (Id9e8e)
  • Bibliotheken sind jetzt auf Kotlin 2.2 ausgerichtet und erfordern kotlinc 2.2 (I82396, b/498369605)
  • @FloatRange wurde zu BlurStop.fraction hinzugefügt, der Standardwert für fallOffRadius in BlurRadiusSpec.radialGradient wurde in Dp.Unspecified geändert, der Parameter radius von Modifier.blur wurde in blurRadiusSpec umbenannt und BlurScope.radius wurde in blurRadiusSpec umbenannt. (I91dbc, b/556335791)

Fehlerkorrekturen

  • Es wurde eine IllegalArgumentException („LayoutNode not found in RectList“) behoben, die auftrat, wenn während der Messung Ausrichtungslinien abgefragt wurden. (Icec9e, b/549552303)
  • VectorPainter teilt jetzt interne Grafikressourcen (ImageBitmap), wenn dasselbe ImageVector für mehrere Composables gerendert wird. Dadurch werden redundante Textur-Uploads und die Arbeitsspeichernutzung reduziert, was die Leistung in Szenarien wie Listen mit wiederholten Symbolen verbessert. Diese Optimierung kann über ComposeUiFlags.isVectorDrawCacheSharingEnabled deaktiviert werden. (I91b41)
  • Ein Fehler wurde behoben, bei dem LINEAR_TEXT_FLAG nicht durch AndroidTextPaint.setTextMotion gelöscht wurde, wenn zur Linearität „FontHinting“ oder „None“ übergegangen wurde. (I8c19c)
  • Ein Problem wurde behoben, bei dem der Fokus der Touch-Bedienung von TalkBack auf eine eingebettete AndroidView (z. B. eine WebView) springen konnte, die von Compose-UI-Inhalten abgedeckt wurde. (I11372, b/561099702)
  • Ein Problem wurde behoben, bei dem das Aufrufen von Color.toColorLong() oder das Festlegen einer Farbe, die über Color.Unspecified auf einem Paint zusammengesetzt wurde, zu einem Absturz mit einem IllegalArgumentException führen konnte. (Ia365b, b/557521315)
  • Die androidx.lifecycle:lifecycle-runtime-Abhängigkeit wurde auf 2.10.0 aktualisiert. Diese Version ist erforderlich, damit gebündelte Lint-Prüfungen für den Lebenszyklus mit AGP-Version 9.5.0-alpha04 oder höher ausgeführt werden können. (I99bfd, b/556807521)
  • Die Parameter werden jetzt auch für Composables mit mehr als 10 Parametern korrekt extrahiert. (Ib167d)
  • Ein Problem wurde behoben, bei dem deaktivierte Layoutknoten nicht aus der Layoutwarteschlange entfernt wurden, was zu einem Absturz während der Neumessung führte. (Ie64a5)

Version 1.13.0-alpha03

9. September 2026

androidx.compose.ui:ui-*:1.13.0-alpha03 ist veröffentlicht. Version 1.13.0-alpha03 enthält diese Commits.

API-Änderungen

  • Die Überladungen von Material 2-Textfeldern, die value, onValueChange-Parameter akzeptieren, werden nicht mehr unterstützt. Stellen Sie auf die Überladung um, die TextFieldState verwendet, um den Status zu übertragen. (I6b841, b/556234973)
  • Fügen Sie eine gemeinsame API hinzu, um WindowInsetsRulers global zu deaktivieren, bevor der erste Compose-Root erstellt wird. ComposeView.disableWindowInsetsRulers() nur für Android wird zugunsten von WindowInsetsRulers.disable() verworfen (Iadc8f)
  • Fügt die Erweiterungsfunktionen PolygonShape.transformed und PolygonShape.scaledToFit in Compose Foundation zum Transformieren und Anpassen von Polygonformen hinzu. (I3f327)
  • Der Modifikator hat die Funktion LineHeight.Trim.isTrimLastLineBottom() in LineHeight.Trim.trimsLastLineBottom und LineHeight.Trim.isTrimFirstLineTop in LineHeight.Trim.trimsFirstLineTop umbenannt (I02211).
  • boundsAssertionTolerance wurde unter ComposeUiTestConfig.platform zu PlatformTestConfig hinzugefügt, sodass Tests die Standardtoleranz für die Bounds-Assertion auf Umgebungsebene oder auf Regelebene konfigurieren können. (I7819d, b/545673912)
  • BasicTextField-Überladungen, die value, onValueChange-Parameter akzeptieren, sind veraltet. Stellen Sie auf die BasicTextField-Überladung um, die TextFieldState verwendet, um den Status zu übertragen. (I636bf, b/552879150)
  • In Übereinstimmung mit BasicTextField(value, onValueChange) wird auch VisualTransformation eingestellt, da es nur über diese TextField-Variante verfügbar ist. Vorhandene Transformationen sollten zu OutputTransformation migriert werden. (I636bf, b/552879150)
  • LineHeightStyle.Mode.PerLine wurde hinzugefügt, um die Zeilenhöhe unabhängig für jede Zeile zu berechnen. So werden unterschiedliche Schriftgrößen im selben Absatz ohne Überlappung unterstützt. (I41738)
  • Die Bereitstellung von LazyLayoutCacheWindow und LazyListPrefetchStrategy über LazyListState wurde eingestellt. Stattdessen wird LazyLayoutCacheWindow an die zusammensetzbare Funktion übergeben. (I71f19)
  • Die Modifier.blur { ... } API wurde hinzugefügt, um progressive Unschärfen (z. B. Verläufe und benutzerdefinierte Shader) zu unterstützen (Ie6595, b/481685669).
  • „Modifier.interactionBarrier()“ wurde hinzugefügt, um Touch-, Fokus- und Bedienungshilfen-Interaktionen zu blockieren. (I7c1b7, b/347038246)
  • Die Erweiterungseigenschaft isCrossWindowBlurEnabled wurde für WindowInfo hinzugefügt, damit Entwickler den systemweiten fensterübergreifenden Unschärfezustand unter Android abfragen und beobachten können. (If38e2, b/538405295)
  • LocalWindow CompositionLocal wurde hinzugefügt, um das Abrufen des aktuellen android.view.Window-Objekts zu ermöglichen. Dadurch lassen sich APIs auf Fensterebene einfacher aus Composables heraus steuern. (I4d4ff, b/221889664)

Fehlerkorrekturen

  • isMinimalistLocalsEnabled ist standardmäßig aktiviert. (Ibb4eb, b/523295932)
  • Die Optimierung der einzelnen Zeilenhöhe ist standardmäßig aktiviert. Dies kann zu geringfügigen Abweichungen bei einigen Textmesswerten wie Höhe oder Auswahlpfad (I5575a) führen.
  • compileSdk für Compose-Bibliotheken wurde auf Version 37.1 aktualisiert. Dazu muss compileSdk für alle Apps und Bibliotheken, die Compose verwenden, transitiv aktualisiert werden. (I05b0f)
  • Ein Problem wurde behoben, bei dem WindowInsetsRulers-IME-Einsetzungen während der intelligenten „Zurück“-Geste nicht als animiert markiert wurden. Außerdem wurde ein Problem behoben, bei dem imePadding beim Wechsel des Fokus zwischen Textfeldern nicht aktualisiert wurde. (Id4562, b/537386261, b/539686000)
  • Ein Problem wurde behoben, bei dem Pinch-Gesten auf dem Trackpad ignoriert wurden, wenn ComposeView in einem Standard-ViewGroup von Android gehostet wurde. (I80f79)

Externer Beitrag

  • Ein Problem mit dem Verlust von Aktivitäten wurde behoben, wenn ein ComposeView innerhalb eines einzelnen Frames getrennt und wieder angehängt wurde, z. B. wenn es mit removeView und addView neu angeordnet wurde. (Ib5129, b/547675867)

Version 1.13.0-alpha02

26. August 2026

androidx.compose.ui:ui-*:1.13.0-alpha02 ist veröffentlicht. Version 1.13.0-alpha02 enthält diese Commits.

API-Änderungen

  • Die neue Semantikeigenschaft BackgroundColor für Modifier.background wurde hinzugefügt. (I7eec3, b/518049030)
  • Sie können jetzt Vertices aus vorhandenen primitiven Arrays erstellen. (Ifaba8, b/496412761)
  • VectorPainter teilt jetzt interne Grafikressourcen (ImageBitmap), wenn dasselbe ImageVector für mehrere Composables gerendert wird. Dadurch werden redundante Textur-Uploads und die Arbeitsspeichernutzung reduziert, was die Leistung in Szenarien wie Listen mit wiederholten Symbolen verbessert. Diese Optimierung kann über ComposeUiFlags.isVectorDrawCacheSharingEnabled deaktiviert werden. (I35639, b/331283180)
  • requestFocusForChildInLocalBounds-Helfer hinzufügen (Ib1a48)

Version 1.13.0-alpha01

12. August 2026

androidx.compose.ui:ui-*:1.13.0-alpha01 ist veröffentlicht. Version 1.13.0-alpha01 enthält diese Commits.

API-Änderungen

  • Das Funktions-Flag isVelocityTrackerMinSampleSizeFixEnabled wurde hinzugefügt. (Ic9b51, b/533444810, b/533775739, b/523705159)
  • Die veraltete Annotationsklasse ExperimentalVelocityTrackerApi wurde entfernt. (I6f9c6, b/483449576)
  • Flag „isClearNestedScrollCoroutineScopeFixEnabled“ entfernen (Iedfd7, b/506963276)
  • In TextFieldState werden jetzt Informationen zum Textstil gespeichert und wiederhergestellt. AnnotatedString.Annotation.Saver ist jetzt öffentlich, damit AnnotatedString.Annotation-Objekte gespeichert und wiederhergestellt werden können. (I8b533, b/135556699)
  • Die Annotationen TestFailurePolicy und TestFailureHandler wurden in ComposeTestConfig eingeführt, um benutzerdefinierte Event-Handler für Fehler und den Kontext von Fehlerartefakten in Compose-UI-Tests zu unterstützen. (Ib1a85, b/414802953, b/291106656, b/430644575)
  • SemanticsProperties.alpha wurde hinzugefügt, um die aufgelösten zusammengesetzten Alpha-Werte von über- und untergeordneten Layoutknoten für Tests verfügbar zu machen. (Ifddb6, b/524035059)
  • Die Überladungen createComposeRule, createAndroidComposeRule und createEmptyComposeRule im Paket ui-test-junit4 v2, die einzelne Parameter verwenden, wurden eingestellt. Verwenden Sie die Überladungen, die ComposeUiTestConfig akzeptieren, oder die parameterlosen Überladungen, die eine Standard-ComposeUiTestConfig verwenden. Mit einem Standard-ComposeUiTestConfig wird der anfängliche Eingabemodus zu Beginn jedes Tests auf InputMode.Touch festgelegt. Das kann dazu führen, dass vorhandene Tests, die den Tastaturmodus (InputMode.Keyboard) erwarten, fehlschlagen. Um betroffene Tests zu korrigieren, übergeben Sie ComposeUiTestConfig(inputMode = InputMode.Keyboard) explizit und entfernen Sie die manuelle Einrichtungslogik für Eingabemodi. Alternativ können Sie AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false festlegen, um das Festlegen des Standardeingabemodus zu Beginn jedes Tests vorübergehend zu deaktivieren und das alte Verhalten beizubehalten, während Sie Ihre Tests migrieren. Dieses Flag wird in Zukunft entfernt. Wenn also nur eine kleine Anzahl von Tests fehlschlägt, empfiehlt es sich, die Tests direkt zu beheben, indem Sie ihre Konfiguration ändern. (Idfb86, b/504195741)
  • Aufrufe von createComposeRule und createAndroidComposeRule ohne Argumente (z. B. createComposeRule() oder createAndroidComposeRule<MyActivity>()) verwenden jetzt einen Standardwert für ComposeUiTestConfig, der den anfänglichen Eingabemodus zu Beginn jedes Tests auf InputMode.Touch festlegt. So wird sichergestellt, dass sich das Gerät in einem sauberen Zustand befindet und dass sich Änderungen des vorherigen Eingabemodus nicht auf nachfolgende Tests auswirken. Der neue Standard-Touch-Modus kann jedoch dazu führen, dass vorhandene Tests, die den Tastaturmodus (InputMode.Keyboard) erwarten, fehlschlagen. Um betroffene Tests zu korrigieren, übergeben Sie ComposeUiTestConfig(inputMode = InputMode.Keyboard) explizit und entfernen Sie die manuelle Einrichtungslogik für Eingabemodi. Alternativ können Sie AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false festlegen, um das Festlegen des Standardeingabemodus zu Beginn jedes Tests vorübergehend zu deaktivieren und das alte Verhalten beizubehalten, während Sie Ihre Tests migrieren. Dieses Flag wird in Zukunft entfernt. Wenn also nur eine kleine Anzahl von Tests fehlschlägt, empfiehlt es sich, die Tests direkt zu beheben, indem Sie ihre Konfiguration ändern. (Idc4dd, b/267253920, b/504195741)
  • Annotated overridable empty base methods across Compose with @EmptySuper to denote that overriding implementations should not invoke super. (Id407b)
  • ExposedDropdownMenu ist jetzt eine Erweiterungsfunktion für ExposedDropdownMenuBoxScope und kein Mitglied mehr. Möglicherweise müssen Sie Ihren Code mit einem neuen Import aktualisieren. (Ie8a65, b/356452026)
  • Die Attribute blurBehindRadius, backgroundBlurRadius, scrimAlpha und windowShape wurden zu DialogProperties hinzugefügt, blurBehindRadius und scrimAlpha zu PopupProperties. Entwickler können jetzt Hintergrundunschärfe, Fensterunschärfe und die Deckkraft des Scrim direkt in Dialogfeldern und Pop-ups konfigurieren. Mit der Einstellung windowShape können Sie den Hintergrund von Dialogfenstern an abgerundeten Ecken zuschneiden. (I5d437)
  • Das Funktions-Flag wurde entfernt. Die Schaltflächen zum Verfassen behalten jetzt den Fokus für die Bedienungshilfen korrekt bei und flackern nicht, wenn „Bei Berühren vorlesen“ aktiv ist, da Hover-Ereignisse korrekt als verarbeitet markiert werden. (Ib1c80)
  • Es wurden Merge-Überladungen zu FontVariation.Settings hinzugefügt, um andere Sammlung von Einstellungen zusammenzuführen oder Einstellungen inline zu überschreiben. (I6340c)
  • variationSettings wurde in der Schriftart-Schnittstelle verfügbar gemacht und ist standardmäßig auf die neue FontVariation.Empty eingestellt. Der FontVariation.Settings-Vararg-Konstruktor wurde optimiert, sodass asList() verwendet wird, um Zuweisungen für das Kopieren von Arrays zu vermeiden. (I9c22f)
  • Die NestedScrollDispatcher.coroutineScope-Eigenschaft wurde aktualisiert, um eine abgebrochene CoroutineScope sicher zurückzugeben, wenn sie nicht angehängt oder getrennt ist. (I9b112, b/535290281)
  • Die Überladungen von runComposeUiTest, runAndroidComposeUiTest und AndroidComposeUiTestEnvironment, die einzelne effectContext-, runTestContext- und testTimeout-Parameter verwenden, wurden eingestellt. Verwenden Sie die Überladungen, die ComposeUiTestConfig akzeptieren, oder die parameterlosen Überladungen, die eine Standard-ComposeUiTestConfig verwenden. Mit einem Standard-ComposeUiTestConfig wird der anfängliche Eingabemodus zu Beginn jedes Tests auf InputMode.Touch festgelegt. Das kann dazu führen, dass vorhandene Tests, die den Tastaturmodus (InputMode.Keyboard) erwarten, fehlschlagen. Um betroffene Tests zu korrigieren, übergeben Sie ComposeUiTestConfig(inputMode = InputMode.Keyboard) explizit und entfernen Sie die manuelle Einrichtungslogik für Eingabemodi. Alternativ können Sie AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false festlegen, um das Festlegen des Standardeingabemodus zu Beginn jedes Tests vorübergehend zu deaktivieren und das alte Verhalten beizubehalten, während Sie Ihre Tests migrieren. Dieses Flag wird in Zukunft entfernt. Wenn also nur eine kleine Anzahl von Tests fehlschlägt, empfiehlt es sich, die Tests direkt zu beheben, indem Sie ihre Konfiguration ändern. (Ia6d55, b/504195741)
  • Bei Aufrufen von runComposeUiTest, runAndroidComposeUiTest und AndroidComposeUiTestEnvironment mit nur einem nachgestellten Lambda wird jetzt ein Standard-ComposeUiTestConfig verwendet, mit dem der anfängliche Eingabemodus zu Beginn jedes Tests auf InputMode.Touch festgelegt wird. So wird dafür gesorgt, dass sich das Gerät in einem sauberen Zustand befindet und Änderungen des vorherigen Eingabemodus nicht auf andere Tests übertragen werden. Der neue Standard-Touch-Modus kann jedoch dazu führen, dass vorhandene Tests, die den Tastaturmodus (InputMode.Keyboard) erwarten, fehlschlagen. Um betroffene Tests zu korrigieren, übergeben Sie ComposeUiTestConfig(inputMode = InputMode.Keyboard) explizit und entfernen Sie die manuelle Einrichtungslogik für Eingabemodi. Alternativ können Sie AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false festlegen, um das Festlegen des Standardeingabemodus zu Beginn jedes Tests vorübergehend zu deaktivieren und das alte Verhalten beizubehalten, während Sie Ihre Tests migrieren. Dieses Flag wird in Zukunft entfernt. Wenn also nur eine kleine Anzahl von Tests fehlschlägt, empfiehlt es sich, die Tests direkt zu beheben, indem Sie ihre Konfiguration ändern. (I8c85d, b/504195741)
  • @CheckResult wurde zu SemanticsNodeInteraction.isDisplayed() und isNotDisplayed() hinzugefügt, um sicherzustellen, dass ihre Rückgabewerte bestätigt werden. So werden stille Testfehler verhindert, wenn Entwickler sie fälschlicherweise anstelle von Assertion-APIs verwenden. (I1b447, b/508178494)
  • Das Flag AndroidComposeUiFlag.isDelayAndroidViewsHandlerCreationEnabled bewirkt, dass die ViewGroup, die AndroidViews enthält, nur instanziiert wird, wenn ein AndroidView hinzugefügt wird, um die Leistung von ComposeViews ohne AndroidViews zu verbessern. Wenn das Flag deaktiviert ist, wird das enthaltende ViewGroup instanziiert und angehängt, wenn das ComposeView an das Fenster angehängt wird. (I306a3, b/524283041)
  • Einführung von coroutineScopeOrNull() in NestedScrollDispatcher, einer alternativen API für den Zugriff auf den übergeordneten Koroutinenbereich des Dispatchers. (I18c0f)
  • Ändern Sie clearCallbacks in runAndClearCallbacks, damit Bereinigungsaktionen immer ausgeführt werden. (If4720, b/526700075)
  • ComposeTestConfig wurde in ComposeUiTestConfig umbenannt und vom v2-Paket in das übergeordnete Paket androidx.compose.ui.test verschoben. (I1d2a1, b/504195741)
  • Der Funktion SemanticsNodeInteraction.captureToImage() wurde ein timeoutMillis-Parameter (Standardwert: 2.000 ms) hinzugefügt, mit dem ein benutzerdefinierter Zeitüberschreitungswert für das Warten auf Neuzeichnungsvorgänge konfiguriert werden kann. (Ib7d62, b/249501063)
  • Fügt Verlaufsdaten zu Änderungen bei der indirekten Zeigereingabe hinzu (Ie62d2, b/526961645)
  • Es wurde eine neue semantische Eigenschaft hintText hinzugefügt, um Hinweistext in Textfeldern darzustellen. Dadurch wird die Barrierefreiheit verbessert, da sie AccessibilityNodeInfo.hintText zugeordnet wird. (Ib65da, b/448376876)
  • Optimierte CompositionLocal-Auflösung durch dynamisches Auflösen aus LocalOwner und LocalAndroidComposeView bei Bedarf, was mit ComposeUiFlags.isMinimalistLocalsEnabled aktiviert und deaktiviert werden kann. (I2bf6d)
  • androidx.benchmark hat jetzt einen minSdk von 24. (Ic2a85)
  • Der experimentellen Flag isPropagateHideFromAccessibilityToMergingChildrenEnabled wurde AndroidComposeUiFlags hinzugefügt, um die Weitergabe von hideFromAccessibility an untergeordnete Elemente zu steuern. (Ie41ff, b/483506400)
  • Die ComposeUiTest- und zugehörigen Test-APIs (einschließlich der Varianten ComposeTestRule und waitUntil) wurden von „Experimental“ zu „Stable“ hochgestuft. (Iaec77, b/471148519, b/485124363)
  • Die TalkBack-Navigationsreihenfolge in zusammengeführten Traversierungsgruppen wurde korrigiert. Bei Bedarf kann diese Änderung rückgängig gemacht werden, indem Sie AndroidComposeUiFlags.isTraversalGroupSortingEnabled deaktivieren. (I5ae09, b/285043826)
  • Entfernt die experimentelle, veraltete Hilfsfunktion IndirectPointerEvent. (I05dee, b/499336763, b/501098299, b/501098376, b/513249467)
  • Ersetzen Sie die experimentelle @AnimationToolingApi durch die @RestrictTo API, die strengere Tracking-Garantien bietet. (Ia4fd1, b/524317805)
  • Der Selektor onDescendants() wurde hinzugefügt, um alle Semantik-Knoten im Unterbaum eines bestimmten Knotens zu finden. (Id6b9b, b/444588117)
  • Die verworfenen Helper-APIs waitUntilNodeCount, waitUntilAtLeastOneExists, waitUntilExactlyOneExists und waitUntilDoesNotExist, die useUnmergedTree nicht akzeptieren. Es wurden neue Überladungen hinzugefügt, die useUnmergedTree akzeptieren, um das Warten auf Knoten im nicht zusammengeführten semantischen Baum zu unterstützen. (If675f, b/268432145)
  • Den Größen- und Positionsassertions (assertWidthIsEqualTo, assertHeightIsEqualTo, assertTouchWidthIsEqualTo, assertTouchHeightIsEqualTo, assertPositionInRootIsEqualTo, assertTopPositionInRootIsEqualTo, assertLeftPositionInRootIsEqualTo) für SemanticsNodeInteraction wurde ein tolerance-Parameter hinzugefügt, damit Entwickler den Vergleichsschwellenwert konfigurieren können. Dadurch wird die Robustheit von Tests bei unterschiedlichen Bildschirmdichten verbessert. (I3a477, b/202752461)
  • Compose-Tests unterstützen jetzt die Synchronisierung des Hauptthreads. Sie können jetzt Synchronisierungs-APIs (z. B. waitForIdle() und runOnIdle()) sicher aufrufen und Compose-Assertions oder -Aktionen direkt in UI-/Main-Thread-Callbacks ausführen. (I0247a, b/498478569)
  • Wir haben ein neues Konfigurationsmodell (ComposeTestConfig) für Compose-Test-APIs eingeführt, um die Parameterverwaltung zu vereinfachen und die Skalierbarkeit zu verbessern. Unterstützung für die Konfiguration des Eingabemodus (Touch/Tastatur) direkt über ComposeTestConfig hinzugefügt, um eine automatische Einrichtung und Zurücksetzung zu ermöglichen und so Testinstabilität aufgrund von Statuslecks zu verhindern. Es wurden neue Überladungen für run*ComposeUiTest und create*ComposeRule hinzugefügt, die das ComposeTestConfig-Objekt akzeptieren. (Ia3da9, b/267253920, b/504195741)
  • Ein Absturz in Compose Preview bei Verwendung von PreviewParameterProvider mit Media Query-Eigenschaften (Posture, PointerPrecision usw.) wurde behoben, indem die zugrunde liegende Darstellung von String in Int geändert wurde. (Ic8f92, b/489939558)
  • Der Parameter includeInputText wurde hasTextExactly und assertTextEquals hinzugefügt, um neben visuellem Text auch eine genaue Übereinstimmung mit dem Rohtexteingabetext zu ermöglichen. (Iee329, b/519026043)

Fehlerkorrekturen

  • SaveableStateRegistry.performSave() wurde optimiert, um HashMap-Zuweisungen zu verhindern. Verwendet ScatterMap intern. (I7d510)
  • Die Textfarben werden in AccessibilityNodeInfo.ExtraRenderingInfo für Text-Composables eingefügt. (I11c94, b/518049030)
  • Ein Problem wurde behoben, bei dem beim Zugriff auf NestedScrollDispatcher.coroutineScopeOrNull während des Trennens eines Layoutknotens eine IllegalStateException ausgelöst wurde, anstatt null zurückzugeben. (I55634, b/533444810)
  • Optimierte Initialisierung von compose:ui-Properties der Wertklasse auf oberster Ebene mithilfe dynamischer Getter auf Dateiebene. (I34184)
  • Optimierte Initialisierung von Companion-Objekten für ui-unit-Wertklassen (TextUnit) mithilfe dynamischer Getter. (If4a99)
  • Optimierte Initialisierung von Companion-Objekten für ui-graphics-Wertklassen (BlendMode, Color usw.) mithilfe dynamischer Getter. (Iaa86a)
  • Optimierte Companion-Objektinitialisierung von compose:ui:ui-Wertklassen (Key, CompositingStrategy usw.) mithilfe dynamischer Getter. (I1a340)
  • Optimierte Initialisierung von Companion-Objekten von compose:ui-Textwertklassen (TextAlign, TextOverflow, ImeAction usw.) mithilfe dynamischer Getter. (I776e0)
  • Optimierte Initialisierung von Companion-Objekten für compose:ui-Tooling und Testwertklassen (AnimatedVisibilityState, MouseButton, ScrollWheel) mithilfe dynamischer Getter. (I23e1b)
  • Optimierte Initialisierung von Companion-Objekten für compose:ui-Einheitswertklassen (Dp, DpOffset, TextUnitType usw.) mithilfe dynamischer Getter. (If5eb5)
  • Optimierte Initialisierung von Companion-Objekten für compose:ui-Geometrie-Wertklassen (Offset, Size, CornerRadius) mithilfe dynamischer Getter. (I3b110)
  • Optimierte Companion-Objekt-Initialisierung von compose:ui-Wertklassen (Role, FocusDirection, PointerEventType usw.) mithilfe dynamischer Getter. (Ie35dd)
  • Verarbeiten Sie BaselineShift.None, BaselineShift.Unspecified und BaselineShift(0f) korrekt, um unnötig langsame Layout-Durchläufe zu vermeiden. (I4350c)
  • Ein Problem wurde behoben, bei dem sich Dp-Werte mit negativer Null (-0,0) bei Vergleichen oder Gleichheitsprüfungen anders verhielten als Gleitkommavergleiche oder Gleichheitsprüfungen. (I7dbcf, b/525506543)
  • API-Informationen werden bereinigt (Ia8066)

Externer Beitrag

  • Alignment.topRatio, Trim.isTrimFirstLineTop() und Trim.isTrimLastLineBottom() sind jetzt öffentliche APIs (I84f62)

Version 1.12

Version 1.12.1

9. September 2026

androidx.compose.ui:ui-*:1.12.1 ist veröffentlicht. Version 1.12.1 enthält diese Commits.

Version 1.12.0

12. August 2026

androidx.compose.ui:ui-*:1.12.0 ist veröffentlicht. Version 1.12.0 enthält diese Commits.

### Herunterladbare variable Schriftarten und Einrichtung ohne Konfiguration (ui-text-google-fonts)

• Variable Schriftarten und GMS-Zertifikate ohne Konfiguration

    import androidx.compose.ui.text.font.FontFamily                                                                                                                                                                         
    import androidx.compose.ui.text.font.FontVariation                                                                                                                                                                      
    import androidx.compose.ui.text.googlefonts.Font                                                                                                                                                                        
    import androidx.compose.ui.text.googlefonts.GoogleFont                                                                                                                                                                  
                                                                                                                                                                                                                            
    val fontFamily = FontFamily(                                                                                                                                                                                            
        Font(                                                                                                                                                                                                               
            googleFont = GoogleFont("Google Sans Flex"),                                                                                                                                                                    
            // Automatically uses default GMS certificates!                                                                                                                                                                 
            variationSettings = FontVariation.Settings(                                                                                                                                                                     
                FontVariation.weight(900),                                                                                                                                                                                  
                FontVariation.slant(0f)                                                                                                                                                                                     
            )                                                                                                                                                                                                               
        )                                                                                                                                                                                                                   
    )
──────                                                                                                                                                                                                                  

### Unterstützung für Wide Color Gamut (WCG) (ui-graphics)

WCG-Beibehaltung: * Nicht-sRGB-Farbräume (z.B. AdobeRgb, DisplayP3), die für Paint oder Shader festgelegt sind, werden ab API 29 beibehalten. * Bei älteren API-Levels wird auf sRGB zurückgegriffen.

    import androidx.compose.ui.graphics.Color                                                                                                                                                                               
    import androidx.compose.ui.graphics.Paint                                                                                                                                                                               
    import androidx.compose.ui.graphics.colorspace.ColorSpaces                                                                                                                                                              
                                                                                                                                                                                                                            
    val wcgColor = Color(0.9f, 0.5f, 0.1f, colorSpace = ColorSpaces.AdobeRgb)                                                                                                                                               
    val paint = Paint().apply {                                                                                                                                                                                             
        color = wcgColor // Preserved on API 29+                                                                                                                                                                            
    }
──────                                                                                                                                                                                                                  

### Hardwarebeschleunigte Mesh-Verläufe (ui)

• Painter API: Modifier.meshGradient wurde durch MeshGradientPainter ersetzt, das hardwarebeschleunigtes Canvas.drawMesh verwendet.
• Verwendung: Verwenden Sie MeshGradientPainter in Modifier.paint.

import androidx.compose.ui.draw.paint                                                                                                                                                                                   
import androidx.compose.ui.geometry.Offset                                                                                                                                                                              
import androidx.compose.ui.graphics.Color                                                                                                                                                                               
import androidx.compose.ui.graphics.MeshGradientPainter                                                                                                                                                                 

val meshPainter = remember {                                                                                                                                                                                            
    MeshGradientPainter(rows = 1, columns = 1, hasBicubicColor = true) {                                                                                                                                                
        setVertex(0, 0, Offset(0f, 0f), Color.Red)                                                                                                                                                                      
        setVertex(0, 1, Offset(1f, 0f), Color.Blue)                                                                                                                                                                     
        setVertex(1, 0, Offset(0f, 1f), Color.Green)                                                                                                                                                                    
        setVertex(1, 1, Offset(1f, 1f), Color.Yellow)                                                                                                                                                                   
    }                                                                                                                                                                                                                   
}                                                                                                                                                                                                                       
Box(Modifier.fillMaxSize().paint(meshPainter))                                                                                                                                                                          
──────                                                                                                                                                                                                                  

### 4. Credential Manager-Integration (UI)

Autofill: * Für Textfelder mit API 34 und höher wird die Semantikeigenschaft „credentialRequest“ auf niedriger Ebene hinzugefügt.

    import androidx.compose.ui.semantics.credentialRequest                                                                                                                                                                  
    import androidx.compose.ui.semantics.CredentialRequestData                                                                                                                                                              
    import androidx.compose.ui.semantics.semantics                                                                                                                                                                          
                                                                                                                                                                                                                            
    BasicTextField(                                                                                                                                                                                                         
        value = value,                                                                                                                                                                                                      
        onValueChange = onValueChange,                                                                                                                                                                                      
        modifier = Modifier.semantics {                                                                                                                                                                                     
            if (Build.VERSION.SDK_INT >= 34) {                                                                                                                                                                              
                credentialRequest = CredentialRequestData(request, callback)                                                                                                                                                
            }                                                                                                                                                                                                               
        }                                                                                                                                                                                                                   
    ) 
──────                                                                                                                                                                                                                  

### 5. Automatische Interaktionsgeräusche (UI)

Klick- und Navigationsgeräusche: * Unterstützung von Android-kompatiblen Klick- und Navigationsgeräuschen über die Soundkonfiguration der Plattform. * Deaktivieren: Verwenden Sie den Wrapper „SoundEffectOnInteraction“, um Sounds für einen Teilbaum zu deaktivieren.

    import androidx.compose.ui.platform.SoundEffectOnInteraction                                                                                                                                                            
                                                                                                                                                                                                                            
    // Opt-out of sounds for everything inside                                                                                                                                                                              
    SoundEffectOnInteraction(enabled = false) {                                                                                                                                                                             
        Button(onClick = {}) {                                                                                                                                                                                              
            Text("Silent Button")                                                                                                                                                                                           
        }                                                                                                                                                                                                                   
    }                                                                                                                                                                                                                       

### 6. Espresso-Integration für Hybrid-UIs (ui-test)
Compose-Interaktionen auf die View-Hierarchie beschränken, die von einer Espresso-ViewInteraction abgeglichen wird.

    import androidx.compose.ui.test.junit4.onRootWithViewInteraction                                                                                                                                                        
    import androidx.test.espresso.Espresso.onView                                                                                                                                                                           
                                                                                                                                                                                                                            
    // Match RecyclerView row using Espresso                                                                                                                                                                                
    val specificRow = onView(allOf(withId(R.id.row), hasDescendant(withText("Item #5"))))                                                                                                                                   
                                                                                                                                                                                                                            
    // Scope Compose interactions to that row                                                                                                                                                                               
    composeTestRule.onRootWithViewInteraction(specificRow)                                                                                                                                                                  
        .onNodeWithTag("fav_icon")                                                                                                                                                                                          
        .performClick()

Version 1.12.0-rc01

29. Juli 2026

androidx.compose.ui:ui-*:1.12.0-rc01 ist veröffentlicht. Version 1.12.0-rc01 enthält diese Commits.

Version 1.12.0-beta02

01. Juli 2026

androidx.compose.ui:ui-*:1.12.0-beta02 ist veröffentlicht. Version 1.12.0-beta02 enthält diese Commits.

Version 1.12.0-beta01

17. Juni 2026

androidx.compose.ui:ui-*:1.12.0-beta01 ist veröffentlicht. Version 1.12.0-beta01 enthält diese Commits.

API-Änderungen

  • Nicht zutreffend (internes Entwickler-Funktions-Flag wird verschoben) (Iaf2c4, b/368702588)
  • N/A – Ich habe ein Funktions-Flag verschoben. (I24668, b/521811270)
  • Das experimentelle Funktions-Flag ComposeUiFlags wurde hinzugefügt.isTrackpadPinchReinterpretationEnabled, um Touchpad-Pinch-Gesten als Mausereignisse mit Skalierungsfaktoren neu zu interpretieren. (Id3477, b/478053727)
  • Testfunktion zum Auslösen indirekter Zeigerereignisse umbenannt (I3ee35, b/509618414)
  • Optimierung für BasicText und BasicTextField: Die Berechnung der Zeilenhöhe für Text mit softwrap=false erfolgt jetzt optimaler (I2150a).

Fehlerkorrekturen

  • Der Status für die optimierte Erfassung von Scrollvorgängen wird über Unterkompositionen hinweg weitergegeben, um unnötige UI-Neukompositionen zu verhindern. (I05830)
  • Das Flag für experimentelle Funktionen ComposeUiFlags wurde aktiviert.isTrackpadPinchReinterpretationEnabled standardmäßig. (I35ab8, b/478053727)
  • Ein Problem beim Parsen von Vektordrawable-Ressourcen wurde behoben, bei dem übergeordnete <clip-path>-Elemente ignoriert wurden, wenn sie verschachtelte <group>-Elemente enthielten. (Id4ea9, b/474530439)
  • Es wurde Unterstützung für Standard-JUnit 4-Regeln für Testwiederholungen in AndroidComposeTestRule hinzugefügt, indem die interne Testumgebung und der Coroutine-Bereich zwischen den Ausführungsversuchen neu generiert werden. (Iafaa7, b/235383900)

Externer Beitrag

  • AndroidClipboard-Schnittstelle für Tests verfügbar machen, um die Zwischenablageimplementierung zu simulieren (Ie4d72, b/512924975)
  • Abwärtskompatibilität für TextAttribute-Varianten von commitText() und setComposingText() hinzufügen. Bei SDK>=37 können Barrierefreiheitsdienste ankündigen, ob ein Vorschlag für einen Ersatztext ausgewählt ist oder nicht. Bei SDK<37 hat das keine Auswirkungen auf gesprochenes Feedback (d.h. das bisherige Verhalten). (I90e3d, b/439879822)

Version 1.12.0-alpha03

19. Mai 2026

androidx.compose.ui:ui-*:1.12.0-alpha03 ist veröffentlicht. Version 1.12.0-alpha03 enthält diese Commits.

API-Änderungen

  • Es wurde die neue credentialRequest-Semantikeigenschaft und ein CredentialRequestData-Helfer in API 34+ hinzugefügt, damit Jetpack Compose-Textfelder über das Autofill-Framework in den Credential Manager von Android eingebunden werden können. (Ida2bf, b/488446455)
  • Die Factory-Funktion ParagraphIntrinsics wurde hinzugefügt, die unter anderem das Argument softWrap akzeptiert. Intern können wir es als Signal dafür verwenden, dass der Text als einzelne Zeile gerendert wird, und bestimmte Optimierungen vornehmen. (I66ca4, b/485495112)
  • Unterstützung für automatische Interaktionsgeräusche (Klicks und Fokusnavigation) für Compose-Komponenten hinzugefügt, mit einer neuen SoundEffectOnInteraction-Composable, um die Funktion zu deaktivieren. Aufgrund dieser Änderung müssen Semantik-Click-Listener jetzt aus dem Hauptthread aufgerufen werden. Das kann sich auf eine kleine Anzahl von Testläufen auswirken. (I78f65)
  • Stabilisierte Font-Werksfunktion mit variationSettings. (I183f2)
  • Stabilisiertes Attribut ResourceFont loadingStrategy und stabilisierte Methode copy. (I40d84)
  • Stabilisierte InterceptPlatformTextInput- und PlatformTextInputInterceptor-APIs. (Id2784)
  • Zur besseren Trennung der Plattformen wurden registerIdlingResource und unregisterIdlingResource in Erweiterungsfunktionen verschoben. Möglicherweise müssen Sie Ihre Importe aktualisieren. (I21d3d, b/471148519)
  • runWithoutImplicitWait wurde in ComposeTestRule und ComposeUiTest eingeführt, um die Testleistung bei der Statusprüfung zu verbessern. Mit dieser API kann ein Codeblock ohne implizite Synchronisierung ausgeführt werden. So wird der Aufwand für wiederholte Synchronisierungen für jede Knotenabfrage vermieden. Das führt zu einer deutlich schnelleren Testausführung, insbesondere bei Tests, bei denen Frames manuell durchlaufen und mehrere Eigenschaften erfasst werden, z. B. bei Animationstests. (Ie00e9, b/490270394)
  • Die Annotation @PreviewWrapper kann jetzt auf MultiPreview-Annotationsklassen angewendet werden. So können Entwickler wiederverwendbare, vorab umschlossene Vorschaukonfigurationen erstellen. (I8ae66, b/511170361)
  • Führt MeshGradientPainter zum Rendern von Mesh-Verläufen ein. Modifier.meshGradient wurde entfernt. Verwenden Sie stattdessen MeshGradientPainter mit Modifier.paint. MeshGradientRenderer ist jetzt intern. (I2d170, b/508110246)
  • Lineale können jetzt einzeln bereitgestellt werden. Dazu wird eine Lambda-Funktion angegeben, die angibt, ob das Lineal bereitgestellt werden kann, sowie eine separate Lambda-Funktion, die den Wert des Lineals bereitstellt. Die isRulerProvided-Lambda wird nicht beobachtet und sollte optimistisch sein, ob ein Wert bereitgestellt werden kann. Das rulerProvider-Lambda wird beobachtet. Wenn sich ein Wert ändert, wird der Linealwert und alle Leser des Lineals aktualisiert. (Ie9089)
  • In der experimentellen Style API wurde die Unterstützung für das Erstellen benutzerdefinierter Stiltypen mit benutzerdefinierten Stilbereichen hinzugefügt. So können die durch einen Stil festlegbaren Attribute eingeschränkt werden, z. B. durch Entfernen der Grafikebene oder der Texteigenschaften. Außerdem kann der Bereich unabhängig von anderen Stilen erweitert werden, z. B. durch die Unterstützung der playing { }-Syntax nur in einem MediaPlayer-Composable. Diese Änderung ist nicht mit Binär- und Quellcode kompatibel. Die primäre Änderung, die die Quellkompatibilität beeinträchtigt, besteht darin, dass Hilfsfunktionen in StyleScope jetzt Erweiterungsfunktionen sind (z.B. ist fun contentProperty(all: Dp) jetzt eine Erweiterungsfunktion). Entweder die erforderlichen Erweiterungsfunktionen oder alle Symbole aus androidx.compose.foundation.styles zu importieren, sollte ausreichen, damit Code, der diese Methoden aufruft, korrekt kompiliert wird. (I1ef27, b/493676648)
  • Fügt updatePointerBy() mit dem Standardargument für die Zeiger-ID hinzu. (I99f30, b/502001776)
  • DeferredTargetAnimation ist nicht mehr experimentell. Entfernen Sie die Anmeldung.“ in androidx-main
  • Das Flag isClearNestedScrollCoroutineScopeFixEnabled wurde hinzugefügt, um die Korrektur zu steuern. (Ibd394, b/505343254)
  • DeferredTargetAnimation ist nicht mehr experimentell. Entfernen Sie die Aktivierung. (I1e4ae, b/500030165)
  • Neues Enum zur Unterstützung von Triggern in UI-Tools (I6e198, b/478807872)
  • Die ComposeViewContext darf ohne die zugehörige Referenzansicht erstellt werden. Die Referenzansicht muss weiterhin angehängt werden, bevor setContent() aufgerufen wird. (Id0952)

Fehlerkorrekturen

  • Das Problem, dass focusRestorer der Fokus bei mehreren Speicheraufrufen für dasselbe Layout nicht richtig wiederhergestellt wird, wurde behoben (I10277, b/505371994).
  • Eine frühere Leistungsverbesserung hatte den Nebeneffekt, dass nicht angehängte ComposeViews nicht gemessen werden konnten. Diese Änderung ermöglicht es nun, ohne das Leistungsproblem wieder einzuführen. (I9b2c5, b/508650647)
  • Die Komposition wird jetzt bei jeder ComposeViewContext neu erstellt, um einen schnelleren Zugriff auf die ComposeViewContext zu ermöglichen. (I3b3a8, b/487364963)
  • Compose kann jetzt Nicht-sRGB-Farben für Paint und Shader unter Android festlegen. So wird der erweiterte Farbraum beibehalten, indem Compose-Farbräume korrekt auf Plattformäquivalente abgebildet werden. Farbräume, die für Rendering-Vorgänge auf der Plattform nicht unterstützt werden (z.B. CIE XYZ, CIE Lab, OkLab) oder auf der aktuellen API-Ebene nicht verfügbar sind, werden sicher auf den sRGB-Farbraum zurückgesetzt. (I3efb5, b/388511109)

Externer Beitrag

  • Der androidx.compose.ui.platform.NativeClipboard-Typealias ist veraltet. Verwenden Sie stattdessen direkt android.content.ClipboardManager (Ibc611).
  • Ersetzen Sie die Clipboard.nativeClipboard-Property durch die Clipboard.nativeClipboardManager-Erweiterung, um zu vermeiden, dass der Plattformtyp über typealias im commonMain-Quellsatz verfügbar gemacht wird (Ibc611).

Version 1.12.0-alpha02

6. Mai 2026

androidx.compose.ui:ui-*:1.12.0-alpha02 ist veröffentlicht. Version 1.12.0-alpha02 enthält diese Commits.

API-Änderungen

  • Einführung des Modifikators MeshGradient. (Ia9a08, b/455752719)
  • Entfernt integrierte Autofill-Debug-Logging-Callbacks. Dieselbe Funktionalität kann durch die Protokollierung über AutofillManager.AutofillCallback erreicht werden. (I631c7, b/502279690)
  • Unterstützung von Variationseinstellungen für herunterladbare Schriftarten (Ic25c7, b/496278020)
  • Die Methoden mediaQuery und derivedMediaQuery wurden aktualisiert, sodass sie einen generischen Typ anstelle von Boolean zurückgeben. Dies ermöglicht eine flexiblere Verwendung beim Erstellen adaptiver Benutzeroberflächen. (I93830, b/498698350)

Version 1.12.0-alpha01

22. April 2026

androidx.compose.ui:ui-*:1.12.0-alpha01 ist veröffentlicht. Version 1.12.0-alpha01 enthält diese Commits.

API-Änderungen

  • Entfernt das Funktions-Flag ComposeUiFlags.isIndirectPointerNavigationGestureDetectorEnabled (I82be3, b/455601135)
  • mediaQuery wurde zu einer Inline-Funktion gemacht (Ie9457, b/498698350)
  • ComposeViewContext ist nicht mehr in der Testphase und die Anmerkung ExperimentalComposeViewContextApi wurde entfernt (I32eca)
  • ComposeView.disableWindowInsetsRulers() ist jetzt nicht mehr experimentell (Ia81a5)
  • Die hasPendingWork() API wurde hinzugefügt, um passiv zu prüfen, ob in der Compose-Benutzeroberfläche derzeit ausstehende Aufgaben vorhanden sind, ohne dass ein Warten oder Vorstellen der Zeit ausgelöst wird. Das ist nützlich für manuelle Takt-Tests, um festzustellen, wann Animationen oder andere Hintergrundarbeiten abgeschlossen sind. (Ic54e3)
  • Das Funktions-Flag AndroidComposeUiFlags.isForceChildLayoutAfterMeasurementEnabled (I7fd25, b/491111451) wurde entfernt.
  • Funktions-Flag AndroidComposeUiFlags.isSharedFontEnabled entfernt (I2cebe, b/479898293)
  • Fügt zusätzliche KeyboardType-Optionen hinzu, um die unterstützten Tastaturoptionen unter Android zu vervollständigen, darunter Datum, Uhrzeit, Datum/Uhrzeit und signierte Dezimalzahl. (I3713e, b/202353328)
  • Das Flag AndroidComposeUiFlags.isSharedHapticsEnabled wurde entfernt (I6a1d4, b/479895628).
  • Das Flag AndroidComposeUiFlags.isSharedClipboardManagerEnabled wurde entfernt (I41e3c, b/479895130).
  • Flag AndroidComposeUiFlags.isSharedViewConfigurationEnabled entfernt (I6d3aa, b/479890645)
  • Das Funktions-Flag AndroidComposeUiFlags.isSharedDrawingEnabled wurde entfernt. (I27912, b/479849019)
  • Das Funktions-Flag AndroidComposeUiFlags.isSharedAccessibilityManagerEnabled wurde entfernt (I6b726, b/479845566).
  • AndroidComposeUiFlags.isSharedWindowInfoEnabled-Flag entfernen (Ife9a9, b/479837249)
  • Entfernen Sie das Flag AndroidComposeUiFlags.isSharedComposeViewContextEnabled. (Ic522a, b/479834257)
  • Variations-Einstellungen hinzufügen, um herunterladbare variable Schriftarten anzupassen (Ifdc93, b/223262013)
  • Variations-Einstellungen zum Anpassen herunterladbarer variabler Schriftarten hinzufügen (I390af, b/223262013)
  • Flag isTraversableDelegatesFixEnabled entfernen (Ia7dfe, b/485962494)
  • Auf ComposeTestRule und ComposeUiTest wurden runWhenIdle und die entsprechende Variante awaitAndRunWhenIdle eingeführt, um die Testleistung und die Stabilität des Status zu verbessern. Diese APIs synchronisieren die Benutzeroberfläche einmal und führen dann einen Codeblock aus, ohne dass für jeden Vorgang wiederholt synchronisiert werden muss. Dies führt zu einer deutlich schnelleren und weniger instabilen Testausführung, insbesondere bei Tests, bei denen viele Eigenschaften berücksichtigt werden, z. B. bei Animationstests. (Iabf66, b/490270394)
  • Fügt LayerOutsets zu GraphicsLayer und Modifier.graphicsLayer hinzu, um die visuellen Grenzen der Ebene über ihre gemessene Größe hinaus zu erweitern. So kann das implizite clipToBounds-Verhalten vermieden werden, wenn die Ebene in einen Offscreen-Puffer verschoben wird. (Ic1189)
  • Das Logging von Autofill-Eingabeereignissen ist standardmäßig deaktiviert. Sie werden jetzt durch Aufrufen von ComposeView.setAutofillDebugEnabled aktiviert. (I5b430, b/487947860)
  • Der VelocityTracker verwendet jetzt die Implementierung des Android-Frameworks (konfigurierbar mit AndroidComposeUiFlags.isFrameworkVelocityTrackerEnabled). (Ibc7e2, b/359962905)
  • Wenn AndroidComposeUiFlags.isForceChildLayoutAfterMeasurementEnabled „true“ ist, wird das Layout von untergeordneten Ansichten immer nach der Messung während eines Layoutdurchlaufs aufgerufen. Compose legt ein untergeordnetes Element nicht immer nach der Messung an, aber Views erfordern dies für die richtige Statusverwaltung. (Ib4fe9, b/430974758)
  • isVirtual wurde zu LayoutInfo hinzugefügt. (I3e5cd, b/494243978)
  • Das Flag isGraphicsLayerShapeSemanticsEnabled wurde bereinigt. (I44be0, b/455600081)
  • Eine neue Font API wurde hinzugefügt, mit der herunterladbare Schriftarten verwendet werden können, ohne dass Schriftartenzertifikate manuell in die Codebasis eingefügt werden müssen. (I30b86, b/479454159)
  • onRootWithViewInteraction wurde hinzugefügt, um semantische Compose-Suchanfragen auf bestimmte Android-Views zu beschränken . Das vereinfacht das Testen von hybriden UIs wie RecyclerViews, ohne dass eindeutige Test-Tags im Produktionscode erforderlich sind . (Ic02c4, b/175226753)

Fehlerkorrekturen

  • Mit der captureToImage() API können Sie jetzt ein Pop-up oder einen Dialog zusammen mit dem zugehörigen Anker in einem einzelnen Bitmap erfassen. (I9b83a, b/443137545)
  • Compose compileSdk wurde auf API 37 aktualisiert. Das bedeutet, dass bei der Verwendung von Compose mindestens AGP 9.2.0 erforderlich ist. (Id45cd, b/413674743)
  • Wenn Sie ContentDataType.None in der Semantik festlegen, werden keine Autofill-Ereignisse mehr von Compose gesendet. Dadurch sollten Initialisierungskosten im Zusammenhang mit dem Anfordern von Autofill-Diensten vermieden werden. (I8fbda, b/487947860)

Version 1.11

Version 1.11.4

01. Juli 2026

androidx.compose.ui:ui-*:1.11.4 ist veröffentlicht. Version 1.11.4 enthält diese Commits.

Version 1.11.3

17. Juni 2026

androidx.compose.ui:ui-*:1.11.3 ist veröffentlicht. Version 1.11.3 enthält diese Commits.

Version 1.11.2

19. Mai 2026

androidx.compose.ui:ui-*:1.11.2 ist veröffentlicht. Version 1.11.2 enthält diese Commits.

Version 1.11.1

6. Mai 2026

androidx.compose.ui:ui-*:1.11.1 ist veröffentlicht. Version 1.11.1 enthält diese Commits.

Version 1.11.0

22. April 2026

androidx.compose.ui:ui-*:1.11.0 ist veröffentlicht. Version 1.11.0 enthält diese Commits.

Version 1.11.0-rc01

8. April 2026

androidx.compose.ui:ui-*:1.11.0-rc01 ist veröffentlicht. Version 1.11.0-rc01 enthält diese Commits.

Version 1.11.0-beta02

25. März 2026

androidx.compose.ui:ui-*:1.11.0-beta02 ist veröffentlicht. Version 1.11.0-beta02 enthält diese Commits.

API-Änderungen

  • PreviewWrapper API zur Vereinheitlichung umbenennen (I62659, b/490085948)
  • Mit ComposeViewContext kann ein ComposeView erstellt werden, ohne an die Ansichtshierarchie angehängt zu sein. Verwenden Sie AbstractComposeView.createComposition(composeViewContext), um mit dem Verfassen zu beginnen, ohne dass ComposeView angehängt ist. (I46e6f)
  • delayMillis wurde den APIs für Touchpad-Tests für panEnd und scaleEnd hinzugefügt (If80fe).

Fehlerkorrekturen

  • Clipboard und ClipboardManager fordern den Systemdienst jetzt beim ersten Methodenaufruf an (If0016, b/487947860).
  • Der Fokus wird in Lazy-Containern, in denen Fokus-Knoten und -Gruppen wiederverwendet werden, korrekt wiederhergestellt (I18d36, b/481564275).
  • Das Pop-up-Fenster mit clippingEnabled = false nutzt jetzt korrekt die gesamten Fenstergrenzen für die Darstellung von Rand zu Rand (I206408, b/327017902).

Version 1.11.0-beta01

11. März 2026

androidx.compose.ui:ui-*:1.11.0-beta01 ist veröffentlicht. Version 1.11.0-beta01 enthält diese Commits.

API-Änderungen

  • Unterstützung für benutzerdefinierte windowToken wurde in Jetpack Compose-Dialogfeldern hinzugefügt (Ic7728)
  • Jetpack Compose-Pop-ups unterstützen jetzt benutzerdefinierte windowToken und windowType. (I0a04f)
  • Einführung der PreviewWrapper-Schnittstelle und eines Anmerkungsanbieters So können Entwickler ihre Vorschauen nahtlos mit benutzerdefiniertem Verhalten umhüllen. (I29f54, b/484306729)
  • Wenn AndroidComposeUiFlags.isSharedFontEnabled „true“ ist, können schriftartbezogene Objektinstanzen wie FontLoader und FontFamilyResolver über ComposeView-Instanzen in ComposeViewContext hinweg geteilt werden. (I403e8)
  • Compose-Semantikprozessoren verwenden view.handler anstelle von mainLooper, wodurch Abstürze in Ansichten vermieden werden, in denen nicht der Haupthandler verwendet wird. (I671c3, b/486235925)
  • Es wurde ein isSkipNonImportantSemanticsNodesHitTestEnabled-Flag hinzugefügt, das einen Fehlerbehebung für Semantik-Hit-Tests schützt. Dieser Fehler wirkt sich auf die Funktion „Berühren, um zu entdecken“ von TalkBack aus. (I2933f, b/481011169, b/454377558, b/461360154)
  • Es wurde Unterstützung für die Anzeige von Jetpack Compose-Dialogfeldern über Android-Dienste hinzugefügt. Durch die Angabe eines benutzerdefinierten Fenstertyps über den neuen Parameter windowType in DialogProperties können Entwickler jetzt Dialogfelder in Overlay-Fenstern anzeigen. (I7c504, b/478214962)
  • Benennt die Properties PointerInputChange und HistoricalChange zum Abrufen von Skalierungs- und Schwenkwerten um. (I989a8, b/481333653)
  • Es wurden zusätzliche Funktionen für Trackpad-Test-APIs hinzugefügt, um verschiedene Kurven und Eingaben für eine Trackpad-Geste zu simulieren. (I290fb, b/473603145, b/479213358)
  • Teilt die neue PointerEventType.Pan in PointerEventType.PanStart, PointerEventType.PanMove und PointerEventType.PanEnd auf. Entsprechend wird PointerEventType.Scale in PointerEventType.ScaleStart, PointerEventType.ScaleChange und PointerEventType.ScaleEnd aufgeteilt. Durch diese Aufteilung können zusätzliche Informationen zum Start und Ende von Plattform-interpretierten Schwenk- und Skalierungsgesten übergeben werden. So können Zeigereingabe-Handler in Compose diese Informationen verwenden, um Ereignisse richtig zu erkennen und insbesondere zu erkennen, wann ein Schwenken oder Skalieren abgeschlossen ist. (I4daf6, b/479285849, b/481333653)
  • Wenn AndroidComposeUiFlags.isSharedHapticsEnabled „true“ ist, enthält ComposeViewContext die gemeinsam genutzte Haptik-Controller-Instanz. (Icd79a)
  • Die experimentellen APIs mediaQuery,derivedMediaQuery und UiMediaScope (mit @ExperimentalMediaQueryApi gekennzeichnet) wurden eingeführt, um die deklarative Entwicklung adaptiver Benutzeroberflächen basierend auf Fensterdimensionen, Fensterposition und anderen Geräte- und Umgebungsfunktionen zu ermöglichen. (I2d21e, b/479800750)

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem die blockbezogenen Modifier.dropShadow- und Modifier.innerShadow-Elemente nicht neu gezeichnet wurden, wenn der Parameter „Form“ dynamisch geändert wurde. (Ida262, b/486202623)
  • Ein Fehler wurde behoben, der dazu führte, dass Inline-Inhalte in RTL-Layouts mit LTR-Text oder LTR-Layouts mit RTL-Text falsch platziert wurden. (I09789)
  • Es wurde ein Fehler behoben, bei dem eine Ausnahme ausgelöst wurde, wenn ein ComposeView in einem Fragmentübergang verwendet wurde. (Ia425f, b/484100557)

Externer Beitrag

  • Fügen Sie eine InputTextSuggestionState-Eigenschaft hinzu, um die verschiedenen Status zu identifizieren, in denen sich eine Transliterationseingabe befinden kann, wenn Vorschläge zum Ersetzen von Text verfügbar sind. Außerdem wird TextCompositionRange eingeführt, um den Bereich der aktuellen Transliterationstextkomposition zu erfassen. Ein Nullwert gibt an, dass keine Komposition vorhanden ist. (I7a67f, b/476472318)

Version 1.11.0-alpha06

25. Februar 2026

androidx.compose.ui:ui-*:1.11.0-alpha06 ist veröffentlicht. Version 1.11.0-alpha06 enthält diese Commits.

API-Änderungen

  • Das Flag ComposeUiFlags.areWindowInsetsRulersEnabled wurde durch die ComposeView.disableWindowInsetsRulers() API ersetzt. (Idcdb4, b/455590696)
  • Das experimentelle Android-only-Funktions-Flag isAccessibilityShowOnScreenNestedScrollingEnabled wurde zu (I1c13a) verschoben.
  • Unterstützung für das Hochgehen von Treppen hinzufügen (I1c13a)
  • Semantik-Knoten, die sich außerhalb des Bildschirms befinden und untergeordnete Elemente von teilweise sichtbaren Zusammenführungsknoten in scrollbaren Containern sind, werden gemeldet, um die Nutzerfreundlichkeit von Screenreadern und ähnlichen Bedienungshilfen zu verbessern (I71df9, b/434782764).
  • Wenn AndroidComposeUiFlags.isSharedClipboardManagerEnabled „true“ ist, können Zwischenablage-bezogene Instanzen über ComposeViewContext (I65e2c) für ComposeViews freigegeben werden.
  • ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabled wurde entfernt (I6e14a, b/455601894)

Version 1.11.0-alpha05

11. Februar 2026

androidx.compose.ui:ui-*:1.11.0-alpha05 ist veröffentlicht. Version 1.11.0-alpha05 enthält diese Commits.

API-Änderungen

  • AndroidComposeUiFlags.isSharedWindowInfoEnabled verschiebt die WindowInfo-Informationen nach ComposeViewContext. Wenn das Flag deaktiviert wird, wird WindowInfo von AndroidComposeView gesteuert (I3b364).
  • Gängige Strukturen in ComposeView werden in die gemeinsame ComposeViewContext verschoben. Dies ist die erste Änderung, bei der CoroutineContext zu ComposeViewContext verschoben wird. Wenn AndroidComposeUiFlags.isSharedComposeViewContextEnabled auf „true“ gesetzt ist, werden Werte automatisch geteilt. Wenn „false“, werden sie nicht geteilt. (I9364d, b/461566955)
  • Unterstützung für Touchpad-Gesten und die Umwandlung von Touchpad-Eingabeereignissen in Mausereignisse hinzugefügt. Mit dieser Änderung werden Trackpad-Zeigerereignisse, mit denen ein Cursor wie auf Tablets oder Laptops gesteuert wird, in der Regel als Mauszeiger gemeldet. Dadurch wird das Verhalten in Bezug auf Zeigerabweichung, Scrollen und Hovering verbessert. Schwenk- und Skalierungsgesten werden ebenfalls mit zusätzlichen Informationen in den Änderungen des Zeigerereignisses gemeldet. Die neuen PointerEventType.Pan und PointerEventType.Scale geben an, dass diese Werte festgelegt werden (Id071a, b/315527861, b/459831570).

Fehlerkorrekturen

Externer Beitrag

  • Der androidx.compose.ui.graphics.NativePaint-Typalias ist veraltet. Verwenden Sie stattdessen direkt android.graphics.Paint (I6303c, b/477394763).
  • Ersetzen Sie die Erweiterung Paint.asFrameworkPaint() durch Paint.nativePaint, um zu vermeiden, dass der Plattformtyp über typealias im Quellsatz commonMain verfügbar gemacht wird. (I6303c, b/477394763)
  • Unterstützung für NumPad-Bewegungstasten hinzugefügt (I1ff12)

Version 1.11.0-alpha04

28. Januar 2026

androidx.compose.ui:ui-*:1.11.0-alpha04 ist veröffentlicht. Version 1.11.0-alpha04 enthält diese Commits.

API-Änderungen

  • Die TestCoroutineScheduler wurde verfügbar gemacht, um die Verwendung von runCurrent() zu ermöglichen und den Zugriff auf die freigegebene Scheduler-Instanz sicherzustellen. (Iea662, b/254115946)
  • Unterstützung für das Aufrufen von verschachtelten Scrollvorgängen als Reaktion auf android.R.id.accessibilityActionShowOnScreen von Accessibility hinzugefügt. (Ib2723, b/431148846)

Fehlerkorrekturen

  • Die Konvertierung des benutzerdefinierten Android-RGB-Farbraums wurde korrigiert. Benutzerdefinierte Graustufen-Transformationen wurden zwischen benutzerdefinierten Compose- und Android-RGB-Farbräumen falsch konvertiert.(ebd45,b/377021410)

Version 1.11.0-alpha03

14. Januar 2026

androidx.compose.ui:ui-*:1.11.0-alpha03 ist veröffentlicht. Version 1.11.0-alpha03 enthält diese Commits.

API-Änderungen

  • Das Flag ComposeUiTestFlags.isStandardTestDispatcherSupportEnabled wurde entfernt. Die v2-APIs run*ComposeUiTest und create*ComposeRule verwenden jetzt standardmäßig StandardTestDispatcher. Wenn Sie UnconfinedTestDispatcher weiterhin verwenden möchten, können Sie die verworfenen API-Varianten nutzen. Wir empfehlen jedoch dringend, zu den v2-APIs zu migrieren, um eine bessere Kontrolle über die Ausführung von Coroutinen zu erhalten. (Iecc9c, b/455601592)
  • Die androidx.compose.ui.test.junit4.v2.create*ComposeRule APIs wurden eingeführt. Diese neuen APIs verwenden standardmäßig ein StandardTestDispatcher, um das Produktionsverhalten besser zu simulieren, bei dem Coroutinen in die Warteschlange gestellt und nicht sofort ausgeführt werden. Weitere Informationen finden Sie in der Migrationsanleitung. (I1870e, b/254115946)
  • Die androidx.compose.ui.test.v2.run*ComposeUiTest APIs wurden eingeführt. Diese neuen APIs verwenden standardmäßig ein StandardTestDispatcher, um das Produktionsverhalten besser zu simulieren, bei dem Coroutinen in die Warteschlange gestellt und nicht sofort ausgeführt werden. Weitere Informationen finden Sie in der Migrationsanleitung. (I4f782, b/254115946)
  • Gängige Strukturen in ComposeView können jetzt geteilt werden. Wenn ComposeUiFlags.isSharedComposeViewContextEnabled auf „true“ gesetzt ist, werden Werte automatisch geteilt. Wenn „false“, werden sie nicht geteilt. (I0d1b4, b/463540495, b/460468959, b/461503366, b/463641813)

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, bei dem gezeichnete Inhalte nicht entfernt wurden, wenn alle Inhalte aus dem ComposeView entfernt wurden. (I8b382, b/299503084)
  • Ein Absturz bei pausierbaren Kompositionen wurde behoben, wenn sie mit LookaheadScope animiert wurden. (I7e649, b/469669851)
  • Ein Problem wurde behoben, bei dem das Senden von übermäßig langen Strings an den Autofill-Service zu einem Absturz führte. Um dies zu verhindern, wird Text jetzt automatisch auf eine gültige Länge gekürzt, bevor er gesendet wird.
  • Es wurde ein Fehler behoben, bei dem ein Hover-Exit unter bestimmten Bedingungen einen Klick auslösen konnte (a3d5a0f).
  • Behebt das Senden von Stylus-Hover-Ereignissen für Tests und bereitet Maustests für neue Stylus-Tests vor. (9ca9bc9)
  • Unterstützung für das Entfernen/Platzieren von UI-Elementen mit Zeigereingabe wurde hinzugefügt. (d0742b0, b/BUD_ID)
  • Ein Fehler in Jetpack Compose Popup wurde behoben, bei dem absolute Koordinaten der Ankergrenzen an PopupPositionProvider übergeben wurden, was zu einer falschen Platzierung von Pop-ups führte. Bei der Berechnung der Positionierung von Pop-ups werden jetzt die richtigen relativen Koordinaten verwendet.(1f7edf,b/469940907)

Version 1.11.0-alpha02

17. Dezember 2025

androidx.compose.ui:ui-*:1.11.0-alpha02 ist veröffentlicht. Version 1.11.0-alpha02 enthält diese Commits.

API-Änderungen

  • Die MultiModalInjectionScope-APIs sind jetzt stabil. Dazu gehören performKeyInput und performRotaryScrollInput sowie die zugrunde liegenden Key- und Rotary-APIs. Die Anmerkung „Testfunktion“ wurde entfernt. (Ie8bbc, b/261561237)
  • Es werden APIs zum Testen von Touchpads hinzugefügt. Diese ähneln den APIs für Maustests und fügen Ereignisse ein, die das Verhalten eines Trackpads auf einem Tablet oder Laptop nachahmen. Die primären Einstiegspunkte sind SemanticsNodeInteraction.performTrackpadInput und MultiModalInjectionScope.trackpad (I2ce67), b/432326139.

Fehlerkorrekturen

  • Behebt die Interoperabilität der Mausrad-Scroll-Eingabe, sodass sie nur verarbeitet wird, wenn sie in Compose verarbeitet wurde, nicht wenn sie in Compose gesendet wurde. (I5e0c4)

Version 1.11.0-alpha01

3. Dezember 2025

androidx.compose.ui:ui-*:1.11.0-alpha01 ist veröffentlicht. Version 1.11.0-alpha01 enthält diese Commits.

API-Änderungen

  • Entfernt das UI-Flag isSemanticAutofillEnabled, da die semantische automatische Vervollständigung standardmäßig aktiviert ist. (I849cf, b/455587954)
  • Die Methode zum Auffinden von durchlaufbaren Knoten findNearestAncestor wurde geändert. Jetzt sind Delegaten desselben Typs (NodeKind) während des Durchlaufs sichtbar. Die Änderung wird durch das Flag isTraversableDelegatesFixEnabled geschützt. (Ia3165, b/280804097)
  • TextEntryKey-Zuordnung für ANI#isTextEntryKey hinzufügen (Ifde7b, b/399540654)
  • Modifier.onFirstVisible() ist veraltet, da das Verhalten irreführend ist und nicht immer dem durch den Namen angegebenen Vertrag entspricht. Wenn er beispielsweise einem Element von LazyColumn hinzugefügt wird, wird dieser Callback jedes Mal aufgerufen, wenn dieses Element nach dem Scrollen sichtbar wird. Das ist nicht das, was die Nutzer des Modifikators mit diesem Namen erwartet haben. Es wird empfohlen, stattdessen Modifier.onVisibilityChanged() zu verwenden und manuell zu erfassen, ob das Layout bereits zuvor sichtbar war. Das hängt vom jeweiligen Anwendungsfall ab. (Ia7095, b/447601783)
  • MeasuredSizeAwareModifierNode wurde eingeführt. Diese Funktion ist erforderlich, wenn Sie den onRemeasured()-Callback benötigen. Verwenden Sie diese Schnittstelle direkt, anstatt LayoutAwareModifierNode zu verwenden, wenn Sie keine anderen Callbacks benötigen. (If6fb0)

Version 1.10

Version 1.10.6

25. März 2026

androidx.compose.ui:ui-*:1.10.6 ist veröffentlicht. Version 1.10.6 enthält diese Commits.

Version 1.10.5

11. März 2026

androidx.compose.ui:ui-*:1.10.5 ist veröffentlicht. Version 1.10.5 enthält diese Commits.

Version 1.10.4

25. Februar 2026

androidx.compose.ui:ui-*:1.10.4 ist veröffentlicht. Version 1.10.4 enthält diese Commits.

Version 1.10.3

11. Februar 2026

androidx.compose.ui:ui-*:1.10.3 ist veröffentlicht. Version 1.10.3 enthält diese Commits.

Version 1.10.2

28. Januar 2026

androidx.compose.ui:ui-*:1.10.2 ist veröffentlicht. Version 1.10.2 enthält diese Commits.

Version 1.10.1

14. Januar 2026

androidx.compose.ui:ui-*:1.10.1 ist veröffentlicht. Version 1.10.1 enthält diese Commits.

Fehlerkorrekturen

  • Ein Absturz bei pausierbaren Composables wurde behoben, wenn sie mit LookaheadScope animiert wurden (I7e649, b/469669851).
  • Ein Fehler in Jetpack Compose Popup wurde behoben, bei dem absolute Koordinaten der Ankergrenzen an PopupPositionProvider übergeben wurden, was zu einer falschen Platzierung von Pop-ups führte. Bei der Berechnung der Positionierung von Pop-ups werden jetzt die richtigen relativen Koordinaten verwendet.(1f7edf,b/469940907)

Version 1.10.0

3. Dezember 2025

androidx.compose.ui:ui-*:1.10.0 ist veröffentlicht. Version 1.10.0 enthält diese Commits.

Version 1.10.0-rc01

19. November 2025

androidx.compose.ui:ui-*:1.10.0-rc01 ist veröffentlicht. Version 1.10.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Senden Sie visibilityChanged-Callbacks mit „false“, wenn minDurationMs nicht null ist. (2ac08b8, b/456384555)
  • Der onVisibilityChanged-Callback darf nicht aufgerufen werden, wenn der Knoten anfangs nicht sichtbar ist. (3969e8d, b/447364998)

Version 1.10.0-beta02

5. November 2025

androidx.compose.ui:ui-*:1.10.0-beta02 ist veröffentlicht. Version 1.10.0-beta02 enthält diese Commits.

Version 1.10.0-beta01

22. Oktober 2025

androidx.compose.ui:ui-*:1.10.0-beta01 ist veröffentlicht. Version 1.10.0-beta01 enthält diese Commits.

API-Änderungen

  • Fügt eine Optimierung für das Senden von Fokusänderungen hinzu. Dies kann mit isOptimizedFocusEventDispatchEnabled = false deaktiviert werden (I919fb, b/449228515).
  • Alle APIs für indirekte Berührungen werden aktualisiert, sodass der Name „APIs für indirekte Zeiger“ verwendet wird, um mit APIs für Zeigereingabe übereinzustimmen. (I238ce, b/451607214)
  • Die Funktionen TextDirection, TextAlign, Hyphens, FontSynthesis und valueOf geben jetzt IllegalArgumentException aus, wenn sie einen unbekannten Wert empfangen. (I07c67)
  • Aktualisieren Sie CompositionDataTree.makeTree, um Standardwerte anstelle der Wrapper-Funktion zu übergeben. (Id64a6, b/445229688)
  • Die Testregel-APIs createComposeRule, createAndroidComposeRule und createEmptyComposeRule, die den Parameter effectContext akzeptieren, sind stabil und der Parameter wird standardmäßig auf EmptyCoroutineContext festgelegt. (If400c, b/450540702)
  • UnplacedStateAwareModifierNode wurde in UnplacedAwareModifierNode umbenannt (I6a551, b/449719932)
  • Optimierung der Inhaltserfassung rückgängig machen (Ic000b, b/442364065)
  • Das Funktions-Flag ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabled wurde hinzugefügt. Dadurch konnte die Leistung optimiert werden, da für Koordinatenanfragen wie LayoutCoordinates.positionInRoot() die zwischengespeicherten Offsets verwendet werden, die wir bereits in RectManager haben, anstatt den gesamten Baum bei jedem Aufruf zu durchlaufen. (Ieaadc)

Fehlerkorrekturen

  • PlaceholderSpan verwendet jetzt die nicht lineare Schriftgrößenskalierung für die Größenanpassung (Id2ead, b/324462728).
  • Verwenden Sie ViewCompat, um haptische Feedbackkonstanten auszuführen, die auf Plattformebene unterstützt werden. Dabei wird auf die Fallback-Unterstützung für neuere Konstanten zurückgegriffen. (Ib5a00)

Version 1.10.0-alpha05

8. Oktober 2025

androidx.compose.ui:ui-*:1.10.0-alpha05 ist veröffentlicht. Version 1.10.0-alpha05 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, durch den verschachtelte Pop-ups fälschlicherweise oben auf dem Bildschirm positioniert wurden. Sie werden jetzt korrekt am übergeordneten Pop-up verankert. (Id4603, b/191279752)
  • Ein Problem mit dem Fokus-Wrapping bei anderen Ansichten in der Hierarchie wurde behoben. (I95223, b/446028624)
  • Es wurden Felder mit Inline-Parametern korrigiert, die im Inspector in von Kotlin 2.2.20 generierten Lambdas fehlen (I9855d, b/447110005).
  • Problem behoben, bei dem Autofill-Ressourcen zwischen UI- und Foundation-Modulen überschrieben wurden (I5da5a)

Externer Beitrag

  • Das UiModes-Objekt wurde in „AndroidUiModes“ umbenannt, um widerzuspiegeln, dass seine Konstanten aus der Android API stammen. (Ia0a77)

Version 1.10.0-alpha04

24. September 2025

androidx.compose.ui:ui-*:1.10.0-alpha04 ist veröffentlicht. Version 1.10.0-alpha04 enthält diese Commits.

API-Änderungen

  • Die Compose-Testregelvariante, die einen CoroutineContext-Parameter akzeptiert, wurde in die stabile Version aufgenommen. Die experimentelle Anmerkung wurde entfernt und Entwickler müssen sich nicht mehr für die Verwendung dieser API anmelden. (I74e6e)
  • "ComposeUiFlags.isRectTrackingEnabled" wurde entfernt. Diese Logik ist nicht immer aktiviert. (Id78df)
  • Inline-Überladung von Updater#set wurde eingestellt, da der bereitgestellte Wert zu oft in eine Wrapperklasse eingeschlossen wurde (Id679e)
  • Die semantische Eigenschaft „onAutofillText“ als veraltet markieren. (I6f81c)
  • UnplacedStateAwareModifierNode wurde eingeführt. Sie stellt einen Callback bereit, der aufgerufen wird, wenn das zuvor platzierte Layout nicht mehr platziert wird. (I8fdd8, b/309776096)
  • Die Dokumentation von RetainObserver.onRetained wurde korrigiert und RetainObserver.onUnused wurde hinzugefügt, was RememberObserver.onAbandoned entspricht. (Ia6fc5)
  • onVisibilityChangedNode() wurde hinzugefügt. Diese Funktion generiert ein Modifier.Node, das von Modifier.onVisibilityChanged() über die Delegierung verwendet wird. So können Sie diese Funktion in Ihrem benutzerdefinierten Modifier.Node erweitern. (I70d84, b/443001320)

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem Inline-Inhalte nicht gerendert wurden, wenn sie sich in der letzten Zeile von mehrzeiligem, gekürztem Text befanden, obwohl der Platzhalter vor dem gekürzten Bereich stand. (I76aaf, b/441829208)

Version 1.10.0-alpha03

10. September 2025

androidx.compose.ui:ui-*:1.10.0-alpha03 ist veröffentlicht. Version 1.10.0-alpha03 enthält diese Commits.

API-Änderungen

  • Benennt DelegatableNode.invalidateLayoutForSubtree in DelegatableNode.invalidateMeasurementForSubtree um. (I94257, b/430106107)
  • Entfernt redundante isInHiddenAccessibilitySubtree-Matcher. (I4476c, b/443792965)
  • Es werden auf Gruppenschlüsseln basierende Compose-Stacktraces eingeführt, die standardmäßig für alle minimierten Apps aktiviert sind. Das ProGuard-Mapping für diese Traces wird ab Kotlin 2.3.0 vom Compose-Compiler-Gradle-Plug-in generiert. (Ifbcb5)
  • Modifier.skipToLookaheadSize verwendet jetzt standardmäßig eine aktivierte Lambda-Funktion, die das Überspringen der Größe nur dann ermöglicht, wenn der Übergang für gemeinsam genutzte Elemente aktiv ist, genau wie Modifier.skipToLookaheadPosition. (Ibe0f5, b/432485585)
  • ComposeUiFlags.isOutOfFrameDeactivationEnabled wurde entfernt und diese Funktion ist jetzt immer aktiviert. (I421ed)
  • Factory-Funktionen zum Erstellen von FillableData-Instanzen in das Companion-Objekt verschieben. Rufen Sie statt FillableData(value) die neuen Factory-Methoden FillableData.createFrom(value) auf. (I2e200, b/441719650)
  • Wir führen BeyondBoundsLayoutModifierNode einen neuen Modifikator-Knoten ein, um das Layout für die Fokus-Suche über die Grenzen hinaus zu erweitern. (I39be1, b/416133658)
  • FocusTargetModifierNode.requestFocus() leitet den Fokus an eines seiner untergeordneten Elemente weiter, wenn es selbst nicht fokussierbar ist. Dies entspricht jetzt FocusRequester.requestFocus() und FocusRequesterModifierNode.requestFocus(). Wenn Sie dieses Verhalten nicht benötigen, setzen Sie das Flag ComposeUiFlags.isRequestFocusOnNonFocusableFocusTargetEnabled in Ihrer App auf „false“ (Icca5c, b/436863604).
  • DP-basierte Fenstergröße in WindowInfo angeben (I9322b, b/424442112)
  • Flag isNestedScrollDispatcherNodeFixEnabled wurde entfernt. (If451a)
  • Unterstützung für Datumswerte beim automatischen Ausfüllen in der FillableData API hinzugefügt. val dateMillisValue: Long wurde hinzugefügt, um Datumsangaben abzurufen, und ein entsprechender FillableData(dateMillisValue: Long)-Konstruktor wurde hinzugefügt, um datumsbasierte FillableData-Instanzen zu erstellen. (Id072a)

Externer Beitrag

  • Das UiModes-Objekt wird eingeführt, um Konstanten zu deklarieren, die für die UiMode-Annotation verwendet werden. (I03cb8)

Version 1.10.0-alpha02

27. August 2025

androidx.compose.ui:ui-*:1.10.0-alpha02 ist veröffentlicht. Version 1.10.0-alpha02 enthält diese Commits.

API-Änderungen

  • Aktualisieren Sie FillableData, um Komponenten zu unterstützen, die nicht aus Text bestehen, z. B. Ein/Aus-Schalter und Listen, einschließlich boolescher und Ganzzahlwerte in FillableData und Factory-Konstruktoren zum Erstellen boolescher und Listeninstanzen von FillableData, die in die AutofillValue der Plattform übersetzt werden. Die entsprechende semantische Property und Aktion werden ebenfalls hinzugefügt. (Ia8105, Icc5cf)
  • Im Nicht-Touch-Modus weist das Ansichtssystem einem der fokussierbaren Elemente auf dem Bildschirm den anfänglichen/Standardfokus zu. Diese Funktion wird in Compose eingefügt und kann durch Aktivieren von ComposeUiFlags.isInitialFocusOnFocusableAvailable aktiviert werden. (Ib9178)
  • Flag isPointerInteropFilterDispatchingFixEnabled wurde entfernt. (Iaa589)
  • Flag isNestedScrollInteropPostFlingFixEnabled wurde entfernt. (I2a756)
  • Fügen Sie isHiddenFromAccessibility()- und isInHiddenAccessibilitySubtree()-Semantik-Matcher hinzu. (I9f5a1)
  • runCurrent() wurde MainTestClock hinzugefügt, um alle anstehenden Aufgaben im zugrunde liegenden Scheduler auszuführen. Dies dient zur Unterstützung von Tests auf einem StandardTestDispatcher, bei dem Aufgaben dem Scheduler hinzugefügt werden, anstatt sofort ausgeführt zu werden, wenn sie eine Verzögerung von 0 ms haben. Für einen Test kann ein StandardTestDispatcher eingerichtet werden, indem ein ComposeTestRule erstellt und ein StandardTestDispatcher an ihn übergeben wird. Standardmäßig werden Tests auf einem UnconfinedTestDispatcher ausgeführt. In diesem Fall muss runCurrent() nie aufgerufen werden.
  • Es wurde Unterstützung für das Ausführen von Tests auf einem StandardTestDispatcher hinzugefügt. Bisher wurde das Test-Framework mit einer UnconfinedTestDispatcher eingerichtet, die sich in einigen Punkten von einer Produktionsumgebung unterscheidet. Sie können diese Einrichtung jetzt ändern, indem Sie eine eigene StandardTestDispatcher erstellen und sie der effectContext hinzufügen, wenn Sie Ihre ComposeTestRule erstellen (oder wenn Sie runComposeUiTest aufrufen). (I334d0, b/254115946)
  • Aktualisieren Sie den Code zum Erstellen einer Baumstruktur von Knoten aus SlotTree. (I997d3)

Fehlerkorrekturen

  • Compose UI installiert jetzt lebenszyklusbewusste RetainScopes auf Android. Beim Standardverhalten werden jetzt retain-Werte bei Konfigurationsänderungen beibehalten. (Id4a09, b/177562901)

Externer Beitrag

  • Fügt die Möglichkeit hinzu, dass VelocityTracker die Geschwindigkeit eines Zeigers basierend auf verfolgten Zeigerereignissen mit plattformspezifischem Verhalten berechnet. (I621e8)

Version 1.10.0-alpha01

13. August 2025

androidx.compose.ui:ui-*:1.10.0-alpha01 ist veröffentlicht. Version 1.10.0-alpha01 enthält diese Commits.

API-Änderungen

  • Bei Zeigerbewegungen mit einer Maus oder einem Touchpad in einem ComposeView wird der Fokus jetzt automatisch entfernt, wenn die Zeigerbewegung nicht innerhalb der Grenzen des fokussierten Knotens erfolgt. Das Ergebnis ist eine UX, bei der der Fokus durch Tippen entfernt wird. Das ist bei der Verwendung von Zeigereingabegeräten intuitiver als das aktuelle Verhalten. Dieses Verhalten kann mit einer neuen AbstractComposeView.isClearFocusOnPointerDownEnabled-API deaktiviert werden. (I6322b, b/282963174)
  • Die FillableData-Schnittstelle wurde eingeführt, um neben Text auch verschiedene Arten von Autofill-Komponenten zu unterstützen. (If9bd2)
  • Neue API zum dynamischen Aktivieren und Deaktivieren freigegebener Elemente, mit der auch berücksichtigt werden kann, ob bereits ein Übergang eines freigegebenen Elements läuft. Neue API zum Einrichten alternativer Zielgrenzen, wenn das freigegebene Zielelement während des Übergangs entfernt wird. Neue API zum Abrufen der LayoutCoordinates eines LookaheadScope. (I18dd4, b/409819304, b/395670637)
  • Einführung des Flags isNestedScrollInteropIntegerPropagationEnabled zur Steuerung des Experiments zum Senden korrekter Ganzzahlen an die verschachtelte Scroll-Interop. (If8316)
  • requestFocusForChildInRootBounds() wurde zu DelegatableNode hinzugefügt, um den Fokus auf ein untergeordnetes Element zu verschieben, das sich mit dem angegebenen Rechteck überschneidet. (I001ef)
  • Entfernte Flags: isOnScrollChangedCallbackEnabled, isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled, isFlingContinuationAtBoundsEnabled, isAutomaticNestedPrefetchEnabled, DragGesturePickUpEnabled, isPointerInteropFilterDispatchingFixEnabled, isNestedScrollInteropPostFlingFixEnabled, isNestedScrollDispatcherNodeFixEnabled (I36c18)
  • Die Anmerkung @CheckResult wurde den SemanticsNode-Such- und ‑Auswahlfunktionen hinzugefügt, um die Verwendung zurückgegebener Werte zu erzwingen. (I6f86e, b/201652748)
  • Leistung des Prozesses zum Erfassen von Inhalten verbessern (I3c7c0)
  • Einführung von CompositionLocal, mit dem der Pinsel für die Hervorhebung der erfolgreichen Autofill-Ausfüllung geändert werden kann. (I52329)
  • Es wurde eine neue „Interpolatable“-Schnittstelle eingeführt, die eine automatische Interpolation zwischen verschiedenen Typen ermöglicht, sofern ein Typ weiß, wie er vom anderen konvertiert werden kann. Diese Schnittstelle wird in verschiedenen Compose-Typen wie „Brush“ und „Shape“ verwendet, kann aber auch extern genutzt werden. (I58eab)
  • „Scrollable“ unterstützt jetzt zweidimensionale Mausrad-Scrollereignisse besser. Es gibt eine neue Test-API, mit der Sie Anwendungsfälle in MouseInjectionScope testen können. Außerdem haben wir eine neue Überladung für Scrollmethoden in MouseInjectionScope und ein Flag zur Steuerung des neuen Verhaltens namens isMouseWheel1DAxisLockingEnabled (I136df) eingeführt.
  • DeviceConfigurationOverrides für Tastaturtyp und -status, Navigationstyp und -status, Touchscreen-Status und UI-Modustyp hinzugefügt (I282f0)
  • Es wurde ein neues LineHeightStyle.Mode namens Tight hinzugefügt. In diesem Modus werden auch dann kleinere Zeilenhöhen erzwungen, wenn dadurch möglicherweise höhere Glyphen abgeschnitten werden. (Id3849)
  • BaselineShift hat jetzt einen nicht angegebenen Wert, um Boxing zu verhindern. BaselineShift, Hyphens, LineBreak, TextAlign und TextDirection haben jetzt isSpecified-Hilfsfunktionen. Hyphens, TextAlign, TextDecoration und TextDirection haben jetzt valueOf()- und Wertmethoden, die eine effiziente Serialisierung/Deserialisierung ermöglichen. (I8d44c)
  • Es wurde eine neue getDisplayName-Methodenschnittstelle hinzugefügt, um benutzerdefinierte Anzeigenamen für Vorschauparameterinstanzen zu ermöglichen. (I19bdf, b/241699422)
  • Wenn Dp-Werte mit „Unspecified“ verglichen werden und dabei „kleiner als“ oder „größer als“ verwendet wird, wird jetzt immer „false“ zurückgegeben. Wenn Sie Dp.compareTo(Unspecified) verwenden, wird immer 0 zurückgegeben. Wenn Sie das Flag ComposeUiUnitFlags.isDpCompareToChanged auf „false“ setzen, wird das vorherige Verhalten von Dp.compareTo() wiederhergestellt. In diesem Fall wird beim Vergleich von „Unspecified“ mit „less-than“ und „greater-than“ nicht immer „false“ zurückgegeben und compareTo() mit „Unspecified“ entspricht dem Verhalten von Float.compareTo(). (Ifa88b, b/429221319)

Fehlerkorrekturen

  • Verschieben des Standard-minSdk von API 21 auf API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
  • Es wurde ein Problem behoben, das das Erstellen neuer AndroidComposeViews während einer Übergangsphase verhindert hat. (I2e23e, b/340894487, b/287484338)
  • Es wurde ein Farbfehler behoben, der bei der Verwendung eines Vektordrawables auftrat, das eine Farbe verwendet und bei dem fillColor weder vollständig opak noch vollständig transparent ist. (I3b041, b/328677973)
  • Es wurde ein Problem behoben, bei dem Symbole, die über painterResource mit themenspezifischen Farben geladen wurden, bei Designänderungen nicht aktualisiert wurden. (I85ea0, b/424416571)
  • Einführung der Semantik von onFillData und fillableData (I45d9e)
  • Die plattformspezifische Statuscodierung ist in StateRestorationTester jetzt immer aktiviert. Dadurch wird das Testverhalten an die Wiederherstellung des tatsächlichen Anwendungsstatus angepasst, z. B. die Parcelization unter Android. (I38211, b/408154192, b/382294247)
  • Behebt gelegentliche Abstürze beim Anfordern des Fokus. (57b31a11, b/431111149)

Version 1.9

Version 1.9.5

19. November 2025

androidx.compose.ui:ui-*:1.9.5 ist veröffentlicht. Version 1.9.5 enthält diese Commits.

Version 1.9.4

22. Oktober 2025

androidx.compose.ui:ui-*:1.9.4 ist veröffentlicht. Version 1.9.4 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem Inline-Textinhalte verschwanden, wenn sie sich in der letzten Zeile eines mehrzeiligen, gekürzten Texts befanden, obwohl sich die Inline-Inhalte nicht im gekürzten Bereich befanden. (I76aaf, b/441829208)
  • Ein Problem wurde behoben, bei dem onLayoutRectChanged-Modifikator-Callbacks nicht immer aufgerufen wurden, wenn debounceMillis nicht null ist. (72aba47, b/445324854)

Version 1.9.3

8. Oktober 2025

androidx.compose.ui:ui-*:1.9.3 ist veröffentlicht. Version 1.9.3 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, bei dem onVisibilityChanged/onFirstVisible/onLayoutRectChanged-Modifikatoren keine Callbacks erhalten haben, wenn das zu verschiebende Layout mehr als 170 Nachfolger hatte. (4f2fdd, b/445356774)

Version 1.9.2

24. September 2025

androidx.compose.ui:ui-*:1.9.2 ist veröffentlicht. Version 1.9.2 enthält diese Commits.

Fehlerkorrekturen

  • Modifier.onVisibilityChanged() wird jetzt korrekt ausgelöst, wenn ein Knoten getrennt oder wiederverwendet wird. (Ic5ce20)
  • In Modifier.onVisibilityChanged() und onLayoutRectChanged() werden jetzt übergeordnete Layouts mit placeWithLayer() zum Platzieren untergeordneter Elemente richtig verarbeitet. (Ia05ac9)
  • Bei Modifier.onVisibilityChanged() und onLayoutRectChanged() müssen Sie in Grenzsituationen wie dem Entfernen einer Ebene/Ebenenmodifikators oder dem Aktualisieren von Ebeneneigenschaften eine entsprechende Benachrichtigung einblenden. (Ia05ac)

Version 1.9.1

10. September 2025

androidx.compose.ui:ui-*:1.9.1 ist veröffentlicht. Version 1.9.1 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Farbfehler behoben, der bei der Verwendung eines Vektordrawables auftrat, das eine Farbe verwendet und bei dem fillColor weder vollständig opak noch vollständig transparent ist. (I3b041, b/328677973)

Version 1.9.0

13. August 2025

androidx.compose.ui:ui-*:1.9.0 ist veröffentlicht. Version 1.9.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.8.0

  • Wichtige Änderungen in Version 1.9.0 werden in diesem Blogpost beschrieben.
  • Für Lint-Prüfungen, die mit Compose ausgeliefert werden, ist jetzt mindestens AGP-Version 8.8.2 erforderlich. Wenn Sie AGP nicht aktualisieren können, können Sie stattdessen Lint aktualisieren, indem Sie android.experimental.lint.version=8.8.2 (oder eine neuere Version) in Ihrer gradle.properties verwenden. Wenn Sie Compose-Lint-Prüfungen in der IDE ausführen möchten, ist Android Studio Ladybug oder höher erforderlich.
  • Breaking Change: Die graphicsLayer-Modifikatorknoten implementieren jetzt SemanticsModifierNode. Dies kann dazu führen, dass dem Semantikbaum neue SemanticsNodes hinzugefügt werden, was wiederum zu Testfehlern in Tests führen kann, die Annahmen über die Struktur des Semantikbaums treffen. Tests, in denen onChild, onParent, onSibling und ähnliche Methoden zum Erstellen von Zusicherungen verwendet werden, können beispielsweise fehlschlagen, wenn zwischen dem aktuellen und dem Zielknoten ein neuer Knoten hinzugefügt wird. Die bevorzugte Methode, diese Fehler zu beheben, besteht darin, dem Zielknoten direkt ein testTag hinzuzufügen. Eine weitere Möglichkeit ist die Verwendung eines weniger strengen Matchers wie onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)

Version 1.9.0-rc01

30. Juli 2025

androidx.compose.ui:ui-*:1.9.0-rc01 ist veröffentlicht. Version 1.9.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem Symbole, die über painterResource mit themenspezifischen Farben geladen wurden, bei Änderungen des Systemdesigns nicht aktualisiert wurden. (I85ea0, b/424416571)
  • Es wurden Fehler in den APIs 21(Lollipop) und 28(Pie) behoben, bei denen wichtige Grafikmethoden bei der Optimierung umbenannt wurden. (Iebf99, b/425120571, b/420462749)
  • Achten Sie darauf, dass neu eingefügte onLayoutRectChanged-Modifikatoren anfangs zurückgerufen werden. (l9aa91), (lb348a)
  • Problem behoben, bei dem ein Offset-Cache fälschlicherweise ungültig gemacht wurde, was dazu führte, dass onLayoutRectChanged-Modifizierer mit falschen Koordinaten aufgerufen wurden (ibd4cd), (lddc57)
  • Korrektur für gedrehte/verzerrte Layouts, die durch onLayoutRectChanged-Modifikatoren falsche Koordinaten erhalten (lddc57, b/426750475)

Externer Beitrag

  • Ein Problem wurde behoben, bei dem dragAndDropSource-Elemente in LazyList beim Scrollen verschwinden. Danke, Victor Rendina! (dc3bcd3, b/425894792)

Version 1.9.0-beta03

16. Juli 2025

androidx.compose.ui:ui-*:1.9.0-beta03 ist veröffentlicht. Version 1.9.0-beta03 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem gleichmäßig verschwommene innere Schatten sich bei einem Offset nicht richtig bewegten.

Version 1.9.0-beta02

2. Juli 2025

androidx.compose.ui:ui-*:1.9.0-beta02 ist veröffentlicht. Version 1.9.0-beta02 enthält diese Commits.

API-Änderungen

  • Ändert das Companion-Objekt in „experimental“, damit es mit der Klasse übereinstimmt. (I8452a)
  • Experimentelles Flag isTrackFocusEnabled (I003fd) entfernt

Fehlerkorrekturen

  • Wenn keine WindowInsets in den Inhalt der ComposeView eingreifen, werden keine WindowInsetsRulers-Werte angegeben. (I71221)

Version 1.9.0-beta01

18. Juni 2025

androidx.compose.ui:ui-*:1.9.0-beta01 ist veröffentlicht. Version 1.9.0-beta01 enthält diese Commits.

Aktuelle Änderungen

  • In den graphicsLayer-Modifikatorknoten wird jetzt SemanticsModifierNode implementiert. Dies kann dazu führen, dass dem Semantikbaum neue SemanticsNodes hinzugefügt werden, was wiederum zu Testfehlern in Tests führen kann, die Annahmen über die Struktur des Semantikbaums treffen. Tests, in denen onChild, onParent, onSibling und ähnliche Methoden verwendet werden, um Behauptungen aufzustellen, können fehlschlagen, wenn zwischen dem aktuellen und dem Zielknoten ein neuer Knoten hinzugefügt wird. Die bevorzugte Methode, diese Fehler zu beheben, besteht darin, dem Zielknoten direkt ein testTag hinzuzufügen. Eine weitere Möglichkeit ist die Verwendung eines weniger strengen Matchers wie onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)

API-Änderungen

  • ShadowContext wurde in eine versiegelte Schnittstelle geändert (I3ce40)
  • Es wurde eine modulübergreifende Möglichkeit zum Erstellen eines Indirect Touch-Ereignisses (zum Testen) hinzugefügt (I22e4c).
  • MachtIndirectTouchEvent.nativeEvent experimentell. (I6fda5)
  • Die API-Oberfläche wird auf Grundlage des Feedbacks des API-Gremiums überarbeitet. (Ibf378)
  • Entferne die Konstante FrameRateCategory.NoPreference. Benennen Sie Modifier.requestedFrameRate in Modifier.preferredFrameRate um. (I2f976)
  • WindowInsetsRulers: rulersIgnoringVisibility wurde auf „Maximum“ geändert. getDisplayCutoutBounds() wurde in eine Erweiterungsfunktion von PlacementScope geändert. WindowInsetsAnimationProperties wurde in WindowInsetsAnimation und getAnimationProperties() in getAnimation() geändert. (I3816f)
  • Klasse ShadowParams zu Shadow geändert (I11cca)
  • Paket für die Framerate-API von androidx.compose.ui.ui in androidx.compose.ui ändern (I8994e)
  • InsetsRulers wurde in gemeinsamen Code mit dem Namen WindowInsetsRulers geändert. Die API wurde vereinfacht, sodass alle Insets WindowInsetsRulers sind. Animationsattribute, die nicht für Lineale gelten, wurden in eine AnimationProperties-Klasse extrahiert. Mit WindowInsetsRulers.innermostOf() können mehrere WindowInsetsRulers zusammengeführt werden. (I2f0c6, b/415012444)
  • Es wurde eine Tooling-API zum Parsen von Quellinformationen hinzugefügt, die vom Compose-Compiler hinzugefügt werden. (Iceaf9, b/408492167)

Fehlerkorrekturen

  • Das Flag für isGetFocusedRectReturnEmptyEnabled wurde entfernt, da die Funktion vollständig überprüft wurde. (Ife722)
  • Ein Fehler in performScrollToNode wurde behoben, der in einigen Fällen nicht den Zielknoten erreichte. Mit dieser Korrektur sollte in diesen Fällen immer der Zielknoten erreicht werden. Eine Nebenwirkung dieser Änderung ist, dass die genaue Scrollposition am Ende der Aktion jetzt anders sein kann. Das wirkt sich auf Screenshot-Tests und Tests aus, bei denen die genaue Scrollposition angenommen wird. (I2c8a1)

Version 1.9.0-alpha04

4. Juni 2025

androidx.compose.ui:ui-*:1.9.0-alpha04 ist veröffentlicht. Version 1.9.0-alpha04 enthält diese Commits.

API-Änderungen

  • Es wurden Modifier-APIs für anpassbare Schatten hinzugefügt. (I2058d, b/160665122)
  • Fügen Sie eine SemanticsModifierNode.isImportantForBounds-Property hinzu, die bestimmt, ob der Knoten bei der Berechnung von Grenzen berücksichtigt werden soll. Die Eigenschaft ist standardmäßig auf „true“ gesetzt und kann auf „false“ gesetzt werden, um anzugeben, dass der Knoten nicht für die Grenzen berücksichtigt werden soll. (I7ebec)
  • Fügen Sie eine SemanticsPropertyKey-Factory-Funktion hinzu, um Android-spezifische Semantikeigenschaften zu deklarieren, die als Barrierefreiheitsextras über AccessibilityNodeInfo.getExtras verfügbar gemacht werden. (I2ed51)
  • Die Verwendung von ComposeUiFlags.isRemoveFocusedViewFixEnabled wurde entfernt und das Flag wurde eingestellt. (I50328)
  • Neues anpassbares Shadow-Framework Dazu gehören DropShadowPainter und InnerShadowPainter sowie die DropShadow/InnerShadow-Abhängigkeiten. Die Schatteninfrastruktur wird so freigegeben, dass dieselben generierten Schatten an mehreren Aufrufstellen verwendet werden können, ohne dass die Schatten n-mal neu generiert werden müssen. (I24f7a, b/160665122)
  • Führen Sie CompositeShader und CompositeShaderBrush ein, um ein zusammengesetztes Ergebnis zwischen zwei Shadern zu erstellen. Fügen Sie außerdem ShaderBrush#transform hinzu, um eine Transformationsmatrix für den Shader festzulegen. (I2621a, b/160665122)

Fehlerkorrekturen

  • Ein Fehler in NestedScrollInteropConnection wurde behoben, bei dem Fling-Methoden in Bezug auf Ansichten in der falschen Reihenfolge waren. (I56ad4)
  • Bisher wurden Dialogfelder, die im Vollbildmodus gerendert wurden, nicht im Bereich der Display-Aussparung gerendert. Dieser Fehler wurde behoben. Dialogfelder mit decorFitsSystemWindows = false und usePlatformDefaultWidth = false können jetzt den Bereich des Displayausschnitts nutzen. (I9e975)
  • Ein Fehler wurde behoben, durch den die grüne Fokusanzeige von TalkBack nicht gezeichnet wurde, nachdem sie aktiviert wurde, während sich die Compose-App im Hintergrund befand. (Ifd12a)

Version 1.9.0-alpha03

20. Mai 2025

androidx.compose.ui:ui-*:1.9.0-alpha03 ist veröffentlicht. Version 1.9.0-alpha03 enthält diese Commits.

API-Änderungen

  • Mit dem Flag ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled wird dafür gesorgt, dass das Rechteck auf einen leeren Wert gesetzt wird, wenn in einem ComposeView nichts fokussierbar ist. Dadurch wird verhindert, dass bei einer Fokus-Suche die Ansicht ausgewählt wird, auf die sich fokussiert werden soll. Das ist besonders wichtig, wenn eine IME eine NEXT-Option hat, bei der sie möglicherweise versucht, sich auf ComposeView zu konzentrieren, und requestFocus() fehlschlägt. (Ibd0e2, b/369256395)
  • Flag isNestedScrollDispatcherNodeFixEnabled einführen. (I0d24a)
  • DialogProperties dialogContentTitle in windowTitle umbenennen (Ibd27b)
  • Die Modifikatoren Modifier.onFirstVisible und Modifier.onVisibilityChanged wurden eingeführt. Sie sind High-Level-Modifikatoren, die auf Modifier.onLayoutRectChanged aufbauen. Diese Modifizierer wurden speziell für viele gängige Anwendungsanforderungen wie das Protokollieren von Impressionen und das automatische Abspielen von Videos entwickelt. Sie sind auf Leistung ausgelegt, sodass sie in wichtigen listenbasierten Szenarien verwendet werden können, ohne dass die Scrollleistung beeinträchtigt wird. Zusätzlich zu diesen Modifier-APIs wurden weitere APIs für RelativeLayoutBounds hinzugefügt, um diese Anwendungsfälle zu unterstützen und Entwicklern die Möglichkeit zu geben, ähnliche benutzerdefinierte Modifier zu erstellen, die genau auf ihren Anwendungsfall zugeschnitten sind. (I759b8)
  • Ändern Sie setDiagnosticStackTraceEnabled in „experimental“, um die zukünftige Entwicklung dieser Funktion zu berücksichtigen. (I11db3)
  • Einführung von Modifier.scrollable2D, Scrollable2DState und Companion-APIs für die Statusgenerierung Außerdem wurden allgemeine Funktionen für die Scroll-Erweiterung eingeführt. (Ic61c8, b/214410040)
  • Compose-64-Bit-Farbwerte sind nicht direkt mit Android-ColorLongs-Werten vergleichbar, da die Farbraum-IDs für einige Farbräume nicht in der richtigen Reihenfolge sind. Zum Konvertieren in und aus Android-Farbräumen werden zwei neue APIs hinzugefügt: toColorLong() und fromColorLong(). (I36899)
  • ViewConfiguration.minimumFlingVelocity wurde eingeführt, um die Steuerung der Mindestgeschwindigkeit für das Flinging zu ermöglichen. (I11aab)

Version 1.9.0-alpha02

7. Mai 2025

androidx.compose.ui:ui-*:1.9.0-alpha02 ist veröffentlicht. Version 1.9.0-alpha02 enthält diese Commits.

API-Änderungen

  • Fügen Sie dialogContentTitle in DialogProperties ein, um den Titel des Inhaltsfensters festzulegen. bf9d670

Fehlerkorrekturen

  • Die Lineale für Fenster-Insets wurden vorübergehend deaktiviert, während interne Tests korrigiert werden. 8d1402
  • Es wurde korrigiert, wie Änderungen bei der Zeigereingabe dem VelocityTracker in DragGestureNode hinzugefügt werden. Dies kann mit dem neuen Flag isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled gesteuert werden.254ddb

Version 1.9.0-alpha01

23. April 2025

androidx.compose.ui:ui-*:1.9.0-alpha01 ist veröffentlicht. Version 1.9.0-alpha01 enthält diese Commits.

Änderungen beim Verhalten

  • Für Lint-Prüfungen, die mit Compose ausgeliefert werden, ist jetzt mindestens AGP-Version 8.8.2 erforderlich. Wenn Sie AGP nicht aktualisieren können, können Sie stattdessen Lint aktualisieren, indem Sie android.experimental.lint.version=8.8.2 (oder eine neuere Version) in Ihrer gradle.properties verwenden. Wenn Sie Compose-Lint-Prüfungen in der IDE ausführen möchten, ist Android Studio Ladybug oder höher erforderlich.

API-Änderungen

  • Entfernt das Flag, um Trace-Anweisungen für den Hit-Pfad-Tracker zu aktivieren (Debug). (I1b2a1)
  • InnerRectRulers und OuterRectRules wurden in Methoden geändert. Der Parameter „name“ wurde aus der öffentlichen API RectRulers entfernt. DerivedRulers ist jetzt eine Konstruktoroption für vertikale und horizontale Lineale. MergedHorizontalRulers und MergedVerticalRulers wurden durch die Methoden minOf und maxOf zum Generieren von Instanzen ersetzt. (Iee89f, b/408192133)
  • Stellen Sie androidx.compose.ui.LocalSavedStateRegistryOwner zugunsten von androidx.savedstate.compose.LocalSavedStateRegistryOwner ein. (I5439f, b/377946781)
  • Füge ein Modifier.keepScreenOn hinzu, damit das Display nicht in den Ruhemodus wechselt, wenn es sich in der Nähe befindet. (Ib5af4, b/408284174)
  • Fügen Sie die neue Semantikeigenschaft Shape hinzu, die festgelegt werden kann, wenn sich die Form des UI-Elements von seinem umgebenden Rechteck unterscheidet, z.B. bei einem Rechteck mit abgerundeten Ecken. (I1376f)
  • Problem mit dem Dispatching von Zeigerereignissen in AndroidViews behoben und Flag isPointerInteropFilterDispatchingFixEnabled zum Schutz von Änderungen hinzugefügt. (I0e272, b/372055500, b/408002332)
  • FocusRestorer pinnt das zuvor fokussierte Element nicht mehr an. Nutzer sollten einen Schlüssel verwenden, um sicherzustellen, dass das zuvor fokussierte Element denselben Kompositions-Hash hat, damit der Fokus erfolgreich wiederhergestellt wird. (I4203b, b/330696779)
  • Zulassen, dass ViewTreeObserver.OnScrollChanged durch „Compose“ ausgelöst wird. Dieses Verhalten wird unter dem Flag isOnScrollChangedCallbackEnabled eingeführt. Außerdem haben wir eine Erweiterungsfunktion von DelegatableNode dispatchOnScrollChanged eingeführt. (I34b9d, b/238109286)
  • currentCompositeKeyHash wurde eingestellt. Verwenden Sie stattdessen currentCompositeKeyHashCode. Die Ersatz-API codiert denselben Hash mit mehr Bits, wodurch die Wahrscheinlichkeit, dass zwei zufällige, nicht zusammenhängende Gruppen in der Kompositionshierarchie denselben Hash-Schlüssel haben, exponentiell sinkt. (I4cb6a, b/177562901)
  • Für Projekte, die mit Kotlin 2.0 veröffentlicht wurden, ist KGP 2.0.0 oder höher erforderlich (Idb6b5).
  • Unterstützung für Lint-Prüfung für FocusRequester hinzugefügt, um sicherzustellen, dass sie in der Komposition berücksichtigt wird (I6bf91)
  • Es wurde die Möglichkeit hinzugefügt, die bevorzugte Framerate oder Framerate-Kategorie für das Composable festzulegen, mit der es gerendert werden soll (Ie5201).
  • Native MotionEvent auf Android bereitstellen. (I17286)
  • getChecked() + setChecked(int) hinzufügen, isChecked + setChecked(boolean) verwerfen (Iaac9d)
  • Für den Modifikator graphicsLayer werden jetzt ein blendMode und ein colorFilter akzeptiert (Iab0e6).
  • Die Komposition LocalResources wurde lokal hinzugefügt, um Ressourcen abzufragen. Wenn LocalResources.current aufgerufen wird, wird die Komposition bei einer Änderung der Konfiguration neu erstellt. Bei Aufrufen von APIs wie stringResource() werden dann aktualisierte Werte zurückgegeben. (I50c13, b/274786917)
  • Experimentelle API für Composables zur Verarbeitung indirekter Touch-Ereignisse verfügbar machen (Icff57)
  • In dieser Version wurde die Berichterstellung für unbehandelte Ausnahmen verbessert, die während der Layout- und Zeichenphasen Ihrer zusammensetzbaren Inhalte ausgelöst werden. Bisher führte eine nicht abgefangene Ausnahme hier zum Absturz des Test-Runners und zum vorzeitigen Beenden der Test-Suite. Diese Ausnahmen können jetzt besser gemeldet werden, ohne dass die Testsuite beendet wird. (I9928b, b/314128080)
  • Die experimentelle GlobalAssertions API wurde eingestellt. Es war für die Ausführung von Barrierefreiheitsprüfungen vorgesehen. Verwenden Sie stattdessen enableAccessibilityChecks(). (I50aa5)
  • SemanticsNodeInteraction.performTextInputSelection ist nicht mehr experimentell und unterstützt jetzt einen zusätzlichen relativeToOriginal-Parameter, mit dem Sie die Auswahl entweder auf den ursprünglichen, nicht transformierten Text oder auf den transformierten Text anwenden können. (I3a905, b/261561038, b/277018945)
  • Einführung einer API zum Erstellen benutzerdefinierter Aufzählungslisten über AnnotatedString (I1d066, b/383269496, b/139326648)
  • runWithTimingDisabled wird zugunsten von runWithMeasurementDisabled eingestellt, da der Begriff das Verhalten klarer beschreibt: Alle Messwerte werden pausiert. Außerdem wird die MicrobenchmarkScope-Basisklasse verfügbar gemacht, da die runWithMeasurementDisabled-Funktion nicht neu deklariert werden kann, um den Zugriff zu öffnen, da sie inline ist. (I9e23b, b/389149423, b/149979716)
  • Die Devices API für UI-Tools wurde aktualisiert und enthält jetzt neuere Geräte. (Ia2ac1)
  • Fügen Sie der Sammlung von Vorschau-Bildschirmgrößen das Tablet-Hochformat hinzu, damit Entwickler größere Fenster berücksichtigen können (Ia1976).
  • Einführung der Trace Value API zum Markieren/Protokollieren von Traces mit Werten zu einem bestimmten Zeitpunkt. Trace-Werte werden in Prefetto als neuer Bereich angezeigt, der über die Zeitachse eines Trace zu sehen ist. Auf Android-Geräten werden sie mit Trace.setCounter implementiert. (Idcf48)

Fehlerkorrekturen

  • Problem mit dem Dispatching von Remember-Beobachtern in pausierbarer Komposition behoben, um zu vermeiden, dass „remembered“/„forgotten“ im selben Apply-Vorgang gesendet wird (I570b2, b/404645679, b/407931790)
  • android:dialogTheme kann jetzt festgelegt werden, um die Dialogfeldeigenschaften zu steuern, wenn decorFitsSystemWindows auf „false“ gesetzt ist (I7922f, b/246909281).
  • Ein Fehler wurde behoben, bei dem ein Dialogfeld geschlossen wurde, wenn eine Bewegung außerhalb des Dialogfelds erkannt wurde. (Ia78fd)
  • Für Compose-Lint-Prüfungen ist jetzt mindestens AGP 8.8.2 über die Befehlszeile und mindestens Android Studio Ladybug für die IDE-Unterstützung erforderlich. Wenn Sie eine ältere Version von AGP verwenden, können Sie android.experimental.lint.version=8.8.2 in gradle.properties festlegen, um die Lint-Version zu aktualisieren, ohne AGP zu beeinträchtigen. (I6f2a8)
  • Es wurde eine neue Semantik-Property InputText hinzugefügt, die den Wert von textfield erfasst, bevor die Ausgabetransformation angewendet wird. (Iae46a, b/395911609, b/176949051)
  • Die enableAccessibilityChecks() API, die die Barrierefreiheitsprüfungen für Android aktiviert, wurde in separate Pakete verschoben, die compose:ui:ui-test-accessibility sind, wenn Sie TestRule und compose:ui:ui-test-junit4-accessibility nicht beim Aufrufen von TestRule verwenden (I3c318, b/391560768).
  • Unterstützung für das Erstellen von Stacktraces in LaunchedEffect und rememberCoroutineScope hinzugefügt (I705c0, b/354163858)

Externer Beitrag

  • Die experimentelle runComposeUiTest-Funktion wird so geändert, dass sie einen Suspend-Block akzeptiert. Außerdem wurde eine eingestellte Funktion runComposeUiTest für die binäre Kompatibilität hinzugefügt (I3b88c, b/361577328).

Version 1.8

Version 1.8.3

18. Juni 2025

androidx.compose.ui:ui-*:1.8.3 ist veröffentlicht. Version 1.8.3 enthält diese Commits.

Fehlerkorrekturen

  • Das Flag für isGetFocusedRectReturnEmptyEnabled wurde entfernt, da die Funktion vollständig überprüft wurde. (Ife722)
  • Mit dem Flag ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled wird dafür gesorgt, dass das Rechteck auf einen leeren Wert gesetzt wird, wenn in einem ComposeView nichts fokussierbar ist. Dadurch wird verhindert, dass bei einer Fokus-Suche die Ansicht ausgewählt wird, auf die sich fokussiert werden soll. Das ist besonders wichtig, wenn eine IME-Tastatur eine NEXT-Option hat, bei der sie möglicherweise versucht, sich auf ComposeView zu konzentrieren, und requestFocus() fehlschlägt. (Ibd0e2, b/369256395)

Version 1.8.2

20. Mai 2025

androidx.compose.ui:ui-*:1.8.2 ist veröffentlicht. Version 1.8.2 enthält diese Commits.

Fehlerkorrekturen

  • Behebt NPE, wenn das Dialogfeld während eines aktiven Ereignisstreams im Dialogfeld entfernt wird (6a7e7f)
  • Der Fix onLayoutRectChange wird bei reinen Draw-Updates nicht gemäß der gedrosselten Zeitachse aktualisiert. (03b82d)

Version 1.8.1

7. Mai 2025

androidx.compose.ui:ui-*:1.8.1 ist veröffentlicht. Version 1.8.1 enthält diese Commits.

Fehlerkorrekturen

  • Einige Probleme mit onLayoutRectChanged und LazyLayout beheben d791b11
  • Anfragen zur erneuten Messung für vorab zusammengestellte Artikel überspringen Dieser Fehler hat sich auf die Scrollleistung von Lazy Layouts ausgewirkt, da der Prefetch in einigen Fällen nicht effizient funktionierte und die Messung innerhalb des Frames erfolgte. 742087a

Version 1.8.0

23. April 2025

androidx.compose.ui:ui-*:1.8.0 ist veröffentlicht. Version 1.8.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.7.0

  • Compose 1.8 enthält neu hinzugefügte Unterstützung für das semantische automatische Ausfüllen. Achten Sie darauf, dass die von Ihnen verwendeten Versionen von UI und Foundation Version 1.8 oder höher sind, da für die Autofill-Funktion für Textkomponenten die neuesten Versionen beider Module erforderlich sind. Informationen zur API-Nutzung und Beispiele finden Sie in der Dokumentation zur automatischen Vervollständigung hier.
  • Compose 1.8 unterstützt zusätzliche Arten von haptischem Feedback: Confirm, ContextClick, GestureEnd, GestureThresholdActivate, Reject, SegmentFrequentTick, SegmentTick, ToggleOn, ToggleOff, VirtualKey. Diese Funktion ist über LocalHapticFeedback verfügbar. Auf Android-Geräten ist sie standardmäßig verfügbar, wenn die Vibrator API angibt, dass Haptik unterstützt wird.
  • Mehrere Focus APIs sind jetzt stabil, darunter Modifier.focusRestorer(), onEnter und onExit FocusProperties (I6e667). Sie können jetzt beim Aufrufen von requestFocus einen FocusDirection angeben. Wir haben sowohl focusRequester als auch FocusTargetModifierNode eine requestFocus(FocusDirection) API hinzugefügt, um die Fokussierung in einer bestimmten Richtung zu ermöglichen. (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256)

Version 1.8.0-rc03

09. April 2025

androidx.compose.ui:ui-*:1.8.0-rc03 ist veröffentlicht. Version 1.8.0-rc03 enthält diese Commits.

Fehlerkorrekturen

Version 1.8.0-rc02

26. März 2025

androidx.compose.ui:ui-*:1.8.0-rc02 ist veröffentlicht. Version 1.8.0-rc02 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem fokussierte Ansichten, die in die Compose-Hierarchie eingebettet waren, zu einer erneuten Komposition geführt haben, wenn die fokussierte Ansicht aus einer LazyList entfernt wurde. (765562)

Version 1.8.0-rc01

12. März 2025

androidx.compose.ui:ui-*:1.8.0-rc01 ist veröffentlicht. Version 1.8.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Ein Absturz wurde behoben, der auftrat, wenn ein fokussiertes AndroidView bei aktiver Bildschirmtastatur entfernt wurde. (Ic725a)
  • Es wurden einige Probleme bei der neuen Implementierung der Fokusstatusverwaltung behoben. (b/395895685)
  • Es wurde ein Problem behoben, das das automatische Ausfüllen blockierte, wenn LaunchedEffect verwendet wurde, um den Fokus auf ein Textfeld zu legen. (b/392539099)

Version 1.8.0-beta03

26. Februar 2025

androidx.compose.ui:ui-*:1.8.0-beta03 ist veröffentlicht. Version 1.8.0-beta03 enthält diese Commits.

API-Änderungen

  • Die enableAccessibilityChecks() API, mit der die Barrierefreiheitsprüfungen für Android aktiviert werden, wurde in separate Pakete verschoben, die compose:ui:ui-test-accessibility sind, wenn Sie die TestRule nicht verwenden, und compose:ui:ui-test-junit4-accessibility, wenn Sie TestRule aufrufen (I547ef, b/391560768).
  • Es wurde die neue Semantikeigenschaft InputText hinzugefügt, die den Wert eines Textfelds erfasst, bevor die Ausgabetransformation angewendet wird. (Iae46a)

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das Autofill-Dienste den transformierten Ausgabetext anstelle des Eingabetexts gespeichert haben. (Iae46a, b/395911609, b/176949051)

Version 1.8.0-beta02

12. Februar 2025

androidx.compose.ui:ui-*:1.8.0-beta02 ist veröffentlicht. Version 1.8.0-beta02 enthält diese Commits.

Neue Funktionen

  • Es wurde eine Lint-Prüfung hinzugefügt, um vor Aufrufen von Configuration#screenWidth/heightDp zu warnen. Stattdessen kann LocalWindowInfo.current.containerSize verwendet werden, um die aktuelle Fenstergröße abzurufen.

Version 1.8.0-beta01

29. Januar 2025

androidx.compose.ui:ui-*:1.8.0-beta01 ist veröffentlicht. Version 1.8.0-beta01 enthält diese Commits.

API-Änderungen

  • ContextualFlowRow und ContextualFlowColumn wurden als veraltet markiert. Diese experimentelle Komponente wurde in Version 1.7 eingeführt und war noch nicht stabil. Die Implementierung wurde als unerwünscht eingestuft. Möglicherweise wird in Zukunft eine Komponente bereitgestellt, die die Anwendungsfälle löst, für die diese Komponente vorgesehen war.
    • FlowRow und FlowColumn haben experimentelle Überladungen, die in Version 1.7 eingeführt wurden und einen overflow-Parameter enthalten. Die Verwendung dieses Parameters wurde eingestellt. Stattdessen können die Überladungen ohne diesen Parameter verwendet werden. Das Standardverhalten für „overflow“ für diese Überladungen ist „Clip“, wie es seit der Einführung war.
    • Viele Anwendungsfälle für ContextualFlowRow lassen sich mit FlowRow realisieren, aber das ist nicht immer möglich. ContextualFlowRow kann vollständig im Nutzerbereich implementiert werden. Sie können versuchen, die Implementierung zu kopieren und bei Bedarf anzupassen. Wir hoffen, diese Anwendungsfälle in Zukunft anders lösen zu können. (Ibafec)
  • SemanticsNodeInteraction.semanticsId() wurde entfernt. Verwenden Sie stattdessen SemanticsNodeInteraction.fetchSemanticsNode().id. (Ie397a)
  • Die alten Autofill-APIs werden nicht mehr unterstützt. Verwenden Sie stattdessen die neue semantikbasierte API. (I943ff)
  • Die requestAutofill API soll außerhalb des Managers für das automatische Ausfüllen vorhanden sein. (Id1929)

Fehlerkorrekturen

  • Ein Fokusproblem wurde behoben, bei dem bei requestFocus() mit einem unsinnigen previouslyFocusedRect-Parameter (bezogen auf die Fokusrichtung) ein ComposeView übersprungen wurde. (Ifdc2f, b/388590015)
  • Ein gelegentlicher NPE bei Verwendung von GraphicsLayer.record { this@ContentDrawScope.drawContent() } wurde behoben. Wenn Sie drawContent() auf diese Weise erfassen, verwenden Sie die Erweiterungsfunktion GraphicsLayer#record in DrawScope und nicht die Member-Funktion für GraphicsLayer. (I75fc0, b/389046242)
  • Problem behoben, bei dem das Textlayout mit Auslassungszeichen während Animationen manchmal falsch übersetzt wurde. Weitere Informationen finden Sie unter b/389707025 (Ie55b1, b/389707025).

Version 1.8.0-alpha08

15. Januar 2025

androidx.compose.ui:ui-*:1.8.0-alpha08 ist veröffentlicht. Version 1.8.0-alpha08 enthält diese Commits.

API-Änderungen

  • AutofillManager als abstrakte Klasse festlegen (I0a3b0)
  • Es wurden mehrere Probleme im Zusammenhang mit dem Fokus behoben, darunter Abstürze, wenn die IME versucht, den Fokus auf ComposeView ohne fokussierbare Elemente zu setzen, Fokusänderungen innerhalb des untergeordneten AndroidViews und Fokusanforderungen, die ein AndroidView hinterlassen. (Ia03c3, b/369256395, b/378570682, b/376142752)
  • „FocusEnterExitScope.cancelFocus()“ zu „cancelFocusChange()“ ändern (I89959)
  • Sie können jetzt mit RectInfo.calculateOcclusions() zusammensetzbare Verdeckungen berechnen.
  • Es wurde eine Erweiterungsfunktion für DelegatableNode hinzugefügt, um einen Listener für globale Layoutänderungen zu registrieren. (I68b59)

Fehlerkorrekturen

  • Die Aktivität, die als Host für die zu testende Komponente verwendet wird, wenn ComposeContentTestRule.setContent verwendet wird, verwendet jetzt das Theme Theme.Material.Light.NoActionBar, um zu vermeiden, dass sich ActionBar mit Testinhalten überschneidet, wenn SDK 35 als Ziel-SDK festgelegt ist. Wenn Sie dieses Verhalten deaktivieren möchten, können Sie die Abhängigkeit von ui-test-manifest entfernen und einen Aktivitätseintrag in der AndroidManifest.xml-Datei Ihrer Test-App für ComponentActivity mit dem gewünschten Design hinzufügen. (I7ae1b, b/383368165)
  • Bei Ressourcen-Schriftarten mit denselben Variationseinstellungen wird jetzt ein übermäßiges Caching vermieden, das dazu führen kann, dass die falschen Variationseinstellungen angewendet werden. (If3dff, b/372044241)
  • AnnotatedString.fromHtml unterstützt jetzt <ul>/<li>-Tags. (I7c2fe, b/299662276, b/139326648)

Externer Beitrag

  • Es wurde eine neue Zwischenablage-Schnittstelle und ein lokaler Composer dafür hinzugefügt. (I80809)

Version 1.8.0-alpha07

11. Dezember 2024

androidx.compose.ui:ui-*:1.8.0-alpha07 ist veröffentlicht. Version 1.8.0-alpha07 enthält diese Commits.

API-Änderungen

  • Der Inhaber von LayoutNode wurde für Tools offengelegt. (I26f7f)
  • Für die lokale Verwendung der LocalAutofillHighlightColor-Zusammensetzung ist ein Farbtyp erforderlich. (I0e05b)
  • Behalten Sie die eingestellte UrlAnnotation und ihre Methoden als experimentell bei. (Ic0021)

Fehlerkorrekturen

  • Absturz von IndexOutOfBoundsException bei Verwendung von LinkAnnotation innerhalb von BasicText oder Text-Composable behoben (be7605, b/374115892)
  • Ein Problem wurde behoben, bei dem die Indikatorlinie in ausgefüllten Textfeldern mit benutzerdefinierter Form nicht abgeschnitten wurde. (I4f87f, b/380704151)
  • Es wurde ein Fehler behoben, bei dem bei langen Screenshots Hintergründe fehlten. (I4d57a)
  • In dieser Bibliothek werden jetzt JSpecify-Annotationen für Nullsicherheit verwendet, die typbezogen sind. Kotlin-Entwickler sollten das folgende Compiler-Argument verwenden, um die korrekte Verwendung zu erzwingen: -Xjspecify-annotations=strict (dies ist die Standardeinstellung ab Version 2.1.0 des Kotlin-Compilers). (Idfef8, b/326456246)
  • Unterstützung für Compose für Wide Gamut- und HDR-Farben bei der Ausführung auf Android Q+ aktualisiert. (Icd8be, b/379135036)
  • Wenn Ressourcen-Schriftarten nicht geladen werden können, wird jetzt stillschweigend auf die Standardschriftart zurückgegriffen. Bisher wurde in diesem Fall eine Ausnahme ausgelöst. (Ib6a49)
  • Ein Problem wurde behoben, durch das der Fokus verloren ging, wenn AndroidView getrennt und wieder verbunden wurde. (I53446)
  • Akzeptieren Sie requestFocus() aus der Layoutaktion „Beyond Bound“. (Ia8461)

Externer Beitrag

  • Fügen Sie BringIntoViewResponderModifierNode der Benutzeroberfläche hinzu. Dies bietet eine neue Möglichkeit, die Funktion „In den Blickpunkt rücken“ zu implementieren und sie auf Plattformebene zu implementieren. (Ia6dd8)

Version 1.8.0-alpha06

13. November 2024

androidx.compose.ui:ui-*:1.8.0-alpha06 ist veröffentlicht. Version 1.8.0-alpha06 enthält diese Commits.

API-Änderungen

  • Fügt die Anpassung stylusHoverIcon hinzu. (Iff20a, b/331289114)
  • Ändert den Autofill-Manager in eine Schnittstelle. (I84914, b/376080755)
  • Fügt requestFocus(FocusDirection) sowohl focusRequester als auch FocusTargetModifierNode hinzu, um die Fokussierung in einer bestimmten Richtung zu ermöglichen. (I5d9ec, b/245755256)
  • FocusProperties.enter und FocusProperties.exit wurden durch onEnter und onExit ersetzt. Dabei wird ein Empfängerbereich anstelle des Parameters FocusDirection verwendet. (I6e667)
  • Unterstützung für das automatische Ausfüllen in der Textsymbolleiste hinzugefügt. (Ie6a4c)
  • API-Änderungen an Modifier.focusRestorer() (I99c03):
    • Der Parametername wurde in „fallback“ geändert.
    • ist jetzt ein FocusRequester und kein Lambda.
    • Der Parameter ist jetzt nicht mehr NULL und „Default“ ist der Standardwert.
  • Die Annotation @Experimental wird aus der Autofill-Manager-Schnittstelle entfernt. Das Feature befindet sich noch in der Entwicklung und soll in dieser Version eingeführt werden. Wir möchten jedoch nicht die @Experimental API (Id8398) einführen.
  • LocalHapticFeedback bietet jetzt eine Standardimplementierung von HapticFeedback, wenn die Vibrator API angibt, dass Haptik unterstützt wird. Die folgenden Elemente wurden den HapticFeedbackType-Confirm, ContextClick, GestureEnd, GestureThresholdActivate, Reject, SegmentFrequentTick, SegmentTick, ToggleOn, ToggleOff, VirtualKey hinzugefügt. Bei Wear Compose-Komponenten, die lange angeklickt werden können, z. B. Button, IconButton, TextButton und Card, wird jetzt das LONG_PRESS-Haptiksignal ausgegeben, wenn ein Handler für langes Klicken angegeben wurde. (I5083d)
  • Entfernt OverscrollConfiguration und LocalOverscrollConfiguration und fügt rememberPlatformOverscrollFactory hinzu, um eine Instanz der Standardimplementierung für das Überscrollen zu erstellen oder Parameter anzupassen. Wenn Sie das Overscroll-Verhalten deaktivieren möchten, verwenden Sie LocalOverscrollFactory provides null anstelle von LocalOverscrollConfiguration provides null. Wenn Sie die Farbe oder das Padding des Glühens ändern möchten, verwenden Sie anstelle von LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding) den Befehl LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding). (Ie71f9, b/255554340, b/234451516)
  • Die experimentelle GlobalAssertions API wurde entfernt. Es war für die Ausführung von Barrierefreiheitsprüfungen vorgesehen. Verwenden Sie stattdessen enableAccessibilityChecks(). (I59322)

Version 1.8.0-alpha05

30. Oktober 2024

androidx.compose.ui:ui-*:1.8.0-alpha05 ist veröffentlicht. Version 1.8.0-alpha05 enthält diese Commits.

Neue Funktionen

Die Autofill-Funktion ist in dieser Version hinter einem Funktions-Flag verborgen. Wir arbeiten an der Verbesserung der Leistung und freuen uns über frühes Feedback zu den APIs. Die APIs werden voraussichtlich vor der stabilen Version auf Grundlage von Feedback weiterentwickelt.

  • Wenn Sie Autofill aktivieren möchten, setzen Sie ComposeUiFlags.isSemanticAutofillEnabled in onCreate auf „true“ und verwenden Sie den neuesten Compose-Snapshot.
  • In dieser Version von Autofill können Anmeldedaten manuell, über „Starkes Passwort vorschlagen“ und über die Navigation gespeichert werden. Außerdem wird das Ausfüllen unterstützt, wenn ein automatisch ausfüllbares Feld den Fokus erhält oder wenn die automatische Vervollständigung über die Textsymbolleiste in Textkomponenten ausgelöst wird. Die Komponente wird hervorgehoben, wenn das automatische Ausfüllen abgeschlossen ist.

API-Änderungen

  • Die Autofill-Benutzeroberfläche wurde an die Struktur von expect/actual angepasst. (I22dce)
  • Einführung von CompositionLocal, mit dem der Farbton der Hervorhebung für das erfolgreiche Ausfüllen von Autofill geändert werden kann. (I32092)
  • Die Modifier.onRectChanged API wurde hinzugefügt. Mit dieser API kann man die positions- und größenbezogenen Informationen eines LayoutNode abonnieren, die sich auf den Stamm, das Fenster oder den Bildschirm beziehen. Die API löst viele Anwendungsfälle, die der vorhandene onGloballyPositioned-Modifikator abdeckt, jedoch mit viel weniger Aufwand. Außerdem bietet die API Funktionen zum Entprellen und Drosseln des Rückrufs entsprechend den Anforderungen des jeweiligen Anwendungsfalls. (Id28c7, b/372765423, b/372757007, b/372994338)
  • Erweitert den Autofill-Manager um die APIs commit() und cancel(), mit denen Nutzer neu eingegebene Anmeldedaten speichern können. (I2da00)
  • Es wird eine neue AutofillManager-Schnittstelle eingeführt, mit der der Autofill-Vorgang für Nutzer optimiert werden kann, sowie ein isSemanticAutofillEnabled-Flag zum Aktivieren dieser neuen Version von Autofill. (I9d484)
  • Die Modifier.onRectChanged API wurde hinzugefügt. Mit dieser API kann man die root-/window-/screen-relative Position und Größe eines LayoutNode abonnieren. Die API löst viele Anwendungsfälle, die der vorhandene onGloballyPositioned-Modifikator abdeckt, jedoch mit viel weniger Aufwand. Außerdem bietet die API Funktionen zum Entprellen und Drosseln des Rückrufs entsprechend den Anforderungen des jeweiligen Anwendungsfalls. (I3c8fa)
  • Semantische Attribute und Datentypen für erweiterte Autofill-Unterstützung hinzufügen (I52c7d)
  • Alle Methoden im AnnotatedString-Builder sind jetzt nicht mehr experimentell (Ia89c8, b/261561823).

Fehlerkorrekturen

  • In Compose eingebettete Ansichten können jetzt Drehreglerereignisse empfangen, wenn sie fokussiert sind (I4d53a, b/320510084).
  • Ein Problem wurde behoben, bei dem verschiedene Ressourcentypen bei Konfigurationsänderungen nicht aktualisiert wurden (Ia9b99, b/352336694).
  • Ein Problem wurde behoben, durch das TextField auf bestimmten älteren Sony-Geräten nicht richtig funktionierte, wenn die japanische POBox-Tastatur verwendet wurde. (Ia9b99, b/373743376)
  • Problem behoben, bei dem Dialogfelder unten auf dem Bildschirm statt in der Mitte angezeigt wurden (Ia2ec, b/373093006)
  • Wenn Sie auf API 35 oder höher ausgerichtet sind, muss für Dialogfelder nicht mehr decorFitsSystemWindows auf „false“ gesetzt werden. (Ibc94, b/364492593)
  • Absturz behoben, der auftrat, wenn Ebenen zwischen Fenstern verschoben wurden (z.B. Dialogfeld und Hauptinhalt) (I675ba, b/330955281)

Version 1.8.0-alpha04

16. Oktober 2024

androidx.compose.ui:ui-*:1.8.0-alpha04 ist veröffentlicht. Version 1.8.0-alpha04 enthält diese Commits.

API-Änderungen

  • Fügt die Callbacks DelegatableNode#onDensityChange und DelegatableNode#onLayoutDirectionChange hinzu, damit der Knotenstatus bei Änderungen aktualisiert werden kann (I04f3e, b/340662451)
  • Fügt WindowInfo#containerSize hinzu, um die Größe des Inhaltscontainers des aktuellen Fensters anzugeben. Sie kann mit LocalWindowInfo abgerufen werden. (Idc38c, b/369334429, b/360343819)
  • Es wurde ein Fehler behoben, der bei verschachtelten scrollbaren Elementen auftrat, die während eines laufenden Fling aus dem Knotenbaum entfernt wurden. Diese Knoten brechen den Fling ab und senden das onPostFling-Ereignis mit der verbleibenden Geschwindigkeit. Außerdem führen wir das Flag NewNestedScrollFlingDispatchingEnabled ein, um das Verhalten im Falle von Regressionen zu steuern. Das Flag wird vor der Betaversion entfernt. (I05c37, b/371168883)
  • PointerInputModifierNode#touchBoundsExpansion wurde eingeführt. Damit können die Berührungsbegrenzungen eines einzelnen Zeigereingabe-Modifiers vergrößert werden. (Iccf02, b/335339283)
  • Fügt WindowInfo#containerSize hinzu, um die Größe des Inhaltscontainers des aktuellen Fensters anzugeben. Sie kann mit LocalWindowInfo abgerufen werden. (I27767, b/369334429, b/360343819)
  • Entfernen Sie readOnly aus TextFields, um die stabile Fundamentversion anzupinnen. (I3aaba)
  • Paragraph und ParagraphIntrinsics akzeptieren jetzt eine Liste aller Anmerkungen, die auf AnnotatedString angewendet werden. Zuvor wurde nur eine Liste von SpanStyles akzeptiert (I12f80).

Fehlerkorrekturen

  • Die Behandlung von Absätzen in AnnotatedString wurde aktualisiert. Bisher konnten Sie nur nicht überlappende Absätze erstellen. Mit AnnotatedString sind jetzt vollständig überlappende Absätze möglich, die zusammengeführt werden. Außerdem können Absätze verschachtelt werden. In diesem Fall wird der äußere Absatz an den Grenzen des inneren Absatzes aufgeteilt und der Stil des inneren Absatzes wird mit dem Stil des äußeren Absatzes zusammengeführt (Ic9554).
  • Absturz in AnnotatedString mit einem LinkAnnotation mit der Länge 0 behoben. (89aac6)

Version 1.8.0-alpha03

2. Oktober 2024

androidx.compose.ui:ui-*:1.8.0-alpha03 ist veröffentlicht. Version 1.8.0-alpha03 enthält diese Commits.

API-Änderungen

  • Kotlin-Version auf 1.9 aktualisiert (I1a14c)
  • Es wurde eine neue Semantikrolle namens „Carousel“ eingeführt, um das Listenverhalten in Pagers für A11y-Dienste zu emulieren. (Id354b, b/354109776, b/239672673)
  • Benennen Sie invisibleToUser() in hideFromAccessibility um. Die Funktion bleibt unverändert. Weitere Informationen finden Sie in der Dokumentation. (Ib43a3)

Fehlerkorrekturen

  • Dokumente für den Modifikator SensitiveContent aktualisieren (Ib0442)
  • Ein Problem wurde behoben, bei dem bestimmte generische Umriss-Clips in Kombination mit Erhebungsschatten auf einigen Android-Versionen ignoriert wurden.
  • Ein Problem wurde behoben, durch das leere Clips angewendet wurden, wenn auf bestimmten Android-Versionen generische Outline-Clips angegeben wurden.
  • Es wurde ein Fehler behoben, der ausgelöst wurde, wenn die IME in einer externen Ansicht aktiv war und die Aktion „Weiter“ verwendet wurde, um den Fokus auf ComposeView zu setzen. Das Verhalten von clearFocus() entspricht dem Verhalten von „View“ bei API < 28, wobei clearFocus() dazu führen kann, dass der Fokus auf die Standardansicht gelegt wird.
  • Ein Problem wurde behoben, bei dem die Platzierung auf getrennten Knoten in LazyList erfolgte. Dazu wurde die Verwaltung der Unterkomposition für verschiedene Layoutdurchläufe getrennt.
  • Ein Problem wurde behoben, bei dem die Softwaretastatur flackerte, wenn der Fokus von einem TextField zu einem EditText oder einem anderen View-basierten Editor wechselte.
  • Verschachtelte Scroll-Knoten senden jetzt onPostFling-Ereignisse korrekt, nachdem sie getrennt wurden.
  • Allgemeine Leistungsverbesserungen

Version 1.8.0-alpha02

18. September 2024

androidx.compose.ui:ui-*:1.8.0-alpha02 ist veröffentlicht. Version 1.8.0-alpha02 enthält diese Commits.

API-Änderungen

  • TextOverflow.StartEllipsis und TextOverflow.MiddleEllipsis sind jetzt verfügbar. Damit können Sie Auslassungspunkte am Anfang oder in der Mitte der Textzeile des einzeiligen Texts platzieren. (I38913, b/185418980)

Fehlerkorrekturen

  • Fehler bei Dialog dismissOnClickoutside behoben (39a3d, b/364508685)
  • Schatten von Dialoginhalten nicht abschneiden (e8e2f, b/363027803)
  • Fehlerhaftes Verhalten behoben, wenn der Fokus zwischen „Verfassen“ und einer Ansicht verschoben wird (58377, b/350534714)

Externer Beitrag

  • Das AlignmentLines Map akzeptiert jetzt die konkreten Typen VerticalAlignmentLine oder HorizontalAlignmentLine. (I02912)
  • Neue gemeinsame ByteArray.decodeToImageBitmap(): ImageBitmap-Methode. (I83c21)

Version 1.8.0-alpha01

4. September 2024

androidx.compose.ui:ui-*:1.8.0-alpha01 ist veröffentlicht. Version 1.8.0-alpha01 enthält diese Commits.

Version 1.7

Version 1.7.8

12. Februar 2025

androidx.compose.ui:ui-*:1.7.8 ist veröffentlicht. Version 1.7.8 enthält diese Commits.

Version 1.7.7

29. Januar 2025

androidx.compose.ui:ui-*:1.7.7 ist veröffentlicht. Version 1.7.7 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem mit IndexOutOfBoundsException wurde behoben, das beim Übergeben eines AnnotatedString mit dem LinkAnnotation an die zusammensetzbare Funktion „Text“ auftrat. (Ic96d2)
  • Ein Zeitüberschreitungsproblem bei Tests wurde in seltenen Fällen behoben, wenn LinkAnnotation in der AnnotatedString verwendet wurde. (I04a03)

Version 1.7.6

11. Dezember 2024

androidx.compose.ui:ui-*:1.7.6 ist veröffentlicht. Version 1.7.6 enthält diese Commits.

Fehlerkorrekturen

  • Bisher wurde ein Fehler ausgegeben, wenn ein Schlüsselereignis auftrat, während im Fokus-System ausstehende Invalidierungen vorhanden waren. Stattdessen wird jetzt ein Fehler protokolliert (I7ea0, b/346370327).
  • Die experimentelle Anmerkung wurde aus SemanticsPropertyReceiver.invisibleToUser() entfernt. Diese Funktion wird in Version 1.8 eingestellt und durch SemanticsPropertyReceiver.hideFromAccessibility() ersetzt. (I448f0, b/376479686)
  • Ein Problem wurde behoben, durch das TextField bei Verwendung der POBox-Tastatur für Japanisch auf bestimmten älteren Sony-Geräten nicht richtig funktionierte. (I94e0e, b/373743376)
  • Ein Problem mit der Barrierefreiheit wurde behoben, bei dem der inlineContent von BasicText nicht von TalkBack angekündigt wurde. (I67bcb, b/376479686)

Version 1.7.5

30. Oktober 2024

androidx.compose.ui:ui-*:1.7.5 ist veröffentlicht. Version 1.7.5 enthält diese Commits.

Fehlerkorrekturen

  • Es wurden Probleme behoben, bei denen die Höhe und das Zuschneiden mit benutzerdefinierten Umrisslinien nicht richtig gerendert wurden.
  • Ein Textabsturz, der bei einem Zeichen mit der Breite null LinkAnnotation auftritt, wurde behoben. (Ic1e2e)
  • Behebt eine Ankündigung in Talkback des Buttons, wenn er als klickbare Text-Composable erstellt wird. (I1f588)

Version 1.7.4

16. Oktober 2024

androidx.compose.ui:ui-*:1.7.4 ist veröffentlicht. Version 1.7.4 enthält diese Commits.

Version 1.7.3

2. Oktober 2024

androidx.compose.ui:ui-*:1.7.3 ist veröffentlicht. Version 1.7.3 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das bei Angabe eines generischen Umriss-Clips auf bestimmten Android-Versionen eine leere Clipgrenze angezeigt wurde.
  • Es wurde ein Fehler behoben, der ausgelöst wurde, wenn die IME in einer externen Ansicht aktiv war und die Aktion „Weiter“ verwendet wurde, um den Fokus auf ComposeView zu setzen. Das Verhalten von clearFocus() entspricht dem Verhalten von „View“ bei API < 28, wobei clearFocus() dazu führen kann, dass der Fokus auf die Standardansicht gelegt wird.
  • Ein Problem wurde behoben, bei dem eine falsche placeOrder für die Lookahead-Invalidierung verwendet wurde. Dadurch wurde ein Grenzfall behoben, in dem die Lookahead-Platzierung übersprungen wurde.

Version 1.7.2

18. September 2024

androidx.compose.ui:ui-*:1.7.2 ist veröffentlicht. Version 1.7.2 enthält diese Commits.

Fehlerkorrekturen

  • Die Leistung von Ereignissen für Informationen zu Barrierefreiheitsknoten und Semantik wurde durch das Entfernen von ausführlichem Tracing verbessert. (I89156, b/362530618)
  • ComposeView stürzt nicht mehr ab, wenn eine außergewöhnlich große Messgröße übergeben wird (da5db, b/347036173).
  • Ein Problem mit dem Screenreader für Bedienungshilfen wurde behoben, bei dem LiveRegion-Ankündigungen auf Schaltflächen nicht ausgegeben wurden. (f66fa7, b/348590026)

Version 1.7.1

10. September 2024

  • An Android-Artefakten wurden keine Änderungen vorgenommen. -desktop Artefakte wurden entfernt und -jvmStubs- und -linuxx64Stubs-Artefakte wurden hinzugefügt. Keines dieser Ziele ist für die Verwendung vorgesehen. Sie sind Platzhalter, um die Bemühungen von Jetbrains Compose zu unterstützen.

Version 1.7.0

4. September 2024

androidx.compose.ui:ui-*:1.7.0 ist veröffentlicht.

Wichtige Änderungen seit Version 1.6.0

Wichtige Änderungen in Version 1.7.0 werden in diesem Blogpost beschrieben.

Version 1.7.0-rc01

21. August 2024

androidx.compose.ui:ui-*:1.7.0-rc01 ist veröffentlicht. Version 1.7.0-rc01 enthält diese Commits.

Wichtige Änderungen

  • Das Modul „ui:ui“ erzwingt jetzt die Anforderung einer Mindestversion von „foundation:foundation“ von mindestens 1.7.0-rc01 oder höher. Dies wird erzwungen, um eine Verhaltensinkompatibilität zwischen „ui“ und „foundation“ in Bezug auf NestedScrollSource-Änderungen zu beheben, die früh während 1.7.0-alpha01 aufgetreten sind.

Version 1.7.0-beta07

7. August 2024

androidx.compose.ui:ui-*:1.7.0-beta07 ist veröffentlicht. Version 1.7.0-beta07 enthält diese Commits.

Fehlerkorrekturen

  • Die SemanticsNodeInteraction-Funktionen performTextReplacement, performTextInput und performTextClearance für die Texteingabe lösen jetzt Zusicherungsfehler aus, wenn sie für Lesezugriff TextFields aufgerufen werden. (I4ae8f)

Version 1.7.0-beta06

24. Juli 2024

androidx.compose.ui:ui-*:1.7.0-beta06 ist veröffentlicht. Version 1.7.0-beta06 enthält diese Commits.

Version 1.7.0-beta05

10. Juli 2024

androidx.compose.ui:ui-*:1.7.0-beta05 ist veröffentlicht. Version 1.7.0-beta05 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler wurde behoben, durch den bei einem Wechsel der Softwaretastatur in TextField erst Eingaben über die neue Tastatur möglich waren, nachdem der Fokus verloren und wiederhergestellt wurde.
  • Ein Problem wurde behoben, bei dem Versuche, Ebeneninhalte beizubehalten, beim Rendern mit SurfaceView-Inhalten zu unbeabsichtigten Nebeneffekten geführt haben.

Version 1.7.0-beta04

26. Juni 2024

androidx.compose.ui:ui-*:1.7.0-beta04 ist veröffentlicht. Version 1.7.0-beta04 enthält diese Commits.

Fehlerkorrekturen

  • Abstürze bei der Messung sehr langer Textzeilen (z. B. 10.000 Zeichen) vermeiden (8157ab)
  • Deaktivieren Sie die Unterstützung für Software-Rendering für die GraphicsLayer API. (35ddd8)
  • Fehlerbehebung für einen Absturz in der Logik für die Persistenz von Ebenen. (70b13e)
  • Die Optimierung für die Wiederverwendung von Layerelementen wurde rückgängig gemacht, da sie zu Rendering-Problemen geführt hat. (70b13e)

Version 1.7.0-beta03

12. Juni 2024

androidx.compose.ui:ui-*:1.7.0-beta03 ist veröffentlicht. Version 1.7.0-beta03 enthält diese Commits.

Version 1.7.0-beta02

29. Mai 2024

androidx.compose.ui:ui-*:1.7.0-beta02 ist veröffentlicht. Version 1.7.0-beta02 enthält diese Commits.

API-Änderungen

  • SemanticsProperties.Editable wurde in IsEditable umbenannt und SemanticsPropertyReceiver.editable in den Wert isEditable geändert. Das Attribut ist jetzt ein boolescher Wert und wird immer durch Textfelder angegeben. (I8acd8)
  • Parameter für Bedienungshilfen-Benchmark umbenennen (I3d440)
  • Aktualisierte API zum Formatieren der Links: TextLinkStyles ist jetzt Teil des LinkAnnotation-Konstruktors und der AnnotatedString.fromHtml-Methode (I90b2b). Auch die TextDefaults wurde aus dem Material (I5477b) entfernt.

Fehlerkorrekturen

  • LayoutCoordinates.introducesFrameOfReference wurde in LayoutCoordinates.introducesMotionFrameOfReference umbenannt, um den Zweck besser widerzuspiegeln. Die zugehörige Funktion zum Berechnen von Koordinaten basierend auf diesem Flag wurde umbenannt. (I3a330)

Version 1.7.0-beta01

14. Mai 2024

androidx.compose.ui:ui-*:1.7.0-beta01 ist veröffentlicht. Version 1.7.0-beta01 enthält diese Commits.

API-Änderungen

  • performCustomAccessibilityActionLabelled wurde in performCustomAccessibilityActionWithLabel und performCustomAccessibilityActionWhere in performCustomAccessibilityActionWithLabelMatching umbenannt. (I5387f)
  • AnnotatedString.hasEqualsAnnotations heißt jetzt hasEqualAnnotations (I685c0)
  • Die API zum Abrufen von Links mit Material-Design im Text wurde aktualisiert. Insbesondere wurden die Methoden aus TextDefaults zum Erstellen von thematischen LinkAnnotations und zum Parsen von HTML mit thematischen Links entfernt. Stattdessen wurde der Text-Composable eine TextLinkStyles-Klasse als Parameter hinzugefügt, mit der die Links formatiert werden können. (I31b93)

Fehlerkorrekturen

  • Es wurden zusätzliche Anwendungsfälle behoben, in denen Zeigereingabe-Modifikatoren während Ereignissen dynamisch hinzugefügt wurden. 63e1504

Version 1.7.0-alpha08

1. Mai 2024

androidx.compose.ui:ui-*:1.7.0-alpha08 ist veröffentlicht. Version 1.7.0-alpha08 enthält diese Commits.

API-Änderungen

  • Unterstützung für veränderliche Formimplementierungen wird hinzugefügt. Shape#createOutline wird jetzt in Grafikebenen beobachtet. Wenn Sie also Zustandswerte darin lesen, werden bei einer Zustandsänderung Invalidierungen ausgelöst, was leistungsfähigere Formanimationen ermöglicht. (Id1629, b/326070216)
  • isPositionedByParentWithDirectManipulation wurde in introducesFrameOfReference umbenannt. Beachten Sie, dass die Wirkung jetzt umgekehrt ist. Das bedeutet, dass die meisten LayoutCoordinates standardmäßig einen Bezugsrahmen einführen und die Eigenschaft nur dann „false“ ist, wenn sie direkt manipuliert werden. Wenn Sie die Position nur für Elemente abfragen möchten, die einen Bezugsrahmen einführen, verwenden Sie positionInLocalFrameOfReference(...). Oder positionInLocalLookaheadFrameOfReference von einem LookaheadScope. (Ifc5f7)
  • LookaheadScope APIs wurden stabilisiert (I21507)
  • Aktions-Lambda für getScrollViewportLength gemäß Feedback des API-Gremiums ändern. (Ibc74a)
  • Die GraphicsLayer-Umriss-APIs wurden aktualisiert, um Gleitkommaparameter anstelle von Ganzzahlparametern zu verwenden. Die UnsetOffset/UnsetSize IntSize-Sentinel-Werte wurden zugunsten bereits vorhandener „Unspecified“-Konstanten in den Inline-Klassen „Offset“ und „Size“ auf Gleitkomma-Basis entfernt (I2fb03, b/333863462).
  • Beim Einfügen von Mauseingaben während Tests akzeptieren MouseInjectionScope.click(), MouseInjectionScope.doubleClick(), MouseInjectionScope.tripleClick() und MouseInjectionScope.longClick() jetzt einen button: MouseButton-Parameter, um sie universeller einsetzbar zu machen. Der Standardwert ist für alle Methoden MouseButton.Primary. (I31a23, b/190493367, b/261439695)
  • onClicked wurde in onClick umbenannt (in LinkInteractionListener). (Iaa35c)
  • Benennen Sie TextInclusionStrategy.isInside in isIncluded um. Machen Sie den Rückgabetyp von Paragraph/MultiParagraph#getRangeForRect() zu einem Typ, der keine Nullwerte zulässt. (I51f26)

Fehlerkorrekturen

  • Die Aufnahme langer Screenshots für scrollende Container mit reverseScrolling=true wurde korrigiert. (I7c59c)

Externer Beitrag

  • Unterstützung für das Prefetching von Elementen in verschachtelten LazyLists wurde hinzugefügt, z.B. ein LazyColumn, das verschachtelte LazyRows rendert. Diese Änderung soll die Anzahl der Frame-Drops beim Scrollen für diese LazyLists verringern. Standardmäßig werden die ersten beiden verschachtelten Elemente vorab abgerufen. Dieses Verhalten kann jedoch mit den neuen APIs LazyLayoutPrefetchStrategy(nestedPrefetchItemCount) und LazyListPrefetchStrategy#onNestedPrefetch gesteuert werden. (I51952)

Version 1.7.0-alpha07

17. April 2024

androidx.compose.ui:ui-*:1.7.0-alpha07 ist veröffentlicht. Version 1.7.0-alpha07 enthält diese Commits.

API-Änderungen

  • ClickableText ist als veraltet markiert. Wenn Sie dem Text Links hinzufügen möchten, erstellen Sie ein AnnotatedString mit einem LinkAnnotation, das Ihrem Link entspricht, und übergeben Sie dieses AnnotatedString an die Text-Composable. (I34d4b, b/323346994)
  • Einführung von ViewConfiguration.HandwritingGestureLineMargin für Handschriftgesten Unterstützung der JoinOrSplit-Geste für BasicTextField (Ie6e13, b/325660505)
  • FocusProperties.enter und FocusProperties.exit sind nicht mehr experimentell. FocusDirection.Enter und FocusDirection.Exit sind nicht mehr experimentell. FocusRequester.Cancel ist nicht mehr experimentell (I461a1, b/261564106)
  • Beim Abfragen von Layoutkoordinaten können Sie jetzt das Argument excludeDirectManipulationOffset verwenden, um den Versatz auszuschließen, der von übergeordneten Layouts festgelegt wurde, in denen die untergeordneten Elemente mit Placeable.PlacementScope.withDirectManipulationPlacement platziert wurden. Ebenso kann ein Layout, das die Position seiner untergeordneten Elemente häufig ändert, diese jetzt mit withDirectManipulationPlacement (z. B. „Scroll“, standardmäßig implementiert) platzieren. Das macht approachLayout-basierte Animationen intuitiver, da Sie jetzt unterscheiden können, welcher Offset animiert und welcher direkt angewendet werden soll. (I60ec7)
  • Das Funktions-Flag für lange Screenshots wurde entfernt. (I28648, b/329128246)
  • LazyColumn rendert jetzt fixierte Überschriften in langen Screenshots korrekt. (I8d239, b/329296635)
  • Die NestedScroll-Quellen „Drag“ und „Fling“ werden durch UserInput und SideEffect ersetzt, um der erweiterten Definition dieser Quellen Rechnung zu tragen, die jetzt Animationen (Side Effect) sowie Mausrad und Tastatur (UserInput) umfasst. (I40579)
  • ApproachLayoutModifierNode und Modifier.approachLayout sind jetzt stabil. Die alten isMeasurementApproachComplete() und isPlacementApproachComplete() wurden durch die neuen isMeasurementApproachInProgress() und isPlacementApproachInProgress() ersetzt.
  • Der eingestellte Modifikator intermediateLayout wurde entfernt. (I3e91c)
  • Benennen Sie GraphicsLayer#buildLayer in „record“ um, um die Methoden „begin/endRecording“ von Displaylist-basierten APIs wie RenderNode und „Picture“ zu spiegeln.
  • rememberGraphicsLayer wurde aktualisiert, um rememberObserver zu nutzen. (I312c1, b/288494724, b/330758155)
  • UrlAnnotation ist veraltet. Verwenden Sie stattdessen LinkAnnotation.Url. Wenn Sie Material-Theming verwenden, erstellen Sie die Annotation mit dem TextDefaults-Objekt, damit das Material-Theming angewendet wird (I8d180, b/323346545).
  • Textlinks haben jetzt zusätzlich zum normalen Stil, dem Stil für den Mauszeiger und dem Fokusstil auch einen Stil für den gedrückten Zustand (I5f864, b/139312671).
  • String.parseAsHtml wurde in AnnotatedString.Companion.fromHtml umbenannt. (I43dcd)
  • Der parseAsHtml-Methode wurden Formatierungsargumente (linkStyle, focusedLinkStyle, hoveredLinkStyle) und ein Listener für Linkinteraktionen hinzugefügt. Beim Parsen des HTML-getaggten Strings mit <a>-Tags wird für jedes Tag ein LinkAnnotation.Url erstellt und die Styling-Objekte und der Listener für Linkinteraktionen werden an jede Annotation übergeben. (I7c977)
  • LinkAnnotation verwendet jetzt die statusbasierten Formatierungsargumente und ein LinkInteractionListener. Fügen Sie der AnnotatedString diese Annotation hinzu, um einen Hyperlink zu erhalten. Mit focusedState und/oder hoveredState können Sie das visuelle configuration für Links definieren, wenn sie fokussiert und/oder mit dem Mauszeiger darauf gezeigt wird. (I81ce4, b/139312671)
  • ImeOptions.hintLocales ist nicht mehr nullable. Wenn Sie eine leere Liste mit Gebietsschemas übergeben möchten, verwenden Sie LocaleList.Empty. (Ic5bc4)

Fehlerkorrekturen

  • Fehlerhafte/beschädigte Verlaufsdaten für Eingabeereignisse werden ordnungsgemäß verarbeitet (fehlerhafte Offsetdaten werden ignoriert).
  • Behebt unerwartete Zeigerereignisse, wenn während eines aktiven Zeigereingabe-Ereignisstreams (z. B. zwischen „Hover Enter“ und „Hover Exit“ [Maus/Stift]) dynamisch ein Zeigereingabe-Modifikator vor einem anderen Zeigereingabe-Modifikator hinzugefügt wird.

Version 1.7.0-alpha06

3. April 2024

androidx.compose.ui:ui-*:1.7.0-alpha06 ist veröffentlicht. Version 1.7.0-alpha06 enthält diese Commits.

Neue Funktionen

  • Die Methode parseAsHtml für formatierte Strings wurde hinzugefügt. Damit lässt sich ein mit HTML-Tags markierter String in AnnotatedString umwandeln. Beachten Sie, dass nicht alle Tags unterstützt werden. So können Sie beispielsweise noch keine Aufzählungslisten anzeigen. (I84d3d, I30626, b/139326648)
  • Experimentelle Unterstützung für lange Screenshots in Compose-Scrollcontainern mit der offiziellen Android-API (ScrollCaptureCallback) wurde implementiert. Diese Funktion ist experimentell und funktioniert möglicherweise nicht in allen Fällen korrekt. Aus diesem Grund ist es derzeit standardmäßig deaktiviert. Wenn Sie die automatische CMEK-Bereitstellung aktivieren möchten, legen Sie das Flag ComposeFeatureFlag_LongScreenshotsEnabled auf „true“ fest. (I2b055, b/329296471)

API-Änderungen

  • „fun ClipEntry.getMetadata()“ wird zu „val ClipEntry.clipMetadata“ geändert. (I50155)
  • Die Funktionen ClipboardManager.getClipMetadata und ClipboardManager.hasClip wurden entfernt. Verwenden Sie clipEntry.getMetadata(), um die Metadaten des aktuellen Clip-Eintrags zu lesen. Prüfen Sie auch das Ergebnis von ClipboardManager.getClip, um festzustellen, ob es null ist oder nicht. So können Sie herausfinden, ob die Zwischenablage einen aktuellen Clip enthält. (I50498)
  • GraphicsLayer-Objekte können jetzt an placeable.placeWithLayer()-Funktionen übergeben werden (I1b22f)
  • ClipboardManager.setClip akzeptiert jetzt „null“, um die Zwischenablage zu leeren. (I7d2e9)
  • Ressourcen-IDs für die Unterstützung beim Ausblenden von Ansichten, die als Implementierungsdetails in Build-Tools verwendet werden, wurden hinzugefügt (I99531).
  • Die Methode GraphicsLayer#toImageBitmap wurde hinzugefügt, um das Rendern von Bitmap-Inhalten in ein GraphicsLayer zu unterstützen. Dies ist ein hardwarebeschleunigter Rendering-Vorgang auf API-Level 22 oder höher, der auf über 99% aller Android-Geräte unterstützt wird. Unter Android-API-Level 21 wird auf Software-Rendering zurückgegriffen. (I9e114)
  • Hilfsmethode zum Konvertieren eines Android-RectF in ComposeRect (I39925, b/325660505)
  • Alle KeyboardOptions-Parameter haben jetzt standardmäßig einen nicht angegebenen Wert. Die Methode KeyboardOptions.merge wurde hinzugefügt.
  • KeyboardOptions.autoCorrect wurde in autoCorrectEnabled umbenannt und ist jetzt nullable. Ein Null-Wert bedeutet, dass kein Wert angegeben wurde. (Ia8ba0, b/295951492)
  • Bei der BasicTextField(state)-Variante und BasicSecureTextField wird jetzt KeyboardActionHandler anstelle von KeyboardActions verwendet, um Aktionen zu verarbeiten, die über die Softwaretastatur ausgeführt werden. (I58dda)

Version 1.7.0-alpha05

20. März 2024

androidx.compose.ui:ui-*:1.7.0-alpha05 ist veröffentlicht. Version 1.7.0-alpha05 enthält diese Commits.

Neue Funktionen

  • Einführung der neuen GraphicsLayer API zum Aufzeichnen von Zeichenbefehlen in einer Anzeigeliste sowie zusätzlicher Eigenschaften, die sich auf das Rendern der Anzeigeliste auswirken. So wird eine Isolierungsgrenze geschaffen, um eine komplexe Szene in kleinere Teile zu unterteilen, die unabhängig voneinander aktualisiert werden können, ohne dass die gesamte Szene neu erstellt werden muss. Transformationen, die an einem GraphicsLayer vorgenommen werden, können ohne erneute Aufzeichnung der Anzeigeliste erfolgen. Im Gegensatz zu Modifier.graphicsLayer kann mit GraphicsLayer Composable-Inhalte an anderer Stelle gerendert werden. Das ist nützlich in animierten Anwendungsfällen, in denen Inhalte in verschiedenen Szenen gerendert werden sollen.

API-Änderungen

  • GraphicsLayer.draw(Canvas) ist keine öffentliche API mehr. Verwenden Sie stattdessen die Erweiterungsfunktion DrawScope.drawLayer(GraphicsLayer), um die Ebene zu zeichnen. (I7a7c0)
  • restrictedConstraints() in zwei Methoden aufteilen: fitPrioritizingWidth() und fitPrioritizingHeight() (I6d7fd)
  • Einführung des HardwareCanvas-Stubs für die Verwendung unter Android L (I1c3b5, b/288494724)
  • Aktualisieren Sie das Compose-Framework, um eine GraphicsContext-Kompositionslokale verfügbar zu machen. Aktualisieren Sie außerdem die Implementierungen von „Owner“, DelegateableNode und drawWithCache Modifier, um den Zugriff auf die GraphicsContext für den eingeschränkten Zugriff zu ermöglichen. Dadurch werden GraphicsLayer-Instanzen automatisch bereinigt, wenn Modifier abgebaut werden. (I64a2f, b/288494724)
  • InterceptPlatformTextInput wurde eingeführt, um das Schreiben von IME-bezogenen Tests auf niedriger Ebene und anderen IME-Anwendungsfällen auf niedriger Ebene zu erleichtern. PlatformTextInputTestOverride wurde verworfen. (I862ed, b/322680547)
  • Die Erweiterungsfunktion GraphicsLayer.setOutline(Outline) wurde hinzugefügt. (Ib81f4)
  • Einführung des GraphicsContext-Funktionskonstruktors zum Erstellen einer Factory zum Erstellen von GraphicsLayer-Instanzen (Ib98d6, b/288494724)
  • Die GraphicsLayer-API wurde bereitgestellt, um Entwicklern die Möglichkeit zu geben, Zeichenbefehle zu erfassen, die an anderer Stelle verwendet werden können, und dem Endergebnis verschiedene visuelle Effekte hinzuzufügen. (I80245, b/288494724)
  • Wir stellen die Funktion Paragraph#getRangeForRect vor, die einen Textbereich zurückgibt, der von einem bestimmten rechteckigen Bereich abgedeckt wird. (Iee516, b/325660505)
  • Die experimentelle Überschreibung von BasicText mit dem Argument onLinkClicked wurde entfernt. Eine Ersatz-API für die Unterstützung von Hyperlinks wird in Zukunft folgen. (I107d5)

Fehlerkorrekturen

  • Die API-Definition für GraphicsLayer expect/actual wurde hinzugefügt, um das Erfassen und Wiedergeben von Zeichenbefehlen mit optionalen visuellen Effekten und Transformationen für das Compositing zu unterstützen. Einführung der GraphicsContext-Schnittstelle für Grafikabhängigkeiten, einschließlich der Erstellung und Verwaltung von GraphicsLayer-Instanzen. (I4a8d6, b/288494724)
  • Ein Interoperabilitätsproblem mit der 1D-Fokussuche wurde behoben. Dabei blieb der Fokus in einem ComposeView hängen, das in andere Ansichten eingebettet war. (I08fd4)

Externer Beitrag

  • LocalLifecycleOwner wurde von Compose UI zu lifecycle-runtime-compose verschoben, damit die Compose-basierten Hilfs-APIs außerhalb von Compose UI verwendet werden können. Vielen Dank an Jake Wharton für den Beitrag. (I6c41b, b/328263448)
  • Bias-Float-Properties werden für alle auf Bias basierenden Abstimmungsuntertypen einheitlich verfügbar gemacht. (I69f0f, b/328088992)

Version 1.7.0-alpha04

6. März 2024

androidx.compose.ui:ui-*:1.7.0-alpha04 ist veröffentlicht. Version 1.7.0-alpha04 enthält diese Commits.

API-Änderungen

  • Unterstützung der Funktion „Handschriftliche Eingabe per Eingabestift“ für BasicTextField2 auf Geräten mit Android U und höher. (I002e4)
  • In dieser Änderung fügen wir die semantische Aktion GetScrollViewportLength hinzu, damit wir Informationen zu den Komponenten, die in Compose gescrollt werden, an das A11y-System weiterleiten können. In diesem CL wird die Verwendung der genannten Eigenschaft auch in scrollbaren Foundation-Listen angewendet. (Ic5fa2)
  • FocusRequester.createRefs ist jetzt stabil (I4d92c, b/261436820)
  • DelegatableNode.requireView() wurde eingeführt, damit Modifikator-Knoten den aktuellen Android-View abrufen können, ohne eine Kompositionslokale zu lesen. (I40768)
  • Neue API Path.reverse() zum Umkehren der Richtung eines Pfads (I36348)
  • hintLocales wurde zu KeyboardOptions hinzugefügt, damit TextFields IMEs mit bestimmten Gebietsschemas darauf hinweisen kann, eine bevorzugte Sprache voreinzustellen.
  • Die platformLocale-Eigenschaft von Locale verfügbar machen, die das zugrunde liegende Plattformobjekt zurückgibt, z.B. java.util.Locale. (I921c6)

Version 1.7.0-alpha03

21. Februar 2024

androidx.compose.ui:ui-*:1.7.0-alpha03 ist veröffentlicht. Version 1.7.0-alpha03 enthält diese Commits.

API-Änderungen

  • Einführung von ContextualFlowRow und verbesserte FlowRow/Column mit MaxLines und Overflow. Wir freuen uns, euch Verbesserungen bei den experimentellen Funktionen FlowRow und FlowColumn ankündigen zu können. Sie unterstützen jetzt maxLines und Overflow. Außerdem stellen wir euch die neuen Funktionen ContextualFlowRow und ContextualFlowColumn vor. Dieses Update soll leistungsoptimale Komponenten bereitstellen. ContextualFlow* eignet sich perfekt für eine große Anzahl von Artikeln, die eine kleine maxLines-Konfiguration und dynamische „+N Mehr anzeigen“-Schaltflächen verwenden. FlowRow und FlowColumn eignen sich perfekt für eine kleine Anzahl von Artikeln (weniger als 100). Wichtig: Wenn Sie das vorhandene Verhalten in FlowRow oder FlowColumn beibehalten möchten, bei dem alle Elemente unabhängig davon zusammengesetzt werden, ob sie in die maximale Größe der Querachse passen, setzen Sie overflow bei der Initialisierung auf FlowRowOverflow.Visible oder FlowColumnOverflow.Visible. Unter ContextualFlowRowSample und FlowRowSample finden Sie Beispiele für diese neuen Funktionen in Aktion. (Ib9135, b/293577082)
  • Fügen Sie die Semantikeigenschaft maxTextLength hinzu, die für Textfelder festgelegt werden sollte, die die maximal zulässige Anzahl von Zeichen filtern. (I24d9f, b/170648072)
  • Die Modifier.inspectable-Ettiketiereinheit wurde eingestellt. Diese API führt zu mehr ungültigen Modifikatoren als nötig. Daher wird von ihrer Verwendung abgeraten. Entwickler sollten die Methode inspectableProperties() für ModifierNodeElement implementieren, wenn sie Modifikatoreigenschaften für Tools verfügbar machen möchten. (Ib3236)
  • Neuer Konstruktor für PopupProperties, der die vollständige Kontrolle über WindowManager.LayoutParams-Flags ermöglicht. (Ibb33e, b/312485503)
  • DelegatableNode.requireLayoutCoordinates() wurde eingeführt, um die aktuelle LayoutCoordinates eines Modifier.Node abzurufen, ohne onPlaced überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Ia8657)
  • DelegatableNode.currentLayoutCoordinates wurde eingeführt, um die aktuelle LayoutCoordinates eines Modifier.Node abzurufen, ohne onPlaced überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Iaebaa)
  • BasicTextField2 und zugehörige APIs im Paket androidx.compose.foundation.text2 werden zu androidx.compose.foundation.text verschoben. (I9f635)
  • Es wurde eine neue ApproachLayoutModifierNode-API hinzugefügt, mit der benutzerdefinierte Ansatzlogik in einem expliziten Modifier-Knoten erstellt werden kann. Außerdem wurde eine neue experimentelle DeferredTargetAnimation-API für Animationen hinzugefügt, deren Ziel bei der Instanziierung unbekannt ist. (I60745)
  • Neue Path-APIs zum Abfragen der Richtung eines Pfads und zum Extrahieren von Konturen aus einem Path. (I63d04)
  • PathHitTest und Path.contains(Offset) wurden hinzugefügt, um zu prüfen, ob ein Path einen bestimmten Punkt enthält. (I3b218)
  • Die TextLayoutResult macht jetzt die Methode getLineBaseline(lineIndex) verfügbar. So kann die Baseline einer beliebigen Textzeile zusätzlich zu den vorhandenen Convenience-Eigenschaften firstBaseline und lastBaseline gelesen werden. (Ide4e8, b/237428541)
  • Es wurde eine Methode hinzugefügt, mit der nur die Anmerkungen von zwei AnnotatedStrings verglichen werden können. (I32659)

Fehlerkorrekturen

  • Ein Problem mit der Abwärtskompatibilität mit SemanticsPropertyReceiver.performImeAction und SemanticsActions.PerformImeAction wurde behoben. (Id0528, b/322269946)

Version 1.7.0-alpha02

7. Februar 2024

androidx.compose.ui:ui-*:1.7.0-alpha02 ist veröffentlicht. Version 1.7.0-alpha02 enthält diese Commits.

API-Änderungen

  • Ein Problem mit der binären Kompatibilität mit SemanticsPropertyReceiver.performImeAction wurde behoben. (I65865, b/322269946)
  • Der PopupProperties-Konstruktor, der einen usePlatformDefaultWidth-Parameter akzeptiert, ist nicht mehr experimentell. (I8f8d2)
  • Es wurde eine Überladung von ComposeTestRule.waitUntil hinzugefügt, die eine Stringbeschreibung der Bedingung enthält, die in die Zeitüberschreitungsnachricht aufgenommen werden soll. (I9413e)
  • Neue Semantik-API unset() zum Entfernen von Semantik-Properties, die in derselben Modifier-Kette hinzugefügt werden. Neue Semantik-Property isOpaque. (I8c583, b/317966058, b/246056649)
  • originalEventPosition wurde aus der Kopiermethode in der öffentlichen API von PointerInputChange entfernt. (I7bead)

Fehlerkorrekturen

  • Es wurde ein Fehler bei der Barrierefreiheit behoben, durch den Elemente, die keine Tabs und keine Optionsfelder sind, bei Auswahl angeklickt werden konnten. (I2181c)
  • In VelocityTracker ist die Korrektur zum standardmäßigen Hinzufügen von Punkten jetzt enthalten. Die Korrektur kann weiterhin deaktiviert werden, indem VelocityTrackerAddPointsFix auf „false“ gesetzt wird, falls Probleme auftreten. (Ib3877, b/269487059)
  • Die binäre Abwärtsinkompatibilität in TextStyle und ParagraphStyle wurde behoben. (I179f0, b/320819734)

Externer Beitrag

  • Es wurde ein neuer DialogProperties-Konstruktor ohne plattformspezifische Parameter hinzugefügt. (I45829)
  • Es wurde ein neuer PopupProperties-Konstruktor ohne plattformspezifische Parameter hinzugefügt. (I9a038)

Version 1.7.0-alpha01

24. Januar 2024

androidx.compose.ui:ui-*:1.7.0-alpha01 ist veröffentlicht. Version 1.7.0-alpha01 enthält diese Commits.

API-Änderungen

  • ClipboardManager wurde erweitert, indem ClipEntry und ClipMetadata hinzugefügt wurden, um beliebige Inhalte wie Bilder zu unterstützen.
  • Fügt der ui-test die DeviceConfigurationOverride API hinzu, um das Verhalten von zu testenden Inhalten lokal zu überschreiben, z. B. um eine verfügbare Größe, Sprache, Layoutrichtung, Schriftartskalierung oder ein Thema anzugeben.

Version 1.6

Version 1.6.8

12. Juni 2024

androidx.compose.ui:ui-*:1.6.8 ist veröffentlicht. Version 1.6.8 enthält diese Commits.

Fehlerkorrekturen

  • Es wurden Inkonsistenzen bei der Schriftartskalierung behoben, wenn die Schriftartskala kleiner als die niedrigste definierte Tabelle ist. In diesem Fall interpolieren wir jetzt zwischen der linearen Skalierung 1x und der niedrigsten definierten Tabelle, sodass die Schriftgröße mit zunehmender Skalierung monoton ansteigt. (Icbae3)

Version 1.6.7

1. Mai 2024

androidx.compose.ui:ui-*:1.6.7 ist veröffentlicht. Version 1.6.7 enthält diese Commits.

Version 1.6.6

17. April 2024

androidx.compose.ui:ui-*:1.6.6 ist veröffentlicht. Version 1.6.6 enthält diese Commits.

Fehlerkorrekturen

  • Behebt einen seltenen BasicTextField-Absturz.

Version 1.6.5

3. April 2024

androidx.compose.ui:ui-*:1.6.5 ist veröffentlicht. Version 1.6.5 enthält diese Commits.

Version 1.6.4

20. März 2024

androidx.compose.ui:ui-*:1.6.4 ist veröffentlicht. Version 1.6.4 enthält diese Commits.

Version 1.6.3

6. März 2024

androidx.compose.ui:ui-*:1.6.3 ist veröffentlicht. Version 1.6.3 enthält diese Commits.

Version 1.6.2

21. Februar 2024

androidx.compose.ui:ui-*:1.6.2 ist veröffentlicht. Version 1.6.2 enthält diese Commits.

Version 1.6.1

7. Februar 2024 androidx.compose.ui:ui-*:1.6.1 ist veröffentlicht. Version 1.6.1 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem mit der Abwärtskompatibilität mit SemanticsPropertyReceiver.performImeAction und SemanticsActions.PerformImeAction wurde behoben. (Ie0bb2, b/322269946)
  • Bei der Messung von Layouts wird jetzt ein Fehler ausgegeben, wenn eines eine ungewöhnlich große Größe zurückgibt. Diese Art von Fehler tritt normalerweise auf, wenn bei der Messung direkt maximale Einschränkungen verwendet werden, ohne auf Constraints.Infinity zu prüfen. Mit der Prüfung können Entwickler Probleme mit dem Layout finden, das die falsche Größe hat, anstatt in einem Layout, das es enthält. (I339a9)

Version 1.6.0

24. Januar 2024

androidx.compose.ui:ui-*:1.6.0 ist veröffentlicht. Version 1.6.0 enthält diese Commits.

Version 1.6.0-rc01

10. Januar 2024

androidx.compose.ui:ui-*:1.6.0-rc01 ist veröffentlicht. Version 1.6.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Die Implementierung von Vektorgrafiken wurde optimiert, um die Leistung zu verbessern, indem zusätzliche Neuzusammenstellungen minimiert werden.

Version 1.6.0-beta03

13. Dezember 2023

androidx.compose.ui:ui-*:1.6.0-beta03 ist veröffentlicht. Version 1.6.0-beta03 enthält diese Commits.

Neue Funktionen

  • Es ist jetzt möglich, ein LayoutCoordinates zu trennen, ohne dass der Knoten getrennt wird. Im Compose-Layout-Inspector (If693) können Sie sich davor schützen.

Fehlerkorrekturen

  • PlatformImeOptions ist jetzt eine konkrete Klasse anstelle einer Schnittstelle. (If40a4)
  • Es wurden zusätzliche Downstream-Recompositions behoben, die dadurch verursacht wurden, dass LocalSoftwareKeyboardController und LocalTextInputService bei jeder Root-Recomposition neue Werte erhielten. (I42190, b/310510985)

Version 1.6.0-beta02

29. November 2023

androidx.compose.ui:ui-*:1.6.0-beta02 ist veröffentlicht. Version 1.6.0-beta02 enthält diese Commits.

Version 1.6.0-beta01

15. November 2023

androidx.compose.ui:ui-*:1.6.0-beta01 ist veröffentlicht. Version 1.6.0-beta01 enthält diese Commits.

API-Änderungen

  • Der Modifikator DragAndDropTarget akzeptiert jetzt explizit das empfangende DragAndDropTarget und hat eine Lambda-Funktion, um eine Drag-and-drop-Sitzung zu starten. Es gibt jetzt zwei Factory-Funktionen für ein DragAndDropModifierNode. Eines zum Empfangen von Übertragungen und eines zum Übertragen von Daten (I69481)
  • maximumFlingVelocity wird jetzt als Gleitkommazahl dargestellt. Die Dokumentation wurde aktualisiert, um die Einheit maximumFlingVelocity klarer zu definieren. (I8adc7)
  • onDragAndDropStart in der DragAndDropModifierNode-Factory wurde in acceptDragAndDropTransfer umbenannt.acceptsDragAndDropTransfer wurde dem dragAndDropTarget-Modifikator hinzugefügt, um die Annahme aus einer Drag-and-drop-Sitzung zu ermöglichen. Diese Lambda-Funktion gibt einen geeigneten DragAndDropTarget zurück, wenn Sie an einer Drag-and-drop-Sitzung interessiert sind. Andere Lambdas für die Verarbeitung von Drag-Events wurden dadurch ersetzt. Eine DragAndDropTarget-Fabrikmethode wurde hinzugefügt, um Daten aus Drag & Drop-Sitzungen zu empfangen (Iebf3a).
  • DragAndDropInfo wurde als Typ entfernt. DragAndDropModifierNode.drag akzeptiert jetzt Parameter für die transferData-, Dekorationsgröße und Drag-Dekorations-DrawScope-Lambda-Funktion.

    DragAndDropTarget hat Methoden für bestimmte Drag-and-drop-Ereignisse anstelle einer einzelnen abstrakten Methode.

    onDragAndDropEvent in der Factory-Funktion für ein DragAndDropModifierNode wurde in onDragAndDropStart umbenannt, um besser zu verdeutlichen, dass das bereitgestellte DragAndDropTarget nur für eine bestimmte Drag-and-drop-Sitzung gültig ist.

    Die DragAndDropEventType wurde entfernt (I645b1)

  • PlatformTextInputModifierNode.runTextInputSession wurde in establishTextInputSession umbenannt. (I03cd0)

  • Die API-Namen für durchlaufbare Knoten wurden verbessert, um sie verständlicher zu machen. (Ia4474)

  • Ersetzen Sie OriginalText durch TextSubstitution. (Ifa5a8)

  • PlatformTextInputModifierNode.textInputSession wurde in runTextInputSession umbenannt. (Ie9c6b)

  • Die untergeordneten Elemente von SubcomposeLayout (und Layouts wie LazyColumn, die darauf basieren), die zur Wiederverwendung in der Zukunft beibehalten werden, gelten als deaktiviert. Es wurde eine neue assertIsDeactivated()-Test-API eingeführt, um solche Knoten zu testen. Bei den restlichen Test-APIs werden deaktivierte Knoten standardmäßig herausgefiltert. (I2ef84, b/187188981)

  • FocusDirection.In und FocusDirection.Out wurden entfernt. Verwenden Sie stattdessen FocusDirection.Enter und FocusDirection.Exit. (I2f660)

  • Die Material SwipeToReveal APIs (für Karten und Chips) basieren jetzt auf einer slotbasierten API (wie von Compose empfohlen) anstelle von datenklassenbasierten Instanzen, um diese Slots zu erstellen. Dies ist eine wichtige Änderung. In der Demo und im Beispielcode finden Sie Beispiele für die Verwendung der neuen API. (Ia8943)

  • Der FontStyle(int)-Konstruktor wurde eingestellt. Verwenden Sie stattdessen FontStyle.Normal oder FontStyle.Italic. (I66610)

  • Die FontScalable-Schnittstelle wurde in FontScaling umbenannt (Ie804a)

Fehlerkorrekturen

  • SoftwareKeyboardController.show() zeigt die Softwaretastatur nicht mehr an, wenn kein Texteditor im Fokus ist. (I2165a, b/301477279)
  • Hardware-Schlüsselereignisse vom Typ „Up“ für Tasten, die kein „Down“-Ereignis in derselben Compose-Ansicht erhalten haben, werden jetzt ignoriert. (Ib37b4, b/305518328)
  • Renderer-Unterstützung für Sweep Gradient in ArcLine hinzufügen (I4d5bb)
  • Implementieren Sie „equals“ und „hashcode“ für PageSize.Fixed. (Ie3ede, b/300134276)
  • Problem mit der binären Kompatibilität bei Änderung des Fenstereinsatzes behoben (Iee695)
  • Die Material Core-Ebene für Material3-Chips/-Schaltflächen wurde entfernt, da die Microbenchmarks ohne sie eine bessere Leistung zeigen. (I55555)
  • TestDispatchers, die als effectContext an Compose-Tests übergeben werden, werden jetzt verwendet, um die Test- und Frame-Clocks zu erstellen. (Ia7178)

Version 1.6.0-alpha08

18. Oktober 2023

androidx.compose.ui:ui-*:1.6.0-alpha08 ist veröffentlicht. Version 1.6.0-alpha08 enthält diese Commits.

API-Änderungen

  • Bei Modifier.dragAndDrawSource wurde das Lambda onDrawDragShadow in drawDragDecoration umbenannt und bei DragAndDropInfo wurde der Größenparameter in dragDecorationSize umbenannt. (Id0e30, b/303904810)
  • Führen Sie SemanticsNodeInteraction.isDisplayed() und SemanticsNodeInteraction.isNotDisplayed() ein, um zu prüfen, ob ein übereinstimmender Knoten sichtbar ist oder nicht, ohne ihn auch zu bestätigen. (I2c196, b/302100809)
  • Für die Felder TextAlign, TextDirection, Hyphens und LineBreak des ParagraphTextStyle wurde ein spezieller Unspecified-Wert eingeführt, um null zu ersetzen. Da diese Klassen Inline-Klassen sind, vermeiden wir durch das Ersetzen von „nullable“ durch „Unspecified“ das Boxing von primitiven Typen. Konstruktoren, Getter und andere Methoden in TextStyle und im Absatzstil wurden aktualisiert, um die genannten Parameter als Nicht-Null-Typen zu akzeptieren. (I4197e, b/299490814)
  • Fügen Sie eine GoogleFont-Überladung zum Lesen einer GoogleFont aus XML hinzu. (If8f59)
  • LoremIpsum PreviewParameterProvider als offene Klasse erstellt. (I41bf5, b/266918816, b/300116360)

Fehlerkorrekturen

  • FontFamilyResolver verwendet jetzt Dispatchers.Main für Cache-Verwaltungs-Coroutinen. (Ie8dd9)
  • AndroidViewBinding entfernt jetzt synchron Fragment-Instanzen, die durch die Einbindung eines FragmentContainerView in Ihr Layout als Teil von onRelease mithilfe von commitNow (anstelle des zuvor verwendeten commit) aufgebläht wurden. Dadurch werden Probleme mit der Methode von Live Edit behoben, die Komposition bei Änderungen zu ersetzen. (I58fbf)

Version 1.6.0-alpha07

4. Oktober 2023

androidx.compose.ui:ui-*:1.6.0-alpha07 ist veröffentlicht. Version 1.6.0-alpha07 enthält diese Commits.

API-Änderungen

  • PlatformTextInputMethodTestOverride wurde eingeführt, um Tests für benutzerdefinierte Texteditoren zu schreiben. (Id159b)
  • Fügt den dragAndDropSource-Modifikator zum Starten von Drag-and-drop-Vorgängen und den dragAndDropTarget-Modifikator zum Empfangen von Drag-and-drop-Vorgängen hinzu. (Ib7828, b/286038936)
  • Die Sammlungen ColorList und ColorSet wurden hinzugefügt, um Zuweisungen zu vermeiden. (I744bd)
  • Das temporäre Flag DisableNonLinearFontScalingInCompose wurde hinzugefügt, um die nicht lineare Skalierung von Schriftarten zu deaktivieren. Legen Sie DisableNonLinearFontScalingInCompose = true in Ihren Tests fest, wenn Sie Zeit für die Bereinigung benötigen. Dieses Flag wird in Compose 1.6.0-beta01 entfernt. (Ic9486)

Fehlerkorrekturen

  • Das Parsen von optimierten XML-Vektordrawables wurde optimiert. (Ibb015)

Version 1.6.0-alpha06

20. September 2023

androidx.compose.ui:ui-*:1.6.0-alpha06 ist veröffentlicht. Version 1.6.0-alpha06 enthält diese Commits.

API-Änderungen

  • Zusätzliche Optimierungen für Material-Symbole. (I3e08d)
  • Es ist jetzt möglich, den Modifikatorbaum nach oben und unten zu durchlaufen, um ähnliche Knoten zu finden. (I2d234)
  • onRestoreFailed()-Callback zum focusRestorer()-Modifikator hinzugefügt (Ie1d43)
  • Für verschiedene Grafik-APIs wurden androidx-Annotationen hinzugefügt, um ColorInt, FloatRange, IntRange, Size und mehr anzugeben. (Id65c8, b/290950582)
  • showSystemUi=true zur Definition von PreviewScreenSizes hinzufügen (Ib61d3)

Änderungen beim Verhalten

  • In Compose wird jetzt eine nicht lineare Skalierung der Schriftgröße verwendet, um die Lesbarkeit und Barrierefreiheit zu verbessern. Wenn die Schriftgrößenskalierung in den Systemeinstellungen > 100% ist, wird kleiner Text normal vergrößert, bereits großer Text jedoch nur geringfügig. Außerdem werden in SP definierte Zeilenhöhen automatisch angepasst, damit sie proportional zur beabsichtigten Höhe bei 100% Skalierung bleiben. Weitere Informationen finden Sie unter Best Practices für die Schriftgrößenanpassung. (I11518)

Version 1.6.0-alpha05

6. September 2023

androidx.compose.ui:ui-*:1.6.0-alpha05 ist veröffentlicht. Version 1.6.0-alpha05 enthält diese Commits.

API-Änderungen

  • Aktivieren Sie die Aufnahme von Inhalten in AndroidComposeViewAccessibilityDelegateCompat. (Ib2969)
  • Die Fling-Geschwindigkeiten in View-Komponenten wie ScrollView und RecyclerView sind auf ViewConfiguration.ScaledMaximumFlingVelocity begrenzt. Compose enthält jetzt eine eigene Version von maximumFlingVelocity, die für Draggable gilt. (Ibf974)
  • Fügt das erste Gerüst zur Unterstützung von Drag-and-drop-APIs der Plattform hinzu. (If84ce)
  • deviceId in RotaryScrollEvent einfügen (Iba3bf)
  • Die ui-tooling Devices API wurde aktualisiert und enthält jetzt neuere Geräte (Ib25b4).

Version 1.6.0-alpha04

23. August 2023

androidx.compose.ui:ui-*:1.6.0-alpha04 ist veröffentlicht. Version 1.6.0-alpha04 enthält diese Commits.

API-Änderungen

  • Es wurde eine Methode zum Deaktivieren von ReusableComposition hinzugefügt, bei der Beobachtungen entfernt, Knoten aber beibehalten werden. Die deaktivierte Komposition kann durch Aufrufen von setContent wieder aktiviert werden. (Ib7f31)
  • Die ReusableComposition-Schnittstelle zum Verwalten des Lebenszyklus und der Wiederverwendung von Unterkompositionen wurde hinzugefügt. (I812d1, b/252846775)
  • Modifier.focusGroup wurde zu stabilen APIs hochgestuft. (I7ffa3)
  • Für verschiedene Grafik-APIs wurden androidx-Annotationen hinzugefügt, um ColorInt, FloatRange, IntRange, Size und mehr anzugeben. (I70487, b/290950582)
  • Die ColorFilter API wurde aktualisiert, um konkrete abgeleitete Klassentypen für eine bessere Überprüfbarkeit von Parametern zu haben. (I5fe29)
  • Die Bibliothek „wear-tooling-preview“ wurde eingeführt, um gültige Wear-Geräte aufzulisten, die für UI-Vorschauen verwendet werden können (Ib036e).
  • Die FontScalable-Schnittstelle wurde erstellt, um die Schriftartskalierung der Density-Schnittstelle zu verarbeiten. (I2cf3f)

Version 1.6.0-alpha03

9. August 2023

androidx.compose.ui:ui-*:1.6.0-alpha03 ist veröffentlicht. Version 1.6.0-alpha03 enthält diese Commits.

API-Änderungen

  • Neuer Typ für Ein- und Ausblendungsübergänge, bei dem der Inhalt während der Ein- und Ausblendungsanimation basierend auf der Größe des animierenden Containers skaliert wird. LookaheadScope Composable-Funktion und ‑Benutzeroberfläche sind jetzt stabil. (Ifb2ce)
  • Unterstützung für die Konfiguration von privateImeOptions hinzugefügt (Idb772)

Fehlerkorrekturen

  • PopupPositionProvider.calculatePosition aktualisiert jetzt automatisch die Position des Pop-ups, wenn sich der Status ändert, der in der Berechnung gelesen wird. (I676a1, b/292257547)
  • Es wurde ein Problem behoben, bei dem Textfelder die Tastatur anzeigten und bearbeitet werden konnten, wenn readOnly auf „true“ gesetzt war. Außerdem wurde ein Fehler behoben, durch den die Tastatur nicht angezeigt wurde, wenn readOnly im Fokus von „true“ in „false“ geändert wurde. (I34a19, b/246909589)
  • Erweiterte Anwendung globaler Assertions in UI-Tests. (I1f90d)

Version 1.6.0-alpha02

26. Juli 2023

androidx.compose.ui:ui-*:1.6.0-alpha02 ist veröffentlicht. Version 1.6.0-alpha02 enthält diese Commits.

API-Änderungen

  • Es wurde eine Dienstlocator-Schnittstelle hinzugefügt, die von Implementierern von Composition implementiert werden kann. Dadurch kann eine Implementierung von Composition, die Dienstsuchen an die ursprüngliche Composition delegiert, an einen anderen Composition-Delegatdienst delegiert werden. Diese Funktion sollte nicht direkt aufgerufen werden. Sie wird verwendet, um experimentelle APIs in der Laufzeit zu erstellen, die über umhüllte Versionen des Composers gefunden werden können, wie z. B. das UI-Modul. (I296b9)
  • Die PlatformTextInput* API wurde komplett neu gestaltet. (I6c93a, b/274661182, b/267235947, b/277380808)
  • SoftwareKeyboardController und LocalSoftwareKeyboardController sind nicht mehr experimentell. LocalSoftwareKeyboardController ist jetzt auch ein richtiger CompositionLocal. (I4c364)
  • LookaheadLayout und LookaheadLayoutScope sind seit einigen Releases veraltet und wurden jetzt entfernt. Die Ersatz-APIs sind LookaheadScope, die mit jedem Layout funktionieren. (I12ac3)
  • SemanticsNodeInteraction.requestFocus wurde als bequemere und besser auffindbare Möglichkeit zum Anfordern des Fokus in Tests hinzugefügt. (Ie8722)
  • Es wurden experimentelle APIs zum Registrieren globaler Zusicherungen hinzugefügt, die in Zukunft von Test-Frameworks verwendet werden können. (I12d77)

Fehlerkorrekturen

  • Der erste Aufruf des update-Callbacks von AndroidView wird jetzt aufgeschoben, bis die Ansicht angehängt wird. Er wird also nicht mehr ausgeführt, wenn die Komposition, in der AndroidView eingeführt wird, angewendet wird. Es wurde ein Fehler behoben, bei dem der update-Callback nicht ungültig gemacht wurde, wenn ein von ihm gelesener Status sofort durch einen Effekt geändert wurde. (Ie9438, b/291094055)

Version 1.6.0-alpha01

21. Juni 2023

androidx.compose.ui:ui-*:1.6.0-alpha01 ist veröffentlicht. Version 1.6.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Unterstützung von Lookahead in LazyList. So kann LazyList im Lookahead-Pass alle Animationen (z. B. Animation zur Platzierung von Elementen, AnimatedVisibility usw.) umgehen und die Lookahead-Größe und -Position für alle untergeordneten Elemente berechnen. Nach dem Lookahead-Pass konnten die Kinder von LazyList unabhängig von der Realität animieren, wie sie im Lookahead-Pass zu sehen war.

Verhaltensänderung: includeFontPadding ist in Compose jetzt standardmäßig „false“

includeFontPadding ist in Compose jetzt standardmäßig „false“ (21d806).

includeFontPadding ist ein altes Attribut, mit dem gesteuert wird, ob über der ersten und unter der letzten Textzeile zusätzlicher Abstand eingefügt werden soll, um Zeichen unterzubringen, die über oder unter die Textgrundlinien hinausgehen.

Wenn Sie diese Compose-Version aktualisieren, ändert sich die Darstellung aller Texte in Ihrer Benutzeroberfläche. Das zusätzliche Padding über der ersten und unter der letzten Zeile jedes angezeigten Texts wird entfernt.

Je nach Ihren UI-Anforderungen und den verwendeten Schriftartmesswerten sollten die Änderungen minimal sein. Es kann jedoch zu Blockierungen kommen, z. B. durch: - Fehlerhafte Screenshot-Tests. Korrigieren Sie die Benutzeroberfläche bei Bedarf und generieren Sie die goldenen Bilder neu. – Der Text ist leicht falsch ausgerichtet. Entfernen Sie alle benutzerdefinierten negativen Abstände oder fügen Sie bei Bedarf Abstände hinzu.

Sie können includeFontPadding aktivieren, indem Sie für jeden Text PlatformTextStyle verwenden:

Text(
 text = myText,
 style = TextStyle(
   lineHeight = 2.5.em,
   platformStyle = PlatformTextStyle(
     includeFontPadding = true/false
   )
   /* … */
  )
)

Sie können includeFontPadding für alle Ihre Texte aktivieren, indem Sie Ihre Material-Stile konfigurieren. Die Parameternamen variieren zwischen M2 und M3.

val Typography = Typography(
   body1 = TextStyle(
       fontFamily =    /* … */,
       fontSize =    /* … */,
       platformStyle = PlatformTextStyle(
           includeFontPadding = false
       )
   /* … */
   )
)

MaterialTheme(
   typography = Typography,
   /* … */
)

Weitere Informationen zu Compose includeFontPadding finden Sie in der Entwicklerdokumentation und in diesem Blogpost.

Wenn Sie Probleme oder Fehler im Zusammenhang mit dieser Änderung feststellen, melden Sie sie bitte über die Problemverfolgung.

API-Änderungen

  • Support für InputConnection#requestCursorUpdates (I0c69b)
  • FocusRequester.saveFocusedChild und FocusRequester.restoreFocusedChild hinzugefügt (Ic557e, b/272302679, b/275157318)
  • Fügen Sie den Typ ResourceResolutionException hinzu, um Throwables zu umschließen, die beim Versuch ausgelöst werden, Bitmap-Assets mit einer Beschreibung des Asset-Pfads zu laden, der nicht geladen werden konnte. (I19f44, b/230166331, b/278424788)
  • Optimierte Barrierefreiheit für Leistung und Arbeitsspeicherzuweisungen. (Iede48)
  • Semantik-Properties und ‑Aktionen zur Unterstützung der Textübersetzung hinzugefügt. (I4a6bc)
  • Neue Property in IntrinsincMeasureScope und ihren Implementierungen (z.B. MeasureScope), um anzugeben, ob der aktuelle Messdurchlauf ein Lookahead-Durchlauf ist. (I7a812)
  • Die DrawScope-API wurde aktualisiert, um das Retargeting des Renderings in einem anderen Canvas mit alternativer Dichte, Layoutrichtung und Größe zu ermöglichen.
  • DrawContext wurde aktualisiert, um die Konfiguration von Dichte und Layoutrichtung zu unterstützen und den Canvas konfigurierbar zu machen. (Ie1f9b, b/225408150)
  • Paragraph#fillBoundingBoxes wurde hinzugefügt, um Begrenzungsrahmen für Zeichen zu berechnen. (If30ee)
  • Eine Reihe häufig verwendeter MultiPreviews wurde hinzugefügt. (Ia5a27)

Fehlerkorrekturen

  • Die FocusTargetModifierNode-Schnittstelle wurde hinzugefügt, mit der eine benutzerdefinierte FocusTarget erstellt werden kann. (I9790e)
  • Die fallback*-Parameter im TextMeasurer-Konstruktor wurden in default* umbenannt. (I940a5)
  • SemanticsPropertyReceiver.performImeAction wurde in onImeAction und SemanticsActions.PerformImeAction in OnImeAction umbenannt. (I8e841)
  • Fügt „Wheel“ hinzu, um das Scrollen mit der Maus von einem Ziehen in verschachteltem Scrollen (insbesondere in NestedScrollConnection) zu unterscheiden. (Ie57e4)
  • Die asComposePaint API wurde hinzugefügt, um toComposePaint zu ersetzen, da das zurückgegebene Objekt das ursprüngliche android.graphics.Paint (I22b4c) umschließt.
  • SemanticsProperties.imeAction wird eingestellt und durch einen neuen Parameter für SemanticsActions.performImeAction ersetzt. (I4a587)
  • Unterstützung für die Auswahl per Maus hinzugefügt. Bei der Auswahl per Touch wird die Auswahl wortweise erweitert und zeichenweise verkleinert. (Ic0c6c, b/180639271)
  • Paragraph-Methoden, die bisher AssertionError für Offsets außerhalb des gültigen Bereichs ausgegeben haben, geben jetzt IllegalArgumentException aus, wie MultiParagraph. (I549d3, b/243338896)

Version 1.5

Version 1.5.4

18. Oktober 2023

androidx.compose.ui:ui-*:1.5.4 ist veröffentlicht. Version 1.5.4 enthält diese Commits.

Version 1.5.3

4. Oktober 2023

androidx.compose.ui:ui-*:1.5.3 ist veröffentlicht. Version 1.5.3 enthält diese Commits.

Fehlerkorrekturen

  • (b/301209788) TextField hat manchmal fälschlicherweise vorherige Befehle angewendet, wenn der Fokus auf der Eingabe von koreanischen Zeichen lag. Dadurch gingen Zeichen verloren.

Version 1.5.2

27. September 2023

androidx.compose.ui:ui-*:1.5.2 ist veröffentlicht. Version 1.5.2 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde eine Problemumgehung für Abstürze hinzugefügt, die auftreten, wenn über einen Hintergrundthread auf die API für das Scrollen für Barrierefreiheit zugegriffen wird.
  • Das Problem, dass nicht verknüpfte Knoten dem semantischen Baum hinzugefügt werden, wurde behoben.

Version 1.5.1

6. September 2023

androidx.compose.ui:ui-*:1.5.1 ist veröffentlicht. Version 1.5.1 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem Textfelder die Tastatur anzeigten und bearbeitet werden konnten, wenn readOnly auf „true“ gesetzt war. Außerdem wurde ein Fehler behoben, durch den die Tastatur nicht angezeigt wurde, wenn readOnly im Fokus von „true“ in „false“ geändert wurde. (I34a19, b/246909589)

Version 1.5.0

9. August 2023

androidx.compose.ui:ui-*:1.5.0 ist veröffentlicht. Version 1.5.0 enthält diese Commits.

Version 1.5.0-rc01

26. Juli 2023

androidx.compose.ui:ui-*:1.5.0-rc01 ist veröffentlicht. Version 1.5.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Ein Absturz, der auftrat, wenn SubcomposeLayout in movableContentOf() verwendet wurde, wurde behoben.

Version 1.5.0-beta03

28. Juni 2023

androidx.compose.ui:ui-*:1.5.0-beta03 ist veröffentlicht. Version 1.5.0-beta03 enthält diese Commits.

Fehlerkorrekturen

  • Die Schnittstelle „FocusTargetModifierNode“ wurde hinzugefügt, mit der ein benutzerdefiniertes „FocusTarget“ erstellt werden kann. (Ifb1d6)
  • Ein Problem mit Dialog- und Popup-Composables wurde behoben, das dazu führen konnte, dass die Größe des untergeordneten Fensters bei usePlatformDefaultWidth=true nicht wie erwartet geändert wurde. (I112ee)

Version 1.5.0-beta02

7. Juni 2023

androidx.compose.ui:ui-*:1.5.0-beta02 ist veröffentlicht. Version 1.5.0-beta02 enthält diese Commits.

API-Änderungen

  • Die asComposePaint API wurde hinzugefügt, um die Verwendung einer android.graphics.Paint-Instanz in Compose zu ermöglichen.

Fehlerkorrekturen

  • Die asComposePaint API wurde hinzugefügt, um toComposePaint zu ersetzen, da das zurückgegebene Objekt das ursprüngliche android.graphics.Paint (I22b4c) umschließt.

Version 1.5.0-beta01

24. Mai 2023

androidx.compose.ui:ui-*:1.5.0-beta01 ist veröffentlicht. Version 1.5.0-beta01 enthält diese Commits.

API-Änderungen

  • Entfernte Zuweisungen in der Neukomposition, Farbanimationen und AndroidComposeView (Ib2bfa)
  • Hilfsfunktion CacheDrawModifierNode() hinzugefügt, um die Delegation zu ermöglichen (Icf8f9)
  • Wir führen das Attribut „isLookingAhead“ ein, auf das über „MeasureScope“ zugegriffen werden kann, um Lookahead-Ergebnisse zu beobachten und den Hauptdurchlauf bei Bedarf zu beeinflussen. (Ibf4c3)
  • Neue Semantikeigenschaft traversalIndex, eine Gleitkommazahl, mit der Knoten in der TalkBack-Traversierung neu angeordnet werden (niedrigere Werte kommen zuerst). (I9a81b, b/186443263)
  • Umbenennung des Attributs „Semantik“ isContainer in isTraversalGroup (I121f6)
  • ColorProducer hat jetzt operator fun invoke anstelle von produce (I4a9a2)
  • Die Path-Transformations-API wurde hinzugefügt, um Übersetzungs-, Skalierungs- und Rotations-Transformationen auf Pfadobjekte anzuwenden. (I23434, b/233772232)
  • Die Methode von ColorProducer heißt produce. (I78bde)
  • toFrameworkColorSpace in toAndroidColorSpace umbenennen (I4f547)
  • Benennen Sie ColorLambda in ColorProducer um. (I73b1a)
  • Einführung von APIs zum Konvertieren zwischen Android- und Compose-Farbraumtypen. (Ie7db4, b/279979665)
  • Der Funktion BasicText wurde ein Farbparameter hinzugefügt, um die Textfarbe effizient animieren oder festlegen zu können. (Iffd88, b/246961787)
  • TextRange.constrain wurde in TextRange.coerceIn umbenannt. (I31be2)
  • Optimierte TextStyle.merge(...) mit vollständiger Parameterliste hinzugefügt. (Iad234, b/246961787)
  • Viele Text-APIs, die Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush) und MultiParagraph.paint(Brush) enthalten, wurden stabilisiert. (I2f740, b/261581564, b/261581931, b/261561245)
  • PlatformTextStyle.includeFontPadding ist nicht mehr veraltet. Ursprünglich wollten wir das Feld entfernen, aber das Feedback zeigt, dass Entwickler diese Konfigurationsoption benötigen. Daher wird die Einstellung „Nicht mehr unterstützt“ für das Feld entfernt (I98e96, b/277703184).
  • Die öffentliche TextRange.constrain-Methode wurde hinzugefügt. (I97912)
  • UrlAnnotations in AnnotatedStrings können jetzt über Bedienungshilfen wie TalkBack geöffnet werden. (If4d82, b/253292081)
  • Die semantische Aktion InsertTextAtCursor wurde für Textfelder hinzugefügt. (I11ed5)
  • Der LineHeightStyle.Alignment(topRatio)-Konstruktor wurde zur stabilen API hochgestuft. (I79c32, b/261565383)
  • TextMeasurer und zugehörige APIs sind nicht mehr in der Testphase. (I74647, b/261581753)
  • Die semantische Aktion PerformImeAction wurde hinzugefügt, um die IME-Aktion für Texteditor-Knoten aufzurufen. (Ic606f, b/269633506)
  • PlatformTextInput-APIs sind für Android nicht mehr experimentell. (I668eb)
  • Der Name des Wertparameters für Enum.valueOf wurde geändert (Ia9b89)
  • Mehr ausgelöste Ausnahmen von enum valueOf (I818fe)
  • Es wurde eine neue PlatformTextInputAdapter-API auf niedriger Ebene eingeführt, mit der benutzerdefinierte Implementierungen für die Texteingabe erstellt werden können, die direkt mit Plattform-APIs kommunizieren. (I58df4)
  • Der Parameter BlendMode wurde den Methoden DrawScope.drawText, Paragraph.paint und MultiParagraph.paint hinzugefügt, um verschiedene Mischalgorithmen beim Zeichnen von Text auf dem Canvas zu unterstützen. (I57508)
  • Benennen Sie Font.MaximumAsyncTimeout in Font.MaximumAsyncTimeoutMillis um. Nur umbenennen (I07af5)
  • Aktualisierte DPI-Werte der Referenzgeräte @Preview (Id6151, b/254528382)
  • Fügen Sie brush- und alpha-Parameter zu BasicText hinzu, um Textpinsel effizient zu animieren oder festzulegen.
  • Boxlose Lambda-Typen für Float, Double, Long, Int und Short in :ui:ui-unit definieren (I6f18d, b/246961787)

Fehlerkorrekturen

  • Mehrere Zuweisungen beim Tracking der Zeigergeschwindigkeit entfernt (I26bae)
  • Weniger Zuweisungen im Layout und in der Verwaltung von Zeigereingaben (I5333a)
  • Arbeitsspeichernutzung und Rendering der ersten Frames von Vektoren optimieren (I2f3c6)
  • Zuweisungen beim Zeichnen von Linien und Punkten mit Canvas entfernt (I9f535)
  • Dokumente für AndroidFont.fontVariationSettings hinzufügen (I7d9e2)

Externer Beitrag

  • Verbesserte Leistung und weniger Zuweisungen in Vector APIs (I906cb)

Version 1.5.0-alpha04

10. Mai 2023

androidx.compose.ui:ui-*:1.5.0-alpha04 ist veröffentlicht. Version 1.5.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Modifier.Node Verbesserungen bei der Delegation Es wurde eine erweiterte Möglichkeit hinzugefügt, von einer DelegatingNode aus an andere Modifier.Node-Instanzen zu delegieren. Dazu können Sie die APIs delegate und undelegate verwenden. Vor dieser Änderung musste jede API vom delegierenden Knoten explizit an den delegierten Knoten delegiert werden. Nach dieser Änderung werden Knotenschnittstellen implizit delegiert, sofern sie nicht explizit durch DelegatingNode überschrieben werden. (67352bc)

API-Änderungen

  • Stelle NestedScrollModifierNode vor, eine NestedScroll Modifier.Node, an die delegiert werden kann. (I69513)
  • Der AndroidViewBinding-Composable wurden die Parameter onReset und onRelease hinzugefügt, die dem AndroidView-Composable entsprechen und die Wiederverwendung von Ansichten mit ViewBinding ermöglichen. (I00b1e, b/276802519)
  • Die Compose Path API wurde aktualisiert, um Rückspulvorgänge zu unterstützen. So können Pfade häufiger und schneller wiederverwendet werden. (I7b797)
  • Optimierte TextStyle.merge(...) mit vollständiger Parameterliste hinzugefügt. (Iad234, b/246961787)
  • Viele Text-APIs, die Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush) und MultiParagraph.paint(Brush) enthalten, wurden stabilisiert. (I2f740, b/261581564, b/261581931, b/261561245)
  • PlatformTextStyle.includeFontPadding ist nicht mehr veraltet. Ursprünglich wollten wir das Feld entfernen, aber das Feedback zeigt, dass Entwickler diese Konfigurationsoption benötigen. Daher wird die Einstellung „Nicht mehr unterstützt“ für das Feld entfernt (I98e96, b/277703184).

Fehlerkorrekturen

  • Ein Regressionsfehler wurde behoben, durch den die Tastatur für Textfelder in Dialogfeldern, die nicht mit der Dialog-Composable-Funktion erstellt wurden, nicht angezeigt wurde. (I82551, b/262140644)

Version 1.5.0-alpha03

19. April 2023

androidx.compose.ui:ui-*:1.5.0-alpha03 ist veröffentlicht. Version 1.5.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Neues Standardverhalten für SubcomposeLayout in LookaheadScope: SubcomposeLayouts ohne bedingte Slots (z. B. TabRow, Scaffold, BoxWithConstraints usw.) funktionieren jetzt gut mit Lookahead-Animationen.

API-Änderungen

  • Mit dem neuen Standard-intermediateMeasurePolicy, bei dem die Richtlinie für die Messung aus dem Lookahead-Pass wiederverwendet wird, können SubcomposeLayout-Untertypen ohne bedingte Slots wie Scaffold, TabRow und BoxWithConstraints standardmäßig mit Lookahead verwendet werden. (Id84c8)
  • Der für ein Android-Fenster erstellte Recomposer blockiert jetzt nur noch Aufrufe von withFrameNanos anstelle der gesamten Komposition, wenn er eine ON_STOP-Benachrichtigung erhält. Das bedeutet, dass Fenster, die mit beendeten Aktivitäten verknüpft sind, weiterhin neu zusammengesetzt werden, wenn sich Daten ändern. Die Animationen oder andere Aufrufer von withFrameNanos werden jedoch blockiert. (Id9e7f, b/240975572)
  • Änderungen motionEventSpy in die stabile Version. (Ic5ec4, b/261560988)
  • Die öffentliche TextRange.constrain-Methode wurde hinzugefügt. (I97912)
  • PlatformTextStyle.includeFontPadding ist nicht mehr als veraltet gekennzeichnet, damit Entwickler diese Kompatibilitäts-API verwenden, um die Einstellung includeFontPadding auf „false“ umzustellen und zu testen. (I98e96, b/277703184)

Version 1.5.0-alpha02

5. April 2023

androidx.compose.ui:ui-*:1.5.0-alpha02 ist veröffentlicht. Version 1.5.0-alpha02 enthält diese Commits.

API-Änderungen

  • Neue SubcomposeLayout API, die eine zusätzliche Richtlinie für Zwischenmessungen für die Verarbeitung der Mess-/Layout-Logik bei Lookahead-basierten Animationen verwendet. (I017d3)
  • PointerInput ist jetzt lazy und verwendet Modifier.Node für eine bessere Leistung (Informationen zur geringfügigen Verhaltensänderung). (15dab9)
  • Experimentelle APIs werden mit Schlüsselereignissen in stabile APIs umgewandelt. (I9c7d8, b/261566839, b/261567368)
  • Ändert experimentelle APIs in PointerInputChange in stabile APIs. (I1b543, b/261560988, b/261565762, b/261565749)
  • Fügt eine Möglichkeit zum Instanziieren eines SuspendingPointerInputModifierNode für komplexere Modifier.Node-Implementierungen hinzu. (Ic4933)
  • UrlAnnotations in AnnotatedStrings können jetzt über Bedienungshilfen wie TalkBack geöffnet werden. (If4d82, b/253292081)
  • Eine API wurde hinzugefügt, um Hardwaretasten abzufangen, bevor sie an die Bildschirmtastatur gesendet werden (I4f4c6, b/186800395).
  • Die semantische Aktion InsertTextAtCursor wurde für Textfelder hinzugefügt. (I11ed5)
  • Bei textbezogenen Testaktionen (z.B. performTextInput) wird der Fokus jetzt direkt über die semantische Aktion angefordert, anstatt auf das Feld zu klicken. (I6ed05)

Fehlerkorrekturen

  • Für Text-Testaktionen müssen jetzt Textfelder aktiviert sein. (Iab328)

Version 1.5.0-alpha01

22. März 2023

androidx.compose.ui:ui-*:1.5.0-alpha01 ist veröffentlicht. Version 1.5.0-alpha01 enthält diese Commits.

API-Änderungen

  • Für Modifier.intermediateLayout ist jetzt kein expliziter LookaheadScope mehr erforderlich. Der Measure-Block in intermediateLayout hat IntermediateMeasureScope als Empfänger, der einen praktischen CoroutineScope, LookaheadScope und MeasureScope bietet.(Ibe2e5)
  • LookaheadLayout wurde durch LookaheadScope ersetzt, das kein Layout mehr ist. So können untergeordnete Inhalte in einem LookaheadScope direkt über die MeasurePolicy des übergeordneten Elements gesteuert werden. (Ibe2e5)
  • Fügt Modifier.Node#coroutineScope hinzu, damit Modifier.Nodes Koroutinen starten können. (I76ef9)
  • Ermöglichen Sie Modifier.Nodes das Lesen von CompositionLocals, indem Sie die Schnittstelle „CompositionLocalConsumerModifierNode“ implementieren. (Ib44df)
  • Weitergabe der Klasse „@Deprecated“ an das Attribut. (I882d1)

Version 1.4

Version 1.4.3

3. Mai 2023

androidx.compose.ui:ui-*:1.4.3 ist veröffentlicht. Version 1.4.3 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem AndroidView bei Verwendung mit bestimmten Modifikatoren möglicherweise nicht richtig angeordnet wurde. (I4dc77, b/274797771)
  • Ein Fehler in der 2D-Fokussuche wurde behoben, der sich auf DropDown-Menüs ausgewirkt hat (b/276811828).
  • Ein Fehler in benutzerdefinierten Eigenschaften für das Ein- und Ausblenden des Fokus wurde behoben, bei dem der Ein- und Ausblendblock nur beim ersten Aufruf der Lambda-Funktion ausgeführt wurde (b/277234245).
  • Es wurde ein Regressionsfehler im Fokus-System behoben, der beim Lesen von focusProperties zu einem Absturz geführt hat. (b/271324781, b/274897776)

Version 1.4.2

19. April 2023

androidx.compose.ui:ui-*:1.4.2 ist veröffentlicht. Version 1.4.2 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem AndroidView seine Modifizierer nicht richtig wiederverwendet hat, was möglicherweise zu unerwartetem Verhalten und Abstürzen geführt hat. (Ib67ee, b/275919849)
  • Es wurde ein Regressionsproblem behoben, bei dem die Tastatur für Textfelder in Dialogfeldern, die nicht mit dem Dialog-Composable erstellt wurden, nicht angezeigt wurde (I82551, b/262140644).

Version 1.4.1

5. April 2023

androidx.compose.ui:ui-*:1.4.1 ist veröffentlicht. Version 1.4.1 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem ParentDataModifier nicht AndroidView betraf (b/274797771).

Version 1.4.0

22. März 2023

androidx.compose.ui:ui-*:1.4.0 ist veröffentlicht. Version 1.4.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.3.0

  • Wir haben eine neue PinnableContainer API hinzugefügt, mit der Lazy-Listenelemente angepinnt werden können, sodass sie nicht verworfen werden, wenn sie aus dem sichtbaren Bereich gescrollt werden. Modifier.focusable() verwendet diesen Mechanismus beispielsweise, um das aktuell fokussierte Element anzupinnen. (Ib8881, b/259274257, b/195049010)
  • Das Fokus-System wurde mit den neuen experimentellen Modifier.Node APIs neu geschrieben. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • Das Attribut „Semantik“ wurde auf Oberflächen in IsContainer hinzugefügt. Diese Eigenschaft wird bei einer späteren Änderung verwendet, bei der die Reihenfolge der Bewegung basierend auf der semantischen Bedeutung von Elementen wie Oberflächen bestimmt wird. (I63379)
  • Es wurde eine neue Barrierefreiheitsrolle DropdownList hinzugefügt. Damit lässt sich das Verhalten von TalkBack beim Fokussieren von android.widget.Spinner nachbilden. (I177e5, b/236159001)
  • Sie können jetzt PlatformTextStyle(emojiSupportMatch) verwenden, um die Verarbeitung von Emojis für einen einzelnen Absatz optional zu deaktivieren. (Ia7100, b/139326806)
  • Bei Android Compose-UI-Tests werden jetzt Layoutdurchläufe für jeden Frame ausgeführt, wenn Frames bis zum Leerlauf ausgeführt werden (z.B. über waitForIdle). Dies kann sich auf Tests auswirken, die einzelne Frames von Layoutanimationen bestätigen. (I8ea08, b/222093277)
  • Die experimentelle TextMotion wurde TextStyle hinzugefügt, um festzulegen, ob Text Static(default) oder animiert sein soll. Verwenden Sie TextMotion.Animated, wenn Text über eine Animation skaliert, übersetzt oder gedreht werden soll. (I24dd7)

Version 1.4.0-rc01

8. März 2023

androidx.compose.ui:ui-*:1.4.0-rc01 ist veröffentlicht. Version 1.4.0-rc01 enthält diese Commits.

API-Änderungen

  • Es wurde eine Überladung der zusammensetzbaren Funktion AndroidView hinzugefügt, die den Parameter onReset akzeptiert. So können View-Instanzen wiederverwendet werden, wenn ihr Knoten in der Komposition verworfen und auf kompatible Weise wiederverwendet wird. Das ist besonders für LazyRows und LazyColumns von Ansichten nützlich. (I3f10d, b/230099236)
  • Es wurde eine neue PlatformTextInputAdapter-API auf niedriger Ebene eingeführt, mit der benutzerdefinierte Implementierungen für die Texteingabe erstellt werden können, die direkt mit Plattform-APIs kommunizieren. (I58df4)

Fehlerkorrekturen

  • Die Semantikaktion von BasicTextFieldSetText aktualisiert den Textpuffer jetzt über denselben Codepfad wie IME-Updates und die Testfunktionen (z.B. performTextReplacement).
  • Die Texttestfunktionen performTextClearance, performTextReplacement und performTextSelection verwenden jetzt SemanticsActions. (I0807d, b/269633168, b/269624358)

Version 1.4.0-beta02

22. Februar 2023

androidx.compose.ui:ui-*:1.4.0-beta02 ist veröffentlicht. Version 1.4.0-beta02 enthält diese Commits.

API-Änderungen

  • Die modifierElementOf() API wurde entfernt. Leiten Sie stattdessen direkt von ModifierNodeElement ab. (I2256b)
  • Wir haben einen neuen Modifier.Node.onReset()-Callback hinzugefügt, mit dem Sie einen lokalen Status zurücksetzen können, um den Fall richtig zu behandeln, wenn Layout wiederverwendet wird (z. B. als Element von LazyColumn). Wir haben FocusTargetModifierNode korrigiert, um den fokussierten Zustand richtig zurückzusetzen. (I65495, b/265201972)
  • Der Parameter BlendMode wurde den Methoden DrawScope.drawText, Paragraph.paint und MultiParagraph.paint hinzugefügt, um verschiedene Mischalgorithmen beim Zeichnen von Text auf dem Canvas zu unterstützen. (I57508)

Fehlerkorrekturen

  • Der Algorithmus für die Reihenfolge der Barrierefreiheit wurde verbessert. So werden beispielsweise obere/untere Leisten häufiger als erstes bzw. letztes gelesen (74e9c5).

Version 1.4.0-beta01

8. Februar 2023

androidx.compose.ui:ui-*:1.4.0-beta01 ist veröffentlicht. Version 1.4.0-beta01 enthält diese Commits.

API-Änderungen

  • PinnableContainer.PinnedHandle.unpin() wurde in release() umbenannt (I4667a)
  • Die experimentellen APIs waitUntilNodeCount, waitUntilAtLeastOneExists, waitUntilExactlyOneExists und waitUntilDoesNotExist wurden ComposeTestRule hinzugefügt. Die waitUntil API wurde erweitert, sodass sie beliebige Matcher und eine beliebige Anzahl von Knoten akzeptiert. Weitere Informationen finden Sie unter ComposeTestRule. (Ifa1b9, b/226934294)
  • Benennen Sie Font.MaximumAsyncTimeout in Font.MaximumAsyncTimeoutMillis um. (I07af5)
  • GoogleFont.Provider.AllFontsListUri entfernt und stattdessen im ktdoc verlinkt. (I16f29)

Fehlerkorrekturen

  • Dokumente für AndroidFont.fontVariationSettings hinzufügen (I7d9e2)

Version 1.4.0-alpha05

25. Januar 2023

androidx.compose.ui:ui-*:1.4.0-alpha05 ist veröffentlicht. Version 1.4.0-alpha05 enthält diese Commits.

API-Änderungen

  • Es wurden neue experimentelle Überladungen für die Funktion runComposeUiTest und die Funktionen create*ComposeRule eingeführt, die CoroutineContext-Parameter akzeptieren. Der Kontext wird für die Testkomposition und alle LaunchedEffect- und rememberCoroutineScope()-Aufrufe in der Komposition verwendet. (I10614, b/265177763)
  • Neue API zum Erfassen der eindimensionalen Geschwindigkeit hinzugefügt (If5a82)
  • FocusRequester ist jetzt als @Stable markiert. (I580ee)
  • Entfernen Sie eine experimentelle Annotation aus dem DialogProperties-Konstruktor, der einen usePlatformDefaultWidth-Parameter verwendet. (Ic4048)
  • Funktion zum Berechnen der Position und Tangente in einer bestimmten Entfernung auf einem Pfad hinzugefügt – mit PathMeasure.getPosition() und PathMeasure.getTangent() (I3b47c)
  • Der versehentlich öffentlich zugängliche Setter wurde aus PlatformParagraphStyle entfernt. (I07f47)
  • Mehr Typen/Nullwerte für Inline-/veraltete/ausgeblendete Funktionen (I24f91)
  • Fügen Sie AnnotatedString.hasStringAnnotations hinzu, um nach Annotationen mit Zuweisungen von null zu suchen. (I94dfe, b/246960758)
  • Es wurde eine neue Überladung für die Funktion TextMeasurer.measure hinzugefügt, die String als Text akzeptiert. (I47b2d, b/242705342)
  • Die APIs LineBreak und Hyphens in TextStyle sind jetzt stabil. (Ic1e1d)

Externer Beitrag

  • Die notifyFocusedRect-Methoden in TextInputSession und TextInputService sind nicht mehr veraltet. (I23a04, b/262648050)

Version 1.4.0-alpha04

11. Januar 2023

androidx.compose.ui:ui-*:1.4.0-alpha04 ist veröffentlicht. Version 1.4.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Wir haben eine neue PinnableContainer API hinzugefügt, mit der Lazy-Listenelemente angepinnt werden können, sodass sie nicht verworfen werden, wenn sie aus dem sichtbaren Bereich gescrollt werden. Modifier.focusable() verwendet diesen Mechanismus beispielsweise, um das aktuell fokussierte Element anzupinnen. (Ib8881, b/259274257, b/195049010)
  • Das Fokus-System wurde mit den neuen experimentellen Modifier.Node APIs neu geschrieben. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • Das Attribut „Semantik“ wurde auf Oberflächen in IsContainer hinzugefügt. Diese Eigenschaft wird bei einer späteren Änderung verwendet, bei der die Reihenfolge der Bewegung basierend auf der semantischen Bedeutung von Elementen wie Oberflächen bestimmt wird. (I63379)
  • Die neue Rolle für Bedienungshilfen DropdownList wurde hinzugefügt. Damit lässt sich das Verhalten von TalkBack's beim Fokussieren von android.widget.Spinner nachbilden. (I177e5, b/236159001)
  • Sie können jetzt PlatformTextStyle(emojiSupportMatch) verwenden, um die Verarbeitung von Emojis für einen einzelnen Absatz optional zu deaktivieren. (Ia7100, b/139326806)
  • Bei Android Compose-UI-Tests werden jetzt Layoutdurchläufe für jeden Frame ausgeführt, wenn Frames bis zum Leerlauf ausgeführt werden (z.B. über waitForIdle). Dies kann sich auf Tests auswirken, die einzelne Frames von Layoutanimationen bestätigen. (I8ea08, b/222093277)
  • Die experimentelle TextMotion wurde TextStyle hinzugefügt, um festzulegen, ob Text Static(default) oder animiert sein soll. Verwenden Sie TextMotion.Animated, wenn Text über eine Animation skaliert, übersetzt oder gedreht werden soll. (I24dd7)

API-Änderungen

  • Das Argument maxSize: IntSize in drawText wurde durch size: Size ersetzt, um es an andere DrawScope-Funktionen anzugleichen. size ist standardmäßig auf Size.Unspecified festgelegt. Das bisherige Standardverhalten sollte sich dadurch nicht ändern. (Icd27d)
  • Der nicht mehr weitergeführte experimentelle Schriftartkonstruktor wurde entfernt. (I8a724, b/261435386)
  • Die UI-Tooling-Datenklasse Group hat jetzt das Feld isInline, das angibt, ob die Gruppe für einen Aufruf einer Inline-Composable-Funktion bestimmt ist. Wenn isInline gleich true ist, erfolgt der Aufruf an eine Inline-Composable-Funktion. Der Wert kann jedoch für Aufrufe von Inline-Composable-Funktionen aus Modulen, die mit einer Version des Compose-Compiler-Plug-ins kompiliert werden, die die Inline-Funktionsinformationen nicht generiert, „false“ sein. (Idb846)
  • Eine Reihe von zuvor experimentellen APIs wurde in den stabilen Status überführt.
  • Die Rotary Scroll Event API ist jetzt stabil (I42ad3, b/261561229)
  • Die FontVariation API ist jetzt stabil (I8779f, b/241016309)
  • Alle Font()-Konstruktoren sind jetzt stabile APIs (I5948b, b/261435386)
  • DeviceFontFamilyName ist jetzt stabil (I8b640, b/261435386)
  • Der AndroidFont-Konstruktor mit variationSettings ist jetzt eine stabile API und kann zum Erstellen neuer Arten von Schriftartdeskriptoren verwendet werden. (I5adcc, b/261565807)
  • Die createFontFamilyResolver API ist jetzt stabil. Damit können nicht abgefangene Ausnahmen beim asynchronen Laden von Schriftarten abgefangen werden. (Ibb481, b/261435386)
  • Die Font.loadingStrategy API ist jetzt stabil. (I5937c, b/261435386)
  • Die GoogleFont API ist jetzt stabil. (Ic90b0, b/261435386)
  • TextUnit(float, TextUnitType) ist jetzt eine stabile API. (I90c84, b/261561612)
  • pluralStringResource ist jetzt eine stabile API. (I09849, b/261439703)

Version 1.4.0-alpha03

7. Dezember 2022

androidx.compose.ui:ui-*:1.4.0-alpha03 ist veröffentlicht. Version 1.4.0-alpha03 enthält diese Commits.

API-Änderungen

  • ExperimentalComposeUiApi aus PointerIcon entfernen (I23af8)
  • Einführung von Seitenaktionen für Bedienungshilfen: PageUp, PageDown, PageLeft, PageRight. Diese sind erst ab API 29 verfügbar. (Ida4ab)
  • Die Ansicht für den Parameter rememberNestedScrollConnection wurde von der Stammansicht in die Hostansicht geändert. (Ia5200)
  • Es wurde eine Modifier API hinzugefügt, mit der Informationen zum Scrollen von übergeordneten Elementen abgefragt werden können. (I2ba9d, b/203141462)
  • Wird in Clickable verwendet, um Tippinteraktionen richtig zu verzögern, wenn aus Gesten Scroll-Ereignisse werden könnten.
  • Es wurde ein Fehler behoben, bei dem Clickables nicht richtig verzögert wurde, wenn es in einem Scrollable ViewGroup verwendet wurde.
  • Die Funktion „Drawers and Sheets“ wurde aktualisiert, um das Drücken von Tasten richtig zu verzögern, falls aus Gesten Scroll-Ereignisse werden können.
  • CompositingStrategy.Always wurde in Offscreen umbenannt, um anzugeben, dass graphicsLayer immer in einen Zwischenpuffer (I47dc1) gerendert wird.
  • Layoutüberlastung bei mehreren Inhalts-Slots ist jetzt stabil (I10566, b/248294649)
  • Es wurden die experimentellen neuen APIs PerfettoTrace.record {} und PerfettoTraceRule hinzugefügt, um Perfetto-Traces (auch als System-Traces bezeichnet) als Teil eines Tests zu erfassen und das Testverhalten und die Leistung zu untersuchen. (I3ba16)
  • In UI-Tests mit einer Compose-Regel werden Fortsetzungen, die während withFrameNanos-Callbacks fortgesetzt werden, erst nach Abschluss aller Frame-Callbacks gesendet. Dies entspricht dem Verhalten von Compose bei normaler Ausführung. Tests, die auf dem alten Verhalten basieren, können jedoch fehlschlagen. Dies sollte sich nur auf Code auswirken, der withFrameNanos oder withFrameMillis direkt aufruft und Logik außerhalb des an diese Funktionen übergebenen Rückrufs enthält, die möglicherweise in die Rückrufe verschoben werden muss. Beispiele für die Änderungen am Animationstest finden Sie in diesem CL.
  • Dem Konstruktor und der Fabrikmethode TestMonotonicFrameClock wurde der optionale Parameter onPerformTraversals: (Long) -> Unit hinzugefügt, um Code nach withFrameNanos-Callbacks, aber vor dem Fortsetzen der Coroutinen der Aufrufer auszuführen. (Idb413, b/254115946, b/222093277, b/255802670)
  • EmojiCompat wurde zu Compose hinzugefügt (Ibf6f9, b/139326806)
  • Neuen Hintergrundparameter zu @Preview hinzugefügt, um dynamische Farben zu unterstützen (I9f512)

Fehlerkorrekturen

  • Benachrichtigungen zum Anwenden von Snapshots werden jetzt gesendet, nachdem Recomposer die Änderungen angewendet hat. (Iad6c0, b/222093277)
  • Es wurden Änderungen in captureToImage eingeführt, um Screenshots von mehreren Fenstern zu ermöglichen. Das ist nützlich für Screenshot-Tests, bei denen Compose-Pop-ups verwendet werden. (I169c5)

Abhängigkeitsupdates

  • Compose UI und Compose Material hängen jetzt von Lifecycle 2.5.1 ab. (I05ab0, b/258038814)

Version 1.4.0-alpha02

9. November 2022

androidx.compose.ui:ui-*:1.4.0-alpha02 ist veröffentlicht. Version 1.4.0-alpha02 enthält diese Commits.

API-Änderungen

  • GraphicsLayerScope wurde aktualisiert, um die aktuelle Größe von graphicsLayer zu erfassen. Das ist nützlich, um graphicsLayer-Transformationen als Funktion der Composable-Größe zu berechnen. (If8c43,b/181387080)
  • CompositingStrategy wurde eingeführt, um festzulegen, wann eine Offscreen-Compositing-Ebene für das Rendern von graphicsLayer-Inhalten verwendet werden soll. „Auto“ behält das Standardverhalten bei, bei dem intern eine Ebene verwendet wird, wenn Alpha angewendet wird, oder ein RenderEffect/Overscroll. Bei „Always“ wird immer ein Offscreen-Puffer eingeführt, während bei ModulateAlpha kein Offscreen-Puffer verwendet wird. Stattdessen werden die aufgezeichneten Zeichenanweisungen innerhalb des graphicsLayer moduliert. Bei der Verwendung von ModulateAlpha wird weiterhin ein Offscreen-Puffer für RenderEffect/Overscroll-Verwendungen genutzt (I25e82, b/256382834).
  • invalidateSubtree() wurde Modifier.Node hinzugefügt, um das Invalidieren ganzer Hierarchien für Layout und Zeichnen zu ermöglichen. (I4bd90)
  • rememberNestedScrollInteropConnection zur stabilen Version hochstufen Es wurde die Möglichkeit eingeführt, eine Stammansicht an rememberNestedScrollInteropConnection zu übergeben. So kann die benutzerdefinierte Ansicht besser auf Scroll-Einschränkungen reagieren, insbesondere in nicht standardmäßigen Ansichten (z.B. ModalBottomSheetDialog). (I9e107)
  • Die ObserverNode-Schnittstelle wurde hinzugefügt. Sie kann von Modifier.Node-Implementierungen verwendet werden, die benachrichtigt werden müssen, wenn sich ein Wert ändert, der zuvor gelesen wurde. (I5728b, b/247716483)
  • Paint wurde ein neuer Konstruktor hinzugefügt, der ein natives android.graphics.Paint akzeptiert. Außerdem wurde die Erweiterungsfunktion toComposePaint() hinzugefügt, mit der ein vorhandenes natives Paint-Objekt in Compose Paint konvertiert wird. (Ica91b)
  • Fügen Sie neue FontFamily.Resolver.resolveAsTypeface zur Verwendung auf Android hinzu. (I8950b)
  • ToolingState wurde hinzugefügt, damit Tools interne Status von Composables ändern können (Ie6614)
  • Tooling überarbeitet, um neu hinzugefügte Animationen besser zu unterstützen (I8677b)
  • Der Parameter minLines wurde in den Text für Material und Material3, TextField und OutlinedTextField eingefügt. Damit kann die Mindesthöhe der Komponente in Bezug auf die Anzahl der Zeilen festgelegt werden (I4af1d).

Version 1.4.0-alpha01

24. Oktober 2022

androidx.compose.ui:ui-*:1.4.0-alpha01 ist veröffentlicht. Version 1.4.0-alpha01 enthält diese Commits.

API-Änderungen

  • Für Gestenerkennung wurde die neue Methode awaitEachGesture() hinzugefügt. Sie funktioniert ähnlich wie forEachGesture(), aber die Schleife über Gesten erfolgt vollständig innerhalb von AwaitPointerEventScope, sodass keine Ereignisse zwischen den Iterationen verloren gehen können.
  • forEachGesture() wurde zugunsten von awaitEachGesture() eingestellt, da bei Ereignisse zwischen Gesten verloren gehen können. (Iffc3f, b/251260206)
  • Das Recycling von Bedienungshilfeobjekten in androidx wird eingestellt. Selbst bei den ältesten unterstützten Versionen sind die Leistungsänderungen vernachlässigbar. (I0a961)
  • DrawStyle wurde als experimentelles Attribut zu TextStyle und SpanStyle hinzugefügt, um das Zeichnen von umrandetem Text zu ermöglichen. (If24b8, b/155421273)
  • AnnotatedString.Builder implementiert jetzt kotlin.text.Appendable. (I1a061, b/231030444)
  • AnnotatedString.Builder hat jetzt eine append(AnnotatedString, start: Int, end: Int)-Methode zum Anhängen eines Teilstrings von AnnotatedString und der sich überschneidenden Formatierungen.
  • Den Zeichenfunktionen Paragraph und MultiParagraph wurde der Parameter DrawStyle hinzugefügt, mit dem sich umrandeter Text zeichnen lässt. (Ic8102, b/155421273)

Externer Beitrag

  • Danke, vighnesh, dass du TV-Geräte zu Vorabversionen hinzugefügt hast (Ie15cd)

Version 1.3

Version 1.3.3

11. Januar 2023

androidx.compose.ui:ui-*:1.3.3 ist veröffentlicht. Version 1.3.3 enthält diese Commits.

Fehlerkorrekturen

  • Problem behoben, bei dem es unter Android 9 manchmal zu einem Absturz kam, wenn der Status der Compose-Ansicht gespeichert wurde. (I0b755, b/260322832)

Version 1.3.2

7. Dezember 2022

androidx.compose.ui:ui-*:1.3.2 ist veröffentlicht. Version 1.3.2 enthält diese Commits.

Fehlerkorrekturen

  • Aktualisiert auf Protobuf 3.21.8, um eine Sicherheitswarnung in protobuf-javalite:3.19.4 (CVE-2022-3171) zu vermeiden (b/255545055)

Version 1.3.1

9. November 2022

androidx.compose.ui:ui-*:1.3.1 ist veröffentlicht. Version 1.3.1 enthält diese Commits.

Version 1.3.0

24. Oktober 2022

androidx.compose.ui:ui-*:1.3.0 ist veröffentlicht. Version 1.3.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.2.0

Version 1.3.0-rc01

5. Oktober 2022

androidx.compose.ui:ui-*:1.3.0-rc01 ist veröffentlicht. Version 1.3.0-rc01 enthält diese Commits.

API-Änderungen

  • Die neue experimentelle API „Hyphens“ wurde hinzugefügt, um die automatische Silbentrennung in Text zu unterstützen (Iaa869).

Fehlerkorrekturen

  • Bei DeviceFontFamilyName-Schriftarten werden die Variationseinstellungen für wght und ital nicht standardmäßig konfiguriert. Stattdessen wird die Plattform-Einstellung für geladene Typeface verwendet. (Ia7a6d, b/246989332)
  • LazyColumn-Speicherleck behoben: onModifierLocalsUpdated wurde nicht mit dem Standardwert aufgerufen, wenn Modifikatoren wiederverwendet wurden (b/230168389)

Version 1.3.0-beta03

21. September 2022

androidx.compose.ui:ui-*:1.3.0-beta03 ist veröffentlicht. Version 1.3.0-beta03 enthält diese Commits.

API-Änderungen

  • Optionen zum Anpassen des Zeilenumbruchs in Text hinzugefügt. (I86907)
  • Das size:IntSize-Argument wurde in der TextMeasurer.measure-Methode durch constraints: Constraints ersetzt, um Einschränkungen für die Mindestbreite zu unterstützen. (I37530, b/242707525)

Fehlerkorrekturen

  • Die BackHandler API von AndroidX Activity funktioniert jetzt in einem Dialog-Composable. (I35342)

Version 1.3.0-beta02

7. September 2022

androidx.compose.ui:ui-*:1.3.0-beta02 ist veröffentlicht. Version 1.3.0-beta02 enthält diese Commits.

API-Änderungen

  • Es wurde eine experimentelle Überladung für „Layout“ hinzugefügt, die eine Liste mit mehreren zusammensetzbaren Inhalts-Lambdas akzeptiert. So können Messwerte, die in verschiedenen Inhalts-Lambdas platziert werden, unterschiedlich behandelt werden (Ic1b4e).

Änderungen an experimentellen Focus APIs:

  • FocusDirection.In und FocusDirection.Out sind veraltet und werden durch FocusDirection.Enter und FocusDirection.Exit ersetzt. (Ia4262, b/183746982)
  • Es wurden zwei neue Fokus-Properties „enter“ und „exit“ hinzugefügt, mit denen sich ein benutzerdefiniertes Verhalten für FocusManager.moveFocus(Enter) und FocusManager.moveFocus(Exit) festlegen lässt. (I5f3f9, b/183746982)
  • Mit FocusRequester.Cancel können Sie jetzt eine Fokusverschiebung abbrechen. FocusRequester.Cancel kann in allen folgenden Fokusattributen verwendet werden: „up“, „down“, „left“, „right“, „next“, „previous“, „start“, „end“, „enter“ und „exit“. (Ib300f)

Version 1.3.0-beta01

24. August 2022

androidx.compose.ui:ui-*:1.3.0-beta01 ist veröffentlicht. Version 1.3.0-beta01 enthält diese Commits.

Modifier Node Refactor

Die Ebene, die Modifier/Modifier.Element-Instanzen verarbeitet und ihr Verhalten auf LayoutNodes koordiniert, wurde grundlegend überarbeitet. Es handelte sich um eine Refaktorierung, die sich nicht auf die öffentliche API der vielen Modifier in Compose auswirkte und als reine Implementierungsänderung angesehen werden kann. Trotzdem ist dies aus verschiedenen Gründen eine wichtige Änderung. (Ie4313)

Zusammenfassung der Änderungen

Die hinzugefügten experimentellen Modifier.Node-APIs bieten eine Abstraktion, mit der der Status in einer Instanz beibehalten werden kann, die mit dem Lebenszyklus des Layoutknotens beibehalten wird. Sie wird pro Layoutknoten und pro Verwendung des entsprechenden Modifier.Element zugeordnet, das sie erzeugt hat.

Im Allgemeinen bietet diese Abstraktion einen alternativen Mechanismus zum Erstellen zustandsorientierter Modifizierer, ohne auf die Mechanismen der Modifier.composed API angewiesen zu sein.

Risiko

Diese Änderung ist streng binärkompatibel mit früheren Versionen und soll in Bezug auf das beobachtbare Verhalten so weit wie praktisch und angemessen abwärtskompatibel sein. Allerdings gibt es nur wenige Subsysteme von Compose, die von diesem Refactoring nicht betroffen waren. Es ist wahrscheinlich, dass sich das Verhalten in einer Weise geändert hat, die nicht durch unsere Tests abgedeckt wurde und noch nicht gefunden und behoben wurde.

Wir empfehlen, mit Vorsicht auf diese Version zu aktualisieren. Wenn Sie der Meinung sind, dass dadurch etwas für Sie nicht mehr funktioniert, teilen Sie uns dies bitte mit.

Experimentelle APIs

Es wurden verschiedene experimentelle APIs hinzugefügt, die sich alle auf das neue Konzept eines „Modifier Node“ beziehen. Modifier.Node-Objekte werden durch Folgendes erstellt:

  • fun modifierElementOf(…): Modifier
  • abstract class ModifierNodeElement
  • abstract class Modifier.Node
  • abstract class DelegatingNode
  • interface LayoutModifierNode
  • interface DrawModifierNode
  • interface SemanticsNode
  • interface PointerInputNode
  • interface ModifierLocalNode
  • interface ParentDataModifierNode
  • interface LayoutAwareModifierNode
  • interface GlobalPositionAwareModifierNode
  • interface IntermediateLayoutModifierNode

Verhaltensänderung

Die maximal unterstützte Erhebung in Dialogfeldern und Pop-ups wurde auf 8 dp reduziert.

Die maximal unterstützte Erhebung für Compose-Dialogfelder und ‑Pop-ups wurde von 30 dp auf 8 dp reduziert. Diese Änderung betrifft sowohl benutzerdefinierte Dialogfelder und Pop-ups mit Material- als auch mit UI-Design. Diese Änderung wurde vorgenommen, um einen Bedienungshilfenfehler in Android-Versionen unter S zu beheben und dafür zu sorgen, dass Bedienungshilfen in diesen Fenstern mit den Inhalten im Dialogfeld oder Pop-up interagieren können.

Sie sind nur von dieser Änderung betroffen, wenn Sie ein benutzerdefiniertes Dialogfeld oder Pop-up mit einer Erhebung erstellen, die höher als 8 dp ist. Verringern Sie die Höhe des Dialogfelds oder Pop-ups. Wenn Sie dieses neue Verhalten deaktivieren möchten, können Sie einen eigenen Dialog oder ein eigenes Pop-up mit der gewünschten Erhebung forken. Dies wird nicht empfohlen, da die Bedienungshilfen dadurch beeinträchtigt werden können. Es liegt in der Verantwortung des Entwicklers, dafür zu sorgen, dass der untere Teil des Dialogfelds oder Pop-ups für Bedienungshilfen interaktiv und lesbar ist.

API-Änderungen

  • Ein Problem wurde behoben, bei dem painterResource bei Konfigurationsänderungen nicht aktualisiert wurde (I58e73, b/228862715).
  • Für rememberTextMeasurer werden die Parameter FontFamily.Resolver, Density oder LayoutDirection nicht mehr verwendet. Verwenden Sie den TextMeasurer-Konstruktor, um benutzerdefinierte Werte für diese Parameter anzugeben. (Ia1da3)
  • Die Eigenschaft DialogProperties.decorFitsSystemWindows wurde hinzugefügt, damit Dialogfelder WindowInsets unterstützen können. (I57742, b/229378542)
  • Schriftartkonstruktoren wurden zur Aufrechterhaltung der binären Kompatibilität in die ursprüngliche Kotlin-Datei zurückverschoben. Keine Änderung im Vergleich zur letzten stabilen Version. (Ieb2f3)
  • Unnötiger Operator aus mehreren Gleichheitsdefinitionen entfernt – dies hat keine Auswirkungen. (I6c309)
  • FontVariation.Setting ist eine versiegelte Schnittstelle, um zukünftige APIs für die Begrenzung zu ermöglichen. (I11021, b/143703328)
  • Fügen Sie CompositionGroup.findParameters zu SlotTree.kt hinzu. So können Tools Parameter für ein CompositionGroup abrufen, ohne die gesamte Slot-Tabelle parsen zu müssen. (I124fe)

Version 1.3.0-alpha03

10. August 2022

androidx.compose.ui:ui-*:1.3.0-alpha03 ist veröffentlicht. Version 1.3.0-alpha03 enthält diese Commits.

API-Änderungen

  • LayoutCoordinates.findRootCoordinates() ist jetzt öffentlich (I7fa37, b/204723384)
  • Es wurde eine experimentelle API hinzugefügt, um die LayoutCoordinates in der PlacementScope abzurufen. So wissen Entwickler, wo sich das aktuelle Layout befindet, um untergeordnete Elemente relativ zu seiner Position zu platzieren. (I5482b, b/238632578)
  • LayoutCoordinates.transformFrom wurde hinzugefügt, um die Matrix-Transformation von einem LayoutCoordinates in ein anderes zu erhalten. (Ic5ab1, b/238632578)
  • SemanticsModifier.id wurde verworfen und die Semantik-ID wurde stattdessen zu LayoutInfo.semanticsId verschoben. (Iac808, b/203559524)
  • Ressourcenschriftarten unterstützen jetzt das Festlegen von Schriftartvariationen (API 26+). (I900dd, b/143703328)
  • Unterstützung variabler Schriftarten in DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • Schriftartkonstruktoren akzeptieren jetzt eine Liste von FontVariation.Setting zum Konfigurieren variabler Schriftarten auf Geräten mit Android O und höher. (I11a9d, b/143703328)
  • Die FontVariation API zum Definieren und Verwenden von variablen Schriftarten wurde hinzugefügt. (I3c40c, b/143703328)
  • Der LineHeightStyle.Alignment-Konstruktor ist jetzt öffentlich (experimentell) (I4bbbe, b/235876330)
  • Der Absatz ist jetzt „expect|actual“ und für Android und Computer definiert. (Id387e, b/239962983)
  • Das Interface „Paragraph“ ist jetzt das Sealed Interface „Paragarph“. Es gibt keinen Anwendungsfall für die Unterklasse von Absatz. Wenn diese Änderung Sie betrifft, empfehlen wir Ihnen, sich an uns zu wenden. (If5247, b/239962983)
  • Die experimentelle Annotation wurde aus PlatformTextStyle und LineHeightStyle entfernt. (I64bef)
  • Stellen Sie TextInputService.show|hideSoftwareKeyboard ein. Verwenden Sie stattdessen SoftwareKeyboardController im App-Code und TextInputSession im IME-Verwaltungscode. (I14e4c, b/183448615)
  • Neue API für vorhandene Animationstypen hinzufügen (I26179)

Fehlerkorrekturen

  • @RequiresPermission wurde APIs hinzugefügt, für die die Berechtigung POST_NOTIFICATIONS für SDK 33 und höher erteilt werden muss. (Ie542e, b/238790278)

Version 1.3.0-alpha02

27. Juli 2022

androidx.compose.ui:ui-*:1.3.0-alpha02 ist veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.

API-Änderungen

  • Es wurde eine neue Property PointerInputChange#pressure zum Abrufen des Drucks hinzugefügt. (I45a5e, b/205164819)
  • rememberTextMeasurer wurde hinzugefügt, um TextMeasurer-Instanzen in der Komposition einfach zu erstellen und sich daran zu erinnern. (I8d66e)
  • Rect, RoundRect und MutableRect unterstützen jetzt die Kotlin-Syntax in zum Aufrufen der Funktion contains. (Ie42b0, b/238642990)
  • Entfernen Sie unnötige Funktionen aus KeyInjectionScope, da sie sich problemlos mit einfacheren Teilen der API implementieren lassen. Die entfernten Funktionen sind pressKeys, keysDown und keysUp. (I81d77)
  • Die Namen von Konstanten und Parametern in KeyInjectionScope wurden umgestaltet, um das Suffix „Millis“ einzuschließen, wenn die Einheiten der Konstanten und Parameter Millisekunden sind. (Iabef5)
  • Die Methode toStringForLog() wurde zu EditCommand hinzugefügt, um Probleme beim Bearbeiten von Text zu beheben. (I53354, b/228862731)
  • Die Erweiterungsfunktion drawText wurde für DrawScope hinzugefügt, um die Möglichkeit zu bieten, Text mit mehreren Stilen in Composables und Modifikatoren zu zeichnen, die auf einem DrawScope wie Canvas und drawBehind basieren. (I16a62, b/190787898)
  • Wir führen eine neue experimentelle API namens TextMeasurer ein, die eine beliebige Berechnung des Textlayouts ermöglicht, die unabhängig von der Compose-Laufzeit identische Ergebnisse wie BasicText liefert. (I17101)
  • Fügen Sie mapTree zu SlotTree.kt hinzu. So können Tools das SlotTree untersuchen, ohne zuerst eine Kopie im Arbeitsspeicher zu erstellen, wie es bei asTree der Fall ist. Für den Layout Inspector ergibt sich dadurch eine Leistungssteigerung um etwa das Zehnfache. (I5e113)
  • Die Compose-Vorschau wird jetzt in binären Ausgabedateien gespeichert, damit Entwickler MultiPreview-Annotationen aus Bibliotheken schreiben und wiederverwenden können. (I85699, b/233511976)

Fehlerkorrekturen

  • Beim Hinzufügen von InputEventChange-Ereignissen zum Velocity-Tracker werden jetzt Deltas anstelle von Positionen berücksichtigt. So wird die Geschwindigkeit in allen Fällen korrekt berechnet, auch wenn sich das Zielelement bewegt (Icea9d, b/216582726, b/223440806, b/227709803).
  • NPE-Fehler behoben, der durch AnnotatedString.toUpperCase verursacht wurde, wenn Annotationen vorhanden sind. (I0aca2, b/210899140)

Version 1.3.0-alpha01

29. Juni 2022

androidx.compose.ui:ui-*:1.3.0-alpha01 ist veröffentlicht. Version 1.3.0-alpha01 enthält diese Commits.

API-Änderungen

  • Neuer LookaheadLayout, der einen Lookahead-Pass vor der eigentlichen Messung/dem eigentlichen Layout unterstützt. So kann das Layout bei Änderungen vorab berechnet werden. Gleichzeitig kann für die Maßnahme/das Layout nach dem Lookahead die vorab berechnete Größe/Position verwendet werden, um die Größe und Positionen in Richtung des Ziels zu animieren. SubcomposeLayouts werden noch nicht unterstützt, aber in einem zukünftigen Release. (I477f5)
  • Fügen Sie dem Pinselstil von TextStyle und SpanStyle einen optionalen Alphaparameter hinzu, um die Deckkraft des gesamten Text zu ändern. (Ic2fac, b/234117635)
  • Der Annotationstyp UrlAnnotation und die zugehörigen Methoden wurden eingeführt, um die Unterstützung von TalkBack-Links in AnnotatedStrings zu ermöglichen. (I1c754, b/231495122)
  • Dienstfunktionen werden in die Laufzeit verschoben (I4f729)

Fehlerkorrekturen

Externer Beitrag

  • Eine neue API WindowInfo.keyboardModifiers wurde hinzugefügt, um ihren Status in zusammensetzbaren Funktionen oder über snapshotFlow zu beobachten (Icdb8a).

Version 1.2

Version 1.2.1

10. August 2022

androidx.compose.ui:ui-*:1.2.1 ist veröffentlicht. Version 1.2.1 enthält diese Commits.

Fehlerkorrekturen

  • Nullpointer im Inspector behoben (b/237987764)
  • Es wurde eine ClassCastException behoben, die beim Speichern von Werten im Inspector aufgetreten ist (b/235526153).

Version 1.2.0

27. Juli 2022

androidx.compose.ui:ui-*:1.2.0 ist veröffentlicht. Version 1.2.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.1.0

  • Verbesserungen bei der Fokusnavigation:

    • Das fokussierte Scrollen von Lazy-Listen funktioniert jetzt mit der neuen BeyondBoundsLayout-Core-API.
    • Neue APIs zur Anpassung des Verhaltens in FocusOrder und FocusProperties
    • Verbessertes Verhalten bei Verwendung einer physischen Tastatur oder TV-Fernbedienung
  • Neue APIs für:

    • Fenstereinsätze
    • Wichtige Primitiven für gestengesteuerte, unendliche und Layout-Animationen
    • GraphicsLayer-Funktionen, einschließlich RenderEffect
  • Viele Fehlerkorrekturen und Leistungsverbesserungen

Version 1.2.0-rc03

29. Juni 2022

androidx.compose.ui:ui-*:1.2.0-rc03 ist veröffentlicht. Version 1.2.0-rc03 enthält diese Commits.

  • Keine Änderungen seit Version 1.2.0-rc02.

Version 1.2.0-rc02

22. Juni 2022

androidx.compose.ui:ui-*:1.2.0-rc02 ist veröffentlicht. Version 1.2.0-rc02 enthält diese Commits.

Version 1.2.0-rc01

15. Juni 2022

androidx.compose.ui:ui-*:1.2.0-rc01 ist veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.

API-Änderungen

  • Schnittstellen in Compose-Bibliotheken werden jetzt mit JDK8-Standardmethoden für Schnittstellen erstellt (I5bcf1).
  • KeyInjectionScope wurden Funktionen höherer Ordnung hinzugefügt, um Tastendrücke einzufügen, während andere Tasten gedrückt oder aktiviert sind. Zu diesen Funktionen gehören withKeysDown, withKeysToggled usw. Außerdem wurden Eigenschaften hinzugefügt, mit denen geprüft werden kann, ob eine bestimmte Metataste gedrückt ist, z. B. isCtrlDown, um zu prüfen, ob eine der beiden Steuertasten gedrückt ist. Weitere Informationen zu den einzelnen Funktionen finden Sie unter KeyInjectionScope. (I9f6cd, b/229831515)
  • Es wurde eine experimentelle OverscrollEffect eingeführt, um benutzerdefinierte Overscroll-Effekte zu ermöglichen. Außerdem gibt es Modifier.scrollable-Überladungen, die sie akzeptieren.
  • Die experimentelle LocalOverScrollConfiguration wurde vom foundation.gesture in das Foundation-Paket verschoben und in LocalOverscrollConfiguration umbenannt (If19fb, b/204650733).
  • „runComposeUiTestWithoutActivity {}“ in „runEmptyComposeUiTest {}“ umbenennen, um es an createEmptyComposeRule() anzugleichen (I6fed7)

Version 1.2.0-beta03

1. Juni 2022

androidx.compose.ui:ui-*:1.2.0-beta03 ist veröffentlicht. Version 1.2.0-beta03 enthält diese Commits.

API-Änderungen

  • pressKeyTimes sowie isCapsLockOn und Freunde zu KeyInjectionScope hinzugefügt. Außerdem unterstützt die API jetzt kombinierte Maus- und Tastatureingabemuster, z. B. das Klicken auf eine Maustaste, während eine Meta-Taste gedrückt wird. (I4c8da, b/229831515)
  • Es wurde experimentelle Unterstützung für das Einfügen von Schlüsselereignissen hinzugefügt. Verwenden Sie performKeyInput, um Schlüsselereignisse zu senden, oder senden Sie sie während einer multimodalen Eingabe mit performMultiModalInput über die key-Eigenschaft von MultiModalInjectionScope. Die Dokumentation zur API finden Sie unter KeyInjectionScope. (Ic5000, b/229831515)
  • Es wurde ein neues GoogleFont.Provider.AllFontsListUri zum Abrufen der kanonischen Internetquelle von Google Fonts hinzugefügt, die von Android unterstützt werden.
  • Die Fehlermeldungen, die neu ausgegeben werden, wenn GoogleFonts in Compose nicht geladen werden können, wurden verbessert. (I0416c)

Fehlerkorrekturen

  • Wenn wir InputEventChange-Ereignisse zum Velocity Tracker hinzufügen, berücksichtigen wir jetzt Deltas anstelle von Positionen. So wird die Geschwindigkeit in allen Fällen korrekt berechnet, auch wenn sich das Zielelement bewegt (I51ec3, b/216582726, b/223440806, b/227709803).
  • Die Einstellung Show Layout Bounds wird jetzt für Composables angewendet, sobald sie über die Kachel in den Schnelleinstellungen aktiviert oder deaktiviert wird. Sie müssen die Aktivität nicht mehr verlassen und neu aufrufen. (I843d5, b/225937688)
  • Beim Nachschlagen von Bedienungshilfen-Strings wird das Laden von Schriftarten nicht ausgelöst. Bisher wurde versucht, Schriftarten für StyleSpans zu laden, was zu Abstürzen führte, wenn FontFamily.Resolver überschrieben wurde. (I4609d)
  • Wenn Sie die Entf-Taste drücken, während sich der Cursor am Ende eines Textfelds befindet, stürzt die App nicht mehr ab.
  • Für DeleteSurroundingTextCommand und DeleteSurroundingTextInCodePointsCommand müssen die Konstruktorargumente jetzt nicht negativ sein. (Ica8e6, b/199919707)

Version 1.2.0-beta02

18. Mai 2022

androidx.compose.ui:ui-*:1.2.0-beta02 ist veröffentlicht. Version 1.2.0-beta02 enthält diese Commits.

API-Änderungen

  • Funktionen in anderen Vorschautypen wiederverwenden (I19f39)

Fehlerkorrekturen

  • ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer wurde in DisposeOnDetachedFromWindowOrReleasedFromPool umbenannt, um besser widerzuspiegeln, dass es sich um Fälle handelt, in denen eine Entsorgung erfolgt, und nicht nur um Fälle, in denen keine Entsorgung erfolgt. (If15ca)

Version 1.2.0-beta01

11. Mai 2022

androidx.compose.ui:ui-*:1.2.0-beta01 ist veröffentlicht. Version 1.2.0-beta01 enthält diese Commits.

Neue Funktionen

  • Dies ist die erste Betaversion von 1.2.

API-Änderungen

  • Experimentelle BeyondBoundsInterval hinzugefügt, die von benutzerdefinierten Implementierungen von LazyList verwendet werden kann, wenn Elemente außerhalb der sichtbaren Grenzen angeordnet werden (Ifabfb, b/184670295)
  • Versionen von Modifier.composed mit Schlüssel sind jetzt eine stabile API (Ie65e4, b/229988420)
  • Die rememberNestedScrollConnection API wurde vereinfacht, sodass Kompositions-Locals verwendet werden, um die aktuellen Ansichtsinformationen abzurufen (I67ca7).
  • Die Annotation @ComposableTarget und mit @ComposableTargetMarker gekennzeichnete Annotationen können jetzt mit dem Präfix @file auf Dateiebene verwendet werden. Wenn Sie eine Zielanmerkung auf Dateiebene verwenden, geht der Compiler davon aus, dass alle zusammensetzbaren Funktionen in der Datei für den zugehörigen Applier vorgesehen sind. Wenn Sie beispielsweise @file:UiComposable verwenden, wird deklariert, dass alle @Composable-Funktionen auf den Compose UI-Applier ausgerichtet sind. Eine Funktion, die auf einen anderen Applier ausgerichtet werden muss, muss die Zielmarkierungsanmerkung für den gewünschten Applier explizit angeben. (I40804)
  • Es wurde eine neue experimentelle, plattformunabhängige Test-API eingeführt: interface ComposeUiTest und fun runComposeUiTest(block: ComposeUiTest.() -> Unit). Mit diesen APIs können Compose-UI-Tests ohne TestRule ausgeführt werden. Wenn Sie einen Test ohne ComposeTestRule ausführen möchten, übergeben Sie den Test als Lambda an runComposeUiTest und verwenden Sie die Methoden und Elemente im Empfängerbereich ComposeUiTest, die mit denen in ComposeContentTestRule identisch sind.

    Die Android-spezifischen interface AndroidComposeUiTest und fun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit) werden hinzugefügt, um den Zugriff auf die zugrunde liegende Aktivität zu ermöglichen, ähnlich wie bei AndroidComposeTestRule. Wenn Sie noch mehr Kontrolle haben möchten, können Sie selbst eine class AndroidComposeUiTestEnvironment instanziieren.

    Die Desktop-Implementierung ist class DesktopComposeUiTest, aber derzeit werden keine Desktop-spezifischen Ausführungsfunktionen angeboten.

    So migrieren Sie einen Test von ComposeTestRule zu ComposeUiTest (Android-Beispiel): Von:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @get:Rule val rule = createComposeRule()
        @Test
        fun test() {
            rule.setContent {
                Text("Hello Compose!")
            }
            rule.onNodeWithText("Hello Compose!").assertExists()
        }
    }
    

    An:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @Test
        @OptIn(ExperimentalTestApi::class)
        fun test() = runComposeUiTest {
            setContent {
                Text("Hello Compose!")
            }
            onNodeWithText("Hello Compose!").assertExists()
        }
    }
    
  • Derzeit werden ComposeContentTestRule und ComposeTestRule nicht von ComposeUiTest abgeleitet. Das bedeutet, dass Erweiterungsfunktionen für ComposeUiTest noch nicht über die TestRule-Schnittstelle aufgerufen werden können. Wenn ComposeUiTest in die stabile API übergeht, werden ComposeContentTestRule und ComposeTestRule so geändert, dass sie von ComposeUiTest abgeleitet werden. (Ib4e90)

  • LineHeightBehavior wird in LineHeightStyle umbenannt

  • LineVerticalAlignment wird in LineHeightStyle.Alignment umbenannt

  • Umbenennen: LineHeightTrim wird in LineHeightStyle.Trim umbenannt

  • Standardkonstruktorwerte aus LineHeightStyle entfernt (I582bf, b/181155707)

  • Brush wurde TextStyle und SpanStyle hinzugefügt, um Text mit Farbverlauf zu zeichnen. (I53869, b/187839528)

  • Die Attribute trimFirstLineTop und trimLastLineBottom von LineHeightBehavior wurden in ein einzelnes Enum geändert: LineHeightTrim. LineHeightTrim hat Werte für vier Status, die durch zwei boolesche Werte definiert werden: FirstLineTop, LastLineBottom, „Both“ (Beide) und „None“ (Keine) (Ifc6a5, b/181155707)

  • LineHeightBehavior wurde zu TextStyle und ParagraphStyle hinzugefügt. Mit LineHeightBehavior wird festgelegt, ob die Zeilenhöhe auf die Oberkante der ersten Zeile und die Unterkante der letzten Zeile angewendet wird. Außerdem wird die Ausrichtung der Linie im von TextStyle(lineHeight) bereitgestellten Bereich definiert.

    So ist es beispielsweise möglich, über LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false) ein Verhalten zu erzielen, das dem von CSS definierten Verhalten ähnelt.

  • Die Konfigurationen trimFirstLineTop und trimLastLineBottom funktionieren nur dann richtig, wenn includeFontPadding auf „false“ gesetzt ist. (I97332, b/181155707)

  • Die Funktionen PlatformParagraphStyle.lerp und PlatformSpanStyle.lerp wurden in Funktionen der obersten Ebene geändert (I9a268).

Fehlerkorrekturen

  • In der Dokumentation zu PointerInputChange::copy wird jetzt korrekt angegeben, dass es sich um eine flache Kopie handelt. (I182f5)
  • Unterstützung von Auslassungspunkten, wenn die Höhe begrenzt ist und nicht alle Textzeilen passen (Ie528c, b/168720622)
  • Standardmäßig aktiviert includeFontPadding. Sie können die includeFontPadding mit dem Attribut TextStyle.platformTextStyle deaktivieren. In naher Zukunft werden wir das Standardverhalten ändern. Bis dahin können wir jedoch die Verbesserungen der Zeilenhöhe (aosp/2058653) besser integrieren und Probleme mit dem Abschneiden von TextField beheben. (I01423, b/171394808)

Externer Beitrag

  • MouseInjectionScope.scroll(delta = someDelta) ist jetzt auf Android invertiert, wenn wir vertikal scrollen. Wenn „someDelta“ positiv ist, wird nach unten gescrollt. (Ifb697, b/224992993)

Version 1.2.0-alpha08

20. April 2022

androidx.compose.ui:ui-*:1.2.0-alpha08 ist veröffentlicht. Version 1.2.0-alpha08 enthält diese Commits.

API-Änderungen

  • Die pluralStringResource-Funktionen wurden als experimentell gekennzeichnet, um eine Weiterentwicklung zu ermöglichen, die in Zukunft eine bessere Internationalisierung unterstützt. (If24e4)
  • Die Parameter „Constraints“ werden jetzt für „Paragraph“ und „MultiParagraph“ akzeptiert. Das Übergeben von Constraints.maxHeight hat derzeit keine Auswirkungen, ermöglicht aber in Zukunft einige Berechnungen, z. B. das Auslassen von Text basierend auf der Höhe. (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() akzeptiert jetzt eine benutzerdefinierte MutableSet-ähnliche Klasse, in der keine neuen Elemente hinzugefügt werden können. (Icd314)
  • PointerIcon ist jetzt eine @Stable-Schnittstelle (I9dafe)
  • Die teilweise Nutzung (down ODER position) wurde in PointerInputChange eingestellt. Mit consume() können Sie die Änderung vollständig übernehmen. Mit isConsumed können Sie feststellen, ob die Änderung bereits von jemand anderem übernommen wurde.
  • PointerInputChange::copy() erstellt jetzt immer eine oberflächliche Kopie. Das bedeutet, dass Kopien von PointerInputChange verbraucht werden, sobald eine der Kopien verbraucht wird. Wenn Sie einen ungebundenen PointerInputChange erstellen möchten, verwenden Sie stattdessen den Konstruktor. (Ie6be4, b/225669674)
  • Aktiviert die Interoperabilität von verschachteltem Scrollen zwischen Compose und View in der Richtung „Compose“ > „View“. Das bedeutet, dass ein Compose-Parent-Element verschachtelte Scroll-Deltas von einer verschachtelten Scroll-Ansicht empfangen kann. (If7949, b/174348612)
  • Neues SemanticsProperty testTagsAsResourceId, mit dem Compose an UIAutomator-Tests angepasst werden kann, die für das View-System entwickelt wurden. (I39c20)
  • Alle verfügbaren Schriftstärken für Systemschriftarten auf Android anzeigen, wenn FontFamily.SansSerif verwendet wird. Intern werden dann Fallback-Schriftartnamen wie „sans-serif-medium“ für API 21–28 verwendet. Dies ist eine Verhaltensänderung, da zuvor nur die Gewichte 400 und 700 in API 21–28 unterstützt wurden. (I380fe, b/156048036, b/226441992)
  • Bei den Instructors „Absatz“ und „Mehrere Absätze“ wurden Positionsargumente vor optionale Argumente verschoben. (Idafaa)
  • AndroidFont verwendet jetzt typefaceLoader als Konstruktorparameter. (I2c971)

Version 1.2.0-alpha07

6. April 2022

androidx.compose.ui:ui-*:1.2.0-alpha07 ist veröffentlicht. Version 1.2.0-alpha07 enthält diese Commits.

API-Änderungen

  • Die neue Funktion Snapshot.withoutReadObservation { ... } wurde hinzugefügt. Damit können Nutzer das übergebene Lambda ausführen, ohne die Änderungen der Statuswerte zu abonnieren, die während dieses Blocks gelesen werden. Das kann in Anwendungsfällen nützlich sein, in denen Sie von den auf Snapshots basierenden threadsicheren Schreib-/Lesevorgängen profitieren möchten, den Wert aber lesen möchten, ohne unnötige Neukompositionen oder ‑messungen zu verursachen. (I9f365, b/214054486)
  • Mit der Erweiterungseigenschaft consumeWindowInsets von ComposeView können Entwickler die Nutzung von Android WindowInsets deaktivieren. So kann auf jede separate ComposeViews in der Hierarchie WindowInsets angewendet werden, ohne dass sich die einzelnen gegenseitig beeinträchtigen. (I0ef08, b/220943142)
  • KeyboardType.Decimal wurde als Alternative zu Keyboard.Number hinzugefügt, um das Dezimaltrennzeichen speziell in der IME einzuschließen. (Iec4c8, b/209835363)
  • PointerEventType.Scroll und PointerEvent.scrollDelta sind jetzt stabile APIs (I574c5, b/225669674)
  • Aktivieren Sie die Interoperabilität von verschachteltem Scrollen zwischen View und Compose für zusammenarbeitende View-Klassen. Das bedeutet, dass Compose jetzt Scroll-Deltas an ein (kooperierendes) übergeordnetes View-Element senden kann. (I5d1ac, b/174348612)
  • FontFamily.Resolver wurde aktualisiert, um die barrierefreie Einstellung für Fettdruck auf Systemebene (I6c1e7) zu integrieren.
  • Font(AssetManager, String, ...) wurde verworfen und durch Font(String, AssetManager, ...) ersetzt. Dies ist eine experimentelle API. (I1c7a4)
  • Fügen Sie den neuen Schriftartdeskriptor Font(DeviceFontFamilyName) hinzu, um optional in Schriftart-Fallback-Ketten nach auf dem System installierten Schriftarten zu suchen. (I30468, b/219754572)
  • Es wurde eine temporäre Kompatibilitätskonfiguration für includeFontPadding in TextStyle/ParagraphStyle hinzugefügt. includeFontPadding kann über TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)) geändert werden. Dies ist eine vorübergehende Konfigurationsoption, um die Migration zu ermöglichen. Sie wird entfernt. (If47be, b/171394808)
  • GoogleFont.Provider.isAvailableOnDevice-Erweiterung für Debugging-Hilfe hinzugefügt. (I64e31)
  • GoogleFont.Provider-Konstruktor für die Verwendung mit @ArrayRes hinzufügen (Ic5ee1, b/225984280)
  • Compose GoogleFont heißt jetzt Font(GoogleFont). Die API bleibt ansonsten stabil. (I125f2)

Fehlerkorrekturen

  • Es wurde ein Lint-Check für „material/Scaffold“ hinzugefügt, um sicherzustellen, dass das innere Padding verwendet wird (Ifb111).

Version 1.2.0-alpha06

23. März 2022

androidx.compose.ui:ui-*:1.2.0-alpha06 ist veröffentlicht. Version 1.2.0-alpha06 enthält diese Commits.

API-Änderungen

  • Die Semantikaktion RequestFocus wurde hinzugefügt, um den Fokus auf das fokussierbare Ziel zu richten. (I17b71)
  • Die Analyse von Vektordrawables wurde aktualisiert, um das automatische Spiegeln zu unterstützen. Dadurch wird der Inhalt eines VectorPainter gespiegelt, wenn die aktuelle Layoutrichtung RTL ist. (I79cd9, b/185760237)
  • Schatten-/Umgebungsfarben wurden als nachfolgende Parameter von Modifier.graphicsLayer für die API-Kompatibilität aktualisiert (I3f864, b/160665122)

  • Standardimplementierungen für Schatten-/Umgebungsfarbe in GraphicsLayerScope hinzugefügt, um API-Änderungen ohne Unterbrechung zu ermöglichen

  • Ereigniszeit für RSB-Ereignisse hinzugefügt (Ief8ae)

  • FocusOrder wurde in FocusProperties zusammengeführt und focusProperties() bietet jetzt alle Funktionen von focusOrder(). FocusOrder und focusOrder() wurden eingestellt. focusOrder(), das ein focusRequester akzeptiert, sollte durch einen focusRequester()-Modifikator in Kombination mit focusProperties() ersetzt werden. So können die Modifizierer besser voneinander getrennt werden. (I601b7)

  • Wenn Sie sowohl RecyclerView als auch Compose aktualisieren, wird die Scrollleistung für RecyclerViews mit Compose-Ansichten als untergeordnete Elemente deutlich verbessert.

  • ViewCompositionStrategy.Default als Möglichkeit zum Abrufen der integrierten Standardstrategie hinzufügen

  • Fügen Sie ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer hinzu. Das ist die neue Standardstrategie, die Pooling-Container wie RecyclerView richtig verarbeitet. (If7282)

  • Es wurde Unterstützung für das Annotieren von Annotationsklassen mit @Preview als erster Schritt zum Hinzufügen der Multipreview-Funktion hinzugefügt. Solche Annotationen könnten verwendet werden, um zusammensetzbare Methoden oder andere Annotationsklassen zu annotieren, die dann indirekt mit der angegebenen @Preview annotiert werden könnten. (I12eff)

  • Referenzgeräte, die der Geräteliste für @Preview hinzugefügt wurden (I071c9)

Fehlerkorrekturen

  • Die APIs für Vektorgrafiken wurden aktualisiert, sodass anstelle von @UiComposable die richtige zusammensetzbare Annotation @VectorComposable verwendet wird (I942bc).
  • „crossinline“ aus AnnotatedString.Builder.withStyle entfernen (If84d5)

Externer Beitrag

  • compose-ui: Die Properties ambientShadowColor und spotShadowColor wurden zu GraphicsLayerScope hinzugefügt (I1ba1a, b/160665122)
  • Pluralressourcen werden jetzt über die pluralStringResource-Funktionen unterstützt. (Ib2f23, b/191375123)

Version 1.2.0-alpha05

9. März 2022

androidx.compose.ui:ui-*:1.2.0-alpha05 ist veröffentlicht. Version 1.2.0-alpha05 enthält diese Commits.

API-Änderungen

  • TextToolbar verwendet jetzt Lambda-Argumente anstelle von ActionCallback. (Ib2eb9, b/197950089)
  • Aktualisierte Nullable-Annotationen in Core und AppCompat, die mit Tiramisu DP2 übereinstimmen (I0cbb7)
  • Die gemessene Schnittstelle macht jetzt die Eigenschaft „parentData“ verfügbar (I3313f)
  • Modifier.onPlaced und die OnPlacedModifier-Schnittstelle sind jetzt stabil. (Ib5482)
  • Super! Compose-Animationen unterstützen jetzt die Einstellung „Animator duration scale“ (Skalierung der Animator-Dauer) aus den Entwickleroptionen. (I5a4fc, b/161675988)
  • Gebotsanpassung für Standort im Tagesverlauf BeyondBoundsLayout hinzugefügt (If8b51, b/184670295)
  • Text: includeFontPadding ist jetzt standardmäßig deaktiviert. Die Beschneidungsprobleme, die durch includeFontPadding=false verursacht werden, wurden behoben. Bei hohen Skripts sollte es nicht mehr zu Beschneidungen kommen. (I31c84, b/171394808)

Fehlerkorrekturen

  • ComposeContentTestRule.setContent löst jetzt einen IllegalStateException aus, wenn Sie versuchen, Inhalte festzulegen, obwohl bereits Inhalte vorhanden sind. (I888a5, b/199631334)
  • Ein Absturzproblem wurde behoben, das durch Zwischenablageinhalte beim Lesen aus der Zwischenablage unter Android verursacht wurde. (I06020, b/197769306)
  • Scrollbeispiele für responsive Suchanzeigen verbessern (I6a596)

Externer Beitrag

  • Aktualisiert auf Kotlinx-Koroutinen 1.6.0 (I3366d)

Version 1.2.0-alpha04

23. Februar 2022

androidx.compose.ui:ui-*:1.2.0-alpha04 ist veröffentlicht. Version 1.2.0-alpha04 enthält diese Commits.

API-Änderungen

  • Die Funktionen ComposableTarget, ComposableTargetMarker und ComposableOpenTarget wurden hinzugefügt, mit denen zur Kompilierzeit gemeldet werden kann, wenn eine zusammensetzbare Funktion für einen Applier aufgerufen wird, für den sie nicht vorgesehen ist.

    In den meisten Fällen können die Anmerkungen vom Compose-Compiler-Plug-in abgeleitet werden. Die direkte Verwendung dieser Anmerkungen sollte daher selten sein. Die Fälle, die nicht abgeleitet werden können, umfassen das Erstellen und Verwenden eines benutzerdefinierten Appliers, abstrakte zusammensetzbare Funktionen (z. B. Schnittstellenmethoden), Felder oder globale Variablen, die zusammensetzbare Lambdas sind (lokale Variablen und Parameter werden abgeleitet), oder wenn ComposeNode oder eine zugehörige zusammensetzbare Funktion verwendet wird.

    Für benutzerdefinierte Applier müssen die zusammensetzbaren Funktionen, die ComposeNode oder ReusableComposeNode aufrufen, eine ComposableTarget-Annotation für die Funktion und alle zusammensetzbaren Lambda-Parametertypen hinzufügen. Es wird jedoch empfohlen, eine Anmerkung zu erstellen, die mit ComposableTargetMarker annotiert ist, und dann die markierte Anmerkung anstelle von ComposableTarget direkt zu verwenden. Eine mit ComposableTargetMarker gekennzeichnete Composable-Annotation entspricht einem ComposbleTarget mit dem voll qualifizierten Namen der Attributklasse als „applier“-Parameter. Ein Beispiel für die Verwendung von ComposableTargetMarker finden Sie unter anroidx.compose.ui.UiComposable. (I38f11)

  • Font(resId, ...) akzeptiert jetzt „loadingStrategy“ in der stabilen API. (Ief3d2)

  • FontLoadingStrategy ist jetzt eine stabile API. (I1ee35, b/174162090)

  • Asynchrones Laden von Schriftarten in Text unterstützen (I77057, b/214587005)

  • Bridge-API zum Konvertieren benutzerdefinierter Font.ResourceLoader in FontFamily.Resolver hinzufügen. (Ia0060)

Fehlerkorrekturen

  • Die bereitgestellten FontFamily.Resolver werden an untergeordnete Composables wie „Popup“ übergeben.
  • Die bereitgestellten Font.ResourceLoader werden an untergeordnete Composables wie „Popup“ übergeben. (I48fa5)

Version 1.2.0-alpha03

9. Februar 2022

androidx.compose.ui:ui-*:1.2.0-alpha03 ist veröffentlicht. Version 1.2.0-alpha03 enthält diese Commits.

API-Änderungen

  • notifyFocusedRect-Methoden in TextInputSession und TextInputService sind jetzt veraltet und werden nicht mehr aufgerufen. Verwenden Sie stattdessen BringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874)
  • Die Methode destroyDisplayListData wurde in der Stub-Klasse RenderNode eingeführt (I1e659, b/216660268).
  • Es wurde eine neue API hinzugefügt, mit der sich die untergeordneten Elemente von SubcomposeLayout vorab messen lassen. (I857ea)
  • movableContentOf wurde hinzugefügt. Damit wird ein zusammensetzbares Lambda in ein Lambda umgewandelt, das seinen Status und die entsprechenden Knoten an einen beliebigen neuen Speicherort verschiebt, an dem es aufgerufen wird. Wenn der vorherige Aufruf die Komposition verlässt, wird der Status vorübergehend beibehalten. Wenn ein neuer Aufruf der Lambda-Funktion in die Komposition eintritt, werden der Status und die zugehörigen Knoten an den Ort des neuen Aufrufs verschoben. Wenn kein neuer Anruf hinzugefügt wird, wird der Status dauerhaft entfernt und die Remember-Beobachter werden benachrichtigt.

    Wenn ein movableContentOf-Lambda in derselben Komposition mehrmals aufgerufen wird, werden für jeden Aufruf neue Status und Knoten erstellt. Wenn Aufrufe die Komposition verlassen und neue Aufrufe eingehen, wird der Status in der Reihenfolge, in der sie aufgerufen werden, von den ersten verlassenen Aufrufen zu den eingehenden Aufrufen verschoben. Alle Status, die nicht durch neue Anrufe beansprucht werden, werden dauerhaft entfernt. (Ib4850)

  • FontFamilyResolver ist jetzt über LocalFontFamilyResolver.current verfügbar

  • createFontFamilyResolver(context) und createFontFamilyResolver(context, coroutineScope) wurden hinzugefügt, um neue FontFamily-Resolver außerhalb der Compose-Verwendung zu erstellen.

  • Die Funktionen „Paragraph“ und „MultiParagraph“ akzeptieren jetzt FontFamily.Resolver.

  • TextLayoutResult.layoutInput.fontFamilyResolver enthält jetzt den Resolver, der für dieses Layout verwendet wird. TextLayoutResult.layoutInput.resourceLoader wird nicht mehr verwendet und ist daher veraltet. (Id5a45, b/174162090)

  • Unterstützung für asynchrones und optionales Laden von Schriftarten mit Fallback-Verhalten. Dieser Pfad wird von Text und TextField verwendet und über FontFamilyResolver verfügbar gemacht.

  • Unterstützung für das Vorabladen von Schriftarten über FontFamilyResolver.preload

  • Mit FontFamilyResolver.setAsyncLoadContext kann der globale Coroutine-Kontext festgelegt werden, der zum Laden asynchroner Schriftarten verwendet wird. (I87fe8, b/174162090)

  • AndroidFont wurde hinzugefügt, eine neue Low-Level-API zum Bereitstellen neuer Arten von Schriftartressourcendeskriptoren unter Android. Beispielsweise können Schriftarten aus einem app-spezifischen Backend geladen, vorinstallierte Schriftarten auf dem Gerät gesucht oder eine Schriftart aus einer Ressource geladen werden, die nicht von den aktuellen Schriftart-Factories bereitgestellt wird.

  • Die Font.ResourceLoaded-API wurde erweitert, um optionales und asynchrones Laden von Schriftarten zu unterstützen. Es wird nicht empfohlen, dass Anwendungsentwickler diese API direkt verwenden. Informationen zum Hinzufügen neuer Schriftarttypen finden Sie unter AndroidFont.

  • Mit der Erweiterungsfunktion Font.AndroidResourceLoader kann ein Font.ResourceLoader außerhalb der Komposition erstellt werden.

  • Der Parameter loadingStrategy wurde ressourcenbasierten Schriftarten hinzugefügt, um das asynchrone Laden zu ermöglichen, wenn Ressourcenschriftarten auf herunterladbare Schriftarten in XML verweisen. (Ie5aea, b/174162090)

  • Der Typeface(FontFamily)-Konstruktor wird nicht mehr unterstützt. Bisher wurde damit das Vorabladen von Schriftarten ermöglicht, was bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern kann. Bei herunterladbaren Schriftarten kann dieser Aufruf 10 Sekunden lang blockiert werden. Verwenden Sie stattdessen FontFamilyResolver.preload.

  • fontResource(FontFamily): Typeface wurde verworfen. Bisher wurde damit das Vorabladen von Schriftarten ermöglicht, was bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern kann. Verwenden Sie stattdessen FontFamilyResolver.preload (If8e7c, b/174162090).

  • Der SubcomposeLayoutState-Konstruktor, der maxSlotsToRetainForReuse akzeptiert, wird nicht mehr unterstützt. Stattdessen gibt es einen neuen Konstruktor, der SubcomposeSlotReusePolicy akzeptiert. Das ist eine neue Schnittstelle, mit der sich genauer festlegen lässt, welche Slots für die zukünftige Wiederverwendung beibehalten werden sollen. (I52c4d)

  • Die HSV- und HSL-Funktion in Color wird als nicht experimentelle API bereitgestellt. Der Oklab-Farbraum ist jetzt eine öffentliche API. (I08fb6, b/180731008)

  • Die Methode AndroidComposeTestRule.AndroidComposeStatement wurde eingestellt. Sie war ohnehin nicht für die öffentliche API vorgesehen und hatte keine Auswirkungen. (Ibc46b)

  • Interne Umbenennung der generierten KT-Klasse (Ia0b9e, b/174162090)

  • FontLoadingStrategy.values entfernt (I42a9d, b/174162090)

  • Der globale Schriftarten-Loader heißt jetzt FontFamilyResolver. (I4f773, b/174162090)

  • Neues System zum Laden von Schriftarten für Desktop verwenden. (I9ce5c, b/174162090)

  • FontFamily.Resolver.resolve gibt State<Any> zurück (I4406c, b/174162090)

Fehlerkorrekturen

  • Textfelder werden jetzt über der Tastatur angezeigt, wenn sie fokussiert sind und die Tastatur eingeblendet wird, wenn der Soft-Input-Modus ADJUST_PAN ist. (I8eaeb, b/190539358, b/192043120)
  • Desktop verwendet die lokale Komposition für FontFamily.Resolver
  • Desktop-Version von FontLoader wird nicht mehr unterstützt
  • Neue createFontFamilyResolver-Fabrik auf dem Computer (I6bbbb, b/174162090)
  • Der Eingabetyp der Bildschirmtastatur flackert nicht mehr, wenn der Fokus zwischen Textfeldern gewechselt wird. (I1bf50, b/187746439)

Version 1.2.0-alpha02

26. Januar 2022

androidx.compose.ui:ui-*:1.2.0-alpha02 ist veröffentlicht. Version 1.2.0-alpha02 enthält diese Commits.

API-Änderungen

  • Modifier.onRotaryScrollEvent() und Modifier.onPreRotaryScrollEvent() für Wear-Geräte mit drehbarem Seitenschalter hinzugefügt (I18bf5, b/210748686)
  • Experimentelle Erweiterung View.createLifecycleAwareRecomposer (I0cde6) hinzugefügt

Externer Beitrag

  • PointerEvent.scrollDelta.y ist jetzt auf Android invertiert. Wenn das Mausrad nach rechts geneigt wird, wird jetzt „1“ anstelle von „-1“ zurückgegeben. (Ia9811)

Version 1.2.0-alpha01

12. Januar 2022

androidx.compose.ui:ui-*:1.2.0-alpha01 ist veröffentlicht. Version 1.2.0-alpha01 enthält diese Commits.

API-Änderungen

  • FontFamily.canLoadSynchronously eingestellt. Dieses Attribut hat keine semantische Bedeutung. (Ica5ef)
  • Dem CompositionData-Feld wurde ein Identitätsfeld hinzugefügt, um im Layout Inspector invariante IDs zu generieren. (Ic116e)
  • Wear OS-Geräte-IDs zur Liste der Vorschaugeräte hinzugefügt (I93232)

Abhängigkeitsupdates

  • Die Bibliothek hängt jetzt von Kotlin 1.6.10 ab.

Version 1.1

Version 1.1.1

23. Februar 2022

androidx.compose.ui:ui-*:1.1.1 ist veröffentlicht. Version 1.1.1 enthält diese Commits.

Fehlerkorrekturen

  • Fehler bei NullPointerException unter androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList behoben (aosp/1947059, b/206677462)
  • Ein Absturzproblem wurde behoben, das durch Zwischenablageinhalte beim Lesen aus der Zwischenablage unter Android verursacht wurde. (I06020, b/197769306)
  • RTL-Problem in LazyVerticalGrid behoben (aosp/1931080, b/207510535)

Version 1.1.0

9. Februar 2022

androidx.compose.ui:ui-*:1.1.0 ist veröffentlicht. Version 1.1.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.0.0

  • Stabile Unterstützung für den Overscroll-Effekt in Android 12
  • Verbesserungen bei der Größe von Berührungszielbereichen
    • Im Vergleich zu Compose 1.0 wird der Layoutbereich von Material-Komponenten erweitert, um die Richtlinien für Bedienungshilfen von Material Design für die Größe von Berührungszielen zu erfüllen. Der Berührungszielbereich einer Schaltfläche wird beispielsweise auf eine Mindestgröße von 48 × 48 dp erweitert, auch wenn Sie die Größe der Schaltfläche kleiner festlegen. So wird Compose Material an das Verhalten von Material Design-Komponenten angepasst und bietet ein einheitliches Verhalten, wenn Sie Views und Compose mischen. Durch diese Änderung wird auch sichergestellt, dass beim Erstellen der Benutzeroberfläche mit Compose Material-Komponenten die Mindestanforderungen für die Barrierefreiheit von Berührungszielbereichen erfüllt werden.
  • Stabile Unterstützung für Navigation Rail
  • Eine Reihe von zuvor experimentellen APIs wird als stabil eingestuft.
  • Unterstützung für neuere Versionen von Kotlin

Version 1.1.0-rc03

26. Januar 2022

androidx.compose.ui:ui-*:1.1.0-rc03 ist veröffentlicht. Version 1.1.0-rc03 enthält diese Commits.

Fehlerkorrekturen

  • Aktualisiert, um Compose Material 1.1.0-rc03 zu unterstützen

Version 1.1.0-rc01

15. Dezember 2021

androidx.compose.ui:ui-*:1.1.0-rc01 ist veröffentlicht. Version 1.1.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler wurde behoben, durch den die Scrollaktionen für die Barrierefreiheit (I7cbfb) fehlten.
  • SemanticsNodeInteraction.captureToImage() funktioniert jetzt auch, wenn HardwareRenderer.isDrawingEnabled() auf false gesetzt ist. Dazu wird die Funktion für die Dauer des Anrufs aktiviert (Idf3d0).

Version 1.1.0-beta04

1. Dezember 2021

androidx.compose.ui:ui-*:1.1.0-beta04 ist veröffentlicht. Version 1.1.0-beta04 enthält diese Commits.

Neue Funktionen

  • Aktualisiert, um mit Kotlin 1.6.0 kompatibel zu sein

API-Änderungen

  • Nullwerte in androidx.core.view wurden bereinigt. (I7078a, b/204917439)
  • Es wurden experimentelle APIs hinzugefügt, mit denen Nutzer PointerInputchange als Ganzes nutzen oder prüfen können, ob es genutzt wurde. (I2e59d)
  • Unterstützung für Mausrad-Ereignisse in der UI-Ebene hinzugefügt. (Ia14eb, b/198214718)
  • Es wurden experimentelle Modifier.composed-Überladungen hinzugefügt, die Schlüssel akzeptieren, um Gleichheit zu vergleichen und für das Überspringen von Optimierungen infrage zu kommen. (Ice799, b/205851704)
  • ComposeNotIdleException wird jetzt von Exception abgeleitet und nicht mehr direkt von Throwable. Das bedeutet, dass Catch-Klauseln, die Exception abgefangen haben, jetzt möglicherweise ComposeNotIdleExceptions abfangen, was zuvor nicht der Fall war. (I9c217)

Fehlerkorrekturen

  • Problem behoben, bei dem sich Textziehpunkte nicht bewegten, wenn sich die IME-Sichtbarkeit änderte. (I25f2e)

Version 1.1.0-beta03

17. November 2021

androidx.compose.ui:ui-*:1.1.0-beta03 ist veröffentlicht. Version 1.1.0-beta03 enthält diese Commits.

API-Änderungen

  • Der neue Modifier „Modifier.onPlaced“ wurde hinzugefügt, damit Änderungen bei der Platzierung beobachtet werden können. Daher können zusätzliche Änderungen am Offset des untergeordneten Modifikators basierend auf der beobachteten Placement-Änderung vorgenommen werden. (I558fd)
  • InjectionScope.flush() und InjectionScope.dispose() wurden entfernt. Das Leeren aller Ereignisse und das Verwerfen des Bereichs erfolgt jetzt wie zuvor am Ende der aufgerufenen perform*Input()-Methode. (I2bed8)
  • MultiModalInjectionScope.Touch und MultiModalInjectionScope.Mouse wurden entfernt. Um Touch- und Mausereignisse für multimodale Gesten einzufügen, können Sie jetzt MultiModalInjectionScope.touch() und MultiModalInjectionScope.mouse() verwenden. Beide akzeptieren ein Lambda, das den Empfängerbereich dieser Modalität hat. (Idde18)

Fehlerkorrekturen

  • Der Standardwert für durationMillis in TouchInjectionScope.swipeWithVelocity wird jetzt so berechnet, dass das Wischen möglich ist. (I19deb)

Version 1.1.0-beta02

3. November 2021

androidx.compose.ui:ui-*:1.1.0-beta02 ist veröffentlicht. Version 1.1.0-beta02 enthält diese Commits.

API-Änderungen

  • Die experimentelle BringIntoView API wurde hinzugefügt. Mit ihr können Sie eine Anfrage an Eltern senden, damit sie scrollen, um ein Element in den sichtbaren Bereich zu bringen (Ib918d, b/195353459).
  • Neue Animations-APIs zur Unterstützung von Tools. Sie ermöglichen es Tools, die Animationen und ihre Konfigurationen in einem Übergang zu untersuchen. (I4116e)

Externer Beitrag

  • „Modifier.pointerHoverIcon“ (I95f01) wurde hinzugefügt.

Version 1.1.0-beta01

27. Oktober 2021

androidx.compose.ui:ui-*:1.1.0-beta01 ist veröffentlicht. Version 1.1.0-beta01 enthält diese Commits.

API-Änderungen

  • Die experimentelle BringIntoView API wurde hinzugefügt. Mit ihr können Sie eine Anfrage an Eltern senden, damit sie scrollen, um ein Element in den Blick zu rücken (Ib918d, b/195353459).
  • Neue Animations-APIs zur Unterstützung von Tools. Sie ermöglichen es Tools, die Animationen und ihre Konfigurationen in einem Übergang zu untersuchen. (I4116e)

Version 1.1.0-alpha06

13. Oktober 2021

androidx.compose.ui:ui-*:1.1.0-alpha06 ist veröffentlicht. Version 1.1.0-alpha06 enthält diese Commits.

API-Änderungen

  • ExperimentalComposeUiApi aus ViewRootForInspector und LayoutInfo.ownerViewId (I5c2e3) entfernen
  • Für Layout wurde eine überladene Funktion ohne untergeordnete Elemente hinzugefügt, die effizienter ist (Ib0d9a).
  • InternalCompilerApi aus Composer-Methoden entfernt, die modulübergreifend aufgerufen werden müssen (I1aa0b)
  • SemanticsNodeInteraction.performSemanticsAction gibt jetzt das SemanticsNodeInteraction zurück, für das die Funktion aufgerufen wurde. (I9e5db)
  • „LocalInputModeManager“ als CompositionLocal hinzugefügt, um den Touch- und den Nicht-Touch-Modus zu erkennen. (I6a83c, b/175899786)
  • viewConfiguration: ViewConfiguration wurde zu LayoutInfo hinzugefügt, damit Nutzer den richtigen Wert für Dinge wie das Zeitlimit für langes Drücken erhalten. (I76ca6)
    • viewConfiguration: ViewConfiguration wurde zu InjectionScope hinzugefügt, damit Tests die Eingabeinjektion basierend auf Faktoren wie dem Timeout für langes Drücken oder dem Touch-Slop anpassen können.
    • Die Standarddauer für langes Drücken und Doppeltippen für Touch- und Mauseingabe basiert jetzt auf den Werten in InjectionScope.viewConfiguration.
  • Implementierung von ExposedDropdownMenu basierend auf ExposedDropdownMenuBox mit TextField und DropdownMenu (If60b2)
  • dismissOnOutsideClick wurde zu PopupProperties hinzugefügt und ersetzt dismissOnClickOutside, das nicht mehr unterstützt wird. Die neue Eigenschaft empfängt die Klickposition und die Ankergrenzen. So lässt sich genauer steuern, ob „onDismissRequest“ aufgerufen werden soll oder nicht. Das kann beispielsweise nützlich sein, um zu verhindern, dass das Anker-Dismissal bei Berührungen des Ankers ausgelöst wird.
    • „updateAndroidWindowManagerFlags“ wurde zu „PopupProperties“ hinzugefügt, um eine detaillierte Steuerung der Flags zu ermöglichen, die vom Pop-up an den Android-WindowManager übergeben werden. Der Parameter des Lambda-Ausdrucks sind die Flags, die aus den PopupProperties-Werten berechnet werden, die zu WindowManager-Flags führen, z.B. „focusable“. Das Ergebnis des Lambda ist das endgültige Flag, das an den Android WindowManager übergeben wird. Standardmäßig werden die aus Parametern berechneten Flags durch updateAndroidWindowManagerFlags nicht geändert. Diese API sollte nur mit Vorsicht verwendet werden, wenn für das Pop-up sehr spezielle Verhaltensanforderungen gelten. (I6e9f9)
  • Recomposer.state wurde eingestellt und durch Recomposer.currentState ersetzt, um den Typ in einen StateFlow zu ändern (Ic2ab3, b/197773820).
  • flush() und dispose() wurden zu InjectionScope hinzugefügt. Verwenden Sie sie, wenn Sie alle in die Warteschlange gestellten Ereignisse sofort leeren und den Bereich verwerfen möchten. (Ifb73a)
  • performScrollToNode(matcher: SemanticsMatcher) wurde hinzugefügt, um einen scrollbaren Container zu den Inhalten zu scrollen, die dem angegebenen Matcher entsprechen. (Ic1cb8)
  • InjectionScope implementiert jetzt Density, sodass Sie in performTouchInput und ähnlichen Funktionen ganz einfach zwischen Pixeln und geräteunabhängigen Pixeln konvertieren können. (I8fe1f)

Fehlerkorrekturen

  • „AndroidView“ übergibt jetzt „LocalLifecycleOwner“ und „LocalSavedStateRegistryOwner“ über „ViewTreeLifecycleOwner“ und „ViewTreeSavedStateRegistryOwner“ an die zugehörige Ansicht. (I38f96, b/179708470)
  • Problem behoben, bei dem WearOS SwipeToDismissBox manchmal keine Wischbewegungen verarbeitet hat. (I9387e)
  • Die Standardzeit zwischen eingefügten Eingabeereignissen wurde von 10 ms auf 16 ms geändert. Dadurch kann sich das Ergebnis von Tests ändern, bei denen Eingabeaktionen ausgeführt werden, z. B. ein bestimmter Wischvorgang. (I829fd)

Version 1.1.0-alpha05

29. September 2021

androidx.compose.ui:ui-*:1.1.0-alpha05 ist veröffentlicht. Version 1.1.0-alpha05 enthält diese Commits.

API-Änderungen

  • Unterstützung für die Kommunikation zwischen Modifikatoren hinzugefügt (Id5467, b/198826874)
  • PointerEventChange wurden experimentelle Verlaufszeiger hinzugefügt. (Ic1fd8, b/197553056, b/199921305)
  • density: Density und layoutDirection: LayoutDirection wurden zu LayoutInfo hinzugefügt. So können Nutzer von LayoutInfo die in LayoutInfo bereitgestellten Dimensionen und Positionen richtig interpretieren. (I002f1)
  • Experimentelle Unterstützung für das Einfügen von Mausereignissen hinzugefügt. Verwenden Sie performMouseInput, um mit dem Senden von Mausereignissen zu beginnen, oder senden Sie Mausereignisse über die Mouse-Eigenschaft von MultiModalInjectionScope während einer multimodalen Eingabe mit performMultiModalInput. Die Dokumentation der verfügbaren API finden Sie unter MouseInjectionScope. (Iaa4a8, b/190493367)

Fehlerkorrekturen

  • Die Barrierefreiheitsunterstützung für scrollbare Elemente (sowohl Lazy- als auch Nicht-Lazy-Elemente) in Bezug auf das Scrollen wurde korrigiert (I6cdb0).
  • Verbesserte TouchInjectionScope.swipeWithVelocity. Es werden jetzt mehr Eingabevariablen akzeptiert und Änderungen an der Eingabe vorgeschlagen, wenn kein Swipe erstellt werden kann (I40fbe, b/182477143).

Version 1.1.0-alpha04

15. September 2021

androidx.compose.ui:ui-*:1.1.0-alpha04 ist veröffentlicht. Version 1.1.0-alpha04 enthält diese Commits.

API-Änderungen

  • PointerEvent hat jetzt ein PointerEventType, um Hover-Ereignisse zu unterstützen. (I091fa)
  • Kindern erlauben, Zeigereingaben außerhalb der Zeigereingabegrenzen des übergeordneten Elements zu akzeptieren. Eltern können diese Aufrufe mit der Eigenschaft PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655) abfangen.
  • Die veralteten performGesture und GestureScope wurden durch performTouchInput und TouchInjectionScope ersetzt. (Ia5f3f, b/190493367)
  • touchBoundsInRoot wurde zu SemanticsNode hinzugefügt. Diese enthält die Mindestgröße des Berührungszielbereichs, damit Entwickler sicherstellen können, dass Berührungszielbereiche die Mindestanforderungen an die Barrierefreiheit erfüllen. (I2e14b, b/197751214)
  • Implementierung von „inspectable“ überarbeiten (I927bc, b/191017532)
  • Der Parametername von „inspectable“ wurde geändert, damit er mit „composed“ übereinstimmt (I3a482, b/191017532).
  • performTouchInput und TouchInjectionScope wurden als Ersatz für performTouchInput und TouchInjectionScope eingeführt, um den Weg für andere Modalitäten (z. B. Maus) zu ebnen.

    TouchInjectionScope hat dieselben Methoden wie GestureScope, mit Ausnahme von movePointerTo und movePointerBy, die in updatePointerTo und updatePointerBy umbenannt wurden. Alle anderen Methoden sind gleich.

    Das Verhalten von TouchInjectionScope ist fast identisch mit dem von GestureScope, mit zwei kleinen Unterschieden:

    1. Wenn ein „down“-Ereignis gesendet wird, während die Zeiger bewegt wurden, ohne dass ein „move“-Ereignis gesendet wurde (d. h. updatePointerTo() wurde verwendet, aber nicht move(), und dann wird down() aufgerufen), wurde in der vorherigen Implementierung die Ereigniszeit vorangestellt und ein „move“-Ereignis gesendet, bevor das „down“-Ereignis gesendet wurde. Bei der neuen Implementierung wird das Ereignis „move“ weiterhin gesendet, die Ereigniszeit wird in diesem speziellen Szenario jedoch nicht erhöht.
    2. Wenn ein „up“-Ereignis gesendet wird, während die Zeiger bewegt wurden, ohne dass ein „move“-Ereignis gesendet wurde (ähnlich wie oben), wurde in der vorherigen Implementierung die Ereigniszeit vorverlegt und ein „move“-Ereignis gesendet, bevor das „up“-Ereignis gesendet wurde. Bei der neuen Implementierung ist das nicht der Fall: Die neuen Positionen der Zeiger werden erst durch das „up“-Ereignis berücksichtigt.

    Mit TouchInjectionScope wird die neue Methode currentPosition(pointerId: Int) eingeführt, mit der die aktuelle Position des angegebenen Zeigers abgerufen werden kann. (If1191, b/190493367)

Fehlerkorrekturen

  • Ermöglicht, dass sich die Grenzen des Berührungszielbereichs über den Clipbereich hinaus erstrecken, um den Mindestwert für den Berührungszielbereich zu erreichen. (I43e10, b/171509422)
  • Auf Geräten mit Android 12 wurde Unterstützung für das Dehnen beim Overscrollen hinzugefügt. (Iccf3c, b/171682480)

Version 1.1.0-alpha03

1. September 2021

androidx.compose.ui:ui-*:1.1.0-alpha03 ist veröffentlicht. Version 1.1.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Compose 1.1.0-alpha03 wurde aktualisiert und hängt jetzt von Kotlin 1.5.30 ab. (I74545)

API-Änderungen

  • Modifier.inspectable wurde hinzugefügt, um andere Modifikatoren einzuschließen. (I1909b, b/191017532)
  • Die BlurredEdgeTreatment API wurde hinzugefügt, um Unschärfe-Anwendungsfälle in häufiger verwendete Kombinationen von Clip-Flags und TileModes zu vereinfachen. In den meisten Anwendungsfällen wird entweder zugelassen, dass gerenderte Inhalte außerhalb der ursprünglichen Inhaltsgrenzen verschwommen dargestellt werden, und Bereiche außerhalb dieser Grenzen werden mit transparentem Schwarz verschwommen dargestellt. Alternativ werden Inhalte an den Inhaltsgrenzen abgeschnitten und die nächste Kante wird für Unschärfekerne verwendet, die über die Inhaltsgrenzen hinausgehen. (I6b4b7, b/166927547)
  • Unterstützung für RenderEffect in Compose Desktop wurde hinzugefügt. Der OffsetEffect und der Blur-Modifier wurden eingeführt, um auf einfache Weise visuelle Unschärfe-Effekte in einem Teil der Kompositionshierarchie zu erzeugen. (I0f6aa, b/166927547)
  • Die RenderEffect API wurde eingeführt. Sie kann optional für ein Modifier.graphicsLayer konfiguriert werden, um den Inhalt der Ebene selbst zu ändern. Damit können Inhalte eines Composables und untergeordneter Composables in einer Kompositionshierarchie unkenntlich gemacht werden. (I47c4d, b/166927547)
  • AwaitPointerEventScope hat jetzt withTimeout() und withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
  • Die Mindestgröße des Berührungszielbereichs wurde zu ViewConfiguration hinzugefügt, um sie in der Semantik und bei der Zeigereingabe zu verwenden und so die Barrierefreiheit zu gewährleisten. (Ie861c)
  • Unterstützung für TileMode.Decal hinzufügen, was beim Definieren des Randverhaltens für auf Unschärfe basierende RenderEffects nützlich ist. (I7e8ed, b/166927547)
  • performScrollToIndex, performScrollToKey, hasScrollToIndexAction und hasScrollToKeyAction sind jetzt stabile APIs (I142ae, b/178483889).
  • Es wurde eine Testmethode zum Abrufen der beschnittenen Grenzen hinzugefügt. (I6b28e)

Fehlerkorrekturen

  • Die Methode „isBounded“ wurde aus „BlurredEdgeTreatment“ entfernt. Stattdessen wird explizit geprüft, ob der Formparameter null ist. (I85d68)

Version 1.1.0-alpha02

18. August 2021

androidx.compose.ui:ui-*:1.1.0-alpha02 ist veröffentlicht. Version 1.1.0-alpha02 enthält diese Commits.

API-Änderungen

  • PointerEvent unterstützt jetzt das Lesen des Maus- und Tastaturmodifikatorstatus. (I6310c, b/180075467)
  • Bei eingefügten Gesten wird jetzt die Zeit von MainTestClock als „Source of Truth“ für die Zeit verwendet. Die aktuelle Zeit für eingefügte Ereignisse in performGesture wird auf die aktuelle Zeit der MainTestClock initialisiert. (Ifb364, b/192064452)
  • DpRect(DpOffset, DpSize)-Konstruktor hinzugefügt (I2cf16, b/194219828)
  • Klasse „DpSize“ hinzugefügt (I7abb1, b/194219828)

Fehlerkorrekturen

  • Das XML-Parsing für Vektorgrafiken wurde aktualisiert, um ColorStateLists als Eigenschaften für die Farbtonfarbe des Stammverzeichnisses in VectorDrawables zu unterstützen. (I86915, b/195668138)

Version 1.1.0-alpha01

4. August 2021

androidx.compose.ui:ui-*:1.1.0-alpha01 ist veröffentlicht. Version 1.1.0-alpha01 enthält diese Commits.

API-Änderungen

  • RelocationRequester.bringIntoView akzeptiert jetzt ein Rechteck als Parameter, sodass wir einen Teil eines Composables in den Blickpunkt rücken können (Ice2c5, b/194330245).
  • AnimatedImageVector und die zugehörigen APIs befinden sich jetzt im neuen Modul androidx.compose.animation:animation-graphics. (I60873)
  • Experimenteller Modifikator für die Verarbeitung von Umzugsanträgen hinzugefügt. (I65a97, b/178211874)
  • Die BrushPainter API wurde eingeführt, um das Zeichnen eines beliebigen Pinsels (Brush) innerhalb eines Painters zu unterstützen, ähnlich wie bei ColorPainter.

    Die Brush API wurde aktualisiert und enthält jetzt einen Parameter für die intrinsische Größe, der in BrushPainter abgefragt wird (Ia2752, b/189466433).

  • Die Methode „DrawScope#drawImage“ wurde aktualisiert. Sie verwendet jetzt Quell- und Zielrechtecke, um einen optionalen Parameter „FilterQuality“ zu nutzen. Das ist nützlich für Pixelkunst, die beim Hochskalieren für pixelbasierte Kunst pixelig dargestellt werden soll. Die zusammensetzbaren Funktionen „BitmapPainter“ und „Image“ wurden aktualisiert, sodass sie auch einen optionalen Parameter „FilterQuality“ verwenden (Ie4fb0, b/180311607).

  • Die Methode GestureScope.advanceEventTime wurde hinzugefügt, um den Zeitpunkt von Ereignissen in einer Geste besser steuern zu können (Ibf3e2).

Fehlerkorrekturen

  • Damit das Verketten von Zeichenmodifizierern besser unterstützt wird, muss in der Modifier.paint-Implementierung drawsContent aufgerufen werden. Bisher wurde erwartet, dass Modifier.paint ein Blattknoten in der Kette von Modifiers ist. Dadurch wird jedoch verhindert, dass er in einem zusammensetzbaren Container (z. B. Box) konfiguriert oder zusätzliche Dekorationen wie Modifier.paint().border() hinzugefügt werden. Wenn Modifier.paint drawContent aufruft, nachdem der Inhalt des angegebenen Painters gezeichnet wurde, ist das Verhalten des Modifikators konsistenter. (Ibb2a7, b/178201337, b/186213275)
  • Dialogfelder folgen jetzt dem Größenverhalten der Plattform. Setzen Sie usePlatformDefaultWidth auf „false“, um dieses Verhalten zu überschreiben. (Iffaed, b/192682388)
  • InfiniteAnimationPolicy wurde nach :compose:ui verschoben (I5eb09, b/160602714)
  • Das Scrollen über semantische Aktionen für Lazy Lists und reguläre Scrollkomponenten ist jetzt animiert (Id9066, b/190742024).

Version 1.0

Version 1.0.5

3. November 2021

androidx.compose.ui:ui-*:1.0.5 ist veröffentlicht. Version 1.0.5 enthält diese Commits.

Fehlerkorrekturen

  • Ein Absturz beim Tracking von „derivedStateOf“-Instanzen wurde behoben. (aosp/1792247)

Version 1.0.4

13. Oktober 2021

androidx.compose.ui:ui-*:1.0.4 ist veröffentlicht. Version 1.0.4 enthält diese Commits.

Abhängigkeitsupdates

  • Aktualisiert, um von Kotlin 1.5.31 abhängig zu sein

Version 1.0.3

29. September 2021

androidx.compose.ui:ui-*:1.0.3 ist veröffentlicht. Version 1.0.3 enthält diese Commits.

Abhängigkeitsupdates

  • Aktualisiert, um von Kotlin 1.5.30 abhängig zu sein

Version 1.0.2

1. September 2021

androidx.compose.ui:ui-*:1.0.2 ist veröffentlicht. Version 1.0.2 enthält diese Commits.

Aktualisiert, um die Compose-Version 1.0.2 zu unterstützen. Compose 1.0.2 ist weiterhin mit Kotlin 1.5.21 kompatibel.

Version 1.0.1

4. August 2021

androidx.compose.ui:ui-*:1.0.1 ist veröffentlicht. Version 1.0.1 enthält diese Commits.

Abhängigkeitsupdates

  • Aktualisiert, um von Kotlin 1.5.21 abhängig zu sein.

Version 1.0.0

28. Juli 2021

androidx.compose.ui:ui-*:1.0.0 ist veröffentlicht. Version 1.0.0 enthält diese Commits.

Wichtige Funktionen von Version 1.0.0

Dies ist die erste stabile Version von Compose. Weitere Informationen finden Sie im offiziellen Compose-Versionsblog.

Bekannte Probleme

  • Wenn Sie Android Studio Bumblebee Canary 4 oder AGP 7.1.0-alpha04/7.1.0-alpha05 verwenden, kann es zu folgendem Absturz kommen:

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    Um das Problem zu beheben, erhöhen Sie vorübergehend die minSdkVersion in der Datei build.gradle auf 24 oder höher. Dieses Problem wird in der nächsten Version von Android Studio Bumblebee und AGP 7.1 behoben. (b/194289155)

Version 1.0.0-rc02

14. Juli 2021

androidx.compose.ui:ui-*:1.0.0-rc02 ist veröffentlicht. Version 1.0.0-rc02 enthält diese Commits.

Fehlerkorrekturen

  • Dialogfelder folgen jetzt dem Größenverhalten der Plattform. Setzen Sie usePlatformDefaultWidth auf „false“, um dieses Verhalten zu überschreiben. (Iffaed, b/192682388)

Version 1.0.0-rc01

1. Juli 2021

androidx.compose.ui:ui-*:1.0.0-rc01 ist veröffentlicht. Version 1.0.0-rc01 enthält diese Commits.

Neue Funktionen

  • Das Modul „ui-tooling“ wird in ui-tooling und ui-tooling-preview aufgeteilt (Iefa28, b/190649014).

API-Änderungen

  • Veraltete experimentelle FocusManager#moveFocusIn und FocusManager#moveFocusOut entfernt (I227d7, b/170154986, b/186567354, b/168510304)
  • Canvas unterstützt jetzt einen „contentDescription“-Parameter für die Barrierefreiheit. (Ib547c)
  • useDefaultMaxWidth in PopupProperties wurde in usePlatformDefaultWidth umbenannt. (I05710)
  • Dialogfelder können jetzt die gesamte Bildschirmbreite nutzen. (I83929, b/190810877)
  • Es wurde experimentelle Unterstützung für HSV- und HSL-Farbdarstellungen hinzugefügt. (Id7cf8, b/180731008)

Änderungen beim Verhalten

  • Compose @Preview bietet jetzt eine LocalActivityResultRegistryOwner, mit der Sie Composables in der Vorschau ansehen können, die APIs wie rememberLauncherForActivityResult() verwenden, die davon abhängen, dass dieser Inhaber vorhanden ist. (Ib13d1, b/185693006)
  • Compose @Preview bietet jetzt eine LocalOnBackPressedDispatcherOwner, mit der Sie Composables, die APIs wie BackHandler verwenden, in der Vorschau ansehen können. Diese APIs sind davon abhängig, dass der Inhaber vorhanden ist. (Ia1c05, b/185693006)

Fehlerkorrekturen

  • InfiniteAnimationPolicy nach androidx.compose.ui:ui verschoben (I5eb09, b/160602714)
  • „AnimatedImageVector“ wurde vorübergehend entfernt, um die Modulstruktur zu ändern. (I41906, b/160602714)

Version 1.0.0-beta09

16. Juni 2021

androidx.compose.ui:ui-*:1.0.0-beta09 ist veröffentlicht. Version 1.0.0-beta09 enthält diese Commits.

API-Änderungen

  • Enum „Role“ und „LiveRegionMode“ in Inline-Klassen mit privatem Konstruktor ändern (Id1890)
  • „KeyboardCapitalization“ wird in eine Inline-Klasse konvertiert. (Id5a1c)
  • Ändern Sie HapticFeedbackType in eine Inline-Klasse. (I255ec)
  • Modifier.pointerInteropFilter ist @ExperimentalComposeUiApi. (Iede6c)
  • „TextAlign“, „FontSynthesis“ und „TextDirection“ sind jetzt Inline-Klassen. (I212fe)
  • „TextOverflow“ wird in eine Inline-Klasse geändert. (I433af)
  • FontStyle ist jetzt eine Inline-Klasse. (I9e48b)

Fehlerkorrekturen

  • Die wichtigsten Konstanten sind derzeit @ExperimentalComposeUiApi. Code, der verwendet wird, kann private Konstanten vor der Stabilisierung deklarieren. (Ia5d48)
  • Compose-Tests können jetzt mit Robolectric ausgeführt werden. Bisher wurden die folgenden Einschränkungen festgestellt:
    • Es ist kein natives Bitmap vorhanden, daher führt ImageBitmap() zu einer NullPointerException.
    • Es gibt keine Zeichnung, sodass captureToImage() unbegrenzt auf den nächsten Zeichenvorgang wartet (d.h., es kommt zu einem Deadlock).
    • Es ist keine Schriftart geladen, daher wird jeder Text falsch gemessen. Alle Zeichen haben eine feste Höhe von etwa 20 Pixel und eine Breite von 1 Pixel.
    • ComposeTestRule.waitUntil {} führt den Hauptthread nicht aus, während es wartet. Das ist im Grunde dasselbe wie bei ComposeTestRule.mainClock.advanceTimeUntil {}. Es ist zu erwarten, dass in Zukunft weitere Einschränkungen festgestellt werden. (I284fa)

Hinzugefügte Profilregeln

In dieser Version werden den folgenden Compose-Modulen Profilregeln hinzugefügt (I14ed6):

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.foundation
  • androidx.compose.foundation-layout
  • androidx.compose.material
  • androidx.compose.material-ripple
  • androidx.compose.runtime
  • androidx.compose.ui
  • androidx.compose.ui.geometry
  • androidx.compose.ui.graphics
  • androidx.compose.ui.text
  • androidx.compose.ui.text
  • androidx.compose.ui.unit
  • androidx.compose.ui.util

Was sind Profilregeln?

  • Profilregeln für eine Bibliothek werden in einer Textdatei baseline-prof.txt angegeben, die sich im Verzeichnis src/main oder einem entsprechenden Verzeichnis befindet. In der Datei wird eine Regel pro Zeile angegeben. Eine Regel ist in diesem Fall ein Muster, das mit Methoden oder Klassen in der Bibliothek abgeglichen wird. Die Syntax für diese Regeln ist eine Obermenge des für Menschen lesbaren ART-Profilformats, das bei Verwendung von adb shell profman --dump-classes-and-methods ... verwendet wird. Diese Regeln können entweder auf Methoden oder auf Klassen ausgerichtet sein.

  • Eine Methodenregel hat das folgende Muster:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • Eine Klassenregel hat das folgende Muster:

    <CLASS_DESCRIPTOR>
    
  • Dabei steht <FLAGS> für eines oder mehrere der Zeichen H, S und P, um anzugeben, ob diese Methode als „Hot“, „Startup“ oder „Post Startup“ gekennzeichnet werden soll.

  • <CLASS_DESCRIPTOR> ist der Deskriptor für die Klasse, zu der die Zielmethode gehört. Die Klasse androidx.compose.runtime.SlotTable hätte beispielsweise den Deskriptor Landroidx/compose/runtime/SlotTable;.

  • Die <METHOD_SIGNATURE> ist die Signatur der Methode und enthält den Namen, die Parametertypen und die Rückgabetypen der Methode. Die Methode fun isPlaced(): Boolean für LayoutNode hat beispielsweise die Signatur isPlaced()Z.

  • Diese Muster können Platzhalter (**, * und ?) enthalten, damit eine einzelne Regel mehrere Methoden oder Klassen abdeckt.

Was bewirken die Regeln?

  • Eine Methode mit dem Flag H ist eine „heiße“ Methode und sollte vorab kompiliert werden.

  • Eine Methode mit dem Flag S wird beim Start aufgerufen und sollte vorab kompiliert werden, um die Kosten für die Kompilierung und Interpretation der Methode beim Start zu vermeiden.

  • Eine Methode mit dem Flag P wird nach dem Start aufgerufen.

  • Eine Klasse, die in dieser Datei vorhanden ist, weist darauf hin, dass sie beim Start verwendet wird und im Heap vorab zugewiesen werden sollte, um die Kosten für das Laden der Klasse zu vermeiden.

So funktioniert's

  • Bibliotheken können diese Regeln definieren, die in AAR-Artefakten enthalten sind. Wenn dann eine App erstellt wird, die diese Artefakte enthält, werden diese Regeln zusammengeführt und die zusammengeführten Regeln werden verwendet, um ein kompaktes binäres ART-Profil zu erstellen, das spezifisch für die App ist. ART kann dieses Profil dann verwenden, wenn die App auf Geräten installiert wird, um ein bestimmtes Subset der Anwendung vorab zu kompilieren und so die Leistung der Anwendung zu verbessern, insbesondere beim ersten Ausführen. Hinweis: Dies hat keine Auswirkungen auf debugfähige Anwendungen.

Version 1.0.0-beta08

2. Juni 2021

androidx.compose.ui:ui-*:1.0.0-beta08 ist veröffentlicht. Version 1.0.0-beta08 enthält diese Commits.

API-Änderungen

  • Das Enum NestedScrollSource wird durch eine Inline-Klasse ersetzt. (Ie321b, b/187055290)
  • FocusManager.clearFocus(forcedClear = true) wird in FocusManager.clearFocus(force = true) umbenannt (Ia0c41)
  • Die Verwendung von Enums wurde in Inline-Klassen umgestaltet, um Probleme mit erschöpfenden „when“-Anweisungen zu vermeiden, wenn neue Enum-Werte hinzugefügt werden. (I2b5eb)
  • Entfernen Sie @ExperimentalComposeUiApi aus PopupProperties. (I01fa6)
  • PointerType wurde von einem Enum in eine Inline-Klasse (If5058) geändert.
  • Die Eigenschaften „ContentDescription“ und „Text semantics“ sind nicht mehr einzelne Werte, sondern Listen. So können sie zusammengeführt werden, anstatt sie zu verketten. Außerdem wurden bessere Test-APIs bereitgestellt, um diese Änderungen zu nutzen (Ica6bf, b/184825850).
  • Modifier.focusModifier() wurde eingestellt und durch Modifier.focusTarget() (I6c860) ersetzt.
  • Modifier.onSizeChanged() und Modifier.onGloballyPositioned() sind keine Inline-Funktionen mehr (I727f6, b/186109675)
  • Das Enum KeyboardType wird durch eine Inline-Klasse ersetzt. (I73045, b/187055290)
  • Das FocusState-Enum wurde durch eine FocusState-Schnittstelle ersetzt (Iccc1a, b/187055290).
  • Das ImeAction-Enum wird durch eine Inline-Klasse ersetzt. (I18be5, b/187055290)
  • PlaceholderVerticalAlign wird in eine Inline-Klasse konvertiert. (If6290)
  • „TextUnitType“ ist jetzt eine Inline-Klasse. (I4cba9)
  • AnnotatedString.withAnnotation-Funktionen sind jetzt „ExperimentalTextApi“ anstelle von „ExperimentalComposeApi“. (I0cd0a)
    • Der TextUnit-Konstruktor mit TextUnitType ist jetzt ExperimentalTextApi anstelle von ExperimentalComposeApi.

Fehlerkorrekturen

  • Der in Beta 07 eingeführte Fehler wurde behoben, bei dem LazyColumn-/Row-Elemente nach dem Scrollen teilweise angezeigt wurden (I8c9ac, b/188566058).
  • Jetzt werden detectDragGesures, detectVerticalGestures und detectHorizontalGestures automatisch für die Positionsänderung verwendet. Es ist nicht mehr erforderlich, „change.consumePositionChange“ in den „onDrag“-Callbacks aufzurufen (I42fc4, b/185096350, b/187320697).
  • LayoutModifier, die Ausrichtungslinien bereitstellen, wurden korrigiert. Ein Fehler wurde behoben, der dazu führte, dass das übergeordnete Element nicht neu gemessen wurde, wenn sich die Ausrichtungslinien der untergeordneten Elemente änderten. (I4401f, b/174315652)
  • Modifier.onGloballyPositioned() wurde geändert, um die Koordinaten dieses Modifikators in der Modifikator-Kette zu melden, nicht die Layoutkoordinaten nach dem Anwenden aller Modifikatoren. Das bedeutet, dass die Reihenfolge der Modifikatoren jetzt beeinflusst, welche Koordinaten gemeldet werden. (Ieb67d, b/177926591)

Version 1.0.0-beta07

18. Mai 2021

androidx.compose.ui:ui-*:1.0.0-beta07 ist veröffentlicht. Version 1.0.0-beta07 enthält diese Commits.

API-Änderungen

  • ViewRootForInspector-Schnittstelle für die Verwendung im Inspector hinzugefügt (Ib70df)
  • In SubcomposeLayoutState kann jetzt die Anzahl der wiederverwendbaren Slots festgelegt werden. Das Layout behält bis zu dieser Anzahl von Slots aktiv, anstatt sie zu verwerfen, um den Slot beim nächsten Mal wiederverwenden zu können, wenn ein neuer benötigt wird (Ieb981).
  • Das enum KeyEventType wird durch eine Inline-Klasse ersetzt. (Id670a, b/187055290)
  • Das Enum FocusDirection wird durch eine Inline-Klasse ersetzt. (Ib6d03, b/187055290, b/184086802)
  • Einführung der Möglichkeit, den SubcomposeLayout-Status zu verschieben, wodurch der Inhalt in eine erforderliche slotId vorab zusammengesetzt werden kann. Dadurch wird der nächste Messdurchlauf beschleunigt, da beim nächsten Versuch, mit der angegebenen slotId zusammenzusetzen, keine Komposition erforderlich ist. (I42580, b/184940225)
  • Auswahlgriff für Clips hinzugefügt (Iff80d, b/183408447)
  • Nicht verwendete APIs im Zusammenhang mit der LayoutInspector-Unterstützung wurden entfernt. (I2ac78)

Fehlerkorrekturen

  • In LazyColumn/Row bleiben jetzt bis zu zwei zuvor sichtbare Elemente aktiv (werden nicht verworfen), auch wenn sie bereits aus dem Bild gerollt wurden. So kann die Komponente die aktiven Unterkompositionen wiederverwenden, wenn ein neues Element zusammengesetzt werden muss. Das verbessert die Scrollleistung. (Ie5555)
  • TextGeomerticTransform und TextDecoration am AnnotatedString werden wie angegeben angewendet. (I61900, b/184760917)

Version 1.0.0-beta06

5. Mai 2021

androidx.compose.ui:ui-*:1.0.0-beta06 ist veröffentlicht. Version 1.0.0-beta06 enthält diese Commits.

API-Änderungen

  • Konflikt mit Navigationsgeste beheben (I1145e)
  • @ComposeCompilerApi nicht mehr @RequiresOptIn (Iab690)
  • Es wurden Bedienungshilfen-APIs für CollectionInfo und CollectionItemInfo hinzugefügt, mit denen Sammlungen und ihre Elemente für Bedienungshilfen-Dienste markiert werden können (Id54ef, b/180479017).
  • SemanticsActions.ScrollToIndex wurde hinzugefügt, um eine Liste mit indexierten Elementen zum Element mit einem bestimmten Index zu scrollen, und SemanticsProperties.IndexForKey, um den Index eines Elements in einer Liste mit Elementen mit Schlüssel abzurufen. Beide Aktionen werden von LazyList implementiert.
    • Die Funktionen SemanticsNodeInteraction.performScrollToIndex und SemanticsNodeInteraction.performScrollToKey wurden hinzugefügt. Mit SemanticsNodeInteraction.performScrollToIndex wird eine Liste zum angegebenen Index gescrollt und mit SemanticsNodeInteraction.performScrollToKey wird eine Liste zum Element mit dem angegebenen Schlüssel gescrollt. (I4fe63, b/178483889, b/161584524)
  • „ownerViewId“ zu „GraphicLayerInfo“ hinzugefügt (I19f62)
  • Font()-Überladungen zum Laden von Schriftarten aus Assets, File und FileDescriptor hinzugefügt (I5d382)
  • Die Bedienungshilfen-API error wurde hinzugefügt. Damit kann ein Knoten markiert werden, der ungültige Eingaben enthält (I12997, b/180584804, b/182142737).
  • Font()-Überladungen zum Laden von Schriftarten aus Assets, File und FileDescriptor hinzugefügt (I43007)
  • Unterstützung für das Speichern von AnnotatedString in TextFieldValue.Saver. Die Hilfsfunktionen addTtsAnnotation und withAnnotation wurden zu AnnotatedString.Builder hinzugefügt. (I8cbdc, b/178446304)
  • TextUnit-Konstruktorfunktion TextUnit(value: Float, type: TextUnitType) hinzugefügt (I7ecce, b/178446304)

Version 1.0.0-beta05

21. April 2021

androidx.compose.ui:ui-*:1.0.0-beta05 ist veröffentlicht. Version 1.0.0-beta05 enthält diese Commits.

API-Änderungen

  • Die experimentellen FocusManager.moveFocus(In)- und FocusManager.moveFocus(Out)-Felder wurden hinzugefügt (Ic5534, b/183746743).
  • Experimentelle performTextInputSelection API wurde hinzugefügt. (I2dcbb, b/178510628)
  • Die InputEventCallback-Schnittstelle ist veraltet. Die Schnittstelle konnte in keiner öffentlichen API verwendet werden und wurde auch nicht im Code verwendet. (I34a02, b/184003208)
  • Die Funktion TextLayoutResult/createTextLayoutResult wurde eingestellt. Es handelt sich um eine ungenutzte öffentliche Funktion, die zum Testen hinzugefügt wurde. Die Funktion führt keine Aktionen aus, die für Compose Text APIs nützlich sind. Die Funktion wird jetzt eingestellt und später entfernt. (I80413)

Fehlerkorrekturen

  • Die Barrierefreiheits-Scrollaktionen ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRight und accessibilityActionScrollDown wurden korrigiert. Anstatt bis zum Ende des scrollbaren Bereichs zu scrollen, wird jetzt um eine Bildschirmseite in die angegebene Richtung gescrollt. (Ieccb0)
  • Die AndroidManifest-Dateien von „ui-test-manifest“ und „ui-tooling-data“ sind jetzt mit Android 12 kompatibel (I6f9de, b/184718994).

Version 1.0.0-beta04

7. April 2021

androidx.compose.ui:ui-*:1.0.0-beta04 ist veröffentlicht. Version 1.0.0-beta04 enthält diese Commits.

API-Änderungen

  • Benennen Sie hideSoftwareKeyboard und showSoftwareKeyboard auf SoftwareKeyboardController in hide() bzw. show() um.
    • Die vollständige CompositionLocal-Schnittstelle für LocalSoftwareKeyboardController wird bereitgestellt, sodass sie festgelegt werden kann (besonders nützlich in Tests) (I579a6).
  • Die LiveRegion-Barrierefreiheits-API wurde hinzugefügt. Wenn ein Knoten als Live-Bereich markiert ist, werden die Nutzer von den Barrierefreiheitsdiensten automatisch über Änderungen informiert (Idcf6f, b/172590946).
  • „TextOverflow.Visible“ wird eingeführt. (Ic8f89)

Fehlerkorrekturen

  • Das Problem wurde behoben, bei dem Elemente von LazyColumn/LazyRow, die sich an den Rändern befinden, nach dem schnellen Fling falsch positioniert wurden (Ie4d13, b/183877420).
  • Mit AndroidViewBinding werden jetzt Fragmente, die über FragmentContainerView eingefügt wurden, ordnungsgemäß entfernt, wenn AndroidViewBinding aus der Compose-Hierarchie entfernt wird. (Ib0248, b/179915946)
  • AndroidViewBinding verschachtelt jetzt Fragmente, die über FragmentContainerView eingefügt wurden, korrekt, wenn sich Ihr ComposeView in einem Fragment befindet. Dadurch werden Probleme beim Speichern und Wiederherstellen des Status dieser Fragmente behoben. (I70eb0, b/179915946)
  • Compose ViewBinding hängt jetzt von Fragment 1.3.2 ab und zeigt Fragmente, die über FragmentContainerView nach Konfigurationsänderungen eingefügt wurden, jetzt konsistent an. (I0743d, b/179915946)

Version 1.0.0-beta03

24. März 2021

androidx.compose.ui:ui-*:1.0.0-beta03 ist veröffentlicht. Version 1.0.0-beta03 enthält diese Commits.

API-Änderungen

  • Verzögerte Prüfung auf ViewTree-Abhängigkeiten von ComposeView (I8dbbf, b/182466548)
  • Die optionalen Parameter startX/endX und startY/endY wurden den Funktionen swipeUp/swipeDown/swipeLeft/swipeRight in GestureScope hinzugefügt. (I49e2d, b/182063305)

Version 1.0.0-beta02

10. März 2021

androidx.compose.ui:ui-*:1.0.0-beta02 ist veröffentlicht. Version 1.0.0-beta02 enthält diese Commits.

API-Änderungen

  • Die neue lokale API LocalSoftwareKeyboardController für die Komposition wurde hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle für TextField zu ersetzen. (I5951e, b/168778053)
  • Die neue lokale API LocalSoftwareKeyboardController für die Komposition wurde hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle für TextField zu ersetzen. (I84472, b/168778053)
  • Die folgenden SemanticsMatcher wurden entfernt:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (If16bd)
  • Die folgenden SemanticsMatchers wurden als @ExperimentalTestApi markiert:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (Ia600c)
  • Die folgenden SemanticsMatcher wurden hinzugefügt:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (I2f502)

Fehlerkorrekturen

  • Einschränkungen für die öffentliche Nutzung experimenteller APIs erzwingen (I6aa29, b/174531520)
  • androidx.compose.ui:ui hängt nicht mehr von AppCompat oder Fragment ab. Wenn Sie in Ihrer Anwendung eine ComposeView verwenden und Fragment und/oder AppCompat nutzen, müssen Sie AppCompat 1.3+ / Fragment 1.3+ verwenden. Diese Versionen sind erforderlich, um die für ComposeView erforderlichen Lifecycle- und SavedState-Inhaber richtig festzulegen. (I1d6fa, b/161814404)
  • Es wurde ein Fehler behoben, der auftrat, wenn rememberSaveable { mutableStateOf(0) } in einem Ziel von „navigation-compose“ verwendet wurde. (I1312b, b/180042685, b/180701630)
  • Die neue lokale API LocalSoftwareKeyboardController für die Komposition wurde hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle für TextField zu ersetzen. (I658b6, b/168778053)
  • Seltene NoSuchElementException in ComposeRootRegistry von tearDownRegistry() behoben (Iddce1)

Version 1.0.0-beta01

24. Februar 2021

androidx.compose.ui:ui-*:1.0.0-beta01 ist veröffentlicht. Version 1.0.0-beta01 enthält diese Commits.

Dies ist die erste Version von Compose 1.0.0 Beta.

API-Änderungen

  • Der Callback „onStart“ wurde zu detectDragGestures hinzugefügt (I67269, b/179995594).
  • Modifikatoren für die Größenanpassung an intrinsische Eigenschaften sind nicht mehr experimentell. (I15744)
  • MeasureBlocks wurde in MeasurePolicy umbenannt und ist jetzt eine unterhaltsame Benutzeroberfläche. Layout-APIs wurden aktualisiert / vereinfacht, um MeasurePolicy zu verwenden. (Icab48, b/167662468, b/156751158)
  • InteractionState wurde durch [Mutable]InteractionSource ersetzt.
    • Schnittstellen sind für das Ausgeben / Erfassen von Interaktionsereignissen verantwortlich.
    • Anstatt interactionState = remember { InteractionState() } an Komponenten wie Button und Modifier.clickable() zu übergeben, verwenden Sie interactionSource = remember { MutableInteractionSource() }.
    • Statt Interaction.Pressed in interactionState sollten Sie stattdessen die Erweiterungsfunktionen für InteractionSource verwenden, z. B. InteractionSource.collectIsPressedAsState().
    • Bei komplexen Anwendungsfällen können Sie mit InteractionSource.interactions den Stream von Interaktionen beobachten. Weitere Informationen finden Sie in der Dokumentation und den Beispielen zu InteractionSource.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • AccessibilityMananger-Schnittstelle und LocalAccessibilityMananger in CompositionLocals hinzufügen (I53520)
  • Entfernung der eingestellten LayoutCoordinates-Methoden. Verwenden Sie anstelle der Eigenschaft die Funktion für „positionInParent“ und „boundsInParent“ (I580ed, b/169874631, b/175142755)
  • Typealiases wurden durch zugrunde liegende Typen ersetzt:
    • ColorStop ist jetzt Pair<Float, Color>
    • SpanStyleRange ist jetzt `AnnotatedString.Range`
    • ParagraphStyleRange ist jetzt AnnotatedString.Range<ParagraphStyle>
    • StringAnnotation ist jetzt AnnotatedString.Range<String>
    • (I8dd1a)
  • Es wurde eine neue TextInputSession für Eingabesitzungen aus Textkomponenten auf niedriger Ebene wie CoreTextField erstellt. (I8817f, b/177662148)
  • „Placeable“ macht jetzt „measuredSize“ verfügbar, was der Größe entspricht, die für das untergeordnete Layout tatsächlich gemessen wurde. Diese Größe entspricht möglicherweise nicht den Einschränkungen für die Analyse. (Ib2729, b/172560206, b/172338608)
  • „selectionGroup“-Modifikator hinzugefügt, mit dem eine Sammlung von Tabs oder Optionsfeldern für Barrierefreiheitszwecke markiert werden kann (Ie5c29)
  • Die defaultFactory für compositionLocalOf und staticCompositionLocalOf ist jetzt erforderlich und nicht mehr optional.

    Durch diese Änderung wird ein potenzieller Typfehler für nicht nullable Typen entfernt, für die keine Standardfactory angegeben wurde. Bisher wurde dadurch eine Nullreferenz für einen Typ ohne Nullwerte bereitgestellt.

    Bei Typen mit zulässigen Nullwerten sollten Sie { null } als Standard-Factory angeben.

    Wir raten davon ab, lokale Variablen mit nicht nullable-Typen zu verwenden, es sei denn, es kann ein sinnvoller Standardwert angegeben werden. Wenn kein sinnvoller Standardwert vorhanden ist, sollte die Lambda-Funktion defaultFactory eine Ausnahme auslösen. Wenn jedoch eine Ausnahme ausgelöst wird, haben die Nutzer des Lokals eine implizite Abhängigkeit davon, dass es bereitgestellt wird, die nicht vom Typsystem erzwungen wird. (Ifbd2a)

  • Veraltete Methoden aus UI-Modulen wurden entfernt (I646f6)

  • Größenmodifikatoren wurden umbenannt. „Modifier.width“/„height“/„size“ wurden in „requiredWidth“/„requiredHeight“/„requiredSize“ umbenannt. „Modifier.preferredWidth“/„preferredHeight“/„preferredSize“ wurden in „width“/„height“/„size“ umbenannt. (I5b414)

  • Modifier.tapGestureFilter wurde entfernt. Verwenden Sie stattdessen Modifier.pointerInput { detectTapGestures(...) }. (I266ed, b/175294473)

  • Die teilweise Verarbeitung wurde aus dem System für Zeigereingaben entfernt. Die empfohlene Methode zum Koordinieren des teilweisen Verbrauchs ist Modifier.nestedScroll. (Ie9c9b)

  • Die Ausrichtung wurde in das Foundation-Paket verschoben. „VelocirtTracker“ wurde von „ui.gesture“ zu „ui.input.pointer“ verschoben. (Iff4a8, b/175294473)

  • imageResource und vectorResource sind jetzt Erweiterungsfunktionen für ImageBitmap- und ImageVector-Begleitobjekte. load{Image,Vector,Font}Resource-Funktionen wurden gelöscht. (I89130)

  • AnimationClockObservable und Unterklassen wurden entfernt. „AnimatedFloat“ wurde entfernt. (Icde52, b/177457083)

  • „Providers“ wurde in „CompositionLocalProvider“ umbenannt.

    • Der Composition-Konstruktor akzeptiert keinen Schlüsselparameter mehr und wurde eingestellt.
    • „currentCompositeKeyHash“ wurde in eine zusammensetzbare Property der obersten Ebene anstelle einer zusammensetzbaren Funktion der obersten Ebene umgewandelt.
    • „CompositionData“ und „CompositionGroup“ wurden in den Namespace „androidx.compose.runtime.tooling“ verschoben.
    • ComposableLambda ist jetzt eine Schnittstelle anstelle einer konkreten Klasse und hat keine Typparameter mehr.
    • ComposableLambdaN ist jetzt eine Schnittstelle anstelle einer konkreten Klasse und hat keine Typparameter mehr.
    • Die Funktion „snapshotFlow“ wurde in den Namespace „androidx.compose.runtime“ verschoben.
    • Die Zusammenführungsmethode von SnapshotMutationPolicy ist nicht mehr experimentell.
    • Die Funktion „clearRoots“ auf oberster Ebene mit der Annotation „@TestOnly“ wurde entfernt. Das ist nicht mehr erforderlich.
    • Die Funktionen „keySourceInfoOf“ und „resetSourceInfo“ wurden entfernt. Sie sind nicht mehr erforderlich.
    • Composer.collectKeySourceInformation wurde entfernt. Das ist nicht mehr erforderlich.
    • Die Methoden „isJoinedKey“, „joinedKeyLeft“ und „joinedKeyRight“ wurden entfernt. Sie sind nicht mehr erforderlich.
    • Verschiedene APIs der obersten Ebene wurden verschoben und in verschiedenen Dateien neu organisiert. Aufgrund der Dateiklassensemantik von Kotlin wird die binäre Kompatibilität, nicht aber die Quellkompatibilität beeinträchtigt. Das sollte für die meisten Nutzer kein Problem darstellen.
    • (I99b7d, b/177245490)
  • ComponentActivity.setContent() wurde aus compose:ui entfernt. Verwenden Sie die von androidx.activity:activity-compose:1.3.0-alpha01. viewModel() und LocalViewModelStoreOwner wurden aus compose:ui entfernt. Verwenden Sie die aus androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 (I6f36b).

  • Modifier.scrollable wurde überarbeitet. Jetzt wird die Scrollable-Schnittstelle anstelle der ScrollableController-Klasse verwendet (I4f5a5, b/174485541, b/175294473).

  • Die Unterstützung von CustomEvents über PointerInputModifier wurde entfernt (I02707, b/175294473).

  • SnapshotStateObserver ist nicht mehr experimentell (Id2e6a)

  • Einige zuvor verworfene APIs wurden gelöscht (Ice5da, b/178633932).

  • longPressGestureFilter und doubleClickGestureFilter wurden entfernt. Verwenden Sie Modifier.pointerInput mit Hilfsfunktionen wie detectTapGestures (I2fedf, b/175294473).

  • Die String.format-API wurde entfernt und die Verwendung in verschiedenen toString-Methoden wurde so umgestaltet, dass String.format intern nicht mehr verwendet wird. (Id1290)

  • DP-Assertions entfernt (I798d2)

  • androidx.compose.runtime:runtime-dispatch entfernt (I55feb)

  • Fokus wird jetzt automatisch bei Textaktionen geprüft (I13777, b/179648629)

  • runBlockingWithManualClock entfernt (I15cdc, b/179664814)

  • Die Scrollposition in Modifier.verticalScroll()/horizontalScroll() wird jetzt mit Ints dargestellt (I81298)

  • FlingConfig wurde in FlingBehavior umbenannt und ermöglicht jetzt die Anpassung der Suspend-Animation anstelle vordefinierter Decays. (I02b86, b/175294473)

  • Es wurde eine Hilfsfunktion hinzugefügt, mit der dieselbe Aktion für alle ImeAction-Callbacks festgelegt werden kann (I63447, b/179226323).

  • Der SoftwareKeyboardController-Callback wurde aus allen Textfeldern entfernt und wird demnächst durch eine neue API ersetzt. (Iae869, b/168778053)

  • „FontSpan“ und „FontWeigthStyleSpan“ werden nicht mehr verwendet und wurden entfernt. (Ie5b56, b/177423444)

  • Folgende Änderungen an der Material API wurden vorgenommen:

    • Der Parameter „contentPadding“ wurde der Top/BottomAppBar hinzugefügt, um das Anpassen des Standardabstands zu ermöglichen.
    • Die Parameter in „BackdropScaffold“ wurden neu angeordnet, um den API-Richtlinien zu entsprechen, nach denen erforderliche Parameter vor optionalen Parametern stehen.
    • Der Parameter icon in BottomNavigationItem wurde nach selected und onClick verschoben.
    • Der Parameter alwaysShowLabels in BottomNavigationItem wurde in alwaysShowLabel umbenannt.
    • Die bodyContent-Parameter in einigen Komponenten wurden in content umbenannt.
    • Die Parameter in ButtonDefaults.buttonColors() wurden neu angeordnet. Da sich der Typ der Parameter nicht geändert hat, führt dies nicht zu einem Fehler in Ihrem Code. Achten Sie jedoch darauf, dass Sie entweder benannte Parameter verwenden oder die Reihenfolge manuell aktualisieren, da Ihr Code sonst nicht wie zuvor funktioniert.
    • Der Parameter secondaryVariant wurde zu darkColors() hinzugefügt. Diese Farbe ist in der Regel dieselbe wie secondary im dunklen Design. Sie wird jedoch zur Konsistenz und für weitere Anpassungen hinzugefügt.
    • ElevationDefaults und animateElevation() wurden aus der öffentlichen API entfernt, da sie nicht häufig verwendet wurden.
    • onValueChangeEnd in Slider wurde in onValueChangeFinished umbenannt und ist jetzt nullable.
    • Der Parameter text in Snackbar wurde aus Konsistenzgründen in content umbenannt.
    • Der Parameter contentPadding wurde zu DropdownMenuItem hinzugefügt, um das Anpassen des Standardabstands zu ermöglichen. Außerdem ist content jetzt eine Erweiterung von RowScope.
    • ModalDrawerLayout wurde in ModalDrawer umbenannt.
    • BottomDrawerLayout wurde in BottomDrawer umbenannt.
    • (I1cc66)

Fehlerkorrekturen

  • Es wurde eine API hinzugefügt, mit der AnimatedVectorDrawable-Ressourcen in Compose verwendet werden können. Mit animatedVectorResource kann eine <animated-vector>-XML-Datei als AnimatedImageVector geladen und mit painterFor (I8ea91) animiert werden.
  • Es wurde eine neue LocalSoftwareKeyboardController-Kompositions-Local-API hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle für TextField zu ersetzen. (I658b6, b/168778053)

Version 1.0.0-alpha12

10. Februar 2021

androidx.compose.ui:ui-*:1.0.0-alpha12 ist veröffentlicht. Version 1.0.0-alpha12 enthält diese Commits.

API-Änderungen

  • Die Unterstützung für ViewGroups wurde aus UiApplier entfernt. Die eingestellten emitView-Composables wurden entfernt. (Ifb214)
  • Für Modifier.pointerInput sind jetzt „remember“-Schlüssel erforderlich, um anzugeben, wann die Pointer-Eingabeerkennungs-Coroutine für neue Abhängigkeiten neu gestartet werden soll. (I849cd)
  • „CompositionReference“ wurde in „CompositionContext“ umbenannt (I53fcb)
  • „Bounds“ wurde in „DpRect“ (I4b32a) umbenannt.
  • Aktualisierung für Tests: Mit hasText() wird sowohl der Eingabe- als auch der Label-/Hinweis-/Platzhaltertext im Textfeld geprüft (Iab803)
  • Die zusammensetzbare Funktion „viewModel()“ und „LocalViewModelStoreOwner“ wurden nach „androidx.lifecycle.viewmodel.compose“ verschoben. Sie müssen jetzt eine separate Abhängigkeit „androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01“ hinzufügen, um sie verwenden zu können. (I7a374)
  • Nullable-Aktion in AccessibilityAction zulassen, Aktionslabel in AccessibilityAction und CustomAccessibilityAction von CharSequence zu String ändern (I0dc82)
  • Um die Namenskonventionen besser an ImageBitmap und ImageVector anzupassen, wurde ImagePainter in BitmapPainter umbenannt, um VectorPainter zu parallelisieren. (Iba381, b/174565889)
  • Bessere APIs für Unterstring-Tests mit Unterstring als Argument (Icbe78)
  • Es wurde eine Modifier.focusOrder() hinzugefügt, die einen FocusRequester akzeptiert, ohne dass eine benutzerdefinierte Fokusreihenfolge als Lambda angegeben wird. Das ist nützlich, wenn wir nur eine Referenz, aber keine benutzerdefinierte Fokusreihenfolge für eine Komponente angeben müssen (I4f52a, b/179180978).
  • ComponentActivity.setContent wurde in das Modul androidx.activity:activity-compose verschoben und befindet sich jetzt unter androidx.activity.compose.setContent. (Icf416)
  • Die Methoden „Destructuring“ und „copy()“ wurden aus mehreren Klassen entfernt, in denen sie selten verwendet wurden. (I26702, b/178659281)
  • Das Pop-up ist jetzt plattformspezifisch. AndroidPopupProperties wurde in PopupProperties umbenannt und isFocusable wurde in PopupProperties (Ieeea5) in den Parameter focusable verschoben.
  • Das Dialogfeld wurde plattformspezifisch verschoben. „AndroidDialogProperties“ wurde in „DialogProperties“ umbenannt. (I4ef69, b/179138130)
  • LayoutNode wurde intern gemacht (I8a7b1, b/175103944)
  • „Constraints.enforce“ wurde durch „Constraints.constrain“ ersetzt. (I8b8ea)
  • „loadFontResource“ wird nicht mehr unterstützt. Verwenden Sie stattdessen „fontResource“. „imageResource“, „loadImageResource“, „vectorResource“ und „loadVectorResource“ sind veraltet. Verwenden Sie stattdessen „painterResource“. (I6b809)
  • Aus Leistungsgründen werden für die Semantik von „ScrollAxisRange“ jetzt Lambdas verwendet, die Gleitkommazahlen zurückgeben, anstelle von direkten Gleitkommawerten. (If4a35, b/178657186)
  • Es wurden EditableText-Semantiken hinzugefügt, um bearbeitbaren Eingabetext des Textfelds für die Barrierefreiheit zu kennzeichnen, sowie entsprechende Testmethoden zum Prüfen der Semantik (I8e07a).
  • OwnerLayer/OwnerScope/OwnerSnapshotObserver intern gemacht (I4ffaf, b/175103944)
  • toIntPx() wurde in roundToPx() umbenannt. (I9b7e4, b/173502290)
  • IntBounds wurde in IntRect umbenannt und die API wurde verbessert. (I1f6ff)
  • Die Snapshot API wurde aktualisiert, um den API-Richtlinien besser zu entsprechen und interne Implementierungsklassen in der öffentlichen API auszublenden. (Id9e32)
  • Semantische Aktionen zum Maximieren und Minimieren hinzugefügt. expand und halfExpand in ModalBottomSheetState hinzugefügt (Ib5064)
  • „Modifier.dragGestureFilter“ wurde eingestellt. Verwenden Sie stattdessen „Modifier.pointerInput { detectDragGestures (...)}“. Alternativ können Sie Modifier.draggable für das Ziehen auf einer Achse verwenden (I0ba93, b/175294473).
  • Umbenennung von „Ambients“ in „CompositionLocal“. Ambients hießen früher „AmbientFoo“, jetzt heißen CompositionLocals „LocalFoo“. (I2d55d)
  • Das verworfene BaseTextField wurde entfernt. Verwenden Sie stattdessen „BasicTextField“. (I71368)
  • Die Auswahl wurde in die Grundlage verschoben. (I7892b)
  • Ähnlich wie wir zuvor die state { 0 }-Composable entfernt und die Verwendung von remember { mutableStateOf(0) } gefördert haben, werden wir die savedInstanceState { 0 }-Composable entfernen. Verwenden Sie stattdessen rememberSaveable { mutableStateOf(0) }. Der Wert wird automatisch gespeichert und wiederhergestellt, wenn der in MutableState verwendete Typ im Bundle gespeichert werden kann. Wenn Sie zuvor ein benutzerdefiniertes Saver-Objekt übergeben haben, müssen Sie jetzt eine neue Überladung von rememberSaveable verwenden, die den Parameter stateSaver hat. Die Verwendung sieht so aus: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)
  • Semantik für Passwörter für mehr Barrierefreiheit hinzugefügt (I231ce)
  • ProgressBarRangeInfo.Indeterminate wurde hinzugefügt, um unbestimmte Fortschrittsanzeigen für die Barrierefreiheit zu kennzeichnen (I6fe05).
  • Die Dienstprogramme emptyContent() und (@Composable () -> Unit).orEmpty() wurden eingestellt, da sie keine positiven Auswirkungen auf die Leistung oder den Wert mehr haben (I0484d).
  • snapshotFlow und withMutableSnapshot sind nicht mehr experimentell (I6a45f)
  • Recomposers können jetzt geschlossen werden. Geschlossene Recomposer führen die Neukomposition so lange durch, bis die untergeordneten Coroutinen der Komposition abgeschlossen sind. „Recomposer.shutDown“ wurde in „cancel“ umbenannt, um es von „close“ abzugrenzen. (Ib6d76)
  • UiSavedStateRegistry wurde in SaveableStateRegistry umbenannt, AmbientUiSavedStateRegistry in AmbientSaveableStateRegistry. Beide wurden in das Paket androidx.compose.runtime.saveable verschoben. (I30224)
  • Das Artefakt androidx:compose:runtime:runtime-saved-instance-state wurde in androidx:compose:runtime:runtime-saveable umbenannt (I6dcac).
  • Viele seit Langem eingestellte APIs im ui-Paket wurden gelöscht. (I2f2dc)
  • Das Artefakt „compose:runtime-dispatch“ wird nicht mehr unterstützt. MonotonicFrameClock befindet sich jetzt in compose:runtime und AndroidUiDispatcher in compose:ui. (Ib5c36)
  • Die Klassen „Outline.*“ sind keine Datenklassen mehr (I4879e, b/178001427).
  • view.captureToImage() wurde ohne Ersatz entfernt. (I7fcd2)
  • Die ColorMatrix API wurde eingeführt, um RGB-Werte von Quellinhalten zu ändern. Die ColorFilter API wurde so umgestaltet, dass sie eine Schnittstelle ist und der Implementierung von PathEffect entspricht. (Ica1e8)
  • Der Funktion „createOutline“ von „Shape“ wird der Parameter „layoutDirection“ hinzugefügt. So können Sie Formen erstellen, die die Layoutrichtung berücksichtigen. (I57c20, b/152756983)
  • „onImeActionPerformed“ ist veraltet. Verwenden Sie stattdessen „KeyboardActions“ (If0bbd, b/179071523).
  • Es wurde ein InfiniteAnimationPolicy-Coroutine-Kontextelement eingeführt, das in unendlichen Animationen angewendet wird. Standardmäßig ist keine Richtlinie installiert, außer wenn Tests mit ComposeTestRule ausgeführt werden. (I50ec4, b/151940543)
  • canDrag wurde aus Modifier.scrollable entfernt. (Id66e7, b/175294473)
  • „LayoutCoordinates.parentCoordinates“ wurde in „LayoutCoordinates.parentLayoutCoordinates“ umbenannt, um eine neue „parentCoordinates“-Property zu ermöglichen. Die Eigenschaft „parentCoordinates“ bietet jetzt die Layoutkoordinaten des übergeordneten Modifiers. Dadurch werden die Anwendungsfälle für onSizeChanged() und onGloballyPositioned() vollständiger (Idfbfd, b/177926591).
  • „tapGestureFilter“, „doubleTapGestureFilter“, „longPressGestureFilter“ und „pressIndicaitonGestureFilter“ wurden eingestellt. Verwenden Sie stattdessen Modifier.clickable oder Modifier.pointerInput mit der Funktion detectTapGestures. (I6baf9, b/175294473)
  • Die Methode „unregisterProvider“ von „SaveableStateRegistry“ wurde entfernt. Stattdessen gibt registerProvider() jetzt ein SaveableStateRegistry.Entry-Objekt zurück, mit dem Sie die Registrierung aufheben können (Ic4274, b/178583739).
  • rememberSavedInstanceState() wurde in rememberSaveable() umbenannt und in das Paket androidx.compose.runtime.saveable verschoben. (I1366e, b/177338004)
  • CoreText und CoreTextField aus der öffentlichen API entfernt
    • Die eingestellte Überladung von „SelectionContainer“ wurde entfernt.
    • (I99c19)
  • Tests, in denen Compose in Hierarchien verwendet wird, die direkt zum WindowManager hinzugefügt/daraus entfernt werden, sind jetzt stabiler. (Ie81ed, b/175765614)
  • „Recomposer.current()“ wurde entfernt. [Abstract]ComposeView verwendet jetzt standardmäßig Recomposers, die lazy erstellt werden und auf das Fenster beschränkt sind. Sie werden vom ViewTreeLifecycleOwner für das Fenster gesteuert. Die Neukomposition und auf „withFrameNanos“ basierende Animations-Ticks werden pausiert, während der Host-Lifecycle beendet wird. (I38e11)
  • Recomposer.runningRecomposers bietet jetzt einen globalen StateFlow von schreibgeschützten RecomposerInfo-Objekten, mit denen der laufende Kompositionsstatus im Prozess beobachtet werden kann. Diese API sollte gegenüber Recomposer.current() bevorzugt werden, da diese jetzt eingestellt ist. (If8ebe)
  • Saver, listSaver(), mapSaver(), autoSaver wurden von androidx.compose.runtime.savedinstancestate nach androidx.compose.runtime.saveable verschoben (I77fe6).
  • EditCommands akzeptieren AnnotatedString. Diese Änderung betrifft jedoch nur die API. Die Bearbeitung von Text mit mehreren Formatierungen ist noch nicht implementiert. (I4c3ea)
  • Die Angaben zu Betriebszeit und Dauer wurden entfernt. (Ib9bf4, b/177420019)
  • CompositionData.asTree() und zugehörige APIs wurden in ein separates ui-tooling-data-Modul verschoben und als experimentell gekennzeichnet (Ic95b8).
  • Parameter für RounderCornerShape, CutCornerShape und CornerBasedShape wurden von „left“/„right“ in „start“/„end“ umbenannt, um die automatische Spiegelung der Form in RTL-Richtung zu unterstützen. AbsoluteRounderCornerShape und AbsoluteCutCornerShape wurden für Fälle eingeführt, in denen keine automatische Spiegelung gewünscht ist. (I61040, b/152756983)
  • Die API, auf die das Compose-Compiler-Plug-in ausgerichtet ist, wurde so umgestaltet, dass anstelle einer konkreten Klasse eine Schnittstelle verwendet wird. Die Schnittstelle verwendet auch keinen Typparameter mehr.

    Dies ist eine interne Änderung, die sich nicht auf die Quellcodekompatibilität auswirken sollte, aber eine binäre funktionsgefährdende Änderung ist. (I3b922, b/169406779)

  • Entfernen der unbeabsichtigt öffentlichen StringBuilder.deleteAt-Funktion (Id6ed9)

Fehlerkorrekturen

  • ComposeViews, die in Ansichtshierarchien platziert werden, die untergeordnete Elemente einer anderen Komposition sind, enthalten jetzt untergeordnete Kompositionen ihrer übergeordneten Elemente (I92883).
  • Die API „imageFromResource“ von Compose wurde aktualisiert, um den Ressourcen-Drawable-Cache beim Laden von ImageBitmap-Objekten wiederzuverwenden. (If3627, b/178751994)

Version 1.0.0-alpha11

28. Januar 2021

androidx.compose.ui:ui-*:1.0.0-alpha11 ist veröffentlicht. Version 1.0.0-alpha11 enthält diese Commits.

API-Änderungen

  • WithConstraints wurde als BoxWithConstraints überarbeitet und nach foundation.layout verschoben. (I9420b, b/173387208)
  • Key.DPadUp ist veraltet. Verwenden Sie stattdessen Key.DirectionUp. (Iab335, b/177954892)
  • Die Inhaberschnittstelle ist ab sofort intern. (If8e35)
  • Die API „FocusManager.moveFocus()“ wurde hinzugefügt, um den Fokus programmatisch zu verschieben. (I045cb, b/177681839)
  • Ändert PopupPositionProvider, sodass fensterbezogene Koordinaten anstelle von globalen Koordinaten verwendet werden. Benennt „parentGlobalBounds“ in „anchorBounds“ um und ändert „windowGlobalBounds“ in „windowSize: IntSize“ (I2994a)
  • „Duration“ und „Uptime“ werden durch „Long milliseconds“ ersetzt. Durch diesen Schritt wird die Abhängigkeit der Zeigereingabe von diesen Klassen entfernt. (Ia33b2, b/175142755, b/177420019)
  • AmbientSavedStateRegistryOwner wurde ähnlich wie die bereits vorhandenen AmbientLifecycleOwner und AmbientViewModelStoreOwner hinzugefügt (I9a3e8, b/176756365).
  • Die API für Vektorgrafiken wurde aktualisiert, um das Parsen von Farbtonanpassungen zu unterstützen, die auf den Stamm von Vektorgrafiken angewendet werden. (Id9d53, b/177210509)
  • „toolType“ wurde zu „PointerInputChange“ hinzugefügt, um Geräte zu unterscheiden. (Iac787, b/175142755)
  • AmbientWindowManager wurde in AmbientWindowInfo umbenannt (I2686a, b/177084714, b/177084983)
  • Die globalen Koordinatenmethoden wurden eingestellt und neue fensterbasierte Koordinatenmethoden eingeführt. (Iee284)
  • „Modifier.toolingGraphicsLayer“ wurde hinzugefügt. Damit wird ein Modifikator für die Grafikebene hinzugefügt, wenn die Überprüfung aktiviert ist. (I315df)
  • FocusRequester.createRefs ist jetzt als experimentell gekennzeichnet, da sich die Funktion ändern kann. (I2d898, b/177000821)
  • „SemanticsPropertyReceiver.hidden“ wurde in „invisibleToUser“ umbenannt und mit „@ExperimentalComposeUiApi“ gekennzeichnet. „AccessibilityRangeInfo“ wurde in „ProgressBarRangeInfo“ umbenannt. „stateDescriptionRange“ wurde in „progressBarRangeInfo“ umbenannt. „AccessibilityScrollState“ wurde in „ScrollAxisRange“ umbenannt. „horizontalAccessibilityScrollState“ wurde in „horizontalScrollAxisRange“ umbenannt. „verticalAccessibilityScrollState“ wurde in „verticalScrollAxisRange“ umbenannt. (Id3148)
  • PointerInputData wurde entfernt und PointerInputChange wurde so geändert, dass es alle Felder von PointerInputData enthält. PointerInputEvent und PointerInputEventData wurden intern gemacht, da sie in keiner öffentlichen API verwendet werden. (Ifff97, b/175142755)
  • Die Implementierung von „GraphicsLayerScope“ wurde aktualisiert, um die Dichte zu unterstützen und so die Umwandlung von dp in Rohpixel zu ermöglichen. (Ied528, b/176819695)
  • Die Matrix-API wurde aktualisiert, um der zeilenweisen Anordnung zu folgen und Indexkonstanten bereitzustellen, die bei der Konvertierung zwischen verschiedenen Matrixdarstellungen helfen, um die Framework-Konvertierungslogik zwischen SkMatrix und Matrix4 intern abzugleichen. (I432e6)
  • Experimentelle monotonicFrameAnimationClockOf-Methoden entfernt (Ib753f, b/170708374)
  • Die Funktionen „String.fintPrecedingBreak“ und „String.fingFollowingBreak“ werden in „InternalTextApi“ verschoben. (I657c4)
  • androidx.compose.ui.util.isSurrogatePair wurde aus der öffentlichen API entfernt. (Ia9494)
  • „TransformedText.transformedText“ wurde in „TransformedText.text“ umbenannt.
    • TransformedText ist keine Datenklasse mehr (Ie672a)
  • data class wurde aus den folgenden Kursen entfernt:
    • InlineTextContent
    • LocaleList (I605c7)
  • Die folgenden Klassen sind keine Datenklassen mehr:
    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • FontWeight
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput (Iaff99)
  • VisualTransformation wurde in ein funktionales Interface geändert (I3bba4)
  • Ein Funktionsreferenz-Parametertyp wurde hinzugefügt (I5e1bd).
  • Transformierte Grenzen zu InspectorNode hinzufügen (Ice42f)

Fehlerkorrekturen

  • „onCommit“, „onDispose“ und „onActive“ wurden zugunsten der APIs „SideEffect“ und „DisposableEffect“ eingestellt (If760e).
  • Änderungen an Factory-Funktionen für Font/FontFamily/Typeface

    • Es wurden Factory-Funktionen hinzugefügt, die mit einem Großbuchstaben beginnen.
    • Die bisherigen Factory-Funktionen mit Kleinbuchstaben als erstem Buchstaben wurden eingestellt.
    • Neue Factory-Funktionen geben FontFamily anstelle von Unterklassen zurück
    • Konstruktoren der abgeleiteten Klassen ausgeblendet, sodass sie nur über Fabrikmethoden erstellt werden können.
    • „Font.asFontFamily“ wurde in „Font.toFontFamily“ umbenannt (I42aa7)
  • ComposeContentTestRule wurde eingeführt. Diese Klasse erweitert ComposeTestRule und definiert setContent, das aus ComposeTestRule entfernt wurde. Es wurde eine Factory-Methode createEmptyComposeRule() hinzugefügt, die ein ComposeTestRule zurückgibt und keine Activity für Sie startet. Verwenden Sie diese Option, wenn Sie Ihre Aktivität während des Tests starten möchten, z. B. mit ActivityScenario.launch (I9d782, b/174472899).

  • animateAsState ist jetzt animateFooAsState, wobei Foo der Typ der animierten Variablen ist, z. B.Float, Dp, Offset usw. (Ie7e25)

  • Dem Bild und dem Symbol wurde der Parameter „Inhaltsbeschreibung“ hinzugefügt. Sie wird verwendet, um Bedienungshilfen eine Beschreibung zu geben (I2ac4c).

  • Entferne „displaySize“, da diese Eigenschaft vermieden werden sollte. Normalerweise ist es besser, die Größe von „onRoot()“ oder zumindest die Fenstergröße zu verwenden. (I62db4)

  • OnSizeChanged hat die Größe des Layoutinhalts gemeldet. Die Größe wird jetzt an der Position in der Modifikatorfolge angegeben. (I36b78, b/177562900)

  • Die emit()-API und alle Überladungen sind veraltet und wurden in ComposeNode umbenannt. Die APIs sind identisch, haben aber einen anderen Namen, um den Namenskonventionen von Compose zu entsprechen (I4137b).

  • TextFieldValue akzeptiert AnnotatedString. Diese Änderung betrifft jedoch nur die API. Die Bearbeitung von Text mit mehreren Formatierungen ist noch nicht implementiert.

    • initial wurde aus den Konstruktorparametern von EditingBuffer entfernt. (I326d5)
  • „invalidate“ und „compositionReference()“ sind jetzt zugunsten von „currentRecomposeScope“ bzw. „rememberCompositionReference“ veraltet. (I583a8)

  • AnnotatedString wird so geändert, dass es von kotlin.CharSequence abgeleitet wird. Daher sind „length“ und „subSequence“ jetzt Instanzfunktionen und Erweiterungsfunktionen wurden entfernt. (Iaf429)

  • RememberObserver ersetzt CompositionLifecycleObserver und CompositionLifecycleObserver ist jetzt veraltet.

    RememberObserver ist ein Ersatz für CompositionLifecycleObserver mit geänderter Semantik und umbenannten Methoden. Die Umstellung auf die neue API kann mechanisch für Objekte erfolgen, die nur einmal gespeichert werden. Das ist und bleibt die empfohlene Vorgehensweise. Wenn jedoch in einer Komposition mehr als einmal auf eine Referenz verwiesen wurde, wird onRemembered für jede Referenz aufgerufen, während onEnter nur einmal aufgerufen wird. onEnter wurde mehrmals aufgerufen, wenn das Objekt in Unterkompositionen wie WithConstraints und Scaffold verwendet wurde. Dadurch war die Garantie für einen einzelnen onEnter-Aufruf nicht mehr zuverlässig und wurde für RememberObserver entfernt.

    RememberObserver fügt onAbandoned hinzu, das aufgerufen wird, wenn die RememberObserver-Instanz vom Callback zurückgegeben wird, der an remember übergeben wurde, aber nicht im Kompositionsstatus gespeichert wurde und daher nie onRemembered aufgerufen wird. Dies kann passieren, wenn die Komposition aufgrund einer Ausnahme vor Abschluss beendet wird oder die Komposition verworfen wird, weil der Status, für den sie erstellt wurde, nicht mehr aktuell oder anderweitig nicht mehr erforderlich ist. Wenn die Instanz von RememberObserver, die der Empfehlung für einen einzelnen Verweis oben folgt, eine externe Ressource verfolgt, geben sowohl onForgotten als auch onAbandoned an, dass die Ressource nicht mehr benötigt wird. Wenn das Objekt die in onRemembered begonnene Arbeit oder zugewiesene Ressourcen verfolgt, kann onAbandoned ignoriert werden, da es nicht aufgerufen wird, wenn onRemembered aufgerufen wird. (I02c36)

  • Arithmetische Operationen zwischen zwei oder mehr TextUnits sind nicht mehr zulässig. Die Funktionen „TextUnit.Sp“ und „TextUnit.Em“ wurden zugunsten der Erweiterungsfunktionen wie „Int.sp“ und „Int.em“ eingestellt. (I48369)

  • Ressourcen in Bibliotheken ohne explizit deklarierte öffentliche Ressourcen (z. B. über public.xml) sind jetzt standardmäßig privat. (Ia1dcc, b/170882230)

  • ScrollableColumn/Row wurden verworfen. Die Verwendung von „ScrollableColumn“ ist weniger effizient als „LazyColumn“, wenn Sie viele scrollbare Inhalte haben, da mit „LazyColumn“ nur sichtbare Elemente zusammengesetzt, gemessen und gezeichnet werden können. Um zu verhindern, dass Nutzer den ineffizienten Weg gehen, haben wir beschlossen, ScrollableColumn und ScrollableRow einzustellen und stattdessen die Verwendung von LazyColumn und LazyRow zu fördern. Nutzer können sich weiterhin gegen das Lazy-Verhalten entscheiden und die Modifizierer direkt verwenden, z. B. „Column(Modifier.verticalScroll(rememberScrollState()))“ (Ib976b, b/170468083).

  • Neue items(count: Int)-Factory-Methode für den Bereich von LazyColumn/LazyRow/LazyVerticalGrid. items(items: List) und itemsIndexed(items: List) sind jetzt Erweiterungsfunktionen und müssen daher manuell importiert werden. Neue Erweiterungsüberladungen für Arrays: items(items: Array) und itemsIndexed(Array) (I803fc, b/175562574)

  • Verwenden Sie stattdessen „ImeAction.None“.

    • Verwenden Sie ImeAction.Default anstelle von ImeAction.Unspecified (Ie1bcc).
  • TestCoroutineDispatcher in Tests verwenden (I532b6)

  • TextInputService.onStateUpdated wurde in updateState umbenannt (Id4853)

  • Auf TransitionDefinition basierender Übergang wurde eingestellt (I0ac57)

  • „TextUnitType.Inherit“ wurde entfernt. Verwenden Sie stattdessen „TextUnitType.Unspecified“. (I9ff64)

Version 1.0.0-alpha10

13. Januar 2021

androidx.compose.ui:ui-*:1.0.0-alpha10 ist veröffentlicht. Version 1.0.0-alpha10 enthält diese Commits.

Funktionsgefährdende Änderung

  • Durch die Umstrukturierung der internen Compiler-API können Änderungen an den Knoten, die durch die Komposition generiert werden, in der Phase „apply changes“ (Änderungen anwenden) der Komposition zusammengefasst werden, nachdem alle @Composable-Funktionen abgeschlossen sind.

    Dies ist eine Verhaltensänderung, die sich auf Anwendungscode auswirken kann, da Knoten erst nach der Anwendung von Änderungen über interne und experimentelle APIs verfügbar sind. In der Regel lässt sich das Problem umgehen, indem Sie Code mit solchen Abhängigkeiten in eine SideEffect-Composable einfügen, um die Ausführung des Codes aufzuschieben, bis die Knoten erstellt und initialisiert wurden. (I018da)

API-Änderungen

  • „Modifier.focusOrder()“ wurde hinzugefügt. Damit lässt sich eine benutzerdefinierte Reihenfolge für die Fokusverlagerung festlegen (I90cf5, b/175899543, b/170155556, b/170155429).
  • Die Verwendung von „focusObserver“ wurde entfernt. Verwenden Sie stattdessen „onFocusChanged“ oder „onFocusEvent“ (I3ecb9, b/175156387).
  • Änderungen an der EditOperations API
    • „EditOperation“ wurde in „EditCommand“ umbenannt.
    • Befehlssuffix für konkrete Implementierungen von „EditOperation“ hinzugefügt
    • „EditCommand“-Objekte sind keine Datenklassen mehr
    • Die Funktion „EditOperation.process“ wurde in „applyTo“ umbenannt.
    • InputEventListener in InputEventCallback umbenannt
    • (I0a366)
  • Nicht verwendete PxSquared, PxCubed und PxInverse wurden entfernt. „Size.center()“ wurde in ein Attribut geändert. (I973f7)
  • Im ui-test-Modul kann jetzt die Erstellung von Recomposern für zu testende UIs konfiguriert werden (Ibebd8).
  • Die Velocity-Funktion wurde so geändert, dass sie aus Komponenten und mathematischen Operationen besteht. (Ib0447)
  • @ExperimentalTesting wurde in @ExperimentalTestApi umbenannt, um mit ähnlichen experimentellen API-Anmerkungen (Ia4502, b/171464963) übereinzustimmen.
  • Color.useOrElse() wurde in Color.takeOrElse() umbenannt (Ifdcf5)
  • Die nicht verwendeten Klassen „DpInverse“, „DpSquared“ und „DpCubed“ wurden entfernt. (I4d62b)
  • „Constraints#satisfiedBy“ wurde in „isSatisfiedBy“ umbenannt. (I9cf5c)
  • Fügen Sie einen Callback hinzu, um den Inhaber zu benachrichtigen, wenn sich die Grenzen des Layoutknotens ändern. (I72fd1)
  • „isSpecified“, „isUnspecified“ und „useOrElse“ für Inline-Klassen mit einer „Unspecified“-Konstante hinzugefügt. (I93f7b, b/174310811)
  • Erweitern Sie die [Abstract]ComposeView-APIs, um das Wiederverwenden von Compose-basierten Ansichten zu ermöglichen. Die Komposition wird verworfen, um sie später neu zu erstellen. Es wurden APIs zum Installieren und Erkennen von Recomposern mit Fensterbereich und CompositionReferences zum Erstellen von untergeordneten Kompositionen hinzugefügt.

    „ViewCompositionStrategy“ zum Konfigurieren der Strategie zum Entfernen der Komposition von [Abstract]ComposeViews hinzufügen. Das Standardverhalten ist das Entfernen beim Trennen des Fensters. (I860ab)

  • Öffentliche API „Any.identityHashCode()“ entfernt (I025d7)

  • Die API „toStringAsFixed“ wurde entfernt. Stattdessen sollte direkt „String.format“ verwendet werden. (Iaba6b)

  • Schaltfläche zu „foundation/Strings.kt“ hinzufügen (I4a5b7, b/172366489)

  • nativeClass wurde in das UI-Modul verschoben und als intern festgelegt. Die Verwendung von „nativeClass“ in „equals“-Implementierungen wurde aktualisiert, sodass stattdessen „is MyClass“ verwendet wird. (I4f734)

  • „Modifier.focus()“ und „Modifier.focusRequester()“ sind veraltet. Verwenden Sie stattdessen „Modifier.focusModifier()“ und „Modifier.focusReference()“. (I75a48, b/175160751, b/175160532, b/175077829)

  • SelectionRegistrar.notifySelectableChange wurde eingeführt, um SelectionManager über Selectable-Updates zu informieren. (I6ff30, b/173215242)

  • Die Eigenschaft „Outline.bounds“ wurde eingeführt, um das umgebende Rechteck für verschiedene Umrissimplementierungen abzurufen. (I16e74, b/175093504)

  • TestUiDispatcher ist veraltet. Verwenden Sie stattdessen Dispatchers.Main (Ic171f, b/175385255).

  • ImeOptions und KeyboardOptions sind keine Datenklasse mehr (I3c898, b/168684531)

  • Änderungen an der VisualTransformation API

    • „OffsetMap“ in „OffsetMapping“ umbenannt
    • „OffsetMapping.identityOffsetMap“ wurde in „OffsetMapping.Identity“ umbenannt.
    • „PasswordTransformation“ ist keine Datenklasse mehr
    • OffsetMapping in eigene Datei verschoben
    • (I0bdf3)
  • Position in „DpOffset“ umbenannt und „getDistance()“ entfernt (Ib2dfd)

  • Die Funktion Dp.isFinite() wurde in den Wert Dp.isFinite (I50e00) geändert.

Fehlerkorrekturen

  • Recomposer stellt jetzt einen Flow seines aktuellen Status zur Verfügung, sodass seine Aktivität und die Aktivität zugehöriger Effekte überwacht werden können. (Ifb2b9)
  • Auf das native „keyEvent“ kann jetzt über „keyEvent.nativeKeyEvent“ zugegriffen werden (I87c57, b/173086397).
  • animate() wurde durch animateAsState() ersetzt, das anstelle von T ein State<T> zurückgibt. Das ermöglicht eine bessere Leistung, da der Ungültigkeitsbereich auf den Ort eingegrenzt werden kann, an dem der Statuswert gelesen wird. (Ib179e)
  • Fügen Sie die Semantics-Rollen-API hinzu und fügen Sie „Role“ als Parameter für den klickbaren, auswählbaren und umschaltbaren SemanticsModifier hinzu. „Modifier.progressSemantics“ wurde so geändert, dass es auch für „Slider“ verwendet werden kann. (I216cd)
  • Neue coroutinenbasierte API Animatable, die für gegenseitigen Ausschluss zwischen den Animationen sorgt.
    • Neue DecayAnimationSpec zur Unterstützung mehrdimensionaler Decay-Animationen
    • (I820f2, b/168014930)

Version 1.0.0-alpha09

16. Dezember 2020

androidx.compose.ui:ui-*:1.0.0-alpha09 ist veröffentlicht. Version 1.0.0-alpha09 enthält diese Commits.

API-Änderungen

  • Die eingestellte KeyEvent.Alt wurde entfernt. Verwenden Sie stattdessen „KeyEvent.isAltPressed“. (Idd695)
  • Modifier.keyInputFilter und Modifier.previewKeyInputFilter sind veraltet. Verwenden Sie stattdessen Modifier.onKeyEvent und Modifier.onPreviewKeyEvent (Idbf1b, b/175156384).
  • „Modifier.focusObserver“ wird nicht mehr unterstützt. Verwenden Sie stattdessen Modifier.onFocusChanged oder Modifier.onFocusEvent (I30f17, b/168511863, b/168511484).
  • Für das Anhalten von APIs für die Zeigereingabe wurde HandlePointerInputScope in AwaitPointerEventScope und handlePointerInput() in awaitPointerEventScope() umbenannt. (Idf0a1, b/175142755)
  • Die Autofill API ist jetzt eine experimentelle API und erfordert die Einwilligung der Nutzer (I0a1ec).
  • Hinzufügen von Destrukturierungsdeklarationen zum Erstellen von FocuSRequester-Instanzen (I35d84, b/174817008)
  • „accessibilityLabel“ wurde in „contentDescription“ umbenannt. „accessibilityValue“ wurde in „stateDescription“ umbenannt. (I250f2)
  • Benutzerdefinierte Ereignisse wurden aus der API zum Unterbrechen der Zeigereingabe entfernt (Ia54d5, b/175142755)
  • Es wurden mehrere neue Funktionen in SelectionRegistrar eingeführt und onPositionChange wurde in notifyPositionChange umbenannt. (Ifbaf7)
  • Weitere Mitglieder von LayoutNode wurden als intern markiert (I443c6).
  • LayoutInfo wurde für die Verwendung in Tools und Tests eingeführt (I9b190).
  • AndroidOwner made internal (Ibcad0, b/170296980)
  • Annotation „ExperimentalPointerInput“ entfernt (Ia7a24)
  • Verschachteltes Scrollsystem hinzugefügt. Weitere Informationen finden Sie unter Modifier.nestedScroll (I36e15, b/162408885).
  • subcomposeInto(LayoutNode) wurde intern (Id724a)
  • Die Applier-Schnittstelle wurde geändert, um das Erstellen von Bäumen von unten nach oben anstatt von oben nach unten zu vereinfachen.

    Die Methode insert() wurde in insertTopDown() umbenannt.

    Die neue Methode insertBottomUp() wurde hinzugefügt.

    Ein Applier fügt Knoten in den Baum ein, den er bearbeitet, indem er je nach Leistung insertTopDown() oder insertBottomUp() verwendet.

    Einige Bäume, z. B. LayoutNode und View, lassen sich viel effizienter von unten nach oben als von oben nach unten erstellen. Vor dieser Änderung war ein Stapel von Einfügungen erforderlich, um die Bottom-up-Implementierung zu ermöglichen. Dieser musste in jede Applier-Klasse kopiert werden, die eine Bottom-up-Konstruktion für die Leistung benötigte. Mit dieser Änderung wird Applier durch insertBottomUp() überschrieben, um einen Baum von unten nach oben zu erstellen, und insertTopDown(), um den Baum von oben nach unten zu erstellen. (Icbdc2)

  • Die Eigenschaften „dismissOnBackPress“ und „dismissOnClickOutside“ wurden zu „AndroidDialogProperties“ hinzugefügt. Damit lässt sich konfigurieren, wann die Lambda-Funktion „onDismissRequest“ des Dialogfelds aufgerufen wird. (If5e17)

  • Die painterResource API wurde hinzugefügt, um das undurchsichtige Laden von Painter-Objekten aus gerasterten Asset-Formaten (z. B. PNGs) oder VectorDrawables zu ermöglichen. Verbraucher müssen den Asset-Typ nicht mehr im Voraus bestimmen und können diese Methode aufrufen, um ein Painter-Objekt zu erhalten, das in Image-Composables oder Painter-Modifizierern verwendet werden kann. (I2c703, b/173818471)

  • „Modifier.clearAndSetSemantics“ wurde hinzugefügt, um die Semantik von untergeordneten Elementen zu löschen und neue festzulegen. (I277ca)

  • ContentDrawScope wurde in das Modul „ui-graphics“ verschoben, um sich in der Nähe von DrawScope zu befinden. (Iee043, b/173832789)

  • Die PathEffect-Grafik-API wurde eingeführt, um verschiedene Muster für gestrichelte Formen bereitzustellen. Die Verwendung von NativePathEffect wurde zugunsten der expect/actual-Implementierung von PathEffect eingestellt. (I5e976, b/171072166)

  • IdlingResource-Schnittstellen wurden zu Compose hinzugefügt, da sie eine von Compose unterstützte Variante der Espresso-Idling-Ressourcen sind. Sie können über die ComposeTestRule (I433f3) registriert und abgemeldet werden.

  • Globale Registrierung und Aufhebung der Registrierung von ComposeIdlingResource und globaler Registrierung und Aufhebung der Registrierung von Taktgebern in ComposeIdlingResource entfernt (I32660)

Fehlerkorrekturen

  • Lambdas in Offset-Modifizierern geben jetzt IntOffset anstelle von Float zurück. (Ic9ee5, b/174137212, b/174146755)
  • SlotTable, SlotReader und SlotWriter wurden aus der öffentlichen API entfernt. Sie wurden zuvor als „InternalComposeAPI“ gekennzeichnet. Sie sind jetzt intern im Compose-Modul.

    „CompositionData“ und „CompositionGroup“ wurden als Ersatz für die ui-tooling API hinzugefügt, um Kompositionsinformationen zu extrahieren. Diese sind öffentlich, aber nicht für die Verwendung außerhalb der UI-Tooling API vorgesehen, da sie die Rohinformationen liefern, die die UI-Tooling API interpretiert (I31a9c).

  • ShaderBrush wurde so umgestaltet, dass eine Shader-Instanz erst erstellt wird, wenn Größeninformationen der Zeichenumgebung verfügbar sind. Das ist nützlich, um Verläufe zu definieren, die zur Kompositionszeit die gesamten Zeichenbegrenzungen eines Composables einnehmen, ohne dass benutzerdefinierte DrawModifier-Implementierungen erforderlich sind.

    Verworfene Konstruktor-APIs für Gradientenfunktionen zugunsten von Factory-Methoden für ein Gradient-Objekt. (I511fc, b/173066799)

  • Die Funktionen „LazyColumnFor“, „LazyRowFor“, „LazyColumnForIndexed“ und „LazyRowForIndexed“ werden eingestellt. Verwenden Sie stattdessen LazyColumn und LazyRow (I5b48c).

  • BuildCompat.isAtLeastR ist veraltet (Idb37e)

  • Die Factory-Funktion „buildAnnotatedString“ wurde hinzugefügt, um eine „AnnotatedString“ zu erstellen. Die Builder-Funktion „annotatedString“ wurde eingestellt. (Idfe0b)

  • Die Erweiterungsmethoden für Float und Double zum Umrechnen von Werten in Radianten wurden entfernt. Die Funktion wurde in die Implementierung von PathParser verschoben, da sie nur dort verwendet wurde (I25f52).

Version 1.0.0-alpha08

2. Dezember 2020

androidx.compose.ui:ui-*:1.0.0-alpha08 ist veröffentlicht. Version 1.0.0-alpha08 enthält diese Commits.

API-Änderungen

  • Semantik-Aktion „Dismiss“ hinzufügen (I2b706)
  • Die DrawModifier-APIs wurden vom Paket androidx.compose.ui in das Paket androidx.compose.ui.draw verschoben. Die Datei „DrawModifierDeprecated.kt“ wurde erstellt, um Typaliase/Hilfsmethoden für die Migration von den eingestellten zu den aktuellen APIs bereitzustellen. (Id6044, b/173834241)
  • „Modifier.drawLayer“ wurde in „Modifier.graphicsLayer“ umbenannt. Außerdem wurden zugehörige Klassen gemäß API-Feedback in „GraphicsLayer“ aktualisiert. (I0bd29, b/173834241)
  • Die neuen Methoden „placeable.placeWithLayer()“ und „placeable.placeRelativeWithLayer()“ wurden hinzugefügt. Damit können benutzerdefinierte Layouts und Layoutmodifizierer ein untergeordnetes Element platzieren, ohne dass eine Grafikebene für das Zeichnen eingeführt werden muss. So können wir erstens das erneute Zeichnen optimieren. Wenn wir ein untergeordnetes Element verschieben müssen, müssen wir seinen Inhalt nicht neu zeichnen. Zweitens können wir Zeichen-Transformationen für ein untergeordnetes Element anwenden (Ibd8f6, b/170296989, b/171493718, b/173030831).
  • <T> wurde aus der SubcomposeLayout-Deklaration entfernt. Sie können es jetzt verwenden, ohne einen Typ anzugeben. (Ib60c8)
  • Die APIs „Modifier.scale“/„rotate“ wurden als Convenience-Funktionen für „drawLayer“ hinzugefügt.
    • Modifier.drawOpacity wurde umbenannt in Modifier.alpha
    • Modifier.drawShadow wurde in Modifier.shadow umbenannt (I264ca, b/173208140)
  • Die Felder „uptime“ und „position“ von „PointerInputData“ sind jetzt nicht mehr nullable. (Id468a)
  • Mit MaterialTheme werden jetzt die richtigen Farben für Auswahlhandles und den Auswahlhintergrund festgelegt. In Apps, die nicht auf Material basieren, können Sie die Farben für die Auswahl manuell mit AmbientTextSelectionColors anpassen. (I1e6f4, b/139320372, b/139320907)
  • WindowManager.isWindowFocused wurde hinzugefügt, um zu prüfen, ob das Hostfenster im Vordergrund ist, und ein WindowFocusObserver, der einen onWindowFocusChanged-Callback bereitstellt. (I53b2a, b/170932874)
  • Die TransformOrigin API wurde aktualisiert, sodass die Destrukturierungssyntax verwendet wird, um pivotFractionX und pivotFractionY als component1 und component2 zurückzugeben (If43c4, b/173586560).
  • Es wurde eine Lint-Prüfung für die Benennung und Position von zusammensetzbaren Lambda-Parametern hinzugefügt, um die Konsistenz mit den Compose-Richtlinien zu prüfen. Außerdem wurden einige APIs, die children als Namen für ihr nachgestelltes Lambda verwenden, gemäß dem Lint-Check und der Anleitung zu content migriert. (Iec48e)
  • Es wurde eine API hinzugefügt, mit der geprüft werden kann, ob die Modifikatortasten „Alt“, „Strg“, „Meta“ oder „Umschalt“ gedrückt wurden, als ein Key-Event gesendet wurde. (I50ed9)
  • Eine neue Modifier.drawLayer()-Überladung wurde hinzugefügt. Es wird ein Lambda-Block in einem neuen GraphicsLayerScope verwendet, in dem Sie die Ebenenparameter so definieren, dass die Neukomposition und das Neulayout bei einer Zustandsänderung übersprungen werden können. DrawLayerModifier ist jetzt intern, um die Logik in die placeable.placeWithLayer()-Methode von LayoutModifier zu migrieren (I15e9f, b/173030831).
  • Wir haben die verworfenen Ambients mit dem Suffix Ambient durch neue Eigenschaften ersetzt, die mit „Ambient“ beginnen. Dabei haben wir uns an anderen Ambients und den Compose-API-Richtlinien orientiert. (I33440)
  • androidx.compose.ui.text.Typeface wurde nach androidx.compose.ui.text.font.Typeface verschoben (Ic2b81)
  • Das Semantikargument „mergeAllDescendants“ wurde in „mergeDescendants“ umbenannt. (Ib6250)
  • Neuer Drag-Gesten-Erkennungsmechanismus, der die Pointer-Eingabe-API unterbricht, einschließlich der Ausrichtungssperre. (Icef25)
  • VectorAsset wurde in ImageVector umbenannt. VectorAsset wurde in Builder verschoben und umbenannt, um gemäß den API-Richtlinien eine innere Klasse von ImageVector zu sein. Es wurde ein Typalias von VectorAssetBuilder hinzugefügt, um einen Link zu ImageVector.Builder für die Kompatibilität zu erstellen. (Icfdc8)
  • ImageAsset und zugehörige Methoden wurden in ImageBitmap umbenannt. (Ia2d99)
  • zIndex-Parameter für die place()-Funktion von PlacementScope hinzugefügt, sodass Modifier.zIndex() jetzt als LayoutModifier funktioniert und in jedem benutzerdefinierten Layout zIndexes für untergeordnete Elemente direkt im Placement-Block festgelegt werden können (I711f7, b/171493718)
  • Semantische Eigenschaften für die Grundlage in „ui“ verschoben (I6f05c)
  • Die Funktionen „place(Offset)“ und „placeRelative(Offset)“ werden eingestellt. Verwenden Sie stattdessen Überladungen mit int-Offsets (I4c5e7).
  • Zuvor eingestellte APIs wurden entfernt: Modifier.onPositioned wurde entfernt. Verwenden Sie stattdessen Modifier.onGloballyPositioned. „Modifier.onDraw“ wurde entfernt. Verwenden Sie stattdessen „Modifier.onDrawBehind“. Modifier.plus wurde entfernt. Verwenden Sie stattdessen Modifier.then. Color.Unset wurde entfernt. Verwenden Sie stattdessen Color.Unspecified. Die Klasse „PxBounds“ wurde entfernt. Verwenden Sie stattdessen „Rect“. (Ie9d02, b/172562222)
  • Die Schnittstelle für die Ausrichtung wurde aktualisiert und funktionsfähig gemacht. (I46a07, b/172311734)
  • Es wurde ein Gestenerkennungstool für Tippen, Doppeltippen, langes Drücken und Drücken-Anzeigen mit dem neuen suspendierenden Zeigereingabe-Tool hinzugefügt. Außerdem wurden einige Dienstprogramme hinzugefügt, die es Entwicklern erleichtern, eigene Gestenerkennungen zu schreiben. (I00807)
  • id wurde für LayoutIdParentData in layoutId umbenannt. Measurable.id wurde in Measurable.layoutId umbenannt. (Iadbcb, b/172449643)
  • Neuer Multitouch-Gesterkennungsmechanismus, einschließlich Hilfsfunktionen zum Erkennen von Drehen, Zoomen und Schwenken. (Ic459d)
  • Die APIs „SweepGradientShader“ und „SweepGradientBrush“ wurden eingeführt. (Ia22c1)
  • Die Zeitsteuerung in Tests (TestAnimationClock und ihre Verwendung) ist jetzt experimentell (I6ef86, b/171378521).
  • Auf Coroutinen basierende Scrolling-APIs hinzufügen:

    Es wurden LazyListState.snapToItem und LazyListState.smoothScrollBy sowie APIs auf niedrigerer Ebene für die Scrollsteuerung hinzugefügt. Diese APIs bieten eine Suspend-Schnittstelle zum Steuern des Scrollens, die wartet, bis das Scrollen abgeschlossen ist, bevor sie zurückkehrt. (Ie5642)

  • „Modifier.focusable“ wurde in „foundation“ die Eigenschaft „need“ hinzugefügt. Damit können Sie einer Komponente fokussierbares Verhalten mit korrekter Semantik und Barrierefreiheit hinzufügen. (I41eb9, b/152525426, b/162865824)

  • Stellen Sie Standardimplementierungen von Methoden und Eigenschaften in AnimationClockTestRule bereit, die an die clock (I7ea3d, b/173399709) delegiert werden können.

  • AndroidComposeTestRule kann jetzt benutzerdefinierte Activity-Launcher akzeptieren (Ib8288, b/153623653, b/154135019)

  • „TextLayoutResult.getLineVisibleEnd“ wurde eingestellt. Als Ersatz für TextLayoutResult.getLineEnd gibt es jetzt den neuen Parameter visibleEnd. (I73282)

  • Aktualisierte TextFieldValue API

    • TextFieldValue.composition ist jetzt schreibgeschützt
    • Ausnahme für ungültigen Auswahlbereich entfernt (I4a675, b/172239032)
  • Unterstützung von TtsAnnotation für das Text-zu-Sprache-Modul. (I54cc6)

  • Neue APIs zum Ausführen von Animationen in Coroutinen (Ied662)

Fehlerkorrekturen

  • Der Ausrichtungsparameter von „Box“ wurde in „contentAlignment“ umbenannt. (I2c957)
  • „offsetPx“-Modifikatoren wurden in „offset“ umbenannt. Sie akzeptieren jetzt Lambda-Parameter anstelle von „State“. (Ic3021, b/173594846)
  • Der Parameter „resetInput“ wurde TextInputService#onStateUpdated hinzugefügt (I3e8f5, b/172239032, b/171860947).
  • Es wurde eine Lint-Prüfung für Modifier-Parameter in zusammensetzbaren Funktionen hinzugefügt. Bei dieser Lint-Prüfung werden der Name, der Rückgabetyp, der Standardwert und die Reihenfolge des Parameters auf Übereinstimmung mit den Compose-Richtlinien geprüft. (If493b)
  • Vorübergehend hinzugefügte Option, mit der die TestAnimationClock von der MonotonicFrameClock gesteuert werden kann (I1403b, b/173402197)
  • Android-Typeface-Wrapper hinzugefügt. Sie können einen Android-Schriftarttyp über die Funktion typeface laden, z.B. typeface(Typeface.DEFAULT). Außerdem wurde typefaceFromFontFamily() in typeface() umbenannt (I52ab7)
  • Es wurde ein Lint-Check hinzugefügt, um zu prüfen, ob Modifikator-Fabrikmethoden als Erweiterungen für Modifikator definiert sind, damit sie fließend verkettet werden können. (I07981)
  • Altes ui-test-Modul und seine Stubs entfernen (I3a7cb)
  • Recomposer akzeptiert keinen EmbeddingContext mehr. Erforderliche Planungsabhängigkeiten werden aus dem effectCoroutineContext abgerufen. FrameManager ist veraltet. Plattformintegrationen sollten ihre eigene globale Snapshot-Verarbeitung initialisieren. (I02369)
  • Stilinformationen an den Barrierefreiheitsknoten übergeben. (If5e8d)
  • TextUnit.Inherit wurde in TextUnit.Unspecified umbenannt, um die Konsistenz mit anderen Einheiten zu gewährleisten. (Ifce19)

Compose UI-Version 1.0.0-alpha07

11. November 2020

androidx.compose.ui:ui-*:1.0.0-alpha07 ist veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.

API-Änderungen

  • Die Inline-Klasse „ScaleFactor“ wurde eingeführt, um Skalierungsfaktoren für die horizontalen und vertikalen Achsen unabhängig voneinander darzustellen und so Anwendungsfälle mit nicht einheitlicher Skalierung zu unterstützen.
    • Die Methode „computeScaleFactor“ wurde zu „ContentScale“ hinzugefügt.
    • „ContentScale.FillBounds“ wurde hinzugefügt, um eine nicht einheitliche Skalierung durchzuführen, mit der die Quellgrenzen so gestreckt werden, dass das Ziel vollständig ausgefüllt wird.
    • Es wurden Operatormethoden zum Berechnen von ScaleFactor-Parametern mit Size-Parametern hinzugefügt.
    • (Ic96a6, b/172291582)
  • Die Factories „BiasAlignment“ und „BiasAbsoluteAlignment“ zum Erstellen von Alignments wurden hinzugefügt. (Iac836, b/169406772)
  • Entwicklern erlauben, den Fokus zu erzwingen (I90372)
  • Ein Fehler wurde behoben, der dazu führte, dass die Erhebung für Ansichten in Compose nicht gezeichnet wurde. (If7782)
  • Die API „onDrawBehind“ wurde in „ContentDrawScope“ erstellt, um der Namenskonvention von „Modifier.drawBehind“ zu entsprechen. (I4fc3a, b/171955269)
  • Unterstützung für die Kameradistanz wurde hinzugefügt, um die 3D-Transformationen „rotationX“/„rotationY“ in Layer-APIs zu ergänzen. (I40213, b/171492100)
  • SelectionContainer ohne den Callback hinzugefügt (Ibfadb)
  • Die Annotation „ExperimentalSubcomposeLayoutApi“ wurde entfernt. SubcomposeLayout kann jetzt ohne @OptIn verwendet werden (I708ad)
  • FirstBaseline und LastBaseline wurden in das Paket androidx.compose.ui.layout verschoben (Ied2e7).
  • Die Deckkraft wurde aus dem Modifier „drawShadow()“ entfernt, da sie verwirrend war. (I82c62, b/171624638)
  • „MeasureResult“ wurde aus „MeasureScope“ verschoben. (Ibf96d, b/171184002)
  • Mehrere layoutbezogene Symbole wurden von androidx.compose.ui nach androidx.compose.layout.ui verschoben. (I0fa98, b/170475424)
  • Entfernung von FocusState2 (I686cb, b/168686446)
  • ZIndexModifier ist jetzt intern (I1808b, b/171493718)
  • Der Rückgabetyp der Methode „lerp“ für Größenparameter wurde aktualisiert, sodass eine nicht leere Größe zurückgegeben wird, um unnötiges Boxing zu vermeiden. (Ib0044)
  • TestMonotonicFrameClock wurde hinzugefügt, um Code zu testen, der auf MonotonicFrameClock von Compose angewiesen ist, um Kompositions-Frame-Ereignisse mit runBlockingTest von kotlinx-coroutines-test abzuwarten (I4402f).
  • GestureScope.localToGlobal entfernt (I15299, b/171462785)
  • onAllNodesWithSubstring-Finder hinzugefügt (I81dd7, b/171462889)
  • Das Modul „androidx.ui.test“ wurde eingestellt. Bitte migrieren Sie zu androidx.compose.ui.test und androidx.compose.ui.test.junit4 (I452e8).

Fehlerkorrekturen

  • „captureToBitmap“ wurde zu „captureToImage“ verschoben. (I86385)
  • foundation.Text wurde eingestellt und durch material.Text ersetzt. Eine einfache Text-API, die keine Werte aus einem Theme verwendet, finden Sie unter androidx.compose.foundation.BasicText. (If64cb)
  • TextFields für die Akzeptanz von KeyboardOptions aktualisieren (Ida7f3)
  • „KeyboardOptions“ in „ImeOptions“ umbenennen (I82f36)
  • „KeyboardType“ und „ImeAction“ wurden in „KeyboardOptions“ verschoben (I910ce)
  • „provideDefault“ wurde als Alternative zum Bereitstellen von Umgebungsdaten hinzugefügt. Damit können Sie Umgebungsdaten angeben, die nur festgelegt werden, wenn noch keine Umgebungsdaten vorhanden sind. (Id6635, b/171024925)
  • BaseTextField wurde eingestellt. Verwenden Sie stattdessen „BasicTextField“. (I896eb)
  • Einführung des Moduls „ui-test-junit4“ (Ib91f8)
  • relativePaddingFrom wurde in paddingFrom umbenannt. Der Modifikator paddingFromBaseline wurde hinzugefügt, um die Angabe von Abständen von Layoutgrenzen zu Textgrundlinien zu vereinfachen. (I0440a, b/170633813)
  • „LaunchedTask“ wurde aus Konsistenzgründen mit den APIs „SideEffect“ und „DisposableEffect“ in „LaunchedEffect“ umbenannt. LaunchedEffect ohne subject-Parameter ist nicht zulässig, um Best Practices zu fördern. (Ifd3d4)
  • Die zusammensetzbare Funktion „resources“ wurde eingeführt, die neu zusammengesetzt wird, wenn sich die Konfiguration ändert. (I6387c, b/167352819)
  • Recomposer erfordert jetzt beim Erstellen einen CoroutineContext (Ic4610)
  • zIndex-Werte summieren, wenn mehrere Modifier.zIndex() angewendet werden. Bisher hat die erste Variante gewonnen. (Ic514c, b/170623936)
  • Änderungen an der internen SlotTable-Implementierung, die sich nicht auf die öffentliche API auswirken sollten. (If9828)
  • IME-Option für die automatische Korrektur der Tastatur hinzugefügt (I57b8d)
  • androidx.ui.test wurde zu androidx.compose.ui.test verschoben (I9ffdb)
  • „KeyboardOptions.toImeOptions“ aus der öffentlichen API entfernt. (Ic2e45)

Externer Beitrag

  • Veröffentlichung des internen Artefakts androidx.compose.ui:ui-text-android (Ib93fa) deaktiviert

Version 1.0.0-alpha06

28. Oktober 2020

androidx.compose.ui:ui-*:1.0.0-alpha06 ist veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.

API-Änderungen

  • „Recomposer“ ist jetzt eine „CompositionReference“ und ein gültiges übergeordnetes Element für die Komposition. Der explizite Recomposer ist jetzt an weniger Stellen erforderlich. (I4036f)
  • VectorPainter wird zugunsten von rememberVectorPainter eingestellt, um besser zu verdeutlichen, dass die zusammensetzbare API intern „remember“ verwendet, um Daten über Kompositionen hinweg beizubehalten. (Ifda43)
  • Die Modifier.drawWithCache API wurde aktualisiert, um ContentDrawScope als Empfängerbereich anstelle von DrawScope verfügbar zu machen. So können Implementierungen Zeichenbefehle neu anordnen. Das ist nützlich für Anwendungsfälle, in denen Inhalte überblendet oder getönt werden sollen und die Inhaltspixel zuerst gerendert werden müssen, damit der entsprechende Algorithmus für den Mischmodus richtig angewendet werden kann. (Ie7ec8)
  • SimpleContainer in PopupTestUtils.kt verschieben (I78c57)
  • „ConsumedData“ ist keine Datenklasse mehr. Weitere Informationen finden Sie unter https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f).
  • Position des RTL-Handles korrigieren. (I6e1e0)
  • DrawScope und ContentDrawScope wurden als Interfaces anstelle von abstrakten Klassen refaktoriert.
    • CanvasDrawScope-Implementierung von DrawScope erstellt
    • Implementierungen von DrawScope wurden so umgestaltet, dass stattdessen CanvasScope verwendet wird.
    • DrawContext wurde erstellt, um Abhängigkeiten für DrawScope zu umschließen.
    • Veraltete Methoden in DrawScope (I56f5e) entfernt
  • Wichtige Änderung: Der Rückgabewert wurde aus PointerInputFilter.onPointerEvent(...) entfernt, da der einzige Wert, der in Zeigerereignissen geändert werden kann, Verbrauchsdaten sind. Anstatt Daten aus PointerInputFilter.onPointerEvent(...) zurückzugeben, können Sie jetzt einfach die Verbrauchsdaten der übergebenen PointerEvents ändern. (I6acd0)
  • MeasureScope und IntrinsicMeasureScope wurden zu Schnittstellen. (I1a087, b/170461665)
  • Die Zusammenführungsfunktion für AlignmentLine wurde ausgeblendet. (I9da1a, b/170612900, b/170611568)
  • Möglichkeit hinzugefügt, Inspektordaten in zusammengesetztem Modifier anzugeben (Idee08, b/163494569)
  • Die Option „Alle auswählen“ wurde dem Auswahlmenü hinzugefügt (Ief02b).
  • Die Funktion „DrawTransform.rotate“ wurde aktualisiert, sodass sie einen Standard-Pivot-Parameter vom Typ „center“ verwendet, um der Dokumentation zu entsprechen.
    • DrawScope.rotateRad wurde aktualisiert, um einen Offset für den Drehpunkt zu verwenden, damit er anderen Transformationsmethoden entspricht.
    • Die überladene DrawScope.rotateRad-Funktion, die Gleitkommazahlen für die x- und y-Koordinate des Drehpunkts verwendet hat, ist veraltet.
    • (Iffcbb, b/170434992)

Fehlerkorrekturen

  • Der API-Lint-Check für MissingGetterMatchingBuilder ist für androidx aktiviert (I4bbea, b/138602561).
  • Fügen Sie einen Test hinzu. (I6b8ae)
  • Übergänge in ComposeTestRule aktivieren; Option zum Aktivieren des blinkenden Cursors aus ComposeTestRule entfernen. (If0de3)
  • IME-Option „KeyboardCapitalization“ hinzugefügt (I8ac38)
  • CoreTextField wurde die Option für einzeilige Tastaturen hinzugefügt (I72e6d)
  • SimpleContainer in PopupTestUtils.kt verschieben (I65c3e)
  • Die Radius API wurde in CornerRadius umbenannt, um besser zu verdeutlichen, wie sie in Compose verwendet wird. Die Dokumentation wurde aktualisiert, um darauf hinzuweisen, dass negative Eckenradien auf null begrenzt werden. (I130c7, b/168762961)
  • Verbesserte Android-Interoperabilität durch das fortgesetzte Senden von MotionEvents an untergeordnete Android-Ansichten, die für alle Aktionen außer ACTION_DOWN (I94c5a, b/170320973) „false“ für onTouchEvent zurückgeben.
  • Box wurde zu einer Inline-Funktion gemacht. (Ibce0c, b/155056091)

Externer Beitrag

  • Unterstützung verschiedener Sprachen für AnnotatedString.capitalize und AnnotatedString.decapitalize (I4aa7f)

Version 1.0.0-alpha05

14. Oktober 2020

androidx.compose.ui:ui-*:1.0.0-alpha05 ist veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.

API-Änderungen

  • DSL zum Angeben von Informationen zum Prüfer hinzufügen (Ic9a22)
  • Verschiebe „LongPress“ in „Text“. (Iff2bc)
  • Experimenteller Modifier.pointerInput-Modifier für das Anhalten von Eingaben (Ia77d2)
  • Bedienungshilfen für Kopieren, Einfügen und Ausschneiden hinzugefügt (I6db4f)
  • Öffentlicher Konstruktor für AndroidOwner wurde entfernt (Iacaef)
  • Pop-ups und Dialogfelder übernehmen jetzt FLAG_SECURE vom übergeordneten Fenster. Außerdem wurde eine Option zum expliziten Konfigurieren hinzugefügt (I64966, b/143778148, b/143778149).
  • Verbrauchsdaten können jetzt geändert werden. Außerdem wird bei Aufrufen von Erweiterungsfunktionen, die den Verbrauch betreffen, nicht mehr ein neues PointerInputChange-Objekt zurückgegeben, sondern das bereitgestellte PointerInputChange-Objekt wird geändert.

    Dies ist der erste Schritt in einem zweistufigen Prozess, um PointerEvent-Daten veränderbar zu machen, sodass andere Zeigerdaten nicht durch Nutzercode bearbeitet werden können. Im zweiten Schritt wird der Rückgabetyp List<PointerInputChange> aus PointerInputFilter.onPointerEvent(...) entfernt. (Id067e)

  • „Auswahl im Text“ deaktivieren und Demo (Ie7e97)

  • „onGloballyPositioned“ zu einer Inline-Funktion gemacht (I15830)

  • OnPositionedModifier wurde in OnGloballyPositionedModifier und onPositioned() in onGloballyPositioned() umbenannt. (I587e8, b/169083903)

  • Die Property „hasPendingMeasureOrLayout“ wurde „Owner“ hinzugefügt, um anzugeben, ob für den Eigentümer ausstehende Layoutarbeiten vorhanden sind. (I3d9f8, b/169038599)

  • API zum programmatischen Entfernen des Fokus hinzugefügt (Ie1dc2, b/161487952)

  • PointerInputFilter.onPointerInput(...) wurde entfernt. Verwenden Sie stattdessen PointerInputFilter.onPointerEvent(...). (I6f04a)

  • Änderungen an der Größe

    • Size.getFlipped wurde entfernt
    • „Size.rem“ entfernt
    • „Size.truncDiv“ entfernt (Ief44d, b/169790720)
  • Im Rahmen der Standardisierung von Sentinel-Werten für Inline-Klassen wird „Color.Unset“ in „Color.Unspecified“ umbenannt, um die Konsistenz mit anderen Inline-Klassen zu gewährleisten (I97611, b/169797763).

  • „TextOverflow.None“ wird eingeführt. Wenn „overflow“ auf „None“ gesetzt ist, wird kein Überlauf mehr verarbeitet und die tatsächliche Größe wird an „LayoutNode“ gemeldet. (I175c9, b/158830170)

  • Der Parameter „scope“ in „AnnotatedString.Builder.addStringAnnotation“ wurde aus Gründen der API-Konsistenz in „tag“ umbenannt. (I7c8cb)

Fehlerkorrekturen

  • Die Scrollleistung von LazyColumn/Row wird verbessert, da bei jedem Scrollvorgang weniger Arbeit in der Unterkomposition anfällt. Für die Klasse „Composition“ wurde die neue Methode „hasInvalidations()“ hinzugefügt. Die Methode „hasPendingChanges()“ aus „Recomposer“ wurde in „hasInvalidations()“ umbenannt (Ib2f32, b/168293643, b/167972292, b/165028371).
  • Die Parameter „Size.Unspecified“ wurden von „Float.POSITIVE_INFINITY“ zu „Float.NaN“ aktualisiert. Die Painter-Implementierungen wurden aktualisiert, um auch Size.Unspecified und nicht endliche Größen zu berücksichtigen. (I95a7e)
  • Die Reihenfolge der place()-Aufrufe in benutzerdefinierten Layouts bestimmt jetzt die Zeichenreihenfolge für die untergeordneten Elemente (Ibc9f6).
  • Unterstützung der Konvertierung von AnnotatedString in SpannableString für die Barrierefreiheit. (Ief907)
  • Es wurden Stubs für Android-Klassen hinzugefügt, die auf älteren Plattformen vorhanden sind, um nach Möglichkeit die Verwendung von Reflection zu vermeiden. (Ia1790)
  • Fehler behoben: Wenn die Softwaretastatur angezeigt wurde und die App dadurch übersetzt wurde, waren die Koordinaten für die Zeigereingabe falsch. (Ic4cec, b/163077821)

Version 1.0.0-alpha04

1. Oktober 2020

androidx.compose.ui:ui-*:1.0.0-alpha04 ist veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.

API-Änderungen

  • „OwnerScope“ wurde hinzugefügt, um die Erfassung von Layout- und Zeichenbeobachtungsbereichen zu ermöglichen, sobald sie nicht mehr gültig sind. (Ic4cf8)
  • „OnRemeasuredModifier“ und „onSizeChanged()“ wurden hinzugefügt, um einen Callback zu erhalten, wenn das Inhaltslayout neu gemessen wurde bzw. sich die Größe geändert hat. (I657cf, b/154108792)
  • Aktion für langes Klicken hinzufügen (I6281b, b/156468846)
  • FocusManager wurde als privat gekennzeichnet. (I7872f)
  • Die Implementierung wurde aktualisiert, um eine dedizierte DrawCacheModifier-Implementierung zu erstellen, anstatt optionale Eigenschaften in DrawModifier hinzuzufügen.

    Aktualisierte Dokumentation für verschiedene Methoden (Ibd166)

  • Machen Sie TextRange inline, um die Objekterstellung zu vermeiden. (Id034b)

  • PlacementScope#parentWidth und PlacementScope#parentLayoutDirection können nicht mehr aus dem Placement-Block eines benutzerdefinierten Layouts gelesen werden. (Icc1ae, b/168295623)

  • „AccessibilityScrollState“ zu Semantik-Properties hinzugefügt. (Ifeda9)

  • „Modifier.drawWithCache“ wurde eingeführt, um die Erstellung eines Zeichenobjekts zu unterstützen, das Abhängigkeiten, die von Größen-/Zustandsinformationen abhängen, bedingt neu erstellt (I376dc).

  • „ParagraphConstraints“ wird entfernt. Die Breite wird jetzt direkt an „Paragraph“ übergeben. (Ica712)

Fehlerkorrekturen

  • Viele Grafik-APIs wurden aktualisiert.
    • Die APIs für die Skalierungs- und Rotations-Transformation wurden aktualisiert, sodass sie einen einzelnen Offset-Parameter für die Darstellung der Pivot-Koordinate anstelle separater Gleitkommaparameter für die x-/y-Koordinaten in DrawScope und DrawTransform verwenden.
    • Die Methoden „Rect.expandToInclude“ und „Rect.join“ wurden entfernt.
    • Die Dokumentation zum Radius wurde aktualisiert und enthält jetzt neben „elliptisch“ auch „oval“.
    • Dokumentation hinzugefügt, um darauf hinzuweisen, dass der öffentliche Konstruktor für die Inline-Klasse „Radius“ nicht direkt aufgerufen werden darf, sondern Radius-Objekte über ihre Funktionskonstruktoren instanziiert werden müssen.
    • Die RoundRect-APIs zum Abfragen von topRight, bottomRight, bottomCenter usw. wurden entfernt.
    • Rect.shift zugunsten von Rect.translate eingestellt
    • Die APIs „RoundRect.grow“ und „Rect.shrink“ wurden entfernt.
    • RoundRect.outerRect wurde in Rect.boundingRect umbenannt.
    • Die Methoden „RoundRect.middleRect/tallMiddleRect/wideMiddleRect“ und „Rect.isStadium“ wurden entfernt.
    • „RoundRect.longestSide“ wurde in „RoundRect.maxDimension“ umbenannt.
    • RoundRect.shortestSide wurde in RoundRect.minDimension umbenannt.
    • RoundRect.center ist jetzt ein Attribut und keine Funktion mehr
    • Der RoundRect-Konstruktor wurde aktualisiert, sodass er Radius-Eigenschaften anstelle von einzelnen Parametern für x-/y-Radiuswerte verwendet.
    • Größen-APIs entfernt, bei denen davon ausgegangen wurde, dass es sich um ein Rechteck mit dem Ursprung bei 0,0 handelt
    • Destrukturierungs-API zu Radius hinzugefügt
    • Verschiedene RoundRect-Erweiterungsfunktionen wurden zu Eigenschaften migriert.
    • (I8f5c7, b/168762961)
  • foundation.Box wurde eingestellt. Verwenden Sie stattdessen foundation.layout.Box. (Ie5950, b/167680279)
  • „Stack“ wurde in „Box“ umbenannt. Die bisherige Box wird zugunsten der neuen Box in compose.foundation.layout eingestellt. Im neuen Box-Element werden untergeordnete Elemente übereinander gestapelt, wenn es mehrere untergeordnete Elemente enthält. Das ist anders als beim vorherigen Box-Element, das sich ähnlich wie eine Spalte verhalten hat. (I94893, b/167680279)
  • Die Parameter für die Box-Dekoration wurden eingestellt. Wenn Sie Dekorationen/Abstände für Ihre Box festlegen möchten, verwenden Sie stattdessen Modifiers (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279).
  • Viele Grafik-APIs wurden aktualisiert.
    • Die DrawScope-APIs wurden mit Methoden für Transformationen mit Bereich aktualisiert, um anzugeben, dass die Transformation nur innerhalb des Callbacks angewendet und nach dem Aufrufen des Callbacks entfernt wird.
    • Die clipPath-Dokumentation wurde aktualisiert, um auf „Path“ anstelle von „rounded rectangle“ zu verweisen.
    • Abstand in der Dokumentation für den rechten Parameter in „clipPath“ wurde korrigiert.
    • DrawScope.drawCanvas wurde in drawIntoCanvas umbenannt und der Größenparameter wurde entfernt.
    • Die dx/dy-Parameter in der Inset-Methode wurden in „horizontal“ und „vertical“ umbenannt.
    • Es wurde eine zusätzliche Inset-Überladung hinzugefügt, die allen vier Grenzen denselben Inset-Wert zuweist.
    • Dokumentation zur Inset-Methode entfernt, in der angegeben wurde, dass Inset auf alle vier Seiten angewendet wird
    • Aktualisierte Dokumentation für die Klasse „Rect“
    • Kommentare zu Rect-Parametern aktualisiert, um dem kdoc-Stil zu entsprechen
    • Rect.join und Rect.expandToInclude entfernt
    • Überladung für Rect.translate(offset) erstellt und Rect.shift eingestellt
    • (If086a, b/167737376)
  • Annotate rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled and textInputServiceFactory with @VisibleForTesting, make them internal API and hide their kdoc (I554eb, b/168308412)
  • Entfernen Sie „SelectionContainer“ aus dem oberen Bereich, um die Standardauswahl zu deaktivieren und unerwartetes Verhalten zu vermeiden. Stattdessen kann ein SelectionContainer verwendet werden, um den auswählbaren Inhalt einzuschließen. (I8dfe0, b/158459594)

Version 1.0.0-alpha03

16. September 2020

androidx.compose.ui:ui-*:1.0.0-alpha03 ist veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.

API-Änderungen

  • Entfernen Sie die semantischen Aktionen zum Vor- und Zurückscrollen. Schritte in AccessibilityRangeInfo hinzugefügt. (Ia47b0)
  • onInvalidate() aus Owner entfernt – OwnedLayer übernimmt die Ungültigmachung. (Ica72b, b/162061312)
  • Es wurden Operatormethoden in der Size API entfernt, die Offset-Parameter verwenden. Das Ergebnis dieser Vorgänge ist unklar und der Ergebnistyp ist unerwartet. Sollte „size – offset“ beispielsweise ein Offset- oder ein Größenresultat mit der Differenz zurückgeben?

    Außerdem wurden veraltete Methoden in der Größenklasse entfernt. (Iec902, b/166514214)

Fehlerkorrekturen

  • Problem behoben, bei dem Elemente von LazyColumn manchmal falsch gezeichnet wurden. Dies führte unter bestimmten Bedingungen auch zu Abstürzen. (Ibcf17, b/163066980, b/165921895)
  • DpConstraints und APIs, die sie verwenden, wurden eingestellt. (I90cdb, b/167389835)
  • createAndroidComposeRule und AndroidInputDispatcher wurden von androidx.ui.test.android nach androidx.ui.test verschoben (Idef08, b/164060572)
  • Die Verwendung von „gravity“ wurde in Layout-APIs einheitlich in „align“ oder „alignment“ umbenannt. (I2421a, b/164077038)
  • „onNode“ und andere globale Methoden wurden in „ComposeTestRule“ hinzugefügt, da die aktuellen globalen Methoden demnächst eingestellt werden. (Ieae36)

Version 1.0.0-alpha02

2. September 2020

androidx.compose.ui:ui-*:1.0.0-alpha02 ist veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.

API-Änderungen

  • Entfernen Sie den Callback, um den Eigentümer zu benachrichtigen, wenn sich die Grenzen des Layoutknotens ändern. (If654e, b/166106882)
  • Unterstützung für filltype-Parameter für Vektorgrafikpfade hinzugefügt, um Ausschnitte von Formen gemäß den Regeln für das Füllen von Pfaden „evenOdd“ oder „NonZero“ zu unterstützen. (I43dd2)
  • Uptime und Velocity sind jetzt Inline-Klassen (I48f4a)
  • „Duration“ ist jetzt eine Inline-Klasse (I565eb)
  • Fügen Sie einen Callback hinzu, um den Inhaber zu benachrichtigen, wenn sich die Grenzen des Layoutknotens ändern. (Ic40b3)
  • Ein Problem wurde behoben, bei dem der Rect-Funktionskonstruktor mit Offset und Radius das Rechteck in der Reihenfolge „links, rechts, oben, unten“ anstelle von „links, oben, rechts, unten“ erstellt hat.

    Veraltete Companion-Methoden für „Rect“ wurden zugunsten von Funktionskonstruktoren entfernt.

    Es wurden Tests hinzugefügt, um Methoden in Rect.kt zu überprüfen. (I08460, b/165822356)

Fehlerkorrekturen

  • MutableRect wurde hinzugefügt, ein Rechteck, das geändert werden kann. (I71bd2, b/160140398)
  • Matrix4 wurde durch Matrix ersetzt. Alle anderen Teile des Vectormath-Pakets wurden entfernt. (Ibd665, b/160140398)
  • Die Aufrufkonvention für zusammensetzbare Funktionen hat sich geändert. Dies ist eine binäre funktionsgefährdende Änderung. Alle Bibliotheken müssen neu kompiliert werden, damit sie mit dieser Version des Compose-Compiler-Plug-ins funktionieren.

    Diese Änderung führt nicht zu einer Quellcode-Inkompatibilität, da nur Compiler-APIs geändert wurden, für die eine explizite Einwilligung erforderlich ist. (I7afd2, b/158123185)

  • Ein Absturz wurde behoben, der auftreten konnte, wenn das Senden an einen PointerInputFilter dazu führen konnte, dass der PointerInputFilter synchron entfernt wurde. (I58f25)

Version 1.0.0-alpha01

26. August 2020

androidx.compose.ui:ui-*:1.0.0-alpha01 ist veröffentlicht. Version 1.0.0-alpha01 enthält diese Commits.

Version 0.1.0-dev

Version 0.1.0-dev17

19. August 2020

androidx.compose.ui:ui-*:0.1.0-dev17 ist veröffentlicht. Version 0.1.0-dev17 enthält diese Commits.

API-Änderungen

  • emitView wurde eingestellt. Verwenden Sie nach Möglichkeit AndroidView, um Views in Compose auszugeben. Das direkte Zusammensetzen von Views und ViewGroups wird in Zukunft nicht mehr unterstützt, es sei denn, es handelt sich um Blätter im Kompositionsbaum. In diesem Fall kann dies mit AndroidView erreicht werden. (I29b1e, b/163871221)
  • FocusState2 ist eingestellt und wird durch FocusState ersetzt (Ia8b79, b/160822876, b/160923332)
  • Die verworfenen AndroidView-Überladungen wurden entfernt. (I946b9, b/163802393)
  • Bei benutzerdefinierten Emits kann jetzt deklariert werden, dass einer oder mehrere Setter übersprungen und unabhängig vom Emit neu zusammengesetzt werden können. (Ibbd13)
  • Vektorklassen sind keine Datenklassen mehr, da dieselbe Objektinstanz für die Komposition verwendet wird.

    Das Flag „mutableStateOf“ für „VectorPainter“ wurde hinzugefügt, um das Neuzeichnen bei Änderungen am Vektorinhalt zu ermöglichen.

    Die VectorComponent-Instanz wurde so umgestaltet, dass sie Teil von VectorPainter ist, da sie in verschiedenen Kompositionen wiederverwendet wird.

    Die Namensfelder von GroupComponent und PathComponent wurden so aktualisiert, dass sie geändert werden können (Ieae45, b/151378808).

  • onChildPositioned und OnChildPositionedModifier wurden entfernt. Entwickler sollten stattdessen onPositioned und OnPositionedModifier im untergeordneten Layout verwenden. (I4522e, b/162109766)

  • „Offset“ ist jetzt eine Inline-Klasse (Iaec70)

  • Der SelectionContainer wurde ein Modifikatorparameter hinzugefügt (I4aada, b/161487952).

  • Entfernung des eingestellten FocusModifier (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)

  • Die Lambda-Funktion mergePolicy wurde zu SemanticsPropertyKey hinzugefügt. Damit kann eine benutzerdefinierte Richtlinie für das Zusammenführen von untergeordneten Elementen definiert werden. Standardmäßig wird der übergeordnete Wert verwendet, sofern er bereits vorhanden ist, andernfalls der untergeordnete Wert. (Iaf6c4, b/161979921)

  • „Constraints“ ist jetzt eine Inline-Klasse (I88736)

  • FocusManager wurde hinzugefügt, um die allgemeine Fokuslogik aus AndroidComposeView zu entfernen (I528ef, b/161487952, b/162206799)

  • Aktualisierte PointerEventPass-Namen für die Alphaversion. (Ifda6f)

  • IntOffset ist jetzt eine Inline-Klasse (Iac0bf)

  • IntSize ist jetzt eine Inline-Klasse (I2bf42).

  • PlacementScope.placeAbsolute() wurde in PlacementScope.place() umbenannt und das vorherige PlacementScope.place() wurde in PlacementScope.placeRelative() umbenannt. Daher wird PlacementScope.place() die Position in Kontexten mit Leserichtung von rechts nach links nicht mehr automatisch gespiegelt. Wenn dies gewünscht ist, verwenden Sie stattdessen PlacementScope.placeRelative(). (I873ac, b/162916675)

  • AlertDialog verwendet jetzt FlowRow für Schaltflächen (I00ec1, b/161809319, b/143682374)

  • Einige Testdienstprogramme wurden als nicht öffentlich festgelegt, da sie sich nicht am richtigen Ort befinden. Wird in Zukunft veröffentlicht. (I32ab1)

  • Refaktorierte Organisation des Zeigereingabecodes. (Ie3f45)

  • PxBounds wurde zugunsten von Rect eingestellt. Alle Verwendungen von PxBounds wurden durch Rechtecke ersetzt und es wurden entsprechende Annotations für die Einstellung und den Ersatz hinzugefügt, um die Migration zu erleichtern. (I37038, b/162627058)

  • Das verworfene KeyEvent2 wurde entfernt. Verwenden Sie stattdessen „KeyEvent“. (Ied2d0, b/162097587)

  • KeyEvent hat eine Unicode-Eigenschaft, mit der das Unicode-Zeichen abgerufen werden kann, das durch die angegebene Kombination aus Taste und Meta-Taste generiert wird (If3afc).

  • Das benutzerdefinierte Ereignis „DelayUp“ und die zugehörigen Klassen sind jetzt eine Opt-in-API, da sie sehr wahrscheinlich geändert werden. (I56d6f)

  • Es wurden zwei PointerEventPasses entfernt, die nicht mehr benötigt werden. (I3dd9d)

  • Fügen Sie die Parameter „color“, „shadow“ und „TextDecoration“ zu „Paragraph.paint“ hinzu. Diese Funktion ist nützlich, um unnötige Neuerstellungen von „Paragraph“ zu vermeiden. (I81689)

Fehlerkorrekturen

  • „onFocusChanged“-Callbacks aus „TextField“ entfernt. Verwenden Sie stattdessen „Modifier.focusObserver“. (I51089, b/161297615)
  • „Modifier.drawBorder“ wurde eingestellt. Verwenden Sie stattdessen „Modifier.border“. Die Border-Datenklasse wurde durch BorderStroke ersetzt (I4257d, b/158160576).
  • Nicht mehr unterstützte FrameManager-Aufrufe wurden entfernt.

    Interne Compose-APIs wurden geändert, um den Aufwand für die Nachverfolgung von Statusobjekten wie mutableStateof() (I80ba6) zu reduzieren.

  • VerticalScroller und HorizontalScroller wurden entfernt. Verwenden Sie stattdessen „ScrollableColumn“/„Row“. Modifier.drawBackground wurde entfernt. Modifier.background verwenden (I73b0d, b/163019183)

  • Ein Absturz, der auftrat, wenn innerhalb der For-Schleife etwas verwendet wurde, das den Status speichert, wurde behoben. Da jetzt derselbe Schlüssel in savedInstanceState() zulässig ist, wurde die API von UiSavedStateRegistry an diese neue Anforderung angepasst (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561).

  • Die zusammensetzbare Funktion state { ... } wird jetzt zugunsten expliziter Aufrufe von remember { mutableStateOf(...) } eingestellt, um die Übersichtlichkeit zu verbessern. Dadurch wird die gesamte API-Oberfläche und die Anzahl der Konzepte für die Statusverwaltung reduziert und entspricht dem by mutableStateOf()-Muster für die Delegierung von Klassenattributen. (Ia5727)

  • RRect wurde in RoundRect umbenannt, um besser zu den Namensmustern von Compose zu passen. Es wurden ähnliche Funktionskonstruktoren für RRect erstellt und die RRect-Funktionskonstruktoren wurden als veraltet eingestuft (I5d325).

Version 0.1.0-dev16

5. August 2020

androidx.compose.ui:ui-*:0.1.0-dev16 ist veröffentlicht. Version 0.1.0-dev16 enthält diese Commits.

API-Änderungen

  • „OnChildPositioned“ wurde eingestellt. Verwenden Sie stattdessen OnPositioned für das untergeordnete Element. (I87f95, b/162109766)
  • setViewContent wurde eingestellt. Verwenden Sie stattdessen setContent. (I7e497, b/160335130)
  • Die AndroidViewBinding API zum Einbinden und Erstellen von Layoutressourcen basierend auf ViewBinding wurde hinzugefügt. (I081c6)
  • KeyEvent2 wird durch KeyEvent ersetzt (I2d770, b/162097585)
  • Unterstützung für die Alt-Hardwaretaste hinzugefügt (I9036b)
  • FocusManager wird nicht mehr unterstützt. Verwenden Sie stattdessen „Modifier.focus()“, „Modifier.focusObserver()“ und „Modifier.focusRequester()“. (I74ae4, b/162211322)
  • „loadVectorResource“ unterstützt „trimPath“-Attribute (I808fe)
  • Dialogfeld in die Benutzeroberfläche verschieben (I47fa6)
  • Es wurden zwei PointerEventPasses entfernt, die nicht mehr benötigt werden. (I33ca7)
  • PointerInteropModifier wurde implementiert, um MotionEvents zu empfangen und mit Compose zu interagieren, als ob Sie eine Implementierung einer Android-View wären. (Ieb08c)
  • Der nicht mehr weitergeführte Tag-Modifikator wurde entfernt. Verwenden Sie stattdessen „layoutId“. (Idaa05, b/162023919)
  • Die APIs für die Unterstützung von Sprachen, die von rechts nach links geschrieben werden, wurden aktualisiert. „LayoutDirectionAmbient“ wurde hinzugefügt. Damit kann die Layoutrichtung gelesen und geändert werden. Modifier.rtl und Modifier.ltr wurden entfernt. (I080b3)
  • Unterstützung für das Kürzen von Pfaden in Vektorgrafiken (Ie16c9, b/158188351)
  • „Modifier.layout()“ wurde hinzugefügt, um das Erstellen eines benutzerdefinierten Layout-Modifiers zu vereinfachen (I73b69, b/161355194).
  • Wir haben eine neue AndroidView-API hinzugefügt und die vorhandenen APIs eingestellt. (I5bcfd)
  • „Modifier.plus“ wurde eingestellt. Verwenden Sie stattdessen „Modifier.then“. „Dann“ ist ein stärkeres Signal für die Reihenfolge und verhindert gleichzeitig die Eingabe von Modifier.padding().background() + anotherModifier, was die Kette unterbricht und schwerer lesbar macht (Iedd58, b/161529964).
  • Fügen Sie [Abstract]ComposeView-Unterklassen hinzu, um Compose-Inhalte in einer View-Hierarchie zu hosten. (I46357)
  • Row und Column sind jetzt Inline-Funktionen, wodurch der Aufwand für die Verwendung deutlich reduziert wird. (I75c10)
  • SubcomposeLayout wurde hinzugefügt. Es handelt sich um ein Low-Level-Primitive, mit dem die untergeordneten Elemente während der Messung zusammengesetzt werden können, wenn wir einige Werte verwenden möchten, die erst später während der Messung für die Zusammensetzung des Teilbaums verfügbar sind. WithConstraints wird beispielsweise nicht mit SubcomposeLayout implementiert. (I25cc8)
  • SemanticsNode.positionInRoot wurde hinzugefügt, um die Position eines SemanticsNode relativ zum Stamm der Compose-Hierarchie abzurufen (Icdf26, b/161336532).
  • MotionEvents werden von Android über Compose zurück zu Android weitergeleitet. (I14be8, b/158034713)
  • dropdownPopup wurde entfernt. (I00430)
  • Die Position von Pop-ups auf Displays mit Aussparungen wurde korrigiert. (Idd7dd)
  • Aktion für Bedienungshilfen zum Abrufen von TextLayoutResult hinzufügen (I9d6e6)
  • „RemeasurementModifier“ wurde hinzugefügt. Damit lässt sich das Layout synchron neu messen. Im Allgemeinen ist sie nie erforderlich, da die Neumessung/Neugestaltung automatisch erfolgt. Wir verwenden sie jedoch in LazyColumnItems während des Scrollens. (I5f331, b/160791058)
  • Entfernen von „getLineEllipsisOffset“/„getLineEllipsisCount“ Verwenden Sie stattdessen „getLineVisibleEnd“/„getLineEnd“/„isLineEllipsized“. (I85aa2)
  • Fügen Sie einige Markierungen/Anmerkungen hinzu, um Best Practices zu berücksichtigen. (I66b20)
  • Weitere Zeilen-APIs in „TextLayoutResult“ verfügbar machen. (I79bd2)
  • Integrierte Vektorkonverter zum Konvertieren integrierter Einheiten sind jetzt über Foo.VectorConverter zugänglich, z. B.Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter usw. (I3e273)

Fehlerkorrekturen

  • Umfassende API-Korrekturen (I077bc)
    1. Nicht verwendete OffsetBase-Schnittstelle entfernen
    2. Offset- und IntOffset-Klassen anpassen, um eine konsistente API zu erhalten
    3. Benennen Sie „IntOffset.Origin“ in „IntOffset.Zero“ um, um die Konsistenz mit der Offset API zu wahren.
    4. Die nativeCanvas-Methode wurde aus der Canvas-Schnittstelle entfernt, damit Nutzer eigene Canvas-Instanzen erstellen können.
    5. Die Stub-Klasse „EmptyCanvas“ wurde erstellt, um „DrawScope“ so umzugestalten, dass sie ein Parameter ist, der nicht null sein kann, anstatt „lateinit“ zu verwenden. Außerdem wird so sichergestellt, dass das Feld nicht null sein kann.
    6. ClipOp-Enums in PascalCase umbenannt
    7. Die FilterQuality-Enums wurden in PascalCase umbenannt.
    8. StrokeJoin-Enums wurden in PascalCase umbenannt.
    9. Die PointMode-Enumerationen wurden in PascalCase umbenannt.
    10. „PaintingStyle“-Enumerationen in PascalCase umbenannt
    11. Die PathFillType-Enumerationen wurden in PascalCase umbenannt.
    12. StrokeCap-Enums in PascalCase umbenannt
    13. Die DrawCache-Implementierung wurde aktualisiert, sodass keine „lateinit“-Parameter mehr verwendet werden.
    14. DrawScope wurde aktualisiert, sodass die internen Parameter „fillPaint“ und „strokePaint“ nicht mehr lazy delegiert werden.
    15. Das Image-Composable wurde aktualisiert, um die Verwendung von „Box“ zu vermeiden und den Overhead zu reduzieren.
    16. Die Outline-Klasse wurde aktualisiert und enthält jetzt @Immutable-Annotationen.
    17. PathNode wurde aktualisiert und enthält nun @Immutable-Annotationen für jede Pfadanweisung.
    18. Die Vektorteilkomposition wurde aktualisiert, um redundante bedingte Gleichheitsprüfungen zu entfernen, da diese bereits von Compose verarbeitet werden.
    19. Veraltete Begleitkonstruktormethoden für „Rect“ zugunsten von Funktionskonstruktoren
    20. Aktualisierte Brush-Klassen und Funktionskonstruktoren mit @Immutable- und @Stable-APIs
    21. Die Enumeration „VertexMode“ wurde in PascalCase aktualisiert.
    22. Die Methode „selectPaint“ von DrawScope wurde aktualisiert, um Strichparameter im Paint-Objekt nur dann zu überschreiben, wenn sie sich geändert haben.
    23. Die Größe wurde aktualisiert, um die Destrukturierungs-API hinzuzufügen, „UnspecifiedSize“ in „Unspecified“ umzubenennen und nicht verwendete Methoden zu entfernen.
  • Die BlendMode API-Nutzung in Compose wurde aktualisiert, um je nach API-Level eine korrekte Zuordnung zwischen Android-Framework-BlendModes und PorterDuff-Modi zu ermöglichen. Die API BlendMode#isSupported wurde eingeführt, um als Funktion zur Abfrage von Funktionen zu fungieren, um festzustellen, ob der BlendMode auf dem Gerät unterstützt wird, bevor er verwendet wird. (I0ef42)
  • LazyItemScope wurde für den Parameter „itemContent“ von Lazy-Listen hinzugefügt. Er bietet Modifikatoren, mit denen die maximale Größe des übergeordneten Elements ausgefüllt werden kann. Dies ist hilfreich, wenn das Element den Viewport ausfüllen soll und der reguläre Modifier.fillMaxSize() nicht funktioniert, da das Element mit unendlichen Einschränkungen gemessen wird. (Ibd3b2, b/162248854)
  • SemanticsNodeInteraction.performPartialGesture wurde entfernt. Verwenden Sie stattdessen SemanticsNodeInteraction.performGesture. (Id9b62)
  • LazyColumnItems wurde in LazyColumnFor umbenannt. LazyRowItems wurde in LazyRowFor umbenannt (I84f84)
  • Das Paket foundation.shape.corner wurde auf foundation.share reduziert. (I46491, b/161887429)
  • AndroidComposeTestRule wurde in createAndroidComposeRule umbenannt. (I70aaf)
  • TextLayoutResult wurden weitere APIs hinzugefügt. (Id7e04)
  • Das Material FilledTextField wurde in TextField umbenannt und das grundlegende TextField in BaseTextField, damit die einfachste gewünschte API leichter zu finden und zu verwenden ist (Ia6242, b/155482676).
  • Modifier.drawBackground wurde in Modifier.background umbenannt (I13677)

Version 0.1.0-dev15

22. Juli 2020

androidx.compose.ui:ui-*:0.1.0-dev15 ist veröffentlicht. Version 0.1.0-dev15 enthält diese Commits.

Aktualisierung der Abhängigkeiten

  • Wenn Sie die 0.1.0-dev15-Version von Compose verwenden möchten, müssen Sie Ihre Abhängigkeiten gemäß den neuen Code-Snippets oben unter Abhängigkeiten deklarieren aktualisieren.

API-Änderungen

  • FocusModifier ist zugunsten von Modifier.focus, Modifier.focusRequester und Modifier.focusObserver veraltet. FocusState und FocusDetailedState sind zugunsten von FocusState2 eingestellt (I46919, b/160822875, b/160922136).
  • Es wurde ein Modifier hinzugefügt, um Änderungen des Fokusstatus zu beobachten. (I05866, b/160924455, b/160923326)
  • Modifikator zum Anfordern von Fokusänderungen hinzugefügt (I8dd73, b/161182057, b/160924778)
  • Passen Sie das Symbolleistenmenü an, damit die Optionen zum Kopieren, Ausschneiden und Einfügen richtig angezeigt werden. (Id3955)
  • Für Eigenschaften mit Einzelwertsemantik wird jetzt ein Aufrufstil verwendet. Beispiel: „semantics { hidden = true }“ wird jetzt so geschrieben: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412)
  • „Modifier.focus“ wurde hinzugefügt und ersetzt „FocusModifier“. (Ib852a, b/160924778)
  • Es wurde eine schwebende Symbolleiste für die Auswahl von Textfeldern hinzugefügt. (Ie8b07)
  • Eine experimentelle API-Anmerkung für die API für die Eingabe von Tastaturzeichen (I53c0a) wurde hinzugefügt.
  • Für alle Fokus-bezogenen APIs wurde eine experimentelle API-Annotation hinzugefügt (I53b24, b/160903352).
  • FocusState2 wurde hinzugefügt und ersetzt FocusDetailedState (I0a3ba, b/160822595).
  • „ExperimentalFocus“ wurde hinzugefügt. Das ist eine @OptIn-Annotation für die Focus API. (I1544b, b/160820961)
  • Es wurde eine IntBounds-Einheitenklasse hinzugefügt, die die ganzzahligen Pixelgrenzen aus dem Layout darstellt. Die API von PopupPositionProvider wurde aktualisiert, um sie zu verwenden. (I0d8d0, b/159596546)
  • Für das Entfernen von Kompositionen ist jetzt eine clear()-Methode erforderlich (Ibe697).
  • KeyEvent wurde eingestellt und durch KeyEvent2 ersetzt (I68730)
  • Den Test-Findern wurde das neue optionale Flag useUnmergedTree hinzugefügt. (I2ce48)
  • LayoutNode als experimentelle API festgelegt (I4f2e9)
  • Es wurden Kopiermethoden für verschiedene Inline-Klassentypen hinzugefügt, darunter:

    • Offset
    • Größe
    • Radius
    • Bewegung
    • TransformOrigin

    • Die Companion-Objektmethode „Size.copy“ wurde zugunsten der Instanzmethode „copy“ eingestellt (Ife290, b/159905651).

  • Pop-ups, Dialogfelder und Menüs übernehmen jetzt das kontextbezogene MaterialTheme (Ia3665, b/156527485).

  • „TextDirection“ wird in „ResolvedTextDirection“ umbenannt (I3ff38).

  • Der Parameter für die Layoutrichtung wurde aus dem Messblock der Funktion „Layout()“ entfernt. Die Layoutrichtung ist jedoch im Callback über das Messbereichsobjekt (Ic7d9d) verfügbar.

  • SelectionHandles für die Wiederverwendung refaktorieren. (I420e0)

  • Die Funktion zum Klicken wurde entfernt. „Modifier.clickable“ verwenden (I84bdf)

  • TestTag und Semantics wurden gelöscht. Verwenden Sie stattdessen Modifier.testTag und Modifier.semantics (I15ff0, b/158841414).

  • Vor dieser Änderung hat das Compose-Compiler-Plug-in Aufrufe von Konstruktoren innerhalb einer @Composable-Funktion nicht trivial abgefangen, wenn ein (I5205a, b/158123804)

  • Modifier.tag wurde in Modifier.layoutId umbenannt, um Verwechslungen mit Modifier.testTag zu vermeiden. (I995f0)

  • Die von Placeable#get(AlignmentLine) zurückgegebenen Positionen für die Ausrichtungslinie sind jetzt nicht mehr null. Wenn die abgefragte Ausrichtungslinie fehlt, wird AlignmentLine.Unspecified zurückgegeben. (I896c5, b/158134875)

  • Dem AndroidView-Composable wurde ein Modifier-Parameter hinzugefügt. (I48a88, b/158746303)

  • „Semantics()“ wurde eingestellt. Verwenden Sie stattdessen „Modifier.semantics()“. (I72407, b/158841414)

  • Die zusammensetzbare Funktion „viewModel()“ wurde hinzugefügt, mit der sich ein ViewModel erstellen oder abrufen lässt, ähnlich wie in einer Aktivität oder einem Fragment (I5fdd1).

  • Die Verwendung von „IntPx“ wurde durch „Int“ ersetzt. „IntPxPosition“ wurde durch „IntOffset“ ersetzt. „IntPxSize“ durch „IntSize“ ersetzt. (Ib7b44)

  • Um die Anzahl der Klassen zu konsolidieren, die zur Darstellung von Größeninformationen verwendet werden, sollten Sie die Klasse „Size“ anstelle von „PxSize“ verwenden. Dies bietet die Vorteile einer Inline-Klasse, um einen „long“-Wert zu nutzen, um zwei „float“-Werte zu packen, die Breite und Höhe als „float“-Werte darstellen. (Ic0191)

  • Um die Anzahl der Klassen zu konsolidieren, die zur Darstellung von Positionsinformationen verwendet werden, wird die Verwendung der Offset-Klasse anstelle von PxPosition standardisiert. Dies bietet die Vorteile einer Inline-Klasse, um einen „long“-Wert zu nutzen, um zwei Gleitkommawerte zu packen, die als Gleitkommazahlen dargestellte X- und Y-Offsets darstellen. (I3ad98)

  • Die Verwendung der Px-Klasse in verschiedenen Compose-Klassen wurde im Rahmen der großen Umstellung ersetzt, um sich bei Pixelparametern nur auf Dp und primitive Typen zu verlassen. Px-Klasse vollständig gelöscht (I3ff33)

  • Die Verwendung der Px-Klasse wurde in verschiedenen Compose-Klassen im Rahmen der großen Umstellung ersetzt, um sich bei Pixelparametern nur auf Dp und primitive Typen zu verlassen (I086f4).

  • Die Verwendung der Px-Klasse in verschiedenen Compose-Klassen wurde im Rahmen der großen Umstellung ersetzt, um sich bei Pixelparametern nur auf Dp und primitive Typen zu verlassen (Id3434).

  • Die Verwendung der Px-Klasse in verschiedenen Compose-Klassen wurde im Rahmen der großen Refaktorierung ersetzt, um sich nur auf Dp und primitive Typen für Pixelparameter zu verlassen (I97a5a).

  • TestTag wurde eingestellt. Verwenden Sie stattdessen „Modifier.testTag“. (If5110, b/157173105)

  • Die Standard-No-Op-Implementierung von ParentDataModifier#modifyParentData wurde entfernt. Sie entsprach der Nichtimplementierung der Schnittstelle. (I0deaa)

  • Die zuvor verworfene Funktion „ScaleFit as“ wurde entfernt. Verwenden Sie stattdessen ContentScale. (Ifbc5b)

  • Die Verwendung der Px-Klasse in verschiedenen Compose-Klassen wurde im Rahmen der großen Umstellung ersetzt, um sich bei Pixelparametern nur auf Dp und primitive Typen zu verlassen (I19d02).

  • Die Komponente „DropdownMenu“ wurde in „ui-material“ hinzugefügt, einer Material Design-Menüimplementierung. (I9bb3d)

  • Die eingestellte Funktion „LayoutTag()“ wurde entfernt. Verwenden Sie stattdessen „Modifier.tag()“. Die eingestellte Funktion „Modifier.matchParent()“ wurde entfernt. Verwenden Sie stattdessen „Modifier.matchParentSize()“. (If8044)

  • Die Verwendung der Px-Klasse in verschiedenen Compose-Klassen wurde im Rahmen der großen Umstellung ersetzt, um sich bei Pixelparametern nur auf Dp und primitive Typen zu verlassen (I57bff).

  • Modifier.semantics wurde wieder eingeführt, um die Verwendung für Komponenten auf hoher Ebene zu ermöglichen. (I4cfdc)

  • CanvasScope-Implementierungen wurden konsolidiert. Es gibt jetzt nur noch DrawScope und ContentDrawScope. CanvasScope wurde in DrawScope umbenannt. DrawScope wurde aktualisiert, um die Density-Schnittstelle zu implementieren und LayoutDirection bereitzustellen. Die DrawScope-Unterklasse in ContentDrawScope wurde gelöscht. Painter und PainterModifier wurden aktualisiert, sodass sie nicht mehr selbst eine RTL-Property verwalten, da DrawScope diese bereits ohne manuelle Bereitstellung bereitstellt (I1798e).

  • DoubleTapGestureFilter unterscheidet jetzt SingleTapGestureFilter im gesamten Baum. (If92b1)

  • Die Alignment API wurde aktualisiert und es wurde Unterstützung für die absolute Ausrichtung hinzugefügt (die im RTL-Kontext nicht automatisch gespiegelt wird) (I38cd3).

  • Die API für DrawLayer-Modifikatoren wurde geändert: „outlineShape“ wurde in „shape“ umbenannt und hat jetzt den Standardwert „RectangleShape“ und ist nicht mehr nullfähig. „clipToOutline“ wurde in „clip“ umbenannt. „clipToBounds“ wurde entfernt, da es dasselbe ist wie „clip == true“ mit „RectangleShape“ (I7ef11, b/155075735).

  • Die Compose-APIs auf höherer Ebene wurden aktualisiert, sodass sie CanvasScope anstelle von Canvas verfügbar machen. Dadurch müssen Nutzer keine eigenen Paint-Objekte mehr verwalten. Nutzer, die weiterhin Zugriff auf ein Canvas benötigen, können die drawCanvas-Erweiterungsmethode verwenden, die einen Callback für die Ausgabe von Zeichenbefehlen mit dem zugrunde liegenden Canvas bereitstellt. (I80afd)

  • Die WithConstraints-Trailing-Lambda-API wurde geändert. Anstelle von zwei Parametern gibt es jetzt einen Empfängerbereich, der zusätzlich zu Einschränkungen und „layoutDirection“ die Eigenschaften „minWidth“, „maxWidth“, „minHeight“ und „maxHeight“ in Dp bietet (I91b9a, b/149979702).

  • „LayoutModifier2“ wurde in „LayoutModifier“ umbenannt. (Id29f3)

  • Die nicht mehr weitergeführte LayoutModifier-Schnittstelle wurde entfernt. (I2a9d6)

  • Die Funktionen für intrinsische Messungen in Layout und LayoutModifier2 haben jetzt einen IntrinsicMeasureScope-Empfänger, der eine API für intrinsische Abfragen mit implizit weitergegebener Layoutrichtung bereitstellt. (Id9945)

  • „Layout“- und „LayoutModifier“-Untergeordnete Elemente können mit einer anderen Layoutrichtung gemessen werden. (Ibd731)

  • Der neue Modifier.zIndex() wurde hinzugefügt, um die Zeichenreihenfolge der untergeordneten Elemente innerhalb desselben übergeordneten Layouts zu steuern. Die Eigenschaft „elevation“ für DrawLayerModifier wurde in „shadowElevation“ umbenannt und steuert die Zeichenreihenfolge nicht mehr. Die Reihenfolge der Parameter für DrawShadow wurde geändert: „elevation“ ist jetzt der erste und „shape“ der zweite Parameter mit einem RectangleShape-Standardwert. (I20150, b/152417501)

  • „onSizeChange“ und „onPositionChange“ in „Owner“ entfernt. (I5c718)

  • „Constraints2“ hinzugefügt, eine Kopie von „Constraints“, die nur Int-Beschränkungswerte anstelle von IntPx unterstützt. IntPx wird entfernt und alle Ganzzahleinschränkungen werden wie bei Android als Pixel angenommen.

    • Außerdem wurde „IntSize“ hinzugefügt, das „IntPxSize“ ersetzen wird. (I4b43a)
  • Die Ausrichtung kann jetzt mit beliebigen Werten instanziiert werden. 1D-Abstimmungen hinzugefügt. (Ia0c05)

  • alignToSiblings akzeptiert jetzt „Measured“ anstelle von „Placeable“. (I5788d)

  • (I45f09, b/152842521)

    • „ScaleFit“ wurde in „ContentScale“ umbenannt.
    • „ContentScale“ wurde vom Modul „ui-graphics“ in das Modul „ui-core“ verschoben, um sich im selben Modul wie die Alignment API zu befinden.
    • „FillMaxDimension“ in „Crop“ umbenannt
    • „FillMinDimension“ in „Fit“ umbenannt
    • „Anpassen“ wurde in „Innen“ umbenannt, um besser zu passen.
    • Entsprechungen von ImageView.ScaleType
    • Es wurde Dokumentation hinzugefügt, aus der hervorgeht, dass die Kombination aus „Crop“ und „Alignment.Center“ dasselbe Ergebnis wie „ImageView.ScaleType.CENTER_CROP“ erzielt. „Fit“ in Kombination mit „Alignment.Center“ erzielt dasselbe Ergebnis wie „ImageView.ScaleType.FIT_CENTER“ und „Inside“ in Kombination mit „Alignment.Center“ dasselbe Ergebnis wie „ImageView.ScaleType.CENTER_INSIDE“.
  • Unterstützung von RTL für Draw-Modifikatoren. (I0aaf9)

  • API zum Erstellen von Android-Ansichten aus XML veröffentlicht. Weitere Informationen finden Sie in der ViewInCompose-Demo. (I42916)

  • DrawModifier API verbessern:

    • Der Empfängerbereich für draw() ist jetzt ContentDrawScope.
    • Alle Parameter in draw() entfernt
    • DrawScope hat dieselbe Benutzeroberfläche wie das frühere CanvasScope.
    • ContentDrawScope hat die Methode drawContent() (Ibaced, b/152919067)
  • „positionInParent“ und „boundsInParent“ für „LayoutCoordinates“ hinzugefügt. (Icacdd, b/152735784)

  • Für DrawLayerModifier und drawLayer() sind clipToBounds und clipToOutline jetzt standardmäßig auf „false“ gesetzt. (I0eb8b, b/152810850)

  • „LayoutResult“ wurde in „MeasureResult“ umbenannt. (Id8c68)

  • LayoutModifier2 wurde hinzugefügt, eine neue API zum Definieren von Layoutmodifizierern. LayoutModifier wurde eingestellt (If32ac).

  • „Modifier plus“-Operator durch Factory-Erweiterungsfunktionen ersetzt (I225e4)

  • Die Eigenschaften „translationX“/„Y“ wurden hinzugefügt, um das Versetzen der Anzeigeliste von Zeichenbefehlen für eine bestimmte Ebene zu unterstützen. Das ist nützlich, um Inhalte als Reaktion auf Animationen oder Berührungsereignisse zu verschieben. (I8641c)

  • Den Layer-APIs wurden die Parameter „pivotX“ und „pivotY“ hinzugefügt, um die Drehung und Skalierung um einen bestimmten Punkt auf einem Layer zu unterstützen (Icf7c3).

  • Fügen Sie OnPositionedModifier und OnChildPositionedModifier hinzu, um die zusammensetzbaren Funktionen OnPositioned und OnChildPositioned zu ersetzen. (I2ec8f)

  • „LayerModifier“ hinzugefügt, ein Modifier, mit dem einem Layout ein „RenderNode“ hinzugefügt werden kann. Damit lassen sich Clipping, Deckkraft, Drehung, Skalierung und Schatten festlegen. Dadurch wird RepaintBoundary ersetzt. (I7100d, b/150774014)

  • Die Layoutrichtung wird jetzt vom übergeordneten Layoutknoten an untergeordnete Knoten weitergegeben. Modifikator für die Layoutrichtung hinzugefügt. (I3d955)

  • Die Stapelkomponente unterstützt die Richtung von rechts nach links (Ic9e00).

  • Erste Unterstützung für RTL in Compose-Layout (Ia5519)

  • „Density“ und „DensityScope“ wurden in einer Schnittstelle zusammengeführt. Statt „ambientDensity()“ können Sie jetzt „DensityAmbient.current“ verwenden. Anstelle von withDensity(density) nur with(density) (I11cb1)

  • LayoutCoordinates wurde geändert, sodass providedAlignmentLines ein Set anstelle einer Map ist und LayoutCoordinates stattdessen den get()-Operator zum Abrufen eines Werts implementiert. So können Modifikatoren einen oder mehrere Werte des Sets ändern, ohne für jeden Modifikator eine neue Sammlung erstellen zu müssen. (I0245a)

  • „LayoutCoordinates“ hat keine „position“-Property mehr. Die Eigenschaft „position“ ist bei LayoutModifiers, Rotation oder Skalierung nicht sinnvoll. Stattdessen sollten Entwickler parentCoordinates und childToLocal() verwenden, um die Transformation von einer LayoutCoordinate in eine andere zu berechnen.

    Bei LayoutCoordinates wird für die size-Property IntPxSize anstelle von PxSize verwendet. Für Layouts werden ganzzahlige Pixelgrößen verwendet. Daher sollten alle Layoutgrößen als Ganzzahlen und nicht als Gleitkommawerte angegeben werden. (I9367b)

  • Verbesserungen der API-Oberfläche von Constraints (I0fd15)

  • Wir haben die CanvasScope API erstellt, die ein Canvas-Objekt umschließt, um eine zustandslose, deklarative Zeichen-API-Oberfläche bereitzustellen. Transformationen sind in ihrem eigenen Empfängerbereich enthalten und Größeninformationen sind auch auf die entsprechenden Inset-Grenzen beschränkt. Der Nutzer muss kein eigenes Paint-Zustandsobjekt zum Konfigurieren von Zeichenvorgängen verwalten.

    • CanvasScopeSample wurde hinzugefügt und die Demo-App wurde aktualisiert, um eine deklarative Grafikdemo (Ifd86d) zu enthalten.
  • Die ungenutzte MaskFilter API wurde entfernt, da sie nur eingeschränkt verwendet wird und in den meisten Anwendungsfällen nicht für die Hardwarebeschleunigung optimiert ist (I54f76).

  • RectangleShape wurde von androidx.ui.foundation.shape.* nach androidx.ui.graphics.* verschoben. (Ia74d5, b/154507984)

  • Alle Verwendungen von „nullable Color“ in der API wurden durch „non-nullable“ ersetzt und anstelle von „null“ wird „Color.Unset“ verwendet (Iabaa7).

  • Einführung eines zusätzlichen optionalen „rect“-Parameters für ImagePainter zur Unterstützung des Zeichnens eines Unterabschnitts des zugrunde liegenden ImageAsset (I0ea9e)

  • Die Option „Farbe nicht festlegen“ wurde hinzugefügt, um einen nicht festgelegten Wert ohne Umrandung darzustellen. (If901a)

  • Die Erweiterungsmethoden „Canvas.rotate“ und „Canvas.scale“ wurden hinzugefügt, um optionale Pivot-Koordinaten für Transformationen zu verwenden. Standardmäßig werden sie in der oberen linken Ecke der aktuellen Canvas-Übersetzung platziert.

    Außerdem wurde Canvas.rotateRad aus Gründen der Konsistenz in eine Erweiterungsmethode verschoben (Ibaca6).

  • Die PixelMap API wurde erstellt, um das Abrufen von Pixelinformationen aus einem ImageAsset zu unterstützen. (I69ad6)

  • Die Funktionen wurden in „toAndroidRect“/„toAndroidRectF“ umbenannt, um der Namenskonvention für Objektkonvertierungen zwischen Compose und den Android-Framework-APIs zu entsprechen, auf denen sie basieren. Auch die Dokumentation zu diesen APIs wurde aktualisiert (I86337).

  • Die VectorPainter API wurde hinzugefügt, um die vorhandene Subcomposition API für Vektorgrafiken zu ersetzen. Das Ergebnis der Unterkomposition ist ein VectorPainter-Objekt anstelle eines DrawModifier-Objekts. Die bisherigen DrawVector-Composables wurden zugunsten von VectorPainter eingestellt.

    Die Image(Painter)-API wurde in PaintBox(Painter) umbenannt. Es wurde eine Vektor-Composable-Funktion erstellt, die sich wie die Image-Composable-Funktion verhält, aber anstelle eines ImageAsset ein VectorAsset verwendet (I9af9a, b/149030271).

  • „Image“ wurde in „ImageAsset“ umbenannt, um den Unterschied zwischen den Bilddaten und der bevorstehenden Image-Composable-Funktion, die zum Layouten und Zeichnen von Inhalten verwendet wird, besser zu verdeutlichen. _Body:Die Erweiterungsmethode „Bitmap.asImageAsset()“ wurde für „android.graphics.Bitmap“ erstellt, um eine Instanz von „ImageAsset“ zu erstellen, die sich für die Kombination aus traditioneller Android-Anwendungsentwicklung und dem Compose-Framework (Id5bbd) eignet.

  • TextDirection.Content wurde hinzugefügt (I48f36)

  • Operator „TextDecoration.plus“ wurde hinzugefügt. (I0ad1a)

  • Force wurde aus den Enum-Werten von TextDirectionAlgorithm (Icc944) entfernt.

  • „TextDirectionAlgorithm“ wurde in „TextDirection“ umbenannt (I75ce8)

  • Implementiert „LongPressAndDrag“ für die Auswahl von Textfeldern. (I17919)

  • getStringAnnotations wurde zu AnnotatedString hinzugefügt.Diese Funktion gibt alle Anmerkungen innerhalb des Bereichs zurück. (I1fa00)

  • Der Paketname für „Locale“ und „LocaleList“ wurde von „androidx.ui.text“ zu „androidx.ui.intl“ geändert (I8132c).

  • Der Cursor des Textfelds blinkt (Id10a7)

  • API-Änderung: „AnnotatedString(builder: Builder)“ wurde in „annotatedString(builder: Builder)“ umbenannt. (Ia6377)

  • API-Änderung: „AnnotatedString.Item“ wurde in „AnnotatedString.Range“ umbenannt. (I2d44d)

  • Benennen Sie AnnotatedString.Builder.addAnnotationString in addStringAnnotation um. (I5059e)

  • Die Softwaretastatur kann jetzt mit dem SoftwareKeyboardController, der vom Callback „onTextInputStarted“ bereitgestellt wird, ein- und ausgeblendet werden (I8dc44, b/151860051).

  • Der Plus-Operator wurde für (Text/Paragraph/Span)Style hinzugefügt, der an die merge()-Funktion delegiert wird. (Ia1add)

  • FontWeight.lerp wird nicht mehr andocken. Es handelt sich weiterhin um eine Datenklasse. (I521c2)

  • Der FontWeight-Konstruktor ist jetzt öffentlich und keine Datenklasse mehr. (Id6b1f)

  • TextLayoutResult die Methoden getLineStart, getLineEnd, getEllipsisOffset und getEllipsisCount hinzufügen (Ibc801)

  • Das Modul „ui-text“ wurde in „ui-text-core“ umbenannt (I57dec).

  • Die nicht verwendete Größenklasse wurde entfernt, da im ui-geometry-Modul eine doppelte Größenklasse vorhanden ist, die verwendet wird. (I1b602)

  • „AdapterList“ hinzugefügt, eine scrollbare Listenkomponente, die nur die sichtbaren Elemente zusammensetzt und anordnet. Zu den derzeit bekannten Problemen gehört, dass es nur vertikal funktioniert und nicht alle Fälle von Änderungen an untergeordneten Elementen vollständig berücksichtigt. (Ib351b)

  • Parameter für Innenabstand, Rahmen, Form und Hintergrund für Box hinzufügen (I05027, b/148147281)

Fehlerkorrekturen

  • Der onFocusChange-Callback in Textfeldern wurde in onFocusChanged umbenannt (Ida4a1).
  • „VerticalScroller“ und „HorizontalScroller“ wurden eingestellt. Verwenden Sie ScrollableColumn und ScrollableRow für eine integrierte Benutzeroberfläche mit Spalten-/Zeilenverhalten und ‑parametern oder Modifier.verticalScroll und Modifier.horizontalScroll für Ihr eigenes Element. Ebenso wurde „ScrollerPosition“ zugunsten von „ScrollState“ eingestellt (I400ce, b/157225838, b/149460415, b/154105299).
  • runOnIdleCompose wurde in runOnIdle umbenannt (I83607)
  • Mehrere Test-APIs wurden umbenannt, um sie intuitiver zu gestalten. Alle findXYZ-APIs wurden in onNodeXYZ umbenannt. Alle doXYZ-APIs wurden in performXYZ umbenannt. (I7f164)
  • Die Compose-UI kann jetzt in ViewGroups zusammengestellt werden, ohne dass eine neue Komposition erforderlich ist. Ein Beispiel finden Sie unter ViewInteropDemo. (I9ab0b, b/160455080)
  • „sortWith“ und „removeRange“ zu „MutableVector“ hinzugefügt (Icccf7)
  • Implementieren Sie Ziehpunkte für die Drag-Auswahl, um die Auswahl für das TextField zu ändern. (I27032)
  • Die Inline-Klasse „Shader“ wurde entfernt, die die NativeShader-Expect-Klasse umschlossen hat. NativeShader wurde in Shader umbenannt. Die umschlossene Inline-Klasse „Shader“ hat der API-Oberfläche nichts Wertvolles hinzugefügt und war eine Inline-Klasse. Verwenden Sie daher die Klasse „NativeShader“ direkt. (I25e4d)
  • Der PainterModifier wurde umgestaltet, sodass keine Skalierung mehr basierend auf den angegebenen Einschränkungen und dem ContentScale-Parameter erfolgt. Implementierungen von Painter müssen ihre Zeicheninhalte selbst an die angegebene Größe des DrawScope anpassen, in das sie zeichnen.

    Ein Problem wurde behoben, durch das die Cache-Bitmap von VectorPainter auf die Standardgröße anstatt auf die angegebene Größe zum Zeichnen skaliert wurde.

    ImagePainter wurde aktualisiert, um den Inhalt selbst zu skalieren, anstatt sich auf PainterModifier zu verlassen. (I6ba90)

  • Funktion „withFrameNanos“ auf oberster Ebene für das Timing von Animationen hinzufügen (Ie34c5)

  • Die Anmerkung „@Untracked“ wurde eingestellt. Durch @ComposableContract(tracked=false) ersetzen (Id211e)

  • „androidx.ui.foundation.TextFieldValue“ und „androidx.ui.input.EditorValue“ wurden eingestellt. Die Composables „TextField“, „FilledTextField“ und „CoreTextField“, die diesen Typ verwenden, sind ebenfalls eingestellt. Verwenden Sie stattdessen androidx.ui.input.TextFieldValue (I4066d, b/155211005).

  • Ein Problem wurde behoben, durch das die Verteilung von Zeigereingaben zu einem Absturz führte, wenn PointerInputFilters während der Verteilung über die Unterkomposition entfernt wurden. Dieser Fehler wurde jetzt behoben. (I1f48b, b/157998762)

  • Ein Problem wurde behoben, durch das die Verteilung von Zeigereingaben zu einem Absturz geführt hat, wenn PointerInputFilters während der Verteilung über die Unterkomposition entfernt wurden. Dieser Fehler wurde jetzt behoben. (Iab398, b/157998762)

  • Die Radius-Klasse wurde in eine Inline-Klasse umgestaltet. Methoden zum Erstellen von Begleitern wurden zugunsten des Funktionskonstruktors mit Standardparameter entfernt, damit der Radius entlang der y-Achse dem des obligatorischen x-Achsen-Radiusparameters entspricht.

    Die Funktion DrawScope.drawRoundRect wurde aktualisiert, sodass sie einen einzelnen Radiusparameter anstelle von zwei separaten Gleitkommawerten für den Radius entlang der x- und y-Achse verwendet (I46d1b).

  • Die Recompose-Composable-Funktion ist keine nützliche Abstraktion mehr. Die meisten Neukompositionen sollten durch Zuweisungen von MutableState erfolgen. Für alles darüber hinaus wird empfohlen, die Funktion invalidate zu verwenden, um eine Neuzusammensetzung des aktuellen Bereichs auszulösen. (Ifc992)

  • Die Verwendung der Px-Klasse in verschiedenen Compose-Klassen wurde im Rahmen der großen Refaktorierung ersetzt, um sich bei Pixelparametern nur auf Dp und primitive Typen zu verlassen (Iede0b).

  • Ändert die Strategie zur Codegenerierung des Compose-Compilers. Vor der Änderung hat der Compose-Compiler Aufrufe von zusammensetzbaren Funktionen transformiert. Durch diese Änderung wird jetzt der Body einer zusammensetzbaren Funktion transformiert, während der Aufruf (meistens) unverändert bleibt.

    Das bedeutet, dass die meiste Logik, die mit der Compose-Laufzeit kommuniziert, am Anfang des Funktions-Bodys statt am Aufrufpunkt stattfindet.

    Diese Änderung sollte für alle Verwendungen von Compose quellkompatibel sein. Die meisten Nutzer von Compose müssen aufgrund dieser Änderung keinen Code aktualisieren.

    Um diese Arbeit zu unterstützen, hat sich die JVM-Signatur aller zusammensetzbaren Funktionen geändert. Eine zusammensetzbare Funktion, die einen einzelnen Parameter akzeptiert, wird in eine Funktion mit drei Parametern umgewandelt. Die zusätzlichen Parameter sind der Composer, ein „key“-Integer und ein Bitmasken-Integer, der zum Weitergeben von Metadaten durch Aufrufe verwendet wird.

    Compose transformiert jetzt auch Standardargumente in eine zusammensetzbare Funktion. Dabei wird keine zusätzliche synthetische Standardüberladung der Funktion eingeführt. Durch diese Änderung werden also weniger Funktionen definiert.

    Bekannte beabsichtigte Verhaltensänderungen, die sich daraus ergeben:

    1. Bei einigen Anrufen wird die Funktion „Überspringen“ verwendet, obwohl das zuvor nicht der Fall war.
    2. Zusammensetzbare Ausdrücke in Standardargumentausdrücken werden jetzt korrekt abonniert und verarbeitet.

    Diese Arbeit umfasste einige Optimierungen: 1. Das Ergebnis von Parametervergleichen wird über den Aufrufgraphen an andere zusammensetzbare Funktionen weitergegeben. Dies führt zu weniger Vergleichen zur Laufzeit, einer kleineren Slot-Tabelle und dazu, dass mehr zusammensetzbare Funktionen übersprungen werden, die zuvor nicht übersprungen wurden. Parameter, die zur Kompilierzeit als „statisch“ eingestuft werden, werden nicht mehr verglichen oder in der Laufzeit gespeichert. Dadurch wird die Anzahl der Vergleiche und die Größe der Slot-Tabelle reduziert. 3. Die Kontrollflussstruktur des Funktionsrumpfs wird verwendet, um die Anzahl der generierten Gruppen zu minimieren. Dadurch wird die Größe der Slot-Tabelle reduziert und die Laufzeit 4 muss weniger Arbeit leisten. Nicht verwendete Dispatch- und Empfängerparameter für Funktionen werden bei der Bestimmung der Überspringbarkeit der Funktion nicht berücksichtigt, wenn sie nicht im Funktionsrumpf verwendet werden.

    Die meisten wichtigen Änderungen betrafen APIs, auf die der Compiler direkt abzielt. Die typische Verwendung von Compose ist davon nicht betroffen: 1. Composer::startExpr wurde entfernt 2. Composer::endExpr wurde entfernt 3. Composer::call wurde eingestellt 4. Die Nicht-Varargs-Überladungen von key wurden entfernt. Verwenden Sie ab sofort die Version vararg. 5. Die Pivotal-Anmerkung wurde eingestellt. Verwenden Sie stattdessen key. 6. ScopeUpdateScope::updateScope wurde so geändert, dass anstelle von Function1 eine Function3 erwartet wird. 7. restartableFunction und restartableFunctionN wurden aktualisiert, um zusätzliche Kompilierzeitparameter zu enthalten (I60756, b/143464846).

  • Nicht mehr verwendete LayoutAlign-Modifikatoren wurden entfernt. (I10877)

  • RepaintBoundary wurde zugunsten von DrawLayerModifier entfernt (I00aa4)

  • Button, FloatingActionButton und Clickable haben jetzt einen separaten enabled-Parameter. Einige Parameter für Schaltflächen wurden umbenannt oder neu angeordnet. (I54b5a)

  • ButtonStyle wurde durch separate Funktionen ersetzt und die Textüberladung (String) wurde entfernt. Aktualisierte Beispiele mit Informationen zur Verwendung ansehen (If63ab, b/146478620, b/146482131)

  • Nicht abwärtskompatible Änderungen an der Ambients API. Weitere Informationen finden Sie im Log und in der Ambient<T>-Dokumentation (I4c7ee, b/143769776).

  • Das Verhalten von „default TextDirection“ wurde so geändert, dass es von „LayoutDirection“ bestimmt wird. Wenn „LayoutDirection“ also RTL ist, ist auch „default TextDirection“ RTL. Zuvor war es TextDirection.ContentOrLtr/Rtl (I4e803).

  • Fehlerkorrektur: Wenn Schriftstärke und Schriftstil in einem AnnotatedString verschachtelt sind, wird der Text nicht richtig gerendert. (I77a9d)

  • Fügt Text() häufig verwendete Parameter hinzu. Wenn Sie derzeit einen lokalen Textstil erstellen, um eine kleine Anzahl dieser Parameter zu übergeben, z. B. Text(style = TextStyle(textAlign = TextAlign.Center)), können Sie die Parameter jetzt direkt angeben: Text(textAlign = TextAlign.Center) (I82768)

  • Das Modul „ui-android-text“ wurde in „ui-text-android“ umbenannt (I68cbe).