Compose-Benutzeroberfläche
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(API-Referenzdokumentation für alle Compose-Pakete ansehen)
| Letzte Aktualisierung | Stabile Version | Releasekandidat | Betarelease | Alpha-Release |
|---|---|---|---|---|
| 19. November 2025 | 1.9.5 | 1.10.0-rc01 | - | - |
Struktur
Compose ist eine Kombination aus 7 Maven-Gruppen-IDs innerhalb von androidx. Jede Gruppe enthält eine bestimmte Teilmenge von Funktionen mit eigenen Versionshinweisen.
In dieser Tabelle werden die Gruppen erläutert und es sind Links zu den einzelnen Versionshinweisen enthalten.
| Gruppe | Beschreibung |
|---|---|
| compose.animation | Animationen in Jetpack Compose-Anwendungen erstellen, um die Nutzerfreundlichkeit zu verbessern. |
| compose.compiler | @Zusammensetzbare Funktionen transformieren und Optimierungen mit einem Kotlin-Compiler-Plug-in ermöglichen |
| compose.foundation | Mit den einsatzbereiten Bausteinen können Sie Jetpack Compose-Anwendungen schreiben und die Grundlage erweitern, um eigene Designsystemkomponenten zu erstellen. |
| compose.material | Jetpack 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.material3 | Mit Material Design 3-Komponenten, der nächsten Generation von Material Design, können Sie Jetpack Compose-UIs erstellen. 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.runtime | Grundlegende Bausteine des Programmiermodells und der Statusverwaltung von Compose sowie die Core-Laufzeit für das Compose Compiler-Plug-in. |
| compose.ui | Grundlegende 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 Maven-Repository von Google.
Fügen Sie der Datei build.gradle für Ihre App oder Ihr Modul die Abhängigkeiten für die benötigten Artefakte hinzu:
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.9.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.9.5") } 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. Lassen Sie es uns wissen, wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können für ein vorhandenes Problem stimmen, indem Sie auf die Schaltfläche mit dem Stern klicken.
Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.
Version 1.10
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
visibilityChanged-Callbacks mit „false“ werden korrekt gesendet, wennminDurationMsnicht null ist. (2ac08b8, b/456384555)- Rufen Sie den
onVisibilityChanged-Callback nicht auf, 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 = falsedeaktiviert werden (I919fb, b/449228515). - Alle APIs für indirekte Berührung werden aktualisiert, sodass sie den Namen „APIs für indirekte Zeiger“ verwenden, um mit APIs für Zeigereingabe übereinzustimmen. (I238ce, b/451607214)
- Die Funktionen
TextDirection,TextAlign,Hyphens,FontSynthesisundvalueOfgeben jetztIllegalArgumentExceptionaus, 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,createAndroidComposeRuleundcreateEmptyComposeRule, die den ParametereffectContextakzeptieren, sind stabil und der Parameter wird standardmäßig aufEmptyCoroutineContextfestgelegt. (If400c, b/450540702) UnplacedStateAwareModifierNodewurde inUnplacedAwareModifierNodeumbenannt (I6a551, b/449719932)- Optimierung der Inhaltserfassung rückgängig machen (Ic000b, b/442364065)
- Feature-Flag
ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabledhinzugefügt. Dadurch konnte die Leistung optimiert werden, da bei Koordinatenanfragen wieLayoutCoordinates.positionInRoot()die zwischengespeicherten Offsets verwendet werden, die wir bereits inRectManagerhaben, anstatt den gesamten Baum bei jedem Aufruf zu durchlaufen. (Ieaadc)
Fehlerkorrekturen
PlaceholderSpanverwendet jetzt für die Größenanpassung die nicht lineare Schriftgrößenskalierung (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 mit anderen Ansichten in der Hierarchie wurde behoben. (I95223, b/446028624)
- Behebt das Problem, dass Felder mit Inline-Parametern, die in Lambdas fehlen, die von Kotlin 2.2.20 generiert wurden, nicht im Inspector angezeigt werden (I9855d, b/447110005)
- Behebt das Shadowing von Namen von Autofill-Ressourcen zwischen UI- und Foundation-Modulen (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.isRectTrackingEnabledwurde entfernt. Diese Logik ist nicht immer aktiviert. (Id78df)- Inline-Überladung von
Updater#setwurde eingestellt, da der bereitgestellte Wert zu oft in eine Wrapperklasse eingeschlossen wurde (Id679e). - Die semantische Eigenschaft
onAutofillTextals veraltet markieren. (I6f81c) UnplacedStateAwareModifierNodewurde 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.onRetainedwurde korrigiert undRetainObserver.onUnusedwurde hinzugefügt, wasRememberObserver.onAbandonedentspricht. (Ia6fc5) onVisibilityChangedNode()wurde hinzugefügt. Es wird einModifier.Nodeerstellt, das vonModifier.onVisibilityChanged()über die Delegierung verwendet wird. So lässt sich diese Funktion in Ihrem benutzerdefiniertenModifier.Nodeerweitern. (I70d84, b/443001320)
Fehlerkorrekturen
- Ein Problem wurde 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.invalidateLayoutForSubtreeinDelegatableNode.invalidateMeasurementForSubtreeum. (I94257, b/430106107) - Entfernt redundante
isInHiddenAccessibilitySubtree-Matcher. (I4476c, b/443792965) - Führt gruppenbasierten Compose-Stacktraces ein, 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.skipToLookaheadSizeverwendet jetzt standardmäßig eine aktivierte Lambda-Funktion, die das Überspringen der Größe nur dann ermöglicht, wenn der gemeinsame Übergang aktiv ist, genau wieModifier.skipToLookaheadPosition. (Ibe0f5, b/432485585)ComposeUiFlags.isOutOfFrameDeactivationEnabledwurde entfernt und diese Funktion ist jetzt immer aktiviert. (I421ed)- Factory-Funktionen zum Erstellen von
FillableData-Instanzen in das Companion-Objekt verschieben. Rufen Sie anstelle vonFillableData(value)die neuen Factory-MethodenFillableData.createFrom(value)auf. (I2e200, b/441719650) - Wir führen
BeyondBoundsLayoutModifierNodeeinen neuen Modifikator-Knoten ein, um das Layout für die Fokus-Suche über die Grenzen hinaus zu erweitern. (I39be1, b/416133658) FocusTargetModifierNode.requestFocus()verschiebt den Fokus auf eines seiner untergeordneten Elemente, wenn es selbst nicht fokussierbar ist. Dies entspricht jetztFocusRequester.requestFocus()undFocusRequesterModifierNode.requestFocus(). Wenn Sie dieses Verhalten nicht benötigen, legen Sie das FlagComposeUiFlags.isRequestFocusOnNonFocusableFocusTargetEnabledin Ihrer App auf „false“ fest. (Icca5c, b/436863604)- DP-basierte Fenstergröße in
WindowInfoangeben (I9322b, b/424442112) - Das Flag
isNestedScrollDispatcherNodeFixEnabledwurde entfernt. (If451a) - Unterstützung für Datumswerte beim automatischen Ausfüllen in der
FillableDataAPI hinzugefügt.val dateMillisValue: Longwurde hinzugefügt, um Datumsangaben abzurufen, und ein entsprechenderFillableData(dateMillisValue: Long)-Konstruktor wurde hinzugefügt, um datumsbasierteFillableData-Instanzen zu erstellen. (Id072a)
Externer Beitrag
- Das
UiModes-Objekt wird eingeführt, um Konstanten zu deklarieren, die für dieUiMode-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 nicht textbasierte Komponenten wie Ein/Aus-Schalter und Listen zu unterstützen, einschließlich boolescher und ganzzahliger Werte inFillableDataund Factory-Konstruktoren zum Erstellen boolescher und Listeninstanzen vonFillableData, die in dieAutofillValueder 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 wurde in Compose eingefügt und kann durch Aktivieren von
ComposeUiFlags.isInitialFocusOnFocusableAvailableaktiviert werden. (Ib9178) - Das Flag
isPointerInteropFilterDispatchingFixEnabledwurde entfernt. (Iaa589) - Das Flag
isNestedScrollInteropPostFlingFixEnabledwurde entfernt. (I2a756) - Fügen Sie
isHiddenFromAccessibility()- undisInHiddenAccessibilitySubtree()-Semantik-Matcher hinzu. (I9f5a1) runCurrent()wurdeMainTestClockhinzugefügt, um alle fälligen Aufgaben im zugrunde liegenden Scheduler auszuführen. Dies dient zur Unterstützung von Tests auf einemStandardTestDispatcher, 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 eineStandardTestDispatchereingerichtet werden, indem Sie eineComposeTestRuleerstellen und eineStandardTestDispatcheran sie übergeben. Standardmäßig werden Tests auf einemUnconfinedTestDispatcherausgeführt. In diesem Fall mussrunCurrent()nie aufgerufen werden.- Unterstützung für das Ausführen von Tests auf einem
StandardTestDispatcherwurde hinzugefügt. Bisher wurde das Test-Framework mit einerUnconfinedTestDispatchereingerichtet, die sich in einigen Punkten von einer Produktionsumgebung unterscheidet. Sie können diese Einrichtung jetzt ändern, indem Sie Ihre eigeneStandardTestDispatchererstellen und sie dereffectContexthinzufügen, wenn Sie IhreComposeTestRuleerstellen (oder wenn Sie runComposeUiTest aufrufen). (I334d0, b/254115946) - Aktualisieren Sie den Code, um einen Baum von Knoten aus
SlotTreezu erstellen. (I997d3)
Fehlerkorrekturen
- Compose UI installiert jetzt lebenszyklusbewusste
RetainScopesunter Android. Beim Standardverhalten werden jetztretain-Werte bei Konfigurationsänderungen beibehalten. (Id4a09, b/177562901)
Externer Beitrag
- Fügt die Möglichkeit hinzu, dass
VelocityTrackerdie Geschwindigkeit eines Zeigers basierend auf erfassten Zeigerereignissen unter Verwendung plattformspezifischer Verhaltensweisen 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
ComposeViewwird der Fokus jetzt automatisch entfernt, wenn die Zeigerbewegung nicht innerhalb der Grenzen des fokussierten Knotens erfolgt. Dies führt zu einer 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 neuenAbstractComposeView.isClearFocusOnPointerDownEnabledAPI deaktiviert werden. (I6322b, b/282963174) - Die
FillableData-Schnittstelle wurde eingeführt, um verschiedene Arten von Autofill-Komponenten zusätzlich zu Text zu unterstützen. (If9bd2) - Neue API zum dynamischen Aktivieren und Deaktivieren von freigegebenen Elementen, mit der auch berücksichtigt werden kann, ob bereits ein Übergang für ein freigegebenes Element läuft. Neue API zum Einrichten alternativer Zielgrenzen, wenn das gemeinsame Zielelement während des Übergangs entfernt wird. Neue API zum Abrufen der
LayoutCoordinateseinerLookaheadScope. (I18dd4, b/409819304, b/395670637) - Das Flag
isNestedScrollInteropIntegerPropagationEnabledwurde eingeführt, um den Test zum Senden korrekter Ganzzahlen an die verschachtelte Scroll-Interop zu steuern. (If8316) requestFocusForChildInRootBounds()wurde zuDelegatableNodehinzugefü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 Annotation
@CheckResultwurde den Finder- und SelektorfunktionenSemanticsNodehinzugefü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 sich Anwendungsfälle in
MouseInjectionScopetesten lassen. Außerdem haben wir eine neue Überladung für Scrollmethoden inMouseInjectionScopeund ein Flag zur Steuerung des neuen Verhaltens namensisMouseWheel1DAxisLockingEnabled(I136df) eingeführt. DeviceConfigurationOverridesfür Tastaturtyp und -status, Navigationstyp und -status, Touchscreen-Status und UI-Modustyp hinzugefügt (I282f0)- Es wurde ein neues
LineHeightStyle.ModenamensTighthinzugefügt. In diesem Modus werden auch dann kleinere Zeilenhöhen erzwungen, wenn dadurch möglicherweise höhere Glyphen abgeschnitten werden. (Id3849) BaselineShifthat jetzt einen „Unspecified“-Wert, um Boxing zu verhindern.BaselineShift,Hyphens,LineBreak,TextAlignundTextDirectionhaben jetztisSpecified-Hilfsfunktionen.Hyphens,TextAlign,TextDecorationundTextDirectionhaben jetztvalueOf()- 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. Die Verwendung von
Dp.compareTo(Unspecified)gibt immer 0 zurück. Wenn Sie das FlagComposeUiUnitFlags.isDpCompareToChangedauf „false“ setzen, wird das vorherige Verhalten vonDp.compareTo()wiederhergestellt. In diesem Fall wird beim Vergleich von „Unspecified“ mit „less-than“ und „greater-than“ nicht immer „false“ zurückgegeben undcompareTo()mit „Unspecified“ entspricht dem Verhalten vonFloat.compareTo(). (Ifa88b, b/429221319)
Fehlerkorrekturen
- Die Standard-minSdk-Version wird von API 21 auf API 23 aktualisiert (Ibdfca, b/380448311, b/435705964, b/435705223).
- Es wurde ein Problem behoben, das das Erstellen neuer
AndroidComposeViewswä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
fillColorweder vollständig undurchsichtig noch vollständig transparent ist. (I3b041, b/328677973) - Ein Problem wurde behoben, bei dem Symbole, die über
painterResourcemit designspezifischen Farben geladen wurden, bei Designänderungen nicht aktualisiert wurden. (I85ea0, b/424416571) - Einführung der Semantik von
onFillDataundfillableData(I45d9e) - Die plattformspezifische Statuscodierung ist jetzt in
StateRestorationTesterimmer aktiviert. Dadurch wird das Testverhalten an die Wiederherstellung des tatsächlichen Anwendungsstatus angepasst, z. B. die Parcelisierung 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, wenndebounceMillisnicht 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
- Ein Fehler wurde 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()undonLayoutRectChanged()werden jetzt übergeordnete Layouts mitplaceWithLayer()zum Platzieren untergeordneter Elemente richtig verarbeitet. (Ia05ac9) - Bei
Modifier.onVisibilityChanged()undonLayoutRectChanged()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
fillColorweder vollständig undurchsichtig 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 Blogbeitrag 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 Ihrergradle.propertiesverwenden. Um Compose-Lint-Prüfungen in der IDE auszuführen, ist Android Studio Ladybug oder höher erforderlich. - Wichtige Änderung: Die Modifikatorknoten
graphicsLayerimplementieren jetztSemanticsModifierNode. Dies kann dazu führen, dass dem Semantikbaum neueSemanticsNodeshinzugefügt werden, was wiederum zu Testfehlern in Tests führen kann, die Annahmen über die Struktur des Semantikbaums treffen. Tests, in denenonChild,onParent,onSiblingund ä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 eintestTaghinzuzufügen. Ein weiterer Ansatz ist die Verwendung eines weniger strengen Abgleichs, z. B.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
painterResourcemit designspezifischen Farben geladen wurden, bei Änderungen des Systemdesigns nicht aktualisiert wurden. (I85ea0, b/424416571) - Behebt Fehler in den APIs 21(Lollipop) und 28(Pie), bei denen wichtige Grafikmethoden umbenannt wurden, während sie optimiert wurden. (Iebf99, b/425120571, b/420462749)
- Achten Sie darauf, dass neu eingefügte
onLayoutRectChanged-Modifikatoren anfangs zurückgerufen werden. (l9aa91), (lb348a) - Korrektur für einen Offset-Cache, der fälschlicherweise ungültig gemacht wurde, wodurch
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, durch das
dragAndDropSource-Elemente inLazyListbeim Scrollen verschwanden. Vielen Dank an 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
- Das Companion-Objekt wird als experimentell gekennzeichnet, um der Klasse zu entsprechen. (I8452a)
- Das experimentelle Flag
isTrackFocusEnabled(I003fd) wurde entfernt.
Fehlerkorrekturen
- Wenn keine
WindowInsetsin den Inhalt derComposeVieweingreifen, werden keineWindowInsetsRulers-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 jetztSemanticsModifierNodeimplementiert. Dies kann dazu führen, dass dem Semantikbaum neueSemanticsNodeshinzugefügt werden, was wiederum zu Testfehlern in Tests führen kann, die Annahmen über die Struktur des Semantikbaums treffen. Tests, in denenonChild,onParent,onSiblingund ä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 eintestTaghinzuzufügen. Ein weiterer Ansatz ist die Verwendung eines weniger strengen Abgleichs, z. B.onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)
API-Änderungen
ShadowContextwurde in eine versiegelte Schnittstelle geändert (I3ce40)- Es wurde eine modulübergreifende Möglichkeit zum Erstellen eines indirekten Touch-Ereignisses (zum Testen) hinzugefügt (I22e4c).
- Macht
IndirectTouchEvent.nativeEventexperimentell. (I6fda5) - Die API-Oberfläche wird auf Grundlage des Feedbacks des API-Gremiums überarbeitet. (Ibf378)
- Entferne die Konstante
FrameRateCategory.NoPreference. Benennen SieModifier.requestedFrameRateinModifier.preferredFrameRateum. (I2f976) WindowInsetsRulers:rulersIgnoringVisibilityauf „Maximum“ geändert.getDisplayCutoutBounds()wurde in eine Erweiterungsfunktion vonPlacementScopegeändert.WindowInsetsAnimationPropertieswurde inWindowInsetsAnimationundgetAnimationProperties()ingetAnimation()geändert. (I3816f)- Klasse
ShadowParamszuShadowgeändert (I11cca) - Paket für die Frame-Rate-API von
androidx.compose.ui.uiinandroidx.compose.uiändern (I8994e) InsetsRulerswurde in gemeinsamen Code mit dem NamenWindowInsetsRulersgeändert. Die API wurde vereinfacht, sodass alle InsetsWindowInsetsRulerssind. Die Animationsattribute für nicht Lineale wurden in eineAnimationProperties-Klasse extrahiert. MitWindowInsetsRulers.innermostOf()können mehrereWindowInsetsRulerszusammengefü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
isGetFocusedRectReturnEmptyEnabledwurde entfernt, da die Funktion vollständig überprüft wurde. (Ife722) - Behebung eines Fehlers in
performScrollToNode, der in einigen Fällen den Zielknoten nicht 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-Eigenschaft 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 bei der Berechnung der Grenzen nicht berücksichtigt werden soll. (I7ebec) - Fügen Sie eine
SemanticsPropertyKey-Factory-Funktion hinzu, um Android-spezifische Semantikeigenschaften zu deklarieren, die als Bedienungshilfen überAccessibilityNodeInfo.getExtrasverfügbar gemacht werden. (I2ed51) - Die Verwendung von
ComposeUiFlags.isRemoveFocusedViewFixEnabledwurde entfernt und das Flag wurde eingestellt. (I50328) - Neues anpassbares Schatten-Framework Dazu gehören
DropShadowPainterundInnerShadowPaintersowie dieDropShadow/InnerShadow-Abhängigkeiten. Die Schatteninfrastruktur wird so freigegeben, dass dieselben generierten Schatten an mehreren Call-Sites verwendet werden können, ohne dass die Schatten n-mal neu generiert werden müssen. (I24f7a, b/160665122) - Führen Sie
CompositeShaderundCompositeShaderBrushein, um ein zusammengesetztes Ergebnis zwischen zwei Shadern zu erstellen. Fügen Sie außerdemShaderBrush#transformhinzu, um eine Transformationsmatrix für den Shader festzulegen. (I2621a, b/160665122)
Fehlerkorrekturen
- Ein Fehler in
NestedScrollInteropConnectionwurde behoben, bei dem Fling-Methoden in Bezug auf Ansichten in der falschen Reihenfolge waren. (I56ad4) - Bisher wurden Dialogfelder, die den gesamten Bildschirm einnahmen, nicht im Bereich des Displayausschnitts gezeichnet. Dieser Fehler wurde behoben, sodass Dialogfelder mit
decorFitsSystemWindows = falseundusePlatformDefaultWidth = falsedie Display-Aussparung berücksichtigen können. (I9e975) - Ein Fehler wurde behoben, bei dem die grüne Fokusanzeige von
TalkBacknicht 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.isGetFocusedRectReturnEmptyEnabledwird festgelegt, dass das Rechteck auf einen leeren Wert gesetzt wird, wenn in einemComposeViewnichts fokussierbar ist. Dadurch wird verhindert, dass bei einer Fokus-Suche die Ansicht ausgewählt wird, auf die sich konzentriert werden soll. Das ist besonders wichtig, wenn eine IME eine NEXT-Option hat, bei der versucht wird, den Fokus aufComposeViewzu legen, undrequestFocus()fehlschlägt. (Ibd0e2, b/369256395) - Einführung des Flags
isNestedScrollDispatcherNodeFixEnabled. (I0d24a) DialogPropertiesdialogContentTitleinwindowTitleumbenennen (Ibd27b)- Die Modifikatoren
Modifier.onFirstVisibleundModifier.onVisibilityChangedwurden eingeführt. Sie sind Modifikatoren auf hoher Ebene, die aufModifier.onLayoutRectChangedbasieren. 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ürRelativeLayoutBoundshinzugefü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
setDiagnosticStackTraceEnabledin „experimental“, um die zukünftige Entwicklung dieser Funktion zu berücksichtigen. (I11db3) - Einführung von
Modifier.scrollable2D,Scrollable2DStateund Companion-APIs für die Statuserstellung. Außerdem wurden allgemeine Funktionen für Scroll-Erweiterungen eingeführt. (Ic61c8, b/214410040) - Compose-64-Bit-Farbwerte sind nicht direkt mit Android-
ColorLongsvergleichbar, 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()undfromColorLong(). (I36899) ViewConfiguration.minimumFlingVelocitywurde eingeführt, um die Steuerung der Mindestgeschwindigkeit für das Wischen 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
dialogContentTitleinDialogPropertiesein, um den Titel des Inhaltsfensters festzulegen. bf9d670
Fehlerkorrekturen
- Die Lineale für Window Insets wurden vorübergehend deaktiviert, während interne Tests korrigiert werden. 8d1402
- Es wurde korrigiert, wie Änderungen an der Zeigereingabe in
VelocityTrackerinDragGestureNodehinzugefügt werden. Dies kann mit dem neuen FlagisAdjustPointerInputChangeOffsetForVelocityTrackerEnabledgesteuert 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.
Geändertes 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 Ihrergradle.propertiesverwenden. Um Compose-Lint-Prüfungen in der IDE auszuführen, ist Android Studio Ladybug oder höher erforderlich.
API-Änderungen
- Entfernt das Flag, um Trace-Anweisungen für den Hit-Path-Tracker zu aktivieren (Debug). (I1b2a1)
InnerRectRulersundOuterRectRulessind jetzt Methoden. Der Parameter „name“ wurde aus der öffentlichen APIRectRulersentfernt.DerivedRulersist jetzt eine Konstruktoroption für vertikale und horizontale Lineale.MergedHorizontalRulersundMergedVerticalRulerswurden durch die MethodenminOfundmaxOfzum Generieren von Instanzen ersetzt. (Iee89f, b/408192133)androidx.compose.ui.LocalSavedStateRegistryOwnerzugunsten vonandroidx.savedstate.compose.LocalSavedStateRegistryOwnereinstellen (I5439f, b/377946781)- Füge ein
Modifier.keepScreenOnhinzu, damit das Display nicht in den Ruhemodus wechselt, wenn das Gerät verwendet wird (Ib5af4, b/408284174). - Fügen Sie eine neue Semantikeigenschaft
Shapehinzu, 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) - Ein Problem mit dem Dispatching von Zeigerereignissen in
AndroidViewswurde behoben. Außerdem wurde das FlagisPointerInteropFilterDispatchingFixEnabledhinzugefügt, um Änderungen zu schützen. (I0e272, b/372055500, b/408002332) FocusRestorerpinnt 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 „Compose“
ViewTreeObserver.OnScrollChangedauslöst. Dieses Verhalten wird unter dem FlagisOnScrollChangedCallbackEnabledeingeführt. Außerdem haben wir eine Erweiterungsfunktion vonDelegatableNode dispatchOnScrollChangedeingeführt. (I34b9d, b/238109286) currentCompositeKeyHashwurde eingestellt. Verwenden Sie stattdessencurrentCompositeKeyHashCode. 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
FocusRequesterhinzugefügt, damit der Wert in der Komposition gespeichert 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
MotionEventauf Android verfügbar machen. (I17286) getChecked() + setChecked(int)hinzufügen,isChecked + setChecked(boolean)verwerfen (Iaac9d)- Der
graphicsLayer-Modifikator akzeptiert jetzt einenblendModeund einencolorFilter(Iab0e6). - Die Komposition
LocalResourceswurde lokal hinzugefügt, um Ressourcen abzufragen. Beim Aufrufen vonLocalResources.currentwird die Komposition neu erstellt, wenn sich die Konfiguration ändert. Aufrufe von APIs wiestringResource()geben dann aktualisierte Werte zurück. (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 Testsuite. Diese Ausnahmen können jetzt besser gemeldet werden, ohne dass die Testsuite beendet wird. (I9928b, b/314128080)
- Die experimentelle
GlobalAssertionsAPI wurde eingestellt. Es war für die Ausführung von Barrierefreiheitsprüfungen vorgesehen. Verwenden Sie stattdessenenableAccessibilityChecks(). (I50aa5) SemanticsNodeInteraction.performTextInputSelectionist nicht mehr experimentell und unterstützt jetzt einen zusätzlichenrelativeToOriginal-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)- API zum Erstellen benutzerdefinierter Aufzählungslisten über
AnnotatedStringeinführen (I1d066, b/383269496, b/139326648) runWithTimingDisabledwird zugunsten vonrunWithMeasurementDisabledeingestellt, da dieser Status das Verhalten klarer beschreibt: Alle Messwerte werden pausiert. Außerdem wird dieMicrobenchmarkScope-Superklasse verfügbar gemacht, da dierunWithMeasurementDisabled-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, um neuere Geräte einzuschließen. (Ia2ac1)
- Tablet-Hochformat in die Sammlung der Vorschau-Bildschirmgrößen aufnehmen, 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.setCounterimplementiert. (Idcf48)
Fehlerkorrekturen
- Das Versenden von Remember-Beobachtern in pausierbaren Composables wurde korrigiert, um zu vermeiden, dass „remembered“/„forgotten“ im selben Apply-Vorgang gesendet werden (I570b2, b/404645679, b/407931790).
android:dialogThemekann jetzt festgelegt werden, um die Dialogfeldeigenschaften zu steuern, wenndecorFitsSystemWindowsauf „false“ gesetzt ist (I7922f, b/246909281).- Ein Fehler wurde behoben, durch den 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.2in gradle.properties festlegen, um die Lint-Version zu aktualisieren, ohne AGP zu beeinträchtigen. (I6f2a8) - Es wurde die neue Semantikeigenschaft
InputTexthinzugefügt, die den Wert vontextfielderfasst, 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, diecompose:ui:ui-test-accessibilitysind, wenn SieTestRuleundcompose:ui:ui-test-junit4-accessibilitynicht beim Aufrufen vonTestRuleverwenden (I3c318, b/391560768). - Unterstützung für Compose-Stacktraces in
LaunchedEffectundrememberCoroutineScopehinzugefü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 FunktionrunComposeUiTestfü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
isGetFocusedRectReturnEmptyEnabledwurde entfernt, da die Funktion vollständig überprüft wurde. (Ife722) - Mit dem Flag
ComposeUiFlags.isGetFocusedRectReturnEmptyEnabledwird festgelegt, dass das Rechteck auf einen leeren Wert gesetzt wird, wenn in einemComposeViewnichts fokussierbar ist. Dadurch wird verhindert, dass bei einer Fokus-Suche die Ansicht ausgewählt wird, auf die sich konzentriert werden soll. Das ist besonders wichtig, wenn eine IME eine NEXT-Option hat, bei der versucht wird, den Fokus aufComposeViewzu legen, undrequestFocus()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
- Es wurde ein NPE behoben, das auftrat, wenn ein Dialogfeld während eines aktiven Ereignisstreams für das Dialogfeld entfernt wurde (6a7e7f).
- Das Problem, dass
onLayoutRectChangebei Draw-only-Updates nicht gemäß der gedrosselten Zeitachse aktualisiert wird, wurde behoben. (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
onLayoutRectChangedundLazyLayoutbeheben d791b11 - Anfragen zum erneuten Messen für vorkomponierte Elemente ü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 bietet 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 das automatische Ausfüllen von Textkomponenten die neuesten Versionen beider Module erforderlich sind. Weitere Informationen zur API-Nutzung und Beispiele finden Sie in der Dokumentation zur Autofill-Funktion hier.
- Compose 1.8 unterstützt zusätzliche Arten von haptischem Feedback:
Confirm,ContextClick,GestureEnd,GestureThresholdActivate,Reject,SegmentFrequentTick,SegmentTick,ToggleOn,ToggleOff,VirtualKey. Der Zugriff erfolgt überLocalHapticFeedback. Unter Android ist diese Funktion standardmäßig verfügbar, wenn die Vibrator API angibt, dass Haptik unterstützt wird. - Mehrere Focus APIs sind jetzt stabil, darunter
Modifier.focusRestorer(),onEnterundonExitFocusProperties(I6e667). Sie können jetzt eineFocusDirectionangeben, wenn SierequestFocusaufrufen. Wir haben sowohlfocusRequesterals auchFocusTargetModifierNodeeinerequestFocus(FocusDirection)API hinzugefügt, um das Fokussieren in einer bestimmten Richtung zu ermöglichen. (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256)
Version 1.8.0-rc03
9. April 2025
androidx.compose.ui:ui-*:1.8.0-rc03 ist veröffentlicht. Version 1.8.0-rc03 enthält diese Commits.
Fehlerkorrekturen
- Deaktiviert einige Interop-Korrekturen für den Fokus, die zu einer Regression geführt haben. (b9d998, b/369256395, b/378570682, b/376142752, b388590015/, b/389994198, b/391378895)
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 eingebettete fokussierte Ansichten in der Compose-Hierarchie 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
AndroidViewbei aktiver Softwaretastatur 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
LaunchedEffectverwendet 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, diecompose:ui:ui-test-accessibilitysind, wenn Sie die TestRule nicht verwenden, undcompose:ui:ui-test-junit4-accessibility, wenn SieTestRuleaufrufen (I547ef, b/391560768). - Es wurde die neue Semantikeigenschaft
InputTexthinzugefü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/heightDpzu warnen. Stattdessen kannLocalWindowInfo.current.containerSizeverwendet 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
ContextualFlowRowundContextualFlowColumnwurden 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 abdeckt, für die diese Komponente vorgesehen war.FlowRowundFlowColumnhaben experimentelle Überladungen, die in Version 1.7 eingeführt wurden und einenoverflow-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
ContextualFlowRowlassen sich mit FlowRow umsetzen. Das ist jedoch nicht immer möglich.ContextualFlowRowkann vollständig im Userspace 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 stattdessenSemanticsNodeInteraction.fetchSemanticsNode().id. (Ie397a)- Die alten APIs für das automatische Ausfüllen werden nicht mehr unterstützt. Verwenden Sie stattdessen die neue semantikbasierte API. (I943ff)
- Die
requestAutofillAPI soll außerhalb des Autofill-Managers vorhanden sein. (Id1929)
Fehlerkorrekturen
- Ein Fokusproblem wurde behoben, bei dem bei
requestFocus()mit einem unsinnigenpreviouslyFocusedRect-Parameter (bezogen auf die Fokusrichtung) einComposeViewübersprungen wurde. (Ifdc2f, b/388590015) - Es wurde ein gelegentliches NPE bei der Verwendung von
GraphicsLayer.record { this@ContentDrawScope.drawContent() }behoben. Wenn SiedrawContent()auf diese Weise aufzeichnen, verwenden Sie die ErweiterungsfunktionGraphicsLayer#recordinDrawScopeund nicht die Memberfunktion fürGraphicsLayer. (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
AutofillManagerals abstrakte Klasse festlegen. (I0a3b0)- Es wurden mehrere Probleme im Zusammenhang mit dem Fokus behoben, darunter Abstürze, wenn die IME versucht, den Fokus auf
ComposeViewohne fokussierbare Elemente zu legen, Fokusänderungen innerhalb des untergeordnetenAndroidViewsund Fokusanforderungen, die einAndroidViewhinterlassen. (Ia03c3, b/369256395, b/378570682, b/376142752) - Ändern Sie
FocusEnterExitScope.cancelFocus()zucancelFocusChange()(I89959). - Sie können jetzt mit
RectInfo.calculateOcclusions()zusammensetzbare Verdeckungen berechnen. - Es wurde eine Erweiterungsfunktion für
DelegatableNodehinzugefügt, um einen Listener für globale Layoutänderungen zu registrieren. (I68b59)
Fehlerkorrekturen
- Die Aktivität, die als Host für das zu testende Composable verwendet wird, wenn
ComposeContentTestRule.setContentverwendet wird, verwendet jetzt das ThemeTheme.Material.Light.NoActionBar, um zu vermeiden, dass sichActionBarmit Testinhalten überschneidet, wenn SDK 35 als Ziel-SDK verwendet wird. Wenn Sie dieses Verhalten deaktivieren möchten, können Sie die Abhängigkeit vonui-test-manifestentfernen und einen Aktivitätseintrag in der AndroidManifest.xml-Datei Ihrer Test-App fürComponentActivitymit 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.fromHtmlunterstützt jetzt<ul>/<li>-Tags. (I7c2fe, b/299662276, b/139326648)
Externer Beitrag
- Eine neue Zwischenablage-Schnittstelle und ein Kompositions-Local für diese Schnittstelle wurden 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
LayoutNodewurde für Tools offengelegt. (I26f7f) - Für die lokale Verwendung der
LocalAutofillHighlightColor-Zusammensetzung wird ein Farbtyp verwendet. (I0e05b) - Lassen Sie die eingestellte
UrlAnnotationund ihre Methoden als experimentell gekennzeichnet. (Ic0021)
Fehlerkorrekturen
- Absturz von
IndexOutOfBoundsExceptionbei Verwendung vonLinkAnnotationin derBasicText- oder Text-Composable behoben (be7605, b/374115892) - Ein Problem wurde behoben, durch das die Indikatorlinie in ausgefüllten Textfeldern mit benutzerdefinierter Form nicht abgeschnitten wurde. (I4f87f, b/380704151)
- Fehlende Hintergründe bei langen Screenshots wurden behoben. (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)
- Ressourcen-Schriftarten, die nicht geladen werden können, werden jetzt stillschweigend auf die Standardschriftart zurückgesetzt. Bisher wurde in diesem Fall eine Ausnahme ausgelöst. (Ib6a49)
- Das Problem, dass der Fokus verloren geht, wenn
AndroidViewgetrennt und wieder verbunden wird, wurde behoben. (I53446) - Akzeptieren Sie
requestFocus()aus der Layoutaktion „Beyond Bound“. (Ia8461)
Externer Beitrag
BringIntoViewResponderModifierNodein die Benutzeroberfläche einfügen, um eine neue Möglichkeit zur Implementierung der Funktion „In den Blickpunkt rücken“ zu bieten und die Implementierung auf Plattformebene zu ermöglichen. (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 den Modifikator
stylusHoverIconhinzu. (Iff20a, b/331289114) - Ändert den Autofill-Manager in eine Schnittstelle. (I84914, b/376080755)
- Fügt
requestFocus(FocusDirection)sowohlfocusRequesterals auchFocusTargetModifierNodehinzu, um die Fokussierung in einer bestimmten Richtung zu ermöglichen. (I5d9ec, b/245755256) FocusProperties.enterundFocusProperties.exitwurden durchonEnterundonExitersetzt. Dabei wird ein Empfängerbereich anstelle des ParametersFocusDirectionverwendet. (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.
- Der Parameter ist jetzt ein
FocusRequesterund kein Lambda. - Der Parameter ist jetzt nicht mehr NULL und der Standardwert ist „Default“.
- Die Annotation
@Experimentalwird aus der Autofill-Manager-Schnittstelle entfernt. Das Feature ist noch in Arbeit und soll in dieser Version eingeführt werden. Wir möchten jedoch nicht die @Experimental API (Id8398) einführen. LocalHapticFeedbackbietet jetzt eine Standardimplementierung vonHapticFeedback, wenn die Vibrator API angibt, dass Haptik unterstützt wird. Die folgenden Elemente wurden derHapticFeedbackTypehinzugefügt:Confirm,ContextClick,GestureEnd,GestureThresholdActivate,Reject,SegmentFrequentTick,SegmentTick,ToggleOn,ToggleOff,VirtualKey. Bei Wear Compose-Komponenten, die lange angeklickt werden können, z. B.Button,IconButton,TextButtonundCard, wird jetzt das haptische FeedbackLONG_PRESSausgelöst, wenn ein Handler für langes Klicken angegeben wurde. (I5083d)- Entfernt
OverscrollConfigurationundLocalOverscrollConfigurationund fügtrememberPlatformOverscrollFactoryhinzu, um eine Instanz der Standardimplementierung für das Overscroll-Verhalten zu erstellen oder Parameter anzupassen. Verwenden SieLocalOverscrollFactory provides nullanstelle vonLocalOverscrollConfiguration provides null, um das Overscroll-Verhalten zu deaktivieren. Wenn Sie die Farbe oder das Padding des Glühens ändern möchten, verwenden Sie anstelle vonLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding). (Ie71f9, b/255554340, b/234451516) - Die experimentelle
GlobalAssertionsAPI wurde entfernt. Es war für die Ausführung von Barrierefreiheitstests vorgesehen. Verwenden Sie stattdessenenableAccessibilityChecks(). (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 Feature-Flag verfügbar. 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.isSemanticAutofillEnabledinonCreateauf „true“ und verwenden Sie den neuesten Compose-Snapshot. - In dieser Version von „Automatisches Ausfüllen“ werden Anmeldedaten manuell, über „Starkes Passwort vorschlagen“ und über die Navigation gespeichert. Außerdem wird das Ausfüllen unterstützt, wenn ein automatisch ausfüllbares Feld den Fokus erhält oder wenn das automatische Ausfüllen über die Textsymbolleiste für Textkomponenten ausgelöst wird. Die Komponente wird hervorgehoben, wenn die automatische Vervollständigung abgeschlossen ist.
API-Änderungen
- Die Autofill-Oberfläche wurde an die Struktur von
expect/actualangepasst. (I22dce) - Einführung von
CompositionLocal, mit dem der Farbton der Hervorhebung für das erfolgreiche Ausfüllen durch Autofill geändert werden kann. (I32092) - Die
Modifier.onRectChangedAPI wurde hinzugefügt. Mit dieser API kann man die relativ zur Root-, Fenster- oder Bildschirmposition und -größe einerLayoutNodeabonnieren. Die API löst viele Anwendungsfälle, die der vorhandeneonGloballyPositioned-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()undcancel(), 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 einisSemanticAutofillEnabled-Flag zum Aktivieren dieser neuen Version von Autofill. (I9d484) - Die
Modifier.onRectChangedAPI wurde hinzugefügt. Mit dieser API kann man die positions- und größenbezogenen Informationen einesLayoutNodeabonnieren, die relativ zum Stamm, Fenster oder Bildschirm sind. Die API löst viele Anwendungsfälle, die der vorhandeneonGloballyPositioned-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 hinzugefügt. (I52c7d)
- Alle Methoden im
AnnotatedString-Builder sind jetzt nicht mehr experimentell (Ia89c8, b/261561823).
Fehlerkorrekturen
- In Compose eingebettete Ansichten können jetzt Drehknopfereignisse 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, das verhinderte, dass
TextFieldbei Verwendung der POBox-Tastatur für Japanisch auf bestimmten älteren Sony-Geräten richtig funktionierte. (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
decorFitsSystemWindowsauf „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#onDensityChangeundDelegatableNode#onLayoutDirectionChangehinzu, damit der Knotenstatus aktualisiert werden kann, wenn sich diese ändern (I04f3e, b/340662451) - Fügt
WindowInfo#containerSizehinzu, um die Größe des Inhaltscontainers des aktuellen Fensters anzugeben. Sie kann mitLocalWindowInfoabgerufen 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 nun ab und senden das
onPostFling-Ereignis mit der verbleibenden Geschwindigkeit. Außerdem führen wir das FlagNewNestedScrollFlingDispatchingEnabledein, um das Verhalten bei Regressionen zu steuern. Die Kennzeichnung wird vor der Betaphase entfernt. (I05c37, b/371168883) PointerInputModifierNode#touchBoundsExpansionwurde eingeführt, um die Berührungsbegrenzungen eines einzelnen Zeigereingabe-Modifikators zu vergrößern. (Iccf02, b/335339283)- Fügt
WindowInfo#containerSizehinzu, um die Größe des Inhaltscontainers des aktuellen Fensters anzugeben. Sie kann mitLocalWindowInfoabgerufen werden. (I27767, b/369334429, b/360343819) - Entfernen Sie
readOnlyausTextFields, um die stabile Fundamentversion zu verwenden. (I3aaba) ParagraphundParagraphIntrinsicsenthalten jetzt eine Liste aller Anmerkungen, die aufAnnotatedStringangewendet werden. Zuvor enthielten sie nur eine Liste vonSpanStyles(I12f80).
Fehlerkorrekturen
- Die Behandlung von Absätzen in
AnnotatedStringwurde aktualisiert. Bisher konnten Sie nur nicht überlappende Absätze erstellen. Mit demAnnotatedStringsind 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
AnnotatedStringmit einemLinkAnnotationder Länge null 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
- Aktualisierung der Kotlin-Version auf 1.9 (I1a14c)
- Es wurde eine neue Semantikrolle namens „Carousel“ eingeführt, um das Listenverhalten in Pager-Elementen für Barrierefreiheitsdienste zu emulieren. (Id354b, b/354109776, b/239672673)
- Benennen Sie
invisibleToUser()inhideFromAccessibilityum. Die Funktion bleibt unverändert. Weitere Informationen finden Sie in der Dokumentation. (Ib43a3)
Fehlerkorrekturen
- Dokumentation für den Modifikator
SensitiveContentaktualisieren (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, bei dem leere Clips angewendet wurden, wenn auf bestimmten Android-Versionen generische Umriss-Clips angegeben wurden.
- Es wurde ein Fehler behoben, der auftrat, wenn die IME in einer externen Ansicht aktiv war und die Aktion „Weiter“ verwendet wurde, um den Fokus auf das
ComposeViewzu setzen. DasclearFocus()-Verhalten entspricht dem View-Verhalten bei API < 28, wobeiclearFocus()dazu führen kann, dass der Standard-View fokussiert wird. - Ein Problem wurde behoben, bei dem die Platzierung auf getrennten Knoten in
LazyListerfolgte. 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
TextFieldzu einemEditTextoder einem anderen View-basierten Editor wechselte. - Bei verschachtelten Scroll-Knoten werden
onPostFling-Ereignisse jetzt korrekt gesendet, 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.StartEllipsisundTextOverflow.MiddleEllipsissind jetzt verfügbar. Damit können Sie Auslassungspunkte am Anfang oder in der Mitte der Zeile des einzeiligen Texts platzieren. (I38913, b/185418980)
Fehlerkorrekturen
- Fehler bei Dialog
dismissOnClickoutsidebehoben (39a3d, b/364508685) - Schatten von Dialoginhalten nicht abschneiden (e8e2f, b/363027803)
- Fehlerhaftes Verhalten korrigiert, wenn der Fokus der Suche zwischen „Compose“ und einer Ansicht verschoben wird (58377, b/350534714)
Externer Beitrag
- Der
AlignmentLinesMapakzeptiert jetzt die konkreten TypenVerticalAlignmentLineoderHorizontalAlignmentLine. (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
- Der Fehler
IndexOutOfBoundsExceptionwurde behoben, der beim Übergeben einesAnnotatedStringmit demLinkAnnotationan die zusammensetzbare Funktion „Text“ auftrat. (Ic96d2) - In seltenen Fällen trat bei Tests ein Zeitüberschreitungsfehler auf, wenn
LinkAnnotationin derAnnotatedStringverwendet wurde. Dieses Problem wurde behoben. (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 verworfen und durchSemanticsPropertyReceiver.hideFromAccessibility()ersetzt. (I448f0, b/376479686) - Ein Problem wurde behoben, durch das
TextFieldauf bestimmten älteren Sony-Geräten bei Verwendung der japanischen POBox-Tastatur nicht richtig funktionierte. (I94e0e, b/373743376) - Es wurde ein Problem mit der Barrierefreiheit behoben, bei dem der inlineContent von
BasicTextnicht vonTalkBackangekü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 Clipping mit benutzerdefinierten Umrisslinien nicht richtig gerendert wurden.
- Behebt einen Textabsturz, der bei einem
LinkAnnotationmit der Breite 0 auftritt. (Ic1e2e) - Behebt eine Ankündigung in
Talkbackder Schaltfläche, wenn sie als anklickbare 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, bei dem die Angabe eines generischen Umriss-Clips auf bestimmten Android-Versionen zu einer leeren Clipgrenze führte.
- Es wurde ein Fehler behoben, der auftrat, wenn die IME in einer externen Ansicht aktiv war und die Aktion „Weiter“ verwendet wurde, um den Fokus auf das
ComposeViewzu setzen. DasclearFocus()-Verhalten entspricht dem View-Verhalten bei API < 28, wobeiclearFocus()dazu führen kann, dass der Standard-View fokussiert wird. - Ein Problem wurde behoben, bei dem ein falscher
placeOrderfü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 der ausführlichen Ablaufverfolgung verbessert. (I89156, b/362530618)
ComposeViewstürzt nicht mehr ab, wenn eine außergewöhnlich große Messgröße übergeben wird (da5db, b/347036173).- Es wurde ein Problem mit dem Screenreader 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.
-desktopArtefakte 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ühzeitig 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-FunktionenperformTextReplacement,performTextInputundperformTextClearancefür die Texteingabe lösen jetzt Zusicherungsfehler aus, wenn sie für schreibgeschützteTextFieldsaufgerufen 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
TextFielderst 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 unerwünschte Nebeneffekte verursachten.
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
GraphicsLayerAPI. (35ddd8) - Behebung eines Absturzes 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.Editablewurde inIsEditableumbenannt undSemanticsPropertyReceiver.editablein den WertisEditablegeä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:
TextLinkStylesist jetzt Teil desLinkAnnotation-Konstruktors und derAnnotatedString.fromHtml-Methode (I90b2b). Auch dieTextDefaultswurde aus dem Material entfernt (I5477b)
Fehlerkorrekturen
LayoutCoordinates.introducesFrameOfReferencewurde inLayoutCoordinates.introducesMotionFrameOfReferenceumbenannt, 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
performCustomAccessibilityActionLabelledwurde inperformCustomAccessibilityActionWithLabelundperformCustomAccessibilityActionWhereinperformCustomAccessibilityActionWithLabelMatchingumbenannt. (I5387f)AnnotatedString.hasEqualsAnnotationsheißt jetzthasEqualAnnotations(I685c0)- Die API zum Abrufen von Links mit Material-Design im Text wurde aktualisiert. Konkret wurden die Methoden aus
TextDefaultszum Erstellen thematischerLinkAnnotationsund zum Parsen von HTML mit thematischen Links entfernt. Stattdessen wurde eineTextLinkStyles-Klasse hinzugefügt, mit der die Links als Parameter für die Text-Composable-Funktion formatiert werden können. (I31b93)
Fehlerkorrekturen
- Behebt zusätzliche Anwendungsfälle beim dynamischen Hinzufügen von Zeigereingabe-Modifikatoren während Ereignissen 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änderbare Formimplementierungen wurde hinzugefügt.
Shape#createOutlinewird jetzt in Grafikebenen beobachtet. Wenn sich der Status ändert, werden daher ungültige Werte zurückgegeben, was zu leistungsfähigeren Formanimationen führt. (Id1629, b/326070216) isPositionedByParentWithDirectManipulationwurde inintroducesFrameOfReferenceumbenannt. Beachten Sie, dass dies nun umgekehrt ist. Das bedeutet, dass die meistenLayoutCoordinatesstandardmäßig einen Bezugsrahmen einführen und die Eigenschaft nur dann „false“ ist, wenn sie direkt manipuliert wird. Wenn Sie die Position nur mit denjenigen abfragen möchten, die einen Bezugsrahmen einführen, verwenden SiepositionInLocalFrameOfReference(...). OderpositionInLocalLookaheadFrameOfReferencevon einemLookaheadScope. (Ifc5f7)LookaheadScopeAPIs wurden stabilisiert (I21507)- Aktions-Lambda für
getScrollViewportLengthgemäß Feedback des API-Teams ändern (Ibc74a) - Die APIs für
GraphicsLayer-Umriss wurden aktualisiert, sodass sie Gleitkommaparameter anstelle von Ganzzahlparametern verwenden. Die Sentinel-Werte fürUnsetOffset/UnsetSize IntSizewurden 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()undMouseInjectionScope.longClick()jetzt einenbutton: MouseButton-Parameter, um sie universeller einsetzbar zu machen. Der Standardwert ist für alle MethodenMouseButton.Primary. (I31a23, b/190493367, b/261439695) onClickedwurde inLinkInteractionListenerinonClickumbenannt. (Iaa35c)- Benennen Sie
TextInclusionStrategy.isInsideinisIncludedum. Machen Sie den Rückgabetyp vonParagraph/MultiParagraph#getRangeForRect()zu „nicht null“. (I51f26)
Fehlerkorrekturen
- Die Aufnahme von Screenshots langer scrollender Container mit
reverseScrolling=truewurde korrigiert. (I7c59c)
Externer Beitrag
- Unterstützung für das Prefetching von Elementen in verschachtelten
LazyListswurde hinzugefügt, z.B. einLazyColumn, das verschachtelteLazyRowsrendert. Diese Änderung soll die Anzahl der Frame-Drops beim Scrollen für dieseLazyListsreduzieren. Standardmäßig werden die ersten zwei verschachtelten Elemente vorab abgerufen. Dieses Verhalten kann jedoch mit den neuen APIsLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)undLazyListPrefetchStrategy#onNestedPrefetchgesteuert 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
ClickableTextist als veraltet markiert. Wenn Sie dem Text Links hinzufügen möchten, erstellen Sie einAnnotatedStringmit einemLinkAnnotation, das Ihrem Link entspricht, und übergeben Sie diesesAnnotatedStringan die Text-Composable. (I34d4b, b/323346994)- Einführung von
ViewConfiguration.HandwritingGestureLineMarginfür Handschriftgesten Unterstützung derJoinOrSplit-Geste fürBasicTextField(Ie6e13, b/325660505) FocusProperties.enterundFocusProperties.exitsind nicht mehr experimentell.FocusDirection.EnterundFocusDirection.Exitsind nicht mehr experimentell.FocusRequester.Cancelist nicht mehr experimentell (I461a1, b/261564106)- Beim Abfragen von Layoutkoordinaten können Sie jetzt das Argument
excludeDirectManipulationOffsetverwenden, um den von übergeordneten Layouts festgelegten Versatz auszuschließen, bei denen die untergeordneten Elemente mitPlaceable.PlacementScope.withDirectManipulationPlacementplatziert wurden. Ebenso kann ein Layout, das die Position seiner untergeordneten Elemente häufig ändert, diese jetzt mitwithDirectManipulationPlacementplatzieren (z. B. „Scroll“, standardmäßig implementiert). Das machtapproachLayout-basierte Animationen intuitiver, da Sie nun unterscheiden können, welcher Offset animiert und welcher direkt angewendet werden soll, wenn Sie sich für die Animation des Ansatzes entscheiden. (I60ec7) - Das Feature-Flag für lange Screenshots wurde entfernt. (I28648, b/329128246)
LazyColumnrendert jetzt fixierte Überschriften in langen Screenshots korrekt. (I8d239, b/329296635)- Die
NestedScroll-Quellen „Drag“ und „Fling“ werden durchUserInputundSideEffectersetzt, um der erweiterten Definition dieser Quellen Rechnung zu tragen, die jetzt Animationen („Side Effect“) sowie Mausrad und Tastatur (UserInput) umfasst. (I40579) ApproachLayoutModifierNodeundModifier.approachLayoutsind jetzt stabil. Die altenisMeasurementApproachComplete()undisPlacementApproachComplete()wurden durch die neuenisMeasurementApproachInProgress()undisPlacementApproachInProgress()ersetzt.- Die veraltete
intermediateLayout-Anpassung wurde entfernt. (I3e91c) - Benennen Sie
GraphicsLayer#buildLayerin „record“ um, um die Methoden „beginRecording“ und „endRecording“ von Displaylist-basierten APIs wieRenderNodeund „Picture“ zu spiegeln. rememberGraphicsLayerwurde aktualisiert, umrememberObserverzu nutzen. (I312c1, b/288494724, b/330758155)UrlAnnotationwurde verworfen. Verwenden Sie stattdessenLinkAnnotation.Url. Wenn Sie Material-Theming verwenden, erstellen Sie die Annotation mit demTextDefaults-Objekt, damit das Material-Theming angewendet wird (I8d180, b/323346545).- Für Textlinks gibt es 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.parseAsHtmlwurde inAnnotatedString.Companion.fromHtmlumbenannt. (I43dcd)- Der
parseAsHtml-Methode wurden Formatierungsargumente (linkStyle,focusedLinkStyle,hoveredLinkStyle) und ein Link-Interaktionslistener hinzugefügt. Beim Parsen des HTML-getaggten Strings mit<a>-Tags wird für jedes solche Tag einLinkAnnotation.Urlerstellt und die Styling-Objekte und der Listener für Linkinteraktionen an jede Anmerkung übergeben. (I7c977) LinkAnnotationverwendet jetzt die statusbasierten Formatierungsargumente und einLinkInteractionListener. Fügen SieAnnotatedStringdiese Anmerkung hinzu, um einen Hyperlink zu erhalten. MitfocusedStateund/oderhoveredStatekönnen Sie das visuelleconfigurationfür Links definieren, wenn sie fokussiert und/oder mit dem Mauszeiger darauf gezeigt wird. (I81ce4, b/139312671)ImeOptions.hintLocalesist nicht mehr nullable. Wenn Sie eine leere Liste mit Gebietsschemas übergeben möchten, verwenden SieLocaleList.Empty. (Ic5bc4)
Fehlerkorrekturen
- Fehlerhafte/beschädigte Verlaufsdaten für Eingabeereignisse werden ordnungsgemäß verarbeitet (fehlerhafte Offsetdaten werden ignoriert).
- Behebt unerwartete Zeigerereignisse, wenn ein Zeigereingabe-Modifikator während eines aktiven Zeigereingabe-Ereignisstreams dynamisch vor einem anderen Zeigereingabe-Modifikator hinzugefügt wird (z. B. zwischen „Hover Enter“ und „Hover Exit“ [Maus/Stift]).
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
parseAsHtmlfür formatierte Strings wurde hinzugefügt. Damit lässt sich ein mit HTML-Tags markierter String inAnnotatedStringkonvertieren. 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) implementiert. Diese Funktion ist experimentell und wird derzeit möglicherweise nicht in allen Fällen korrekt verarbeitet. Aus diesem Grund ist sie derzeit standardmäßig deaktiviert. Um die automatische CMEK-Bereitstellung zu aktivieren, setzen Sie das FlagComposeFeatureFlag_LongScreenshotsEnabledauf „true“. (I2b055, b/329296471)
API-Änderungen
fun ClipEntry.getMetadata()wird inval ClipEntry.clipMetadatageändert. (I50155)- Die Funktionen
ClipboardManager.getClipMetadataundClipboardManager.hasClipwurden entfernt. Verwenden SieclipEntry.getMetadata(), um die Metadaten des aktuellen Clipausschnitts zu lesen. Prüfen Sie auch das Ergebnis vonClipboardManager.getClip, um festzustellen, ob es null ist oder nicht, um zu sehen, ob die Zwischenablage einen aktuellen Clip enthält. (I50498) - Jetzt können Sie
GraphicsLayer-Objekte anplaceable.placeWithLayer()-Funktionen übergeben (I1b22f) ClipboardManager.setClipakzeptiert 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
GraphicsLayer#toImageBitmap-Methode wurde hinzugefügt, um das Rendern von Bitmap-Inhalten in einemGraphicsLayerzu 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-
RectFinComposeRect(I39925, b/325660505) - Alle
KeyboardOptions-Parameter haben jetzt standardmäßig den Wert „Nicht angegeben“. Die MethodeKeyboardOptions.mergewurde hinzugefügt. KeyboardOptions.autoCorrectwurde inautoCorrectEnabledumbenannt und ist jetzt nullable. Ein Nullwert gibt an, dass kein Wert angegeben wurde. (Ia8ba0, b/295951492)- Die Varianten
BasicTextField(state)undBasicSecureTextFieldverwenden jetztKeyboardActionHandleranstelle vonKeyboardActions, 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 einemGraphicsLayervorgenommen werden, können ohne erneute Aufzeichnung der Anzeigeliste erfolgen. Im Gegensatz zuModifier.graphicsLayerkann mitGraphicsLayerComposable-Inhalt 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 ErweiterungsfunktionDrawScope.drawLayer(GraphicsLayer), um die Ebene zu zeichnen. (I7a7c0)restrictedConstraints()in zwei Methoden aufgeteilt:fitPrioritizingWidth()undfitPrioritizingHeight()(I6d7fd)- Einführung des
HardwareCanvas-Stubs für die Verwendung unter Android L (I1c3b5, b/288494724) - Das Compose-Framework wurde aktualisiert, um eine
GraphicsContext-Kompositionslokale verfügbar zu machen. Außerdem wurden die Implementierungen von „Owner“,DelegateableNodeunddrawWithCache-Modifier aktualisiert, um den Zugriff auf dieGraphicsContextfür den eingeschränkten Zugriff zu ermöglichen. Dadurch werdenGraphicsLayer-Instanzen automatisch bereinigt, wenn Modifier abgebaut werden. (I64a2f, b/288494724) InterceptPlatformTextInputwurde eingeführt, um das Schreiben von IME-bezogenen Tests auf niedriger Ebene und anderen IME-Anwendungsfällen auf niedriger Ebene zu erleichtern.PlatformTextInputTestOverridewurde eingestellt. (I862ed, b/322680547)- Die Erweiterungsfunktion
GraphicsLayer.setOutline(Outline)wurde hinzugefügt. (Ib81f4) - Einführung des
GraphicsContext-Funktionskonstruktors zum Erstellen einer Factory zum Erstellen vonGraphicsLayer-Instanzen (Ib98d6, b/288494724) - Die
GraphicsLayer-API wurde eingeführt, 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
Paragraph#getRangeForRectvor, die einen Textbereich zurückgibt, der von einem bestimmten rechteckigen Bereich abgedeckt wird. (Iee516, b/325660505) - Die experimentelle Überschreibung von
BasicTextmit dem ArgumentonLinkClickedwurde entfernt. Eine Ersatz-API für die Unterstützung von Hyperlinks wird in Zukunft folgen. (I107d5)
Fehlerkorrekturen
- Die API-Definition für
GraphicsLayerexpect/actual wurde hinzugefügt, um das Erfassen und Wiedergeben von Zeichenbefehlen mit optionalen visuellen Compositing-Effekten und ‑Transformationen zu unterstützen. Einführung derGraphicsContext-Schnittstelle für Grafikabhängigkeiten, einschließlich der Erstellung und Verwaltung vonGraphicsLayer-Instanzen. (I4a8d6, b/288494724) - Ein Interoperabilitätsproblem bei der 1D-Fokussuche wurde behoben. Dabei blieb der Fokus in einem
ComposeViewhängen, das in andere Ansichten eingebettet war. (I08fd4)
Externer Beitrag
LocalLifecycleOwnerwurde von Compose UI zulifecycle-runtime-composeverschoben, 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)- Die Bias-Gleitkomma-Properties werden für alle auf Bias basierenden Ausrichtungssubtypen 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 für die Handschrifteingabe mit dem Stylus für BasicTextField2 auf Geräten mit Android U und höher. (I002e4)
- In dieser Änderung wird die semantische Aktion
GetScrollViewportLengthhinzugefügt, damit Informationen zu den Komponenten, die in Compose gescrollt werden, an das A11y-System weitergeleitet werden können. In diesem CL wird die Verwendung der genannten Property auch in scrollbaren Foundation-Listen angewendet. (Ic5fa2) FocusRequester.createRefsist jetzt stabil (I4d92c, b/261436820)DelegatableNode.requireView()wurde eingeführt, damit Modifikator-Knoten den aktuellen Android-Viewabrufen können, ohne eine Kompositionslokale zu lesen. (I40768)- Neue API
Path.reverse()zum Umkehren der Richtung eines Pfads (I36348) hintLocaleswurde zuKeyboardOptionshinzugefügt, damitTextFieldsIMEs mit bestimmten Gebietsschemas darauf hinweisen kann, eine bevorzugte Sprache voreinzustellen.- Die
platformLocale-Eigenschaft vonLocalewird bereitgestellt, 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
ContextualFlowRowund verbesserteFlowRow/Columnmit MaxLines und Overflow. Wir freuen uns, Verbesserungen an den experimentellen FunktionenFlowRowundFlowColumnbekanntgeben zu können. Sie unterstützen jetzt maxLines und Overflow. Außerdem stellen wir die neuen FunktionenContextualFlowRowundContextualFlowColumnvor. Mit diesem Update werden leistungsoptimale Komponenten bereitgestellt.ContextualFlow*eignet sich hervorragend für eine große Anzahl von Elementen, die eine kleinemaxLines-Konfiguration und dynamische Schaltflächen vom Typ „+N Mehr anzeigen“ verwenden.FlowRowundFlowColumneignen sich hervorragend für eine kleine Anzahl von Elementen (weniger als 100). Wichtig: Wenn Sie das bisherige Verhalten inFlowRowoderFlowColumnbeibehalten möchten, bei dem alle Elemente unabhängig davon zusammengesetzt werden, ob sie in die maximale Größe der Querachse passen, legen Sieoverflowbei der Initialisierung aufFlowRowOverflow.VisibleoderFlowColumnOverflow.Visiblefest. UnterContextualFlowRowSampleundFlowRowSamplefinden Sie Beispiele für diese neuen Funktionen in Aktion. (Ib9135, b/293577082) - Fügen Sie die Semantikeigenschaft
maxTextLengthhinzu, 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 Modifikationen als nötig. Daher wird von ihrer Verwendung abgeraten. Entwickler sollten die MethodeinspectableProperties()fürModifierNodeElementimplementieren, wenn sie Modifikator-Properties für Tools verfügbar machen möchten. (Ib3236) - Neuer Konstruktor für
PopupProperties, der die vollständige Kontrolle überWindowManager.LayoutParams-Flags ermöglicht. (Ibb33e, b/312485503) DelegatableNode.requireLayoutCoordinates()wurde eingeführt, um die aktuelleLayoutCoordinateseinesModifier.Nodeabzurufen, ohneonPlacedzu überschreiben und die Koordinaten selbst in einem Attribut zu speichern. (Ia8657)DelegatableNode.currentLayoutCoordinateswurde eingeführt, um die aktuelleLayoutCoordinateseinesModifier.Nodeabzurufen, ohneonPlacedzu überschreiben und die Koordinaten selbst in einem Attribut zu speichern. (Iaebaa)BasicTextField2und zugehörige APIs im Paketandroidx.compose.foundation.text2werden nachandroidx.compose.foundation.textverschoben. (I9f635)- Eine neue
ApproachLayoutModifierNode-API wurde hinzugefügt, um die Erstellung benutzerdefinierter Ansatzlogik in einem expliziten Modifier-Knoten zu unterstützen. Außerdem wurde eine neue experimentelleDeferredTargetAnimation-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 einemPath. (I63d04) PathHitTestundPath.contains(Offset)wurden hinzugefügt, um zu prüfen, ob einPatheinen bestimmten Punkt enthält. (I3b218)- Die
TextLayoutResultstellt jetzt die MethodegetLineBaseline(lineIndex)bereit. So kann die Baseline einer beliebigen Textzeile zusätzlich zu den vorhandenen Convenience-EigenschaftenfirstBaselineundlastBaselinegelesen werden. (Ide4e8, b/237428541) - Es wurde eine Methode hinzugefügt, mit der nur die Anmerkungen von zwei
AnnotatedStringsverglichen werden können. (I32659)
Fehlerkorrekturen
- Ein Problem mit der Abwärtskompatibilität mit
SemanticsPropertyReceiver.performImeActionundSemanticsActions.PerformImeActionwurde 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.performImeActionwurde behoben. (I65865, b/322269946) - Der
PopupProperties-Konstruktor, der einenusePlatformDefaultWidth-Parameter akzeptiert, ist nicht mehr experimentell. (I8f8d2) - Es wurde eine Überladung von
ComposeTestRule.waitUntilhinzugefügt, die eine Stringbeschreibung der Bedingung akzeptiert, die in die Zeitüberschreitungsnachricht aufgenommen werden soll. (I9413e) - Neue Semantik-API
unset()zum Entfernen von Semantikattributen, die in derselben Modifier-Kette hinzugefügt werden. Neue Semantik-PropertyisOpaque. (I8c583, b/317966058, b/246056649) originalEventPositionwurde aus der Kopiermethode in der öffentlichen API vonPointerInputChangeentfernt. (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
VelocityTrackerist der Fehler beim Hinzufügen von Punkten standardmäßig behoben. Die Korrektur kann weiterhin deaktiviert werden, indemVelocityTrackerAddPointsFixauf „false“ gesetzt wird, falls Probleme auftreten. (Ib3877, b/269487059) - Die binäre Abwärtsinkompatibilität in
TextStyleundParagraphStylewurde 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
ClipboardManagerwurde erweitert, indemClipEntryundClipMetadatahinzugefügt wurden, um beliebige Inhalte wie Bilder zu unterstützen.- Fügt
DeviceConfigurationOverrideAPI zuui-testhinzu, um das Verhalten von zu testenden Inhalten lokal zu überschreiben, z. B. um eine verfügbare Größe, Sprache, Layoutrichtung, Schriftartskalierung oder ein Design 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 1-fach-Skalierung 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
- Ein seltener
BasicTextField-Absturz wurde behoben.
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.performImeActionundSemanticsActions.PerformImeActionwurde 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.Infinityzu 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
LayoutCoordinateszu trennen, ohne dass der Knoten getrennt wird. Mit dem Compose Layout Inspector (If693) können Sie sich davor schützen.
Fehlerkorrekturen
PlatformImeOptionsist jetzt eine konkrete Klasse anstelle einer Schnittstelle. (If40a4)- Es wurden zusätzliche Downstream-Recompositions behoben, die dadurch verursacht wurden, dass
LocalSoftwareKeyboardControllerundLocalTextInputServicebei 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
DragAndDropTargetakzeptiert jetzt explizit das empfangendeDragAndDropTargetund hat eine Lambda-Funktion, um eine Drag-and-drop-Sitzung zu starten. Es gibt jetzt zwei Factory-Funktionen für einDragAndDropModifierNode. Einer zum Empfangen von Übertragungen und einer zum Übertragen von Daten (I69481) maximumFlingVelocitywird jetzt als Float dargestellt. Die Dokumentation wurde aktualisiert, um die EinheitmaximumFlingVelocityklarer zu definieren. (I8adc7)onDragAndDropStartin derDragAndDropModifierNode-Factory wurde inacceptDragAndDropTransferumbenannt.acceptsDragAndDropTransferwurde demdragAndDropTarget-Modifikator hinzugefügt, um die Annahme aus einer Drag-and-drop-Sitzung zu ermöglichen. Diese Lambda-Funktion gibt einen geeignetenDragAndDropTargetzurück, wenn Sie an einer Drag-and-drop-Sitzung interessiert sind. Andere Lambdas für die Verarbeitung von Drag-Vorgängen wurden durch diese ersetzt. EineDragAndDropTarget-Factory-Funktion wurde hinzugefügt, um Daten aus Drag-and-Drop-Sitzungen (Iebf3a) zu empfangen.DragAndDropInfowurde entfernt, da der TypDragAndDropModifierNode.dragjetzt Parameter für dietransferData-, Dekorationsgröße und Drag-Dekorations-DrawScope-Lambda-Funktion verwendet.DragAndDropTargethat Methoden für bestimmte Drag-and-drop-Ereignisse anstelle einer einzelnen abstrakten Methode.onDragAndDropEventin der Factory-Funktion für einDragAndDropModifierNodewurde inonDragAndDropStartumbenannt, um besser zu verdeutlichen, dass das bereitgestellteDragAndDropTargetnur für eine bestimmte Drag-and-drop-Sitzung gültig ist.Die
DragAndDropEventTypewurde entfernt (I645b1)PlatformTextInputModifierNode.runTextInputSessionwurde inestablishTextInputSessionumbenannt. (I03cd0)Die API-Namen für durchlaufbare Knoten wurden verbessert, um sie verständlicher zu machen. (Ia4474)
Ersetzen Sie
OriginalTextdurchTextSubstitution. (Ifa5a8)PlatformTextInputModifierNode.textInputSessionwurde inrunTextInputSessionumbenannt. (Ie9c6b)Die untergeordneten Elemente von
SubcomposeLayout(und Layouts wieLazyColumn, die darauf basieren), die zur zukünftigen Wiederverwendung beibehalten werden, gelten als deaktiviert. Es wurde eine neueassertIsDeactivated()-Test-API eingeführt, um solche Knoten zu testen. Bei den restlichen Test-APIs werden deaktivierte Knoten standardmäßig herausgefiltert. (I2ef84, b/187188981)FocusDirection.InundFocusDirection.Outwurden entfernt. Verwenden Sie stattdessenFocusDirection.EnterundFocusDirection.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 verworfen. Verwenden Sie stattdessenFontStyle.NormaloderFontStyle.Italic. (I66610)Die
FontScalable-Schnittstelle wurde inFontScalingumbenannt (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, für die in derselben Compose View kein „Down“-Ereignis empfangen wurde, werden jetzt ignoriert. (Ib37b4, b/305518328)
- Renderer-Unterstützung für Sweep Gradient in
ArcLinehinzugefügt. (I4d5bb) - Implementieren Sie „equals“ und „hashcode“ für
PageSize.Fixed. (Ie3ede, b/300134276) - Binärkompatibilitätsproblem bei Änderung des Window Inset behoben (Iee695)
- Die Material-Kernschicht für Material3-Chips/-Schaltflächen wurde entfernt, da die Microbenchmarks ohne sie eine bessere Leistung zeigen. (I55555)
TestDispatchers, die alseffectContextan Compose-Tests übergeben werden, werden jetzt zum Erstellen der Test- und Frame-Clocks verwendet. (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.dragAndDrawSourcewurde deronDrawDragShadow-Lambda indrawDragDecorationumbenannt und beiDragAndDropInfowurde der Größenparameter indragDecorationSizeumbenannt. (Id0e30, b/303904810) - Führen Sie
SemanticsNodeInteraction.isDisplayed()undSemanticsNodeInteraction.isNotDisplayed()ein, um zu prüfen, ob ein abgeglichener Knoten sichtbar ist oder nicht, ohne ihn auch zu bestätigen. (I2c196, b/302100809) - Für die Felder
TextAlign,TextDirection,HyphensundLineBreakdesParagraphTextStylewurde ein speziellerUnspecified-Wert eingeführt, umnullzu ersetzen. Da es sich bei diesen Klassen um Inline-Klassen handelt, vermeiden wir durch das Ersetzen von „nullable“ durch „Unspecified“ das Boxing von primitiven Typen. Konstruktoren, Getter und andere Methoden inTextStyleund im Absatzstil wurden aktualisiert, um die genannten Parameter als Typen ohne Nullwert zu akzeptieren. (I4197e, b/299490814) - Fügen Sie die
GoogleFont-Überladung zum Lesen einerGoogleFontaus XML hinzu. (If8f59) LoremIpsumPreviewParameterProviderals offenen Kurs festgelegt. (I41bf5, b/266918816, b/300116360)
Fehlerkorrekturen
FontFamilyResolververwendet jetztDispatchers.Mainfür Cache-Verwaltungs-Coroutinen. (Ie8dd9)- Mit
AndroidViewBindingwerden jetzt synchronFragment-Instanzen entfernt, die durch die Einbeziehung einesFragmentContainerViewin Ihr Layout als Teil desonReleasemithilfe voncommitNow(anstelle des zuvor verwendetencommit) 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
PlatformTextInputMethodTestOverridewurde eingeführt, um Tests für benutzerdefinierte Texteditoren zu schreiben. (Id159b)- Fügt den
dragAndDropSource-Modifizierer zum Starten von Drag-and-drop-Vorgängen und dendragAndDropTarget-Modifizierer zum Empfangen von Drag-and-drop-Vorgängen hinzu. (Ib7828, b/286038936) - Die Sammlungen
ColorListundColorSetwurden hinzugefügt, um Zuweisungen zu vermeiden. (I744bd) - Das temporäre Flag
DisableNonLinearFontScalingInComposewurde hinzugefügt, um die nicht lineare Skalierung der Schriftgröße zu deaktivieren. Legen SieDisableNonLinearFontScalingInCompose = truein Ihren Tests fest, wenn Sie Zeit für die Bereinigung benötigen. Dieses Flag wird in Compose 1.6.0-beta01 entfernt. (Ic9486)
Fehlerkorrekturen
- Optimiertes Parsing von XML-Vektor-Drawables. (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 aufwärts und abwärts zu durchlaufen, um ähnliche Knoten zu finden. (I2d234)
onRestoreFailed()-Callback zumfocusRestorer()-Modifikator hinzugefügt (Ie1d43)- Für verschiedene Grafik-APIs wurden androidx-Annotationen hinzugefügt, um
ColorInt,FloatRange,IntRange,Sizeund mehr anzugeben. (Id65c8, b/290950582) showSystemUi=truezur Definition vonPreviewScreenSizeshinzufügen (Ib61d3)
Geändertes Verhalten
- Compose verwendet jetzt eine nicht lineare Schriftartskalierung, um die Lesbarkeit und Barrierefreiheit zu verbessern. Wenn die Schriftgröße 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 Schriftartskalierung. (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
ScrollViewundRecyclerViewsind aufViewConfiguration.ScaledMaximumFlingVelocitybegrenzt. Compose enthält jetzt eine eigene Version vonmaximumFlingVelocity, die fürDraggablegilt. (Ibf974) - Es wird ein erstes Gerüst hinzugefügt, um Drag-and-drop-APIs der Plattform zu unterstützen. (If84ce)
deviceIdinRotaryScrollEventeinfügen (Iba3bf)- Die
ui-toolingDevices API wurde aktualisiert, um neuere Geräte zu unterstützen (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
ReusableCompositionhinzugefügt, mit der Beobachtungen entfernt, Knoten aber beibehalten werden. Die deaktivierte Komposition kann durch Aufrufen vonsetContentwieder aktiviert werden. (Ib7f31) - Die
ReusableComposition-Schnittstelle wurde hinzugefügt, um den Lebenszyklus und die Wiederverwendung von Unterkompositionen zu verwalten. (I812d1, b/252846775) Modifier.focusGroupwurde zu stabilen APIs hochgestuft. (I7ffa3)- Für verschiedene Grafik-APIs wurden androidx-Annotationen hinzugefügt, um
ColorInt,FloatRange,IntRange,Sizeund mehr anzugeben. (I70487, b/290950582) - Die
ColorFilter-API wurde aktualisiert, sodass konkrete Unterklassentypen für eine bessere Überprüfbarkeit von Parametern verwendet werden. (I5fe29) - Die wear-tooling-preview-Bibliothek 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 an die Größe des animierten Containers angepasst wird.
LookaheadScopeComposable-Funktionen und ‑Schnittstelle sind jetzt stabil. (Ifb2ce) - Unterstützung für die Konfiguration von
privateImeOptionshinzugefügt (Idb772)
Fehlerkorrekturen
PopupPositionProvider.calculatePositionaktualisiert die Position des Pop-ups jetzt automatisch, wenn sich der im Berechnungsvorgang gelesene Status ändert. (I676a1, b/292257547)- Es wurde ein Fehler behoben, bei dem in Textfeldern die Tastatur angezeigt wurde und sie bearbeitet werden konnten, wenn
readOnlyauf „true“ gesetzt war. Außerdem wurde ein Fehler behoben, durch den die Tastatur nicht angezeigt wurde, wennreadOnlyim Fokus von „true“ zu „false“ geändert wurde. (I34a19, b/246909589) - Globale Assertions werden jetzt häufiger in UI-Tests verwendet. (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 eine andere Kompositionsdelegierung delegiert, an die ursprüngliche „Composition“ delegiert werden. Diese Methode 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) SoftwareKeyboardControllerundLocalSoftwareKeyboardControllersind nicht mehr experimentell.LocalSoftwareKeyboardControllerist jetzt auch eine richtigeCompositionLocal. (I4c364)LookaheadLayoutundLookaheadLayoutScopesind seit einigen Releases veraltet und wurden jetzt entfernt. Die Ersatz-APIs sindLookaheadScope, die mit jedem Layout funktionieren. (I12ac3)SemanticsNodeInteraction.requestFocuswurde 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 vonAndroidViewwird jetzt aufgeschoben, bis die Ansicht angehängt ist. Er wird also nicht mehr ausgeführt, wenn die Komposition, in derAndroidVieweingeführt wird, angewendet wird. Damit wird ein Fehler behoben, bei dem derupdate-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 kannLazyListim Lookahead-Pass alle Animationen (z. B. Animationen für die Platzierung von Elementen,AnimatedVisibilityusw.) umgehen und die Lookahead-Größe und -Position für alle untergeordneten Elemente berechnen. Nach dem Lookahead-Durchlauf konnten die Kinder vonLazyListunabhängig von der Realität animiert werden, wie sie im Lookahead-Durchlauf 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 für die erste und letzte Zeile des Texts 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 Referenzbilder 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
- Unterstützung für
InputConnection#requestCursorUpdates(I0c69b) FocusRequester.saveFocusedChildundFocusRequester.restoreFocusedChildhinzugefügt (Ic557e, b/272302679, b/275157318)- Fügen Sie den Typ
ResourceResolutionExceptionhinzu, um Throwables zu umschließen, die beim Versuch, Bitmap-Assets zu laden, mit einer Beschreibung des Asset-Pfads, der nicht geladen werden konnte, ausgelöst werden. (I19f44, b/230166331, b/278424788) - Optimierte Barrierefreiheit für Leistung und Arbeitsspeicherzuweisungen. (Iede48)
- Semantische Eigenschaften und Aktionen zur Unterstützung der Textübersetzung hinzugefügt. (I4a6bc)
- Neues Attribut in
IntrinsincMeasureScopeund seinen 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 auf eine andere Canvas mit alternativer Dichte, Layoutrichtung und Größe zu ermöglichen. DrawContextwurde aktualisiert, um die Konfiguration von Dichte und Layoutrichtung zu unterstützen und den Arbeitsbereich konfigurierbar zu machen. (Ie1f9b, b/225408150)Paragraph#fillBoundingBoxeswurde hinzugefügt, um Begrenzungsrahmen für Zeichen zu berechnen. (If30ee)- Eine Reihe häufig verwendeter
MultiPreviewswurde hinzugefügt. (Ia5a27)
Fehlerkorrekturen
- Die
FocusTargetModifierNode-Schnittstelle wurde hinzugefügt, mit der ein benutzerdefiniertesFocusTargeterstellt werden kann. (I9790e) - Die
fallback*-Parameter imTextMeasurer-Konstruktor wurden indefault*umbenannt. (I940a5) SemanticsPropertyReceiver.performImeActionwurde inonImeActionundSemanticsActions.PerformImeActioninOnImeActionumbenannt. (I8e841)- Fügt „Wheel“ hinzu, um das Scrollen mit dem Mausrad von einem Ziehen bei verschachteltem Scrollen (insbesondere in
NestedScrollConnection) zu unterscheiden. (Ie57e4) - Die
asComposePaintAPI wurde hinzugefügt, umtoComposePaintzu ersetzen, da das zurückgegebene Objekt das ursprünglicheandroid.graphics.Paint(I22b4c) umschließt. SemanticsProperties.imeActionwird eingestellt und durch einen neuen Parameter fürSemanticsActions.performImeActionersetzt. (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 bisherAssertionErrorfür Offsets außerhalb des gültigen Bereichs ausgegeben haben, geben jetztIllegalArgumentExceptionaus, wieMultiParagraph. (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)
TextFieldhat manchmal fälschlicherweise vorherige Befehle angewendet, wenn der Fokus gesetzt und koreanische Eingaben eingegeben wurden, was zu fehlenden Zeichen geführt hat.
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.
- Es wurde ein Fehler behoben, durch den nicht angehängte Knoten dem semantischen Baum hinzugefügt wurden.
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 Fehler behoben, bei dem in Textfeldern die Tastatur angezeigt wurde und sie bearbeitet werden konnten, wenn
readOnlyauf „true“ gesetzt war. Außerdem wurde ein Fehler behoben, durch den die Tastatur nicht angezeigt wurde, wennreadOnlyim Fokus von „true“ zu „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
SubcomposeLayoutinmovableContentOf()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=truenicht 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
asComposePaintAPI wurde hinzugefügt, um die Nutzung einerandroid.graphics.Paint-Instanz in Compose zu ermöglichen.
Fehlerkorrekturen
- Die
asComposePaintAPI wurde hinzugefügt, umtoComposePaintzu ersetzen, da das zurückgegebene Objekt das ursprünglicheandroid.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) - Fügt die Hilfsfunktion
CacheDrawModifierNode()hinzu, um die Delegierung zu ermöglichen (Icf8f9) - Die
isLookingAhead-Property ist jetzt überMeasureScopeverfügbar. Damit können Sie Lookahead-Ergebnisse beobachten und den Hauptdurchlauf bei Bedarf beeinflussen. (Ibf4c3) - Neue Semantikeigenschaft
traversalIndex, eine Gleitkommazahl, mit der Knoten inTalkBack-Traversierung neu angeordnet werden (niedrigere Werte kommen zuerst). (I9a81b, b/186443263) - Die Semantik-Eigenschaft
isContainerwird inisTraversalGroupumbenannt (I121f6). ColorProducerhat jetztoperator fun invokestattproduce(I4a9a2)- Die
Path-Transformations-API wurde hinzugefügt, um Übersetzungs-, Skalierungs- und Rotations-Transformationen auf Pfadobjekte anzuwenden. (I23434, b/233772232) - Die Methode von
ColorProducerheißtproduce. (I78bde) toFrameworkColorSpaceintoAndroidColorSpaceumbenennen (I4f547)- Benennen Sie
ColorLambdainColorProducerum. (I73b1a) - Es wurden APIs eingeführt, um zwischen Android- und Compose-Farbraumtypen zu konvertieren. (Ie7db4, b/279979665)
- Der Funktion
BasicTextwurde ein Farbparameter hinzugefügt, um die Textfarbe effizient animieren oder festlegen zu können. (Iffd88, b/246961787) TextRange.constrainwurde inTextRange.coerceInumbenannt. (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),MultiParagraph.paint(Brush)enthalten, wurden stabilisiert. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPaddingist nicht mehr eingestellt. 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 Methode
TextRange.constrainwurde hinzugefügt. (I97912) UrlAnnotationinAnnotatedStringkönnen jetzt über Bedienungshilfen wieTalkBackgeöffnet werden. (If4d82, b/253292081)- Die semantische Aktion
InsertTextAtCursorfür Textfelder wurde hinzugefügt. (I11ed5) - Der
LineHeightStyle.Alignment(topRatio)-Konstruktor wird zur stabilen API hochgestuft. (I79c32, b/261565383) TextMeasurerund zugehörige APIs sind nicht mehr experimentell. (I74647, b/261581753)- Die Semantikaktion
PerformImeActionwurde 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.valueOfwurde geändert (Ia9b89) - Mehr ausgelöste Ausnahmen von enum valueOf (I818fe)
- Es wurde eine neue Low-Level-API
PlatformTextInputAdaptereingeführt, mit der benutzerdefinierte Text-Input-Implementierungen erstellt werden können, die direkt mit Plattform-APIs kommunizieren. (I58df4) - Der Parameter
BlendModewurde den MethodenDrawScope.drawText,Paragraph.paintundMultiParagraph.painthinzugefügt, um verschiedene Mischalgorithmen beim Zeichnen von Text auf Canvas zu unterstützen. (I57508) - Benennen Sie
Font.MaximumAsyncTimeoutinFont.MaximumAsyncTimeoutMillisum. Nur umbenennen. (I07af5) - Aktualisierte DPI-Werte der
@Preview-Referenzgeräte (Id6151, b/254528382) - Fügen Sie
brush- undalpha-Parameter zuBasicTexthinzu, um Textpinsel effizient zu animieren oder festzulegen. - Box-kostenlose 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)
- Speichernutzung und Rendering der ersten Frames von Vektorgrafiken optimieren (I2f3c6)
- Zuweisungen beim Zeichnen von Linien und Punkten mit Canvas entfernt (I9f535)
- Dokumente für
AndroidFont.fontVariationSettingshinzufügen (I7d9e2)
Externer Beitrag
- Leistung der Vector APIs verbessern und Zuweisungen reduzieren (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.NodeVerbesserungen bei der Delegation Es wurde eine verbesserte Möglichkeit hinzugefügt, von einerDelegatingNodeaus an andereModifier.Node-Instanzen zu delegieren. Dazu können Sie die APIsdelegateundundelegateverwenden. 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 durchDelegatingNodeüberschrieben werden. (67352bc)
API-Änderungen
- Stelle
NestedScrollModifierNodevor, eineNestedScroll Modifier.Node, an die delegiert werden kann. (I69513) - Den
AndroidViewBinding-Composable wurden die ParameteronResetundonReleasehinzugefügt, um dasAndroidView-Composable zu spiegeln und die Unterstützung für die Wiederverwendung von Ansichten mitViewBindingzu ermöglichen. (I00b1e, b/276802519) - Die Compose Path API wurde aktualisiert, um Rücklaufvorgänge zu unterstützen. So können Anwendungsfälle mit häufiger Pfadbearbeitung 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),MultiParagraph.paint(Brush)enthalten, wurden stabilisiert. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPaddingist nicht mehr eingestellt. 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
SubcomposeLayoutinLookaheadScope:SubcomposeLayoutsohne bedingte Slots (z. B.TabRow,Scaffold,BoxWithConstraintsusw.) funktionieren jetzt gut mit Lookahead-Animationen.
API-Änderungen
- Mit dem neuen Standard-
intermediateMeasurePolicy, bei dem die Richtlinie für Messungen aus dem Lookahead-Pass wiederverwendet wird, könnenSubcomposeLayout-Untertypen ohne bedingte Slots wieScaffold,TabRowundBoxWithConstraintsstandardmäßig mit Lookahead verwendet werden. (Id84c8) - Der für ein Android-Fenster erstellte Recomposer blockiert jetzt nur noch Aufrufe von
withFrameNanosanstelle der gesamten Komposition, wenn er eineON_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 vonwithFrameNanoswerden jedoch blockiert. (Id9e7f, b/240975572) - Ändert
motionEventSpyin „stabil“. (Ic5ec4, b/261560988) - Die öffentliche Methode
TextRange.constrainwurde hinzugefügt. (I97912) PlatformTextStyle.includeFontPaddingist nicht mehr veraltet, damit Entwickler diese Kompatibilitäts-API verwenden können, um die EinstellungincludeFontPaddingauf „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
SubcomposeLayoutAPI, die eine zusätzliche Richtlinie für Zwischenmessungen zur Verarbeitung der Mess- und Layoutlogik während 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 Key Events in stabile APIs geändert. (I9c7d8, b/261566839, b/261567368)
- Ändert experimentelle APIs in
PointerInputChangein stabile APIs. (I1b543, b/261560988, b/261565762, b/261565749) - Bietet eine Möglichkeit, ein
SuspendingPointerInputModifierNodefür komplexereModifier.Node-Implementierungen zu instanziieren. (Ic4933) UrlAnnotationinAnnotatedStringkönnen jetzt über Bedienungshilfen wieTalkBackgeöffnet werden. (If4d82, b/253292081)- Eine API wurde hinzugefügt, um Hardwaretasten abzufangen, bevor sie an die Softwaretastatur gesendet werden (I4f4c6, b/186800395).
- Die semantische Aktion
InsertTextAtCursorfür Textfelder wurde 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#coroutineScopehinzu, 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 @Deprecated-Klasse 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
- Das Problem, dass
AndroidViewbei Verwendung bestimmter Modifikatoren möglicherweise nicht richtig angeordnet wurde, wurde behoben. (I4dc77, b/274797771) - Es wurde ein Fehler in der 2D-Fokussuche behoben, der sich auf die
DropDown-Menüs ausgewirkt hat (b/276811828). - Ein Fehler in benutzerdefinierten Eigenschaften für das Ein- und Ausblenden von Fokus wurde behoben, bei dem der Ein- und Ausblendblock nur beim ersten Aufruf der Lambda-Funktion ausgeführt wurde (b/277234245).
- Ein Regressionsfehler im Fokus-System wurde behoben, der beim Lesen von
focusPropertieszu einem Absturz führte. (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
AndroidViewseine Modifikatoren nicht richtig wiederverwendet hat, was möglicherweise zu unerwartetem Verhalten und Abstürzen geführt hat. (Ib67ee, b/275919849) - Es wurde ein Regressionsfehler behoben, bei dem die Tastatur für Textfelder in Dialogfeldern, die nicht mit der
Dialog-Composable-Funktion 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
ParentDataModifiernichtAndroidViewbetraf (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
PinnableContainerAPI 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) - Die Semantik-Property
IsContainerwurde auf Surfaces 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
DropdownListhinzugefügt. Damit lässt sich das Verhalten vonTalkBackbeim Fokussieren vonandroid.widget.Spinnernachbilden. (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 ausgeführt werden, um in den Leerlauf zu gelangen (z.B. über
waitForIdle). Dies kann sich auf Tests auswirken, die einzelne Frames von Layoutanimationen bestätigen. (I8ea08, b/222093277) - Experimentelles
TextMotionwurde zuTextStylehinzugefügt, um Text entweder alsStatic(default)oder animiert zu definieren. Verwenden SieTextMotion.Animated, wenn Text durch 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
AndroidViewhinzugefügt, die den ParameteronResetakzeptiert. Dadurch können View-Instanzen wiederverwendet werden, wenn ihr Knoten in der Komposition verworfen und auf kompatible Weise wiederverwendet wird. Das ist besonders fürLazyRowsundLazyColumnsvon Ansichten nützlich. (I3f10d, b/230099236) - Es wurde eine neue Low-Level-API
PlatformTextInputAdaptereingeführt, mit der benutzerdefinierte Text-Input-Implementierungen erstellt werden können, die direkt mit Plattform-APIs kommunizieren. (I58df4)
Fehlerkorrekturen
- Die Semantikaktion
SetTextvonBasicTextFieldaktualisiert den Textpuffer jetzt über denselben Codepfad wie IME-Updates und die Testfunktionen (z.B.performTextReplacement). - Die Texttestfunktionen
performTextClearance,performTextReplacementundperformTextSelectionverwenden jetztSemanticsActions. (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. Verwenden Sie stattdessenModifierNodeElement. (I2256b) - Es wurde ein neuer
Modifier.Node.onReset()-Callback hinzugefügt, mit dem Sie einen lokalen Status zurücksetzen können, um den Fall richtig zu verarbeiten, in demLayoutwiederverwendet wird (z. B. als Element vonLazyColumn).FocusTargetModifierNodewurde korrigiert, um den Fokusstatus richtig zurückzusetzen. (I65495, b/265201972) - Der Parameter
BlendModewurde den MethodenDrawScope.drawText,Paragraph.paintundMultiParagraph.painthinzugefügt, um verschiedene Mischalgorithmen beim Zeichnen von Text auf Canvas zu unterstützen. (I57508)
Fehlerkorrekturen
- Der Algorithmus für die Reihenfolge der Barrierefreiheit wurde verbessert. So werden beispielsweise obere und 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 inrelease()umbenannt (I4667a)waitUntilNodeCount,waitUntilAtLeastOneExists,waitUntilExactlyOneExistsundwaitUntilDoesNotExistwurden als experimentelle API zuComposeTestRulehinzugefügt. Dadurch kann diewaitUntilAPI beliebige Matcher und eine beliebige Anzahl von Knoten akzeptieren. Weitere Informationen finden Sie unterComposeTestRule. (Ifa1b9, b/226934294)- Benennen Sie
Font.MaximumAsyncTimeoutinFont.MaximumAsyncTimeoutMillisum. (I07af5) GoogleFont.Provider.AllFontsListUriwurde entfernt und stattdessen im ktdoc verlinkt. (I16f29)
Fehlerkorrekturen
- Dokumente für
AndroidFont.fontVariationSettingshinzufü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
runComposeUiTestund die Funktionencreate*ComposeRuleeingeführt, dieCoroutineContext-Parameter akzeptieren. Der Kontext wird für die Testzusammensetzung und alleLaunchedEffect- undrememberCoroutineScope()-Aufrufe in der Zusammensetzung verwendet. (I10614, b/265177763) - Neue API zum Erfassen der eindimensionalen Geschwindigkeit hinzugefügt (If5a82)
FocusRequesterist jetzt als@Stablemarkiert. (I580ee)- Entfernen Sie eine experimentelle Annotation aus dem
DialogProperties-Konstruktor, der einenusePlatformDefaultWidth-Parameter verwendet. (Ic4048) - Funktion zum Berechnen der Position und Tangente in einer bestimmten Entfernung auf einem Pfad hinzugefügt – mit
PathMeasure.getPosition()undPathMeasure.getTangent()(I3b47c) - Der versehentlich öffentlich zugänglich gemachte Setter wurde aus
PlatformParagraphStyleentfernt. (I07f47) - Weitere Typen/Nullwerte von Inline-/eingestellten/ausgeblendeten Funktionen (I24f91)
- Fügen Sie
AnnotatedString.hasStringAnnotationshinzu, um nach Annotationen ohne Zuweisungen zu suchen. (I94dfe, b/246960758) - Es wurde eine neue Überladung für die Funktion
TextMeasurer.measurehinzugefügt, dieStringals Text akzeptiert. (I47b2d, b/242705342) - Die APIs
LineBreakundHyphensin TextStyle sind jetzt stabil. (Ic1e1d)
Externer Beitrag
- Die
notifyFocusedRect-Methoden inTextInputSessionundTextInputServicesind 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
- Es wurde eine neue
PinnableContainerAPI 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) - Die Semantik-Property
IsContainerwurde auf Surfaces 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 Barrierefreiheitsrolle
DropdownListwurde hinzugefügt. Damit lässt sich das Verhalten vonTalkBack'sbeim Fokussieren vonandroid.widget.Spinnernachbilden. (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 ausgeführt werden, um in den Leerlauf zu gelangen (z.B. über
waitForIdle). Dies kann sich auf Tests auswirken, die einzelne Frames von Layoutanimationen bestätigen. (I8ea08, b/222093277) - Experimentelles
TextMotionwurde zuTextStylehinzugefügt, um Text entweder alsStatic(default)oder animiert zu definieren. Verwenden SieTextMotion.Animated, wenn Text durch Animation skaliert, übersetzt oder gedreht werden soll. (I24dd7)
API-Änderungen
- Das
maxSize: IntSize-Argument indrawTextwurde durchsize: Sizeersetzt, um es an andereDrawScope-Funktionen anzugleichen.sizeist standardmäßig aufSize.Unspecifiedfestgelegt. Das bisherige Standardverhalten sollte sich dadurch nicht ändern. (Icd27d) - Der nicht mehr weitergeführte experimentelle Schriftartkonstruktor wurde entfernt. (I8a724, b/261435386)
- Die Datenklasse für UI-Tools
Grouphat jetzt ein Feld,isInline, das angibt, ob die Gruppe für einen Aufruf einer Inline-Composable-Funktion bestimmt ist. WennisInlinegleichtrueist, handelt es sich beim Aufruf um 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 auf stabil umgestellt.
- Die Rotary Scroll Event API ist jetzt stabil (I42ad3, b/261561229)
- Die
FontVariationAPI ist jetzt stabil (I8779f, b/241016309). - Alle
Font()-Konstruktoren sind jetzt stabile APIs (I5948b, b/261435386) DeviceFontFamilyNameist jetzt stabil (I8b640, b/261435386)- Der
AndroidFont-Konstruktor mitvariationSettingsist jetzt eine stabile API und kann zum Erstellen neuer Arten von Schriftartdeskriptoren verwendet werden. (I5adcc, b/261565807) - Die
createFontFamilyResolverAPI ist jetzt stabil. Damit können nicht abgefangene Ausnahmen beim asynchronen Laden von Schriftarten abgefangen werden. (Ibb481, b/261435386) - Die
Font.loadingStrategyAPI ist jetzt stabil. (I5937c, b/261435386) - Die
GoogleFontAPI ist jetzt stabil. (Ic90b0, b/261435386) TextUnit(float, TextUnitType)ist jetzt eine stabile API. (I90c84, b/261561612)pluralStringResourceist 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
ExperimentalComposeUiApiwird ausPointerIconentfernt (I23af8)- Einführung von Aktionen zur Seitenbarrierefreiheit:
PageUp,PageDown,PageLeft,PageRight. Diese sind erst ab API 29 verfügbar. (Ida4ab) - Die Ansicht für den Parameter
rememberNestedScrollConnectionwurde von der Stammansicht in die Hostansicht geändert. (Ia5200) - Eine Modifier API zum Abfragen von Scrollinformationen für übergeordnete Elemente wurde hinzugefügt. (I2ba9d, b/203141462)
- Wird in
Clickableverwendet, um Tippinteraktionen richtig zu verzögern, wenn aus Gesten Scroll-Ereignisse werden könnten. - Das Problem, dass
ClickablesRipples nicht richtig verzögert hat, wenn es in einemScrollable ViewGroupverwendet wurde, wurde behoben. - Die Schubladen und Sheets wurden aktualisiert, um das Drücken korrekt zu verzögern, falls Gesten zu Scroll-Ereignissen werden können.
CompositingStrategy.Alwayswurde inOffscreenumbenannt, um anzugeben, dass dasgraphicsLayerimmer in einen Zwischenspeicher (I47dc1) gerendert wird.- Layoutüberlastung bei mehreren Inhalts-Slots ist jetzt stabil (I10566, b/248294649)
- Die experimentellen neuen APIs
PerfettoTrace.record {}undPerfettoTraceRulewurden 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) - Bei UI-Tests mit einer Compose-Regel werden Fortsetzungen, die während
withFrameNanos-Rückrufen fortgesetzt werden, erst nach Abschluss aller Frame-Rückrufe 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, derwithFrameNanosoderwithFrameMillisdirekt 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
TestMonotonicFrameClock-Konstruktor und der Factory-Funktion wurde der optionale ParameteronPerformTraversals: (Long) -> Unithinzugefügt, um Code nachwithFrameNanos-Callbacks, aber vor dem Fortsetzen der Coroutinen der Aufrufer auszuführen. (Idb413, b/254115946, b/222093277, b/255802670) - EmojiCompat zu Compose hinzugefügt (Ibf6f9, b/139326806)
- Neuer Hintergrundparameter für
@Previewfür die Unterstützung dynamischer Farben hinzugefügt (I9f512)
Fehlerkorrekturen
- Benachrichtigungen zum Anwenden von Snapshots werden jetzt gesendet, nachdem
Recomposerdie Änderungen angewendet hat. (Iad6c0, b/222093277) - Es wurden Änderungen in
captureToImageeingeführt, um Screenshots von mehreren Fenstern zu ermöglichen. Das ist nützlich für Screenshot-Tests, in 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
GraphicsLayerScopewurde aktualisiert, um die aktuelle Größe vongraphicsLayerzu erfassen. Das ist nützlich, umgraphicsLayer-Transformationen als Funktion der zusammensetzbaren Größe zu berechnen. (If8c43,b/181387080)CompositingStrategywurde eingeführt, um festzulegen, wann eine Offscreen-Compositing-Ebene zum Rendern vongraphicsLayer-Inhalten verwendet werden soll. Bei „Auto“ wird das Standardverhalten beibehalten, bei dem intern eine Ebene verwendet wird, wenn Alpha angewendet wird, oder einRenderEffect/Overscroll. Bei „Always“ wird immer ein Offscreen-Puffer eingeführt. BeiModulateAlphawird kein Offscreen-Puffer verwendet, sondern jede der aufgezeichneten Zeichenanweisungen innerhalb desgraphicsLayermoduliert. Bei der Verwendung vonModulateAlphawird weiterhin ein Offscreen-Puffer für die Verwendung vonRenderEffect/Overscrollgenutzt (I25e82, b/256382834).invalidateSubtree()wurdeModifier.Nodehinzugefügt, um das Entwerten ganzer Hierarchien für Layout und Zeichnen zu ermöglichen. (I4bd90)rememberNestedScrollInteropConnectionzu „Stabil“ hochstufen Es wurde die Möglichkeit eingeführt, eine Stammansicht anrememberNestedScrollInteropConnectionzu übergeben. So kann die benutzerdefinierte Ansicht besser auf Scrollbeschränkungen reagieren, insbesondere in nicht standardmäßigen Ansichten (z.B.ModalBottomSheetDialog). (I9e107)- Die
ObserverNode-Schnittstelle wurde hinzugefügt. Sie kann vonModifier.Node-Implementierungen verwendet werden, die benachrichtigt werden müssen, wenn sich ein Wert ändert, der zuvor gelesen wurde. (I5728b, b/247716483) Paintwurde ein neuer Konstruktor hinzugefügt, der ein nativesandroid.graphics.Paintakzeptiert. Außerdem wurde die ErweiterungsfunktiontoComposePaint()hinzugefügt, mit der ein vorhandenes natives Paint-Objekt in Compose Paint konvertiert wird. (Ica91b)- Neue
FontFamily.Resolver.resolveAsTypefacefür die Verwendung auf Android hinzufügen (I8950b) ToolingStatewurde hinzugefügt, damit Tools interne Status von Composables ändern können (Ie6614).- Tools überarbeitet, um neue Animationen besser zu unterstützen (I8677b)
- Der Parameter
minLineswurde in die Textkomponenten „material“ und „material3“ sowie inTextFieldundOutlinedTextFieldeingefügt. Damit kann die Mindesthöhe der Komponente in Zeilen angegeben 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
- Es wurde eine neue Methode,
awaitEachGesture(), für Gestenerkennung hinzugefügt. Sie funktioniert ähnlich wieforEachGesture(), aber die Schleife über Gesten erfolgt vollständig innerhalb vonAwaitPointerEventScope, sodass keine Ereignisse zwischen den Iterationen verloren gehen können. forEachGesture()wurde zugunsten vonawaitEachGesture()eingestellt, da beiforEachGesture()Ereignisse zwischen Gesten verloren gehen können. (Iffc3f, b/251260206)- Das Recycling von Barrierefreiheitsobjekten in androidx wird eingestellt. Selbst bei den ältesten unterstützten Versionen sind die Leistungsänderungen vernachlässigbar. (I0a961)
DrawStylewurde als experimentelles Attribut fürTextStyleundSpanStylehinzugefügt, um das Zeichnen von umrandetem Text zu ermöglichen. (If24b8, b/155421273)AnnotatedString.Builderimplementiert jetztkotlin.text.Appendable. (I1a061, b/231030444)AnnotatedString.Builderhat jetzt eineappend(AnnotatedString, start: Int, end: Int)-Methode zum Anhängen eines Teilstrings vonAnnotatedStringund der sich überschneidenden Formatierungen.- Den Funktionen
ParagraphundMultiParagraphwurde der ParameterDrawStylehinzugefügt, mit dem sich umrandeter Text zeichnen lässt. (Ic8102, b/155421273)
Externer Beitrag
- Vielen Dank an
vighneshfür das Hinzufügen von TV-Geräten zu Vorabversionen (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 die Aktivität den Status der Compose-Ansicht gespeichert hat. (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
- Neue experimentelle API-Suite
LookaheadLayout(ermöglicht bisher unmögliche Animationsverhalten) - Neue experimentelle API-Suite
Modifier.Node(leistungsstärkere Alternative zuModifier.composed) - Verbesserte Unterstützung von Fenstereinsätzen.
- Fokusunterstützung für Steuerkreuz und Hardwaretastatur in LazyLists.
- Die maximal unterstützte Erhebung in Dialogfeldern und Pop-ups wurde auf 8 dp reduziert (Verhaltensänderung für einige benutzerdefinierte Designsysteme – Begründung in den Versionshinweisen zu Beta01)
- Viele geringfügige, nicht abwärtskompatible API-Verbesserungen
- Viele Fehlerkorrekturen und Leistungsverbesserungen
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
- Für
DeviceFontFamilyName-Schriftarten werden die Variationseinstellungen fürwghtunditalnicht standardmäßig konfiguriert. Stattdessen wird die Plattform-Einstellung für geladeneTypefaceverwendet. (Ia7a6d, b/246989332) LazyColumn-Speicherleck behoben:onModifierLocalsUpdatedwurde nicht mit dem Standardwert aufgerufen, wenn Modifizierer 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
- Es wurden Optionen zum Anpassen des Zeilenumbruchs in Text hinzugefügt. (I86907)
- Das
size:IntSize-Argument wurde in derTextMeasurer.measure-Methode durchconstraints: Constraintsersetzt, um Einschränkungen für die Mindestbreite zu unterstützen. (I37530, b/242707525)
Fehlerkorrekturen
- Die
BackHandlerAPI von AndroidX Activity funktioniert jetzt in einemDialog-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 messbare Elemente, die in verschiedenen Inhalts-Lambdas platziert werden, unterschiedlich behandelt werden (Ic1b4e).
Änderungen an experimentellen Focus APIs:
FocusDirection.InundFocusDirection.Outsind veraltet und werden durchFocusDirection.EnterundFocusDirection.Exitersetzt. (Ia4262, b/183746982)- Es wurden zwei neue Fokus-Properties „enter“ und „exit“ hinzugefügt, um ein benutzerdefiniertes Verhalten für
FocusManager.moveFocus(Enter)undFocusManager.moveFocus(Exit)anzugeben. (I5f3f9, b/183746982) - Sie können jetzt
FocusRequester.Cancelverwenden, um eine Fokusbewegung abzubrechen.FocusRequester.Cancelkann 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 zusätzlichen 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 Modifikatoren, 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 möglich und angemessen abwärtskompatibel sein. Allerdings gibt es einige 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(…): Modifierabstract class ModifierNodeElementabstract class Modifier.Nodeabstract class DelegatingNodeinterface LayoutModifierNodeinterface DrawModifierNodeinterface SemanticsNodeinterface PointerInputNodeinterface ModifierLocalNodeinterface ParentDataModifierNodeinterface LayoutAwareModifierNodeinterface GlobalPositionAwareModifierNodeinterface 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 für Material als auch für die Benutzeroberfläche. Diese Änderung wurde vorgenommen, um einen Fehler bei der Barrierefreiheit 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 Erhebung 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 Barrierefreiheit dadurch beeinträchtigt werden kann. Es liegt in der Verantwortung des Entwicklers, dafür zu sorgen, dass der untere Teil des Dialogfelds oder Pop-ups für Barrierefreiheitsdienste interaktiv und lesbar ist.
API-Änderungen
- Ein Problem wurde behoben, bei dem
painterResourcebei Konfigurationsänderungen nicht aktualisiert wurde (I58e73, b/228862715). rememberTextMeasurerakzeptiert die ParameterFontFamily.Resolver,DensityoderLayoutDirectionnicht mehr. Verwenden Sie denTextMeasurer-Konstruktor, um benutzerdefinierte Werte für diese Parameter anzugeben. (Ia1da3)- Die Eigenschaft
DialogProperties.decorFitsSystemWindowswurde hinzugefügt, damit DialogfelderWindowInsetsunterstützen können. (I57742, b/229378542) - Schriftartkonstruktoren wurden zur Aufrechterhaltung der Binärkompatibilität in die ursprüngliche Kotlin-Datei zurückverschoben. Keine Änderung gegenüber dem letzten stabilen Release. (Ieb2f3)
- Unnötiger Operator aus mehreren Gleichheitsdefinitionen entfernt – dies hat keine Auswirkungen. (I6c309)
FontVariation.Settingist eine versiegelte Schnittstelle, um zukünftige APIs für die Begrenzung zu ermöglichen. (I11021, b/143703328)- Fügen Sie
CompositionGroup.findParameterszuSlotTree.kthinzu. So können Tools Parameter für einCompositionGroupabrufen, 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 den
LayoutCoordinatesimPlacementScopeabzurufen. So wissen Entwickler, wo sich das aktuelle Layout befindet, um untergeordnete Elemente relativ zu seiner Position zu platzieren. (I5482b, b/238632578) LayoutCoordinates.transformFromwurde hinzugefügt, um die Matrix-Transformation von einemLayoutCoordinatesin ein anderes zu erhalten. (Ic5ab1, b/238632578)SemanticsModifier.idwurde verworfen und die Semantik-ID wurde stattdessen inLayoutInfo.semanticsIdverschoben. (Iac808, b/203559524)- Für Schriftarten in Ressourcen wird jetzt das Festlegen von Schriftartvariationen unterstützt (API 26+). (I900dd, b/143703328)
- Unterstützung variabler Schriftarten in
DeviceFontFamilyNameFont(Ic1279, b/143703328) - Schriftartkonstruktoren akzeptieren jetzt eine Liste von
FontVariation.Settingzum Konfigurieren variabler Schriftarten auf Geräten mit Android O und höher. (I11a9d, b/143703328) - Die
FontVariation-API zum Definieren und Verwenden von Schriftarten mit variablen Achsen 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 versiegelte Interface „Paragarph“. Es gibt keinen Anwendungsfall für die Unterklasse von „paragraph“. Wenn diese Änderung Sie betrifft, empfehlen wir Ihnen, sich an uns zu wenden. (If5247, b/239962983)
- Die experimentelle Anmerkung wurde aus
PlatformTextStyleundLineHeightStyleentfernt. (I64bef) TextInputService.show|hideSoftwareKeyboardeinstellen Verwenden Sie stattdessenSoftwareKeyboardControllerim App-Code undTextInputSessionim IME-Verwaltungscode. (I14e4c, b/183448615)- Neue API für vorhandene Animationstypen hinzufügen (I26179)
Fehlerkorrekturen
@RequiresPermissionwurde APIs hinzugefügt, für die die BerechtigungPOST_NOTIFICATIONSfü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#pressurezum Abrufen des Drucks hinzugefügt. (I45a5e, b/205164819) rememberTextMeasurerwurde hinzugefügt, umTextMeasurer-Instanzen in der Komposition einfach zu erstellen und sich daran zu erinnern. (I8d66e)Rect,RoundRectundMutableRectunterstützen jetzt die Kotlin-Syntaxinzum Aufrufen der Funktioncontains. (Ie42b0, b/238642990)- Entfernen Sie unnötige Funktionen aus
KeyInjectionScope, da sie sich problemlos mit einfacheren Teilen der API implementieren lassen. Zu den entfernten Funktionen gehörenpressKeys,keysDownundkeysUp. (I81d77) - Die Namen von Konstanten und Parametern in
KeyInjectionScopewurden umgestaltet, um das Suffix „Millis“ einzuschließen, wenn die Einheiten der Konstanten und Parameter Millisekunden sind. (Iabef5) - Die
toStringForLog()-Methode wurdeEditCommandhinzugefügt, um Probleme bei der Textbearbeitung zu beheben. (I53354, b/228862731) - Die Erweiterungsfunktion
drawTextwurde fürDrawScopehinzugefügt, um die Möglichkeit zu bieten, Text mit mehreren Stilen für Composables und Modifikatoren zu zeichnen, die aufDrawScopewieCanvasunddrawBehindangewendet werden. (I16a62, b/190787898) - Wir führen eine neue experimentelle API namens
TextMeasurerein, die eine beliebige Berechnung des Textlayouts ermöglicht, die unabhängig von der Compose-Laufzeit identische Ergebnisse wieBasicTextliefert. (I17101) - Fügen Sie
mapTreezuSlotTree.kthinzu. So können Tools dasSlotTreeuntersuchen, ohne zuerst eine In-Memory-Kopie wie bei asTree zu erstellen. 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 zumVelocity-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). - Behebt einen NPE, der durch
AnnotatedString.toUpperCaseverursacht 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
- Neues
LookaheadLayout, das 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.SubcomposeLayoutswerden noch nicht unterstützt, aber in einem zukünftigen Release. (I477f5) - Der Pinselvariante von
TextStyleundSpanStylewurde ein optionaler Alphaparameter hinzugefügt, um die Deckkraft des gesamtenTextzu ändern. (Ic2fac, b/234117635) - Der Annotationstyp
UrlAnnotationund die zugehörigen Methoden wurden eingeführt, um die Unterstützung vonTalkBack-Links inAnnotatedStrings zu ermöglichen. (I1c754, b/231495122) - Dienstfunktionen in die Laufzeit verschieben (I4f729)
Fehlerkorrekturen
TextLayoutResult.getLineForOffsetwirft nicht. (Idc5d6, b/235876324)
Externer Beitrag
- Eine neue API
WindowInfo.keyboardModifierswurde 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
- Nullzeiger im Inspector behoben (b/237987764)
- Es wurde eine ClassCastException behoben, die beim Speichern von Erinnerungen 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-Kern-API. - Neue APIs zur Anpassung des Verhaltens in
FocusOrderundFocusProperties - Verbessertes Verhalten bei Verwendung einer physischen Tastatur oder TV-Fernbedienung
- Das fokussierte Scrollen von Lazy-Listen funktioniert jetzt mit der neuen
Neue APIs für:
- Fenstereinsätze
- Wichtige Primitiven für gestengesteuerte, unendliche und Layout-Animationen
GraphicsLayer-Funktionen, einschließlichRenderEffect
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-Standard-Schnittstellenmethoden erstellt (I5bcf1).
KeyInjectionScopewurden Funktionen höherer Ordnung hinzugefügt, um Tastendrücke einzufügen, während andere Tasten gedrückt oder aktiviert sind. Zu diesen Funktionen gehörenwithKeysDown,withKeysToggledusw. Außerdem wurden Eigenschaften zum Prüfen hinzugefügt, ob eine bestimmte Metataste gedrückt ist, z. B.isCtrlDown, um zu prüfen, ob eine der Steuerungstasten gedrückt ist. Dokumentationen zu den einzelnen Funktionen finden Sie unterKeyInjectionScope. (I9f6cd, b/229831515)- Es wurde eine experimentelle
OverscrollEffecteingeführt, um benutzerdefinierte Overscroll-Effekte zu ermöglichen. Außerdem gibt es dieModifier.scrollable-Überladungen, die sie akzeptieren. - Die experimentelle
LocalOverScrollConfigurationwurde vomfoundation.gesture-Paket in das Foundation-Paket verschoben und inLocalOverscrollConfigurationumbenannt (If19fb, b/204650733). runComposeUiTestWithoutActivity {}inrunEmptyComposeUiTest {}umbenennen, damit es mitcreateEmptyComposeRule()übereinstimmt (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
pressKeyTimessowieisCapsLockOnund Freunde wurden zuKeyInjectionScopehinzugefügt. Außerdem unterstützt die API jetzt kombinierte Maus- und Tastatureingabemuster, z. B. das Klicken auf eine Maustaste, während eine Metataste 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 über diekey-Eigenschaft vonMultiModalInjectionScopewährend einer multimodalen Eingabe mitperformMultiModalInput. Die Dokumentation der API finden Sie unterKeyInjectionScope. (Ic5000, b/229831515) - Es wurde ein neues
GoogleFont.Provider.AllFontsListUrizum Abrufen der kanonischen Internetquelle von Google Fonts hinzugefügt, die von Android unterstützt werden. - Verbesserte Fehlermeldungen, die neu ausgegeben werden, wenn Google Fonts in Compose nicht geladen werden kann. (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 Boundswird jetzt für Composables angewendet, sobald sie über die Kachel in den Schnelleinstellungen aktiviert 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
StyleSpanszu laden, was zu Abstürzen führte, wennFontFamily.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
DeleteSurroundingTextCommandundDeleteSurroundingTextInCodePointsCommandmü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.DisposeOnDetachedFromWindowIfNotInPoolingContainerwurde inDisposeOnDetachedFromWindowOrReleasedFromPoolumbenannt, um besser widerzuspiegeln, dass es sich um Fälle handelt, in denen es zu einer Entsorgung kommt, und nicht nur darum, wann 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
- Es wurde die experimentelle
BeyondBoundsIntervalhinzugefügt, die von benutzerdefinierten Implementierungen vonLazyListverwendet werden kann, wenn Elemente außerhalb der sichtbaren Grenzen angeordnet werden (Ifabfb, b/184670295). - Die Versionen von
Modifier.composedmit Schlüssel sind jetzt eine stabile API (Ie65e4, b/229988420). - Die
rememberNestedScrollConnectionAPI wurde vereinfacht, sodass Kompositions-Locals verwendet werden, um die aktuellen Ansichtsinformationen abzurufen (I67ca7). - Die Annotation
@ComposableTargetund mit@ComposableTargetMarkergekennzeichnete Annotationen können jetzt mit dem Präfix@fileauf 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:UiComposableverwenden, 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 ComposeUiTestundfun runComposeUiTest(block: ComposeUiTest.() -> Unit). Mit diesen APIs können Compose-UI-Tests ohneTestRuleausgeführt werden. Wenn Sie einen Test ohneComposeTestRuleausführen möchten, übergeben Sie den Test als Lambda anrunComposeUiTestund verwenden Sie die Methoden und Elemente im EmpfängerbereichComposeUiTest, die mit denen inComposeContentTestRuleidentisch sind.Die Android-spezifischen
interface AndroidComposeUiTestundfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)werden hinzugefügt, um den Zugriff auf die zugrunde liegende Aktivität zu ermöglichen, ähnlich wie beiAndroidComposeTestRule. Für noch mehr Kontrolle können Sie selbst eineclass AndroidComposeUiTestEnvironmentinstanziieren.Die Desktop-Implementierung ist
class DesktopComposeUiTest, aber derzeit werden keine Desktop-spezifischen Ausführungsfunktionen angeboten.So migrieren Sie einen Test von
ComposeTestRulezuComposeUiTest(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
ComposeContentTestRuleundComposeTestRulenicht vonComposeUiTestabgeleitet. Das bedeutet, dass Erweiterungsfunktionen fürComposeUiTestnoch nicht über dieTestRule-Schnittstelle aufgerufen werden können. WennComposeUiTestzur stabilen API wird, werdenComposeContentTestRuleundComposeTestRuleso geändert, dass sie vonComposeUiTestabgeleitet werden. (Ib4e90)LineHeightBehaviorwird inLineHeightStyleumbenannt.LineVerticalAlignmentwird inLineHeightStyle.Alignmentumbenannt.LineHeightTrimwird inLineHeightStyle.TrimumbenanntStandardkonstruktorwerte aus
LineHeightStylewurden entfernt (I582bf, b/181155707)BrushwurdeTextStyleundSpanStylehinzugefügt, um Text mit Farbverlauf zu zeichnen. (I53869, b/187839528)Die Attribute
trimFirstLineTopundtrimLastLineBottomvonLineHeightBehaviorwurden in ein einzelnes Enum geändert:LineHeightTrim.LineHeightTrimhat Werte für vier Status, die durch zwei boolesche Werte definiert werden:FirstLineTop,LastLineBottom, „Beide“ und „Keine“ (Ifc6a5, b/181155707)LineHeightBehaviorwurde zuTextStyleundParagraphStylehinzugefügt. MitLineHeightBehaviorwird 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 vonTextStyle(lineHeight)bereitgestellten Bereich definiert.So ist es beispielsweise möglich, über
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)ein ähnliches Verhalten wie bei Preisvergleichsportalen zu erzielen.Die Konfigurationen
trimFirstLineTopundtrimLastLineBottomfunktionieren nur dann richtig, wennincludeFontPaddingauf „false“ gesetzt ist. (I97332, b/181155707)Die Funktionen
PlatformParagraphStyle.lerpundPlatformSpanStyle.lerpwurden in Funktionen der obersten Ebene geändert (I9a268).
Fehlerkorrekturen
- In der
PointerInputChange::copy-Dokumentation 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 dieincludeFontPaddingmit dem AttributTextStyle.platformTextStyledeaktivieren. 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 vonTextFieldbeheben. (I01423, b/171394808)
Externer Beitrag
MouseInjectionScope.scroll(delta = someDelta)wird jetzt unter 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.maxHeighthat derzeit keine Auswirkungen, ermöglicht aber in Zukunft einige Berechnungen, z. B. das Kürzen 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-Vorgang) wurde in
PointerInputChangeeingestellt. Mitconsume()können Sie die Änderung vollständig übernehmen. MitisConsumedkönnen Sie feststellen, ob jemand anderes die Änderung bereits übernommen hat. PointerInputChange::copy()erstellt jetzt immer eine flache Kopie. Das bedeutet, dass Kopien vonPointerInputChangeverbraucht werden, sobald eine der Kopien verbraucht wird. Wenn Sie ein ungebundenesPointerInputChangeerstellen 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 verschachtelte Scroll-Deltas von einer verschachtelten ScrollView 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 werden angezeigt, wenn
FontFamily.SansSerifverwendet wird. Intern werden auf API 21–28 Fallback-Schriftartnamen wie „sans-serif-medium“ verwendet. Dies ist eine Verhaltensänderung, da zuvor nur die Schriftstärken 400 und 700 in API 21–28 unterstützt wurden. (I380fe, b/156048036, b/226441992) - Bei Anweisungen für Absätze und mehrere Absätze wurden Positionsargumente vor optionale Argumente verschoben. (Idafaa)
AndroidFontverwendet nun 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 Snapshot-basierten threadsicheren Schreib-/Lesevorgängen profitieren möchten, den Wert aber lesen möchten, ohne unnötige Neuzusammenstellungen oder ‑messungen zu verursachen. (I9f365, b/214054486) - Mit der Erweiterungseigenschaft
consumeWindowInsetsvonComposeViewkönnen Entwickler die Nutzung von AndroidWindowInsetsdeaktivieren. So können separateComposeViewsin der Hierarchie jeweilsWindowInsetsanwenden, ohne sich gegenseitig zu stören. (I0ef08, b/220943142) KeyboardType.Decimalwurde als Alternative zuKeyboard.Numberhinzugefügt, um das Dezimaltrennzeichen explizit in die IME aufzunehmen. (Iec4c8, b/209835363)PointerEventType.ScrollundPointerEvent.scrollDeltasind 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) View-Elternelement senden kann. (I5d1ac, b/174348612)
FontFamily.Resolverwurde aktualisiert, um die Bedienungshilfe-Einstellung „Systemweiter Fettdruck“ (I6c1e7) zu integrieren.Font(AssetManager, String, ...)wurde verworfen und durchFont(String, AssetManager, ...)ersetzt. Dies ist eine experimentelle API. (I1c7a4)- Fügen Sie den neuen Schriftartdeskriptor
Font(DeviceFontFamilyName)hinzu, um optional während der Schriftart-Fallback-Ketten nach auf dem System installierten Schriftarten zu suchen. (I30468, b/219754572) - Es wurde eine temporäre Kompatibilitätskonfiguration für
includeFontPaddingin TextStyle/ParagraphStyle hinzugefügt.includeFontPaddingkann überTextStyle(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) - Fügen Sie die
GoogleFont.Provider.isAvailableOnDevice-Erweiterung hinzu, um Hilfe bei der Fehlerbehebung zu erhalten. (I64e31) GoogleFont.Provider-Konstruktor für die Verwendung mit@ArrayReshinzufügen (Ic5ee1, b/225984280)Compose GoogleFontheißt jetztFont(GoogleFont). Die API bleibt ansonsten stabil. (I125f2)
Fehlerkorrekturen
- Lint-Prüfung 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
RequestFocuswurde hinzugefügt, um den Fokus auf das fokussierbare Ziel zu richten. (I17b71) - Die Verarbeitung von Vektordrawables wurde aktualisiert, um das automatische Spiegeln zu unterstützen. Dadurch wird der Inhalt eines
VectorPaintergespiegelt, wenn die aktuelle Layoutrichtung RTL ist. (I79cd9, b/185760237) Schatten-/Umgebungsfarben wurden als nachfolgende Parameter von
Modifier.graphicsLayerfür die API-Kompatibilität aktualisiert (I3f864, b/160665122)Standardimplementierungen für Schatten-/Umgebungsfarbe in
GraphicsLayerScopehinzugefügt, um API-Änderungen ohne Unterbrechung zu ermöglichenUhrzeit der Veranstaltung zu RSB-Ereignissen hinzugefügt (Ief8ae)
FocusOrderwurde jetzt inFocusPropertieszusammengeführt undfocusProperties()bietet jetzt alle Funktionen vonfocusOrder().FocusOrderundfocusOrder()wurden eingestellt.focusOrder(), das einfocusRequesterakzeptiert, sollte durch den ModifikatorfocusRequester()in Kombination mitfocusProperties()ersetzt werden. So können die Modifizierer besser voneinander getrennt werden. (I601b7)Wenn Sie sowohl
RecyclerViewals auchComposeaktualisieren, wird die Scrollleistung für RecyclerViews mit Compose-Ansichten als untergeordnete Elemente deutlich verbessert.ViewCompositionStrategy.Defaultals Möglichkeit zum Abrufen der integrierten Standardstrategie hinzufügenFügen Sie
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainerhinzu. 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önnen verwendet werden, um zusammensetzbare Methoden oder andere Annotationsklassen zu annotieren, die dann als indirekt mit der angegebenen @Preview annotiert gelten. (I12eff)
Referenzgeräte für @Preview der Geräteliste hinzugefügt (I071c9)
Fehlerkorrekturen
- Die APIs für Vektorgrafiken wurden aktualisiert, sodass anstelle von @UiComposable die richtige zusammensetzbare Annotation @VectorComposable verwendet wird (I942bc).
- Entferne „crossinline“ aus
AnnotatedString.Builder.withStyle(If84d5)
Externer Beitrag
- compose-ui:
ambientShadowColor- undspotShadowColor-Attribute zuGraphicsLayerScopehinzufügen (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
TextToolbarverwendet jetzt Lambda-Argumente anstelle vonActionCallback. (Ib2eb9, b/197950089)- Die Nullable-Annotationen in Core und AppCompat wurden aktualisiert, um mit Tiramisu DP2 übereinzustimmen (I0cbb7).
- Die gemessene Schnittstelle stellt jetzt die Eigenschaft „parentData“ bereit (I3313f)
Modifier.onPlacedund dieOnPlacedModifier-Schnittstelle sind jetzt stabil. (Ib5482)- Super! Compose-Animationen unterstützen jetzt die Einstellung „Animator-Dauerskala“ aus den Entwickleroptionen. (I5a4fc, b/161675988)
- Die lokale Gebotsanpassung
BeyondBoundsLayoutwurde hinzugefügt. (If8b51, b/184670295) - Text: includeFontPadding ist jetzt standardmäßig deaktiviert. Die Beschneidungsprobleme, die durch
includeFontPadding=falseverursacht werden, wurden behoben. Bei langen Scripts sollte es nicht mehr zu Beschneidungen kommen. (I31c84, b/171394808)
Fehlerkorrekturen
ComposeContentTestRule.setContentlöst jetzt eineIllegalStateExceptionaus, 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-Coroutines 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,ComposableTargetMarkerundComposableOpenTargetwurden 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 Annotationen vom Compose-Compiler-Plug-in abgeleitet werden. Die direkte Verwendung dieser Annotationen 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
ComposeNodeoder eine zugehörige zusammensetzbare Funktion verwendet wird.Bei benutzerdefinierten Appliern muss für die zusammensetzbaren Funktionen, die
ComposeNodeoderReusableComposeNodeaufrufen, die AnnotationComposableTargetfür die Funktion und alle zusammensetzbaren Lambda-Parametertypen hinzugefügt werden. Es wird jedoch empfohlen, eine Annotation zu erstellen, die mitComposableTargetMarkerannotiert ist, und dann die markierte Annotation anstelle vonComposableTargetdirekt zu verwenden. Eine mitComposableTargetMarkermarkierte zusammensetzbare Annotation entspricht einemComposbleTargetmit dem voll qualifizierten Namen der Attributklasse als Applier-Parameter. Ein Beispiel für die Verwendung vonComposableTargetMarkerfinden Sie unteranroidx.compose.ui.UiComposable. (I38f11)Font(resId, ...)akzeptiert jetzt „loadingStrategy“ in der stabilen API. (Ief3d2)FontLoadingStrategyist jetzt eine stabile API. (I1ee35, b/174162090)Asynchrones Laden von Schriftarten in Text unterstützen (I77057, b/214587005)
Bridge-API zum Konvertieren von benutzerdefinierten
Font.ResourceLoaderinFontFamily.Resolverhinzufügen. (Ia0060)
Fehlerkorrekturen
- Die bereitgestellten
FontFamily.Resolverwerden an untergeordnete Composables wie „Popup“ übergeben. - Die bereitgestellten
Font.ResourceLoaderwerden 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 inTextInputSessionundTextInputServicesind jetzt veraltet und werden nicht mehr aufgerufen. Verwenden Sie stattdessenBringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874)- Die Methode
destroyDisplayListDatawurde in der Stub-KlasseRenderNodeeingeführt (I1e659, b/216660268). - Es wurde eine neue API hinzugefügt, mit der sich untergeordnete Elemente von
SubcomposeLayoutvorab messen lassen. (I857ea) movableContentOfwurde hinzugefügt. Damit wird ein zusammensetzbares Lambda in ein Lambda umgewandelt, das seinen Status und die entsprechenden Knoten an jeden neuen Ort verschiebt, an dem es aufgerufen wird. Wenn der vorherige Aufruf die Komposition verlässt, wird der Status vorübergehend beibehalten. Wenn ein neuer Aufruf des Lambda 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 Aufrufe beansprucht werden, werden dauerhaft entfernt. (Ib4850)FontFamilyResolverist jetzt überLocalFontFamilyResolver.currentverfügbarcreateFontFamilyResolver(context)undcreateFontFamilyResolver(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.fontFamilyResolverenthält jetzt den Resolver, der für dieses Layout verwendet wird.TextLayoutResult.layoutInput.resourceLoaderist veraltet und wird nicht mehr verwendet. (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.preloadMit
FontFamilyResolver.setAsyncLoadContextkann der globale Coroutine-Kontext festgelegt werden, der zum Laden asynchroner Schriftarten verwendet wird. (I87fe8, b/174162090)AndroidFontwurde hinzugefügt, eine neue Low-Level-API zum Bereitstellen neuer Arten von Schriftartressourcendeskriptoren unter Android. Beispielsweise können Sie Schriftarten aus einem app-spezifischen Backend laden, optional vorinstallierte Schriftarten auf dem Gerät suchen oder eine Schriftart aus einer Ressource laden, die nicht von den aktuellen Schriftart-Factories bereitgestellt wird.Die
Font.ResourceLoadedAPI 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 Schriftarten finden Sie unterAndroidFont.Mit der Erweiterungsfunktion
Font.AndroidResourceLoaderkann einFont.ResourceLoaderaußerhalb der Komposition erstellt werden.Der Parameter
loadingStrategywurde ressourcenbasierten Schriftarten hinzugefügt, um das asynchrone Laden zu ermöglichen, wenn Ressourcen-Schriftartverweise auf herunterladbare Schriftarten in XML verweisen. (Ie5aea, b/174162090)Der Konstruktor
Typeface(FontFamily)wird nicht mehr unterstützt. Bisher wurde damit das Vorabladen von Schriftarten ermöglicht, was bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern konnte. Bei herunterladbaren Schriftarten kann dieser Aufruf 10 Sekunden lang blockiert werden. Verwenden Sie stattdessenFontFamilyResolver.preload.fontResource(FontFamily): Typefaceist veraltet. Bisher wurde damit das Vorabladen von Schriftarten ermöglicht, was bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern konnte. Verwenden Sie stattdessenFontFamilyResolver.preload(If8e7c, b/174162090).Der
SubcomposeLayoutState-Konstruktor, dermaxSlotsToRetainForReuseakzeptiert, wurde eingestellt. Stattdessen gibt es einen neuen Konstruktor, derSubcomposeSlotReusePolicyakzeptiert. Das ist eine neue Schnittstelle, mit der sich genauer steuern lässt, welche Slots für die zukünftige Wiederverwendung beibehalten werden sollen. (I52c4d)Die HSV- und HSL-Funktion in
Colorwird als nicht experimentelle API bereitgestellt. Der Oklab-Farbraum ist jetzt eine öffentliche API. (I08fb6, b/180731008)Die veraltete
AndroidComposeTestRule.AndroidComposeStatement, die nicht für die öffentliche API vorgesehen war und ohnehin keine Funktion hatte. (Ibc46b)Umbenennung der intern generierten KT-Klasse (Ia0b9e, b/174162090)
FontLoadingStrategy.valuesentfernt (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.resolvegibtState<Any>zurück (I4406c, b/174162090)
Fehlerkorrekturen
- Textfelder werden jetzt über der Tastatur angezeigt, wenn sie fokussiert sind und die Tastatur eingeblendet wird, sofern der Soft-Input-Modus
ADJUST_PANist. (I8eaeb, b/190539358, b/192043120) - Auf dem Desktop wird die Komposition lokal für
FontFamily.Resolververwendet. - Die Desktopversion von
FontLoaderwird eingestellt - 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()undModifier.onPreRotaryScrollEvent()für Wear-Geräte mit drehbarem Seitenschalter hinzugefügt (I18bf5, b/210748686)- Experimentelle Erweiterung
View.createLifecycleAwareRecomposer(I0cde6) hinzufügen
Externer Beitrag
PointerEvent.scrollDelta.yist jetzt auf Android invertiert. Wenn wir das Mausrad nach rechts kippen, 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.canLoadSynchronouslywurde eingestellt. Dieses Attribut hat keine semantische Bedeutung. (Ica5ef)CompositionDatawurde 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
- Hängt jetzt von Kotlin
1.6.10ab.
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
NullPointerExceptionunterandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayListbeheben (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
LazyVerticalGridbehoben (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 den Richtlinien für Bedienungshilfen in Material Design für die Größe von Berührungszielen zu entsprechen. 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. Dadurch wird Compose Material an das Verhalten von Material Design Components angepasst. So ist das Verhalten konsistent, wenn Sie Views und Compose mischen. Diese Änderung sorgt auch dafür, dass beim Erstellen der Benutzeroberfläche mit Compose Material-Komponenten die Mindestanforderungen für die Barrierefreiheit von Touch-Zielen erfüllt werden.
- Stabile Unterstützung für Navigation Rail
- Eine Reihe zuvor experimenteller APIs wird auf stabil umgestellt.
- Support 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 zur Unterstützung von Compose Material 1.1.0-rc03
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, der dazu führte, dass Scrollaktionen für die Barrierefreiheit (I7cbfb) fehlten.
SemanticsNodeInteraction.captureToImage()funktioniert jetzt auch, wennHardwareRenderer.isDrawingEnabled()falseist. 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.0kompatibel zu sein
API-Änderungen
- Nullwerte in
androidx.core.viewwurden 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 oder nicht. (I2e59d)
- Unterstützung für Mausradereignisse in der UI-Ebene wurde hinzugefügt. (Ia14eb, b/198214718)
- Es wurden experimentelle
Modifier.composed-Überladungen hinzugefügt, die Schlüssel akzeptieren, um sie auf Gleichheit zu vergleichen und für das Überspringen von Optimierungen infrage zu kommen. (Ice799, b/205851704) ComposeNotIdleExceptionwird jetzt vonExceptionabgeleitet statt direkt vonThrowable. Das bedeutet, dass Catch-Anweisungen, dieExceptionabgefangen haben, jetzt möglicherweiseComposeNotIdleExceptionabfangen, was zuvor nicht der Fall war. (I9c217)
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das sich die 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
- Es wurde der neue Modifikator „Modifier.onPlaced“ hinzugefügt, damit Änderungen an der Platzierung beobachtet werden können. Weitere Änderungen am Offset des untergeordneten Modifikators können daher auf Grundlage der beobachteten Placement-Änderung vorgenommen werden. (I558fd)
InjectionScope.flush()undInjectionScope.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.TouchundMultiModalInjectionScope.Mousewurden entfernt. Um Touch- und Mausereignisse für multimodale Gesten einzufügen, können Sie jetztMultiModalInjectionScope.touch()undMultiModalInjectionScope.mouse()verwenden. Beide akzeptieren eine Lambda-Funktion, die den Empfängerbereich dieser Modalität hat. (Idde18)
Fehlerkorrekturen
- Der Standardwert für
durationMillisinTouchInjectionScope.swipeWithVelocitywird 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 übergeordnete Elemente senden, damit diese 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, 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
BringIntoViewAPI wurde hinzugefügt. Mit ihr können Sie eine Anfrage an Eltern senden, damit sie scrollen, um ein Element in den Blick zu bringen (Ib918d, b/195353459). - Neue Animations-APIs zur Unterstützung von Tools. Sie ermöglichen es, 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
ExperimentalComposeUiApiausViewRootForInspectorundLayoutInfo.ownerViewId(I5c2e3) entfernen- Für „Layout“ wurde eine überladene Version ohne untergeordnete Elemente hinzugefügt, die effizienter ist (Ib0d9a).
InternalCompilerApiaus Composer-Methoden entfernt, die modulübergreifend aufgerufen werden müssen (I1aa0b)SemanticsNodeInteraction.performSemanticsActiongibt jetzt dasSemanticsNodeInteractionzurück, für das die Funktion aufgerufen wurde. (I9e5db)- CompositionLocal „LocalInputModeManager“ wurde hinzugefügt, um den Touch- und den Nicht-Touch-Modus zu erkennen. (I6a83c, b/175899786)
viewConfiguration: ViewConfigurationwurde zuLayoutInfohinzugefügt, damit Nutzer den richtigen Wert für Dinge wie das Zeitlimit für langes Drücken erhalten. (I76ca6)viewConfiguration: ViewConfigurationwurde zuInjectionScopehinzugefü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 Property empfängt die Klickposition und die Ankergrenzen. So lässt sich besser steuern, ob „onDismissRequest“ aufgerufen werden soll oder nicht. Das kann beispielsweise nützlich sein, um zu verhindern, dass das Anker-Overlay geschlossen wird, wenn der Nutzer den Anker berührt.
- PopupProperties wurde um updateAndroidWindowManagerFlags erweitert, um eine detaillierte Steuerung der Flags zu ermöglichen, die vom Pop-up an den Android WindowManager übergeben werden. Der Parameter des Lambda ist das Ergebnis der Berechnung der Flags aus den PopupProperties-Werten, die zu WindowManager-Flags führen, z.B. „focusable“. Das Ergebnis der Lambda-Funktion sind die endgültigen Flags, die an den Android WindowManager übergeben werden. Standardmäßig werden die aus Parametern berechneten Flags durch updateAndroidWindowManagerFlags nicht geändert. Diese API sollte nur mit Vorsicht und nur in Fällen verwendet werden, in denen das Pop-up sehr spezifische Verhaltensanforderungen hat. (I6e9f9)
Recomposer.statewurde eingestellt und durchRecomposer.currentStateersetzt, um den Typ in einen StateFlow zu ändern (Ic2ab3, b/197773820).flush()unddispose()wurden zuInjectionScopehinzugefügt. Verwenden Sie sie, wenn Sie alle in der Warteschlange befindlichen Ereignisse sofort leeren und den Bereich verwerfen möchten. (Ifb73a)- Added
performScrollToNode(matcher: SemanticsMatcher)that scrolls a scrollable container to the content that is matched by the given matcher. (Ic1cb8) InjectionScopeimplementiert jetztDensity, sodass Sie inperformTouchInputund ä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. Das kann sich auf das Ergebnis von Tests auswirken, bei denen Eingabeaktionen wie ein bestimmter Wischvorgang ausgeführt werden. (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: DensityundlayoutDirection: LayoutDirectionwurden zuLayoutInfohinzugefügt. So können Nutzer vonLayoutInfodie inLayoutInfobereitgestellten Dimensionen und Positionen richtig interpretieren. (I002f1)- Es wurde 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 dieMouse-Eigenschaft vonMultiModalInjectionScopewährend einer multimodalen Eingabe mitperformMultiModalInput.MouseInjectionScopeenthält die Dokumentation der verfügbaren API. (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
PointerEventhat jetzt einePointerEventType, 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 Property PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655) abfangen.
- Die Methoden
performGestureundGestureScopewurden verworfen und durchperformTouchInputundTouchInjectionScopeersetzt. (Ia5f3f, b/190493367) touchBoundsInRootwurde zuSemanticsNodehinzugefügt. Es enthält die Mindestgröße für Berührungszielbereiche, damit Entwickler sicherstellen können, dass Berührungszielbereiche die Mindestanforderungen für die Barrierefreiheit erfüllen. (I2e14b, b/197751214)- Implementierung von „inspectable“ neu durchführen (I927bc, b/191017532)
- Geänderter Parametername von „inspectable“ passend zu „composed“ (I3a482, b/191017532)
performTouchInputundTouchInjectionScopewurden als Ersatz fürperformTouchInputundTouchInjectionScopeeingeführt, um den Weg für andere Modalitäten (z. B. Maus) zu ebnen.TouchInjectionScopehat dieselben Methoden wieGestureScope, mit Ausnahme vonmovePointerToundmovePointerBy, die inupdatePointerToundupdatePointerByumbenannt wurden. Alle anderen Methoden sind identisch.Das Verhalten von
TouchInjectionScopeist fast identisch mit dem vonGestureScope, mit zwei kleinen Unterschieden:- 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 nichtmove(), und dann wirddown()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. - Wenn ein „up“-Ereignis gesendet wird, während Zeiger bewegt wurden, ohne dass ein „move“-Ereignis gesendet wurde (ähnlich wie oben), würde die vorherige Implementierung die Ereigniszeit vorziehen und ein „move“-Ereignis senden, bevor das „up“-Ereignis gesendet wird. Bei der neuen Implementierung ist das nicht der Fall: Die neuen Positionen der Zeiger werden erst durch das „up“-Ereignis berücksichtigt.
In
TouchInjectionScopewird schließlich die neue MethodecurrentPosition(pointerId: Int)eingeführt, mit der die aktuelle Position des angegebenen Zeigers abgerufen werden kann. (If1191, b/190493367)- Wenn ein „down“-Ereignis gesendet wird, während die Zeiger bewegt wurden, ohne dass ein „move“-Ereignis gesendet wurde (d. h.
Fehlerkorrekturen
- Zulassen, dass sich die Grenzen des Berührungszielbereichs über den Clipbereich hinaus erstrecken, um den Mindest-Berührungszielbereich zu erreichen. (I43e10, b/171509422)
- Auf Geräten mit Android 12 wird jetzt das Dehnen beim Overscrollen unterstützt. (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-alpha03wurde aktualisiert und hängt jetzt von Kotlin1.5.30ab. (I74545)
API-Änderungen
Modifier.inspectablezum Umschließen anderer Modifikatoren hinzugefügt. (I1909b, b/191017532)- Die
BlurredEdgeTreatmentAPI 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, oder Inhalte werden 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 hinzugefügt. „OffsetEffect“ und der Blur-Modifikator wurden eingeführt, um ganz einfach visuelle Unschärfe-Effekte in einen Teil der Kompositionshierarchie einzufügen. (I0f6aa, b/166927547)
- Die RenderEffect API wurde eingeführt. Sie kann optional für ein
Modifier.graphicsLayerkonfiguriert 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)
- Der ViewConfiguration wurde eine Mindestgröße für den Berührungszielbereich hinzugefügt, die in der Semantik und bei der Zeigereingabe verwendet wird, um die Barrierefreiheit zu gewährleisten. (Ie861c)
- Unterstützung für TileMode.Decal hinzugefügt, was beim Definieren des Randverhaltens für auf Unschärfe basierende RenderEffects nützlich ist. (I7e8ed, b/166927547)
performScrollToIndex,performScrollToKey,hasScrollToIndexActionundhasScrollToKeyActionsind 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 Parameter „shape“ 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
performGesturewird 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 Parsen von XML-Vektorgrafiken wurde aktualisiert, um ColorStateLists als Eigenschaften für die Farbtönung 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.bringIntoViewakzeptiert jetzt ein Rechteck als Parameter, sodass wir einen Teil eines Composables in den Blickpunkt rücken können (Ice2c5, b/194330245).AnimatedImageVectorund die zugehörigen APIs befinden sich jetzt im neuen Modulandroidx.compose.animation:animation-graphics. (I60873)- Es wurde ein experimenteller Modifier hinzugefügt, um Umzugsanfragen zu bearbeiten. (I65a97, b/178211874)
Die BrushPainter-API wurde eingeführt, um das Zeichnen eines beliebigen Pinsels 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 bewusst verpixelt werden soll. Die Composables „BitmapPainter“ und „Image“ wurden aktualisiert, sodass sie auch einen optionalen Parameter „FilterQuality“ verwenden (Ie4fb0, b/180311607).
Die Methode
GestureScope.advanceEventTimewurde hinzugefügt, um den Zeitpunkt von Ereignissen in einer Geste besser steuern zu können (Ibf3e2).
Fehlerkorrekturen
- Damit die Verkettung 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. Indem Modifier.paint drawContent aufruft, nachdem der Inhalt des angegebenen Painters gezeichnet wurde, erhalten wir eine bessere Verhaltenskonsistenz mit dem Modifikator-Muster. (Ibb2a7, b/178201337, b/186213275) - Dialogfelder folgen jetzt dem Größenanpassungsverhalten der Plattform. Legen Sie
usePlatformDefaultWidthauf „false“ fest, um dieses Verhalten zu überschreiben. (Iffaed, b/192682388) InfiniteAnimationPolicywurde 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.31abhä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.30abhä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
- Die Abhängigkeit wurde auf Kotlin
1.5.21aktualisiert.
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-alpha05verwenden, 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 Ihrer
build.gradle-Datei auf 24 oder höher. Dieses Problem wird in der nächsten Version von Android Studio Bumblebee und AGP7.1behoben. (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ößenanpassungsverhalten der Plattform. Legen Sie
usePlatformDefaultWidthauf „false“ fest, 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“ wurde in
ui-toolingundui-tooling-previewaufgeteilt (Iefa28, b/190649014).
API-Änderungen
- Die eingestellten experimentellen Funktionen
FocusManager#moveFocusInundFocusManager#moveFocusOutwurden entfernt (I227d7, b/170154986, b/186567354, b/168510304) - Canvas unterstützt jetzt einen „contentDescription“-Parameter für die Barrierefreiheit. (Ib547c)
useDefaultMaxWidthinPopupPropertieswurde inusePlatformDefaultWidthumbenannt. (I05710)- Dialogfelder können jetzt die gesamte Bildschirmbreite nutzen. (I83929, b/190810877)
- Experimentelle Unterstützung für HSV- und HSL-Farbdarstellungen hinzugefügt. (Id7cf8, b/180731008)
Geändertes Verhalten
- Compose
@Previewbietet jetzt eineLocalActivityResultRegistryOwner, mit der Sie Composables, die APIs wierememberLauncherForActivityResult()verwenden, in der Vorschau ansehen können. Diese APIs sind davon abhängig, dass der entsprechende Inhaber vorhanden ist. (Ib13d1, b/185693006) - Compose
@Previewbietet jetzt eineLocalOnBackPressedDispatcherOwner, mit der Sie Composables, die APIs wieBackHandlerverwenden, in der Vorschau ansehen können. Diese APIs sind davon abhängig, dass der Inhaber vorhanden ist. (Ia1c05, b/185693006)
Fehlerkorrekturen
InfiniteAnimationPolicywurde nachandroidx.compose.ui:uiverschoben (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“ wurde 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 gibt keine native Bitmap. Daher führt
ImageBitmap()zu einer NullPointerException. - Es gibt keine Zeichnung, sodass
captureToImage()auf unbestimmte Zeit auf den nächsten Zeichenvorgang wartet (d.h. es kommt zu einem Deadlock). - Es ist keine Schriftart geladen, sodass jeder Text falsch gemessen wird. Alle Zeichen haben eine feste Höhe von etwa 20 px und eine Breite von 1 px.
ComposeTestRule.waitUntil {}führt den Hauptthread nicht aus, während es wartet. Das ist im Grunde dasselbe wie beiComposeTestRule.mainClock.advanceTimeUntil {}. Es wird erwartet, dass in Zukunft weitere Einschränkungen festgestellt werden. (I284fa)
- Es gibt keine native Bitmap. Daher führt
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.txtangegeben, die sich im Verzeichnissrc/mainoder 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 menschenlesbaren ART-Profilformats, das bei der Verwendung vonadb 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 ist
<FLAGS>eines oder mehrere der ZeichenH,SundP, 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 Klasseandroidx.compose.runtime.SlotTablehätte beispielsweise den DeskriptorLandroidx/compose/runtime/SlotTable;.<METHOD_SIGNATURE>ist die Signatur der Methode und enthält den Namen, die Parametertypen und die Rückgabetypen der Methode. Die Methodefun isPlaced(): BooleanfürLayoutNodehat beispielsweise die SignaturisPlaced()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
Hist eine „heiße“ Methode und sollte vorab kompiliert werden.Eine Methode mit dem Flag
Swird 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
Pwird nach dem Start aufgerufen.Eine Klasse, die in dieser Datei vorhanden ist, wird beim Start verwendet und sollte im Heap vorab zugewiesen werden, 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 eine bestimmte Teilmenge der Anwendung vorab zu kompilieren und so die Leistung der Anwendung zu verbessern, insbesondere beim ersten Ausführen. Beachten Sie, dass dies keine Auswirkungen auf debugfähige Anwendungen hat.
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
NestedScrollSource-Enum wird durch eine Inline-Klasse ersetzt. (Ie321b, b/187055290) FocusManager.clearFocus(forcedClear = true)wird inFocusManager.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
@ExperimentalComposeUiApiausPopupProperties. (I01fa6) PointerTypewurde von einer Enumeration 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 aneinandergehängt zu werden. Außerdem wurden bessere Test-APIs bereitgestellt, um diese Änderungen zu nutzen (Ica6bf, b/184825850).
Modifier.focusModifier()wurde verworfen und durchModifier.focusTarget()ersetzt (I6c860)Modifier.onSizeChanged()undModifier.onGloballyPositioned()sind keine Inline-Funktionen mehr (I727f6, b/186109675).- Das
KeyboardType-Enum wird durch eine Inline-Klasse ersetzt. (I73045, b/187055290) - Das
FocusState-Enum wurde durch eineFocusState-Schnittstelle ersetzt (Iccc1a, b/187055290). - Das ImeAction-Enum wird durch eine Inline-Klasse ersetzt. (I18be5, b/187055290)
PlaceholderVerticalAlignwird 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, durch den LazyColumn-/Row-Elemente nach dem Scrollen nur teilweise angezeigt wurden (I8c9ac, b/188566058).
- Die Positionsänderung wird jetzt automatisch von
detectDragGesures,detectVerticalGesturesunddetectHorizontalGesturesübernommen. Es ist nicht mehr erforderlich, „change.consumePositionChange“ in den „onDrag“-Callbacks aufzurufen (I42fc4, b/185096350, b/187320697). - LayoutModifiers, die Ausrichtungslinien bereitstellen, wurden korrigiert. Ein Fehler wurde behoben, der dazu führte, dass die übergeordnete Einheit nicht neu gemessen wurde, wenn sich die Ausrichtungslinien der untergeordneten Einheiten änderten. (I4401f, b/174315652)
Modifier.onGloballyPositioned()wurde geändert, um die Koordinaten dieses Modifikators in der Modifikator-Kette zu melden, nicht die Layoutkoordinaten nach Anwendung 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
- Die
ViewRootForInspector-Schnittstelle wurde zur Verwendung im Inspector hinzugefügt (Ib70df). - In
SubcomposeLayoutStatekann 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 wiederzuverwenden, wenn wir einen neuen benötigen (Ieb981). - Das Enum „KeyEventType“ wird durch eine Inline-Klasse ersetzt. (Id670a, b/187055290)
- Das
FocusDirection-Enum wird durch eine Inline-Klasse ersetzt. (Ib6d03, b/187055290, b/184086802) - Es wird die Möglichkeit eingeführt, den Status von „SubcomposeLayout“ zu verschieben. So kann der Inhalt in einen erforderlichen „slotId“ vorab zusammengesetzt werden, was den nächsten Messdurchlauf beschleunigt. Wenn wir das nächste Mal versuchen, mit der angegebenen „slotId“ zusammenzusetzen, ist keine Komposition erforderlich. (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)
TextGeomerticTransformundTextDecorationamAnnotatedStringwerden 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)
@ComposeCompilerApinicht 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.ScrollToIndexwurde hinzugefügt, um eine Liste mit indexierten Elementen zum Element mit einem bestimmten Index zu scrollen, undSemanticsProperties.IndexForKey, um den Index eines Elements in einer Liste mit Elementen mit Schlüssel abzurufen. Beide Aktionen werden von LazyList implementiert.SemanticsNodeInteraction.performScrollToIndexwurde hinzugefügt, um eine Liste zum angegebenen Index zu scrollen, undSemanticsNodeInteraction.performScrollToKey, um eine Liste zum Element mit dem angegebenen Schlüssel zu scrollen. (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 API für Bedienungshilfen
errorwurde 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 HilfsfunktionenaddTtsAnnotationund „withAnnotation“ wurden zuAnnotatedString.Builderhinzugefügt. (I8cbdc, b/178446304) - Die Konstruktorfunktion „TextUnit“
TextUnit(value: Float, type: TextUnitType)wurde 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 Felder
FocusManager.moveFocus(In)undFocusManager.moveFocus(Out)wurden hinzugefügt. (Ic5534, b/183746743) - Experimentelle
performTextInputSelectionAPI hinzugefügt (I2dcbb, b/178510628) - Die
InputEventCallback-Schnittstelle wird nicht mehr unterstützt. Die Schnittstelle konnte in keiner öffentlichen API verwendet werden und wurde auch nicht im Code verwendet. (I34a02, b/184003208) - Die Funktion
TextLayoutResult/createTextLayoutResultwurde eingestellt. Es handelt sich um eine ungenutzte öffentliche Funktion, die zum Testen hinzugefügt wurde. Die Funktion bietet keine nutzbaren Funktionen für die Compose Text APIs. Die Funktion ist jetzt veraltet und wird später entfernt. (I80413)
Fehlerkorrekturen
- Die Barrierefreiheits-Scrollaktionen
ACTION_SCROLL_FORWARD,ACTION_SCROLL_BACKWARD,accessibilityActionScrollLeft,accessibilityActionScrollUp,accessibilityActionScrollRightundaccessibilityActionScrollDownwurden 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
hideSoftwareKeyboardundshowSoftwareKeyboardaufSoftwareKeyboardControllerinhide()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-Accessibility-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“ wurde 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). AndroidViewBindingentfernt jetzt Fragmente, die überFragmentContainerVieweingefügt wurden, wennAndroidViewBindingaus der Compose-Hierarchie entfernt wird. (Ib0248, b/179915946)AndroidViewBindingverschachtelt jetzt Fragmente, die überFragmentContainerVieweingefügt wurden, korrekt, wenn sich IhrComposeViewin einemFragmentbefindet. Dadurch werden Probleme beim Speichern und Wiederherstellen des Status dieser Fragmente behoben. (I70eb0, b/179915946)- Compose ViewBinding hängt jetzt von Fragment
1.3.2ab und zeigt Fragmente, die überFragmentContainerViewnach 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 der ViewTree-Abhängigkeiten von ComposeView (I8dbbf, b/182466548)
- Die optionalen Parameter
startX/endXundstartY/endYwurden den FunktionenswipeUp/swipeDown/swipeLeft/swipeRightinGestureScopehinzugefü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
- Es wurde eine neue lokale
LocalSoftwareKeyboardController-Zusammensetzungs-API hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle für TextField zu ersetzen. (I5951e, b/168778053) - Es wurde eine neue lokale
LocalSoftwareKeyboardController-Zusammensetzungs-API hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle für TextField zu ersetzen. (I84472, b/168778053) - Die folgenden
SemanticsMatcherwurden entfernt:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(If16bd)
- Folgendes
SemanticsMatcherswurde als @ExperimentalTestApi markiert:hasWidth(width, tolerance)hasHeight(height, tolerance)hasLeftPosition(left, tolerance)hasTopPosition(top, tolerance)hasRightPosition(right, tolerance)hasBottomPosition(bottom, tolerance)(Ia600c)
- Folgende
SemanticsMatchers 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:uihä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)- Fehler behoben:
rememberSaveable { mutableStateOf(0) }funktioniert nicht mehr, wenn es in einem Ziel von „navigation-compose“ verwendet wird. (I1312b, b/180042685, b/180701630) - Es wurde eine neue lokale
LocalSoftwareKeyboardController-Zusammensetzungs-API hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle für TextField zu ersetzen. (I658b6, b/168778053) - Seltene NoSuchElementException in
ComposeRootRegistry'stearDownRegistry()(Iddce1) behoben
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
detectDragGestureshinzugefü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)
InteractionStatewurde durch[Mutable]InteractionSourceersetzt.- Schnittstellen sind für das Ausgeben / Erfassen von Interaktionsereignissen verantwortlich.
- Anstatt
interactionState = remember { InteractionState() }an Komponenten wieButtonundModifier.clickable()zu übergeben, verwenden SieinteractionSource = remember { MutableInteractionSource() }. - Statt
Interaction.Pressed in interactionStatesollten Sie stattdessen die Erweiterungsfunktionen für InteractionSource verwenden, z. B. InteractionSource.collectIsPressedAsState(). - Bei komplexen Anwendungsfällen können Sie InteractionSource.interactions verwenden, um den Stream von Interaktionen zu 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)
- Die eingestellten LayoutCoordinates-Methoden wurden entfernt. Verwenden Sie stattdessen die Funktion anstelle der Eigenschaft für „positionInParent“ und „boundsInParent“ (I580ed, b/169874631, b/175142755).
- Typealiase wurden durch zugrunde liegende Typen ersetzt:
ColorStopheißt jetztPair<Float, Color>SpanStyleRangeist jetzt „AnnotatedString.Range“ ParagraphStyleRangeheißt jetztAnnotatedString.Range<ParagraphStyle>StringAnnotationheißt jetztAnnotatedString.Range<String>- (I8dd1a)
- Es wurde eine neue TextInputSession für Eingabesitzungen aus Low-Level-Textkomponenten wie CoreTextField erstellt. (I8817f, b/177662148)
- „Placeable“ macht jetzt „measuredSize“ verfügbar, die die Größe darstellt, die für das untergeordnete Layout tatsächlich gemessen wurde. Diese Größe entspricht möglicherweise nicht den Analysebeschränkungen. (Ib2729, b/172560206, b/172338608)
- „selectionGroup“-Modifier hinzugefügt, mit dem Sammlungen von Tabs oder Optionsfeldern für Barrierefreiheitszwecke markiert werden können (Ie5c29)
Die
defaultFactoryfürcompositionLocalOfundstaticCompositionLocalOfist 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.
Für 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
defaultFactoryeine 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ößenmodifizierer wurden umbenannt. „Modifier.width“/„height“/„size“ wurden in „requiredWidth“/„requiredHeight“/„requiredSize“ umbenannt. Die Modifikatoren „preferredWidth“, „preferredHeight“ und „preferredSize“ wurden in „width“, „height“ und „size“ umbenannt. (I5b414)
Modifier.tapGestureFilterwurde entfernt. Verwenden Sie stattdessenModifier.pointerInput { detectTapGestures(...) }. (I266ed, b/175294473)Die teilweise Verarbeitung wurde aus dem Zeigereingabesystem entfernt. Die empfohlene Methode zum Koordinieren des teilweisen Verbrauchs ist Modifier.nestedScroll. (Ie9c9b)
Die Ausrichtung wurde in das Foundation-Paket verschoben. VelocityTracker 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 abgeleitete Klassen wurden entfernt. „AnimatedFloat“ wurde entfernt. (Icde52, b/177457083)
„Providers“ wurde in „CompositionLocalProvider“ umbenannt.
- Der Konstruktor „Composition“ akzeptiert keinen Schlüsselparameter mehr und wird nicht mehr unterstützt.
- 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 ein Interface 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 dem Hinweis „@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 dadurch die binäre Kompatibilität, nicht aber die Quellkompatibilität beeinträchtigt. Für die meisten Nutzer sollte das kein Problem sein.
- (I99b7d, b/177245490)
ComponentActivity.setContent()wurde aus compose:ui entfernt. Verwenden Sie die ausandroidx.activity:activity-compose:1.3.0-alpha01.viewModel()undLocalViewModelStoreOwnerwurden aus compose:ui entfernt. Verwenden Sie die ausandroidx.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 durch 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 Verwendungen in verschiedenen toString-Methoden wurden so umgestaltet, dass String.format nicht intern verwendet wird. (Id1290)
Geräteprofil-Assertions entfernt (I798d2)
androidx.compose.runtime:runtime-dispatch entfernt (I55feb)
Textaktionen prüfen jetzt automatisch den Fokus (I13777, b/179648629)
runBlockingWithManualClockentfernt (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 in Kürze 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 Top/BottomAppBar wurde der Parameter „contentPadding“ 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
iconin BottomNavigationItem wurde nachselectedundonClickverschoben. - Der Parameter
alwaysShowLabelsin BottomNavigationItem wurde inalwaysShowLabelumbenannt. bodyContent-Parameter in einigen Komponenten wurden incontentumbenannt.- 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. Sie müssen jedoch entweder benannte Parameter verwenden oder die Reihenfolge manuell aktualisieren, da Ihr Code sonst nicht mehr wie zuvor funktioniert. - Der Parameter
secondaryVariantwurde zudarkColors()hinzugefügt. Diese Farbe ist in der Regel dieselbe wiesecondaryim 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.
onValueChangeEndinSliderwurde inonValueChangeFinishedumbenannt und als „nullable“ festgelegt.- Der Parameter
textinSnackbarwurde aus Konsistenzgründen incontentumbenannt. - Der Parameter
contentPaddingwurde zuDropdownMenuItemhinzugefügt, um das Anpassen des Standardabstands zu ermöglichen. Außerdem istcontentjetzt eine Erweiterung vonRowScope. ModalDrawerLayoutwurde inModalDrawerumbenannt.BottomDrawerLayoutwurde inBottomDrawerumbenannt.- (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 animiert werden (I8ea91). - Es wurde eine neue lokale Kompositions-API für LocalSoftwareKeyboardController 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 verworfenen 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 in CompositionContext umbenannt (I53fcb)
- „Bounds“ wurde in „DpRect“ (I4b32a) umbenannt.
- Aktualisierung für Tests: Mit hasText() wird sowohl nach Eingabe- als auch nach Label-/Hinweis-/Platzhaltertext im Textfeld gesucht (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 zu verwenden. (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 entsprechen. (Iba381, b/174565889)
- Bessere APIs für Unterstring-Tests, bei denen der Unterstring jetzt ein Argument ist (Icbe78)
- Es wurde ein
Modifier.focusOrder()hinzugefügt, das ein FocusRequester ohne Angabe einer benutzerdefinierten Fokusreihenfolge als Lambda akzeptiert. 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 nur selten verwendet wurden. (I26702, b/178659281)
- Das Pop-up ist jetzt plattformspezifisch. AndroidPopupProperties wurde in PopupProperties umbenannt und
isFocusablewurde in einenfocusable-Parameter inPopupProperties(Ieeea5) 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“ ist veraltet. Verwenden Sie stattdessen „fontResource“. „imageResource“, „loadImageResource“, „vectorResource“ und „loadVectorResource“ sind veraltet. Verwenden Sie stattdessen „painterResource“. (I6b809)
- Aus Leistungsgründen werden für die ScrollAxisRange-Semantik jetzt Lambdas zurückgegeben, die Floats zurückgeben, anstelle von direkten Float-Werten. (If4a35, b/178657186)
- Semantik für bearbeitbaren Text 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 aus 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). - Umgebungen wurden umbenannt, um der Umbenennung von „Ambient“ in „CompositionLocal“ zu entsprechen. Ambients hießen früher „AmbientFoo“, jetzt heißen CompositionLocals „LocalFoo“. (I2d55d)
- Das eingestellte BaseTextField wurde entfernt. Verwenden Sie stattdessen BasicTextField. (I71368)
- Die Auswahl wurde in die Grundlage verschoben. (I7892b)
- Ähnlich wie wir zuvor die zusammensetzbare Funktion
state { 0 }entfernt und die Verwendung vonremember { mutableStateOf(0) }gefördert haben, werden wir die zusammensetzbare FunktionsavedInstanceState { 0 }entfernen. Verwenden Sie stattdessenrememberSaveable { mutableStateOf(0) }. Der Wert wird automatisch gespeichert und wiederhergestellt, wenn der Typ, der in MutableState verwendet wird, im Bundle gespeichert werden kann. Wenn Sie zuvor ein benutzerdefiniertes Saver-Objekt übergeben haben, müssen Sie jetzt eine neue Überladung von „rememberSaveable“ mit dem ParameterstateSaververwenden. Die Nutzung sieht so aus:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }(Ib4c26, b/177338004) - Semantik für Passwörter für die 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). snapshotFlowundwithMutableSnapshotsind nicht mehr experimentell (I6a45f)- Recomposers können jetzt geschlossen werden. Geschlossene Recomposers führen die Recomposition so lange fort, bis die untergeordneten Coroutinen 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 als Schnittstelle refaktoriert und entspricht der Implementierung von PathEffect. (Ica1e8)
- Der Parameter „layoutDirection“ wird der Funktion „createOutline“ von „Shape“ hinzugefügt. So lassen sich 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 Endlosanimationen angewendet wird. Standardmäßig wird keine Richtlinie installiert, außer wenn Tests mitComposeTestRuleausgefü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 Modifikators. 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 oder daraus entfernt werden, sind jetzt stabiler. (Ie81ed, b/175765614)
- „Recomposer.current()“ wurde entfernt. [Abstract]ComposeView-Recomposers werden jetzt standardmäßig verzögert erstellt und sind auf das Fenster beschränkt. Sie werden vom ViewTreeLifecycleOwner für das Fenster gesteuert. Die Recomposition und auf „withFrameNanos“ basierende Animationsticks werden pausiert, während der Lebenszyklus des Hosts angehalten wird. (I38e11)
- Recomposer.runningRecomposers bietet jetzt einen globalen StateFlow von schreibgeschützten RecomposerInfo-Objekten, mit dem der laufende Kompositionsstatus im Prozess beobachtet werden kann. Diese API wird gegenüber Recomposer.current() bevorzugt, da diese jetzt eingestellt ist. (If8ebe)
- „Saver“, „listSaver()“, „mapSaver()“ und „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 umgestaltet, sodass anstelle einer konkreten Klasse eine Schnittstelle verwendet wird. Außerdem wird in der Benutzeroberfläche kein Typparameter mehr verwendet.
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 Funktion „StringBuilder.deleteAt“ (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 Cache für Ressourcen-Drawables 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 in 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. Dadurch wird die Abhängigkeit der Zeigereingabe von diesen Klassen aufgehoben. (Ia33b2, b/175142755, b/177420019)
- AmbientSavedStateRegistryOwner wurde ähnlich wie die bereits vorhandenen AmbientLifecycleOwner und AmbientViewModelStoreOwner hinzugefügt (I9a3e8, b/176756365).
- Die Vektorgrafik-API 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)
- Globale Koordinatenmethoden wurden eingestellt und neue fensterbasierte Koordinatenmethoden eingeführt. (Iee284)
- „Modifier.toolingGraphicsLayer“ wurde hinzugefügt. Damit wird ein Grafikschicht-Modifikator hinzugefügt, wenn die Prü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 berücksichtigen und so die Umwandlung von dp in Rohpixel zu unterstützen. (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“ in „InternalTextApi“ verschieben. (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 classwurde aus den folgenden Klassen 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 (I5e1bd) wurde hinzugefügt.
- 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.
- Bisherige Factory-Funktionen mit Kleinbuchstaben am Anfang wurden eingestellt.
- Neue Factory-Funktionen geben die FontFamily anstelle von Unterklassen zurück
- Konstruktoren der Unterklassen ausgeblendet, sodass sie nur über Factory-Funktionen erstellt werden können.
- Font.asFontFamily wurde in Font.toFontFamily umbenannt (I42aa7)
ComposeContentTestRulewurde eingeführt, wodurchComposeTestRuleerweitert wird. Außerdem wurdesetContentdefiniert, das ausComposeTestRuleentfernt wurde. Es wurde eine Factory-MethodecreateEmptyComposeRule()hinzugefügt, die einComposeTestRulezurü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. mitActivityScenario.launch(I9d782, b/174472899).animateAsState heißt jetzt animateFooAsState, wobei Foo der Typ der animierten Variablen ist, z. B.Float, Dp oder Offset. (Ie7e25)
Dem Bild und dem Symbol wurde der Parameter „Inhaltsbeschreibung“ hinzugefügt. Sie wird verwendet, um Bedienungshilfen (I2ac4c) eine Beschreibung zu geben.
Entferne „displaySize“, da diese Eigenschaft vermieden werden sollte. In der Regel 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 Modifikator-Kette angegeben. (I36b78, b/177562900)
Die emit()-API und alle Überladungen sind jetzt veraltet und wurden in ComposeNode umbenannt. Die APIs sind identisch, nur der Name ist anders, 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.
initialwurde 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 sie 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.
RememberObserverist ein Ersatz fürCompositionLifecycleObservermit 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, wirdonRememberedfür jeden Verweis aufgerufen, währendonEnternur einmal aufgerufen wird.onEnterwurde mehrmals aufgerufen, wenn das Objekt in untergeordneten Kompositionen wieWithConstraintsundScaffoldverwendet wurde. Dadurch war der einzelneonEnter-Aufruf nicht mehr zuverlässig und wurde fürRememberObserverentfernt.RememberObserverfügtonAbandonedhinzu, das aufgerufen wird, wenn dieRememberObserver-Instanz vom Callback zurückgegeben wird, der anrememberübergeben wurde, aber nicht im Kompositionsstatus gespeichert wurde und daher nieonRememberedaufgerufen wird. Das kann passieren, wenn die Komposition durch eine Ausnahme beendet wird, bevor sie abgeschlossen ist, oder wenn 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 vonRememberObserver, die der Empfehlung für einen einzelnen Verweis oben folgt, eine externe Ressource verfolgt, geben sowohlonForgottenals auchonAbandonedan, dass die Ressource nicht mehr benötigt wird. Wenn mit dem Objekt Arbeit verfolgt wird, die inonRememberedbegonnen oder Ressourcen zugewiesen wurden, kannonAbandonedignoriert werden, da es nicht aufgerufen wird, wennonRememberedaufgerufen 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 Inhalte haben, die gescrollt werden müssen. Mit „LazyColumn“ können wir nur sichtbare Elemente zusammensetzen, messen und zeichnen. 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)unditemsIndexed(items: List)sind jetzt Erweiterungsfunktionen und müssen daher manuell importiert werden. Neue Erweiterungsüberladungen für Arrays:items(items: Array)unditemsIndexed(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 basierende Übergänge sind veraltet (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 wurde in InputEventCallback umbenannt
- (I0a366)
- Nicht verwendete PxSquared, PxCubed und PxInverse wurden entfernt. „Size.center()“ wurde in ein Attribut geändert. (I973f7)
- Das ui-test-Modul kann jetzt die Erstellung von Recomposern für zu testende UIs konfigurieren (Ibebd8).
- Velocity wurde so geändert, dass es aus Komponenten besteht und mathematische Operationen unterstützt. (Ib0447)
@ExperimentalTestingwurde in@ExperimentalTestApiumbenannt, 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. Dabei wird die Komposition verworfen, um sie später neu zu erstellen. APIs zum Installieren und Ermitteln von Recomposers mit Fensterbereich und CompositionReferences zum Erstellen von untergeordneten Kompositionen hinzugefügt.
Fügen Sie ViewCompositionStrategy hinzu, um die Strategie für die Kompositionsentsorgung von [Abstract]ComposeViews zu konfigurieren. Das Standardverhalten ist die Entsorgung beim Trennen des Fensters. (I860ab)
Öffentliche API „Any.identityHashCode()“ entfernt (I025d7)
Die API „toStringAsFixed“ wurde entfernt. Verwenden Sie stattdessen direkt „String.format“. (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 wurde 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 durchanimateAsState()ersetzt, das anstelle vonTeineState<T>zurückgibt. Dies 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 zu den klickbaren, auswählbaren und umschaltbaren SemanticsModifier-Elementen hinzu. „Modifier.progressSemantics“ wurde so geändert, dass es auch für „Slider“ verwendet werden kann. (I216cd)
- Neue auf Coroutinen basierende 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“ wurde eingestellt. 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).
- Destrukturierungsdeklarationen zum Erstellen von FocuSRequester-Instanzen hinzufügen (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“ wurde entfernt (Ia7a24)
- Verschachteltes Scrollsystem hinzugefügt. Weitere Informationen finden Sie unter Modifier.nestedScroll (I36e15, b/162408885).
- subcomposeInto(LayoutNode) wurde intern (Id724a)
Die
Applier-Benutzeroberfläche wurde geändert, um das Erstellen von Bäumen von unten nach oben statt von oben nach unten zu vereinfachen.Die Methode
insert()wurde ininsertTopDown()umbenannt.Die neue Methode
insertBottomUp()wurde hinzugefügt.Ein Applier fügt Knoten in den bearbeiteten Baum ein. Dazu verwendet er je nach Leistung
insertTopDown()oderinsertBottomUp().Einige Bäume, z. B.
LayoutNodeundView, 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-Methode zu implementieren. Dieser musste in jeden Applier kopiert werden, der eine Bottom-up-Konstruktion für die Leistung benötigte. Mit dieser Änderung wirdApplierdurchinsertBottomUp()überschrieben, um einen Baum von unten nach oben zu erstellen, undinsertTopDown(), um den Baum von oben nach unten zu erstellen. (Icbdc2)Die Eigenschaften „dismissOnBackPress“ und „dismissOnClickOutside“ wurden zu „AndroidDialogProperties“ hinzugefügt. Damit kann konfiguriert werden, wann die Lambda-Funktion „onDismissRequest“ des Dialogfelds aufgerufen wird. (If5e17)
Die API „painterResource“ 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 Typ des Assets nicht mehr im Voraus bestimmen und können diese Methode aufrufen, um ein Painter-Objekt zu erhalten, das in Image-Composables oder Painter-Modifikatoren 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 mit DrawScope zusammen zu sein. (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 IdlingResource-Schnittstellen von Espresso sind. Sie können über die ComposeTestRule (I433f3) registriert und deregistriert werden.
Globale (De-)Registrierung von ComposeIdlingResource und globale (De-)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 waren zuvor als „InternalComposeAPI“ gekennzeichnet. Sie sind jetzt intern im Modul „E-Mail verfassen“.
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)
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 Konvertieren 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 „Schließen“ 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 eine Grafikebene für das Zeichnen einzuführen. 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.drawOpacitywurde inModifier.alphaumbenanntModifier.drawShadowwurde inModifier.shadowumbenannt (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 Auswahlgriffe und den Auswahlhintergrund festgelegt. Bei Apps, die nicht auf Material basieren, können die Farben für die Auswahl manuell mit AmbientTextSelectionColors angepasst werden. (I1e6f4, b/139320372, b/139320907)
- WindowManager.isWindowFocused wurde hinzugefügt, um zu prüfen, ob das Hostfenster im Fokus ist, sowie ein WindowFocusObserver, der einen onWindowFocusChanged-Callback bereitstellt. (I53b2a, b/170932874)
- Die TransformOrigin API wurde aktualisiert, sodass die Destrukturierungssyntax verwendet wird, um
pivotFractionXundpivotFractionYalscomponent1undcomponent2zurückzugeben (If43c4, b/173586560). - Es wurde ein Lint-Check für die Benennung und Position von zusammensetzbaren Lambda-Parametern hinzugefügt, um die Einhaltung der Compose-Richtlinien zu prüfen.
Außerdem wurden einige APIs, die
childrenals Namen für ihr nachgestelltes Lambda verwenden, gemäß Lint-Prüfung und Anleitung zucontentmigriert. (Iec48e) - Es wurde eine API hinzugefügt, mit der geprüft werden kann, ob die Modifikatortasten Alt, Strg, Meta oder Umschalttaste gedrückt wurden, als ein Keyevent gesendet wurde. (I50ed9)
- Eine neue
Modifier.drawLayer()-Überladung wurde hinzugefügt. Dazu wird ein Lambda-Block in einem neuen GraphicsLayerScope verwendet, in dem Sie die Ebenenparameter so definieren, dass Recomposition und Relayout 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
Ambientersetzt und neue Eigenschaften mit dem Präfix „Ambient“ eingeführt, die den anderen Ambients und Compose-API-Richtlinien entsprechen. (I33440) androidx.compose.ui.text.Typefacewurde nachandroidx.compose.ui.text.font.Typefaceverschoben (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 für die Kompatibilität auf ImageVector.Builder zu verweisen. (Icfdc8)
- ImageAsset und zugehörige Methoden wurden in ImageBitmap umbenannt. (Ia2d99)
- Der Funktion „place()“ von „PlacementScope“ wurde der Parameter „zIndex“ hinzugefügt. „Modifier.zIndex()“ funktioniert jetzt als „LayoutModifier“ und in jedem benutzerdefinierten Layout können „zIndexes“ für die untergeordneten Elemente direkt im Placement-Block festgelegt werden (I711f7, b/171493718).
- Semantische Eigenschaften der Grundlage in „ui“ verschoben (I6f05c)
- Die Funktionen „place(Offset)“ und „placeRelative(Offset)“ werden eingestellt. Verwenden Sie stattdessen Überladungen mit Ganzzahl-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 Color.Unspecified. Die Klasse „PxBounds“ wurde entfernt. Verwenden Sie stattdessen „Rect“. (Ie9d02, b/172562222)
- Die Benutzeroberfläche 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ückanzeige mit dem neuen suspendierenden Zeigereingabe-Tool hinzugefügt. Außerdem wurden einige Dienstprogramme hinzugefügt, die es Entwicklern erleichtern, eigene Gestenerkennung zu schreiben. (I00807)
idwurde fürLayoutIdParentDatainlayoutIdumbenannt.Measurable.idwurde inMeasurable.layoutIdumbenannt. (Iadbcb, b/172449643)- Neuer Multitouch-Gesterkennungs-Mechanismus, 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).
Coroutine-basierte 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 zur Steuerung des Scrollens, die wartet, bis das Scrollen abgeschlossen ist, bevor sie zurückkehrt. (Ie5642)
„Modifier.focusable“ wurde in „foundation“ hinzugefügt. Damit können Sie einer Komponente das Verhalten hinzufügen, dass sie fokussierbar ist, mit korrekter Semantik und Barrierefreiheit. (I41eb9, b/152525426, b/162865824)
Standardimplementierungen von Methoden und Eigenschaften in AnimationClockTestRule bereitstellen, die an die
clock(I7ea3d, b/173399709) delegiert werden könnenAndroidComposeTestRule kann jetzt benutzerdefinierte Activity-Launcher akzeptieren (Ib8288, b/153623653, b/154135019)
„TextLayoutResult.getLineVisibleEnd“ wurde eingestellt. Als Ersatz für TextLayoutResult.getLineEnd gibt es jetzt einen 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 Sprachausgabemodul. (I54cc6)
Neue APIs zum Ausführen von Animationen in Coroutinen (Ied662)
Fehlerkorrekturen
- Der Ausrichtungsparameter von „Box“ wurde in „contentAlignment“ umbenannt. (I2c957)
- Die offsetPx-Modifikatoren wurden in „offset“ umbenannt. Sie akzeptieren jetzt Lambda-Parameter anstelle von „State“. (Ic3021, b/173594846)
- Der Parameter „resetInput“ wurde zu 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-Schriftfont über die Funktion
typefaceladen, z.B.typeface(Typeface.DEFAULT). Außerdem wurdetypefaceFromFontFamily()intypeface()umbenannt (I52ab7) - Es wurde ein Lint-Check hinzugefügt, um zu prüfen, ob Modifier-Factory-Funktionen als Erweiterungen für Modifier definiert sind, damit sie flüssig 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 Einheitlichkeit 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.
- Der Klasse „ContentScale“ wurde die Methode „computeScaleFactor“ hinzugefügt.
- „ContentScale.FillBounds“ wurde hinzugefügt, um eine nicht einheitliche Skalierung durchzuführen, mit der die Quellgrenzen so gedehnt werden, dass sie das Ziel vollständig ausfüllen.
- 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 den Kameraabstand wurde hinzugefügt, um die 3D-Transformationen „rotationX“/„rotationY“ in den Layer-APIs zu ergänzen. (I40213, b/171492100)
- SelectionContainer ohne den Callback (Ibfadb) hinzugefügt
- 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)
- Entfernt: Deprecated 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 Compose's MonotonicFrameClock angewiesen ist, um Kompositions-Frame-Ereignisse mit runBlockingTest von kotlinx-coroutines-test abzuwarten (I4402f).
- GestureScope.localToGlobal entfernt (I15299, b/171462785)
onAllNodesWithSubstring-Suchfunktion hinzugefügt (I81dd7, b/171462889)- Das Modul „androidx.ui.test“ ist veraltet. 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, neutrale 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 Umgebungen hinzugefügt. Damit können Sie Umgebungswerte angeben, die nur festgelegt werden, wenn noch kein Umgebungswert vorhanden ist. (Id6635, b/171024925)
- BaseTextField wurde eingestellt. Verwenden Sie stattdessen BasicTextField. (I896eb)
- Einführung des Moduls „ui-test-junit4“ (Ib91f8)
relativePaddingFromwurde inpaddingFromumbenannt. Der ModifikatorpaddingFromBaselinewurde 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 einen CoroutineContext bei der Erstellung (Ic4610)
zIndex-Werte summieren, wenn mehrereModifier.zIndex()angewendet werden. Bisher hat der erste 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 Misch-/Färbungsanwendungsfälle, in denen Inhaltspixel zuerst gerendert werden müssen, damit der entsprechende Mischmodus-Algorithmus 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-Ziehgriffs korrigieren (I6e1e0)
- DrawScope und ContentDrawScope wurden in Schnittstellen anstelle von abstrakten Klassen umgestaltet.
- CanvasDrawScope-Implementierung von DrawScope erstellt
- Implementierungen von DrawScope wurden so umgestaltet, dass CanvasScope verwendet wird.
- DrawContext erstellt, um Abhängigkeiten für DrawScope zu umschließen
- Veraltete Methoden in DrawScope entfernt (I56f5e)
- Breaking Change: Der Rückgabewert wurde aus
PointerInputFilter.onPointerEvent(...)entfernt, da der einzige Wert, der in Zeigerereignissen geändert werden kann, Verbrauchsdaten sind. Anstatt Daten ausPointerInputFilter.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, Prüftoolinformationen in einem zusammengesetzten 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 mit anderen Transformationsmethoden übereinstimmt.
- Die überladene DrawScope.rotateRad-Funktion, die Gleitkommazahlen für die X- und Y-Koordinate des Drehpunkts verwendet hat, ist veraltet.
- (Iffcbb, b/170434992)
Fehlerkorrekturen
- API-Lint-Prüfung 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)
- Die IME-Option „KeyboardCapitalization“ wurde hinzugefügt. (I8ac38)
- Die Option für einzeilige Tastaturen wurde CoreTextField 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„false“ für onTouchEvent zurückgeben (I94c5a, b/170320973) - Box wurde zu einer Inline-Funktion. (Ibce0c, b/155056091)
Externer Beitrag
- Unterstützung verschiedener Sprachen für
AnnotatedString.capitalizeundAnnotatedString.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 Prüferinformationen hinzufügen (Ic9a22)
- Verschiebe „Lang drücken“ in „Text“. (Iff2bc)
- Experimenteller Modifier.pointerInput-Modifier, der die Eingabe unterbricht (Ia77d2)
- Aktionen für Bedienungshilfen zum 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 geben Aufrufe von Erweiterungsfunktionen, die Verbrauch verursachen, jetzt keinen neuen PointerInputChange mehr zurück, sondern ändern den bereitgestellten PointerInputChange.
Dies ist der erste Schritt in einem zweistufigen Prozess, um PointerEvent-Daten unveränderlich zu machen, sodass andere Zeigerdaten nicht durch Nutzercode bearbeitet werden können. Im zweiten Schritt wird der Rückgabetyp
List<PointerInputChange>ausPointerInputFilter.onPointerEvent(...)entfernt. (Id067e)„Auswahl im Text“ deaktivieren und Demo (Ie7e97)
„onGloballyPositioned“ als Inline-Funktion festgelegt (I15830)
OnPositionedModifier wurde in OnGloballyPositionedModifier umbenannt und onPositioned() in onGloballyPositioned(). (I587e8, b/169083903)
Die Property „hasPendingMeasureOrLayout“ wurde dem Objekt „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 stattdessenPointerInputFilter.onPointerEvent(...). (I6f04a)Größe ändern
- „Size.getFlipped“ wurde entfernt
- „Size.rem“ wurde 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“ wurde 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 wurde verbessert, da bei jedem Scrollvorgang weniger Arbeit in der Unterkomposition anfällt. Die neue Methode hasInvalidations() wurde für die Klasse „Composition“ 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 die Verwendung von Reflection nach Möglichkeit 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 Bereichen für Layout- und Zeichenbeobachtungen 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 deklariert. (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“ wurde 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
- Entfernte RoundRect.grow- und Rect.shrink-APIs
- 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 eine Eigenschaft anstelle einer Funktion.
- Der RoundRect-Konstruktor wurde aktualisiert, sodass er Radius-Eigenschaften anstelle von einzelnen Parametern für x-/y-Radiuswerte verwendet.
- Entfernte Größen-APIs, die davon ausgingen, 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)
- Der Stapel wurde in „Box“ umbenannt. Die zuvor vorhandene Box wird zugunsten der neuen Box in compose.foundation.layout eingestellt. In der neuen Box werden untergeordnete Elemente übereinander gestapelt, wenn sie mehrere untergeordnete Elemente enthält. Das ist anders als bei der vorherigen Box, die sich ähnlich wie eine Spalte verhalten hat. (I94893, b/167680279)
- Die Parameter für die Box-Dekoration wurden eingestellt. Wenn Sie Dekorationen/Abstand in Ihrem Feld haben 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 Dokumentation zu „clipPath“ wurde aktualisiert. Jetzt wird auf „Path“ anstelle von abgerundeten Rechtecken verwiesen.
- Fester Abstand in der Dokumentation für den rechten Parameter in „clipPath“
- 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 Inset-Überladung hinzugefügt, die für alle vier Grenzen denselben Inset-Wert bereitstellt.
- 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 wurden aktualisiert, um dem kdoc-Stil zu entsprechen.
- „Rect.join“ und „Rect.expandToInclude“ entfernt
- Überladung für Rect.translate(offset) erstellt und Rect.shift als veraltet markiert
- (If086a, b/167737376)
- Annotated rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled und textInputServiceFactory mit @VisibleForTesting, machen sie zur internen API und blenden ihr KDoc aus (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 Inhalt zu umschließen, der ausgewählt werden soll. (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()wurde ausOwnerentfernt –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)
createAndroidComposeRuleundAndroidInputDispatcherwurden vonandroidx.ui.test.androidnachandroidx.ui.testverschoben (Idef08, b/164060572)- Die Verwendung von „gravity“ wurde in Layout-APIs konsistent in „align“ oder „alignment“ umbenannt. (I2421a, b/164077038)
- „onNode“ und andere globale Methoden wurden in „ComposeTestRule“ hinzugefügt, da die aktuellen globalen Methoden 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 Inhaber zu benachrichtigen, wenn sich die Grenzen des Layoutknotens ändern. (If654e, b/166106882)
- Unterstützung für filltype-Parameter für Vektorgrafikpfade wurde 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)
Es wurde ein Problem 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, der auftreten konnte, wenn das Senden an einen PointerInputFilter dazu führen konnte, dass der PointerInputFilter synchron entfernt wurde, wurde behoben. (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
emitViewwurde eingestellt. Verwenden Sie nach MöglichkeitAndroidView, um Views in Compose auszugeben. Das direkte Zusammensetzen von Ansichten und Ansichtsgruppen 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)FocusState2wurde eingestellt und durchFocusStateersetzt (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 wurden so geändert, dass sie keine Datenklassen mehr sind, 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).
onChildPositionedundOnChildPositionedModifierwurden entfernt. Entwickler sollten stattdessenonPositionedundOnPositionedModifierim untergeordneten Layout verwenden. (I4522e, b/162109766)Der Offset ist jetzt eine Inline-Klasse (Iaec70).
Der SelectionContainer wurde ein Modifikatorparameter hinzugefügt (I4aada, b/161487952).
Entfernung des verworfenen FocusModifier (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)
Die Lambda-Funktion
mergePolicywurde zuSemanticsPropertyKeyhinzugefügt. Damit kann eine benutzerdefinierte Richtlinie für das Zusammenführen von Knoten mit der Semantik von „mergeAllDescendants“ definiert werden. Die Standardrichtlinie sieht vor, dass der übergeordnete Wert verwendet wird, sofern er bereits vorhanden ist. Andernfalls wird der untergeordnete Wert verwendet. (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 Alpha-Version. (Ifda6f)
IntOffset ist jetzt eine Inline-Klasse (Iac0bf)
IntSize ist jetzt eine Inline-Klasse (I2bf42)
PlacementScope.placeAbsolute()wurde inPlacementScope.place()umbenannt und das vorherigePlacementScope.place()wurde inPlacementScope.placeRelative()umbenannt. Daher wird die Position in Kontexten mit Leserichtung von rechts nach links nicht mehr automatisch gespiegelt.PlacementScope.place()Wenn dies gewünscht ist, verwenden Sie stattdessenPlacementScope.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 „rect“ 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 weitergeführte FrameManager-Aufrufe wurden entfernt.
Interne Compose-APIs wurden geändert, um den Aufwand für die Nachverfolgung von Statusobjekten wie
mutableStateof()zu reduzieren (I80ba6).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 nun 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 nicht mehr unterstützt. Stattdessen werden zur besseren Übersichtlichkeit explizite Aufrufe vonremember { mutableStateOf(...) }verwendet. Dadurch wird die gesamte API-Oberfläche und die Anzahl der Konzepte für die Statusverwaltung reduziert und dasby mutableStateOf()-Muster für die Delegierung von Klasseneigenschaften wird eingehalten. (Ia5727)RRect wurde in RoundRect umbenannt, um besser zu den Namensmustern von Compose zu passen. Es wurden ähnliche Funktionskonstruktoren wie für RRect erstellt und 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 auf Grundlage von ViewBinding wurde hinzugefügt. (I081c6)
- KeyEvent2 wird durch KeyEvent ersetzt (I2d770, b/162097585)
- Unterstützung für den Alt-Hardwareschlüssel hinzugefügt (I9036b)
- FocusManager wurde eingestellt. Verwenden Sie stattdessen „Modifier.focus()“, „Modifier.focusObserver()“ und „Modifier.focusRequester()“. (I74ae4, b/162211322)
- „loadVectorResource“ unterstützt „trimPath“-Attribute (I808fe)
- Dialog 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-Ansicht wären. (Ieb08c)
- Der nicht mehr unterstützte 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 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 die Lesbarkeit erschwert (Iedd58, b/161529964). - Fügen Sie [Abstract]ComposeView-Unterklassen hinzu, um Compose-Inhalte in einer View-Hierarchie zu hosten. (I46357)
RowundColumnsind jetzt Inline-Funktionen, wodurch der Aufwand für die Verwendung erheblich reduziert wird. (I75c10)- SubcomposeLayout wird 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 Unterbaumstrukturkomposition verfügbar sind. „WithConstraints“ wird beispielsweise nicht mit „SubcomposeLayout“ implementiert. (I25cc8)
SemanticsNode.positionInRootwurde 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 an Android übergeben. (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 es nie erforderlich, da die Neuvermessung/Neugestaltung automatisch erfolgt. Wir verwenden es 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)
- Nicht verwendete OffsetBase-Schnittstelle entfernen
- Offset- und IntOffset-Klassen anpassen, um eine einheitliche API zu erhalten
- Benennen Sie „IntOffset.Origin“ in „IntOffset.Zero“ um, um die Konsistenz mit der Offset API zu wahren.
- Die nativeCanvas-Methode wurde aus der Canvas-Schnittstelle entfernt, damit Nutzer eigene Canvas-Instanzen erstellen können.
- Stub-Klasse „EmptyCanvas“ erstellt, um „DrawScope“ so umzugestalten, dass sie ein Parameter ist, der nicht null sein kann, anstatt „lateinit“, und um sicherzustellen, dass das Feld nicht null sein kann.
- ClipOp-Enums wurden in PascalCase umbenannt
- Die FilterQuality-Enumerationen wurden in PascalCase umbenannt.
- StrokeJoin-Enumerationen in PascalCase umbenannt
- Die PointMode-Enums wurden in PascalCase umbenannt.
- Die PaintingStyle-Enumerationen wurden in PascalCase umbenannt.
- Die PathFillType-Enumerationen wurden in PascalCase umbenannt.
- StrokeCap-Enums in PascalCase umbenannt
- Die DrawCache-Implementierung wurde aktualisiert, sodass keine „lateinit“-Parameter mehr verwendet werden.
- DrawScope wurde aktualisiert, sodass die internen Parameter „fillPaint“ und „strokePaint“ nicht mehr lazy delegiert werden.
- Das Image-Composable wurde aktualisiert, um die Verwendung von „Box“ zu vermeiden und den Overhead zu reduzieren.
- Der Outline-Klasse wurden @Immutable-Annotationen hinzugefügt.
- PathNode wurde aktualisiert, sodass für jede Pfadanweisung @Immutable-Annotationen vorhanden sind.
- Die Vektor-Unterkomposition wurde aktualisiert, um redundante bedingte Gleichheitsprüfungen zu entfernen, da Compose diese bereits verarbeitet.
- Veraltete Begleitkonstruktormethoden für „Rect“ zugunsten von Funktionskonstruktoren entfernt
- Aktualisierte Brush-Klassen und Funktionskonstruktoren mit @Immutable- und @Stable-APIs
- Die Enumeration „VertexMode“ wurde in PascalCase aktualisiert.
- Die Methode „DrawScope.selectPaint“ wurde aktualisiert, um Strichparameter im Paint-Objekt nur dann bedingt zu überschreiben, wenn sie sich geändert haben.
- Die Größe wurde aktualisiert, um die Destrukturierungs-API hinzuzufügen, UnspecifiedSize in Unspecified umzubenennen und nicht verwendete Methoden zu entfernen.
- Die Nutzung der Compose BlendMode API 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 vor der Verwendung des BlendMode zu prüfen, ob er auf dem Gerät unterstützt wird. (I0ef42)
- LazyItemScope wurde für den Parameter „itemContent“ von Lazy-Listen hinzugefügt. Es bietet Modifikatoren, um die maximale Größe des übergeordneten Elements zu füllen. Dies ist hilfreich, wenn das Element den Darstellungsbereich füllen soll und der reguläre Modifier.fillMaxSize() nicht funktioniert, da das Element mit unendlichen Einschränkungen gemessen wird. (Ibd3b2, b/162248854)
SemanticsNodeInteraction.performPartialGesturewurde entfernt. Verwenden Sie stattdessenSemanticsNodeInteraction.performGesture. (Id9b62)LazyColumnItemswurde inLazyColumnForumbenannt.LazyRowItemswurde inLazyRowForumbenannt (I84f84)- Das Paket
foundation.shape.cornerwurde auffoundation.sharereduziert. (I46491, b/161887429) AndroidComposeTestRulewurde increateAndroidComposeRuleumbenannt. (I70aaf)TextLayoutResultwurden weitere APIs hinzugefügt. (Id7e04)- Das Material
FilledTextFieldwurde inTextFieldumbenannt und das FundamentTextFieldwurde inBaseTextFieldumbenannt, um die einfachste gewünschte API leichter auffindbar und nutzbar zu machen (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 von 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 aktualisieren, die oben unter Abhängigkeiten deklarieren aufgeführt sind.
API-Änderungen
- FocusModifier ist zugunsten von Modifier.focus, Modifier.focusRequester und Modifier.focusObserver veraltet. FocusState und FocusDetailedState sind zugunsten von FocusState2 veraltet (I46919, b/160822875, b/160922136).
- Es wurde ein Modifikator 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 Single-Value-Semantik 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-Annotation für die API für die Eingabe von Schlüsseln (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 die Bereinigung von Kompositionen ist jetzt eine clear()-Methode erforderlich (Ibe697)
- KeyEvent ist veraltet und wird durch KeyEvent2 ersetzt (I68730)
- Den Test-Findern wurde das neue optionale Flag „useUnmergedTree“ hinzugefügt. (I2ce48)
- LayoutNode-API als experimentell gekennzeichnet (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 Instanzkopiemethode 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 Schaltfläche 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 Int-Positionen der Ausrichtungslinie sind jetzt nicht mehr null. Wenn die abgefragte Ausrichtungslinie fehlt, wird AlignmentLine.Unspecified zurückgegeben. (I896c5, b/158134875)
Dem zusammensetzbaren Element „AndroidView“ wurde ein Modifikatorparameter 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 ViewModels ähnlich wie in einer Activity oder einem Fragment erstellen oder abrufen lassen (I5fdd1).
Die Verwendung von „IntPx“ wurde durch „Int“ ersetzt. „IntPxPosition“ wurde durch „IntOffset“ ersetzt. „IntPxSize“ wurde 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 Floats 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 verwenden, 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. Die Px-Klasse wurde vollständig gelöscht (I3ff33).
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 (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 Refaktorierung 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)
„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 zusammengeführt. 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, um nicht mehr selbst eine RTL-Eigenschaft zu verwalten, da DrawScope diese bereits ohne manuelle Bereitstellung bereitstellt (I1798e).
DoubleTapGestureFilter unterscheidet jetzt SingleTapGestureFilter im gesamten Baum. (If92b1)
Die Alignment API wurde aktualisiert und Unterstützung für die absolute Ausrichtung wurde hinzugefügt (die im RTL-Kontext nicht automatisch gespiegelt wird) (I38cd3).
Die API für DrawLayer-Modifizierer 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).
Höherwertige Compose-APIs wurden aktualisiert, um CanvasScope anstelle von Canvas zu verwenden. Dadurch müssen Nutzer keine eigenen Paint-Objekte mehr verwalten. Für Nutzer, die weiterhin Zugriff auf ein Canvas benötigen, kann die drawCanvas-Erweiterungsmethode verwendet werden. Sie bietet einen Callback zum Ausgeben von Zeichenbefehlen mit dem zugrunde liegenden Canvas. (I80afd)
Die API für die nachgestellte Lambda-Funktion „WithConstraints“ 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 nicht mehr die Zeichenreihenfolge. Die Reihenfolge der Parameter für DrawShadow wurde geändert: Die Erhebung ist jetzt der erste Parameter und die Form der zweite mit einem RectangleShape-Standardwert. (I20150, b/152417501)
„onSizeChange“ und „onPositionChange“ in „Owner“ entfernt. (I5c718)
„Constraints2“ hinzugefügt, eine Kopie von „Constraints“, die nur Int-Einschrä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)
-
- „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 wurde umbenannt in Crop
- FillMinDimension wurde in Fit umbenannt
- „Anpassen“ wurde in „Innen“ umbenannt, um besser zu passen.
- Entsprechungen von ImageView.ScaleType
- Es wurde Dokumentation hinzugefügt, die darauf hinweist, dass die Kombination aus „Crop“ und „Alignment.Center“ dasselbe Ergebnis wie „ImageView.ScaleType.CENTER_CROP“ erzielt und „Fit“ in Kombination mit „Alignment.Center“ dasselbe Ergebnis wie „ImageView.ScaleType.FIT_CENTER“ erzielt. „Inside“ in Kombination mit „Alignment.Center“ erzielt 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()“ wurde zu „ContentDrawScope“ geändert.
- Alle Parameter für 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“ festgelegt. (I0eb8b, b/152810850)
„LayoutResult“ wurde in „MeasureResult“ umbenannt. (Id8c68)
LayoutModifier2 wurde hinzugefügt, eine neue API zum Definieren von Layoutmodifizierern. LayoutModifier (If32ac) wurde eingestellt.
Modifikator 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)
Die Parameter „pivotX“ und „pivotY“ wurden den Layer APIs 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)
Es wurde LayerModifier hinzugefügt, ein Modifikator, mit dem ein RenderNode für ein Layout hinzugefügt werden kann. Damit lassen sich Beschneidung, Deckkraft, Drehung, Skalierung und Schatten festlegen. Damit wird „RepaintBoundary“ ersetzt. (I7100d, b/150774014)
Die Layoutrichtung wird jetzt vom übergeordneten Layoutknoten an die untergeordneten 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 im 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 Operator „get()“ 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“-Eigenschaft mehr. Die Eigenschaft „position“ ist bei LayoutModifiers, Drehung 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 IntPxSize für die size-Property 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)
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. Es ist nicht erforderlich, dass ein Consumer ein eigenes Paint-Zustandsobjekt zum Konfigurieren von Zeichenvorgängen verwaltet.
- CanvasScopeSample hinzugefügt und Demo-App aktualisiert, um eine deklarative Grafikdemo (Ifd86d) einzuschließen
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 festgelegt“ wurde hinzugefügt, um einen nicht festgelegten Wert ohne Umrandung von Farben darzustellen. (If901a)
Die Erweiterungsmethoden „Canvas.rotate“ und „Canvas.scale“ wurden hinzugefügt, um optionale Pivot-Koordinaten für Transformationen zu verwenden. Standardmäßig wird die obere linke Ecke der aktuellen Canvas-Übersetzung verwendet.
Außerdem wurde Canvas.rotateRad aus Gründen der Konsistenz in eine Erweiterungsmethode verschoben (Ibaca6).
Die PixelMap API wurde erstellt, um das Abfragen 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. Die Dokumentation zu diesen APIs wurde ebenfalls 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 ein Vektor-Composable erstellt, das sich wie das Image-Composable 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 der traditionellen Android-App-Entwicklung mit dem Compose-Framework eignet (Id5bbd).
TextDirection.Content wurde hinzugefügt (I48f36).
Operator „TextDecoration.plus“ wurde hinzugefügt. (I0ad1a)
Forcewurde aus den Enum-Werten von TextDirectionAlgorithm (Icc944) entfernt.TextDirectionAlgorithm wurde in TextDirection umbenannt (I75ce8)
Implementiert „LongPressAndDrag“ für die Auswahl von TextFields. (I17919)
„AnnotatedString.getStringAnnotations“ wurde 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“ in „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 über den SoftwareKeyboardController, der vom Callback „onTextInputStarted“ bereitgestellt wird, ein- und ausgeblendet werden (I8dc44, b/151860051).
Es wurde ein Pluszeichen-Operator für (Text/Paragraph/Span)Style hinzugefügt, der an die Funktion „merge()“ delegiert. (Ia1add)
„FontWeight.lerp“ wird nicht mehr gerundet. 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 es im ui-geometry-Modul eine doppelte Größenklasse gibt, 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
- onFocusChange-Callback in Textfeldern in onFocusChanged umbenannt (Ida4a1)
- „VerticalScroller“ und „HorizontalScroller“ wurden eingestellt. Verwenden Sie ScrollableColumn und ScrollableRow für eine integrierte Lösung 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).
runOnIdleComposewurde inrunOnIdleumbenannt (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 umschloss. 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 er keine Skalierung mehr basierend auf den angegebenen Einschränkungen und dem ContentScale-Parameter bietet. Implementierungen von Painter müssen ihre Zeicheninhalte selbst an die angegebene Größe des DrawScope anpassen, in das sie zeichnen.
Ein Problem wurde behoben, bei dem 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 hinzugefügt (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 veraltet. 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 mit dem des obligatorischen X-Achsen-Radiusparameters übereinstimmt.
Die Funktion „DrawScope.drawRoundRect“ wurde aktualisiert, sodass sie einen einzelnen „Radius“-Parameter anstelle von zwei separaten Gleitkommawerten für den Radius entlang der x- und y-Achse verwendet (I46d1b).
Das Recompose-Composable ist keine nützliche Abstraktion mehr. Die meisten Neuzusammensetzungen sollten durch Zuweisungen von MutableState erfolgen. Für alles darüber hinaus wird empfohlen, die Funktion
invalidatezu 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 Umstellung ersetzt, um sich nur auf Dp und primitive Typen für Pixelparameter 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 Text einer zusammensetzbaren Funktion transformiert, während der Aufrufort (größtenteils) unverändert bleibt.
Das bedeutet, dass die meiste Logik, die mit der Compose-Laufzeit kommuniziert, am Anfang des Funktionsblocks statt am Aufrufort stattfindet.
Diese Änderung sollte für alle Verwendungen von Compose quellenkompatibel sein. Die meisten Nutzer von Compose müssen aufgrund dieser Änderung keinen Code aktualisieren.
Zur Unterstützung dieser Arbeit 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:
- Bei einigen Anrufen wird die Funktion „Überspringen“ verwendet, obwohl das zuvor nicht der Fall war.
- 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 Kompilierungszeit 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 Hauptteil der Funktion verwendet werden.
Die meisten schwerwiegenden Änderungen betrafen APIs, auf die der Compiler direkt ausgerichtet ist. 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 Überladungen von
key, die keine Varargs verwenden, wurden entfernt. Verwenden Sie ab sofort die Versionvararg. 5. Die Anmerkung „Pivotal“ wurde eingestellt. Verwenden Sie stattdessenkey. 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)
Für Button, FloatingActionButton und Clickable gibt es jetzt einen separaten
enabled-Parameter. Einige Parameter für die Schaltfläche wurden umbenannt oder neu angeordnet. (I54b5a)ButtonStyle wurde durch separate Funktionen ersetzt und die Textüberladung (String) wurde entfernt. In den aktualisierten Beispielen finden Sie Informationen zur Verwendung. (If63ab, b/146478620, b/146482131)
Funktionsgefährdende Änderungen an den Ambient-APIs. 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: 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).