Compose Foundation
androidx.compose.foundation
androidx.compose.foundation.layout
androidx.compose.foundation.gestures
androidx.compose.foundation.selection
androidx.compose.foundation.lazy
androidx.compose.foundation.interaction
androidx.compose.foundation.text
(API-Referenzdokumentation für alle Compose-Pakete)
| Letzte Aktualisierung | Stabile Version | Releasekandidat | Betarelease | Alpha-Release |
|---|---|---|---|---|
| 22. Oktober 2025 | 1.9.4 | - | 1.10.0-beta01 | - |
Struktur
Compose ist eine Kombination aus 7 Maven-Gruppen-IDs in androidx. Jede Gruppe enthält eine bestimmte Teilmenge von Funktionen mit jeweils eigenen Versionshinweisen.
In dieser Tabelle werden die Gruppen erläutert und es sind Links zu den einzelnen Versionshinweisen enthalten.
| 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.foundation:foundation:1.9.4" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.9.4") } 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-beta01
22. Oktober 2025
androidx.compose.foundation:foundation-*:1.10.0-beta01 ist veröffentlicht. Version 1.10.0-beta01 enthält diese Commits.
API-Änderungen
- 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)
PagerState.currentPageOffsetFractionmit@FrequentlyChangingValueannotiert. (Idfaab)
Fehlerkorrekturen
- Das Markisenverhalten für linksläufige Layouts wurde korrigiert. (Ib8be3)
Version 1.10.0-alpha05
8. Oktober 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha05 ist veröffentlicht. Version 1.10.0-alpha05 enthält diese Commits.
API-Änderungen
PaddingValuesunterstützt jetzt Addition und Subtraktion, um häufige Berechnungen für den Innenabstand zu vereinfachen. (I327e1, b/244468479)
Fehlerkorrekturen
ComposeFoundationFlags.isPausableCompositionInPrefetchEnabledist standardmäßig aktiviert. Es handelt sich um eine Leistungsoptimierung, mit der wir die Arbeit, die während des Prefetching erledigt werden muss, besser verteilen können. So können wir beispielsweise die Komposition für Teile des nächsten Elements vonLazyColumnin einem UI-Frame ausführen und dann den Rest in den nächsten Frames zusammensetzen. (I4c7fe)
Version 1.10.0-alpha04
24. September 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha04 ist veröffentlicht. Version 1.10.0-alpha04 enthält diese Commits.
API-Änderungen
- Die Implementierung von „
ScrollIndicatorState“ wurde für „PagerState“ hinzugefügt. (I113b7) - Die Implementierung von „
ScrollIndicatorState“ wurde für „LazyStaggeredGridState“ hinzugefügt. (I1028e) - Die Implementierung von „
ScrollIndicatorState“ wurde für „LazyGridState“ hinzugefügt. (I9e50c) - Die Implementierung von „
ScrollIndicatorState“ wurde für „LazyListState“ hinzugefügt. (I5ee29) - Die Implementierung von „
ScrollIndicatorState“ wurde für „ScrollState“ hinzugefügt. (I27f66) - Einführung des Attributs
scrollIndicatorStatein derScrollableState-Schnittstelle (Idca93) - Das Flag
isWindowInsetsModifierLocalNodeImplementationEnabledwurde entfernt. (I15e8f, b/440964232) - Der
scrollableArea()-Modifikator wird verfügbar gemacht, mit dem die Komponente scrollbar gemacht werden kann. Dabei wird der Inhalt an die Grenzen der Komponente angehängt und die Scrollrichtung des Inhalts wird automatisch basierend auf der Ausrichtung, RTL und demreverseScrolling-Flag festgelegt. (I9471b, b/316559454)
Version 1.10.0-alpha03
10. September 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha03 ist veröffentlicht. Version 1.10.0-alpha03 enthält diese Commits.
API-Änderungen
- Entfernt
ComposeFoundationFlags.isNonComposedClickableEnabled(I0dfc0, b/406228525) - 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) ScrollState.valueals@FrequentlyChangingValue-Property markiert. (I4723d)LazyLayoutKeyIndexMapund eine Factory für eine Standardimplementierung wurden eingeführt. (I4fd0c, b/415038029)
Fehlerkorrekturen
- Spalte und Zeile übergeben jetzt die tatsächliche Größe des Elements korrekt an
Modifier.align. Damit wird ein Problem behoben, bei dem eine benutzerdefinierteModifier.align-Implementierung einen falschen Wert von 0 erhalten hat. (I8194f, b/439716351)
Version 1.10.0-alpha02
27. August 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha02 ist veröffentlicht. Version 1.10.0-alpha02 enthält diese Commits.
API-Änderungen
- Die Kennzeichnung
isFlingContinuationAtBoundsEnabledwurde entfernt. (I6b84f) - Die Kennzeichnung
isAdjustPointerInputChangeOffsetForVelocityTrackerEnabledwurde entfernt. (I62380) - Die Kennzeichnung
isOnScrollChangedCallbackEnabledwurde entfernt. (I667dc) - Die Kennzeichnung
isAutomaticNestedPrefetchEnabledwurde entfernt. (I4f416) - Die Kennzeichnung
DragGesturePickUpEnabledwurde entfernt. (Ib8500) - Einführung der
ScrollIndicatorStateAPI zur Darstellung des Status der Scrollleiste (I5e229)
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem durch die Verwendung von
Modifier.anchoredDraggablenichtconfirmValueChangeaufgerufen wurde. (Iff7cc)
Version 1.10.0-alpha01
13. August 2025
androidx.compose.foundation:foundation-*:1.10.0-alpha01 ist veröffentlicht. Version 1.10.0-alpha01 enthält diese Commits.
API-Änderungen
- Aktualisieren Sie die Prefetch-Strategie von Pager, sodass anstelle des Standardwerts von einem Element in Scrollrichtung das Cache-Fenster verwendet wird. Das anfängliche Prefetching ist jetzt standardmäßig in Pager aktiviert. Das Prefetching basiert auf der Größe des Fensters, das einem Viewport entspricht. Das heißt, wir versuchen, einen ganzen Viewport mit vorab abgerufenen Elementen zu füllen. Außerdem werden Elemente länger aufbewahrt. (I4d45e, b/292136289)
- Das Flag
ComposeFoundationLayoutFlags.isWindowInsetsOptimizationEnabledwurde hinzugefügt, um die Deaktivierung einerWindowInsets-Leistungsoptimierung zu ermöglichen, falls die neue Implementierung eine Verhaltensänderung verursacht. (I8e912) - Mit
SnapFlingBehaviorkönnen Snap-Animationsspezifikationen jetzt beim Snapping überschritten werden. So kann beispielsweise eine federnde Federspezifikation alssnapAnimationSpecverwendet werden, um eine federnde Snap-Animation zu erzeugen. Überschwingende Werte werden weiterhin ignoriert, wenn ein Ansatz mit der Snap-Spezifikation verwendet wird. (I373c2) - 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.isClearFocusOnPointerDownEnabled-API deaktiviert werden. (I6322b, b/282963174) - Scrollable unterstützt jetzt zweidimensionale Mausrad-Scrollereignisse besser. Es gibt eine neue Test-API, mit der Sie Anwendungsfälle in
MouseInjectionScopetesten können. Außerdem haben wir eine neue Überladung für Scrollmethoden inMouseInjectionScopeund ein Flag zur Steuerung des neuen Verhaltens namensisMouseWheel1DAxisLockingEnabled(I136df) eingeführt. DragGestureNodewurde aktualisiert, sodass jetzt Rohzeigereingaben verwendet werden, anstatt die Zeigereingabe für die Optimierung zu unterbrechen. Die Änderungen werden hinter dem FlagisNonSuspendingPointerInputInDraggableEnabled(I0fa4b) hinzugefügt.- Einige
AnchoredDraggable-APIs wurden mit@FrequentlyChangingValueannotiert.offset,requireOffsetundprogressändern sich häufig und sollten nicht in der Komposition gelesen werden. Greifen Sie stattdessen in der Layout- und Zeichenphase, bei Effekten oder anderweitig außerhalb der Komposition auf diese Werte zu. (I05539) - Flags
isOnScrollChangedCallbackEnabled,isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled,isFlingContinuationAtBoundsEnabled,isAutomaticNestedPrefetchEnabled,DragGesturePickUpEnabled,isPointerInteropFilterDispatchingFixEnabled,isNestedScrollInteropPostFlingFixEnabled,isNestedScrollDispatcherNodeFixEnabledentfernt (I36c18) - Einführung von
CompositionLocal, mit dem der Pinsel für die Hervorhebung der erfolgreichen Autofill-Ausfüllung geändert werden kann. (I52329) FocusPropertieswurde ein anpassbares Fokusrechteck hinzugefügt. Sie können jetzt einen benutzerdefinierten Fokusbereich definieren, anstatt den Standardbegrenzungsrahmen des fokussierbaren Elements zu verwenden. Diese Informationen werden vom Fokus-Traversal-System und der Logik für das Beibehalten der Ansicht von scrollbaren Containern verwendet. (Id6555, b/368378073)- 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) - Es wurde eine neue interpolierbare 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)
- Fügt indirekte Eingabeereignisse und eine Möglichkeit hinzu, die für das Scrollen zu verwendende Koordinatenachse anzugeben. (I58e7c)
- Die neue
WindowInsets.cutoutPathAPI zum Abrufen des Pfads für die Display-Aussparung wird hinzugefügt (Ib90b1, b/279636456). - Das Flag
isWindowInsetsDefaultPassThroughEnabledwurde entfernt. WindowInsets werden standardmäßig nicht verarbeitet, sodass untergeordnete Ansichten standardmäßigWindowInsetsempfangen können. (I888e0, b/412469666)
Fehlerkorrekturen
isNonSuspendingPointerInputInDraggableEnabledsollte vorerst deaktiviert werden. (Ia41c4)- Die Standard-minSdk-Version wird von API 21 auf API 23 umgestellt (Ibdfca, b/380448311, b/435705964, b/435705223).
- Die Dokumentation zu
DraggableAnchors'minPosition/maxPositionwurde aktualisiert, um darauf hinzuweisen, dass diese APIs in Übereinstimmung mit anderenDraggableAnchors-APIs Float.NaN zurückgeben sollten. (I0460a) - Ein Fehler wurde behoben, durch den
DraggableAnchors#closestAnchorabstürzte, wenn die Anker leer waren (I4e646). - Leistungsverbesserungen für
DraggableAnchors(If4065, I0460a) TextFieldState.edit { }löscht den Rückgängig-Verlauf nicht mehr. Stattdessen wird ein eigenständiger Rückgängig-Eintrag erstellt. Wenn Sie möchten, dass der Rückgängig-Stapel nach einemedit-Aufruf gelöscht wird, verwenden SieTextFieldState.undoState.clearHistory(). (I12c14)- Unterstützung für Doppeltippen zum Auswählen eines Worts in
SelectionContainer- undBasicTextField(value, onValueChange)-Überlastung hinzugefügt. (Ibb06a) - Kleinere Fehlerkorrektur, um
AutoboxingStateValuePropertyDetectorsowohl mit K1 als auch mit K2 kompatibel zu machen (Ie81c1) requestRectangleOnScreenAnfragen von AndroidViews werden jetzt richtig an Compose weitergeleitet. So bleiben Ansichten wieEditTextauf dem Bildschirm, wenn mit ihnen interagiert wird. (Ibbf4c)- In „Spalte“ und „Zeile“ wird jetzt die tatsächliche Größe des Elements korrekt an
Alignment.Vertical.alignundAlignment.Horizontal.alignübergeben. Damit wird ein Problem behoben, bei dem benutzerdefinierte Ausrichtungsimplementierungen einen falschen Wert von 0 erhalten haben. (I3e460, b/349722072)
Version 1.9
Version 1.9.4
22. Oktober 2025
androidx.compose.foundation:foundation-*:1.9.4 ist veröffentlicht. Version 1.9.4 enthält diese Commits.
Version 1.9.3
8. Oktober 2025
androidx.compose.foundation:foundation-*:1.9.3 ist veröffentlicht. Version 1.9.3 enthält diese Commits.
Version 1.9.2
24. September 2025
androidx.compose.foundation:foundation-*:1.9.2 ist veröffentlicht. Version 1.9.2 enthält diese Commits.
Version 1.9.1
10. September 2025
androidx.compose.foundation:foundation-*:1.9.1 ist veröffentlicht. Version 1.9.1 enthält diese Commits.
Fehlerkorrekturen
- Behebung eines Absturzes bei der Verwendung von
LazyLayoutCacheWindowinLazyLists(c39f5f3)
Version 1.9.0
13. August 2025
androidx.compose.foundation:foundation-*:1.9.0 ist veröffentlicht. Version 1.9.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.8.0
- Für die mit Compose ausgelieferten Lint-Prüfungen 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 Überladungen
clickable,combinedClickable,selectable,toggleableundtriStateToggleableohne Indication-Parameter unterstützen jetzt nur nochIndicationNodeFactory-Instanzen, die überLocalIndicationbereitgestellt werden. Diese Änderung wird angewendet, wenn Sie Ihre Verwendungen dieser Modifikatoren mit dieser Version von Compose neu kompilieren. Binäre / transitive Abhängigkeiten sind nicht betroffen. Wenn SieLocalIndicationeine eingestellte Indication-Implementierung bereitstellen und diese APIs verwenden, kommt es zur Laufzeit zu einem Absturz. Diese Verhaltensänderung ist erforderlich, um die Leistung zu verbessern und zu ermöglichen, dass Composable-Funktionen, die diese Modifikatoren verwenden, während der Neuzusammensetzung übersprungen werden. Sie könnenComposeFoundationFlags.isNonComposedClickableEnabled=falseverwenden, um diese Verhaltensänderung vorübergehend zu deaktivieren und Compose zu aktualisieren, ohne dass die Migration Sie daran hindert. Dieses Flag wird nach einer stabilen Version entfernt. Migrieren Sie alle verworfenen Indication-Implementierungen, um stattdessenIndicationNodeFactoryzu verwenden. Sie können auch die Überladungen mit einem expliziten Indication-Parameter verwenden. Diese Überladungen unterstützen weiterhin nicht-IndicationNodeFactory-Instanzen von Indication. Aus Leistungsgründen wird dies jedoch nicht empfohlen. (I6bcdc, b/316914333) isFlingCancellationWithNestedScrollFixEnabledwurde eingeführt, um ein Problem mit der Weitergabe von Fling-Gesten bei verschachteltem Scrollen zu beheben. In diesem CL wird das Verhalten bei der Fortsetzung von Fling-Vorgängen wiederhergestellt, das in I9326a entfernt wurde. Wir brechen die Fling-Animation weiterhin ab, wenn das untergeordnete Element aus der Komposition entfernt wird. (I467f4, b/405910180, b/419049142, b/416784125)- Fügen Sie die Verwendung von
scrollAnimationSpecinContentInViewNodewieder hinzu. Das Verhalten wurde während derscrollAnimationSpec-Einstellung entfernt, was dazu führte, dass Anwendungsfälle nicht mehr funktionierten. (I1436a, b/403301605) - Stabilisiert
LazyLayout. (If5db4),LazyLayoutPrefetchStateund die PlanungsmethodenschedulePrecompositionundschedulePrecompositionAndPremeasure. (I4362f, b/252853717) undLazyLayoutItemProvider(Icce09,b/261565751) - „Compose“ zum Auslösen von
ViewTreeObserver.OnScrollChangedzulassen Dieses Verhalten wird unter dem FlagisOnScrollChangedCallbackEnabledeingeführt. Außerdem haben wir eine Erweiterungsfunktion vonDelegatableNode dispatchOnScrollChangedeingeführt. (I34b9d, b/238109286) - 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) PrefetchSchedulerund die Anpassung wurden zugunsten der internen Implementierung eingestellt, die alle Aufgaben automatisch erledigt. (I3a9a6, b/420551535)TextFieldState.edit { }löscht den Rückgängig-Verlauf nicht mehr. Stattdessen wird ein eigenständiger Rückgängig-Eintrag erstellt. Wenn Sie möchten, dass der Stapel für das Rückgängigmachen nach einem Bearbeitungsaufruf gelöscht wird, verwenden SieTextFieldState.undoState.clearHistory(). (I12c14)- Kontextmenü und Auswahl-Symbolleiste unterstützen jetzt beide Smart Items (Smart Selection)
- Der formatierte Text
OutputTransformationwurde hinzugefügt, um die Ausgabe vonTextFieldmit der Überladungstatezu formatieren. TextField: Kontextmenü (Rechtsklickmenü) wird unterstützt.- Bei Text, der aus mehreren Text-Composables in einem
SelectionContainerkopiert wird, wird jetzt ein Zeilenumbruch (\n) zwischen Text aus den einzelnen Text-Composables eingefügt. (I25332, b/285036739) - API zum Erstellen benutzerdefinierter Aufzählungslisten über
AnnotatedStringeinführen (I1d066, b/383269496, b/139326648) - Die
state-Überladung vonBasicTextFieldsorgt dafür, dass der Cursor im Blickfeld bleibt, wenn sich seine Größe ändert. (I0eb41, b/406187741) - Breaking Change: Die Knoten für die Modifikatoren
backgroundundborderimplementieren 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. Eine weitere Möglichkeit 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.foundation:foundation-*:1.9.0-rc01 ist veröffentlicht. Version 1.9.0-rc01 enthält diese Commits.
Fehlerkorrekturen
TextFieldState.edit { }löscht den Rückgängig-Verlauf nicht mehr. Stattdessen wird ein eigenständiger Rückgängig-Eintrag erstellt. Wenn Sie möchten, dass der Rückgängig-Stapel nach einemedit-Aufruf gelöscht wird, verwenden SieTextFieldState.undoState.clearHistory(). (I12c14)
Version 1.9.0-beta03
16. Juli 2025
androidx.compose.foundation:foundation-*:1.9.0-beta03 ist veröffentlicht. Version 1.9.0-beta03 enthält diese Commits.
Fehlerkorrekturen
- Ein Regressionsfehler wurde behoben, der das Verhalten von fixierten Headern in Lazy Grids beeinträchtigte, wenn leerer Header-Content angegeben wurde. (e3e3400)
Version 1.9.0-beta02
2. Juli 2025
androidx.compose.foundation:foundation-*:1.9.0-beta02 ist veröffentlicht. Version 1.9.0-beta02 enthält diese Commits.
Neue Funktionen
- Unterstützung von Smart-Elementen im Kontextmenü und in der Auswahlleiste.
API-Änderungen
- Ein Fehler wurde behoben, bei dem der Cursor auf bestimmten Hardwaretastaturen oder TV-Fernbedienungen nicht mit den Richtungstasten in der neuen
TextFieldsbewegt werden konnte. Stattdessen wurde der Fokus auf ein anderes Composable-Element verschoben.ComposeFoundationFlag.isTextFieldDpadNavigationFixEnabledwurde hinzugefügt, damit dieser Fix vorübergehend deaktiviert werden kann, wenn er ein unerwünschtes Verhalten verursacht, das nicht behoben werden kann. (Ie1922)
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das fixierte Kopfzeilen nicht fixiert wurden, wenn ein angepinntes Element vorhanden war. (I9198d, b/385006133)
TextObfuscationMode.RevealLastTypedfolgt jetzt der Systemeinstellung „TEXT_SHOW_PASSWORD“. (I41c0c)- Ein Fehler wurde behoben, bei dem in
BasicTextFieldfälschlicherweise die Warnung „Aus Zwischenablage eingefügt“ angezeigt wurde, wenn die Textsymbolleiste zum ersten Mal geöffnet wurde. (I5fda2)
Version 1.9.0-beta01
18. Juni 2025
androidx.compose.foundation:foundation-*:1.9.0-beta01 ist veröffentlicht. Version 1.9.0-beta01 enthält diese Commits.
Aktuelle Änderungen
- Die Modifikator-Knoten
backgroundundborderimplementieren 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. Eine weitere Möglichkeit ist die Verwendung eines weniger strengen Abgleichs, z. B.onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)
API-Änderungen
- Benennen Sie
Modifier.addTextContextMenuComponentsinappendTextContextMenuComponentsum. (I4c43f) - Die Funktionen
AnnotatedOutputTransformationwurden entfernt und die FunktionenaddStylewurden inTextFieldBufferübernommen.addStylekann weiterhin nur überOutputTransformationaufgerufen werden. (I9930a, b/417991824) - „Clickable“ wurde so umgeschrieben, dass die Eingabe des Zeigers nicht unterbrochen wird. Diese Funktion wird durch ein Flag aktiviert. Wenn Sie einen Fehler in der neuen Implementierung feststellen, können Sie sie deaktivieren:
ComposeFoundationFlags.isNonSuspendingPointerInputInClickableEnabled. (I85b65) isFlingCancellationWithNestedScrollFixEnabledwurde eingeführt, um ein Problem mit der Weitergabe von Fling-Gesten bei verschachteltem Scrollen zu beheben. In diesem CL wird das in aosp/3260391 entfernte Verhalten für die Fortsetzung von Fling-Vorgängen wiederhergestellt. Wir brechen die Fling-Animation weiterhin ab, wenn das untergeordnete Element aus der Komposition entfernt wird. (I467f4, b/405910180, b/419049142, b/416784125)WindowInsetsRulers:rulersIgnoringVisibilitywurde auf „Maximum“ geändert.getDisplayCutoutBounds()wurde in eine Erweiterungsfunktion vonPlacementScopegeändert.WindowInsetsAnimationPropertieswurde inWindowInsetsAnimationundgetAnimationProperties()ingetAnimation()geändert. (I3816f)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)
Fehlerkorrekturen
- Fügen Sie die Verwendung von
scrollAnimationSpecinContentInViewNodewieder hinzu. Das Verhalten wurde während derscrollAnimationSpec-Einstellung entfernt, was dazu führte, dass Anwendungsfälle nicht mehr funktionierten. (I1436a, b/403301605)
Version 1.9.0-alpha04
4. Juni 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha04 ist veröffentlicht. Version 1.9.0-alpha04 enthält diese Commits.
API-Änderungen
PrefetchSchedulerund die Anpassung wurden zugunsten der internen Implementierung eingestellt, die alle Aufgaben automatisch erledigt. (I3a9a6, b/420551535)Scrollable2DStatewurde aktualisiert, sodass in der MethodecanScrollanstelle eines Winkels ein Offset verwendet wird. (I28694, b/417268474)addAnnotationinAnnotatedOutputTransformationwurde durchaddStyleersetzt. (I91c6f, b/417991824)- Stabilisiert
LazyLayout. (If5db4) - Es wurde ein leerer Konstruktor für
LazyLayoutPrefetchStateund die zugehörigen Scheduling-MethodenschedulePrecompositionundschedulePrecompositionAndPremeasurestabilisiert. (I4362f, b/252853717) ProcessTextKeyfür Android wurde eingeführt. Es wird für Kontextmenüelemente verwendet, die fürPROCESS_TEXT-Intent-Aktionen hinzugefügt werden. (If0ac4)- Kontextmenü-APIs öffentlich machen Die Funktionen
Modifier.addTextContextMenuComponentsundModifier.filterTextContextMenuComponentswurden eingeführt, um Elemente im Kontextmenü hinzuzufügen und zu entfernen. Außerdem wurden die folgenden elementaren APIs öffentlich gemacht, damit ein benutzerdefiniertes Kontextmenü erstellt werden kann:TextContextMenuProviderTextContextMenuDataProviderTextContextMenuDataTextContextMenuComponentLocalTextContextMenuDropdownProviderLocalTextContextMenuToolbarProvider(I1b7b0)
LazyLayoutItemProviderstabilisieren (Icce09, b/261565751)- Es wurden Android-Funktionen zur intelligenten Auswahl eingeführt, die über
ComposeFoundationFlags.isSmartSelectionEnabledaktiviert/deaktiviert werden können. Außerdem wurde eine statischecompositionLocalLocalTextClassifierCoroutineContexteingeführt, mit der derCoroutineContextangegeben werden kann, in dem derTextClassification-Job gestartet wird. (I1dbaa, b/139321320)
Version 1.9.0-alpha03
20. Mai 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha03 ist veröffentlicht. Version 1.9.0-alpha03 enthält diese Commits.
API-Änderungen
AnnotatedOutputTransformationwurde hinzugefügt. Damit können SieTextFieldvor dem Rendern Anmerkungen hinzufügen. (Ibc6f0, b/389978748)LazyLayoutMeasurePolicyeinführen undLazyLayoutMeasureScopestabilisieren (I8c5df, b/252853717)BasicSecureTextFieldstellt jetzt den ScrollState des internenBasicTextFieldbereit. (I6e576)- 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 wurden mit Blick auf die Leistung entwickelt, 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) - Es wurde eine
detectDragGestures-Überladung eingeführt, die die Steuerung von Touch-Slop und Ausrichtungssperre ermöglicht. (Iadb0d) - 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-
ColorLongs-Werten vergleichbar, da die Farbraum-IDs für einige Farbräume nicht in der richtigen Reihenfolge sind. Zum Konvertieren in und aus Android-Farbräumen werden zwei neue APIs hinzugefügt:toColorLong()undfromColorLong(). (I36899)
Fehlerkorrekturen
- Text, der aus mehreren Text-Composables in einem
SelectionContainerkopiert wird, enthält jetzt eine Zeilentrennung\nzwischen Text aus den einzelnen Text-Composables. (I25332, b/285036739)
Version 1.9.0-alpha02
7. Mai 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha02 ist veröffentlicht. Version 1.9.0-alpha02 enthält diese Commits.
API-Änderungen
- Es wurde korrigiert, wie Änderungen bei der Zeigereingabe in
VelocityTrackerinDragGestureNodehinzugefügt werden. Dies kann mit dem neuen FlagisOffsetPositionBeforeAddingToVelocityTrackerEnabledgesteuert werden. (Ic7992, b/292556787, b/236451818) await[Vertical/Horizontal]PointerSlopOrCancellationöffentlich machen (I6968b, b/298903681)AbstractComposeView.consumeWindowInsetsist jetzt standardmäßig auf „false“ eingestellt.WindowInsetswird automatisch an die Größe und Position des untergeordneten Elements angepasst, wenn es auf „false“ gesetzt ist. Es ist also nicht mehr erforderlich, es standardmäßig auf „true“ zu setzen. Damit wird das Problem behoben, dass untergeordnete Ansichten standardmäßig keineWindowInsets-Updates erhalten haben. Entwickler können die Aktualisierung deaktivieren, indem sie entweder den experimentellenComposeFoundationLayout.isWindowInsetsDefaultPassThroughEnabled-Wert auf „true“ setzen oder vorzugsweiseAbstractComposeView.consumeWindowInsetsfür alle Compose-Ansichtsinstanzen auf „true“ setzen. (I6fa0a, b/411868840)
Externe Beiträge
- Pager-Absturz bei extrem großen beyondViewportPageCount-Werten behoben (Idb2db)
Version 1.9.0-alpha01
23. April 2025
androidx.compose.foundation:foundation-*:1.9.0-alpha01 ist veröffentlicht. Version 1.9.0-alpha01 enthält diese Commits.
Geändertes Verhalten
Für die mit Compose ausgelieferten Lint-Prüfungen 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 Überladungen
clickable,combinedClickable,selectable,toggleableundtriStateToggleableohne Indication-Parameter unterstützen jetzt nur nochIndicationNodeFactory-Instanzen, die überLocalIndicationbereitgestellt werden. Diese Änderung wird angewendet, wenn Sie Ihre Verwendungen dieser Modifikatoren mit dieser Version von Compose neu kompilieren. Binäre / transitive Abhängigkeiten sind nicht betroffen. Wenn SieLocalIndicationeine eingestellte Indication-Implementierung bereitstellen und diese APIs verwenden, kommt es zur Laufzeit zu einem Absturz. Diese Verhaltensänderung ist erforderlich, um die Leistung zu verbessern und zu ermöglichen, dass Composable-Funktionen, die diese Modifikatoren verwenden, während der Neuzusammensetzung übersprungen werden. Sie könnenComposeFoundationFlags.isNonComposedClickableEnabled=falseverwenden, um diese Verhaltensänderung vorübergehend zu deaktivieren und Compose zu aktualisieren, ohne dass die Migration Sie daran hindert. Dieses Flag wird nach einer stabilen Version entfernt. Migrieren Sie alle verworfenen Indication-Implementierungen, um stattdessenIndicationNodeFactoryzu verwenden. Sie können auch die Überladungen mit einem expliziten Indication-Parameter verwenden. Diese Überladungen unterstützen weiterhin nicht-IndicationNodeFactory-Instanzen von Indication. Aus Leistungsgründen wird dies jedoch nicht empfohlen. (I6bcdc, b/316914333)
API-Änderungen
- API zum Erstellen benutzerdefinierter Aufzählungslisten über
AnnotatedStringeinführen (I1d066, b/383269496, b/139326648) - „Compose“ zum Auslösen von
ViewTreeObserver.OnScrollChangedzulassen Dieses Verhalten wird unter dem FlagisOnScrollChangedCallbackEnabledeingeführt. Außerdem haben wir eine Erweiterungsfunktion vonDelegatableNode dispatchOnScrollChangedeingeführt. (I34b9d, b/238109286) - Für Projekte, die mit Kotlin 2.0 veröffentlicht wurden, ist KGP 2.0.0 oder höher erforderlich (Idb6b5).
- Es wurde Unterstützung für Lint-Prüfungen für
TextFieldStatehinzugefügt, damit der Wert in der Komposition gespeichert wird. Verwenden Sie stattdessen am bestenrememberTextFieldState. (I53d74) - Unterstützung für Lint-Prüfung für
FocusRequesterhinzugefügt, um sicherzustellen, dass der Wert in der Komposition gespeichert wird (I6bf91) - Es wurde Unterstützung für Lint-Prüfungen für
BringIntoViewRequesterhinzugefügt, damit der Wert in der Komposition gespeichert wird. (Ibfba6) - Es wurden Bereiche für
schedulePrefetch-Aufrufe in Raster- und Listenstrategien eingeführt, um sie an dieLazyListPrefetchState-Funktionen zur Bereitstellung von Größen- und Indexinformationen anzupassen. (Iad80c) - Wichtige Änderung: Die Überladungen
clickable,combinedClickable,selectable,toggleableundtriStateToggleableohne Indication-Parameter unterstützen jetzt nur nochIndicationNodeFactory-Instanzen, die überLocalIndicationbereitgestellt werden. Diese Änderung wird angewendet, wenn Sie Ihre Verwendungen dieser Modifikatoren mit dieser Version von Compose neu kompilieren. Binäre / transitive Abhängigkeiten sind nicht betroffen. Wenn SieLocalIndicationeine eingestellte Indication-Implementierung bereitstellen und diese APIs verwenden, kommt es zur Laufzeit zu einem Absturz. Diese Verhaltensänderung ist erforderlich, um die Leistung zu verbessern und zu ermöglichen, dass Composable-Funktionen, die diese Modifikatoren verwenden, während der Neuzusammensetzung übersprungen werden. Sie könnenComposeFoundationFlags.isNonComposedClickableEnabled=falseverwenden, um diese Verhaltensänderung vorübergehend zu deaktivieren und Compose zu aktualisieren, ohne dass die Migration Sie daran hindert. Dieses Flag wird nach einer stabilen Version entfernt. Migrieren Sie alle verworfenen Indication-Implementierungen, um stattdessenIndicationNodeFactoryzu verwenden. Sie können auch die Überladungen mit einem expliziten Indication-Parameter verwenden. Diese Überladungen unterstützen weiterhin nicht-IndicationNodeFactory-Instanzen von Indication. Aus Leistungsgründen wird dies jedoch nicht empfohlen. (I6bcdc, b/316914333) - Einführung eines Flags zur Steuerung des automatischen verschachtelten Prefetch-Verhaltens:
isAutomaticNestedPrefetchEnabled(I8d448) - Führen Sie eine Überladung für
LazyGridStateundrememberLazyGridStateein, die einLazyLayoutCacheWindowakzeptiert. (I51151) - Es werden Lineale für Fenstereinsätze hinzugefügt. Fügt
DerivedRulerhinzu, damit ein Ruler aus einem anderen Ruler berechnet werden kann. ÄndertPlacmentScope, um die Anzeigedichte zu implementieren. (I658bc, b/359260964) - Es wurde eine Factory-Funktion
WindowInsets()ohne Argumente hinzugefügt, um das Erstellen leererWindowInsetszu vereinfachen. (I65f62, b/395311689) PaddingValues.Zerofür eine leerePaddingValueshinzugefügt. (If193e, b/386255688)
Fehlerkorrekturen
- Die
state-Überladung vonBasicTextFieldsorgt dafür, dass der Cursor im Blickfeld bleibt, wenn sich seine Größe ändert. (I0eb41, b/406187741) - Die
onVisibleItemsUpdated-APIs inLazyListPrefetchStrategyundLazyGridPrefetchStrategywurden aktualisiert, um über den ursprünglichen Status zu informieren. (If2cfa)
Version 1.8
Version 1.8.3
18. Juni 2025
androidx.compose.foundation:foundation-*:1.8.3 ist veröffentlicht. Version 1.8.3 enthält diese Commits.
Version 1.8.2
20. Mai 2025
androidx.compose.foundation:foundation-*:1.8.2 ist veröffentlicht. Version 1.8.2 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, der dazu führte, dass bei der Berechnung der Anzahl der zu ladenden Elemente für die Fokus-Suche durch null geteilt wurde. Die Prüfung wurde auf alle Layouts angewendet, in denen
LazyLayoutBeyondBoundsStateverwendet wird. (8e6dc8)
Version 1.8.1
7. Mai 2025
androidx.compose.foundation:foundation-*:1.8.1 ist veröffentlicht. Version 1.8.1 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler in
BasicTextundTextAutoSizewurde behoben. Bei Verwendung vonTextOverflow.Ellipsizewurde Text kleiner als optimal dargestellt. (I1e1d8, b/396582066) - Ein Fehler in
BasicTextFieldwurde behoben, der zu verschiedenen Abstürzen führte, wennTextFieldDecoratorden Aufruf voninnerTextFieldübersprang. (I2638c), b/308398612 - Ein Fehler in
TextFieldwurde behoben, der dazu führte, dass die Textsymbolleiste und die Auswahl-Ziehpunkte vollständig verschwanden, wenn dieTextFieldState-Instanz geändert wurde. (I8068a), b/390477786 - Ein Fehler in
BasicTextwurde behoben, durch den die Platzierung des Texts nicht aktualisiert wurde, wenn die Mindestbreite geändert wurde undtextAlignauf einen anderen Wert als den Standardwert festgelegt war. (I77a96), b/406305552
Version 1.8.0
23. April 2025
androidx.compose.foundation:foundation-*:1.8.0 ist veröffentlicht. Version 1.8.0 enthält diese Commits.
Version 1.8.0-rc03
9. April 2025
androidx.compose.foundation:foundation-*:1.8.0-rc03 ist veröffentlicht. Version 1.8.0-rc03 enthält diese Commits.
Version 1.8.0-rc02
26. März 2025
androidx.compose.foundation:foundation-*:1.8.0-rc02 ist veröffentlicht. Version 1.8.0-rc02 enthält diese Commits.
Version 1.8.0-rc01
12. März 2025
androidx.compose.foundation:foundation-*:1.8.0-rc01 ist veröffentlicht. Version 1.8.0-rc01 enthält diese Commits.
Version 1.8.0-beta03
26. Februar 2025
androidx.compose.foundation:foundation-*:1.8.0-beta03 ist veröffentlicht. Version 1.8.0-beta03 enthält diese Commits.
Fehlerkorrekturen
- Es wurde die neue Semantikeigenschaft
InputTexthinzugefügt, die den Wert eines Textfelds erfasst, bevor die Ausgabetransformation angewendet wird. (Iae46a, b/395911609, b/176949051) - Veraltete
AutoSize-Überladungen wurden entfernt. Verwenden Sie stattdessen dieTextAutoSizeAPIs, die dieselbe Funktion bieten. (I2c90f) - Ein Caching-Problem mit
TextAutoSizewurde behoben. Bei einem zweiten Layoutdurchlauf mit denselben Einschränkungen wurde möglicherweise die zweitgrößte passende Schriftgröße anstelle der größten verwendet. (Id367f)
Version 1.8.0-beta02
12. Februar 2025
androidx.compose.foundation:foundation-*:1.8.0-beta02 ist veröffentlicht. Version 1.8.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das Overscroll-Implementierungen mit
LayoutModifierNodein scrollenden Containern nicht richtig funktionierten.
Version 1.8.0-beta01
29. Januar 2025
androidx.compose.foundation:foundation-*:1.8.0-beta01 ist veröffentlicht. Version 1.8.0-beta01 enthält diese Commits.
API-Änderungen
SemanticsNodeInteraction.semanticsId()wurde entfernt. Verwenden Sie stattdessenSemanticsNodeInteraction.fetchSemanticsNode().id. (Ie397a)- Die
requestAutofillAPI soll außerhalb des Autofill-Managers vorhanden sein. (Id1929) ContextualFlowRowundContextualFlowColumnwurden als verworfen markiert. Diese experimentelle Komponente wurde in Version 1.7 eingeführt und war noch nicht stabil. Die Implementierung wurde als unerwünscht eingestuft. In Zukunft wird möglicherweise 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 mitFlowRowrealisieren, aber das ist nicht immer der Fall.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)
Fehlerkorrekturen
- 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).
- Es wurde ein Fehler in
BasicTextbehoben, wennTextAutoSizeundmaxLinesauf 1 gesetzt waren. (Ic0450, b/376834366) - Die Mindesthöhe der intrinsischen Eigenschaften von Text berücksichtigt jetzt den Parameter
minLines. Das bedeutet, dass die gemeldete Mindesthöhe für intrinsische Elemente nicht kleiner ist als die Höhe, die zum Erfüllen des ParametersminLineserforderlich ist (I225f9, b/388299762).
Version 1.8.0-alpha08
15. Januar 2025
androidx.compose.foundation:foundation-*:1.8.0-alpha08 ist veröffentlicht. Version 1.8.0-alpha08 enthält diese Commits.
API-Änderungen
- AutoSize:
AutoSizewurde inTextAutoSizeumbenannt und es wurden APIs veröffentlicht, mit denen benutzerdefinierteTextAutoSize-Implementierungen erstellt werden können. Ein Beispiel für eine benutzerdefinierte Implementierung der automatischen Textgröße finden Sie unterTextAutoSizeSample. (I85756) - Das Feature-Flag
DetectTapGesturesEnableNewDispatchingBehaviorwurde inComposeFoundationFlagsverschoben und inisDetectTapGesturesImmediateCoroutineDispatchEnabledumbenannt. Das alte Flag wurde verworfen und wird jetzt anComposeFoundationFlags.isDetectTapGesturesImmediateCoroutineDispatchEnableddelegiert. (I62932)
Fehlerkorrekturen
DetectTapGesturesEnableNewDispatchingBehaviorist standardmäßig aktiviert. DieTapGestureDetector-APIs verwenden jetzt standardmäßig das neue Dispatching-Verhalten (sofortiges Dispatching). (I9f2bc, b/369648479)- Die
requiredWidth/Height/Size-Modifizierer wurden korrigiert, damit intrinsische Größen richtig verarbeitet werden. (Ie3d7d, b/368113212)
Externe Beiträge
BasicTooltipwurde in Foundation undBasicTooltip/Tooltipin Material 3 vereinheitlicht. (Ifc2e6)- Eine neue Zwischenablage-Schnittstelle und eine Kompositionslokale dafür wurden hinzugefügt. (I80809)
Version 1.8.0-alpha07
11. Dezember 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha07 ist veröffentlicht. Version 1.8.0-alpha07 enthält diese Commits.
API-Änderungen
- Das Flag
ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabledwurde gelöscht, mit dem die Entfernung des internengraphicsLayerausBasicTextrückgängig gemacht wurde. Wenn Sie dieses Flag verwendet haben, teilen Sie uns bitte die Gründe mit, indem Sie einen Fehler melden. Sie können auch einfachModifier.graphicsLayer()an IhreBasicText-Aufrufe übergeben, um das gleiche Verhalten wie zuvor zu erzielen. (Id9f90) - Es wurde eine Standardimplementierung für die neue
stickyHeader-DSL hinzugefügt. (I68986) - Die lokale Verwendung von
LocalAutofillHighlightColorhat einen Farbtyp. (I0e05b) OverscrollEffect#withoutDrawingwurde inOverscrollEffect#withoutVisualEffectumbenannt. (I1a154)
Fehlerkorrekturen
- Folgekorrektur für ein Problem bei der Zielberechnung von
AnchoredDraggable, bei dem das Ziel bei bestimmten Wischbewegungen am falschen Ankerpunkt festgelegt werden konnte. (I23b87, b/367660226)
Externe Beiträge
BringIntoViewResponderModifierNodezur Benutzeroberfläche hinzufügen, um eine neue Möglichkeit zur Implementierung der Funktion „In die Ansicht bringen“ zu bieten und die Implementierung auf Plattformebene zu ermöglichen (Ia6dd8)- Wir ändern die Art und Weise, wie der Cursor gezeichnet wird, geringfügig. Mit
LocalCursorBlinkEnabledkönnen Sie das Zeichnen des Cursors in Tests deaktivieren. (I4c697)
Version 1.8.0-alpha06
13. November 2024
androidx.compose.foundation:foundation-*: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) - Die
confirmValueChangevonAnchoredDraggableStatewurde eingestellt. Anstatt Statusänderungen zu blockieren, sollten nicht zulässige Anker nicht im aktiven Ankersatz enthalten sein. Außerdem sollte einOverscrollEffectverwendet werden, um die Nichtverfügbarkeit der angeforderten Aktion anzugeben. (Ia717f) - Ändert den Autofill-Manager in eine Schnittstelle. (I84914, b/376080755)
- Die APIs
OverscrollEffect#withoutDrawingundOverscrollEffect#withoutEventHandlingwurden hinzugefügt. Mit diesen APIs wird eine umschlossene Instanz des bereitgestellten Overscroll-Effekts erstellt, die keine Ereignisse zeichnet bzw. verarbeitet. So kann Overscroll in einer separaten Komponente gerendert werden, die Ereignisse auslöst. Sie können beispielsweise das Zeichnen des Overscrolls in einer Lazy List deaktivieren und den Overscroll dann separat oben oder an anderer Stelle zeichnen. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244) - Unterstützung für das automatische Ausfüllen in der Textsymbolleiste hinzugefügt (Ie6a4c)
- Die Methoden
OverscrollConfigurationundLocalOverscrollConfigurationwerden eingestellt undrememberPlatformOverscrollFactorywird hinzugefügt, um eine Instanz der Standardimplementierung für das Überscrollen zu erstellen oder deren Parameter anzupassen. Wenn Sie das Overscroll-Verhalten deaktivieren möchten, verwenden SieLocalOverscrollFactory provides nullanstelle vonLocalOverscrollConfiguration provides null. 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) - Das Attribut
effectModifierfürOverscrollEffectwurde innode: DelegatableNodegeändert, um es an andere APIs anzugleichen. (Ic0b46, b/255554340) - Die experimentelle
GlobalAssertionsAPI wurde entfernt. Es war ursprünglich für Barrierefreiheitsprüfungen vorgesehen. Verwenden Sie stattdessenenableAccessibilityChecks(). (I59322)
Version 1.8.0-alpha05
30. Oktober 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha05 ist veröffentlicht. Version 1.8.0-alpha05 enthält diese Commits.
Neue Funktionen
- Unterstützung für die automatische Anpassung der Textgröße. Übergeben Sie eine
AutoSize-Instanz (z. B.AutoSize.StepBased) an Ihre bevorzugte Text-Composable-Funktion (z. B.BasicText) und die Textgröße wird an den verfügbaren Platz angepasst. (Ice7e0, b/139320827) - Es werden die APIs
OverscrollFactoryundLocalOverscrollFactoryhinzugefügt, um das Overscroll-Verhalten innerhalb einer Hierarchie zu konfigurieren. Der überLocalOverscrollFactorybereitgestellte Wert wird standardmäßig verwendet, um eineOverscrollEffectzu erstellen. Verwenden SierememberOverscrollEffect(), um einen Effekt aus der aktuellen bereitgestellten Factory zu erstellen und zu speichern. (I51ca4, b/255554340)
API-Änderungen
- Einführung von
CompositionLocal, mit dem der Farbton der Hervorhebung für das erfolgreiche Ausfüllen durch Autofill geändert werden kann. (I32092) ScrollableDefaults.overscrollEffectwurde entfernt. Verwenden Sie stattdessenrememberOverscrollEffect. Dadurch wird eine Instanz der aktuellen Overscroll-Implementierung erstellt, die mitLocalOverscrollFactorybereitgestellt wird. (I1651a, b/255554340),(b/234451516)- 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) - Entfernt
CombinedClickableNode. Diese experimentelle API wurde vorübergehend bereitgestellt, um die Leistungsoptimierung zu ermöglichen, wird aber nicht mehr benötigt. Verwenden Sie stattdessenModifier.combinedClickabledirekt, wie bei anderen Modifier-APIs. (I4b658) - Fügt Überladungen für
horizontalScroll,verticalScroll,LazyColumn,LazyRow,LazyHorizontalGrid,LazyVerticalGrid,LazyHorizontalStaggeredGrid,LazyVerticalStaggeredGrid,HorizontalPagerundVerticalPagerhinzu, mit denen ein benutzerdefiniertesOverscrollEffectangegeben werden kann. Das bereitgestellteOverscrollEffectempfängt Ereignisse und wird innerhalb der Grenzen dieser Komponenten gerendert. Das zweimalige Zeichnen desselbenOverscrollEffectwird nicht unterstützt. Sie können also nicht dasselbeOverscrollEffect, das für eine dieser Komponenten bereitgestellt wurde, separat mitModifier.overscrollzeichnen. Der Anwendungsfall, bei dem der Overscroll außerhalb der Grenzen dieser Komponenten gezeichnet wird, wird in Zukunft separat behandelt. (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)
Version 1.8.0-alpha04
16. Oktober 2024
androidx.compose.foundation:foundation-*: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) - Der Absatz und
ParagraphIntrinsicsenthalten jetzt eine Liste aller Annotationen, die aufAnnotatedStringangewendet werden. Zuvor war nur eine Liste vonSpanStylesenthalten. (I12f80) PointerInputModifierNode#touchBoundsExpansionwurde eingeführt, um die Berührungsbegrenzungen eines einzelnen Zeigereingabe-Modifikators zu vergrößern. (Iccf02, b/335339283)
Fehlerkorrekturen
- Ein Fehler wurde behoben, durch den Positionsgrenzwerte, die an
AnchoredDraggableDefaults.flingBehaviorübergeben wurden, in einigen Szenarien nicht richtig berücksichtigt wurden. (Ifdf0d, b/367660226) - 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) - Ein Fehler wurde behoben, bei dem
OverscrollEffects, das anModifier.anchoredDraggableübergeben wurde, 2D-Deltas anstelle von 1D-Deltas erhalten hat. (Ie52c0)
Version 1.8.0-alpha03
2. Oktober 2024
androidx.compose.foundation:foundation-*: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)
- Flag
DraggableAddDownEventFixEnabled(I848d5) eingeführt - Es wurde eine neue semantische Rolle namens „Carousel“ eingeführt, um das Listenverhalten in Pagers für A11y-Dienste zu emulieren. (Id354b, b/354109776, b/239672673)
- Der implizite
graphicsLayer-Modifikator wurde aus der zusammensetzbaren FunktionBasicTextentfernt. Es wurde das experimentelle FlagComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabledhinzugefügt, um zum alten Verhalten zurückkehren zu können. (Ie478d) Modifier.recalculateWindowInsets()wurde hinzugefügt, damit Kinder in der HierarchieinsetsPaddingverwenden können, auch wenn Eltern sie ohneconsumeWindowInsets()ausgerichtet haben. (I7f9e4)
Fehlerkorrekturen
- Implementieren Sie die Erkennung von Touch-Gesten in
detectDragGestures, ziehbaren und scrollbaren Elementen. Wenn ein untergeordnetes Element, das gezogen werden kann, eine Geste abbricht, kann das übergeordnete Element sie übernehmen. So ist eine kontinuierlichere und integrierte Gestensteuerung möglich. (Ic88fe) - Das Verhalten beim Abbrechen von Fling-Gesten in scrollbaren Elementen wurde aktualisiert. Wenn ein scrollbarer Fling die Grenzen erreicht, wird die Fling-Geschwindigkeit jetzt korrekt an den nächsten scrollbaren Fling in der Kette weitergegeben, anstatt den Fling fortzusetzen. (I9326a)
Version 1.8.0-alpha02
18. September 2024
androidx.compose.foundation:foundation-*: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 Auslassungszeichen am Anfang oder in der Mitte der Zeile des einzeiligen Texts platziert werden (I38913, b/185418980).
Version 1.8.0-alpha01
4. September 2024
androidx.compose.foundation:foundation-*: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.foundation:foundation-*:1.7.8 ist veröffentlicht. Version 1.7.8 enthält diese Commits.
Fehlerkorrekturen
- Absturz in
BasicTextFieldmit Eingabetransformation beim Ersetzen eines Teils des eingefügten Texts behoben. (I73702)
Version 1.7.7
29. Januar 2025
androidx.compose.foundation:foundation-*:1.7.7 ist veröffentlicht. Version 1.7.7 enthält diese Commits.
Fehlerkorrekturen
- Der Absturz von
IndexOutOfBoundbei Linkannotationen wurde behoben. (Ic96d2) - In einigen Grenzfall-Szenarien mit Links wurde das Problem der unendlichen Neuzusammenstellung behoben. (I04a03)
Bekannte Fehler
- Es wurde ein Fehler gefunden, der in seltenen Fällen auf Android-API-Ebene 35 zu einem unerwarteten Zeilenumbruch führen kann. Das Problem kann in Version 1.7 nicht behoben werden. Es wird in Version 1.8 behoben. (b/391378120)
Version 1.7.6
11. Dezember 2024
androidx.compose.foundation:foundation-*:1.7.6 ist veröffentlicht. Version 1.7.6 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das Inline-Inhalte von Text für Bedienungshilfen nicht sichtbar waren.
- Ein Problem wurde behoben, durch das
AndroidEmbeddedExternalSurfacenicht richtig zurückgesetzt wurde und beim Wiederverwenden in einer Lazy List hängen blieb.
Version 1.7.5
30. Oktober 2024
androidx.compose.foundation:foundation-*:1.7.5 ist veröffentlicht. Version 1.7.5 enthält diese Commits.
Fehlerkorrekturen
- Achte darauf, dass angepinnte Elemente nicht zweimal im Bereich für das Content-Padding untergeordnet werden. (Ic6224)
Version 1.7.4
16. Oktober 2024
androidx.compose.foundation:foundation-*:1.7.4 ist veröffentlicht. Version 1.7.4 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, der in Textfeldern zu seltenen Abstürzen führte. (I475c6, b/313010266)
ReusableContentHostwurde aus dem Stammverzeichnis der Lazy-Layout-Elemente entfernt. Dies war eine mögliche Ursache für Abstürze, die durch den Aufruf einer Messung auf einem deaktivierten Knoten ausgelöst wurden. (Id6e60)
Version 1.7.3
2. Oktober 2024
androidx.compose.foundation:foundation-*:1.7.3 ist veröffentlicht. Version 1.7.3 enthält diese Commits.
Fehlerkorrekturen
- Ein Speicherleck mit
BasicTextwurde behoben, wenn „minLines“ auf einen anderen Wert als den Standardwert gesetzt war.
Version 1.7.2
18. September 2024
androidx.compose.foundation:foundation-*:1.7.2 ist veröffentlicht. Version 1.7.2 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem mit dem Ziehen von Elementen wurde behoben. Dabei fehlten Down-Ereignisse, wodurch das schnelle Wischen langsamer als normal aussah.
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.foundation:foundation-*:1.7.0 ist veröffentlicht. Version 1.7.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.6.0
- Die Leistung von
Modifier.clickable,Modifier.focusable,Modifier.indication,Modifier.scrollableundModifier.draggablewurde deutlich verbessert. Im Rahmen dieser Bemühungen wurden zusätzlich zu internen Änderungen die folgenden API-Änderungen vorgenommen:- Es wurde eine neue Indication API,
IndicationNodeFactory, hinzugefügt. Dies führt zu leistungsfähigeren Indication-Implementierungen im Vergleich zur vorherigen (jetzt eingestellten)rememberUpdatedInstanceAPI. Informationen zur Migration finden Sie unter developer.android.com. clickable/combinedClickable/selectable/toggleableakzeptiert jetzt einen Nullable-ParameterMutableInteractionSource. Wenn der Wert „null“ ist und die angegebene Indication einIndicationNodeFactoryist, kann die Indication nur bei Bedarf verzögert erstellt werden, was die Leistung verbessert. Wenn SieMutableInteractionSourcenicht hochladen und verwenden, empfehlen wir, „null“ anstelle vonremember { MutableInteractionSource() }zu übergeben.Indication#rememberUpdatedInstancewurde eingestellt. Sie führt zu einem hohen unvermeidlichen Leistungsverlust und verhindert andere Optimierungen. Verwenden Sie stattdessen die neueIndicationNodeFactoryAPI.
- Es wurde eine neue Indication API,
BasicTextFieldmit einemTextFieldStateist jetzt stabil und wir empfehlen allen Aufrufstellen, die Migration vonBasicTextField(value, onValueChange)zuBasicTextField(TextFieldState)zu starten.- Das
ClickableTextwurde eingestellt. Wenn Sie Ihrem Text klickbare Links hinzufügen möchten, verwenden SieBasicTextmit der neuen AnnotationLinkAnnotationin IhremAnnotatedString. MitLinkAnnotationkönnen Sie das Styling basierend auf dem Linkstatus (z.B. fokussiert, mit dem Mauszeiger darauf bewegt) anpassen. - Einführung von
ContextualFlowRowundEnhanced FlowRow/ColumnmitMaxLinesundOverflowWir freuen uns, Verbesserungen an den experimentellen FunktionenFlowRowundFlowColumnankündigen zu können. Sie bieten jetztmaxLinesund Unterstützung für Überlauf. Außerdem stellen wir die neuen FunktionenContextualFlowRowundContextualFlowColumnvor. Dieses Update soll leistungsoptimierte Komponenten bereitstellen.ContextualFlow*eignet sich ideal für eine große Anzahl von Elementen, die eine kleine maxLines-Konfiguration und dynamische Schaltflächen vom Typ „+N weitere“ verwenden.FlowRowundFlowColumneignen sich ideal für eine kleine Anzahl von Elementen (weniger als 100). Wichtig: Wenn Sie das vorhandene Verhalten inFlowRowoderFlowColumnbeibehalten möchten, bei dem alle Elemente unabhängig davon zusammengesetzt werden, ob sie dem maximalen Wert der sekundären Achse entsprechen, legen Sie bei der Initialisierung „overflow“ aufFlowRowOverflow.VisibleoderFlowColumnOverflow.Visiblefest. UnterContextualFlowRowSampleundFlowRowSamplefinden Sie Beispiele für diese neuen Funktionen in Aktion. (Ib9135, b/293577082) - Unterstützung für Animationen zum Ein- und Ausblenden von Elementen wurde in
LazyColumnundLazyRowhinzugefügt. Bisher war es möglich, den ModifiziererModifier.animateItemPlacement()hinzuzufügen, um Animationssequenzen für die Placement-Neuanordnung zu unterstützen. Wir haben diesen Modifikator eingestellt und einen neuen, nicht experimentellen Modifikator namensModifier.animateItem()eingeführt, mit dem Sie alle drei Animationstypen unterstützen können: Einblenden, Ausblenden und Neuanordnung. (I2d7f7, b/150812265) - Experimentelle Unterstützung für lange Screenshots in Compose-Scrollcontainern mit der offiziellen Android API (
ScrollCaptureCallback) implementiert. - Die Quellen „Drag“ und „Fling“ werden durch
UserInputundSideEffectersetzt, um der erweiterten Definition dieser Quellen Rechnung zu tragen, die jetzt Animationen („Side Effect“) sowie Mausrad und Tastatur (UserInput) umfasst.NestedScroll LazyLayout-Prefetch-Anfragen können jetzt als dringend markiert werden. Das bedeutet, dass wir davon ausgehen, dass dieser Artikel im nächsten Frame benötigt wird, und das Frame-Budget ignorieren möchten, um mehr Arbeit im Voraus zu erledigen (Id513f).- Unterstützung der Funktion zum Schreiben mit Eingabestift auf Geräten nach Android U (I002e4)
- Verschiedene APIs wurden auf „Stabil“ hochgestuft.
- Pager, Andocken, Fenstereinzüge
Version 1.7.0-rc01
21. August 2024
androidx.compose.foundation:foundation-*:1.7.0-rc01 ist veröffentlicht. Version 1.7.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem der Absturz auftrat, wenn ein Element in einem übergeordneten Element, das fokussierbar (oder anklickbar) und deaktiviert ist, den Fokus hatte. (b/317561689)
Version 1.7.0-beta07
7. August 2024
androidx.compose.foundation:foundation-*:1.7.0-beta07 ist veröffentlicht. Version 1.7.0-beta07 enthält diese Commits.
Fehlerkorrekturen
- Die Funktionen
SemanticsNodeInteractionfür die TexteingabeperformTextReplacement,performTextInputundperformTextClearancelösen jetzt Zusicherungsfehler aus, wenn sie für schreibgeschützteTextFieldsaufgerufen werden. (I4ae8f) - Ein visueller Fehler in Hyperlinks wurde behoben. (I23311)
- Der Modifikator
contentReceiverfunktioniert jetzt auch mit einigen IMEs. - Generierung von Geschwindigkeit: Die Weitergabe von NaN-Werten in Compose UI und Foundation wird verhindert.
Version 1.7.0-beta06
24. Juli 2024
androidx.compose.foundation:foundation-*: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.foundation:foundation-*:1.7.0-beta05 ist veröffentlicht. Version 1.7.0-beta05 enthält diese Commits.
Fehlerkorrekturen
- Behebung des Problems mit der Behandlung von NaN-Werten in
SnapFlingBehaviorund Pager.
Version 1.7.0-beta04
26. Juni 2024
androidx.compose.foundation:foundation-*:1.7.0-beta04 ist veröffentlicht. Version 1.7.0-beta04 enthält diese Commits.
Fehlerkorrekturen
- Abstürze beim Messen sehr langer Textzeilen (z. B. 10.000 Zeichen) vermeiden (8157ab)
- Es wurde ein Fehler behoben, der dazu führte, dass die Messung von sehr großem Text in der neuen
BasicTextFieldzum Absturz führte (6b7575). - Macht eine Verhaltensänderung bei der Messung von Zeilen/Spalten rückgängig, die die Textnutzung in bestimmten Szenarien beeinträchtigt (69e8ba)
Version 1.7.0-beta03
12. Juni 2024
androidx.compose.foundation:foundation-*: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.foundation:foundation-*:1.7.0-beta02 ist veröffentlicht. Version 1.7.0-beta02 enthält diese Commits.
API-Änderungen
- Fügt eine experimentelle API zum Konfigurieren des Prefetch-Verhaltens von
LazyGridshinzu, ähnlich der vorhandenen experimentellen API fürLazyLists. Dazu gehört auch die Unterstützung für das Prefetching von Elementen in verschachteltenLazyGrids-Elementen. Ähnlich wie beiLazyListPrefetchStrategywerden standardmäßig die ersten zwei verschachtelten Elemente jedes Grids vorab abgerufen. Dies kann jedoch mit den neuen APIsLazyGridPrefetchStrategy(nestedPrefetchItemCount)undLazyListPrefetchStrategy#onNestedPrefetchkonfiguriert werden. (I591c4) SemanticsProperties.Editablewurde inIsEditableumbenannt undSemanticsPropertyReceiver.editablein den WertisEditablegeändert. Das Attribut ist jetzt ein boolescher Wert und wird immer durch Textfelder angegeben. (I8acd8)- Die Standardwerte für
basicMarqueewurden in das ObjektMarqueeDefaultsverschoben. (I12ff6) - Der Parameter
basicMarqueedelayMilliswurde inrepeatDelayMillisumbenannt. (I12ff6) - API zum Formatieren der Links aktualisiert:
TextLinkStyleswurde inTextStyleverschoben undTextDefaultswurde 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)- „Standard“ wurde aus den
MarqueeDefaults-Properties entfernt. (I1d8a0) - Die Eigenschaft „Marquee“ wurde aus
MarqueeDefaults-Properties entfernt. (Iad4f4) TextLinkStyleswurde aus dem Kurs „TextStyle“ entfernt. Stattdessen istTextLinkStylesTeil desLinkAnntation-Konstruktors und derAnnotatedString.fromHtml-Methode (I90b2b).- Ein Fehler wurde behoben, bei dem der Pager beim schnellen Wischen in Richtung einer Grenze einrastete, obwohl er sich bereits an der Grenze befand. (I9f373, b/339171222)
- In BTF2 werden jetzt die richtigen Mausauswahlgesten verwendet. (Ibe8c6)
Externe Beiträge
- „Make compose/measure time calculation content-type based in prefetch to improve accuracy“ (Iea622) noch einmal einreichen
- Die Berechnung der Zeit für das Erstellen/Messen von Inhalten basiert im Prefetch auf dem Inhaltstyp, um die Genauigkeit zu verbessern (Ibccb1).
WindowInsetsPadding-Modifizierer aus dem gemeinsamen Quellenset verfügbar machen (I070b2)
Version 1.7.0-beta01
14. Mai 2024
androidx.compose.foundation:foundation-*:1.7.0-beta01 ist veröffentlicht. Version 1.7.0-beta01 enthält diese Commits.
API-Änderungen
- Die Property
KeyboardOptions.shouldShowKeyboardOnFocuswurde als nicht mehr unterstützte, verborgene Property für die binäre Kompatibilität wieder hinzugefügt. (I15cfe) - Bei Komponenten mit horizontaler Ausrichtung werden Drag-Deltas in
Modifier.anchoredDraggablejetzt standardmäßig umgekehrt, wenn sie in einem RTL-Layout verwendet werden. (I3c6d9) 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 zusammensetzbare Text-Funktion formatiert werden können. (I31b93) onDragStartedundonDragStoppedwurden durch nicht suspendierte Callbacks ersetzt. (I59de8)
Fehlerkorrekturen
- Ein Fehler wurde behoben, durch den Pager abstürzte, wenn
contentPaddinggrößer als die eingehenden Einschränkungen war. Der Pager erzwingt jetzt, dass negative Werte, die vonPageSizezurückgegeben werden, auf 0 gesetzt werden. (Iba5d8, b/314008560)
Version 1.7.0-alpha08
1. Mai 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha08 ist veröffentlicht. Version 1.7.0-alpha08 enthält diese Commits.
Neue Funktionen
- Für
BasicTextFieldundSelectionContainerwurde ein Kontextmenü hinzugefügt, das durch Klicken mit der rechten Maustaste aufgerufen werden kann und Optionen zum Ausschneiden, Kopieren, Einfügen und Auswählen aller Elemente enthält. (If8c93, Ia2b49, I6f268)
API-Änderungen
LazyLayout-Prefetch-Anfragen können jetzt als dringend markiert werden. Das bedeutet, dass wir davon ausgehen, dass dieser Artikel im nächsten Frame benötigt wird, und das Frame-Budget ignorieren möchten, um mehr Arbeit im Voraus zu erledigen (Id513f).isPositionedByParentWithDirectManipulationwurde inintroducesFrameOfReferenceumbenannt. Beachten Sie, dass dies jetzt die umgekehrte Wirkung hat. 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 für die Elemente abfragen möchten, die einen Bezugsrahmen einführen, verwenden SiepositionInLocalFrameOfReference(...). OderpositionInLocalLookaheadFrameOfReferencevon einemLookaheadScope. (Ifc5f7)onClickedwurde inonClickinLinkInteractionListenerumbenannt (Iaa35c)- Aktions-Lambda für
getScrollViewportLengthgemäß Feedback des API-Teams ändern. (Ibc74a) - Die Delegierungs-APIs für das Schreiben mit Eingabestift wurden umbenannt. (Ica45f, b/327271923)
- Benennen Sie
TextInclusionStrategy.isInsideinisIncludedum. Machen Sie den Rückgabetyp vonParagraph/MultiParagraph#getRangeForRect()zu „nicht null“. (I51f26)
Fehlerkorrekturen
- In
SelectionContainerwurde allen Kontextmenüs für Text die Option „Alles auswählen“ hinzugefügt. (Ib750e, b/240143283) - Das Erstellen von Screenshots langer scrollender Container mit
reverseScrolling=truewurde korrigiert. (I7c59c) - Ein Problem wurde behoben, durch das sich die
currentValuevonAnchoredDraggableStatebeim Annähern an die Grenzen des Status geändert hat. (Iea30b, b/333846848)
Externe Beiträge
PrefetchExecutorwurde inPrefetchSchedulerumbenannt, um die Verantwortlichkeiten besser widerzuspiegeln. (Ib9154)- Unterstützung für das Prefetching von Elementen in verschachtelten
LazyLists-Elementen wurde hinzugefügt, z.B. einLazyColumn, das verschachtelteLazyRowsrendert. Diese Änderung soll die Anzahl der Frame-Drops beim Scrollen für dieseLazyLists-Elemente verringern. 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.foundation:foundation-*:1.7.0-alpha07 ist veröffentlicht. Version 1.7.0-alpha07 enthält diese Commits.
Neue Funktionen
- Es wurde ein
TextDefaults-Objekt hinzugefügt, das Methoden zum Erstellen einesLinkAnnotation-Objekts und zum Parsen von HTML-getaggten Strings enthält, in denenMaterialThemeauf die Links angewendet wird. (I98532, b/139312671) - Unterstützung für Animationen zum Ein- und Ausblenden von Elementen wurde in
LazyVerticalGridundLazyHorizontalGridhinzugefügt. Bisher war es möglich, den ModifiziererModifier.animateItemPlacement()hinzuzufügen, um Animationssequenzen für die Placement-Neuanordnung zu unterstützen. Wir haben diesen Modifikator eingestellt und einen neuen, nicht experimentellen Modifikator namensModifier.animateItem()eingeführt, mit dem Sie alle drei Animationstypen unterstützen können: Einblenden, Ausblenden und Neuanordnung. (Ib7d12, b/330510929) - Unterstützung für Animationen zum Ein- und Ausblenden von Elementen wurde in
LazyVerticalStaggeredGridundLazyHorizontalStaggeredGridhinzugefügt. Bisher war es möglich, den ModifiziererModifier.animateItemPlacement()hinzuzufügen, um Animationssequenzen für die Placement-Neuanordnung zu unterstützen. Wir haben diesen Modifikator eingestellt und einen neuen, nicht experimentellen Modifikator namensModifier.animateItem()eingeführt, mit dem Sie alle drei Animationstypen unterstützen können: Einblenden, Ausblenden und Neuanordnung. (I69bc9, b/330511290)
API-Änderungen
- Fügt
ContextMenuColorsund das zugehörigeLocalContextMenuThemeProvidableCompositionLocalhinzu. Die Farben des Kontextmenüs für Textfelder und auswählbaren Text können durch Bereitstellen der lokalen Komposition geändert werden. (Ifa154) - Textlinks haben jetzt zusätzlich zum normalen Stil, zum Stil für den Mauszeiger und zum Fokusstil auch einen Stil für den gedrückten Zustand. (I5f864, b/139312671)
- Einführung von
ViewConfiguration.HandwritingGestureLineMarginfür Handschriftgesten Unterstützung der Handschrift-Geste fürBasicTextField(Ie6e13, b/325660505) DelegatableNode.scrollIntoViewwurde für die Version 1.7 entfernt, da wir nicht genügend Zeit hatten, die restliche zugehörige API-Oberfläche zu stabilisieren. Diese Funktion wird in Version 1.8 wieder eingeführt (I6cf61, b/333421581, b/332900232).- Beim Abfragen von Layoutkoordinaten können Sie jetzt das Argument
excludeDirectManipulationOffsetverwenden, um den Versatz auszuschließen, der von übergeordneten Layouts festgelegt wurde, in 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) - Wir stellen
requestScrollToItemfürLazyStaggeredGridvor. Für jeden Measure-Pass kann der Client jetzt die Beibehaltung des Index basierend auf dem Schlüssel deaktivieren, indem errequestScrollToItemaufruft. Das bestehende Verhalten ändert sich dadurch nur, wennrequestScrollToItemaufgerufen wird. (I63983) requestScrollToPagein Pager vorstellen Für jeden Measure-Pass kann der Client jetzt die Beibehaltung des Index basierend auf dem Schlüssel deaktivieren, indem errequestScrollToPageaufruft. Das bestehende Verhalten ändert sich dadurch nur, wennrequestScrollToPageaufgerufen wird. (Ic4213)requestScrollToItemfürLazyGridseingeführt. Für jeden Measure-Pass kann der Client jetzt die Beibehaltung des Index basierend auf dem Schlüssel deaktivieren, indem errequestScrollToItemaufruft. Das bestehende Verhalten ändert sich dadurch nur, wennrequestScrollToItemaufgerufen wird. (I0a7a0)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 dieText-Composable (I34d4b, b/323346994).UrlAnnotationwurde verworfen. Verwenden Sie stattdessenLinkAnnotation.Url. Wenn Sie Material-Theming verwenden, erstellen Sie die Anmerkung mit demTextDefaults-Objekt, damit das Material-Theming angewendet wird (I8d180, b/323346545).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 Formatierungsobjekte 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. Durch die Übergabe vonfocusedStateund/oderhoveredStatekönnen Sie die visuelle Konfiguration für Links definieren, wenn sie fokussiert und/oder mit dem Mauszeiger darauf gezeigt wird. (I81ce4, b/139312671)- Das Feature-Flag für lange Screenshots wurde entfernt. (I28648, b/329128246)
LazyColumnrendert jetzt fixierte Kopfzeilen in langen Screenshots korrekt. (I8d239, b/329296635)- Die meisten der verbleibenden experimentellen APIs, die mit der neuen
BasicTextFieldeingeführt wurden, wurden stabilisiert. (I714e2) - Der Parameter
textObfuscationCharacterwurdeBasicSecureTextFieldhinzugefügt. Er steuert, welches Zeichen beim Verschleiern des Inhalts verwendet wird. (I0588b) - 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) - Einführung von
LocalBringIntoViewSpec, einem plattformabhängigen Fokus-Scrolling-Verhalten, das auf der Scrollable-Modifikator-Ebene angewendet wird. (I27aa5, b/317453911) TextFieldCharSequencewurde entfernt.TextFieldBuffer.originalValueswird durchTextFieldBuffer.originalTextundTextFieldBuffer.originalSelectionersetzt. (I2c7d6)ImeOptions.hintLocalesist nicht mehr nullable. Wenn Sie eine leere Liste mit Gebietsschemas übergeben möchten, verwenden SieLocaleList.Empty. (Ic5bc4)getOffsetFractionForPagewurde ingetOffsetDistanceInPagesumbenannt. (Ia05e2)
Fehlerkorrekturen
- Wenn
InputTransformationsmitnextzusammengeführt werden, werden ihreKeyboardOptionsjetzt mit der neuen MethodeKeyboardOptions.mergekorrekt nach einzelnen Optionen zusammengeführt. (Ie5304, b/295951492) - Bei der
targetValuevonAnchoredDraggableStatewerden Positionsgrenzwerte nicht mehr berücksichtigt. Sie hat jetzt einen impliziten Grenzwert von 50 %. Das bedeutet, dass sich dietargetValuein der Mitte zwischen zwei Ankern ändert. (I82c2c)
Externe Beiträge
- 2 Scroll-APIs umbenannt (I56a75)
Version 1.7.0-alpha06
3. April 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha06 ist veröffentlicht. Version 1.7.0-alpha06 enthält diese Commits.
Neue Funktionen
- Unterstützung für Animationen zum Ein- und Ausblenden von Elementen wurde in
LazyColumnundLazyRowhinzugefügt. Bisher war es möglich, den ModifiziererModifier.animateItemPlacement()hinzuzufügen, um Animationssequenzen für die Placement-Neuanordnung zu unterstützen. Wir haben diesen Modifikator eingestellt und einen neuen, nicht experimentellen Modifikator namensModifier.animateItem()eingeführt, mit dem Sie alle drei Animationstypen unterstützen können: Einblenden, Ausblenden und Neuanordnung. (I2d7f7, b/150812265) - Kunden von
LazyColumn/LazyRowkönnen jetzt die Beibehaltung eines Index basierend auf dem Schlüssel für den bevorstehenden Messdurchlauf deaktivieren, indem sie einen nicht ausgesetztenLazyListState.requestToScrollaufrufen. (I98036, b/209652366) - Die Methode
parseAsHtmlfür formatierte Strings wurde hinzugefügt. Damit lässt sich ein mit HTML-Tags markierter String inAnnotatedStringkonvertieren. Nicht alle Tags werden unterstützt. So können Sie beispielsweise noch keine Aufzählungslisten anzeigen. (I84d3d) - Experimentelle Unterstützung für lange Screenshots in Compose-Scrollcontainern mit der offiziellen Android API (
ScrollCaptureCallback) wurde implementiert. Diese Funktion ist experimentell und funktioniert möglicherweise nicht in allen Fällen korrekt. Aus diesem Grund ist sie derzeit standardmäßig deaktiviert. Um die automatische CMEK-Bereitstellung zu aktivieren, setzen Sie das FlagComposeFeatureFlag_LongScreenshotsEnabledauf „true“. Dieses Flag wird vor der Betaversion von 1.7 entfernt. (I2b055, b/329296471) - Einführung der neuen
GraphicsLayer-API, um mehr Flexibilität bei der Platzierung und dem Rendern vonGraphicsLayer-Instanzen zu bieten und intrinsische Rendering-Funktionen zu unterstützen, ohne dassGraphicsLayer-Modifikatorinstanzen in Composable-Implementierungen angegeben werden müssen.
API-Änderungen
- Alle
KeyboardOptions-Parameter haben jetzt standardmäßig einen nicht angegebenen Wert. Die MethodeKeyboardOptions.mergewurde hinzugefügt. KeyboardOptions.autoCorrectwurde inautoCorrectEnabledumbenannt und ist jetzt nullable. Ein Nullwert gibt an, dass kein Wert angegeben wurde. (Ia8ba0, b/295951492)outOfBoundsPageCountwurde inbeyondViewportPageCountumbenannt. (I129c6)fun ClipEntry.getMetadata()wird inval ClipEntry.clipMetadatageändert. (I50155)TextFieldState.valueAsFlow()wurde entfernt.snapshotFlow { state.text }odersnapshotFlow { TextFieldCharSequence(state.text, state.selection) }verwenden (I7d629)- Die
InputTransformation.transformInput-Parameter wurden neu organisiert.originalValue: TextFieldCharSequencewurde entfernt. Stattdessen enthältTextFieldBufferjetzt diesen Wert mit demselben Namen. Außerdem wurde der ParametervalueWithChanges: TextFieldBufferentfernt.TextFieldBufferist jetzt der Empfängerbereich für die Funktion. (I919cc) - Bei der
BasicTextField(state)-Variante undBasicSecureTextFieldwird jetztKeyboardActionHandleranstelle vonKeyboardActionsverwendet, um Aktionen zu verarbeiten, die über die Softwaretastatur ausgeführt werden. (I58dda) - APIs zur Delegation des Schreibens mit Eingabestift zur Unterstützung des Schreibens mit Eingabestift in „gefälschten“ Texteingabefeldern. (I9c09c, b/327271923)
KeyboardOptions.shouldShowKeyboardOnFocuswurde inshowKeyboardOnFocusumbenannt. (Ib4b7a, b/295951492)- Der Parameter
hintMediaTypeswurde ausModifier.contentReceiverentfernt. Entwickler wurden bereits aufgefordert, den Medientyp der empfangenenTransferableContentzu prüfen, da er möglicherweise nicht mit der konfiguriertenhintMediaTypeskompatibel ist. (I82f99) - Die Parameter von
BasicSecureTextFieldwurden neu angeordnet. Die ParameterkeyboardTypeundimeActionwurden zugunsten der vollständigenKeyboardOptions-Klasse entfernt. Die Standardeinstellungen fürBasicSecureTextFieldwurden beibehalten. Außerdem wurde der ParameterscrollStateentfernt. (Ibbfa9) - Der Typ von
TextFieldState.textwurde vonTextFieldCharSequenceinCharSequencegeändert. Daher wurdenTextFieldState.selection: TextRangeundTextFieldState.composition: TextRange?hinzugefügt, um die aktuellen Auswahl- und Kompositionswerte direkt aus dem Statusobjekt zu lesen. TextFieldState.forEachTextValuewurde entfernt. (Idb2a2)- Die Funktionen
ClipboardManager.getClipMetadataundClipboardManager.hasClipwurden entfernt. Verwenden SieclipEntry.getMetadata(), um die Metadaten des aktuellen Clip-Eintrags zu lesen. Prüfen Sie auch das Ergebnis vonClipboardManager.getClip, um festzustellen, ob es null ist oder nicht. So können Sie herausfinden, ob die Zwischenablage einen aktuellen Clip enthält. (I50498) ClipboardManager.setClipakzeptiert jetzt „null“, um die Zwischenablage zu leeren. (I7d2e9)ReceiveContentListenerwird in eine Funktionsschnittstelle konvertiert. DieModifier.receiveContent-Überladung, die eine Lambda-Funktion akzeptiert, wurde ebenfalls entfernt, daReceiveContentListenerjetzt eine Funktionsschnittstelle ist.Modifier.receiveContentwird inModifier.contentReceiverumbenannt. (I1e6af)TransferableContent.consumeEachwurde inTransferableContent.consumeumbenannt. (I1e462)rememberTextFieldStateist jetzt eine stabile API. (I37999)
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem die
BasicTextField(state)-Variante nicht mit CJK-Tastaturen(kompositionsbasiert) funktionierte. (I54425) - Es wurde ein Fehler behoben, durch den in bestimmten Szenarien mit der Wiederverwendung von
Modifier.NodeinModifier.dragAndDropTarget()auf veraltete Daten verwiesen werden konnte. (I05bb1) - Eine kürzlich vorgenommene Vertragsänderung wurde rückgängig gemacht. Bei dieser Änderung wurden
AnchoredDraggableState#anchoredDrag-Aufrufe am Ende einesanchoredDrag-Vorgangs beendet. (I95715)
Version 1.7.0-alpha05
20. März 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha05 ist veröffentlicht. Version 1.7.0-alpha05 enthält diese Commits.
API-Änderungen
- Die experimentelle lokale Komposition
LocalTextLinkStylezum Formatieren von Hyperlinks wurde entfernt. (Iebfa7) - Die experimentelle Überschreibung von
BasicTextmit dem ArgumentonLinkClickedwurde entfernt. Eine Ersatz-API für die Unterstützung von Hyperlinks wird in Zukunft folgen. (I107d5) - Methoden und Attribute für Codepoints unter
TextFieldStateundTextFieldBufferwurden entfernt. Außerdem wurden dieinChars-Suffixe aus den verbleibenden APIs für Auswahl und Komposition entfernt. (Ief7ce) - Die
currentValuevonAnchoredDraggablewird jetzt aktualisiert, wenn ein Ankerpunkt passiert wird. Verwenden SiesettledValue, um die vorherigecurrentValue-Semantik zu erhalten. Die Aktualisierung erfolgt nur, wenn sich das Gerät an einem Anker befindet. Der Fortschritt wird jetzt als Funktion (mit Start- und Endpunkt) und nicht mehr als Attribut dargestellt. (Ibe6e8, b/318707189, b/298271489, b/294991954) BasicTextField(state),TextFieldState,InputTransformation,OutputTransformation,TextFieldLineLimits,TextFieldDecoratorsind jetzt stabil. (I9582b)InterceptPlatformTextInputwurde eingeführt, um das Schreiben von IME-Tests auf niedriger Ebene und anderen IME-Anwendungsfällen auf niedriger Ebene zu erleichtern.PlatformTextInputTestOverridewurde eingestellt. (I862ed, b/322680547)restrictedConstraints()in zwei Methoden aufgeteilt:fitPrioritizingWidth()undfitPrioritizingHeight()(I6d7fd)
Externe Beiträge
- Es wurden zwei neue APIs
isLastScrollForward/isLastScrollBackwardhinzugefügt, um die Scrollrichtung für den letzten Scrollvorgang zu prüfen. Wenn noch kein Scrollvorgang stattgefunden hat, wird „false“ zurückgegeben. (I63a0e)
Version 1.7.0-alpha04
6. März 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha04 ist veröffentlicht. Version 1.7.0-alpha04 enthält diese Commits.
API-Änderungen
- Unterstützung der Funktion zum Schreiben mit Eingabestift auf Geräten nach Android U (I002e4)
hintLocaleswurde zuKeyboardOptionshinzugefügt, damitTextFieldsIMEs mit bestimmten Gebietsschemas darauf hinweisen kann, eine bevorzugte Sprache voreinzustellen. (Id18c2)- Die experimentellen Überladungen
BasicTextField2undBasicSecureTextField, die die Parametervalue: StringundonValueChange: () -> Stringverwendet haben, wurden entfernt. (I568b4) - Fügen Sie
InputTransformationeine optionaleapplySemantics-Funktion hinzu, um die Semantik desBasicTextField2zu beeinflussen, auf das sie angewendet wird. (I74a2f, b/170648072) - In diesem CL 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) BasicTextField2wird inBasicTextFieldumbenannt. (Ie5713)FocusRequester.createRefsist jetzt stabil (I4d92c, b/261436820)DelegatableNode.scrollIntoView()wurde eingeführt, damit ÄnderungsknotenscrollIntoView-Anfragen direkt stellen können. (I2b3b7, b/299939840)DelegatableNode.requireView()wurde eingeführt, damit Modifikator-Knoten den aktuellen Android-Viewabrufen können, ohne einen Kompositions-Local zu lesen. (I40768)- Wir führen Kontextinformationen zum Layout in den Bereichen „Kontextbezogener Ablauf – Zeile“ und „Kontextbezogener Ablauf – Spalte“ ein. Dazu gehören Zeilenindex, Position und Einschränkungen für maximale Breite und Höhe, damit die Position beibehalten wird. Elemente, die die maximale Breite/Höhe überschreiten, können je nach Überlaufeinstellungen in die nächste Zeile umgebrochen oder ausgelassen werden. (Id13f8, b/292114798)
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem das Umschalten der Attribute
enabledoderreadOnlyvonTextFieldunter bestimmten Bedingungen zu einem Absturz führte. (Iae17b)
Version 1.7.0-alpha03
21. Februar 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha03 ist veröffentlicht. Version 1.7.0-alpha03 enthält diese Commits.
API-Änderungen
DelegatableNode.requireLayoutCoordinates()wurde eingeführt, um die aktuelleLayoutCoordinateseinerModifier.Nodeabzurufen, ohneonPlacedzu überschreiben und die Koordinaten selbst in einer Property zu speichern. (Ia8657)DelegatableNode.currentLayoutCoordinateswurde eingeführt, um die aktuelleLayoutCoordinateseinerModifier.Nodeabzurufen, ohneonPlacedzu überschreiben und die Koordinaten selbst in einer Property zu speichern. (Iaebaa)- Leistungsoptimierungen in
DraggableAnchors, die vonAnchoredDraggableverwendet werden. (I89cff) BasicTextField2und zugehörige APIs im Paketandroidx.compose.foundation.text2werden nachandroidx.compose.foundation.textverschoben. (I9f635)- Für
BasicTextField2wird keinCodepointTransformation-Parameter mehr akzeptiert. Verwenden SieBasicSecureTextFieldoderOutputTransformation. (Id34ff) - Es wurde eine Methode hinzugefügt, mit der nur die Anmerkungen von zwei
AnnotatedStringsverglichen werden können. (I32659) - Jetzt neu:
ContextualFlowRowund optimierteFlowRow-/Column-Funktionen mitMaxLinesundOverflow. Wir freuen uns, Verbesserungen an den experimentellen FunktionenFlowRowundFlowColumnankündigen zu können. Sie bieten jetztmaxLinesund Unterstützung für Überlauf. Außerdem stellen wir die neuen FunktionenContextualFlowRowundContextualFlowColumnvor. Dieses Update soll leistungsoptimale Komponenten bereitstellen.ContextualFlow*eignet sich perfekt für eine große Anzahl von Elementen, die eine kleinemaxLines-Konfiguration und dynamische Schaltflächen vom Typ „+N Weitere“ verwenden.FlowRowundFlowColumneignen sich perfekt für eine kleine Anzahl von Elementen, weniger als 100 Elemente. 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)
Fehlerkorrekturen
- Bei der Cursoranimation werden keine Frames mehr zwischen den Status „Ein“ und „Aus“ angefordert. (Ia2253)
- Die eingestellten Kopierkonstruktoren von
KeyboardOptionskopieren jetzt alle Attribute korrekt. (If12de)
Version 1.7.0-alpha02
7. Februar 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha02 ist veröffentlicht. Version 1.7.0-alpha02 enthält diese Commits.
API-Änderungen
HorizontalPager,VerticalPagerundPagerStatewerden als stabil eingestuft. (I67660, b/316966909)- Die Kompositionslokale
LocalTextLinkStylewurde hinzugefügt, mit der der Stil der Links im Text in der gesamten App geändert werden kann. Wenn Sie in der App ein eigenes Theme verwenden, sollten Sie diese Kompositionslokale entsprechend Ihrem Theme festlegen. Wenn Sie das Material-Design verwenden, wird die Farbe des Links standardmäßig auf die primäre Farbe von Material festgelegt. (I7eb10) - Der Modifikator
receiveContentwurde eingeführt, mit dem Entwickler Rich Content in Jetpack Compose empfangen können. receiveContentwird inBasicTextField2integriert, um Rich Content zu akzeptieren, der über die Softwaretastatur oder durch Einfügen aus der Zwischenablage bereitgestellt wird. (I81b72)- Bei dieser Änderung ersetzen wir
SnapFlingBehaviordurchTargetedFlingBehaviorim Pager, um andere Anwendungsfälle zu ermöglichen und mehr Flexibilität zu bieten. (I762ea) - Mit dieser Änderung werden die Snapping APIs stabil. Außerdem bereinigen wir einen Teil des Testcodes und fügen weitere Beispiele für das Andocken hinzu. (Id8da9)
- Wir stellen
TargetedFlingBehaviorvor, einFlingBehavior, mit dem Informationen zum Status der laufenden Animation und zum Ziel-Scroll-Offset weitergegeben werden können. (I6a207)
Fehlerkorrekturen
BasicTextField2sorgt jetzt dafür, dass der Cursor beim Tippen im Blickfeld bleibt, wenn er aus dem Blickfeld gescrollt wurde oder sich aufgrund der Eingabe aus dem Blickfeld bewegen würde. (Ieb856, b/237190748)
Externe Beiträge
- Fügt eine experimentelle API zum Konfigurieren des Prefetch-Verhaltens von LazyLists hinzu. (I022a4)
Version 1.7.0-alpha01
24. Januar 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha01 ist veröffentlicht. Version 1.7.0-alpha01 enthält diese Commits.
Neue Funktionen
- Es wurde ein neues
Indication APIhinzugefügt:IndicationNodeFactory. Dies führt zu leistungsfähigerenIndication-Implementierungen im Vergleich zur vorherigen (jetzt eingestellten)rememberUpdatedInstance-API. Informationen zur Migration finden Sie unter developer.android.com. clickable / combinedClickable / selectable / toggleableakzeptiert jetzt einen Nullable-ParameterMutableInteractionSource. Wenn „null“ und der bereitgestellteIndicationeinIndicationNodeFactoryist, kann derIndicationnur bei Bedarf verzögert erstellt werden, was die Leistung verbessert. Wenn SieMutableInteractionSourcenicht hochladen und verwenden, wird empfohlen, „null“ zu übergeben.
API-Änderungen
- Einführung von
DecayAnimationinAnchoredDraggable: Durch diese Änderung wirdAnchoredDraggableeindecayAnimationSpec-Parameter hinzugefügt, mit dem beim Festlegen auf einen der Anker eine Decay-Animation verwendet werden kann. Im Rahmen der Änderung wird auch die vorhandeneanimationSpecinsnapAnimationSpecumbenannt, um den Anwendungsfall jeder Spezifikation besser nachvollziehen zu können. BasicTextField2ist für die experimentelle Nutzung verfügbar. Die Funktion sollte in etwa mitBasicTextFieldvergleichbar sein und das Verhalten sollte produktionsreif sein. Die API befindet sich jedoch noch in der Testphase. Vor der Stabilisierung wird sie inBasicTextFieldumbenannt und in dasselbe Paket verschoben.- Der erste Entwurf der
OutputTransformationAPI fürBasicTextField2wurde eingeführt. Diese API ersetzt die meisten Anwendungsfälle vonVisualTransformationin der altenBasicTextField. Die API ist jedoch noch nicht vollständig und einige Dinge funktionieren möglicherweise nicht richtig. Wir freuen uns über Feedback zur API-Nutzerfreundlichkeit für Ihre Anwendungsfälle. (aosp/2708848) - Das Element
LinkAnnotationwurde eingeführt, mit dem Links und anklickbare Elemente in Text eingefügt werden können. Die Links-Funktion ist noch nicht vollständig und es werden weitere API-Änderungen folgen. - Der Modifikator
receiveContentwurde eingeführt, mit dem Entwickler Rich Content in Jetpack Compose empfangen können. receiveContentist inBasicTextField2integriert, um Rich Content zu akzeptieren, der über die Softwaretastatur oder durch Einfügen aus der Zwischenablage bereitgestellt wird.- Mit
KeyboardOptions.shouldShowKeyboardOnFocuskönnen Sie das Standardverhalten vonBasicTextFielddeaktivieren, bei dem bei Fokussierung eine Softwaretastatur angefordert wird. TextInputServiceundLocalTextInputServicewurden eingestellt. Verwenden Sie stattdessenPlatformTextInputModifierNode, um die IME-APIs der Plattform direkt einzubinden. (aosp/2862698)Indication#rememberUpdatedInstancewurde eingestellt. Sie führt zu einem hohen unvermeidlichen Leistungsverlust und verhindert andere Optimierungen. Verwenden Sie stattdessen die neueIndicationNodeFactoryAPI.
Fehlerkorrekturen
BasicTextFieldführt jetzt eine Vorabvalidierung einer kleinen Auswahl von Offset-Zuordnungen durch, wennVisualTransformationübergeben wird. So lassen sich häufige Programmierfehler erkennen, die in späteren Mess- oder Ziehungsdurchläufen zu nicht behebaren Ausnahmen führen. Wenn während der Komposition eine Ausnahme ausgelöst wird, ist es wahrscheinlicher, dass Entwickler diese Fehler während der Entwicklung sehen und so Produktionsabstürze vermieden werden. (I0fd42)VisualTransformationlöst keinen Fehler aus, wenn Sie einen ungültigen Index für einen ungültigen Index zurückgeben (b/316401857 ).
Version 1.6
Version 1.6.8
12. Juni 2024
androidx.compose.foundation:foundation-*:1.6.8 ist veröffentlicht. Version 1.6.8 enthält diese Commits.
Version 1.6.7
1. Mai 2024
androidx.compose.foundation:foundation-*:1.6.7 ist veröffentlicht. Version 1.6.7 enthält diese Commits.
Version 1.6.6
17. April 2024
androidx.compose.foundation:foundation-*:1.6.6 ist veröffentlicht. Version 1.6.6 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem das Umschalten der Attribute
enabledoderreadOnlyvonTextFieldunter bestimmten Bedingungen zu einem Absturz führte. (Iae17b)
Version 1.6.5
3. April 2024
androidx.compose.foundation:foundation-*:1.6.5 ist veröffentlicht. Version 1.6.5 enthält diese Commits.
Fehlerkorrekturen
- Fügt Debugging-Protokolle für schwer reproduzierbare Fehler in Zeile/Spalte hinzu (b/300280216 und b/297974033)
Version 1.6.4
20. März 2024
androidx.compose.foundation:foundation-*:1.6.4 ist veröffentlicht. Version 1.6.4 enthält diese Commits.
Fehlerkorrekturen
- Die Auswahl durch langes Drücken und Ziehen, bei der im ersten Frame des Ziehens die Layoutgrenzen des Texts überschritten werden, führt nicht mehr zum Absturz. (Icdf90, b/325307463)
Version 1.6.3
6. März 2024
androidx.compose.foundation:foundation-*:1.6.3 ist veröffentlicht. Version 1.6.3 enthält diese Commits.
Version 1.6.2
21. Februar 2024
androidx.compose.foundation:foundation-*:1.6.2 ist veröffentlicht. Version 1.6.2 enthält diese Commits.
Fehlerkorrekturen
- Beheben, dass
AnimateContentSizenicht richtig zurückgesetzt wird (I07051) - Problem behoben, bei dem
intrinsicHeightText unter bestimmten Umständen zu oft im Cache gespeichert wurde. (3cd398, b/217910352)
Version 1.6.1
7. Februar 2024
androidx.compose.foundation:foundation-*:1.6.1 ist veröffentlicht. Version 1.6.1 enthält diese Commits.
Fehlerkorrekturen
- Das Problem mit der Messung von gestaffelten Rastern beim Scrollen über das Limit hinaus wurde behoben. (bffc39)
- Prüfung für Layout mit großen Abmessungen hinzugefügt. (e74af5)
- Die Platzierung von Elementen mit der Größe 0 am Anfang des gestaffelten Rasters wird korrigiert. (785f94)
- Rufen Sie den onRelease-Callback in derselben Reihenfolge wie onForgotten auf. (31ce3b)
Version 1.6.0
24. Januar 2024
androidx.compose.foundation:foundation-*:1.6.0 ist veröffentlicht. Version 1.6.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.5.0
- Mit dem neuen Modifier
Modifier.anchoredDraggablekönnen Sie zwischen vordefinierten Ankern ziehen und animieren. Dieser Modifikator sollModifier.swipeableersetzen. Informationen zur Verwendung und Migration vonModifier.swipeablefinden Sie in der Migrationsanleitung. - Es wurde eine Drag-and-drop-Funktion zwischen Apps und Komponenten hinzugefügt.
DragAndDropTarget,Modifier.dragAndDropSourceund andere APIs für den Einstieg Modifier.draggable2Dist der neue Modifier, der das Ziehen in 2D erleichtert. BeispielAndroidExternalSurfaceundAndroidEmbeddedExternalSurfacewurden hinzugefügt, um das Hinzufügen von oberflächenbezogenen Komponenten in Compose zu vereinfachen.- Verschiedene API-Änderungen und Verbesserungen in
PagerundsnapFlingBehaviour - Verschiedene APIs für Fokus, Text und Insets wurden in stabile APIs umgewandelt.
Version 1.6.0-rc01
10. Januar 2024
androidx.compose.foundation:foundation-*:1.6.0-rc01 ist veröffentlicht. Version 1.6.0-rc01 enthält diese Commits.
API-Änderungen
- Der Erweiterungskonstruktor
DragAndDropTarget()wurde entfernt. Erstellen Sie mitobject: DragAndDropTarget {}eine neue Instanz. (I32318)
Version 1.6.0-beta03
13. Dezember 2023
androidx.compose.foundation:foundation-*:1.6.0-beta03 ist veröffentlicht. Version 1.6.0-beta03 enthält diese Commits.
Fehlerkorrekturen
- Ein Absturz wurde behoben, der bei sehr großen Texten mit unendlichen Einschränkungen auftrat. (I1a7df, b/312294386)
PlatformImeOptionsist jetzt eine konkrete Klasse anstelle einer Schnittstelle. (If40a4)
Version 1.6.0-beta02
29. November 2023
androidx.compose.foundation:foundation-*:1.6.0-beta02 ist veröffentlicht. Version 1.6.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Problem behoben:
canScrollwird nach dem Scrollen nur mit neuem Layout nicht aktualisiert. (I60a86) - Korrektur für
Modifier.animateItemPlacement()undLookaheadScopenach kurzen Scrollvorgängen. (I3a2b7)
Version 1.6.0-beta01
15. November 2023
androidx.compose.foundation:foundation-*: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. Eine zum Empfangen von Übertragungen und eine zum Übertragen von Daten (I69481) maximumFlingVelocitywird jetzt als Float dargestellt. Die Dokumentation wurde aktualisiert, um die EinheitmaximumFlingVelocityklarer zu beschreiben. (I8adc7)onDragAndDropStartin derDragAndDropModifierNode-Factory wurde inacceptDragAndDropTransferumbenannt.acceptsDragAndDropTransferwurde demdragAndDropTargetModifierhinzugefügt, um es per Drag-and-drop zu übernehmen. Diese Lambda-Funktion gibt eine gültigeDragAndDropTargetzurück, wenn Sie an einer Drag-and-drop-Sitzung interessiert sind. Andere Lambdas für die Verarbeitung von Drag-Vorgängen wurden dadurch ersetzt.Eine
DragAndDropTarget-Factory-Funktion wurde hinzugefügt, um Daten aus Drag-and-drop-Sitzungen zu empfangen (Iebf3a).Durch die Bereitstellung von
startDragImmediatelyinAnchoredDraggablekönnen Ziehgesten erkannt werden. Es ist sinnvoll, diese Eigenschaft festzulegen, wenn das Widget zu einem Zielanker animiert wird. Beispiel (Ie6d13, b/285139987)Die Foundation Tooltip APIs sind jetzt
@ExperimentalFoundationApi(I30b0b).DragAndDropInfowurde als Typ entfernt.DragAndDropModifierNode.dragakzeptiert jetzt Parameter fürtransferData, die Dekorationsgröße und die Lambda-Funktion für das Ziehen von DekorationenDrawScope.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)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)Der Parameter
clippingEnabledvonModifier.magnifierwurde inclipumbenannt.Der Parameter
magnifierCentervonModifier.magnifierwird auf „nullable“ gesetzt, wobei das Standardverhalten beibehalten wird. (I6aa66)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)
Fehlerkorrekturen
- Implementieren Sie „equals“ und „hashcode“ für
PageSize.Fixed. (Ie3ede, b/300134276) - Es wurde ein Fehler behoben, der dazu führte, dass das
BasicText-Layout nicht verkleinert wurde, wenn sichminWidthänderte undminWidthkleiner als die ursprünglichen MessbeschränkungenmaxWidth(Idb19c) war. - Renderer-Unterstützung für Sweep Gradient in
ArcLinehinzugefügt. (I4d5bb) - 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)
Version 1.6.0-alpha08
18. Oktober 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha08 ist veröffentlicht. Version 1.6.0-alpha08 enthält diese Commits.
Neue Funktionen
Modifier.draggable2Dist der neue Modifier, der das Ziehen in 2D erleichtert. Siehe Beispiel (Id95f5, b/214412658)
API-Änderungen
- Bei
Modifier.dragAndDrawSourcewurde dasonDrawDragShadow-Lambda indrawDragDecorationumbenannt und beiDragAndDropInfowurde der Größenparameter indragDecorationSizeumbenannt. (Id0e30, b/303904810) - Der Parameter
decorationBoxvonBasicTextField2wurde indecoratorumbenannt. Der Typ wird in ein entsprechendes Fun-InterfaceTextFieldDecoratorgeändert. (I23c1c)
Fehlerkorrekturen
- Verbesserte Dokumentation zu
BasicTextFieldin Bezug auf dieonValueChange-Anforderungen. (I90fc9, b/160257648)
Version 1.6.0-alpha07
4. Oktober 2023
androidx.compose.foundation:foundation-*: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)GraphicsSurfacewurde inAndroidExternalSurfaceumbenannt (I11680)- 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) - Die Sammlungen
ColorListundColorSetwurden hinzugefügt, um Zuweisungen zu vermeiden. (I744bd) - Mit dieser Änderung wird
shortSnapVelocityThresholdentfernt, das zu einem Implementierungsdetail der Implementierungen vonSnapLayoutInfoProvidergeworden ist. (I65f6d) - Es wurde der
dragAndDropSource-Modifikator zum Starten von Drag-and-drop-Vorgängen und derdragAndDropTarget-Modifikator zum Empfangen von Drag-and-drop-Vorgängen hinzugefügt (Ib7828, b/286038936). - Dokumentation und Positionierungsmethode für
SnapPositionInLayoutaktualisieren. Fügen Sie der Positionsmethode inSnapPositionInLayoutInhalts-Paddings hinzu. (Id7938, b/300116110) UndoStatewurde zuTextFieldStatehinzugefügt. Damit können Nutzer Änderungen rückgängig machen oder wiederholen. (Icc024)
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das
basicMarqueenach einer Geschwindigkeitsänderung nicht animiert wurde. (Id2e77, b/297974036)
Version 1.6.0-alpha06
20. September 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha06 ist veröffentlicht. Version 1.6.0-alpha06 enthält diese Commits.
Neue Funktionen
- Neue zusammensetzbare Wrapper für
SurfaceView,TextureView: GraphicsSurface()undEmbeddedGraphicsSurface(). Es handelt sich um eine experimentelle API, die Änderungen und Modifikationen unterliegt. (I9ddb2) Modifier.magnifier()ist jetzt eine stabile API. Dazu gehört auch das Entfernen vonMagnifierStylezugunsten von Inline-Parametern im Modifikator selbst. (I83bec, b/298381260, b/262367109, b/261438887)
API-Änderungen
- Die in
ScrollScopeeingeführtenupdateCurrentPage- undupdateTargetPage-Attribute sind die letzten Elemente, die für die Anpassung des animierten Scrollens durchPagerState.scrollerforderlich sind. (I9cad5, b/267744105, b/243786897) - Entfernen Sie die Dichte aus
SnapFlingBehavior. Alle Implementierungen vonSnapLayoutInfoProviderbieten bereits eine Möglichkeit, auf die Dichte zuzugreifen. Der Empfängerbereich könnte entfernt werden, was zu einer weniger komplexen Implementierung vonSnapFlingBehaviorundSnapLayoutInfoProvidersführen würde. (I153c3) - Weitere Modifikatoren als stabil markiert (I56af1, b/298046462)
SnapStepSizewurde ausSnapLayoutInfoProviderentfernt. Die Berechnung sollte anhand der Layoutinformationen erfolgen und über die Annäherungs- oder Einrast-Offsets bereitgestellt werden. (If320c)
Geändertes Verhalten
- In Compose wird jetzt eine nicht lineare Schriftartskalierung verwendet, 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)
Fehlerkorrekturen
- Entfernen Sie die Verwendung von
rememberSaveablefür Kurzinfos. (Icc131, b/299500338)
Version 1.6.0-alpha05
6. September 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha05 ist veröffentlicht. Version 1.6.0-alpha05 enthält diese Commits.
API-Änderungen
- Fügen Sie Überladungen für
BasicSecureTextFieldhinzu, die einen unveränderlichen Wert und einen Callback zum Ändern dieses Werts akzeptieren, genau wie die aktuelleBasicTextField-API. (Ia4882) - Fügen Sie
Modifier.preferKeepClear()hinzu, um die Komponierbarkeit zu markieren, da ab API 33 keine schwebenden Fenster verwendet werden. (Ib51d5, b/297260115) - Die Fling-Geschwindigkeiten in View-Komponenten wie
ScrollViewundRecyclerViewsind aufViewConfiguration.ScaledMaximumFlingVelocitybegrenzt. Compose enthält jetzt eine eigene Version vonmaximumFlingVelocity, die fürDraggablegilt. (Ibf974) - Veraltete
Pager- undPagerState-Überladungen wurden entfernt. (Iea07e) BasicTooltipBoxwurde zucompose.foundationhinzugefügt undPlainTooltipBoxundRichTooltipBoxwurden aktualisiert, umTooltipBoxmit den neuenPlainTooltip- undRichTooltip-Composables zu verwenden. (I79e1d)
Version 1.6.0-alpha04
23. August 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha04 ist veröffentlicht. Version 1.6.0-alpha04 enthält diese Commits.
API-Änderungen
- Die
ReusableComposition-Schnittstelle zum Verwalten des Lebenszyklus und der Wiederverwendung von Unterkompositionen wurde hinzugefügt. (I812d1, b/252846775) Modifier.focusGroupwurde zu stabilen APIs hochgestuft. (I7ffa3)- Fügen Sie Überladungen für
BasicTextField2hinzu, die einen unveränderlichen Wert und einen Callback zum Ändern dieses Werts akzeptieren, genau wie die aktuelleBasicTextField-API. (I3f2b8) GridItemSpan::currentLineSpanist jetzt eine stabile API. (Icc29c)- Die Canvas-API, die
contentDescriptionakzeptiert, ist jetzt stabil. (Ib3d29) viewportSizeinScrollStateeingeführt, um dieviewPort-Größe der Komponente zu ermitteln, dieScrollStateverwendet, nachdem die Messung erfolgt ist. (I8b85a, b/283102682)- Ein Problem wurde behoben, bei dem das Prefetching in Pager nicht dem Verhalten in Views entsprach. (I93352, b/289088847)
Modifier.consumeWindowInsets(PaddingValues)ist jetzt stabil.- Die
Deprecated Modifier.consumedWindowInsetsAPI wurde entfernt. Verwenden Sie stattdessenModifier.consumeWindowInsets. (Id72bb)
- Die
Version 1.6.0-alpha03
9. August 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha03 ist veröffentlicht. Version 1.6.0-alpha03 enthält diese Commits.
API-Änderungen
- Überladung von
LazyLayouthinzugefügt. Es wird jetzt eine Lambda-Funktion vonLazyLayoutItemProviderakzeptiert, nicht mehr ein einfaches Objekt wie zuvor. Die vorherige Überladung ist veraltet. (I42a5a) - Unterstützung für die Konfiguration von
privateImeOptionshinzugefügt (Idb772)
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.6.0-alpha02
26. Juli 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha02 ist veröffentlicht. Version 1.6.0-alpha02 enthält diese Commits.
API-Änderungen
PagerLayoutInfomit Informationen eingeführt, die nach einem Measure-Pass inPagererhoben wurden. Außerdem wurdePageInfoeingeführt, die Informationen zu einer einzelnen gemessenen Seite inPager. (Iad003, b/283098900)- Zusätzliche Anmerkungen zum Angeben zulässiger Eingaben für Composables (I51109)
SemanticsNodeInteraction.requestFocuswurde als bequemere und besser auffindbare Möglichkeit zum Anfordern des Fokus in Tests hinzugefügt. (Ie8722)- Die
PlatformTextInput*API wurde komplett neu gestaltet. (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardControllerundLocalSoftwareKeyboardControllersind nicht mehr experimentell.LocalSoftwareKeyboardControllerist jetzt auch eine richtigeCompositionLocal. (I4c364)Modifier.transformablebietet jetzt den Schwenk-Deltawert im ParametercanPan, um die Richtung des Schwenks zu bestimmen und ihn zuzulassen oder zu unterbinden. (I692aa, b/266829800)- Aktualisiert den Modifikator
consumeWindowInsets, um die SuperklasseAbstractComposeViewzu erweitern (Iacd74, b/269479941)
Version 1.6.0-alpha01
21. Juni 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha01 ist veröffentlicht. Version 1.6.0-alpha01 enthält diese Commits.
Neue Funktionen
- Eine neue
AnchoredDraggableAPI wurde in Foundation eingeführt. Damit lassen sich Komponenten erstellen, die zwischen diskreten Status gezogen werden können, z. B. modale Bottom Sheets. Diese API ersetzt dieSwipeableAPI von Material. (I4a2ed)
API-Änderungen
- Unterstützung von
InputConnection#requestCursorUpdates(I0c69b) scrollAnimationSpecwurde eingeführt, um benutzerdefinierte Animationsspezifikationen zu ermöglichen.BringIntoViewCalculatorwurde aufBringIntoViewScrolleraktualisiert. (Idb741)- 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) - Semantik-Eigenschaften und ‑Aktionen zur Unterstützung der Textübersetzung hinzugefügt. (I4a6bc)
- Es wurde eine
BringIntoViewCalculatorAPI eingeführt, mit der angepasst werden kann, wie Komponenten wieScrollableaufbringIntoView-Anfragen reagieren. Die Überladung von „scrollable“ wurde geändert, sodass optional eine Instanz vonBringIntoViewCalculatorakzeptiert wird. (Iaf5af)
Fehlerkorrekturen
- Es wurde eine Lint-Prüfung hinzugefügt, die warnt, wenn Sie eine
MutableInteractionSourcein der Komposition erstellen, ohne sie sich zu merken. Das ist ähnlich wie bei den Lint-Prüfungen für das Erstellen von veränderlichem Status /Animatable. (I5daae) - 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)
- Die
FocusTargetModifierNode-Schnittstelle wurde hinzugefügt, mit der ein benutzerdefiniertesFocusTargeterstellt werden kann. (I9790e)
Version 1.5
Version 1.5.4
18. Oktober 2023
androidx.compose.foundation:foundation-*:1.5.4 ist veröffentlicht. Version 1.5.4 enthält diese Commits.
Version 1.5.3
4. Oktober 2023
androidx.compose.foundation:foundation-*:1.5.3 ist veröffentlicht. In dieser Version gab es keine Änderungen.
Version 1.5.2
27. September 2023
androidx.compose.foundation:foundation-*:1.5.2 ist veröffentlicht. Version 1.5.2 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler im Text wurde behoben, der unter bestimmten Umständen zu Abstürzen führte, wenn die Semantik ungültig wurde.
Version 1.5.1
6. September 2023
androidx.compose.foundation:foundation-*: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.foundation:foundation-*:1.5.0 ist veröffentlicht. Version 1.5.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.4.0
- Viele grundlegende Modifikatoren, darunter
Modifier.clickable,Modifier.draggable,Modifier.scrollableund Layoutmodifikatoren, wurden zurModifier.NodeAPI migriert, wodurch der Aufwand für die erste Komposition reduziert wird. - Verbesserungen bei der Stabilität von Pager. Viele Fehler wurden behoben.
pageCount-Parameter befinden sich jetzt inPagerStatestatt im Pager selbst.
Version 1.5.0-rc01
26. Juli 2023
androidx.compose.foundation:foundation-*:1.5.0-rc01 ist veröffentlicht. Version 1.5.0-rc01 enthält diese Commits.
Fehlerkorrekturen
Es ist eine optionale Prüfung verfügbar, mit der empfohlen wird,
mutableStateOf()-Aufrufe zu den entsprechenden spezialisierten Typen für Primitiven zu migrieren. Die Lint-ID lautetAutoboxingStateCreation. Bisher war diese Prüfung standardmäßig für alle Projekte aktiviert. Wenn Sie diese Warnung im Editor von Android Studio und in den Lint-Ausgaben Ihres Projekts sehen möchten, ändern Sie den Schweregrad von „Informational“ zu „Warning“ (oder höher), indem Siewarning "AutoboxingStateCreation"in derbuild.gradle- oderbuild.gradle.kts-Konfiguration Ihres Moduls deklarieren, wie unten gezeigt (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
Version 1.5.0-beta03
28. Juni 2023
androidx.compose.foundation:foundation-*:1.5.0-beta03 ist veröffentlicht. Version 1.5.0-beta03 enthält diese Commits.
Version 1.5.0-beta02
7. Juni 2023
androidx.compose.foundation:foundation-*:1.5.0-beta02 ist veröffentlicht. Version 1.5.0-beta02 enthält diese Commits.
Version 1.5.0-beta01
24. Mai 2023
androidx.compose.foundation:foundation-*:1.5.0-beta01 ist veröffentlicht. Version 1.5.0-beta01 enthält diese Commits.
API-Änderungen
- Implementiere
PlatformDataProvider, um Herzfrequenz und tägliche Schritte bereitzustellen. DieSensorGateway-Schnittstelle wird aus der öffentlichen API entfernt. (I55b84)
Fehlerkorrekturen
- Zuweisungen bei Messungen von Lazy Lists/Grids usw. reduzieren (Iaf9e2)
- Weniger Zuweisungen beim Anwenden von Snapshots (I65c09)
- Zuweisungen aus Federanimationen entfernt (Ie9431)
- Zuweisung aus
TextLayout(I0fd11) entfernt - Mehrere Zuweisungen beim Tracking der Zeigergeschwindigkeit entfernt (I26bae)
Version 1.5.0-alpha04
10. Mai 2023
androidx.compose.foundation:foundation:1.5.0-alpha04 und androidx.compose.foundation:foundation-layout:1.5.0-alpha04 sind veröffentlicht. Version 1.5.0-alpha04 enthält diese Commits.
API-Änderungen
- Optimierte
TextStyle.merge(...)mit vollständiger Parameterliste hinzugefügt. (Iad234, b/246961787) - Stelle eine
SnapLayoutInfoProvidervor, die mitLazyGridStateverwendet werden kann. (I92134, b/269237141, b/260914964) - Das experimentelle
Modifier.animateItemPlacement()wurde für den Elementbereich „Lazy Staggered Grids“ hinzugefügt. Sie können sie auf die Elemente anwenden, um die Animationspositionen für die Automatisierung zu ändern oder neu anzuordnen. (I4b62d, b/257034719) GridCells.FixedSizein die stabile Version hochstufen MitFixedSizewird einLazyGriddefiniert, in dem jede Zelle eine genaue Größe auf der Querachse hat. Der verbleibende Platz wird durch die Anordnung auf der Querachse verteilt. (I8542f)- Der Empfängerbereich
PagerScopefür „Pager“ und eine Hilfsfunktion zum Berechnen eines bestimmten Seitenoffsets wurden eingeführt. (If2577) - Führen Sie
snapPositionalThresholdein, wenn Sie ein Snap-Fling-Verhalten erstellen. Mit diesem Parameter können Sie einen Positionsschwellenwert für das kurze Einrasten in Pager angeben. (If8f7f) SnapLayoutInfoProvider.calculateSnappingOffsetBoundswurde durchcalculateSnappingOffsetersetzt. Bei dieser neuen Methode wird einfach der nächste zu fixierende Offset angefordert. Die Berechnung der Grenzen sollte auf Implementierungsebene erfolgen, da sie davon abhängen kann, wie das Einrasten erfolgen soll. (I923a4)- Die
LazyStaggeredGrid-APIs wurden auf „Stabil“ hochgestuft. (I633a5) - Entfernen Sie
pageCountausHorizontal/VerticalPager. Dies sollte bei der Erstellung des Status angegeben werden.PagerStateundrememberPagerStatewurden aktualisiert, um diepageCountzu akzeptieren. (Ieb52d, b/266965072) - Entfernen Sie
pageCountausHorizontal/VerticalPager. Dies sollte bei der Erstellung des Status angegeben werden.PagerStateundrememberPagerStatewurden aktualisiert, um diepageCountzu akzeptieren. (Ifa3cb, b/266965072) - Stellen Sie
shortSnapVelocityThresholdinSnapFlingBehaviorvon Pager vor. (I7379e, b/275579012) - Fügt
FlowRowScopeundFlowColumnScopehinzu. (I54fe2)
Fehlerkorrekturen
- Aufrufe zum Abrufen der Semantik für Text, wenn Einschränkungen
minWidthundminHeightenthalten, stürzen nicht mehr ab. (Ibd072) - 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.foundation:foundation:1.5.0-alpha03 und androidx.compose.foundation:foundation-layout:1.5.0-alpha03 sind veröffentlicht. Version 1.5.0-alpha03 enthält diese Commits.
Mit diesem Release wird der neue Text-Rendering-Stack für Compose aktiviert. Der neue Stack ist leistungsoptimiert. Sie sollten keine sichtbaren Änderungen feststellen.
Wenn Sie Änderungen am gerenderten Text feststellen, können Sie das Problem beheben, indem Sie NewTextRendering1_5 = false festlegen, um den Verhaltensunterschied zu bestätigen. Wenn Sie diese Einstellung festlegen, wird die Komposition erzwungen. Bitte melden Sie alle Verhaltensunterschiede als Fehler.
Das Debug-Flag wird vor der Veröffentlichung von Version 1.5 beta01 entfernt.(Iada23, b/246960758)
API-Änderungen
FlowColumn/FlowRowinline einfügen. (Idab37)
Version 1.5.0-alpha02
5. April 2023
androidx.compose.foundation:foundation:1.5.0-alpha02 und androidx.compose.foundation:foundation-layout:1.5.0-alpha02 sind veröffentlicht. Version 1.5.0-alpha02 enthält diese Commits.
API-Änderungen
- Unterstützung für Zellen mit fester Größe in
LazyGridund Anordnung mit Cross-Axis-Anordnung hinzugefügt. (I83ed9, b/235121277, b/267942510) - Unterstützung für Lanes mit fester Größe in
LazyStaggeredGridund Anordnung mit Cross-Axis-Anordnung hinzugefügt. (I7d519) UrlAnnotationinAnnotatedStrings können jetzt über Bedienungshilfen wieTalkBackgeöffnet werden. (If4d82, b/253292081)- 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) - Unterstützung für die Anordnung/den Abstand auf der Querachse mit
verticalArrangementinFlowRowundhorizontalArrangementinFlowColumnwurde hinzugefügt. Außerdem entfernen wir dieverticalAlignmentundhorizontalAlignmentder obersten Ebene inFlowRow/FlowColumn. Entwickler können stattdessenModifier.alignverwenden. So wird die Verwechslung zwischen den Namenskonventionen vonverticalAlignmentundverticalArrangementverringert. (I87b60, b/268365538)
Version 1.5.0-alpha01
22. März 2023
androidx.compose.foundation:foundation:1.5.0-alpha01 und androidx.compose.foundation:foundation-layout:1.5.0-alpha01 sind veröffentlicht. Version 1.5.0-alpha01 enthält diese Commits.
API-Änderungen
- Text und
BasicTextwurden refaktoriert, um das neue Modifiers-System zu verwenden. Das führt in vielen Fällen zu erheblichen Leistungssteigerungen. Es sollten keine Änderungen sichtbar sein. (If1d17, b/246961435) - Die Semantikaktion
PerformImeActionwurde hinzugefügt, um die IME-Aktion für Texteditor-Knoten aufzurufen. (Ic606f, b/269633506)
Fehlerkorrekturen
- Die internen Komponenten von
Modifier.hoverablewurden aktualisiert. Der Modifikatorhoverablewird nur im Inspector angezeigt, wenn er aktiviert ist. (I82103)
Version 1.4
Version 1.4.3
3. Mai 2023
androidx.compose.foundation:foundation:1.4.3 und androidx.compose.foundation:foundation-layout:1.4.3 werden ohne Änderungen veröffentlicht (nur eine Versionsaktualisierung).
Version 1.4.2
19. April 2023
androidx.compose.foundation:foundation:1.4.2 und androidx.compose.foundation:foundation-layout:1.4.2 sind veröffentlicht. Version 1.4.2 enthält diese Commits.
Version 1.4.1
5. April 2023
androidx.compose.foundation:foundation:1.4.1 und androidx.compose.foundation:foundation-layout:1.4.1 sind veröffentlicht. Version 1.4.1 enthält diese Commits.
Version 1.4.0
22. März 2023
androidx.compose.foundation:foundation:1.4.0 und androidx.compose.foundation:foundation-layout:1.4.0 sind veröffentlicht. Version 1.4.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.3.0
- Die Emoji-Kompatibilitätsintegration wurde
TextundTextFieldsowie dem untergeordneten Absatz hinzugefügt. Sie ist standardmäßig aktiviert, wenn „emojicompat“ konfiguriert ist. EmojiCompatkann für einen bestimmten Text mitPlatformParagraphStylekonfiguriert werden.- Unterstützung für den vollständigen Zeilenbereich für
LazyStaggeredGrid(I28252) hinzugefügt - Experimentelles
onHoverwirdClickableTexthinzugefügt. (I6938f) - 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) FlowRowundFlowColumnsind jetzt als@ExperimentalFoundationApiverfügbar. Damit können Komponenten flexibler in Zeilen und Spalten angeordnet werden. Wenn auf der Hauptachse nicht genügend Platz ist, wird eine neue Zeile begonnen. (I3a7b2)Modifier.basicMarquee()ist als experimentelle Funktion verfügbar, um Inhalte mit einem scrollenden Laufschrift-Effekt anzuzeigen. (I2df44, b/139321650)
Version 1.4.0-rc01
8. März 2023
androidx.compose.foundation:foundation:1.4.0-rc01 und androidx.compose.foundation:foundation-layout:1.4.0-rc01 sind veröffentlicht. Version 1.4.0-rc01 enthält diese Commits.
API-Änderungen
- 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) - Unterstützung für umgekehrtes Layout für
LazyStaggeredGridhinzugefügt. (I3ef4a)
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.foundation:foundation:1.4.0-beta02 und androidx.compose.foundation:foundation-layout:1.4.0-beta02 sind veröffentlicht. Version 1.4.0-beta02 enthält diese Commits.
API-Änderungen
- 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 dem Canvas zu unterstützen. (I57508) - Die
modifierElementOf()API wurde entfernt. Leiten Sie stattdessen direkt vonModifierNodeElementab. (Ie6d21)
Fehlerkorrekturen
- Durch Anpassen der Auswahlgriffe kann nicht mehr nur ein Teil eines Zeichens ausgewählt werden. (Idedd1)
- Absturz behoben, der auftrat, wenn Strg + Rücktaste in einem leeren
TextFieldgedrückt wurde (I0427f, b/244185537)
Version 1.4.0-beta01
8. Februar 2023
androidx.compose.foundation:foundation:1.4.0-beta01 und androidx.compose.foundation:foundation-layout:1.4.0-beta01 sind veröffentlicht. Version 1.4.0-beta01 enthält diese Commits.
Neue Funktionen
- Seit Version 1.3 wurde die Emoji-Kompatibilitätsintegration für
TextundTextFieldsowie für das untergeordnete Element „Paragraph“ hinzugefügt. Sie ist standardmäßig aktiviert, wenn „emojicompat“ konfiguriert ist. EmojiCompatkann für einen bestimmten Text mitPlatformParagraphStylekonfiguriert werden.
API-Änderungen
- Es wurde eine gemeinsame Implementierung der
PinnableContainerAPI hinzugefügt, die in allenLazyLayoutsverwendet wird, um Elemente beizubehalten, die die Komposition verlassen, aber weiterhin aktiv sein müssen. (If45a4) PinnableContainer.PinnedHandle.unpin()wurde inrelease()umbenannt (I4667a)
Externe Beiträge
- Das Attribut „
mainAxisItemSpacing“ wurde den PropertiesLazyListLayoutInfo,LazyGridLayoutInfoundLazyStaggeredGridItemInfohinzugefügt (I52fad)
Version 1.4.0-alpha05
25. Januar 2023
androidx.compose.foundation:foundation:1.4.0-alpha05 und androidx.compose.foundation:foundation-layout:1.4.0-alpha05 sind veröffentlicht. Version 1.4.0-alpha05 enthält diese Commits.
Neue Funktionen
- Unterstützung für den vollständigen Zeilenbereich für
LazyStaggeredGridhinzugefügt (I28252) - Experimentelles
onHoverwird zuClickableTexthinzugefügt (I6938f) - 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)
API-Änderungen
- Die Pre- und Post-APIs von
OverscrollEffectwerden in den kombinierten „Decorator“-FunktionenapplyToScrollundapplyToFlingzusammengeführt. In der Dokumentation finden Sie aktualisierte Beispiele für die Implementierung eines Overscroll-Effekts mit der neuen API. (I8a9c4, b/255554340) - Weitere Typen/Nullwerte von Inline-/eingestellten/ausgeblendeten Funktionen (I24f91)
- Die APIs
LineBreakundHyphensinTextStylesind jetzt stabil. (Ic1e1d)
Fehlerkorrekturen
- Der Cursor in Textfeldern blinkt jetzt auch dann weiter, wenn Animationen deaktiviert sind. (I95e70, b/265177763)
Modifier.basicMarqueewird jetzt auch animiert, wenn Animationen in den Systemeinstellungen deaktiviert sind. (I23389, b/262298306, b/265177763)
Externe Beiträge
notifyFocusedRect-Methoden inTextInputSessionundTextInputServicesind nicht mehr veraltet. (I23a04, b/262648050)
Version 1.4.0-alpha04
11. Januar 2023
androidx.compose.foundation:foundation:1.4.0-alpha04 und androidx.compose.foundation:foundation-layout:1.4.0-alpha04 sind veröffentlicht. Version 1.4.0-alpha04 enthält diese Commits.
Neue Funktionen
FlowRowundFlowColumnsind jetzt als@ExperimentalFoundationApiverfügbar. Damit können Komponenten flexibler in Zeilen und Spalten angeordnet werden. Wenn auf der Hauptachse nicht genügend Platz ist, wird eine neue Zeile begonnen. (I3a7b2)Modifier.basicMarquee()ist als experimentelle Funktion verfügbar, um Inhalte mit einem Laufbandeffekt anzuzeigen. (I2df44, b/139321650)
API-Änderungen
FocusRequesterModifierist zugunsten vonFocusRequesterNodeveraltet (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)- Der
AndroidFont-Konstruktor mitvariationSettingsist jetzt eine stabile API und kann zum Erstellen neuer Arten von Schriftartdeskriptoren verwendet werden. (I5adcc, b/261565807) - Die
PinnableContainer-API wurde eingeführt, die von Lazy Lists über eine Kompositionslokale weitergegeben wird und das Anpinnen des aktuellen Elements ermöglicht. Das bedeutet, dass solche Elemente nicht verworfen werden, wenn sie aus dem sichtbaren Bereich gescrollt werden. MitModifier.focusable()wird beispielsweise das aktuell fokussierte Element über diesen Mechanismus angepinnt. (Ib8881, b/259274257, b/195049010) - Die Art und Weise, wie scrollbare Elemente auf
bringIntoViewRequestersund fokussierbare Elemente reagieren, wurde neu geschrieben, um die Komplexität dieser Vorgänge besser zu modellieren und mehr Grenzfälle zu berücksichtigen. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114) - Weitere Informationen zur Nullable-Eigenschaft des Rückgabetyps von eingestellten, ausgeblendeten Funktionen (Ibf7b0)
- Experimentelles
TextMotionzuTextStylehinzugefügt, um Text entweder alsStatic(default)oder als animiert zu definieren. Verwenden SieTextMotion.Animated, wenn Text durch Animation skaliert, übersetzt oder gedreht werden soll. (I24dd7) TextFieldFocusModifierhinzufügen, um das Fokusnavigationsverhalten für die Android-Plattform zu korrigieren (I00303)- Das
maxSize: IntSize-Argument indrawTextwurde durchsize: Sizeersetzt, um es an andereDrawScope-Funktionen anzugleichen.sizeist standardmäßig aufSize.Unspecifiedfestgelegt, was das bisherige Standardverhalten nicht ändern sollte. (Icd27d)
Fehlerkorrekturen
- Die Physik des Einrastens in
SnapFlingBehaviourwurde angepasst, um ein natürlicheres Gefühl zu vermitteln.
Bekanntes Problem
- Beim Aktualisieren von
androidx.compose.foundation:1.4.0-alpha03aufandroidx.compose.foundation:1.4.0-alpha04kann der Fehlerjava.lang.NoSuchFieldErrorauftreten. Hier wurde das Problem ursprünglich gemeldet. Ein Fix wurde eingereicht und ist im nächsten Compose-Update verfügbar. Als Behelfslösung können Sie Ihreandroidx.compose.material- undandroidx.compose.material3-Bibliotheken auf die neueste Version(1.1.0-alpha04) aktualisieren oder Ihreandroidx.compose.foundation-Bibliothek auf Version 1.4.0-alpha03 downgraden.
Version 1.4.0-alpha03
7. Dezember 2022
androidx.compose.foundation:foundation:1.4.0-alpha03 und androidx.compose.foundation:foundation-layout:1.4.0-alpha03 sind veröffentlicht. Version 1.4.0-alpha03 enthält diese Commits.
API-Änderungen
- 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. In dieser CL finden Sie Beispiele für Änderungen am Animationstest. - Dem Konstruktor und der Factory-Funktion von
TestMonotonicFrameClockwurde 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) - Einführung von Aktionen zur Seitenbarrierefreiheit:
PageUp,PageDown,PageLeft,PageRight. Diese sind erst ab API 29 verfügbar. (Ida4ab) - Einführung von
HorizontalPagerundVerticalPager, mit denen Composables wie in einem Pager angezeigt werden können.PagerStatewurde eingeführt, um die Pager zu steuern und Informationen zum aktuellen Status des Pagers abzufragen. MitPageSizekann die Größe der Seite eines Pagers gesteuert werden. So lassen sich karussellartige Pager erstellen. Wir habenPagerSnapDistanceeingeführt, um zu steuern, wie das Andocken beim Wischen in Pager funktioniert. (I01120) - Es wurde eine Überladung in
SnapFlingBehavior.performFlingeingeführt, um besser nachvollziehen zu können, wo der Fling landet. (I569f6) OverscrollEffect#isEnabledwurde entfernt. Anstatt sich dieses Flag merken und festlegen zu müssen, sollten Sie in Fällen, in denen kein Overscroll angezeigt werden soll (z. B. wennScrollableState#canScrollForward/backwardbeide „false“ zurückgeben), keine Ereignisse an den Overscroll-Effekt senden. (I1a4b0, b/255554340, b/255557085)ScrollableState#canScrollForwardundScrollableState#canScrollBackwardwurden hinzugefügt, um abzufragen, ob einScrollableStatein beide Richtungen gescrollt werden kann (ob es sich am Minimum oder Maximum des Bereichs befindet). Der Standardwert ist „true“, um die Abwärtskompatibilität mit vorhandenen Implementierungen vonScrollableStatezu gewährleisten. Damit kann dem Nutzer angezeigt werden, dass noch Platz zum Scrollen vorhanden ist. Außerdem kann so vermieden werden, dass Delta anScrollableStatesgesendet werden, die in einer bestimmten Richtung keinen Platz zum Scrollen haben, um unnötige Arbeit zu reduzieren. (Idf1a0, b/255557085)- 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
ClickablesWellen nicht richtig verzögert hat, wenn es in einemScrollable ViewGroupverwendet wurde, wurde behoben. - Die Schubladen und Sheets wurden aktualisiert, um das Drücken im Fall von Gesten, die zu Scroll-Ereignissen werden können, korrekt zu verzögern.
- Aktualisieren Sie die Benennung von
snapStepSize, damit sie mit anderen Methoden inSnapLayoutInfoProviderübereinstimmt. (Ife67c) EmojiCompatwurde zuComposehinzugefügt (Ibf6f9, b/139326806)consumedWindowInsets()wurde inconsumeWindowInsets()undwithConsumedWindowInsets()inonConsumedWindowInsetsChanged()umbenannt. Außerdem wurden die Modifikatoren öffentlich gemacht. (Ie44e1)
Fehlerkorrekturen
- Der Absturz mit
Modifier.animateItemPlacement()und Lazy Grids wurde behoben. Das Problem trat unter bestimmten Bedingungen auf, wenn die Anzahl der neuen Elemente geringer war als die vorherige. (I0bcac, b/253195989)
Version 1.4.0-alpha02
9. November 2022
androidx.compose.foundation:foundation:1.4.0-alpha02 und androidx.compose.foundation:foundation-layout:1.4.0-alpha02 sind veröffentlicht. Version 1.4.0-alpha02 enthält diese Commits.
API-Änderungen
awaitFirstDownundwaitForUpOrCancellationakzeptieren jetzt einPointerEventPass, um mehr Flexibilität zu bieten. (I7579a, b/212091796)beyondBoundCount-API aus Lazy*-APIs zurücksetzen (I12197)- Parameter in Lazy APIs eingeführt, um Elemente außerhalb des Darstellungsbereichs zu erstellen und zu platzieren (I69e89, b/172029355)
- Der Parameter
minLineswurdeBasicTextundBasicTextFieldhinzugefügt. Damit kann die Mindesthöhe dieser Composables in Bezug auf die Anzahl der Zeilen festgelegt werden (I24294, b/122476634).
Version 1.4.0-alpha01
24. Oktober 2022
androidx.compose.foundation:foundation:1.4.0-alpha01 und androidx.compose.foundation:foundation-layout:1.4.0-alpha01 sind 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)WindowInsets.imeAnimationSourcundWindowInsets.imeAnimationTargetwurden hinzugefügt, um den Fortschritt der Animation zu bestimmen und zu wissen, wo sich die IME nach Abschluss der Animation befindet. (I356f1, b/217770337)
Version 1.3
Version 1.3.1
9. November 2022
androidx.compose.foundation:foundation:1.3.1 und androidx.compose.foundation:foundation-layout:1.3.1 sind veröffentlicht. Version 1.3.1 enthält diese Commits.
Fehlerkorrekturen
- Leistungsproblem in
BeyondBoundsLayoutbeheben (aosp/2255266) ContentInViewModifierliest keine Layoutkoordinaten, sofern nicht angehängt (aosp/2241316)
Version 1.3.0
24. Oktober 2022
androidx.compose.foundation:foundation:1.3.0 und androidx.compose.foundation:foundation-layout:1.3.0 sind veröffentlicht. Version 1.3.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.2.0
- Es wurden experimentelle Versionen von
LazyVerticalStaggeredGridundLazyHorizontalStaggeredGrideingeführt. SnapFlingBehavior,rememberSnapFlingBehaviorund andere entsprechende APIs wurden als experimentell hinzugefügt.- Bei
Modifier.clickable,Modifier.toggleableundModifier.selectablewerden jetzt Welleneffekte angezeigt, wenn sie mit der Tastatur oder dem Steuerkreuz auf einer Fernbedienung angeklickt werden.
Version 1.3.0-rc01
5. Oktober 2022
androidx.compose.foundation:foundation:1.3.0-rc01 und androidx.compose.foundation:foundation-layout:1.3.0-rc01 sind veröffentlicht. Version 1.3.0-rc01 enthält diese Commits.
API-Änderungen
lowVelocityAnimationSpecwurde eingeführt, das vom Ansatzschritt verwendet wird, wenn die Fling-Geschwindigkeit nicht ausreicht, um abzunehmen. (Iaeb27)- Die neue experimentelle API „Hyphens“ wurde hinzugefügt, um die automatische Silbentrennung in Text zu unterstützen (Iaa869).
Version 1.3.0-beta03
21. September 2022
androidx.compose.foundation:foundation:1.3.0-beta03 und androidx.compose.foundation:foundation-layout:1.3.0-beta03 sind 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)
BringIntoViewResponderkönnen jetzt die aktuellsten Grenzen einer Anfrage abrufen, während sie verarbeitet wird. (If86a5, b/241591211)- Unterstützung für Abstände zwischen Elementen in der experimentellen
Staggered Grid(I10b82) einführen - Einführung von Inhalts-Padding für experimentelle
Staggered Grid(I342ea) - Das
size:IntSize-Argument wurde in derTextMeasurer.measure-Methode durchconstraints: Constraintsersetzt, um Mindestbreitenbeschränkungen zu unterstützen. (I37530, b/242707525) Modifier.withConsumedWindowInsets()wurde hinzugefügt, umWindowInsetsfür die Verwendung außerhalb vonwindowInsetsPaddingabzurufen.MutableWindowInsetswurde hinzugefügt, umWindowInsetsohne Neuzusammenstellung einfach ändern zu können. (I7fd28, b/237019262, b/243119659)
Version 1.3.0-beta02
7. September 2022
androidx.compose.foundation:foundation:1.3.0-beta02 und androidx.compose.foundation:foundation-layout:1.3.0-beta02 sind veröffentlicht. Version 1.3.0-beta02 enthält diese Commits.
API-Änderungen
- Erste Version der experimentellen
StaggeredGrid(Ia48be) FocusDirection.InundFocusDirection.Outwurden inFocusDirection.EnterundFocusDirection.Exitumbenannt (Ia4262, b/183746982)- Es wurde eine
rememberSnapFlingBehavior-Überladung eingeführt, mit der das Einrasten inLazyListsschnell aktiviert werden kann. (Ifb48a) - Die
snapFlingBehavior-Factory wurde durch eine konkreteSnapFlingBehavior-Klasse ersetzt. DieSnapLayoutInfoProvider-Methoden wurden auf die Dichte beschränkt, um die Konvertierung von Dp<->Px für die API-Nutzer zu vereinfachen. (I54a11) LazyLayoutMeasureScope.measurewurde aktualisiert, um eine Liste von platzierbaren Elementen zurückzugeben. Dabei wird die gewünschte Unveränderlichkeit des zurückgegebenen Werts hervorgehoben. (I48b7c)SnapLayoutInfoProviderwurde eingeführt. Es verwendet einLazyListState, um eine Instanz vonSnapLayoutInfoProviderzu erstellen, mit der ein SnapFlingBehaviorfürLazyListsaktiviert werden kann. (I2dd10)
Fehlerkorrekturen
- Refaktorierung von
AwaitPointerEventScope#awaitLongPressOrCancellation, damit es anderen Await-Funktionen entspricht (I646e6)
Version 1.3.0-beta01
24. August 2022
androidx.compose.foundation:foundation:1.3.0-beta01 und androidx.compose.foundation:foundation-layout:1.3.0-beta01 sind veröffentlicht. Version 1.3.0-beta01 enthält diese Commits.
API-Änderungen
pointerPositionausOverscrollEffectentfernt: Bei Effekten, bei denen es auf die Zeigerposition ankommt, kann stattdessenModifier.pointerInput { }imeffectModifierverwendet werden, um die aktuelle Zeigerposition abzurufen. (I9f606, b/241239306)AwaitPointerEventScope#awaitLongPressOrCancellationals zusätzlicher Baustein für die komplexere Gestenerkennung verfügbar gemacht (I04374, b/181577176)lazyListSnapLayoutInfoProviderwurde eingeführt, um das Einrasten in Lazy Lists zu ermöglichen. (I3ecdf)SnapFlingBehaviorwurde eingeführt, ein Fling-Verhalten, das das Einrasten von Listen ermöglicht. Geben Sie eine Instanz vonSnapLayoutInfoProvidermit Informationen zu Ihrem Andocklayout an. (Ie754c)
Version 1.3.0-alpha03
10. August 2022
androidx.compose.foundation:foundation:1.3.0-alpha03 und androidx.compose.foundation:foundation-layout:1.3.0-alpha03 sind veröffentlicht. Version 1.3.0-alpha03 enthält diese Commits.
API-Änderungen
- Für Ressourcen-Schriftarten können jetzt Einstellungen für Schriftartvarianten festgelegt werden (API 26+). (I900dd, b/143703328)
- Unterstützung variabler Schriftarten in
DeviceFontFamilyNameFont(Ic1279, b/143703328) - Die experimentelle Anmerkung wurde aus
PlatformTextStyleundLineHeightStyleentfernt. (I64bef) - Für Textfelder werden jetzt detailliertere Ausnahmen ausgegeben, wenn der von einem
VisualTransformationbereitgestellteOffsetMappingungültige Indexe zurückgibt. (Ie73f9, b/229378536) - Einführung experimenteller APIs zum Teilen der Logik des Elementanbieters zwischen Lazy-Layouts. (Ic891c)
ScrollableDefaults.reverseDirection()ist nicht mehr experimentell. (Iba646)SemanticsModifier.idwurde verworfen und die Semantik-ID wurde stattdessen inLayoutInfo.semanticsIdverschoben. (Iac808, b/203559524)checkScrollableContainerConstraints()ist nicht mehr experimentell. (I2c290)Modifier.clipScrollableContainer()ist nicht mehr experimentell. (Ia2b44)TextInputService.show|hideSoftwareKeyboardeinstellen Verwenden Sie stattdessenSoftwareKeyboardControllerim App-Code undTextInputSessionim IME-Verwaltungscode. (I14e4c, b/183448615)
Version 1.3.0-alpha02
27. Juli 2022
androidx.compose.foundation:foundation:1.3.0-alpha02 und androidx.compose.foundation:foundation-layout:1.3.0-alpha02 sind veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.
API-Änderungen
- Die Erweiterungsfunktion
drawTextwurde fürDrawScopehinzugefügt, um die Möglichkeit zu bieten, Text mit mehreren Stilen in Composables und Modifiers zu zeichnen, die aufDrawScopewieCanvasunddrawBehindangewendet werden. (I16a62, b/190787898)
Fehlerkorrekturen
- Die Softwaretastatur wird jetzt ausgeblendet, wenn ein Textfeld deaktiviert wird, während es fokussiert ist. (I6e3e4, b/237308379)
- 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 (Icea9d, b/216582726, b/223440806, b/227709803). - Wenn ein scrollbares Element ein fokussiertes untergeordnetes Element hat, wird jetzt richtig gescrollt, damit das fokussierte untergeordnete Element im Blickfeld bleibt, wenn seine Größe verringert wird, auch wenn die Größe animiert wird. (I80867, b/230756508, b/220119990)
- Ein Absturz wurde behoben, der auftrat, wenn
TextFieldgeleert und neu befüllt wurde, während die Auswahl aktiv war. (I1235b, b/208655565, b/214253689)
Version 1.3.0-alpha01
29. Juni 2022
androidx.compose.foundation:foundation:1.3.0-alpha01 und androidx.compose.foundation:foundation-layout:1.3.0-alpha01 sind veröffentlicht. Version 1.3.0-alpha01 enthält diese Commits.
API-Änderungen
- Der Annotationstyp
UrlAnnotationund die zugehörigen Methoden wurden eingeführt, um die Unterstützung vonTalkBack-Links inAnnotatedStrings zu ermöglichen. (I1c754, b/231495122)
Fehlerkorrekturen
BasicTextFieldcursorBrushkann jetzt animiert werden, ohne dass der Cursor-Timer neu gestartet wird. (I812e6, b/236383522)
Version 1.2
Version 1.2.1
10. August 2022
androidx.compose.foundation:foundation:1.2.1 und androidx.compose.foundation:foundation-layout:1.2.1 sind veröffentlicht. Version 1.2.1 enthält diese Commits.
Version 1.2.0
27. Juli 2022
androidx.compose.foundation:foundation:1.2.0 und androidx.compose.foundation:foundation-layout:1.2.0 sind veröffentlicht. Version 1.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.1.0
LazyVerticalGridundLazyHorizontalGridsind jetzt stabil.- Sie können jetzt einen Inhaltstyp für Elemente in Lazy Lists und Grids angeben. So können Elemente in den Komponenten effizienter wiederverwendet werden.
- Lazy Lists und Grids haben jetzt den Parameter
userScrollEnabled, mit dem das Scrollen über Nutzergesten deaktiviert werden kann. - Es wurde eine neue experimentelle API namens
LazyLayouthinzugefügt. Sie wird intern verwendet, um Lazy Lists und Grids zu unterstützen. - Die
OverscrollEffectAPI wurde als experimentell eingeführt. Sie können benutzerdefinierte Overscroll-Effekte definieren und benutzerdefinierten scrollbaren Containern einen Standardeffekt hinzufügen. - Es wurden APIs für die Interoperabilität von verschachteltem Scrollen eingeführt, um die Interoperabilität zwischen Ansichten und Compose-Scrolling-Akteuren zu ermöglichen.
- Allen Scrollcontainern wurde die Möglichkeit hinzugefügt, mit Maus und Trackpad zu scrollen.
Version 1.2.0-rc03
29. Juni 2022
androidx.compose.foundation:foundation:1.2.0-rc03 und androidx.compose.foundation:foundation-layout:1.2.0-rc03 sind 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.foundation:foundation:1.2.0-rc02 und androidx.compose.foundation:foundation-layout:1.2.0-rc02 sind veröffentlicht. Version 1.2.0-rc02 enthält diese Commits.
Version 1.2.0-rc01
15. Juni 2022
androidx.compose.foundation:foundation:1.2.0-rc01 und androidx.compose.foundation:foundation-layout:1.2.0-rc01 sind veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.
API-Änderungen
- 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- ins Fundamentpaket verschoben und inLocalOverscrollConfigurationumbenannt (If19fb, b/204650733). - Schnittstellen in Compose-Bibliotheken werden jetzt mit JDK8-Standard-Schnittstellenmethoden erstellt (I5bcf1).
- Es wurde eine experimentelle API
checkScrollableContainerConstraints()eingeführt, mit der geprüft werden kann, ob verschachtelte scrollbare Container vorhanden sind. Sie können es verwenden, wenn Sie eigene scrollbare Lazy-Layouts überLazyLayouterstellen. (Id6fab, b/233352497) - Veraltetes
LazyVerticalGridaus dem Paketandroidx.compose.foundation.lazyentfernt. Die neue stabile API befindet sich unterandroidx.compose.foundation.lazy.grid(I73c76, b/225192009).
Version 1.2.0-beta03
1. Juni 2022
androidx.compose.foundation:foundation:1.2.0-beta03 und androidx.compose.foundation:foundation-layout:1.2.0-beta03 sind veröffentlicht. Version 1.2.0-beta03 enthält diese Commits.
API-Änderungen
- Es wurden die neuen experimentellen
IntervalListundMutableIntervalListhinzugefügt. Damit lässt sich eine Liste von Werten über mehrere Intervalle darstellen. Das ist nützlich, wenn Sie eine eigene DSL definieren möchten, die der vonLazyColumnverwendeten ähnelt, wobei Listenelemente über mehrere item-/items-Aufrufe definiert werden können. (I2d05e, b/228580728)
Fehlerkorrekturen
- Die Dokumentation für
WindowInsets.imewurde dahingehend aktualisiert, dassime-Einzüge bereits ab API 23 gemeldet werden, aber nur ab API 30 animiert sind. (Ia7fc0, b/230756508) - 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.foundation:foundation:1.2.0-beta02 und androidx.compose.foundation:foundation-layout:1.2.0-beta02 sind veröffentlicht. Version 1.2.0-beta02 enthält diese Commits.
- Die Auflösung herunterladbarer Schriftarten ändert nicht die Layoutgröße von Text oder
TextField. Bisher wurde die Schriftart nicht neu gerendert, was zu einer veralteten Schriftartdarstellung führte. Mit diesem Bugfix wird dafür gesorgt, dass das Textlayout immer ein erneutes Zeichnen auslöst (b/229727404). (I1d49e, b/229727404)
Version 1.2.0-beta01
11. Mai 2022
androidx.compose.foundation:foundation:1.2.0-beta01 und androidx.compose.foundation:foundation-layout:1.2.0-beta01 sind 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). LineHeightBehaviorwird inLineHeightStyleumbenannt.LineVerticalAlignmentwird inLineHeightStyle.Alignmentumbenannt.LineHeightTrimwird inLineHeightStyle.Trimumbenannt- Standardkonstruktorwerte aus
LineHeightStylewurden entfernt (I582bf, b/181155707) - Es wurden Standardwerte für die optionalen Elemente der
LazyLayoutItemProvider-Schnittstelle hinzugefügt. (Iba8a0) - In der
LazyLayoutItemProvider-API wird jetzt anstelle einer Factory, die die zusammensetzbare Lambda-Funktion nach Index zurückgibt, eine einfachere zusammensetzbare Funktion „Item“ verwendet, die den Index akzeptiert. (Id2196) - LazyLayoutItemsProvider wurde in LazyLayoutItemProvider umbenannt (I0638c)
LazyLayoutItemsProvider.itemsCountwird initemCountumbenannt (Id409c)TextStyleundSpanStylewurde ein Pinsel hinzugefügt, mit dem Text mit Farbverlauf gezeichnet werden kann. (I53869, b/187839528)- Die Attribute
trimFirstLineTopundtrimLastLineBottomvonLineHeightBehaviorwurden in einem einzigen Enum geändert:LineHeightTrim.LineHeightTrimhat Werte für vier Status, die durch zwei boolesche Werte definiert werden:FirstLineTop,LastLineBottom, „Both“ (Beide) und „None“ (Keine) (Ifc6a5, b/181155707) LineHeightBehaviorwurde den SteuerelementenTextStyleundParagraphStyle. LineHeightBehaviorhinzugefügt. Damit wird festgelegt, ob die Zeilenhöhe auf die Oberkante der ersten Zeile und die Unterkante der letzten Zeile angewendet wird. Außerdem wird die Ausrichtung der Zeile 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 CSS zu erzielen.trimFirstLineTop- undtrimLastLineBottom-Konfigurationen funktionieren nur dann richtig, wennincludeFontPaddingauf „false“ gesetzt ist. (I97332, b/181155707)Der experimentelle Modifikator
imeNestedScroll()wurde hinzugefügt, damit Entwickler die IME durch Scrollen steuern können. (I60759)
Fehlerkorrekturen
- Ein Regressionsfehler wurde behoben, durch den das Tastaturfeld nicht ausgeblendet wurde, wenn es aus der Komposition entfernt wurde, während es fokussiert war. (I7a410, b/230536793, b/225541817)
- Unterstützung von Auslassungspunkten, wenn die Höhe begrenzt ist und nicht alle Textzeilen passen (Ie528c, b/168720622)
BringIntoViewRequester.bringIntoViewwird jetzt immer angehalten, bis die Anfrage abgeschlossen oder durch eine neuere, nicht überschneidende Anfrage unterbrochen wurde. Sich überschneidende Anfragen werden in die Warteschlange gestellt. (I43e7f, b/216790855)- Bei gleichzeitigen
BringIntoViewRequester.bringIntoView-Aufrufen für Rechtecke, die sich vollständig überlappen, wird jetzt nur noch die Anfrage des größeren Rechtecks berücksichtigt. (I34be7, b/216790855, b/184760918) - 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) Modifier.bringIntoViewRequesterverwendetonGloballyPositionednicht mehr. (I630f5)
Externe Beiträge
MouseInjectionScope.scroll(delta = someDelta)ist 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.foundation:foundation:1.2.0-alpha08 und androidx.compose.foundation:foundation-layout:1.2.0-alpha08 sind veröffentlicht. Version 1.2.0-alpha08 enthält diese Commits.
API-Änderungen
- 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 bis 28 unterstützt wurden. (I380fe, b/156048036, b/226441992) - Die Parameter „Constraints“ werden jetzt für „Paragraph“ und „MultiParagraph“ akzeptiert. Das Übergeben von
Constraints.maxHeightist derzeit ein No-Op, 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, der keine neuen Elemente hinzugefügt werden können. (Icd314)- Die teilweise Nutzung (Down- oder Position-Attribut) wurde in
PointerInputChangeeingestellt. Mitconsume()können Sie die Änderung vollständig übernehmen. MitisConsumedkönnen Sie feststellen, ob die Änderung bereits von jemand anderem übernommen wurde. PointerInputChange::copy()erstellt jetzt immer eine oberflächliche Kopie. Das bedeutet, dass Kopien vonPointerInputChangeverbraucht werden, sobald eine der Kopien verbraucht wird. Wenn Sie ein ungebundenesPointerInputChangeerstellen möchten, verwenden Sie stattdessen den Konstruktor. (Ie6be4, b/225669674)- Die neue experimentelle
LazyLayoutAPI wird eingeführt. So können Sie eigene Komponenten wieLazyColumnvonLazyVerticalGriderstellen. Die API befindet sich noch in der Anfangsphase und kann in zukünftigen Releases geändert werden. (Iba2bc, b/166591700) AndroidFontverwendet jetzttypefaceLoaderals Konstruktorparameter. (I2c971)WindowInsets-Begleit-Apps geben jetzt die Sichtbarkeit (unabhängig davon, ob sie sich mit dem Fenster überschneiden) und die Größe an, die sie haben könnten, wenn sie auf dem Gerät verfügbar, aber derzeit nicht aktiv sind. (I65182, b/217770337)
Version 1.2.0-alpha07
6. April 2022
androidx.compose.foundation:foundation:1.2.0-alpha07 und androidx.compose.foundation:foundation-layout:1.2.0-alpha07 sind veröffentlicht. Version 1.2.0-alpha07 enthält diese Commits.
API-Änderungen
- Es wurde eine
PinnableParent-API hinzugefügt, mit der untergeordnete Elemente von Lazy Layouts verhindern können, dass die aktuell zusammengesetzten Elemente verworfen werden (Ibbdd0, b/184670295). LazyListLayoutInfoundLazyGridLayoutInfohaben jetzt die FelderbeforeContentPaddingundafterContentPadding(I3b628, b/200920410)KeyboardType.Decimalwurde als Alternative zuKeyboard.Numberhinzugefügt, um das Dezimaltrennzeichen speziell in der IME einzuschließen. (Iec4c8, b/209835363)- Der neue Schriftartdeskriptor „Font(DeviceFontFamilyName)“ ermöglicht es, während der Schriftart-Fallback-Kette optional nach auf dem System installierten Schriftarten zu suchen. (I30468, b/219754572)
PointerEventType.ScrollundPointerEvent.scrollDeltasind jetzt stabile APIs (I574c5, b/225669674).- Die temporäre Kompatibilitätskonfiguration für
includeFontPadding, die inTextStyle/ParagraphStyle. includeFontPaddinghinzugefügt wurde, kann ü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) FontFamily.Resolverwurde aktualisiert, um die Bedienungshilfe-Einstellung „Systemweiter Fettdruck“ (I6c1e7) zu integrieren.- Mit der Erweiterungseigenschaft
consumeWindowInsetsvonComposeViewkönnen Entwickler die Verwendung von Android WindowInsets deaktivieren. So können separateComposeViewsin der Hierarchie jeweilsWindowInsetsanwenden, ohne sich gegenseitig zu beeinträchtigen. (I0ef08, b/220943142)
Version 1.2.0-alpha06
23. März 2022
androidx.compose.foundation:foundation:1.2.0-alpha06 und androidx.compose.foundation:foundation-layout:1.2.0-alpha06 sind 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) FocusOrderwurde jetzt inFocusPropertieszusammengeführt undfocusProperties()bietet jetzt alle Funktionen vonfocusOrder().FocusOrderundfocusOrder()wurden eingestellt.focusOrder(), dasfocusRequesterakzeptiert, sollte durch den ModifikatorfocusRequester()in Kombination mitfocusProperties()ersetzt werden. So können die Modifizierer besser voneinander getrennt werden. (I601b7)WindowInsets.asPaddingValues(Density)wurde hinzugefügt, damit Entwickler die Konvertierung durchführen können, ohne sich in der Komposition zu befinden. (I94c35)- 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)
Fehlerkorrekturen
- Scroll-Modifikatoren (
Modifier.verticalScroll(),Modifier.horizontalScroll()undModifier.scrollable()) scrollen jetzt so, dass die fokussierte Composable sichtbar bleibt, wenn die Scroll-Area in der Größe geändert wird und die fokussierte Composable zuvor sichtbar war. - Textfelder werden jetzt über der Tastatur platziert, wenn sie fokussiert sind und die Tastatur angezeigt wird, sofern sie sich in einem nicht verzögert scrollbaren Bereich befinden und der Soft-Input-Modus
ADJUST_RESIZEist. (I4a485, b/190539358, b/192043120, b/216842427)
Version 1.2.0-alpha05
9. März 2022
androidx.compose.foundation:foundation:1.2.0-alpha05 und androidx.compose.foundation:foundation-layout:1.2.0-alpha05 sind veröffentlicht. Version 1.2.0-alpha05 enthält diese Commits.
API-Änderungen
LazyVerticalGridundLazyHorizontalGridsind jetzt stabil. (I307c0)LazyGridItemInfo.Unknownwurde durch separateLazyGridItemInfo.UnknownRowundLazyGridItemInfo.UnknownColumnersetzt (I56d51)LazyVerticalGrid/LazyHorizontalGridund alle zugehörigen APIs wurden in das Unterpaket.gridverschoben. Bitte aktualisieren Sie Ihre Importe vonandroidx.compose.foundation.lazyaufandroidx.compose.foundation.lazy.grid. (I2d446, b/219942574)- Text:
includeFontPaddingist jetzt standardmäßig deaktiviert. Die Beschneidungsprobleme, die durchincludeFontPadding=falseverursacht werden, wurden behoben. Bei langen Skripten sollte es nicht mehr zu Beschneidungen kommen. (I31c84, b/171394808) - Die gemessene Schnittstelle macht jetzt die Eigenschaft „parentData“ verfügbar (I3313f)
- Experimentelles
Modifier.onFocusedBoundsChangedeingeführt, um die Grenzen von untergeordneten Elementen mit Fokus zu beobachten. (I14283, b/220030968, b/190539358, b/192043120, b/216842427) - „LazyHorizontalGrid“ wurde hinzugefügt. (I61ae7, b/191238807)
- Eine neue
LazyVerticalGridAPI zum Definieren von Größen für die Querachse wurde hinzugefügt (I17723). - Modifikator „FocusGroup“ hinzugefügt (I64bc0, b/213508274, b/184670295)
Fehlerkorrekturen
- In
WindowInsets.toString()werden jetzt die richtigen Werte angezeigt. (I1585d)
Externe Beiträge
- Aktualisiert auf Kotlinx-Coroutines 1.6.0 (I3366d)
Version 1.2.0-alpha04
23. Februar 2022
androidx.compose.foundation:foundation:1.2.0-alpha04 und androidx.compose.foundation:foundation-layout:1.2.0-alpha04 sind veröffentlicht. Version 1.2.0-alpha04 enthält diese Commits.
API-Änderungen
BringIntoViewRespondersmüssen Anfragen nicht mehr manuell an übergeordnete Responder weiterleiten, sondern müssen stattdessen sofort das Rechteck zurückgeben, das ihr übergeordnetes Element in den Blickpunkt rücken soll. (I8e66a)- Asynchrones Laden von Schriftarten in Text unterstützen (I77057, b/214587005)
LazyVerticalGridunterstützt jetztline breakingvor Elementen mit einem Bereich, der nicht in die aktuelle Zeile passt. (I05c40, b/207462103)excludeFromSystemGestureswurde insystemGesturesExclusionumbenannt (I19526)LazyVerticalGridunterstützt jetzt „reverseLayout“. (I6d7d7, b/215572963, b/211753558)- Fügen Sie die Methode
WindowInsets.only()hinzu, damit Entwickler nur Dimensionen aus WindowInsets einfügen können. (I14c94, b/217768486) 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 AnnotationCompoableTargetfü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 vollständig qualifizierten Namen der Attributklasse als „applier“-Parameter. Ein Beispiel für die Verwendung vonComposableTargetMarkerfinden Sie unteranroidx.compose.ui.UiComposable. (I38f11)
Fehlerkorrekturen
- Es ist jetzt zulässig, negative Scroll-Offsets an
LazyGridState.scrollToItem()undLazyGridState.animateScrollToItem()zu übergeben. (I025c6, b/211753558) - Unterstützung des asynchronen Schriftartenladens für TextField. (Icc4bf, b/214587005)
Version 1.2.0-alpha03
9. Februar 2022
androidx.compose.foundation:foundation:1.2.0-alpha03 und androidx.compose.foundation:foundation-layout:1.2.0-alpha03 sind 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)- Animationen wurden für Elemente von Lazy Grids mit Modifier.animateItemPlacement() aktiviert. (Ib6621, b/211753218)
BringIntoViewRequesterleitet Anfragen jetzt an die Hosting-Android-Ansicht weiter. (Ia7a51)FontFamilyResolverist jetzt überLocalFontFamilyResolver.currentverfügbar.createFontFamilyResolver(context)undcreateFontFamilyResolver(context, coroutineScope)wurden hinzugefügt, um neue FontFamily-Resolver außerhalb der Compose-Verwendung zu erstellen.- Für Paragraph und MultiParagraph wird jetzt
FontFamily.Resolververwendet. TextLayoutResult.layoutInput.fontFamilyResolverenthält jetzt den Resolver, der für dieses Layout verwendet wird.TextLayoutResult.layoutInput.resourceLoaderist veraltet, da er nicht mehr verwendet wird. (Id5a45, 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 Schriftarttypen finden Sie unter AndroidFont. - 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 in der Ressourcen-Schriftart auf herunterladbare Schriftarten-XML verwiesen wird. (Ie5aea, b/174162090)
- Die
- Der Konstruktor
Typeface(FontFamily)wird nicht mehr unterstützt. Diese Funktion wurde zuvor verwendet, um Schriftarten vorab zu laden. Das kann bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern. Bei herunterladbaren Schriftarten kann dieser Aufruf 10 Sekunden lang blockiert werden. Verwenden Sie stattdessenFontFamilyResolver.preload.fontResource(FontFamily): Typefaceist veraltet. Diese Funktion wurde zuvor verwendet, um Schriftarten vorab zu laden. Das kann bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern. Verwenden Sie stattdessenFontFamilyResolver.preload(If8e7c, b/174162090).
- Sie können jetzt den Inhaltstyp für die Elemente von
LazyVerticalGridangeben. Die Funktionen „item“ / „items“ fürLazyGridScopeakzeptieren jetzt einen solchen Parameter. Wenn Sie solche Informationen angeben, kann die Logik für die Wiederverwendung von Artikelkompositionen effizienter arbeiten und Inhalte nur zwischen Elementen ähnlichen Typs wiederverwenden. (I7b355, b/215372836) LazyListLayoutInfoundLazyGridLayoutInfohaben jetzt neue Properties:viewportSize,orientation,reverseLayout(Ifc8ed, b/200920410)- Sie können jetzt den Inhaltstyp für die Elemente der Funktionen „item“/„items“ von „LazyColumn“/„LazyRow“ angeben. „LazyListScope“ akzeptiert jetzt einen solchen Parameter. Wenn Sie solche Informationen angeben, kann die Logik für die Wiederverwendung von Artikelkompositionen effizienter arbeiten und Inhalte nur zwischen Elementen ähnlichen Typs wiederverwenden. (I26506)
- 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) - Fügt Modifiers für WindowInsets hinzu, sowohl für Padding als auch für die Größenanpassung. So können sich einige Inhalte in den Inset-Bereich erstrecken, während die primären Inhalte außerhalb des Inset-Bereichs bleiben. Mit windowInsetsPadding kann beispielsweise der Inhaltsbereich so aufgefüllt werden, dass Bereiche vermieden werden, die vollständig oder teilweise abgedeckt sein könnten. (Id0395, b/213942085)
Fehlerkorrekturen
- TextFields 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)
- Die Desktopversion von
- Der Eingabetyp der Bildschirmtastatur flackert nicht mehr, wenn der Fokus zwischen Textfeldern gewechselt wird. (I1bf50, b/187746439)
- Bei Textfeldern ist kein zusätzliches Zurückdrücken mehr erforderlich, wenn der Cursorgriff angezeigt wird. (Ideb4b, b/205726883)
- Das Verhalten der Lupe bei der Textauswahl wurde optimiert, um der Plattformlupe zu entsprechen. (Idd918, b/206833278)
Version 1.2.0-alpha02
26. Januar 2022
androidx.compose.foundation:foundation:1.2.0-alpha02 und androidx.compose.foundation:foundation-layout:1.2.0-alpha02 sind veröffentlicht. Version 1.2.0-alpha02 enthält diese Commits.
API-Änderungen
NonRestartableComposablewurde Methoden hinzugefügt, die Überladungen vorhandener Methoden ohne komplexe Logik sind. Dadurch werden die vom Compiler generierten Memoization-Prüfungen (equals) für alle Parameter reduziert, die in der aufgerufenen inneren Funktion wiederholt werden. (I90490)excludeFromSystemGesture-Modifikatoren für den einfachen Zugriff aufsetSystemGestureExclusionRectsvon Android hinzugefügt (I46f07)
Fehlerkorrekturen
- Das Verhalten der Lupe bei der Textauswahl wurde optimiert, um der Plattformlupe zu entsprechen. (Idd918, b/206833278)
LazyColumn,LazyRow,Modifier.verticalScrollund andere Container, dieModifier.scrollableverwenden, unterstützen jetzt das Scrollen mit dem Mausrad. (I2b5e1, b/198214718)
Version 1.2.0-alpha01
12. Januar 2022
androidx.compose.foundation:foundation:1.2.0-alpha01 und androidx.compose.foundation:foundation-layout:1.2.0-alpha01 sind veröffentlicht. Version 1.2.0-alpha01 enthält diese Commits.
API-Änderungen
- Der neue Parameter
userScrollEnabledwurdeLazyColumn,LazyRowundLazyVerticalGridhinzugefügt, damit Nutzer das durch Touch-Gesten oder Bedienungshilfen ausgelöste Scrollen vorübergehend oder dauerhaft deaktivieren können. Das programmgesteuerte Scrollen über die Methoden im Status ist weiterhin zulässig. (I7eae9, b/201150093) - Fügen Sie dem Lupen-Modifikator den
onSizeChanged-Callback hinzu. (I6879f) - Das Lupen-Widget wird jetzt angezeigt, wenn Sie Auswahlziehpunkte in einem
SelectionContainerziehen. (I30b38, b/139320979)
Fehlerkorrekturen
- Das Problem wurde behoben, dass der Cursor-Ziehpunkt
TextFieldnicht ausgeblendet wurde, wenn er aus dem Blickfeld gescrollt wurde. (I14552, b/208883748)
Abhängigkeitsupdates
- Hängt jetzt von Kotlin
1.6.10ab.
Version 1.1
Version 1.1.1
23. Februar 2022
androidx.compose.foundation:foundation:1.1.1 und androidx.compose.foundation:foundation-layout:1.1.1 sind veröffentlicht. Version 1.1.1 enthält diese Commits.
Fehlerkorrekturen
- Fehler bei
NullPointerExceptionunterandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayListbeheben (aosp/1947059, b/206677462) - Ein Absturz wurde behoben, der 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.foundation:foundation:1.1.0 und androidx.compose.foundation:foundation-layout:1.1.0 sind 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ührungszielen
- Im Vergleich zu Compose 1.0 wird der Layoutbereich von Material-Komponenten erweitert, um den Richtlinien für Bedienungshilfen von 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 wird ein einheitliches Verhalten erreicht, 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 Berührungszielen erfüllt werden.
- Stabile Unterstützung für Navigation Rail
- Eine Reihe von zuvor experimentellen APIs wird auf stabil umgestellt.
- Unterstützung für neuere Versionen von Kotlin
Version 1.1.0-rc03
26. Januar 2022
androidx.compose.foundation:foundation:1.1.0-rc03 und androidx.compose.foundation:foundation-layout:1.1.0-rc03 sind 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.foundation:foundation:1.1.0-rc01 und androidx.compose.foundation:foundation-layout:1.1.0-rc01 sind veröffentlicht. Version 1.1.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Es ist jetzt zulässig, negative Scroll-Offsets an
LazyListState.scrollToItem()undLazyListState.animateScrollToItem()zu übergeben. (Iceb90, b/184252837) - Ein Fehler wurde behoben, der dazu führte, dass Scrollaktionen für die Barrierefreiheit (I7cbfb) fehlten.
Version 1.1.0-beta04
1. Dezember 2021
androidx.compose.foundation:foundation:1.1.0-beta04 und androidx.compose.foundation:foundation-layout:1.1.0-beta04 sind 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 PointerInputchange als Ganzes genutzt werden kann oder mit denen geprüft werden kann, ob es genutzt wurde oder nicht. (I2e59d)
- Ein Vergrößerungs-Widget wird angezeigt, wenn der Cursor oder die Auswahl-Handles in Textfeldern gezogen werden. (I5391e, b/203781358)
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.foundation:foundation:1.1.0-beta03 und androidx.compose.foundation:foundation-layout:1.1.0-beta03 sind veröffentlicht. Version 1.1.0-beta03 enthält diese Commits.
API-Änderungen
- LazyVerticalGrid unterstützt jetzt auch horizontale Spannen. (I7e2fa, b/176758183)
Es wurde eine experimentelle Funktion zum Animieren von Lazy-List-Elementpositionen hinzugefügt. In LazyItemScope ist ein neuer Modifikator namens
Modifier.animateItemPlacement()verfügbar. Anwendungsbeispiel:var list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }- Wenn Sie einen Schlüssel über
LazyListScope.itemoderLazyListScope.itemsangeben, werden durch diesen Modifikator Animationen für das Neuanordnen von Elementen aktiviert. Neben der Neuanordnung von Elementen werden auch alle anderen Positionsänderungen, die durch Ereignisse wie Anordnungs- oder Ausrichtungsänderungen verursacht werden, animiert. (I59e7b, b/150812265)
- Wenn Sie einen Schlüssel über
Version 1.1.0-beta02
3. November 2021
androidx.compose.foundation:foundation:1.1.0-beta02 und androidx.compose.foundation:foundation-layout:1.1.0-beta02 sind veröffentlicht. Version 1.1.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Ripples und andere Hinweise werden jetzt nur noch verzögert, wenn sie sich in einem
Modifier.scrollable()-Container befinden, anstatt immer bei einem Down-Ereignis verzögert zu werden. (Ibefe0, b/203141462) - Die experimentelle BringIntoView API wurde hinzugefügt. Mit ihr können Sie eine Anfrage an die Eltern senden, damit sie scrollen, um ein Element in den sichtbaren Bereich zu bringen (Ib918d, b/195353459).
Externe Beiträge
Modifier.pointerHoverIconwurde hinzugefügt. (I95f01)
Version 1.1.0-beta01
27. Oktober 2021
androidx.compose.foundation:foundation:1.1.0-beta01 und androidx.compose.foundation:foundation-layout:1.1.0-beta01 sind veröffentlicht. Version 1.1.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Die experimentelle BringIntoView API wurde hinzugefügt. Mit ihr können Sie eine Anfrage an die Eltern senden, damit sie scrollen, um ein Element in den sichtbaren Bereich zu bringen (Ib918d, b/195353459).
Version 1.1.0-alpha06
13. Oktober 2021
androidx.compose.foundation:foundation:1.1.0-alpha06 und androidx.compose.foundation:foundation-layout:1.1.0-alpha06 sind veröffentlicht. Version 1.1.0-alpha06 enthält diese Commits.
API-Änderungen
- Für „Layout“ wurde eine überladene Funktion ohne untergeordnete Elemente hinzugefügt, die effizienter ist (Ib0d9a).
SemanticsNodeInteraction.performSemanticsActiongibt jetzt dasSemanticsNodeInteractionzurück, für das die Funktion aufgerufen wurde. (I9e5db)- Added
performScrollToNode(matcher: SemanticsMatcher)that scrolls a scrollable container to the content that is matched by the given matcher. (Ic1cb8)
Version 1.1.0-alpha05
29. September 2021
androidx.compose.foundation:foundation:1.1.0-alpha05 und androidx.compose.foundation:foundation-layout:1.1.0-alpha05 sind veröffentlicht. Version 1.1.0-alpha05 enthält diese Commits.
API-Änderungen
- PointerEventChange wurden experimentelle Verlaufszeiger hinzugefügt. (Ic1fd8, b/197553056, b/199921305)
Fehlerkorrekturen
- Die Barrierefreiheitsunterstützung für scrollbare Elemente (sowohl Lazy- als auch Nicht-Lazy-Elemente) in Bezug auf das Scrollen wurde korrigiert (I6cdb0).
Version 1.1.0-alpha04
15. September 2021
androidx.compose.foundation:foundation:1.1.0-alpha04 und androidx.compose.foundation:foundation-layout:1.1.0-alpha04 sind veröffentlicht. Version 1.1.0-alpha04 enthält diese Commits.
API-Änderungen
- Die Methoden
performGestureundGestureScopewurden verworfen und durchperformTouchInputundTouchInjectionScopeersetzt. (Ia5f3f, b/190493367) touchBoundsInRootwurde zuSemanticsNodehinzugefügt. Diese enthält die Mindestgröße für Berührungszielbereiche, damit Entwickler sicherstellen können, dass Berührungszielbereiche die Mindestanforderungen an die Barrierefreiheit erfüllen. (I2e14b, b/197751214)
Fehlerkorrekturen
- 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.foundation:foundation:1.1.0-alpha03 und androidx.compose.foundation:foundation-layout:1.1.0-alpha03 sind 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
- Es wurde ein Glüheffekt für das Scrollen hinzugefügt. Es wurde eine neue experimentelle OverScrollConfiguration-API hinzugefügt, mit der der visuelle Overscroll-Effekt konfiguriert werden kann. Geben Sie „null“ an, um den Overscroll-Effekt zu deaktivieren. (I0c304, b/171682480)
- AwaitPointerEventScope hat jetzt withTimeout() und withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- Es wurde eine Testmethode zum Abrufen der beschnittenen Grenzen hinzugefügt. (I6b28e)
- 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)
Version 1.1.0-alpha02
18. August 2021
androidx.compose.foundation:foundation:1.1.0-alpha02 und androidx.compose.foundation:foundation-layout:1.1.0-alpha02 sind veröffentlicht. Version 1.1.0-alpha02 enthält diese Commits.
API-Änderungen
- DpSize-Versionen für
Modifier.sizeundrequiredSizehinzugefügt (I3fc7e, b/194219828)
Version 1.1.0-alpha01
4. August 2021
androidx.compose.foundation:foundation:1.1.0-alpha01 und androidx.compose.foundation:foundation-layout:1.1.0-alpha01 sind veröffentlicht. Version 1.1.0-alpha01 enthält diese Commits.
API-Änderungen
- Die Methode
DrawScope#drawImagewurde aktualisiert und 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). - Im TextField wird die Auswahl jetzt gelöscht, wenn die Zurück-Schaltfläche gedrückt wird. Das entspricht dem Verhalten von EditText unter Android. (I3ca16, b/174173645)
- Cursor-Handle hinzufügen (I07a82, b/173016579)
Fehlerkorrekturen
- Das Scrollen über semantische Aktionen für Lazy Lists und reguläre Scrollkomponenten ist jetzt animiert (Id9066, b/190742024).
Externe Beiträge
LazyVerticalGridakzeptiert jetzt sowohl Parameter für die horizontale als auch für die vertikale Anordnung. (If9c92)
Version 1.0
Version 1.0.5
3. November 2021
androidx.compose.foundation:foundation:1.0.5 und androidx.compose.foundation:foundation-layout:1.0.5 sind 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.foundation:foundation:1.0.4 und androidx.compose.foundation:foundation-layout:1.0.4 sind 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.foundation:foundation:1.0.3 und androidx.compose.foundation:foundation-layout:1.0.3 sind 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.foundation:foundation:1.0.2 und androidx.compose.foundation:foundation-layout:1.0.2 sind 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.foundation:foundation:1.0.1 und androidx.compose.foundation:foundation-layout:1.0.1 sind 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.foundation:foundation:1.0.0 und androidx.compose.foundation:foundation-layout:1.0.0 sind 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-Release-Blog.
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.foundation:foundation:1.0.0-rc02 und androidx.compose.foundation:foundation-layout:1.0.0-rc02 sind veröffentlicht. Version 1.0.0-rc02 enthält diese Commits.
- Die Darstellung von Rahmen für generische Formen wurde aktualisiert, um Probleme mit Pfaden zu beheben, die mit festen Abmessungen definiert sind. (aosp/1748871, b/191817116)
Version 1.0.0-rc01
1. Juli 2021
androidx.compose.foundation:foundation:1.0.0-rc01 und androidx.compose.foundation:foundation-layout:1.0.0-rc01 sind veröffentlicht. Version 1.0.0-rc01 enthält diese Commits.
API-Änderungen
- Canvas unterstützt jetzt einen „contentDescription“-Parameter für die Barrierefreiheit. (Ib547c)
Fehlerkorrekturen
- Deaktivierte Schaltflächen, Karten, Kästchen und insgesamt
Modifier.clickable(enabled=false)verhindern, dass Klicks an das übergeordnete Element weitergeleitet werden. (Ic2c3b, b/183908811)
Version 1.0.0-beta09
16. Juni 2021
androidx.compose.foundation:foundation:1.0.0-beta09 und androidx.compose.foundation:foundation-layout:1.0.0-beta09 sind veröffentlicht. Version 1.0.0-beta09 enthält diese Commits.
API-Änderungen
ManualFrameClockwurde entfernt. Wenn Sie Animationen steuern möchten, verwenden Sie stattdessencomposeTestRule.mainClock. (I3c3e8, b/189951065)- enum Role und LiveRegionMode in Inline-Klassen mit privatem Konstruktor ändern (Id1890)
- „KeyboardCapitalization“ wird in eine Inline-Klasse konvertiert. (Id5a1c)
- „TextOverflow“ wird in eine Inline-Klasse geändert. (I433af)
Fehlerkorrekturen
- Wenn Sie jetzt die eindeutigen Schlüssel für LazyColumn-/Row-Elemente angeben, wird die Scrollposition basierend auf dem Schlüssel beibehalten. Wenn Sie also Elemente vor dem aktuell sichtbaren Element hinzufügen oder entfernen, bleibt das Element mit dem angegebenen Schlüssel das erste sichtbare Element. (Id263f, b/184257857)
- Die wichtigsten Konstanten sind derzeit @ExperimentalComposeUiApi. Code, der verwendet wird, kann private Konstanten vor der Stabilisierung deklarieren. (Ia5d48)
- AndroidComposeTestRule wurde IdlingStrategy hinzugefügt, das von Test-Frameworks verwendet werden kann, um einen alternativen Mechanismus zum Warten oder Erreichen des Ruhezustands zu installieren. Verwenden Sie
AndroidComposeTestRule.setIdlingStrategyFactory(), bevor Ihr Test beginnt, um Ihre eigene Strategie zu installieren. (I608fa)
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.foundation:foundation:1.0.0-beta08 und androidx.compose.foundation:foundation-layout:1.0.0-beta08 sind veröffentlicht. Version 1.0.0-beta08 enthält diese Commits.
API-Änderungen
- Das Enum „NestedScrollSource“ wurde durch eine Inline-Klasse ersetzt. (Ie321b, b/187055290)
- 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)
- Es wurde ein Tipp-Timeout für klickbare/umschaltbare Elemente hinzugefügt, um zu verhindern, dass während eines Scroll- oder Ziehvorgangs ein Ripple-Effekt angezeigt wird (Ia2704, b/168524931).
- 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)- Das Enum „KeyboardType“ 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)
AnnotatedString.withAnnotation-Funktionen sind jetzt ExperimentalTextApi anstelle von ExperimentalComposeApi. (I0cd0a)- Der TextUnit-Konstruktor mit TextUnitType ist jetzt ExperimentalTextApi anstelle von ExperimentalComposeApi.
- PaddingValues ist jetzt
@Stablestatt@Immutable(I88c50)
Fehlerkorrekturen
- Behebung von Abstürzen bei langem Drücken des leeren Bereichs in nicht leerem Text. (I33ab5, b/187437299)
- Symbolleiste nach „Alle auswählen“ anzeigen (I495d9, b/185919613)
- Problem behoben, bei dem scrollbare Container ihre untergeordneten Elemente auf der Querachse abgeschnitten haben. Das Problem war leicht zu reproduzieren, wenn Sie eine LazyRow mit Card-Elementen hatten. Der Schatten wird jetzt nicht mehr abgeschnitten. (Icb635, b/186318448)
- Ein Problem wurde behoben, bei dem Wellen oder andere Hinweise bei einem langen Klick mit Modifier.combinedClickable manchmal hängen blieben (I2298c, b/186223077).
- 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). 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 Modifizierer jetzt beeinflusst, welche Koordinaten gemeldet werden. (Ieb67d, b/177926591)
Version 1.0.0-beta07
18. Mai 2021
androidx.compose.foundation:foundation:1.0.0-beta07 und androidx.compose.foundation:foundation-layout:1.0.0-beta07 sind veröffentlicht. Version 1.0.0-beta07 enthält diese Commits.
API-Änderungen
- Die Logik zum Vorabrufen des nächsten sichtbaren Elements wird für LazyColumn/Row eingeführt (I8a4bc, b/184940225)
- Auswahlgriff für Clips hinzugefügt (Iff80d, b/183408447)
Fehlerkorrekturen
- Bei LazyColumn/Row bleiben jetzt bis zu zwei zuvor sichtbare Elemente aktiv (werden nicht verworfen), auch wenn sie bereits herausgescrollt wurden. So kann die Komponente die aktiven Unterkompositionen wiederverwenden, wenn ein neues Element zusammengesetzt werden muss. Das verbessert die Scrollleistung. (Ie5555)
- Entfernen Sie „paintBackground“. (I38660)
- Zeichnen Sie den Auswahlhintergrund mit DrawScope. (I73c61, b/186674472)
- Ein Fehler in Beta 06, der sich auf Zeilen/Spalten mit „spacedBy“-Anordnungen für das Layout gewichteter untergeordneter Elemente auswirkte, wurde behoben. (Ifaf8c, b/187326588)
Version 1.0.0-beta06
5. Mai 2021
androidx.compose.foundation:foundation:1.0.0-beta06 und androidx.compose.foundation:foundation-layout:1.0.0-beta06 sind veröffentlicht. Version 1.0.0-beta06 enthält diese Commits.
API-Änderungen
- Konflikt mit Navigationsgeste beheben (I1145e)
- Es wurden die Bedienungshilfen-APIs „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 Schlüssel-Wert-Paaren abzurufen. Beide Aktionen werden von LazyList implementiert.- Die Funktionen
SemanticsNodeInteraction.performScrollToIndexundSemanticsNodeInteraction.performScrollToKeywurden hinzugefügt. MitSemanticsNodeInteraction.performScrollToIndexwird eine Liste zum angegebenen Index gescrollt und mitSemanticsNodeInteraction.performScrollToKeywird eine Liste zum Element mit dem angegebenen Schlüssel gescrollt. (I4fe63, b/178483889, b/161584524)
- Die Funktionen
- Unterstützung für das Speichern von AnnotatedString in TextFieldValue.Saver. Die Hilfsfunktionen „addTtsAnnotation“ und „withAnnotation“ wurden zu „AnnotatedString.Builder“ hinzugefügt. (I8cbdc, b/178446304)
- Standardparameterwerte für
0.dpwurdenPaddingValues(horizontal, vertical)hinzugefügt (I05571, b/181336792)
Fehlerkorrekturen
- Untergeordnete Zeilen und Spalten mit
weight(fill = false)sorgen nicht mehr dafür, dass der übergeordnete Container den gesamten verfügbaren Platz auf der Hauptachse ausfüllt. (Ied94d, b/186012444, b/184355105)
Version 1.0.0-beta05
21. April 2021
androidx.compose.foundation:foundation:1.0.0-beta05 und androidx.compose.foundation:foundation-layout:1.0.0-beta05 sind veröffentlicht. Version 1.0.0-beta05 enthält diese Commits.
API-Änderungen
- Die FlingBehavior-Schnittstelle ist jetzt mit @Stable gekennzeichnet. Alle Implementierungen müssen dem
@Stable-Vertrag entsprechen. (I93354, b/184830577)
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 aus 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.foundation:foundation:1.0.0-beta04 und androidx.compose.foundation:foundation-layout:1.0.0-beta04 sind veröffentlicht. Version 1.0.0-beta04 enthält diese Commits.
API-Änderungen
- Benennen Sie hideSoftwareKeyboard und showSoftwareKeyboard in SoftwareKeyboardController in
hide()bzw.show()um.- Die vollständige CompositionLocal-Schnittstelle für LocalSoftwareKeyboardController wird bereitgestellt, sodass sie festgelegt werden kann (besonders nützlich in Tests) (I579a6).
TextOverflow.Visiblewird eingeführt. (Ic8f89)- Öffentliche Instanzen von
RowScope,ColumnScope,BoxScopeundBoxWithConstraintsScopewurden entfernt. (I4e83e, b/181869067)
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). Vor dieser Änderung konnten lokale zusammensetzbare Funktionen basierend auf ihren Parametern übersprungen werden. Nach dieser Änderung werden keine lokalen zusammensetzbaren Funktionen mehr übersprungen. Diese Änderung wurde vorgenommen, weil es üblich und zu erwarten ist, dass lokale Funktionen Parameter vom übergeordneten Element erfassen. Das Überspringen von Parametern ist eine häufige Fehlerquelle.
Zusammenfassend lässt sich das anhand des folgenden Beispiels veranschaulichen:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }Vor dieser Änderung wurde die zusammensetzbare Funktion
ShowCountimmer übersprungen, auch nachdem der Parametercountaktualisiert wurde. Diese Änderungen haben wir jedoch nicht vorgenommen (I5648a)
Version 1.0.0-beta03
24. März 2021
androidx.compose.foundation:foundation:1.0.0-beta03 und androidx.compose.foundation:foundation-layout:1.0.0-beta03 sind veröffentlicht. Version 1.0.0-beta03 enthält diese Commits.
API-Änderungen
DefaultMonotonicFrameClockist veraltet. Wenn SiewithFrameNanosoderRecomposer.runRecomposeAndApplyChangesohneMonotonicFrameClockaufrufen, wird jetztIllegalStateExceptionausgegeben. (I4eb0d)
Fehlerkorrekturen
FlingBehavior.performFling()wird jetzt auch aufgerufen, wenn die Geschwindigkeit 0 ist (I0b6e5, b/181237123).
Version 1.0.0-beta02
10. März 2021
androidx.compose.foundation:foundation:1.0.0-beta02 und androidx.compose.foundation:foundation-layout:1.0.0-beta02 sind veröffentlicht. Version 1.0.0-beta02 enthält diese Commits.
API-Änderungen
- Es wurden mehrere kleine Optimierungen an der Messlogik von LazyColumn vorgenommen (Ic6889).
- Neue
LocalSoftwareKeyboardController-Kompositions-Local-API hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle für TextField zu ersetzen. (I5951e, b/168778053) - Neue
LocalSoftwareKeyboardController-Kompositions-Local-API hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle für TextField zu ersetzen. (I84472, b/168778053)
Fehlerkorrekturen
- Einschränkungen für die öffentliche Nutzung experimenteller APIs erzwingen (I6aa29, b/174531520)
Version 1.0.0-beta01
24. Februar 2021
androidx.compose.foundation:foundation:1.0.0-beta01 und androidx.compose.foundation:foundation-layout:1.0.0-beta01 sind 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 Werte sind nicht mehr experimentell. (I15744)
- Geräteprofil-Assertions entfernt (I798d2)
- Der SoftwareKeyboardController-Callback wurde aus allen Textfeldern entfernt und wird in Kürze durch eine neue API ersetzt. (Iae869, b/168778053)
- 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)
- Die eingestellten LayoutCoordinates-Methoden wurden entfernt. Verwenden Sie für „positionInParent“ und „boundsInParent“ die Funktion anstelle der Eigenschaft. (I580ed, b/169874631, b/175142755)
- 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 Messbeschrä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)
LazyListState.animateScrollToItem hinzufügen
Mit dieser Methode wird ein sanfter Bildlauf zu einem bestimmten Element in der Liste ausgeführt. (I4bfd7)
ScrollableState.smoothScrollBy() wurde in animateScrollBy() umbenannt. LazyListState.snapToItemIndex() wurde in scrollToItem() umbenannt. ScrollState.smoothScrollTo() wurde in animateScrollTo() umbenannt. (I35ded)
Modifier.zoomable wurde durch Modifier.transformable ersetzt. smoothPanBy und smoothRotationBy wurden als Funktionen hinzugefügt. (Ifc32b, b/175294473)
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 empfehlen, keine lokalen 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)Indication#createIndication()wurde inIndication#rememberUpdatedIndication(InteractionState)geändert und der ParameterInteractionStatewurde aus IndicationInstance#drawIndication()entfernt. IndicationInstance sollte nur für das Zeichnen visueller Effekte zuständig sein und nicht Animationen starten oder den Status als Reaktion auf InteractionState-Änderungen schreiben. Diese Animationen und Statusänderungen sollten stattdessen inrememberUpdatedIndication()erfolgen. Der ParameterindicationinModifier.indicationwurde ebenfalls in einen erforderlichen Parameter geändert. (Ic1764, b/152525426)Fokus wird jetzt automatisch bei Textaktionen geprüft (I13777, b/179648629)
runBlockingWithManualClockentfernt (I15cdc, b/179664814)Die Scrollposition in Modifier.verticalScroll()/horizontalScroll() wird jetzt mit Ints dargestellt (I81298).
Die Pakete der Methoden „smoothScrollBy“ und „scrollBy“ wurden in
androidx.compose.foundation.gestures.*geändert (I3f7c1, b/175294473)FlingConfig wurde in FlingBehavior umbenannt und ermöglicht jetzt die Anpassung der Suspend-Animation anstelle von vordefinierten Decays. (I02b86, b/175294473)
Größenmodifizierer wurden umbenannt. „Modifier.width“/„height“/„size“ wurden in „requiredWidth“/„requiredHeight“/„requiredSize“ umbenannt. Modifier.preferredWidth/preferredHeight/preferredSize wurden in width/height/size umbenannt. (I5b414)
„defaultMinSizeConstraints“ wurde in „defaultMinSize“ umbenannt. (I4eaae)
Modifier.tapGestureFilter wurde entfernt. Verwenden Sie stattdessen
Modifier.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 Fundierungspaket verschoben. VelocityTracker wurde von ui.gesture zu ui.input.pointer verschoben. (Iff4a8, b/175294473)
AnimationClockObservable und abgeleitete Klassen wurden entfernt. AnimatedFloat wurde entfernt. (Icde52, b/177457083)
drawerState.open() und drawerState.close() sind jetzt suspend-Funktionen. Verwenden Sie rememberCoroutineScope(), um den Bereich der Komposition abzurufen, um sie aufzurufen (I16f60, b/175294473).
„Providers“ wurde in „CompositionLocalProvider“ umbenannt.
- Der Konstruktor „Composition“ akzeptiert keinen Schlüsselparameter mehr und wurde eingestellt.
- currentCompositeKeyHash wurde in eine zusammensetzbare Property auf oberster Ebene anstelle einer zusammensetzbaren Funktion auf oberster 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
@TestOnly-Funktion „clearRoots“ auf oberster Ebene 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 anderen 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 darstellen.
- (I99b7d, b/177245490)
Modifier.scrollable wurde überarbeitet. Jetzt wird die Scrollable-Schnittstelle anstelle der ScrollableController-Klasse verwendet (I4f5a5, b/174485541, b/175294473).
„Modifier.draggable“ akzeptiert jetzt „DraggableState“ anstelle einer einfachen Lambda-Funktion. Sie können den Status über
rememberDraggableState { delta -> }erstellen, um das gleiche Verhalten wie zuvor zu erhalten (Ica70f, b/175294473).Die Modifikatoren „requiredWidth(IntrinsicSize)“ und „requiredHeight(IntrinsicSize)“ wurden für die erforderliche Größenanpassung an intrinsische Größen hinzugefügt. (I0a6b4)
Die verworfene
emptyContent()wurde entfernt. Verwenden Sie stattdessen{}. (Idb33f, b/179432510)Einige zuvor verworfene APIs wurden gelöscht (Ice5da, b/178633932)
Fehlerkorrekturen
- 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.foundation:foundation:1.0.0-alpha12 und androidx.compose.foundation:foundation-layout:1.0.0-alpha12 sind veröffentlicht. Version 1.0.0-alpha12 enthält diese Commits.
API-Änderungen
- 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)
- Aktualisierung für Tests: Mit hasText() wird sowohl der Eingabe- als auch der Label-/Hinweis-/Platzhaltertext im Textfeld geprüft (Iab803)
- PaddingValues.Absolute wurde hinzugefügt und kann in APIs verwendet werden, die PaddingValues akzeptieren. (Ia5f30)
- onImeActionPerformed ist veraltet. Verwenden Sie stattdessen KeyboardActions (If0bbd, b/179071523).
- 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
InfiniteAnimationPolicy-Coroutine-Kontextelement eingeführt, das in Endlosanimationen angewendet wird. Standardmäßig ist keine Richtlinie installiert, außer wenn Tests mitComposeTestRuleausgeführt werden. (I50ec4, b/151940543) - Animatable.snapTo und Animatable.stop sind jetzt suspend-Funktionen (If4288)
- 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)
Unterstützung für benutzerdefinierte Schlüssel für LazyColumn/LazyRow wurde hinzugefügt. So können wir die Neuordnung von Artikeln besser handhaben. Der in remember {} -Blöcken gespeicherte Status wird also zusammen mit dem Element verschoben, wenn Sie Elemente neu anordnen oder das Element aus der Mitte entfernen.
LazyColumn { items(users, key = { user -> user.id }) { ... } }„Indication#createInstance“ wurde in „@Composable“ geändert und „LocalIndication“ enthält jetzt eine „Indication“ und nicht „() -> Indication“. (I5eeea, b/157150564)
Constraints.enforcewurde durchConstraints.constrainersetzt. (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 verwendet, die Floats zurückgeben, anstelle von direkten Float-Werten. (If4a35, b/178657186)
Es wurden „EditableText“-Semantiken hinzugefügt, um bearbeitbaren Eingabetext des Textfelds für die Barrierefreiheit zu kennzeichnen, sowie entsprechende Testmethoden zum Prüfen der Semantik (I8e07a).
„Modifier.clickable“ unterstützt jetzt keine Doppel- und Langklicks mehr. Verwenden Sie Modifier.combinedClickable, um diese Funktion zu nutzen. (Iafad1)
toIntPx() wurde in roundToPx() umbenannt. (I9b7e4, b/173502290)
„IntBounds“ wurde in „IntRect“ umbenannt und die API wurde verbessert. (I1f6ff)
„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)
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. Sie sollten stattdessenrememberSaveable { mutableStateOf(0) }verwenden. Der Wert wird automatisch gespeichert und wiederhergestellt, wenn der in MutableState verwendete Typ im Bundle gespeichert werden kann. Wenn Sie zuvor ein benutzerdefiniertes Saver-Objekt übergeben haben, müssen Sie jetzt eine neue Überladung von „rememberSaveable“ 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 Spielzeit in Animationen wird jetzt in Nanosekunden angegeben (If776a).
@ComposableContract wurde zugunsten von drei spezifischeren Annotationen eingestellt.
@ComposableContract(restartable = false)wurde zu@NonRestartableComposable.@ComposableContract(readonly = true)wurde zu@ReadOnlyComposable.@ComposableContract(preventCapture = true)wurde zu@DisallowComposableCalls.@ComposableContract(tracked = true)wurde entfernt. (I60a9d)Die Dienstprogramme
emptyContent()und(@Composable () -> Unit).orEmpty()wurden eingestellt, da sie keine positiven Auswirkungen auf die Leistung oder den Wert mehr haben (I0484d).Recomposers können jetzt geschlossen werden. Geschlossene Recomposer führen die Neuzusammenstellung so lange fort, bis die untergeordneten Coroutinen der Zusammensetzung abgeschlossen sind. „Recomposer.shutDown“ wurde in „cancel“ umbenannt, um es von „close“ abzugrenzen. (Ib6d76)
APIs im Zusammenhang mit LazyVerticalGrid sind als experimentell gekennzeichnet (Ia53e3, b/178519862)
rememberSavedInstanceState() wurde in rememberSaveable() umbenannt und in das Paket androidx.compose.runtime.saveable verschoben. (I1366e, b/177338004)
RestorableStateHolder wurde in SaveableStateHolder umbenannt und in das Paket androidx.compose.runtime.saveable verschoben. Die innere Methode „RestorableStateProvider“ wurde in „SaveableStateProvider“ umbenannt. Der generische Typ wurde entfernt, sodass Sie einfach „Any“ als Schlüssel übergeben können. Die experimentelle Anmerkung ist nicht mehr erforderlich. (I0902e, b/174598702)
Saver, listSaver(), mapSaver() und autoSaver wurden von androidx.compose.runtime.savedinstancestate nach androidx.compose.runtime.saveable verschoben (I77fe6).
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)
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)
„canDrag“ wurde aus „Modifier.scrollable“ entfernt. (Id66e7, b/175294473)
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 Schnittstelle 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)
Modifier.scaleGestureFilter wurde entfernt. Verwenden Sie stattdessen „Modifier.zoomable“. Alternativ können Sie
Modifier.pointerInput { detectMultitouchGestures { ... }}verwenden (Id5da1, b/175294473).AnimatedValue/Float wurde eingestellt. Verwenden Sie stattdessen „Animatable“. (I71345, b/177457083)
- CoreText und CoreTextField aus der öffentlichen API entfernt
- Nicht mehr unterstützte SelectionContainer-Überladung entfernt (I99c19)
Entfernen der eingestellten Funktionen für das Scrollen ohne Unterbrechung Die Funktionen für das Scrollen ohne Unterbrechung wurden wie in der letzten Version angekündigt vollständig entfernt. Bitte konvertieren Sie die Funktionen in suspend-Funktionen mit denselben Namen. Ein Koroutinenbereich kann über rememberCoroutineScope() abgerufen werden. (I3d39c, b/178169563)
androidx.compose.foundation.layout.ConstraintLayout wurde zugunsten von androidx.constraintlayout.compose.ConstraintLayout eingestellt. Sie müssen eine Abhängigkeit von
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01hinzufügen. (I87adc)tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter und pressIndicaitonGestureFilter wurden eingestellt. Verwenden Sie stattdessen Modifier.clickable oder Modifier.pointerInput mit der Funktion detectTapGestures. (I6baf9, b/175294473)
Recomposer.current()wurde entfernt. [Zusammenfassung]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 Animations-Ticks werden pausiert, wenn der Host-Lebenszyklus beendet wird. (I38e11)Recomposer.runningRecomposers bietet jetzt einen globalen StateFlow von schreibgeschützten RecomposerInfo-Objekten, mit denen der laufende Kompositionsstatus im Prozess beobachtet werden kann. Diese API sollte gegenüber Recomposer.current() bevorzugt werden, da diese jetzt als eingestellt gilt. (If8ebe)
Version 1.0.0-alpha11
28. Januar 2021
androidx.compose.foundation:foundation:1.0.0-alpha11 und androidx.compose.foundation:foundation-layout:1.0.0-alpha11 sind veröffentlicht. Version 1.0.0-alpha11 enthält diese Commits.
API-Änderungen
scrollBy ohne Unterbrechung einstellen, scrollTo ohne Unterbrechung entfernen
Wir empfehlen jetzt, das Scrollen mit Suspend-Funktionen zu steuern und zu warten, bis das Scrollen abgeschlossen ist. Im Rahmen dieser Umstellung werden die Versionen dieser Funktionen, die nicht zum Sperren verwendet werden, eingestellt und/oder entfernt. (Ie9ced)
smoothScrollBy ohne suspend wird eingestellt Wir empfehlen jetzt, suspend-Funktionen zu verwenden, um das Scrollen zu steuern und zu warten, bis das Scrollen abgeschlossen ist. Im Rahmen dieser Umstellung werden die Versionen dieser Funktionen, die nicht suspendiert werden, eingestellt. (I12880)
Dem Bild und dem Symbol wurde der Parameter „Inhaltsbeschreibung“ hinzugefügt. Sie wird verwendet, um Bedienungshilfen (I2ac4c) eine Beschreibung zu geben.
BasicTextField hat einen neuen Parameter namens „decorationBox“ erhalten. Damit können dem Textfeld Dekorationen wie Symbole, Platzhalter und Labels hinzugefügt und der Trefferbereich vergrößert werden. (I16996)
Der Parameter „canDrag“ wurde aus „Modifier.draggable“ entfernt (Ic4bec, b/175294473).
Die AnimatedFloat.fling-Funktion, die FlingConfig akzeptiert, wurde entfernt. Verwenden Sie stattdessen „suspendAnimatable.animateDecay“. (I4659b, b/177457083)
data classaus den folgenden Kursen entfernt:- InlineTextContent
- LocaleList
- (I605c7)
Klickbare, ein- und ausschaltbare sowie auswählbare Elemente können jetzt außerhalb der Komposition erstellt werden (I0a130, b/172938345, b/175294473).
ScrollableColumn/Row wurden verworfen. Die Verwendung von „ScrollableColumn“ ist weniger effizient als „LazyColumn“, wenn Sie viele Inhalte haben, die gescrollt werden müssen, da mit „LazyColumn“ nur sichtbare Elemente zusammengestellt, gemessen und gezeichnet werden können. Um zu verhindern, dass Nutzer ineffiziente Methoden verwenden, 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 Modifikatoren direkt verwenden, z. B. so: 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 bei Verwendung manuell importiert werden. Neue Erweiterungsüberladungen für Arrays: „items(items: Array)“ und „itemsIndexed(Array)“ (I803fc, b/175562574)Die verworfene Funktion „AbsoluteArrangement“ wurde entfernt. (Iffa96, b/177641870)
Der Parameter „propagateMinConstraints“ wurde „Box“ hinzugefügt, um anzugeben, ob die eingehenden Mindestanforderungen an den Inhalt der Box weitergegeben werden sollen oder nicht. Der Standardwert ist „false“. (I0125b, b/152613457)
Fehlerkorrekturen
- „onCommit“, „onDispose“ und „onActive“ wurden zugunsten der APIs „SideEffect“ und „DisposableEffect“ eingestellt (If760e).
- „WithConstraints“ wurde als „BoxWithConstraints“ überarbeitet und nach „foundation.layout“ verschoben. (I9420b, b/173387208)
Ä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)
Die Dichte ist jetzt der Empfängerbereich für Arrangement-Schnittstellen. (I18aad)
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)
„Duration“ und „Uptime“ werden durch „Long milliseconds“ ersetzt. Mit diesem Schritt wird die Abhängigkeit der Zeigereingabe von diesen Klassen entfernt. (Ia33b2, b/175142755, b/177420019)
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 Unterkompositionen 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 aufgrund einer Ausnahme vorzeitig beendet wird oder die Komposition verworfen wird, weil der Status, für den sie erstellt wurde, nicht mehr aktuell oder anderweitig nicht mehr erforderlich ist. Wenn die Instanz vonRememberObserver, die der Empfehlung für einzelne Referenzen oben folgt, eine externe Ressource verfolgt, geben sowohlonForgottenals auchonAbandonedan, dass die Ressource nicht mehr benötigt wird. Wenn das Objekt die inonRememberedbegonnene Arbeit oder zugewiesene Ressourcen verfolgt, kannonAbandonedignoriert werden, da es nicht aufgerufen wird, wennonRememberedaufgerufen wird. (I02c36)TransformedText.transformedText wurde in TransformedText.text umbenannt
- „TransformedText“ ist keine Datenklasse mehr (Ie672a)
Die folgenden Klassen sind keine Datenklassen mehr:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
Experimentelle monotonicFrameAnimationClockOf-Methoden entfernt (Ib753f, b/170708374)
Globale Koordinatenmethoden wurden eingestellt und neue fensterbasierte Koordinatenmethoden eingeführt. (Iee284)
Verwenden Sie stattdessen „ImeAction.None“.
- Verwenden Sie ImeAction.Default anstelle von ImeAction.Unspecified (Ie1bcc).
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)
VisualTransformation wurde in ein funktionales Interface geändert (I3bba4)
TestCoroutineDispatcher in Tests verwenden (I532b6)
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)
TextInputService.onStateUpdated wurde in updateState umbenannt (Id4853)
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)
Version 1.0.0-alpha10
13. Januar 2021
androidx.compose.foundation:foundation:1.0.0-alpha10 und androidx.compose.foundation:foundation-layout:1.0.0-alpha10 sind veröffentlicht. Version 1.0.0-alpha10 enthält diese Commits.
API-Änderungen
- 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)
- Ä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)
- Velocity wurde so geändert, dass es aus Komponenten besteht und mathematische Operationen unterstützt. (Ib0447)
- @ExperimentalTesting wurde in @ExperimentalTestApi umbenannt, um mit ähnlichen experimentellen API-Annotationen übereinzustimmen (Ia4502, b/171464963).
- Die experimentelle Methode „stickyHeader“ für „LazyColumn“/„LazyRow“ wurde hinzugefügt (I0a81d).
- Ranamed Color.useOrElse() to Color.takeOrElse() (Ifdcf5)
- TestUiDispatcher ist veraltet. Verwenden Sie stattdessen Dispatchers.Main (Ic171f, b/175385255).
- 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)
- FlowRow und FlowColumn wurden eingestellt. Verwenden Sie stattdessen ein benutzerdefiniertes Layout. (I09027)
- „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)
fun Dp.isFinite()wurde inval Dp.isFinitegeändert (I50e00)- „Constraints#satisfiedBy“ wurde in „isSatisfiedBy“ umbenannt. (I9cf5c)
- „isSpecified“, „isUnspecified“ und „useOrElse“ für Inline-Klassen mit einer „Unspecified“-Konstante hinzugefügt. (I93f7b, b/174310811)
Fehlerkorrekturen
- Neue coroutinenbasierte API
Animatable, die für gegenseitigen Ausschluss zwischen den Animationen sorgt. Neue DecayAnimationSpec zur Unterstützung mehrdimensionaler Decay-Animationen (I820f2, b/168014930) - Unterstützung für deaktivierte und schreibgeschützte Textfelder hinzugefügt (I35279, b/171040474, b/166478534)
animate()wurde durchanimateAsState()ersetzt, dasState<T>anstelle vonTzurü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 für den klickbaren, auswählbaren und umschaltbaren SemanticsModifier hinzu. „Modifier.progressSemantics“ wurde so geändert, dass es auch für „Slider“ verwendet werden kann. (I216cd)
- Auf das native keyEvent kann jetzt über keyEvent.nativeKeyEvent zugegriffen werden (I87c57, b/173086397).
Version 1.0.0-alpha09
16. Dezember 2020
androidx.compose.foundation:foundation:1.0.0-alpha09 und androidx.compose.foundation:foundation-layout:1.0.0-alpha09 sind veröffentlicht. Version 1.0.0-alpha09 enthält diese Commits.
API-Änderungen
Scrollable-Schnittstelle hinzufügen
So können ScrollState und LazyListState als gemeinsamer Typ behandelt werden, sodass benutzerdefiniertes Scrollen für beide Typen implementiert werden kann.
Außerdem wird „smoothScrollBy“ in eine Erweiterungsfunktion für „Scrollable“ verschoben, um diese Funktion zu nutzen. (I2153b)
LazyVerticalGrid wurde hinzugefügt. (I17267, b/162213211)
LazyColumnFor, LazyRowFor, LazyColumnForIndexed und LazyRowForIndexed werden eingestellt. LazyColumn und LazyRow verwenden (I5b48c)
Für das Anhalten von APIs für die Zeigereingabe wurde HandlePointerInputScope in AwaitPointerEventScope und handlePointerInput() in awaitPointerEventScope() umbenannt. (Idf0a1, b/175142755)
„LazyListState.layoutInfo“ wurde hinzugefügt. Damit wird die Liste der Größen und Offsets der aktuell sichtbaren Elemente verfügbar gemacht. (If8678, b/170472532)
Die Annotation „ExperimentalPointerInput“ wurde entfernt (Ia7a24).
Unterstützung für InteractionState für TextFields wurde hinzugefügt. (I61d91)
Füge den Parameter „reverseLayout“ für LazyColumn/Row hinzu. Wenn
true, werden Elemente von unten nach oben zusammengesetzt. BeiLazyListState.firstVisibleItemIndex == 0befindet sich das erste Element unten. (I552ae, b/166589935)Für LazyColumn wurde der Parameter „verticalArrangement“ hinzugefügt. Der Parameter „horizontalArrangement“ wurde für „LazyRow“ hinzugefügt. Mit „Arrangement“ können wir einen Abstand zwischen Elementen einfügen und die Anordnung der Elemente festlegen, wenn nicht genügend Elemente vorhanden sind, um die Mindestgröße auszufüllen. (Icf79a, b/170394300)
detectMultitouchGestures verwendet jetzt einen Callback mit kombinierten Parametern für Schwerpunkt, Schwenken, Zoomen und Drehen. (Ie6e1c)
ContentDrawScope wurde in das Modul „ui-graphics“ verschoben, um mit DrawScope zusammen zu sein. (Iee043, b/173832789)
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. Diese wurden zuvor als „InternalComposeAPI“ gekennzeichnet. Sie sind jetzt intern im Compose-Modul.
CompositionData und CompositionGroup wurden als Ersatz für die ui-tooling API hinzugefügt, um Kompositionsinformationen zu extrahieren. Diese sind öffentlich, aber nicht für die Verwendung außerhalb der UI-Tooling-API vorgesehen, da sie die Rohinformationen liefern, die die UI-Tooling-API interpretiert (I31a9c).
ShaderBrush wurde so umgestaltet, dass eine Shader-Instanz erst erstellt wird, wenn Größeninformationen der Zeichenumgebung verfügbar sind. Das ist nützlich, um Verläufe zu definieren, die zur Kompositionszeit die gesamten Zeichenbegrenzungen eines Composables einnehmen, ohne dass benutzerdefinierte DrawModifier-Implementierungen erforderlich sind.
Verworfene Konstruktor-APIs für Gradientenfunktionen zugunsten von Factory-Methoden für ein Gradient-Objekt. (I511fc, b/173066799)
„Modifier.focusObserver“ wurde eingestellt. Verwenden Sie stattdessen Modifier.onFocusChanged oder Modifier.onFocusEvent (I30f17, b/168511863, b/168511484).
Die Autofill API ist jetzt eine experimentelle API und erfordert die Einwilligung (I0a1ec)
Destrukturierungsdeklarationen zum Erstellen von FocusRequester-Instanzen hinzugefügt (I35d84, b/174817008)
„accessibilityLabel“ wurde in „contentDescription“ umbenannt. „accessibilityValue“ wurde in „stateDescription“ umbenannt. (I250f2)
Es wurden mehrere neue Funktionen in SelectionRegistrar eingeführt und onPositionChange wurde in notifyPositionChange umbenannt. (Ifbaf7)
AndroidOwner made internal (Ibcad0, b/170296980)
Neue Funktion „infiniteRepeatable“ zum Erstellen eines InfiniteRepeatableSpec (I668e5)
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 Bottom-up zu implementieren. Dieser musste in jeden Applier kopiert werden, der Bottom-up-Konstruktion für die Leistung benötigte. Mit dieser Änderung wirdinsertBottomUp()durchApplierüberschrieben, um einen Baum von unten nach oben zu erstellen, undinsertTopDown(), um den Baum von oben nach unten zu erstellen. (Icbdc2)Die painterResource-API wurde hinzugefügt, um das undurchsichtige Laden von Painter-Objekten aus gerasterten Asset-Formaten (z. B. PNGs) oder VectorDrawables zu ermöglichen. Verbraucher müssen den 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)
Die Factory-Funktion „buildAnnotatedString“ wurde hinzugefügt, um eine AnnotatedString zu erstellen. Die Builder-Funktion „annotatedString“ wurde eingestellt. (Idfe0b)
Version 1.0.0-alpha08
2. Dezember 2020
androidx.compose.foundation:foundation:1.0.0-alpha08 und androidx.compose.foundation:foundation-layout:1.0.0-alpha08 sind veröffentlicht. Version 1.0.0-alpha08 enthält diese Commits.
API-Änderungen
- Der Parameter
maxLineswurde ausCoreTextFieldentfernt. Wenn Sie die Höhe des Textfelds durch die Anzahl der Zeilen einschränken möchten, verwenden Sie stattdessenBasicTextField. (Iec002) - Die
await*TouchSlop()-Methoden wurden so geändert, dass sie das Herunterdrücken des Mauszeigers nicht erkennen, und in*OrCancellationumbenannt. Außerdem ist der ParameterorientationLocknicht mehr erforderlich. (Ie96e1) - 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) foundation:foundation-text-APIs wurden infoundation:foundationverschoben. Die Paketstruktur ist gleich geblieben (Id3eb2)- Neuer Multitouch-Gesterndetektor, einschließlich Helfer zum Erkennen von Drehung, Zoom und Schwenken. (Ic459d)
- 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-Council-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)
- Semantische Eigenschaften der Grundlage in „ui“ verschoben (I6f05c)
Auf Coroutinen basierende Scrolling-APIs hinzufügen:
Es wurden LazyListState.snapToItem und LazyListState.smoothScrollBy sowie APIs auf niedrigerer Ebene für die Scrollsteuerung hinzugefügt. Diese APIs bieten eine Suspend-Schnittstelle zum Steuern des Scrollens, die wartet, bis das Scrollen abgeschlossen ist, bevor sie zurückkehrt. (Ie5642)
In BasicTextField, TextField und OutlinedTextField wurde ein „singleLine“-Parameter hinzugefügt. Setzen Sie diesen Parameter auf „true“, damit das Textfeld eine einzelne horizontal scrollbare Zeile ist. (I57004, b/168187755)
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)
„Modifier.focusable“ wurde in „foundation“ ein „need“ 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)
Zuvor verworfene APIs wurden entfernt: „Border“ wurde entfernt. Verwenden Sie stattdessen „BorderStroke“. „Modifier.drawBorder“ wurde entfernt. Verwenden Sie stattdessen „Modifier.border“. „Modifier.gravity“ wurde entfernt. Verwenden Sie stattdessen „Modifier.align“. Stack wurde entfernt, verwenden Sie stattdessen Box (I32c2b, b/172470874)
„AbsoluteArrangement“ wurde in „Arrangement.Absolute“ umbenannt. (If26f2)
Fehlerkorrekturen
- 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äß dem Feedback des API-Teams in „GraphicsLayer“ aktualisiert. (I0bd29, b/173834241)
<T>wurde aus der SubcomposeLayout-Deklaration entfernt. Sie können es jetzt verwenden, ohne einen Typ anzugeben. (Ib60c8)- Die Felder „uptime“ und „position“ von „PointerInputData“ sind jetzt nicht mehr nullable. (Id468a)
- Mit MaterialTheme werden jetzt die richtigen Farben für Auswahlhandles und den Auswahlhintergrund festgelegt. 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)
- 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)
- 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)
- Der Parameter „resetInput“ wurde zu TextInputService#onStateUpdated hinzugefügt (I3e8f5, b/172239032, b/171860947).
- Aktualisierte TextFieldValue API
- TextFieldValue.composition ist jetzt schreibgeschützt
- Entfernte Ausnahme für ungültigen Auswahlbereich (I4a675, b/172239032)
- 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) - Android-Typeface-Wrapper hinzugefügt. Sie können einen Android-Schriftfont über die Funktion
typefaceladen, z.B.typeface(Typeface.DEFAULT).typefaceFromFontFamily()wurde auch in „typeface()“ umbenannt (I52ab7) - Es wurde ein Lint-Check hinzugefügt, um zu prüfen, ob in Modifier-Factories intern
androidx.compose.ui.composed {}verwendet wird, anstatt als@Composablegekennzeichnet zu sein. (I3c4bc) - 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)
- Das Semantikargument „mergeAllDescendants“ wurde in „mergeDescendants“ umbenannt. (Ib6250)
- Die Zeitsteuerung in Tests (TestAnimationClock und ihre Verwendung) ist jetzt experimentell (I6ef86, b/171378521).
- Altes ui-test-Modul und seine Stubs entfernen (I3a7cb)
- TextUnit.Inherit wurde in TextUnit.Unspecified umbenannt, um die Einheit an andere Einheiten anzugleichen. (Ifce19)
- Die Benutzeroberfläche für die Ausrichtung wurde aktualisiert und funktionsfähig gemacht. (I46a07, b/172311734)
- Das Modul
foundation:foundation-textwurde infoundation:foundation(Idac0f) zusammengeführt. - Die Funktionen „place(Offset)“ und „placeRelative(Offset)“ werden eingestellt. Verwenden Sie stattdessen Überladungen mit Ganzzahl-Offsets (I4c5e7).
idwurde fürLayoutIdParentDatainlayoutIdumbenannt.Measurable.idwurde inMeasurable.layoutIdumbenannt. (Iadbcb, b/172449643)
Version 1.0.0-alpha07
11. November 2020
androidx.compose.foundation:foundation:1.0.0-alpha07, androidx.compose.foundation:foundation-layout:1.0.0-alpha07 und androidx.compose.foundation:foundation-text:1.0.0-alpha07 sind veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.
API-Änderungen
- Ähnlich wie bei
Modifier.fillMaxSize[Width|Height]werden jetzt auch Bruchzahlen inModifier.fillParentMaxSize[Width|Height]im Bereich vonLazyColumn/Rowunterstützt (I797e2, b/166586426). KeyboardOptions.toImeOptionswurde aus der öffentlichen API entfernt. (Ic2e45)- Die Grundlagen AmbientTextStyle, ProvideTextStyle und AmbientContentColor wurden eingestellt. Verwenden Sie stattdessen die neuen Versionen, die in der Materialbibliothek verfügbar sind. Für Nicht-Material-Anwendungen sollten Sie stattdessen eigene Designsystem-spezifische Theming-Umgebungen erstellen, die in Ihren eigenen Komponenten verwendet werden können. (I74acc, b/172067770)
- 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)
- maxLines wurde TextFields hinzugefügt (Ib2a5b)
- TextFields für die Akzeptanz von KeyboardOptions aktualisieren (Ida7f3)
- KeyboardOptions für die Verwendung in TextFields hinzugefügt (I9ca32)
- Fügt BasicText als designunabhängige API für Text parallel zu BasicTextField hinzu. (I28268)
- Die Annotation „ExperimentalLazyDsl“ wurde entfernt. LazyColumn/LazyRow kann jetzt ohne @OptIn verwendet werden (Idab7a, b/166584730)
- BaseTextField wurde eingestellt. Verwenden Sie stattdessen BasicTextField. (I896eb)
- BasicTextField wurde als Ersatz für CoreTextField und BaseTextField hinzugefügt (Id4cea).
- Entfernen der eingestellten LazyColumnItems/LazyRowItems (I1d8a8)
- Die eingestellten Composables für die Größenanpassung an intrinsische Messungen wurden entfernt. (I18537, b/171811496)
- „relativePaddingFrom“ wurde in „paddingFrom“ umbenannt. Der Modifier „paddingFromBaseline“ wurde hinzugefügt, um die Angabe von Abständen von Layoutgrenzen zu Text-Baselines zu vereinfachen. (I0440a, b/170633813)
- Der Parameter „matchHeightConstraintsFirst“ wurde dem Modifizierer „aspectRatio“ hinzugefügt. Mit ihm kann angegeben werden, dass der Modifizierer zuerst an die Höhenbeschränkungen angepasst werden soll, bevor die entsprechenden Breitenbeschränkungen berücksichtigt werden. (Ie7c43, b/155290593)
- Die verworfenen DpConstraints wurden entfernt. (I87884, b/171702471)
Fehlerkorrekturen
- 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)
- „captureToBitmap“ wurde zu „captureToImage“ verschoben. (I86385)
- Markiert CoreText als @InternalTextApi. Verwenden Sie stattdessen BasicText. (I6aaeb)
- KeyboardOptions in ImeOptions umbenennen (I82f36)
- KeyboardType und ImeAction wurden in KeyboardOptions verschoben (I910ce)
- CoreTextField wurde mit @InternalTextApi markiert. BasicTextField verwenden (Ie2469)
- Die Annotation „ExperimentalSubcomposeLayoutApi“ wurde entfernt. „SubcomposeLayout“ kann jetzt ohne @OptIn verwendet werden (I708ad)
- Einführung des Moduls „ui-test-junit4“ (Ib91f8)
- Die Icon API wurde aktualisiert, um Color.Unspecified als mögliche Tönungsfarbe zu akzeptieren. In diesem Fall wird das bereitgestellte Asset oder der Painter ohne ColorFilter gezeichnet. Bisher wurde bei dem Versuch, die Tönung mit Color.Unspecified zu ignorieren, eine transparente Farbe verwendet, sodass nichts gerendert wurde. (I049e2, b/171624632)
- „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)
- androidx.ui.test wurde zu androidx.compose.ui.test verschoben (I9ffdb)
- „FirstBaseline“ und „LastBaseline“ wurden in das Paket „androidx.compose.ui.layout“ verschoben (Ied2e7).
- SelectionContainer ohne den Callback (Ibfadb) hinzugefügt
- Tests für die Positionen von SelectionHandles in SelectionContainer hinzugefügt. (Ie93db)
- IME-Option für die automatische Korrektur der Tastatur hinzugefügt (I57b8d)
Version 1.0.0-alpha06
28. Oktober 2020
androidx.compose.foundation:foundation:1.0.0-alpha06, androidx.compose.foundation:foundation-layout:1.0.0-alpha06 und androidx.compose.foundation:foundation-text:1.0.0-alpha06 sind veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.
API-Änderungen
- androidx.compose.foundation.Icon wurde zu androidx.compose.material.Icon verschoben. Wenn Sie die Material-Bibliothek nicht verwenden möchten, können Sie auch die Image-Komponente / Modifier.paint() mit einem Painter verwenden. (I9f622)
- interactionState wurde Modifier.scrollable, ScrollableColumn und LazyColumnFor hinzugefügt (I81566, b/169509805)
- alignByBaseline wurde zu RowScope hinzugefügt und alignWithSiblings wurde in alignBy umbenannt (I06503, b/170628732)
- Box wurde zu einer Inline-Funktion. (Ibce0c, b/155056091)
- maxLines wurde zu CoreTextField hinzugefügt (Ibee58, b/143687793)
- CoreTextField wurde um Softwrap erweitert. (I21a4b)
Fehlerkorrekturen
- VectorPainter wird zugunsten von rememberVectorPainter eingestellt, um besser darauf hinzuweisen, dass die zusammensetzbare API intern „remember“ verwendet, um Daten über Kompositionen hinweg beizubehalten. (Ifda43)
- Übergänge in ComposeTestRule aktivieren; Option zum Aktivieren des blinkenden Cursors aus ComposeTestRule entfernen. (If0de3)
- Dem CoreTextField wurde die Option für einzeilige Tastaturen hinzugefügt (I72e6d).
- 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)
- Möglichkeit hinzugefügt, Prüftoolinformationen in einem zusammengesetzten Modifier anzugeben (Idee08, b/163494569)
- Die IME-Option „KeyboardCapitalization“ wurde hinzugefügt. (I8ac38)
- Position des RTL-Ziehpunktes korrigieren (I6e1e0)
- 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 von PointerInputFilter.onPointerEvent(...) zurückzugeben, können Sie jetzt einfach die Verbrauchsdaten der übergebenen PointerEvents ändern. (I6acd0)
- Die Option „Alle auswählen“ wurde dem Auswahlmenü hinzugefügt (Ief02b).
Version 1.0.0-alpha05
14. Oktober 2020
androidx.compose.foundation:foundation:1.0.0-alpha05, androidx.compose.foundation:foundation-layout:1.0.0-alpha05 und androidx.compose.foundation:foundation-text:1.0.0-alpha05 sind veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.
API-Änderungen
- CoreTextField unterstützt jetzt die Cursorfunktion (Id23aa)
Die APIs „contentColor()“ und „currentTextStyle()“ werden eingestellt und durch die Ambient-Variablen „AmbientContentColor“ und „AmbientTextStyle“ ersetzt. Sie können auf den aktuellen Wert zugreifen, indem Sie
.currentfür die Ambient-Eigenschaft verwenden, wie bei jedem anderen Ambient. Diese Änderung wurde vorgenommen, um die Einheitlichkeit zu verbessern und mehrere Möglichkeiten zur Erledigung derselben Aufgabe zu vermeiden. Außerdem werden einige Ambient-Properties umbenannt, um ihren Zweck besser zu beschreiben:- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
Fehlerkorrekturen
- 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).
- Aktionen für Bedienungshilfen zum Kopieren, Einfügen und Ausschneiden hinzugefügt (I6db4f)
- „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)
- 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)
- Paging-Compose-Modul und Paging-Integration hinzugefügt (Ib85da)
- LazyListScope so ändern, dass Nullwerte empfangen werden (I1765b)
- OnPositionedModifier wurde in OnGloballyPositionedModifier umbenannt und onPositioned() in onGloballyPositioned(). (I587e8, b/169083903)
- Beispiele für LazyColumn/Row hinzugefügt (Idc16d)
- Korrektur für die Methoden „items“ und „itemsIndexed“, um „emptyList“ zuzulassen (I06647)
- DSL zum Angeben von Prüferinformationen hinzufügen (Ic9a22)
- Verschiebe „Lang drücken“ in „Text“. (Iff2bc)
- „Auswahl im Text“ deaktivieren und Demo (Ie7e97)
- Unterstützung der Konvertierung von AnnotatedString in SpannableString für die Barrierefreiheit. (Ief907)
PointerInputFilter.onPointerInput(...)wurde entfernt. Verwenden Sie stattdessenPointerInputFilter.onPointerEvent(...). (I6f04a)
Version 1.0.0-alpha04
1. Oktober 2020
androidx.compose.foundation:foundation:1.0.0-alpha04, androidx.compose.foundation:foundation-layout:1.0.0-alpha04 und androidx.compose.foundation:foundation-text:1.0.0-alpha04 sind veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.
API-Änderungen
- Der Stapel wurde in „Box“ umbenannt. Die bisherige foundation.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/Abstände für Ihre Box festlegen möchten, verwenden Sie stattdessen Modifiers (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279).
- Fügen Sie eine neue LazyListState-Klasse hinzu. So kann die Scrollposition von LazyRow- und LazyColumn-Komponenten beobachtet und gesteuert werden. Instanzen können mit rememberLazyListState() erstellt und an den Statusparameter der Komponente übergeben werden. In dieser ersten Version sind derzeit das erste sichtbare Element und die Offsets zu sehen. (Ic7cb7, b/159307669)
- Die Position der Lazy List und der Scroll-Offset werden jetzt gespeichert und bei der Neuerstellung von Aktivitäten wiederhergestellt (Ie045f, b/166589058).
- Aktion für langes Klicken hinzufügen (I6281b, b/156468846)
- Das MutatorMutex-Dienstprogramm wurde hinzugefügt, um einen einzelnen Mutator des freigegebenen Status im Zeitverlauf beizubehalten und in Konflikt stehende Mutatoren nach Priorität abzubrechen (I3f975).
- Annotate rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled and textInputServiceFactory with @VisibleForTesting, make them internal API and hide their kdoc (I554eb, b/168308412)
- Der Parameter „inlineContent“ wurde aus „Text with String input“ entfernt. Sie wird nicht verwendet, da inlineContent mit AnnotatedString funktionieren muss. (Ief403)
- Die verworfenen benutzerdefinierten Arrangement-APIs wurden entfernt. (Ic576d, b/168297922, b/168297923)
- Der Parameter
unboundedwurde den wrapContentSize-Modifikatoren hinzugefügt, damit das Layout-Element mit unendlichen maximalen Einschränkungen gemessen werden kann. (I77951, b/158559319) - Wir haben statische Importe von Inhalten von Layoutbereichen (z.B. „alignWithSiblings“ in „RowScope“) verhindert. Verwenden Sie stattdessen die explizite Bereichsalternative:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, b/166760797)
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, bei denen davon ausgegangen wurde, dass es sich um ein Rechteck mit dem Ursprung bei 0,0 handelt
- Destrukturierungs-API zu Radius hinzugefügt
- Verschiedene RoundRect-Erweiterungsfunktionen wurden zu Eigenschaften migriert.
- (I8f5c7, b/168762961)
- Leistungsoptimierungen für das Scrollen von LazyColumnFor/LazyRowFor durch Vermeidung unnötiger Neukompositionen bei jedem Scrollen (I64f65, b/168293643, b/167972292, b/165028371)
- Absturz in LazyColumnFor/LazyRowFor nach dem Scrollen und Ändern von Elementen behoben und automatisches Scrollen nach oben implementiert, wenn das zuvor sichtbare Element entfernt wurde, damit keine leeren Lücken mehr am Ende angezeigt werden (I220ab, b/161480164, b/167855468)
- Das Verschachteln von scrollbaren Containern in derselben Richtung wie ScrollableContainer und LazyColumnFor ist nicht mehr zulässig. Es wurde nie unterstützt und hat das Flinging und die Lazy-Komposition der Elemente von LazyColumnFor (I6e101) unterbrochen.
- 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. Es wird jetzt auf „Path“ anstelle von abgerundeten Rechtecken verwiesen.
- Der Abstand in der Dokumentation für den rechten Parameter in „clipPath“ wurde korrigiert.
- DrawScope.drawCanvas wurde in drawIntoCanvas umbenannt und der Größenparameter wurde entfernt.
- Die dx/dy-Parameter in der Inset-Methode wurden in „horizontal“ und „vertical“ umbenannt.
- Es wurde eine 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)
- „AccessibilityScrollState“ zu Semantik-Properties hinzugefügt. (Ifeda9)
- Machen Sie TextRange inline, um die Objekterstellung zu vermeiden. (Id034b)
- „ParagraphConstraints“ wurde entfernt. Die Breite wird jetzt direkt an „Paragraph“ übergeben. (Ica712)
Version 1.0.0-alpha03
16. September 2020
androidx.compose.foundation:foundation:1.0.0-alpha03, androidx.compose.foundation:foundation-layout:1.0.0-alpha03 und androidx.compose.foundation:foundation-text:1.0.0-alpha03 sind veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.
API-Änderungen
- „InnerPadding“ wurde in „PaddingValues“ umbenannt. (I195f1, b/167389171)
- Die Verwendung von „gravity“ wurde in Layout-APIs konsistent in „align“ oder „alignment“ umbenannt. (I2421a, b/164077038)
- Dem Stack-Element wurde ein Ausrichtungsparameter hinzugefügt, mit dem die Standardausrichtung für alle untergeordneten Stack-Elemente angegeben werden kann. (Ie80ca, b/164085265)
Fehlerkorrekturen
- DpConstraints und APIs, die sie verwenden, wurden eingestellt. (I90cdb, b/167389835)
- Die Parameter
minWidthundmaxWidthvonwidthInwurden inminundmaxumbenannt. Ähnliches gilt fürpreferredWidthIn,heightInundpreferredHeightIn. (I0e5e1, b/167389544) - „onNode“ und andere globale Methoden wurden in „ComposeTestRule“ hinzugefügt, da die aktuellen globalen Methoden eingestellt werden. (Ieae36)
- Die Berechnungen für Größe und Position in GestureScope wurden korrigiert. Dies hatte unter anderem zur Folge, dass ungültige Wischgesten generiert wurden (Iaf358, b/166589947).
createAndroidComposeRuleundAndroidInputDispatcherwurden vonandroidx.ui.test.androidnachandroidx.ui.testverschoben (Idef08, b/164060572)
Version 1.0.0-alpha02
2. September 2020
androidx.compose.foundation:foundation:1.0.0-alpha02, androidx.compose.foundation:foundation-layout:1.0.0-alpha02 und androidx.compose.foundation:foundation-text:1.0.0-alpha02 sind veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- TestUiDispatcher ist als experimentell gekennzeichnet (Iae99d, b/161247083)
ManualFrameClock.hasAwaiterswurde hinzugefügt, um zu prüfen, ob ein Frame von dieser Taktquelle erwartet wird.runWithManualClockersetztrunBlockingbeim Ausführen von Tests, für die eine ManualFrameClock erforderlich ist.TestUiDispatcher.Mainbietet einfachen Zugriff auf den Haupt-UI-Dispatcher in Ihren Tests.Beispiel:
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
Version 1.0.0-alpha01
26. August 2020
androidx.compose.foundation:foundation:1.0.0-alpha01, androidx.compose.foundation:foundation-layout:1.0.0-alpha01 und androidx.compose.foundation:foundation-text:1.0.0-alpha01 sind 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.foundation:foundation:0.1.0-dev17, androidx.compose.foundation:foundation-layout:0.1.0-dev17 und androidx.compose.foundation:foundation-text:0.1.0-dev17 sind veröffentlicht. Version 0.1.0-dev17 enthält diese Commits.
API-Änderungen
- Das Arrangement „spacedBy“ wurde für „Row“ und „Column“ hinzugefügt, um die Positionierung von Layout-Untergeordneten mit einem festen Abstand zu ermöglichen. Das ausgerichtete Arrangement wurde ebenfalls hinzugefügt, um die Positionierung von untergeordneten Layout-Elementen nebeneinander und ausgerichtet in der Zeile/Spalte entsprechend einer Ausrichtung zu ermöglichen. Die bisherigen Methoden „Arrangement.Vertical#arrange“ und „Arrangement.Horizontal#arrange“ wurden eingestellt. Das Schreiben benutzerdefinierter Arrangements wird in Zukunft nicht mehr unterstützt. (I6733d, b/161985975)
- Der Offset ist jetzt eine Inline-Klasse (Iaec70).
- „onFocusChanged“-Callbacks aus „TextField“ entfernt. Verwenden Sie stattdessen „Modifier.focusObserver“. (I51089, b/161297615)
- „Modifier.drawBorder“ wurde eingestellt. Verwenden Sie stattdessen „Modifier.border“. Die Datenklasse „Border“ wurde durch „BorderStroke“ ersetzt (I4257d, b/158160576).
- „VerticalScroller“ und „HorizontalScroller“ wurden entfernt. Verwenden Sie stattdessen ScrollableColumn/Row. Modifier.drawBackground wurde entfernt. Modifier.background verwenden (I73b0d, b/163019183)
- Entfernen Sie die als veraltet markierten fillMax*-Modifikatoren aus LazyItemScope, da es dadurch schwieriger wird, solche Modifikatoren für Elemente hinzuzufügen, die keine direkten untergeordneten Elemente von LazyColumnFor sind (Ifa78d).
- LazyColumn-/LazyRow-Implementierung als DSL hinzugefügt (I93cc6)
- „Constraints“ ist jetzt eine Inline-Klasse (I88736)
- Es ist jetzt möglich, ein Layout mit den Modifikatoren „fillMaxWidth“, „fillMaxHeight“ und „fillMaxSize“ auf einen Bruchteil des verfügbaren Platzes zu skalieren. (I945bb, b/161562591)
Fehlerkorrekturen
- Der SelectionContainer wurde ein Modifikatorparameter hinzugefügt (I4aada, b/161487952).
- Lambda „mergePolicy“ zu „SemanticsPropertyKey“ hinzugefügt. Damit kann eine benutzerdefinierte Richtlinie für das Zusammenführen von „mergeAllDescendants“-Semantik 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)
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)- Die nicht mehr weitergeführte Komponente „FilledTextField“ wurde entfernt. Verwenden Sie stattdessen „TextField“, um die Material Design-Implementierung des ausgefüllten Textfelds zu erhalten. (I5e889)
- Der Parameter „backgroundColor“ wurde dem LinearProgressIndicator hinzugefügt und das interne Padding wurde aus dem CircularProgressIndicator entfernt. Es wurde eine neue ProgressIndicatorConstants.DefaultProgressAnimationSpec hinzugefügt, die als Standard-AnimationSpec verwendet werden kann, wenn der Fortschritt zwischen Werten animiert wird (If38b5, b/161809914, b/161804677).
- 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 die Funktionskonstruktoren von RRect wurden eingestellt (I5d325).
- „onChildPositioned“ und „OnChildPositionedModifier“ wurden entfernt. Entwickler sollten stattdessen „onPositioned“ und „OnPositionedModifier“ für das untergeordnete Layout verwenden. (I4522e, b/162109766)
- IntSize ist jetzt eine Inline-Klasse (I2bf42)
- Halten Sie den leeren Bereich gedrückt, um ihn zu bearbeiten. (Ib1e5b)
- Die schwebende Symbolleiste wird nach dem Tippen auf den Text ausgeblendet. (If4525)
- Die schwebende Symbolleiste wird beim Aktualisieren der Auswahl ausgeblendet. (I8444c)
- Deaktiviere „Bei Unkenntlichmachen“. (I781a2)
Version 0.1.0-dev16
5. August 2020
androidx.compose.foundation:foundation:0.1.0-dev16, androidx.compose.foundation:foundation-layout:0.1.0-dev16 und androidx.compose.foundation:foundation-text:0.1.0-dev16 sind veröffentlicht. Version 0.1.0-dev16 enthält diese Commits.
API-Änderungen
- 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 löst den Anwendungsfall, in dem 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)
- Dialog in die Benutzeroberfläche verschieben (I47fa6)
- LazyColumnForIndexed/LazyRowForIndexed hinzugefügt – Versionen von LazyColumnFor/LazyRowFor, die sowohl Index als auch Element im itemCallback bereitstellen. Dies ist nützlich, wenn Sie zusätzlich zu einem aktuellen Element einen aktuellen Index benötigen. (I65ff3)
- Modifier.deternimateProgress wurde in Modifier.progressSemantics umbenannt (I9c0b4)
- „LazyColumnItems“ wurde in „LazyColumnFor“ umbenannt. „LazyRowItems“ wurde in „LazyRowFor“ umbenannt (I84f84)
- Fügen Sie einige Markierungen/Anmerkungen hinzu, um Best Practices zu berücksichtigen. (I66b20)
- Das Paket „foundation.shape.corner“ wurde in „foundation.share“ zusammengeführt (I46491, b/161887429).
- Der Parameter „crossaxis gravity“ wurde für „LazyRowItems“/„LazyColumnItems“ hinzugefügt. LazyRowItems/LazyColumnItems unterstützen jetzt das Verhalten „wrap content“. (Ib39fc)
- „ZoomableState“ wurde in „ZoomableController“ umbenannt. Für smoothScale wurde Unterstützung für benutzerdefinierte Kurven hinzugefügt. Die Funktionen
enabledundonZoomStartedwurden hinzugefügt (If8b8f) - „Material FilledTextField“ wurde in „TextField“ umbenannt und „foundational TextField“ in „BaseTextField“, um die einfachste gewünschte API leichter auffindbar und nutzbar zu machen (Ia6242, b/155482676).
- Die zuvor verworfene AdapterList wurde entfernt. Verwenden Sie stattdessen LazyColumnItems (I12b9b).
- Modifier.drawBackground wurde in Modifier.background umbenannt (I13677)
- Die alte ConstraintLayout-DSL wurde entfernt. ConstraintSet2 wurde in ConstraintSet umbenannt. (If58d1, b/162450908)
- „Modifier.absoluteOffset()“ und „Modifier.absoluteOffsetPx()“ hinzugefügt. Im Gegensatz zu Offset-Modifizierern werden absolute Offset-Modifizierer im Kontext von rechts nach links nicht automatisch gespiegelt (I3aa21).
RowundColumnsind jetzt Inline-Funktionen, wodurch der Aufwand für die Verwendung erheblich reduziert wird. (I75c10)
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.
- Es wurde eine Stub-Klasse „EmptyCanvas“ erstellt, um „DrawScope“ so umzugestalten, dass sie ein Parameter ist, der nicht null sein kann, anstatt „lateinit“ zu verwenden. Außerdem wurde dafür gesorgt, 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
- PointMode-Enums 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 interne 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 verringern.
- Die Outline-Klasse wurde aktualisiert und enthält jetzt @Immutable-Annotationen.
- 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 diese bereits von Compose verarbeitet werden.
- 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.
Es wurde MonotonicFrameAnimationClock hinzugefügt, mit dem Sie eine MonotonicFrameClock als AnimationClockObservable verwenden können, um die Lücke zwischen den neuen auf Coroutinen basierenden Taktgebern und APIs zu schließen, die weiterhin die alten auf Callbacks basierenden Taktgeber verwenden.
Das MonotonicFrameClock-Äquivalent von ManualAnimationClock ist jetzt ManualFrameClock. (I111c7, b/161247083)
SemanticsNodeInteraction.performPartialGesturewurde entfernt. Verwenden Sie stattdessenSemanticsNodeInteraction.performGesture. (Id9b62)SemanticsNodeInteraction.getBoundsInRoot()wurde inSemanticsNodeInteraction.getUnclippedBoundsInRoot()umbenannt (Icafdf, b/161336532)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)
„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).Die SemanticsMatcher-Klassen
isFocused()undisNotFocused()wurden hinzugefügt. (I0b760)„RemeasurementModifier“ wurde hinzugefügt. Damit können Nutzer das Layout synchron neu messen. Im Allgemeinen ist sie nie erforderlich, da die Neuvermessung/Neugestaltung automatisch erfolgt. Wir verwenden sie jedoch in LazyColumnItems während des Scrollens. (I5f331, b/160791058)
isSystemInDarkTheme berücksichtigt jetzt immer die systemweite Einstellung für das dunkle Design und ignoriert den Energiesparmodus vor Q gemäß den neuesten Richtlinien. (I0c10c)
Die Methode „OnChildPositioned“ wurde eingestellt. Verwenden Sie stattdessen OnPositioned für das untergeordnete Element. (I87f95, b/162109766)
AndroidComposeTestRule wurde in createAndroidComposeRule umbenannt. (I70aaf)
Aktion für Bedienungshilfen zum Abrufen von TextLayoutResult hinzufügen (I9d6e6)
Version 0.1.0-dev15
22. Juli 2020
androidx.compose.foundation:foundation:0.1.0-dev15, androidx.compose.foundation:foundation-layout:0.1.0-dev15 und androidx.compose.foundation:foundation-text:0.1.0-dev15 sind veröffentlicht. Version 0.1.0-dev15 enthält diese Commits.
Wenn Sie die 0.1.0-dev15-Version von Compose verwenden möchten, müssen Sie Folgendes tun:
Abhängigkeiten aktualisieren
- Wenn Sie die
0.1.0-dev15-Version von Compose verwenden möchten, müssen Sie Ihre Abhängigkeiten gemäß den neuen Code-Snippets oben unter Abhängigkeiten deklarieren aktualisieren.
API-Änderungen
- Ähnlich wie beim neuen Parameter in ScrollableColumn/ScrollableRow haben LazyColumnItems/LazyRowItems jetzt auch den Parameter „contentPadding“, mit dem Sie dem Inhalt nach dem Zuschneiden ein Padding hinzufügen können. Das ist mit einem reinen Modifikatorparameter nicht möglich. Außerdem kann nur vor dem ersten oder nach dem letzten Element ein Abstand eingefügt werden. (Ibc24e)
- 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).
- Die APIs „Modifier.draggable“ und „Modifier.scrollable“ wurden überarbeitet. DragDirection wurde zugunsten von Orientation entfernt. Der Status, der für das Scrollen erforderlich ist, wurde vereinfacht. ScrollableState wurde in ScrollableController umbenannt (Iab63c, b/149460415)
- Für Eigenschaften mit Einzelwertsemantik wird jetzt ein Aufrufstil verwendet.
Beispiel: „semantics { hidden = true }“ wird jetzt so geschrieben:
semantics { hidden() }. (Ic1afd, b/145951226, b/145955412) - Die von RoundedCornerShape und CutCornerShape verwendeten Eckengrößen können jetzt größer als 50 % sein (Id2340, b/160400213).
- Der Standardparameter „ContentScale“ für die Image-Composable wurde von „Inside“ zu „Fit“ geändert. Dies wurde getan, um das Verhalten so zu skalieren, dass der zugrunde liegende Painter skaliert wird, wenn die Layoutgröße größer als die intrinsische Größe des Painters ist, während das Seitenverhältnis beibehalten wird. Dieses Verhalten entspricht besser den Erwartungen, wenn feste Größen für das Bild angegeben werden, ohne das Standardverhalten zu beeinträchtigen, wenn nur die intrinsische Größe zur Berechnung der Größe des Composables verwendet wird. (I40ae3, b/159838006)
- Verwenden Sie AnimationSpec anstelle von AnimationBuilder in den APIs der obersten Ebene, um das Konzept der statischen Animationsspezifikation zu verdeutlichen. Verbessern Sie die Übergangs-DSL, indem Sie die Lambda-Anforderung zum Erstellen von AnimationSpecs wie „tween“ und „spring“ entfernen. Stattdessen werden Konstruktorparameter direkt verwendet. – Die allgemeine Benutzerfreundlichkeit von AnimationSpec wird verbessert, indem Konstruktoren anstelle von Buildern verwendet werden. – Die Dauer und Verzögerung für KeyFrames und Tween werden in „Int“ geändert. Dadurch werden unnötige Typumwandlungen und Methodenüberladungen (zur Unterstützung von „Long“ und „Int“) vermieden. (Ica0b4)
- Die Schaltfläche wurde entfernt. Modifier.clickable verwenden (I84bdf)
- LazyRowItems hinzugefügt – horizontal scrollendes Analogon von LazyColumnItems (Ibbcf7)
- Es wurden untergeordnete zustandslose Animations-APIs eingeführt. Diese APIs (I63bf7)
- „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).
- Die Verwendung von „IntPx“ wurde durch „Int“ ersetzt. „IntPxPosition“ wurde durch „IntOffset“ ersetzt. „IntPxSize“ wurde durch „IntSize“ ersetzt. (Ib7b44)
- androidx.ui.foundation.shape.RectangleShape wurde entfernt; verwenden Sie androidx.ui.graphics.RectangleShape (I94939, b/154507984)
- Um die Anzahl der Klassen zu reduzieren, 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 reduzieren, 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)
- „Modifier.zoomable“ für die Pinch-to-Zoom-Funktion hinzugefügt (Id5d63)
- Die umschaltbare Komponente wurde eingestellt. Verwenden Sie stattdessen Modifier.toggleable (I35220, b/157642842).
- „MutuallyExclusiveSetItem“ wurde eingestellt. Verwenden Sie stattdessen „Modifier.selectable“. (I02b47, b/157642842)
- TestTag wurde eingestellt. Verwenden Sie stattdessen „Modifier.testTag“. (If5110, b/157173105)
- Der Text-Komponente wird der Parameter „fontWeight“ hinzugefügt, der zuvor versehentlich nicht hinzugefügt wurde (I56937).
- 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).
- VerticalScroller bietet jetzt standardmäßig eine Spalte. HorizontalScroller bietet jetzt standardmäßig Row. (Ieca5d, b/157020670)
- Die Verwendung der Px-Klasse in verschiedenen Compose-Klassen wurde im Rahmen der großen Refaktorierung ersetzt, um sich bei Pixelparametern nur auf Dp und primitive Typen zu verlassen (Iede0b).
- Dem Fundamentpaket wurde „Modifier.indication“ hinzugefügt. Damit können Sie auf Ihren benutzerdefinierten interaktiven Elementen (I8425f, b/155287131) Hinweise zum Drücken, Ziehen oder andere Hinweise anzeigen.
- VerticalScroller und HorizontalScroller unterstützen jetzt das umgekehrte Scrollen, wenn „isReversed“ für „ScrollerPosition“ festgelegt ist (I953bd).
- Unterstützung für das Hinzufügen von Composables in das Textlayout. (I1373c)
- CanvasScope-Implementierungen wurden konsolidiert. Es gibt jetzt nur noch DrawScope und ContentDrawScope. CanvasScope wurde in DrawScope umbenannt. DrawScope wurde aktualisiert, um die Density-Schnittstelle zu implementieren und LayoutDirection bereitzustellen. Die DrawScope-Unterklasse in ContentDrawScope wurde gelöscht. Painter und PainterModifier wurden aktualisiert, um keine RTL-Eigenschaft mehr zu verwalten, da DrawScope diese bereits ohne manuelle Bereitstellung bereitstellt (I1798e).
- Die eingestellte DrawBackground-API wurde zugunsten der drawBackground-Erweiterungs-APIs für Modifier entfernt. Die Implementierungen von „color“, „brush“ und „paint“ für „drawBackground“ wurden überarbeitet, um die Anzahl der Codepfade zu reduzieren und die Anforderung zu entfernen, dass Modifier als Teil der Komposition erstellt werden müssen. (I0343a)
- Höherwertige Compose-APIs wurden aktualisiert, um CanvasScope anstelle von Canvas zu verwenden. Dadurch müssen Nutzer keine eigenen Paint-Objekte mehr verwalten. Nutzer, die weiterhin Zugriff auf ein Canvas benötigen, können die drawCanvas-Erweiterungsmethode verwenden. Diese bietet einen Callback zum Ausgeben von Zeichenbefehlen mit dem zugrunde liegenden Canvas. (I80afd)
- Die Scrollposition von HorizontalScroller und VerticalScroller wird nicht mithilfe des gespeicherten Instanzstatus wiederhergestellt. (Ia0fae, b/155075048)
- FocusManagerAmbient wird entfernt. Verwenden Sie FocusModifier.requestFocus, um den Fokus zu erhalten. (Ic4826)
- Das Tabellenlayout wurde vorübergehend entfernt. Es wird mit einer aktualisierten API wieder verfügbar sein. (Id88a7)
Die CanvasScope API wurde erstellt, die ein Canvas-Objekt umschließt, um eine zustandslose, deklarative Zeichen-API bereitzustellen. Transformationen sind in ihrem eigenen Empfängerbereich enthalten und Größeninformationen sind auch auf die entsprechenden Inset-Grenzen beschränkt. Der Consumer muss kein eigenes Paint-Zustandsobjekt zum Konfigurieren von Zeichenvorgängen verwalten.
CanvasScopeSample hinzugefügt und Demo-App aktualisiert, um eine deklarative Grafikdemo (Ifd86d) einzuschließen
„ColoredRect“ wurde entfernt. User Box mit drawBackground-Modifikator anstelle von (I983c7, b/152753731)
Cursorfarbe im TextField anpassen (I6e33f)
Die Softwaretastatur kann jetzt mit dem SoftwareKeyboardController, der vom Callback „onTextInputStarted“ bereitgestellt wird, ein- und ausgeblendet werden (I8dc44, b/151860051).
TextFieldValue, das mit TextField verwendet wird, kann jetzt die Neuerstellung von Aktivitäten überstehen, wenn es so verwendet wird:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }(I5c3ce, b/155075724)Fügt Text() häufig verwendete Parameter hinzu. Wenn Sie derzeit einen lokalen Textstil erstellen, um eine kleine Anzahl dieser Parameter wie
Text(style = TextStyle(textAlign = TextAlign.Center))zu übergeben, können Sie die Parameter jetzt direkt angeben:Text(textAlign = TextAlign.Center)(I82768)Der Parameter „focusIdentifier“ von „CoreTextField“/„TextField“ wurde durch „FocusNode“ ersetzt, um die Integration in das Fokus-Subsystem zu ermöglichen. (I7ea48)
Aktualisierung des Textfelds: In horizontaler Richtung wird der gesamte verfügbare Platz genutzt, der dem Feld zugewiesen ist (Ib08df, b/154638552).
Die Klassen „InteractionState“ und „Interaction“ wurden hinzugefügt, um die Entwicklung von Komponenten zu erleichtern, die auf Änderungen des UI-Status wie Drücken und Ziehen reagieren (Icfe25, b/152525426).
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).
Aktualisierung der TextField API: Die Callbacks „onFocus“ und „onBlur“ wurden in einem einzigen Callback „onFocusChange(Boolean)“ mit Parameter zusammengeführt (I66cd3)
„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 in „Crop“ umbenannt. „FillMinDimension“ wurde in „Fit“ umbenannt. „Fit“ wurde in „Inside“ umbenannt, um besser zu den ImageView.ScaleType-Entsprechungen zu passen. Es wurde ein Hinweis hinzugefügt, 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“ (I45f09, b/152842521).
Entfernt ProvideContentColor. Verwenden Sie stattdessen ContentColorAmbient direkt mit
Providers(Iee942).Fügt dem Text einen Farbparameter hinzu, sodass die Farbe des Textformats überschrieben werden kann, ohne dass eine manuelle Zusammenführung mit dem in einem Design bereitgestellten Format erforderlich ist. (I41a66)
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)
„ColoredRect“ wurde eingestellt. Verwenden Sie stattdessen
Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)Das System für die Gestaltung von Formen wurde gemäß der Material Design-Spezifikation aktualisiert. Sie können jetzt kleine, mittlere und große Formen für die meisten Komponenten angeben (Ifb4d1).
Modifikator plus Operator durch Factory-Erweiterungsfunktionen ersetzt (I225e4)
„Draggable“ wurde in den Modifier verschoben (Id9b16, b/151959544)
Textwurde von androidx.ui.core in das Paket androidx.ui.foundation verschoben. (I87ce5)enabled-Parameter für Checkbox, Switch und Toggleable hinzufügen (I41c16)„Wellen“ ist jetzt ein Modifikator. Da Clickable noch nicht konvertiert wurde, wird die Verwendung von
Clickable(onClick = { ... }, modifier = ripple())empfohlen (Ie5200, b/151331852, b/150060763).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 inPaintBox(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).Die zusammensetzbare Funktion „CreatedImage“ übernimmt die Größenanpassung und das Layout und zeichnet ein bestimmtes ImageAsset auf dem Bildschirm. Diese zusammensetzbare Funktion unterstützt auch das Zeichnen einer beliebigen Painter-Instanz unter Berücksichtigung ihrer intrinsischen Größe sowie einer bestimmten festen Größe oder Mindestgröße (Ibcc8f).
Die Funktionen „Button“, „FloatingActionButton“ und „Clickable“ haben jetzt einen separaten
enabled-Parameter. Einige Parameter für die Schaltfläche wurden umbenannt oder neu angeordnet. (I54b5a)„Image“ wurde in „ImageAsset“ umbenannt, um besser zwischen den Bilddaten und der bevorstehenden Image-Composable-Funktion zu unterscheiden, die zum Layouten und Zeichnen von Inhalten verwendet wird.
Es wurde eine Erweiterungsmethode für android.graphics.Bitmap,
Bitmap.asImageAsset(), 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)Die zusammensetzbare Funktion „DrawImage“ wurde entfernt. Mit ImagePainter können Sie ein Bild in ein vorhandenes Layout einfügen. Mit SimpleImage können Sie ein Bild einfügen, das Platz einnimmt (I595e1, b/149827027).
Die Stapelkomponente unterstützt die Richtung von rechts nach links (Ic9e00).
Die Komponenten „Icon“, „IconButton“ und „IconToggleButton“ wurden hinzugefügt und „AppBarIcon“ wurde entfernt. Sie können vorhandene Verwendungen von AppBarIcon direkt durch IconButton ersetzen. Die Schaltflächen haben dann den richtigen Berührungszielbereich. Informationen zur Verwendung finden Sie in den Beispielen. Unter „Symbole“ finden Sie die bereitgestellten Material Icons, die Sie direkt mit diesen Komponenten verwenden können. (I96849)
Die zusammensetzbare Funktion „DrawShape“ wurde entfernt. Verwenden Sie stattdessen den DrawBackground-Modifier. (I7ceb2)
AdapterList wurde 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)
Es wurde eine scrollbare Komponente hinzugefügt, mit der benutzerdefinierte Scroller/Listen erstellt werden können (I5fd37).
Hintergrund wurde in „DrawBackground“ umbenannt und wird standardmäßig gespeichert (Ia0bd3).
Parameter für Innenabstand, Rahmen, Form und Hintergrund für Box hinzufügen (I05027, b/148147281)
Canvas-Komponente hinzugefügt. Diese Composable-Funktion nimmt eine bestimmte Größe ein (vom Nutzer angegeben) und ermöglicht es Ihnen, mit CanvasScope (I0d622) zu zeichnen.
Modifikator
BorderinDrawBorderumbenennen (I8ffcc)Die Box-Komponente wurde hinzugefügt, um Layout- und Zeichenfunktionen zu kombinieren. (I6e2a7)
Scroller verhalten sich jetzt wie bei der nativen Android-Wischbewegung. (I922af, b/147493715)
DrawBorder wurde durch Border Modifier (Id335a) ersetzt.
„Modifier.tag“ wurde in „Modifier.layoutId“ umbenannt, um Verwechslungen mit „Modifier.testTag“ zu vermeiden. (I995f0)
Der Parameter „percent“ beim Erstellen von ConstraintLayout-Richtlinien wurde in „fraction“ umbenannt. (Ida2db)
Unterstützung für Ränder von ConstraintLayout-Barrieren hinzugefügt. (I47ffe)
Die Unterstützung von RTL in ConstraintLayout wurde korrigiert. Es wurden APIs hinzugefügt, die nicht für RTL-Sprachen optimiert sind. (I3b1c7)
Es wurde eine neue DSL für ConstraintLayout hinzugefügt. Weitere Informationen finden Sie in den Beispielen. (Icaa9a)
Die Annotation „@ExperimentalLayout“ wurde hinzugefügt. ConstraintLayout, FlowRow und FlowColumn sind jetzt damit gekennzeichnet, um darauf hinzuweisen, dass sich ihre APIs ändern werden. (I412a8)
Modifier.padding(InnerPadding)wurde hinzugefügt (I94985, b/157133803)Die eingestellten Attribute „RowAlign“ und „ColumnAlign“ in „Row“ und „Column“ wurden entfernt. (If60d4, b/155858731)
„LayoutTag()“ wurde entfernt. Verwenden Sie stattdessen „Modifier.tag()“. Die eingestellte Funktion „Modifier.matchParent()“ wurde entfernt. Verwenden Sie stattdessen „Modifier.matchParentSize()“. (If8044)
Der Layout-Modifier „offsetPx“ wurde hinzugefügt. Mit ihm lassen sich (dynamische) Offsets in Pixeln definieren. (I5af57)
Die zusammensetzbare Funktion „AlignmentLineOffset“ wurde eingestellt. Verwenden Sie stattdessen den Modifier „relativePaddingFrom()“. Die zusammensetzbare Funktion „CenterAlignmentLine“ wurde entfernt. (I60107)
Der Layout-Modifier „defaultMinSizeConstraints“ wurde hinzugefügt. Er legt Größenbeschränkungen für das umschlossene Layout nur dann fest, wenn die entsprechenden eingehenden Beschränkungen nicht angegeben sind (0 für Mindestbeschränkungen und unendlich für Maximalbeschränkungen). (I311ea, b/150460257)
Der Container wurde entfernt. Verwenden Sie stattdessen Box (Ibbc2b, b/151407926).
Die verworfenen LayoutWidth-, LayoutHeight- und LayoutSize-Modifikatoren wurden entfernt. (Ib0bc1)
Es wurden Standardparameterwerte für den Offset-Modifikator hinzugefügt. (I37f06)
Der Modifier für symmetrisches Padding wurde hinzugefügt. (I39840)
Der eingestellte Modifikator „LayoutAspectRatio“ wurde entfernt. (I65a74)
Nicht mehr verwendete LayoutAlign-Modifikatoren wurden entfernt. (I10877)
Ein Fehler in den Breiten- und Höhenmodifikatoren wurde behoben, der dazu führte, dass das umgebrochene Layout ohne Einschränkungen für die gegenüberliegende Achse gemessen wurde. (I210b8, b/154797971)
Den Parametern „Row“ und „Column“ wurden die Parameter „verticalGravity“ und „horizontalGravity“ hinzugefügt. (I7dc5a)
Die Parameter „wrapContentWidth“ und „wrapContentHeight“ wurden aktualisiert. Sie erwarten jetzt eine vertikale oder horizontale Ausrichtung anstelle einer beliebigen Ausrichtung. Der Schwerkraftmodifikator wurde aktualisiert, um die vertikale oder horizontale Ausrichtung zu akzeptieren. „Zeile“, „Spalte“ und „Stapel“ wurden aktualisiert, um benutzerdefinierte kontinuierliche Ausrichtungen zu unterstützen. (Ib0728)
Die Ausrichtung kann jetzt mit beliebigen Werten instanziiert werden. 1D-Abstimmungen hinzugefügt. (Ia0c05)
„EdgeInsets“ wurde in „InnerPadding“ umbenannt. Der Parameter „innerPadding“ von Material-Schaltflächen wurde in „padding“ umbenannt. (I66165)
alignToSiblings akzeptiert jetzt „Measured“ anstelle von „Placeable“. (I5788d)
Es wurden Modifikatoren für die Größenanpassung zu den intrinsischen Messungen hinzugefügt und die entsprechenden Komponenten wurden eingestellt. (I8295d)
Unterstützung für das Anpassen von Dimensionen von untergeordneten Elementen von ConstraintLayout hinzugefügt (Idb1a5)
Die eingestellten Composables „Wrap“ und „Center“ wurden entfernt. (I29e23)
LayoutModifier2 wurde hinzugefügt, eine neue API zum Definieren von Layoutmodifizierern. LayoutModifier (If32ac) wurde eingestellt.
Auf RowScope- und ColumnScope-Mitglieder kann jetzt außerhalb von Row und Column zugegriffen werden. (I3a641)
Der Container wurde eingestellt. Verwenden Sie stattdessen Box. (I675ce, b/151407926)
Der Modifier „LayoutOffset“ wurde hinzugefügt, um die Layoutposition zu versetzen. (I0b8a3)
Erste Unterstützung für RTL im Compose-Layout (Ia5519)
„LayoutAlign“ wurde aktualisiert, sodass der verfügbare Platz nicht mehr ausgefüllt wird (I2b14f).
Die AspectRatio-Composable wurde zugunsten des Modifiers entfernt. Gelöschte veraltete FlexColumn-, FlexRow-Composables und Spacing-Modifier (Iec8a7)
Modifier „LayoutInflexible“ für „Row“ und „Column“ entfernt (I0d820)
Implementieren Sie Ziehpunkte für die Drag-Auswahl, um die Auswahl für das TextField zu ändern. (I27032)
Implementiert „LongPressAndDrag“ für die Auswahl von TextFields. (I17919)
Fehlerkorrekturen
- „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).
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)
- Entfernt den zuvor verworfenen Modifier.ripple. Clickable verwendet jetzt Ripple als Standardanzeige (wenn Sie in Ihrer Anwendung MaterialTheme {} festgelegt haben). In den meisten Fällen können Sie also einfach „clickable“ verwenden und erhalten die Ripple-Anzeige kostenlos. Wenn Sie die Farbe, Größe oder den begrenzten Parameter für den Ripple anpassen müssen, können Sie manuell eine „RippleIndication“ erstellen und sie als „indication“-Parameter an „clickable“ übergeben. (I663b2, b/155375067)
- Veraltete APIs zum Testen der Größe wurden entfernt. (Iba0a0)
- LayoutNode-API als experimentell gekennzeichnet (I4f2e9)
- Version 1 der Sperrung der Scrollrichtung ist in Compose implementiert. (I1ce7a, b/150289741)
- Pop-ups, Dialogfelder und Menüs übernehmen jetzt das kontextbezogene MaterialTheme (Ia3665, b/156527485).
- 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.
- „AbsoluteArrangement“ hinzufügen – ermöglicht die Anordnung der untergeordneten Elemente in der Zeile ohne automatische Spiegelung in RTL (I3a1df)
- Die Anmerkung „@Untracked“ wurde eingestellt. Durch @ComposableContract(tracked=false) ersetzen (Id211e)
- Vor dieser Änderung hat das Compose-Compiler-Plug-in Aufrufe von Konstruktoren innerhalb einer @Composable-Funktion nicht trivial abgefangen, wenn ein (I5205a, b/158123804)
- Die
viewModel()-Composable-Funktion wurde hinzugefügt, mit der ViewModels ähnlich wie in einer Activity oder einem Fragment erstellt oder abgerufen werden können (I5fdd1). Die Klasse „Radius“ wurde in eine Inline-Klasse umgestaltet. Methoden zum Erstellen von Begleitern wurden zugunsten des Funktionskonstruktors mit Standardparameter entfernt, damit der Radius entlang der Y-Achse dem des obligatorischen X-Achsen-Radiusparameters entspricht.
Die Funktion „DrawScope.drawRoundRect“ wurde aktualisiert, sodass sie einen einzelnen „Radius“-Parameter anstelle von zwei separaten Gleitkommawerten für den Radius entlang der x- und y-Achse verwendet (I46d1b).
Die Verwendung der Px-Klasse in verschiedenen Compose-Klassen wurde im Rahmen der großen Umstellung ersetzt, um für Pixelparameter nur noch Dp und primitive Typen zu verwenden. 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 bei Pixelparametern nur auf Dp und primitive Typen zu verlassen (I97a5a).
Der Cursor des Textfelds blinkt (Id10a7)
Für partielle Gesten ist es nicht mehr erforderlich, ein GestureToken (Id7ae5) zu übergeben.
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)
Benennen Sie AnnotatedString.Builder.addAnnotationString in addStringAnnotation um. (I5059e)
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).
„Layout“- und „LayoutModifier“-Untergeordnete Elemente können mit einer anderen Layoutrichtung gemessen werden. (Ibd731)
Einführung eines zusätzlichen optionalen „rect“-Parameters für ImagePainter zur Unterstützung des Zeichnens eines Unterabschnitts des zugrunde liegenden ImageAsset (I0ea9e)
Ein Absturz in AdapterList beim Entfernen von Elementen wurde behoben (Ic64b0, b/153195921).
Wir haben geändert, wie wir das erste Layout messen, das Sie in den Block „activity.setContent { }“ einfügen. Bisher musste es den gesamten Aktivitätsbildschirm ausfüllen. Jetzt verhält es sich so, als ob Sie Ihr Layout in einen Stack eingefügt hätten: Es kann kleiner als ein Bildschirm sein und wird oben links auf dem Bildschirm positioniert. Wenn Sie das alte Verhalten beibehalten möchten, können Sie Modifier.fillMaxSize() für Ihr Layout verwenden. (Ie88a7, b/153453714)
Das Modul „ui-text-compose“ wurde in „ui-text“ umbenannt. „ui-text“ enthält jetzt die Composables „CoreText“ und „CoreTextField“ (Ib7d47).
Das Modul „ui-text“ wurde in „ui-text-core“ umbenannt (I57dec).
Die Composables „ui-framework/CoreText“ und „CoreTextField“ wurden in „ui-text-compose“ verschoben. Möglicherweise möchten Sie „ui-text-compose“ in Ihr Projekt einbinden. (I32042)
runOnIdleComposeundrunOnUiThreadsind jetzt globale Funktionen anstelle von Methoden für ComposeTestRule. (Icbe8f)[Mutable]State-Eigenschaftsdelegator-Operatoren wurden in Erweiterungen verschoben, um Optimierungen für Kotlin 1.4-Eigenschaftsdelegatoren zu unterstützen. Anrufer müssen Importe hinzufügen, um
by state { ... }oderby mutableStateOf(...)weiterhin verwenden zu können. (I5312c)Für DrawLayerModifier und drawLayer() sind clipToBounds und clipToOutline jetzt standardmäßig auf „false“ festgelegt. (I0eb8b, b/152810850)
„LayoutResult“ wurde in „MeasureResult“ umbenannt. (Id8c68)
Veraltete Center-Composable-Funktion. Es sollte entweder durch den Modifizierer „LayoutSize.Fill + LayoutAlign.Center“ oder durch eine der Box- oder Stack-Composables mit entsprechenden Modifizierern ersetzt werden (Idf5e0).
„LayoutFlexible“ wurde in „LayoutWeight“ umbenannt. Der enge Parameter wurde in „fill“ umbenannt. (If4738)
DrawVector wurde von einer regulären zusammensetzbaren Funktion in eine Funktion geändert, die einen Modifier drawVector() zurückgibt, mit dem der Vektor als Hintergrund für ein Layout gezeichnet wird. (I7b8e0)
Ersetzen Sie die zusammensetzbare Funktion „Clip“ durch den Modifier „drawClip()“. „DrawClipToBounds“ ist ein praktischer Modifier, wenn Sie nur mit einer rechteckigen Form auf die Ebenengrenzen beschneiden müssen. (If28eb)
Die zusammensetzbare Funktion „DrawShadow“ wurde durch den Modifier „drawShadow()“ ersetzt. Schatten werden jetzt als Teil von „LayerModifier“ gezeichnet. (I0317a)
androidx.compose.ViewComposer wurde zu androidx.ui.node.UiComposer verschoben. androidx.compose.Emittable wurde entfernt. Sie war redundant mit ComponentNode. androidx.compose.ViewAdapters wurde entfernt. Sie werden nicht mehr unterstützt. Die Funktion „Compose.composeInto“ wurde eingestellt. Verwenden Sie stattdessen
setContentodersetViewContent. Die Funktion „Compose.disposeComposition“ wurde eingestellt. Verwenden Sie stattdessen die Methodedisposefür das vonsetContentzurückgegebeneComposition. androidx.compose.Compose.subcomposeInto wurde zu androidx.ui.core.subcomposeInto verschoben. ComponentNode#emitInsertAt wurde in ComponentNode#insertAt umbenannt. ComponentNode#emitRemoveAt wurde in ComponentNode#removeAt umbenannt. ComponentNode#emitMode wurde in ComponentNode#move umbenannt (Idef00).Veraltete Wrap-Composable-Funktion. Er kann entweder durch den Modifier „LayoutAlign“ oder durch die zusammensetzbare Funktion „Stack“ (Ib237f) ersetzt werden.
Die Layoutrichtung wird jetzt vom übergeordneten Layoutknoten an die untergeordneten Knoten weitergegeben. Modifikator für die Layoutrichtung hinzugefügt. (I3d955)
Benennen Sie „Painter.toModifier“ in „Painter.asModifier“ um, da der neu erstellte Modifier einen Verweis auf den ursprünglichen Painter hat, der für mehrere Modifier-Instanzen freigegeben werden kann (I7195b).
Unterstützung der Rechts-nach-links-Richtung im Modifier „LayoutPadding“ (I9e8da)
„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)
Die ValueHolder-Klasse wurde entfernt. Die Klassen „AnimatedValue“ und „AnimatedFloat“ wurden umstrukturiert, damit das Feld für den Animationswert abstrakt ist und Unterklassen die Aktualisierung des Werts beobachten können.
- Modellklassen für AnimatedValue, AnimatedFloat usw. hinzugefügt
- Es wurde eine neue Reihe von einfachen @Composable-APIs zum Animieren zwischen Werten hinzugefügt.
- (I79530)
Funktionsgefährdende Änderungen an der Ambient-API. Weitere Informationen finden Sie im Log und in der
Ambient<T>-Dokumentation (I4c7ee, b/143769776).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)
Ein ConstraintLayout-Fehler wurde behoben, der bei Neuzusammenstellungen zu einem Absturz führte. (Ibee5a, b/158164341)
Die API für das nachgestellte Lambda „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 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)
„LayoutDirectionAmbient“ wird nicht mehr unterstützt. Verwenden Sie „localeLayoutDirection“ für „ConfigurationAmbient“ (I851b1), um die von der Sprache definierte Layoutrichtung zu lesen.
„positionInParent“ und „boundsInParent“ für „LayoutCoordinates“ hinzugefügt. (Icacdd, b/152735784)
Die zusammensetzbare Funktion „ParentData“ ist veraltet. Sie sollten entweder einen Modifier erstellen, der die ParentDataModifier-Schnittstelle implementiert, oder den LayoutTag-Modifier verwenden, wenn Sie Layout-Untergeordnete Elemente nur taggen müssen, um sie im Measure-Block zu erkennen. (I51368, b/150953183)
Fügen Sie OnPositionedModifier und OnChildPositionedModifier hinzu, um die zusammensetzbaren Funktionen OnPositioned und OnChildPositioned zu ersetzen. (I2ec8f)
Negative Auffüllung in LayoutPadding nicht zulassen. Für negative Positionsabweichungen sollte stattdessen „LayoutOffset“ verwendet werden. (Ifb5b1)
WithConstraints hat den Parameter „LayoutDirection“ erhalten (I6d6f7)
Das Flag
ComposeFlags.COMPOSER_PARAMwurde intruegeändert. Dadurch ändert sich die Strategie für die Codegenerierung für das Compose-Plug-in. Auf hoher Ebene führt dies dazu, dass @Composable-Funktionen mit einem zusätzlichen synthetischen Parameter generiert werden, der an nachfolgende @Composable-Aufrufe übergeben wird, damit die Laufzeit die Ausführung richtig verwalten kann. Dies ist eine erhebliche binäre Breaking Change, sollte aber die Quellcodekompatibilität bei allen zulässigen Verwendungen von Compose beibehalten. (I7971c)„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, Rotation oder Skalierung nicht sinnvoll. Stattdessen sollten Entwickler parentCoordinates und childToLocal() verwenden, um die Transformation von einer LayoutCoordinate in eine andere zu berechnen.
Bei LayoutCoordinates wird IntPxSize für die size-Property anstelle von PxSize verwendet. Für Layouts werden ganzzahlige Pixelgrößen verwendet. Alle Layoutgrößen sollten daher als Ganzzahlen und nicht als Gleitkommawerte angegeben werden. (I9367b)
Verbesserungen der API-Oberfläche von Constraints (I0fd15)
TextDirection.Content wurde hinzugefügt. (I48f36)
Passen Sie das Symbolleistenmenü an, damit die Optionen zum Kopieren, Ausschneiden und Einfügen richtig angezeigt werden. (Id3955)
Es wurde eine schwebende Symbolleiste für die Auswahl von Textfeldern hinzugefügt. (Ie8b07)
TextDirectionAlgorithm wurde in TextDirection umbenannt (I75ce8)
„TextDirection“ wurde in „ResolvedTextDirection“ umbenannt (I3ff38)
HapticFeedback für die Auswahl von Textfeldern hinzugefügt. (I58050)
Die Methoden „Kopieren“, „Ausschneiden“ und „Einfügen“ werden der TextField-Auswahl hinzugefügt. (Idb70b)
„TestTag“ und „Semantics“ wurden gelöscht. Verwenden Sie stattdessen Modifier.testTag und Modifier.semantics (I15ff0, b/158841414).
Der Paketname für „Locale“ und „LocaleList“ wurde von androidx.ui.text in androidx.ui.intl geändert (I8132c).
API-Änderung:
AnnotatedString(builder: Builder)wurde inannotatedString(builder: Builder)umbenannt. (Ia6377)API-Änderung:
AnnotatedString.Itemwurde inAnnotatedString.Rangeumbenannt. (I2d44d)Es wurde eine Symbolleiste für textbezogene Vorgänge hinzugefügt. (I49d53)
Es ist jetzt ein neuer LifecycleOwnerAmbient verfügbar. Eine Activity, die Sie mit der Compose-UI verwenden, sollte jetzt von androidx.activity.ComponentActivity (oder AppCompatActivity) abgeleitet werden. setContent für android.app.Activity ist jetzt veraltet (Idb25a, b/153141084).
Der Paketname „ui-android-text“ (androidx.text) wurde durch „androidx.ui.text.platform“ ersetzt, um den androidx-Richtlinien zu entsprechen. (I42711)