Grundlagen verfassen
androidx.compose.foundation
androidx.compose.foundation.layout
androidx.compose.foundation.gestures
androidx.compose.foundation.selection
androidx.compose.foundation.lazy
androidx.compose.foundation.interactionandroidx.compose.foundation.interactionandroidx.compose.foundation.interaction API-Referenzandroidx.compose.foundation.interactionandroidx.compose.foundation.interAction
Letzte Aktualisierung | Stabile Version | Releasekandidat | Beta-Ausgabe | Alpha-Release |
---|---|---|---|---|
26. Juni 2024 | 1.6.8 | - | 1.7.0-beta04 | - |
Gebäude
Compose besteht aus sieben Maven-Gruppen-IDs innerhalb von androidx
. Jede Gruppe umfasst eine bestimmte Teilmenge von Funktionen mit jeweils eigenen Versionshinweisen.
In dieser Tabelle werden die Gruppen und Links zu den einzelnen Versionshinweisen erläutert.
Gruppe | Beschreibung |
---|---|
compose.animation: | Animationen in den Jetpack Compose-Anwendungen erstellen, um die User Experience zu bereichern |
compose.compiler | @Composable-Funktionen transformieren und Optimierungen mit einem Kotlin-Compiler-Plug-in aktivieren. |
compose.foundation | Schreiben Sie Jetpack Compose-Anwendungen mit gebrauchsfertigen Bausteinen und erweitern Sie die Grundlage für den Aufbau Ihrer eigenen Designsysteme. |
compose.material | Jetpack Compose-UIs mit einsatzbereiten Material Design-Komponenten erstellen Dies ist der übergeordnete Einstiegspunkt von Compose. Hier werden Komponenten bereitgestellt, die den unter www.material.io beschriebenen Komponenten entsprechen. |
compose.material3 einfügen | Jetpack Compose-UIs mit Material Design 3 Components erstellen, der nächsten Entwicklung des Material Design Material 3 enthält aktualisierte Designs und Komponenten sowie Funktionen zur Personalisierung von Material You wie dynamische Farben. Das Produkt wurde so entwickelt, dass es zum visuellen Stil und zur System-UI von Android 12 passt. |
compose.runtime | Grundlegende Bausteine des Programmiermodells und der Statusverwaltung von Compose sowie die zentrale Laufzeit für das Compose-Compiler-Plug-in. |
compose.ui | Grundlegende Komponenten der Benutzeroberfläche zum Schreiben von E-Mails, die für die Interaktion mit dem Gerät erforderlich sind, darunter Layout, Zeichnen und Eingabe |
Abhängigkeiten deklarieren
Wenn Sie eine Abhängigkeit von Compose hinzufügen möchten, müssen Sie Ihrem Projekt das Maven-Repository von Google hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.
Fügen Sie der Datei build.gradle
für Ihre Anwendung oder Ihr Modul die Abhängigkeiten für die Artefakte hinzu, die Sie benötigen:
Groovig
dependencies { implementation "androidx.compose.foundation:foundation:1.6.8" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.14" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.6.8") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.14" } kotlinOptions { jvmTarget = "1.8" } }
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Dein Feedback hilft uns, Jetpack zu verbessern. Teilen Sie uns mit, wenn Sie neue Ausgaben entdecken oder Verbesserungsvorschläge für diese Bibliothek haben. Bitte sieh dir die vorhandenen Probleme in dieser Bibliothek an, bevor du eine neue erstellst. Sie können einem vorhandenen Problem Ihre Stimme hinzufügen, indem Sie auf die Sternschaltfläche klicken.
Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung.
Version 1.7
Version 1.7.0-beta04
26. Juni 2024
androidx.compose.foundation:foundation-*:1.7.0-beta04
wurde veröffentlicht. Version 1.7.0-beta04 enthält diese Commits.
Fehlerkorrekturen
- Abstürze bei sehr großen Textzeilen vermeiden (z. B. 10.000 Zeichen) (8157ab)
- Die Messung von sehr großem Text, die im neuen
BasicTextField
zu Abstürzen führte, wurde korrigiert (6b7575). - Setzt eine Verhaltensänderung bei der Zeilen-/Spaltenmessung zurück, durch die in bestimmten Szenarien die Textnutzung beeinträchtigt wird (69e8ba).
Version 1.7.0-beta03
12. Juni 2024
androidx.compose.foundation:foundation-*:1.7.0-beta03
wurde 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
wurde veröffentlicht. Version 1.7.0-beta02 enthält diese Commits.
API-Änderungen
- Fügt eine experimentelle API zum Konfigurieren des Prefetch-Verhaltens von
LazyGrids
hinzu, ähnlich der vorhandenen experimentellen API fürLazyLists
. Dazu gehört auch die Unterstützung für den Vorabruf von Elementen in verschachteltenLazyGrids
. Ähnlich wie beiLazyListPrefetchStrategy
werden die ersten beiden verschachtelten Elemente jedes Rasters standardmäßig vorab abgerufen. Dies kann jedoch über die neuenLazyGridPrefetchStrategy(nestedPrefetchItemCount)
- undLazyListPrefetchStrategy#onNestedPrefetch
-APIs konfiguriert werden. (I591c4) SemanticsProperties.Editable
wurde inIsEditable
umbenannt undSemanticsPropertyReceiver.editable
wird in einen WertisEditable
geändert. Die Eigenschaft ist jetzt ein boolescher Wert und wird immer durch Textfelder angegeben. (I8acd8)- Standardwerte für
basicMarquee
wurden in das ObjektMarqueeDefaults
verschoben. (I12ff6) - Der Parameter
basicMarquee
delayMillis
wurde inrepeatDelayMillis
umbenannt. (I12ff6) - Update API zum Gestalten der Links:
TextLinkStyles
wurde inTextStyle
verschoben undTextDefaults
aus Material entfernt (I5477b)
Fehlerkorrekturen
LayoutCoordinates.introducesFrameOfReference
wurde inLayoutCoordinates.introducesMotionFrameOfReference
umbenannt, um den Zweck besser widerzuspiegeln. Die zugehörige Funktion wurde umbenannt, um Koordinaten basierend auf dieser Markierung zu berechnen. (I3a330)- „Standard“ wurde aus den
MarqueeDefaults
-Properties entfernt. (I1d8a0) - "Laufrahmen" wurde aus
MarqueeDefaults
Properties entfernt. (Iad4f4) TextLinkStyles
wurde aus der KlasseTextStyle
entfernt. Stattdessen istTextLinkStyles
Teil desLinkAnntation
-Konstruktors und derAnnotatedString.fromHtml
-Methode (I90b2b).- Es wurde ein Fehler behoben, bei dem der Pager beim Sprung auf eine Grenze raschte, während er sich bereits an der Grenze befunden hatte. (I9f373, b/339171222)
- BTF2 verfügt jetzt über korrekte Mausauswahlgesten. (Ibe8c6)
Externer Beitrag
- Erneut senden „Inhaltstyp für die Zeitberechnung anhand des Prefetch-Inhalts erstellen/messen, um die Genauigkeit zu verbessern“ (Iea622)
- Inhaltstyp für die Zeitberechnung zum Erstellen/Messen auf Basis des Prefetches erstellen, um die Genauigkeit zu verbessern (Ibccb1)
WindowInsetsPadding
-Modifikatoren aus gemeinsamem Quellsatz (I070b2) verfügbar machen
Version 1.7.0-beta01
14. Mai 2024
androidx.compose.foundation:foundation-*:1.7.0-beta01
wurde veröffentlicht. Version 1.7.0-beta01 enthält diese Commits.
API-Änderungen
- Die Eigenschaft
KeyboardOptions.shouldShowKeyboardOnFocus
wurde aus Gründen der Binärkompatibilität wieder als veraltet markiert. (I15cfe) Modifier.anchoredDraggable
kehrt jetzt Ziehdeltas jetzt standardmäßig für Komponenten mit horizontaler Ausrichtung um, wenn sie in einem RTL-Layout verwendet werden. (I3c6d9)AnnotatedString.hasEqualsAnnotations
ist jetzthasEqualAnnotations
. (I685c0)- Die API zum Erhalten von Material-Links im Text wurde aktualisiert. Insbesondere wurden die Methoden aus dem
TextDefaults
zum Erstellen von themenbezogenenLinkAnnotations
und zum Parsen von HTML mit themenbezogenen Links entfernt. Stattdessen wurde eineTextLinkStyles
-Klasse hinzugefügt, mit der die Links als Parameter für die zusammensetzbare Textfunktion gestaltet werden können. (I31b93) onDragStarted
undonDragStopped
wurden durch Callbacks ohne Sperrung ersetzt. (I59de8)
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem Pager abstürzte, wenn
contentPadding
größer war als die eingehenden Einschränkungen. Pager erzwingt jetzt negative Werte, die vonPageSize
in 0 zurückgegeben werden. (Iba5d8, b/314008560)
Version 1.7.0-alpha08
1. Mai 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha08
wurde veröffentlicht. Version 1.7.0-alpha08 enthält diese Commits.
Neue Funktionen
- Für
BasicTextField
undSelectionContainer
wurde ein Kontextmenü mit der rechten Maustaste hinzugefügt, das Elemente zum Ausschneiden, Kopieren, Einfügen und zum Auswählen aller Aktionen enthält. (If8c93, Ia2b49, I6f268)
API-Änderungen
LazyLayout
Prefetch-Anfragen können jetzt als dringend gekennzeichnet werden. Wir erwarten also, dass dieses Element im nächsten Frame benötigt wird, und möchten das Frame-Budget ignorieren, um im Voraus mehr Arbeit erledigen zu können (Id513f).isPositionedByParentWithDirectManipulation
wurde inintroducesFrameOfReference
umbenannt. Beachten Sie, dass dies jetzt den umgekehrten Effekt hat. Das bedeutet, dass die meistenLayoutCoordinates
standardmäßig einen Referenzrahmen einführen und das Attribut nur bei direkter Bearbeitung den Wert „false“ hat. Um die Position nur mit solchen abzufragen, die einen Bezugsrahmen beinhalten, verwenden SiepositionInLocalFrameOfReference(...)
. OderpositionInLocalLookaheadFrameOfReference
von einemLookaheadScope
. (Ifc5f7)onClicked
wurde inLinkInteractionListener
inonClick
umbenannt (Iaa35c)- Aktionslambda für
getScrollViewportLength
gemäß Feedback des API-Council ändern. (Ibc74a) - APIs zur Delegierung der Handschrifteingabe mit Eingabestiften wurden umbenannt. (Ica45f, b/327271923)
- Benennen Sie
TextInclusionStrategy.isInside
inisIncluded
um. Legen Sie fest, dass der RückgabetypParagraph/MultiParagraph#getRangeForRect()
nicht Nullwerte zulässig ist. (I51f26)
Fehlerkorrekturen
- „Alles auswählen“ wurde allen Textkontextmenüs in
SelectionContainer
hinzugefügt. (Ib750e, b/240143283) - Das Erfassen langer Screenshots für scrollbare Container mit
reverseScrolling=true
wurde korrigiert. (I7c59c) - Es wurde ein Problem behoben, bei dem sich die
currentValue
vonAnchoredDraggableState
änderte, wenn sie sich den Grenzen des Bundesstaates näherten. (Iea30b, b/333846848)
Externer Beitrag
PrefetchExecutor
wurde umbenannt inPrefetchScheduler
, um die Verantwortungsbereiche besser wiederzugeben. (Ib9154)- Unterstützung für den Vorabruf von Elementen in verschachtelten
LazyLists
wurde hinzugefügt (z.B. einLazyColumn
, das verschachtelteLazyRows
rendert). Durch diese Änderung wird erwartet, dass Frame-Einbrüche beim Scrollen für dieseLazyLists
reduziert werden. Standardmäßig werden die ersten beiden verschachtelten Elemente vorab abgerufen. Dieses Verhalten kann jedoch über die neuen APIsLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
undLazyListPrefetchStrategy#onNestedPrefetch
gesteuert werden. (I51952)
Version 1.7.0-alpha07
17. April 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha07
wurde veröffentlicht. Version 1.7.0-alpha07 enthält diese Commits.
Neue Funktionen
- Es wurde ein
TextDefaults
-Objekt hinzugefügt, das Methoden zum Erstellen einerLinkAnnotation
und zum Parsen von HTML-getaggten Strings enthält, dieMaterialTheme
auf die Links anwenden. (I98532, b/139312671) - Die Unterstützung für Animationen für das Erscheinungsbild und das Verschwinden von Elementen wurde in
LazyVerticalGrid
undLazyHorizontalGrid
hinzugefügt. Bisher war es möglich, denModifier.animateItemPlacement()
-Modifikator hinzuzufügen, um Animationen für die Platzierung (Neuanordnung) zu unterstützen. Wir haben diesen Modifikator eingestellt und einen neuen nicht experimentellen Modifikator namensModifier.animateItem()
eingeführt, mit dem alle drei Animationstypen unterstützt werden: Erscheinungsbild (Einblenden), Verschwinden (Ausblenden) und Neuanordnung. (Ib7d12, b/330510929) - Die Unterstützung für Animationen für das Erscheinungsbild und das Verschwinden von Elementen wurde in
LazyVerticalStaggeredGrid
undLazyHorizontalStaggeredGrid
hinzugefügt. Bisher war es möglich, denModifier.animateItemPlacement()
-Modifikator hinzuzufügen, um Animationen für die Platzierung (Neuanordnung) zu unterstützen. Wir haben diesen Modifikator eingestellt und einen neuen nicht experimentellen Modifikator namensModifier.animateItem()
eingeführt, mit dem alle drei Animationstypen unterstützt werden: Erscheinungsbild (Einblenden), Verschwinden (Ausblenden) und Neuanordnung. (I69bc9, b/330511290)
API-Änderungen
- Fügt
ContextMenuColors
und die zugehörigenLocalContextMenuTheme
ProvidableCompositionLocal
hinzu. Die Farben des Kontextmenüs für Textfelder und auswählbarer Text können geändert werden, indem die Komposition lokal bereitgestellt wird. (Ifa154) - Die Stiloption für Textlinks wurde neben der normalen Gestaltung auch gedrückt, wenn der Mauszeiger darauf bewegt wurde und der Text hervorgehoben wurde. (I5f864, b/139312671)
- Stelle
ViewConfiguration.HandwritingGestureLineMargin
für handschriftliche Gesten vor. Unterstützung der Handschrift-Geste fürBasicTextField
. (Ie6e13, b/325660505) DelegatableNode.scrollIntoView
wurde für Version 1.7 entfernt, da wir keine Zeit hatten, die Stabilisierung der übrigen API-Oberfläche abzuschließen. Diese Funktion wird in 1.8 wieder eingeführt (I6cf61, b/333421581, b/332900232).- Bei der Abfrage von Layoutkoordinaten können Sie jetzt das Argument
excludeDirectManipulationOffset
verwenden, um den Versatz von übergeordneten Layouts auszuschließen, bei denen die untergeordneten Layouts mithilfe vonPlaceable.PlacementScope.withDirectManipulationPlacement
platziert wurden. Ebenso kann ein Layout, bei dem sich die Position seiner untergeordneten Elemente häufig ändert, diese nun mithilfe vonwithDirectManipulationPlacement
platzieren, wie z. B. „Scrollen“, das standardmäßig implementiert ist. Auf diese Weise sind die aufapproachLayout
basierenden Animationen intuitiver. Sie haben jetzt die Möglichkeit zu unterscheiden, welcher Offset animiert werden soll und was direkt angewendet werden soll, wenn es um die Animation des Ansatzes geht. (I60ec7) - Stelle
requestScrollToItem
fürLazyStaggeredGrid
vor. Für jeden Measure-Pass kann der Client nun durch Aufrufen vonrequestScrollToItem
die Pflege des Index basierend auf dem Schlüssel deaktivieren. Dies ändert das vorhandene Verhalten in keiner Weise, es sei denn,requestScrollToItem
wird aufgerufen. (I63983) - Stell
requestScrollToPage
als Pager vor. Für jeden Measure-Pass kann der Client nun durch Aufrufen vonrequestScrollToPage
die Pflege des Index basierend auf dem Schlüssel deaktivieren. Dies ändert das vorhandene Verhalten in keiner Weise, es sei denn,requestScrollToPage
wird aufgerufen. (IC4213) - „
requestScrollToItem
“ wurde fürLazyGrids
eingeführt. Für jeden Measure-Pass kann der Client nun durch Aufrufen vonrequestScrollToItem
die Pflege des Index basierend auf dem Schlüssel deaktivieren. Dies ändert das vorhandene Verhalten in keiner Weise, es sei denn,requestScrollToItem
wird aufgerufen. (I0a7a0) ClickableText
ist als veraltet markiert. Um dem Text Links hinzuzufügen, erstellen Sie einAnnotatedString
mit einerLinkAnnotation
, die Ihrem Link entspricht, und übergeben Sie diesesAnnotatedString
an die zusammensetzbareText
-Funktion (I34d4b, b/323346994).UrlAnnotation
wurde verworfen. Verwenden Sie stattdessenLinkAnnotation.Url
. Wenn Sie Material-Designs verwenden, erstellen Sie mit einemTextDefaults
-Objekt die Anmerkung mit angewendeten Material-Designs (I8d180, b/323346545).String.parseAsHtml
umbenannt inAnnotatedString.Companion.fromHtml
(I43dcd)- Stilargumente (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) und ein Linkinteraktions-Listener für dieparseAsHtml
-Methode hinzugefügt. Wenn der HTML-getaggte String mit<a>
-Tags geparst wird, erstellt die Methode für jedes dieser Tags einLinkAnnotation.Url
und übergibt die Stilobjekte und den Link-Interaktions-Listener an jede Annotation. (I7c977) LinkAnnotation
verwendet jetzt die zustandsbasierten Stilargumente und einenLinkInteractionListener
. Fügen Sie diese Annotation zumAnnotatedString
hinzu, um einen Hyperlink zu erhalten. Durch die Übergabe vonfocusedState
und/oderhoveredState
können Sie die visuelle Konfiguration für Links definieren, die hervorgehoben werden und/oder wenn der Mauszeiger darauf bewegt wird. (I81ce4, b/139312671)- Die Funktions-Flag für lange Screenshots wurde entfernt. (I28648, b/329128246)
LazyColumn
rendert fixierte Überschriften in langen Screenshots jetzt korrekt. (I8d239, b/329296635)- Die Mehrheit der verbleibenden experimentellen APIs, die mit der neuen
BasicTextField
eingeführt wurden, wurde stabilisiert. (I714e2) - Der Parameter
textObfuscationCharacter
wurde zuBasicSecureTextField
hinzugefügt. Dieser steuert, welches Zeichen bei der Verschleierung des Inhalts verwendet werden soll. (I0588b) NestedScroll
-Quellen „Ziehen und Ziehen“ werden durchUserInput
undSideEffect
ersetzt, um die erweiterte Definition dieser Quellen zu ermöglichen, die jetzt Animationen (Seiteneffekt) sowie Mausrad und Tastatur (UserInput
) umfassen. (I40579)- Stell
LocalBringIntoViewSpec
vor, ein plattformabhängiges Scrollverhalten im Fokus, das auf der Ebene mit dem Modus für scrollbare Modifikatoren angewendet wird. (I27aa5, b/317453911) TextFieldCharSequence
wurde entfernt.TextFieldBuffer.originalValues
wird durchTextFieldBuffer.originalText
undTextFieldBuffer.originalSelection
ersetzt. (I2c7d6)- Für
ImeOptions.hintLocales
können keine Nullwerte mehr eingegeben werden. Wenn Sie eine leere Gebietsschemaliste übergeben möchten, verwenden SieLocaleList.Empty
. (Ic5bc4) getOffsetFractionForPage
wurde ingetOffsetDistanceInPages
umbenannt. (Ia05e2)
Fehlerkorrekturen
- Wenn
InputTransformations
mitnext
zusammengeführt werden, werden dieKeyboardOptions
jetzt ordnungsgemäß durch einzelne Optionen mit der neuenKeyboardOptions.merge
-Methode zusammengeführt. (Ie5304, b/295951492) targetValue
vonAnchoredDraggableState
berücksichtigt jetzt keine Positionsgrenzwerte mehr. Er hat jetzt einen impliziten Schwellenwert von 50%, was bedeutet, dass sichtargetValue
am Mittelpunkt zwischen zwei Ankern ändert. (I82c2c)
Externer Beitrag
- Zwei Scroll-APIs wurden umbenannt (I56a75).
Version 1.7.0-alpha06
3. April 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha06
wurde veröffentlicht. Version 1.7.0-alpha06 enthält diese Commits.
Neue Funktionen
- Die Unterstützung für Animationen für das Erscheinungsbild und das Verschwinden von Elementen wurde in
LazyColumn
undLazyRow
hinzugefügt. Bisher war es möglich, denModifier.animateItemPlacement()
-Modifikator hinzuzufügen, um Animationen für die Platzierung (Neuanordnung) zu unterstützen. Wir haben diesen Modifikator eingestellt und einen neuen nicht experimentellen Modifikator namensModifier.animateItem()
eingeführt, mit dem alle drei Animationstypen unterstützt werden: Erscheinungsbild (Einblenden), Verschwinden (Ausblenden) und Neuanordnung. (I2d7f7, b/150812265) - Clients von
LazyColumn/LazyRow
können die Verwaltung eines Index auf Grundlage des Schlüssels für die bevorstehende Messungsdurchführung jetzt deaktivieren, indem sie eineLazyListState.requestToScroll
ohne Sperrung aufrufen. (I98036, b/209652366) - Es wurde die
parseAsHtml
-Methode für Strings mit benutzerdefinierten Stilen hinzugefügt: Sie ermöglicht das Konvertieren eines mit HTML-Tags markierten Strings inAnnotatedString
. Beachten Sie, dass nicht alle Tags unterstützt werden. Zum Beispiel können Sie noch keine Aufzählungslisten anzeigen. (I84d3d) - Implementierung der experimentellen Unterstützung für lange Screenshots in Compose-Scrollcontainern mithilfe der offiziellen Android API (
ScrollCaptureCallback
). Diese Funktion ist experimentell und verarbeitet derzeit möglicherweise nicht alle Fälle richtig. Aus diesem Grund ist sie derzeit standardmäßig deaktiviert. Legen Sie zum Aktivieren das FlagComposeFeatureFlag_LongScreenshotsEnabled
auf „true“ fest. Dieses Flag wird vor der Betaversion 1.7 entfernt. (I2b055, b/329296471) - Führen Sie die neue
GraphicsLayer
API ein, um mehr Flexibilität bei der Platzierung und das Rendering vonGraphicsLayer
-Instanzen zu bieten und intrinsische Renderingfunktionen zu unterstützen, ohne sich mit Composable-Implementierungen koordinieren zu müssen, umGraphicsLayer
-Modifikatorinstanzen anzugeben.
API-Änderungen
- Alle
KeyboardOptions
-Parameter haben jetzt standardmäßig einen nicht angegebenen Wert. MethodeKeyboardOptions.merge
wurde hinzugefügt. KeyboardOptions.autoCorrect
wurde inautoCorrectEnabled
umbenannt und dafür gesorgt, dass Nullwerte zulässig sind, wobei null bedeutet, dass kein Wert angegeben wurde. (Ia8ba0, b/295951492)outOfBoundsPageCount
wurde inbeyondViewportPageCount
umbenannt. (I129c6)- „
fun ClipEntry.getMetadata()
“ wird in „val ClipEntry.clipMetadata
“ geändert. (I50155) TextFieldState.valueAsFlow()
wurde entfernt.snapshotFlow { state.text }
odersnapshotFlow { TextFieldCharSequence(state.text, state.selection) }
bevorzugen (I7d629)InputTransformation.transformInput
-Parameter neu organisiert. „originalValue: TextFieldCharSequence
“ wurde entfernt. Stattdessen trägtTextFieldBuffer
diesen Wert jetzt mit demselben Namen. Außerdem wurde der ParametervalueWithChanges: TextFieldBuffer
entfernt.TextFieldBuffer
ist jetzt der Empfängerbereich der Funktion. (I919cc)- Die Variante „
BasicTextField(state)
“ und „BasicSecureTextField
“ verwenden jetztKeyboardActionHandler
anstelle vonKeyboardActions
, um Aktionen über die Softwaretastatur zu verarbeiten. (I58dda) - APIs zum Delegieren von Handschriften mit Eingabestiften unterstützen die Handschrifteingabe in „falschen“ Texteingabefeldern. (I9c09c, b/327271923)
KeyboardOptions.shouldShowKeyboardOnFocus
wurde inshowKeyboardOnFocus
umbenannt. (Ib4b7a, b/295951492)- Parameter
hintMediaTypes
wurde ausModifier.contentReceiver
entfernt. Entwicklern wurde bereits empfohlen, den Medientyp des empfangenenTransferableContent
zu prüfen, da er möglicherweise nicht mit dem konfiguriertenhintMediaTypes
kompatibel ist. (I82f99) - Die Parameter von
BasicSecureTextField
wurden neu angeordnet. Die ParameterkeyboardType
undimeAction
wurden zugunsten der vollständigenKeyboardOptions
-Klasse entfernt, wobei die gleichen Standardwerte fürBasicSecureTextField
beibehalten wurden. Außerdem wurde der ParameterscrollState
entfernt. (Ibbfa9) - Der Typ von „
TextFieldState.text
“ wurde von „TextFieldCharSequence
“ in „CharSequence
“ geändert. Daher wurdenTextFieldState.selection: TextRange
undTextFieldState.composition: TextRange?
hinzugefügt, um die aktuellen Auswahl- und Zusammensetzungswerte direkt aus dem Zustandsobjekt zu lesen. TextFieldState.forEachTextValue
wurde entfernt. (Idb2a2)- Die Funktionen
ClipboardManager.getClipMetadata
undClipboardManager.hasClip
wurden entfernt. VerwendeclipEntry.getMetadata()
, um die Metadaten des aktuellen Clipeintrags zu lesen. Prüfen Sie auch das Ergebnis vonClipboardManager.getClip
, wenn es null ist oder nicht, um festzustellen, ob die Zwischenablage einen aktuellen Clip enthält. (I50498) ClipboardManager.setClip
akzeptiert jetzt null, um die Zwischenablage zu leeren. (I7d2e9)ReceiveContentListener
wird in eine Funktionsschnittstelle konvertiert. Außerdem wird dieModifier.receiveContent
-Überlastung, die eine Lambda-Funktion annimmt, entfernt, daReceiveContentListener
jetzt eine Funktionsschnittstelle ist.Modifier.receiveContent
wurde inModifier.contentReceiver
umbenannt. (I1e6af)TransferableContent.consumeEach
wurde inTransferableContent.consume
umbenannt. (I1e462)rememberTextFieldState
ist auf eine stabile API umgestellt. (I37999)
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem die Variante
BasicTextField(state)
nicht mit CJK-Tastaturen(kompositionsbasiert) funktionierte. (I54425) - Es wurde ein Fehler behoben, bei dem
Modifier.dragAndDropTarget()
in bestimmten Szenarien mit der Wiederverwendung vonModifier.Node
auf veraltete Daten verweisen konnte. (I05bb1) - Eine kürzlich erfolgte Vertragsänderung wurde rückgängig gemacht, bei der
AnchoredDraggableState#anchoredDrag
-Aufrufe am Ende einesanchoredDrag
-Vorgangs anspringen. (I95715)
Version 1.7.0-alpha05
20. März 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha05
wurde veröffentlicht. Version 1.7.0-alpha05 enthält diese Commits.
API-Änderungen
- Die lokale Testkomposition
LocalTextLinkStyle
für das Gestalten von Hyperlinks wurde entfernt. (Iebfa7) - Die experimentelle Überschreibung von
BasicText
mit dem ArgumentonLinkClicked
wurde entfernt. In Zukunft wird eine Ersatz-API für die Unterstützung von Hyperlinks folgen. (I107d5) - Codepoints-bezogene Methoden und Eigenschaften unter
TextFieldState
undTextFieldBuffer
wurden entfernt. Außerdem wurden dieinChars
-Suffixe aus den verbleibenden APIs zur Auswahl und Zusammensetzung entfernt. (Ief7ce) - Der
currentValue
vonAnchoredDraggable
wird jetzt aktualisiert, wenn er durch einen Ankerpunkt bewegt wird. VerwendesettledValue
, um die vorherigecurrentValue
-Semantik zu erhalten, und wird nur aktualisiert, wenn sich die App an einem Anker befindet. Der Fortschritt wird jetzt als Funktion statt als Eigenschaft angezeigt, die einen Start- und Endpunkt erfordert. (Ibe6e8, b/318707189, b/298271489, b/294991954) BasicTextField(state)
,TextFieldState
,InputTransformation
,OutputTransformation
,TextFieldLineLimits
,TextFieldDecorator
wurden auf die stabile Version umgestellt. (I9582b)- Einführung von
InterceptPlatformTextInput
für das Schreiben von Low-Level-IME-Tests und anderen Low-Level-IME-Anwendungsfällen.PlatformTextInputTestOverride
wurde verworfen. (I862ed, b/322680547) restrictedConstraints()
in zwei Methoden aufteilen:fitPrioritizingWidth()
undfitPrioritizingHeight()
(I6d7fd)
Externer Beitrag
- Zwei neue API
isLastScrollForward
/isLastScrollBackward
hinzugefügt, um die Scrollrichtung für die neueste Scrollaktion zu prüfen. Gibt „false“ zurück, wenn noch keine Scrollaktion vorhanden ist. (I63a0e)
Version 1.7.0-alpha04
6. März 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha04
wurde veröffentlicht. Version 1.7.0-alpha04 enthält diese Commits.
API-Änderungen
- Unterstützung der Handschriftfunktion mit Eingabestift auf Geräten ab Android U. (I002e4)
hintLocales
wurde zuKeyboardOptions
hinzugefügt, damitTextFields
IMEs mit bestimmten Sprachen als Hinweis auf eine bevorzugte Sprache angeben kann. (Id18c2)- Die experimentellen
BasicTextField2
- undBasicSecureTextField
-Überlastungen, für die die Parametervalue: String
undonValueChange: () -> String
erforderlich waren, wurden entfernt. (I568b4) - Fügen Sie
InputTransformation
eine optionaleapplySemantics
-Funktion hinzu, um die Semantik derBasicTextField2
zu beeinflussen, auf die sie angewendet wird. (I74a2f, b/170648072) - In dieser CL wird die semantische Aktion
GetScrollViewportLength
hinzugefügt, damit Informationen zu den Komponenten, nach denen in der Zusammensetzung gescrollt wird, an das A11y-System weitergeleitet werden können. Diese CL wendet auch die Verwendung dieser Property in scrollbaren Foundation-Listen an. (Ic5fa2) BasicTextField2
wurde inBasicTextField
umbenannt. (IE5713)FocusRequester.createRefs
ist jetzt stabil (I4d92c, b/261436820).- Einführung von
DelegatableNode.scrollIntoView()
, damit ModifikatorknotenscrollIntoView
-Anfragen direkt senden können. (I2b3b7, b/299939840) DelegatableNode.requireView()
wurde eingeführt, damit Modifikatorknoten das aktuelle Android-View
abrufen können, ohne eine lokale Zusammensetzung zu lesen. (I40768)- Einführung von kontextbezogenen Layoutinformationen in den Zeilenbereich des Kontextflusses und den Spaltenbereich des Kontextflusses, einschließlich Linienindex, Position und Beschränkungen für maximale Breite und Höhe, um in einer bestimmten Position zu bleiben. Elemente, die die maximale Breite/Höhe überschreiten, wandern möglicherweise in die nächste Zeile oder werden aufgrund der Überlaufeinstellungen weggelassen. (Id13f8, b/292114798)
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem das Umschalten der
enabled
- oderreadOnly
-Attribute vonTextField
unter bestimmten Bedingungen zu einem Absturz führte. (Iae17b)
Version 1.7.0-alpha03
21. Februar 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha03
wurde veröffentlicht. Version 1.7.0-alpha03 enthält diese Commits.
API-Änderungen
DelegatableNode.requireLayoutCoordinates()
wurde eingeführt, um den aktuellenLayoutCoordinates
einerModifier.Node
abzurufen, ohneonPlaced
überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Ia8657)DelegatableNode.currentLayoutCoordinates
wurde eingeführt, um den aktuellenLayoutCoordinates
einerModifier.Node
abzurufen, ohneonPlaced
überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Iaebaa)- Leistungsoptimierungen in
DraggableAnchors
werden vonAnchoredDraggable
verwendet. (I89cff) BasicTextField2
und zugehörige APIs unter dem Paketandroidx.compose.foundation.text2
werden nachandroidx.compose.foundation.text
verschoben. (I9f635)BasicTextField2
akzeptiert keinenCodepointTransformation
-Parameter mehr. VerwendeBasicSecureTextField
oderOutputTransformation
. (Id34ff)- Es wurde eine Methode hinzugefügt, mit der nur die Annotationen von zwei
AnnotatedStrings
verglichen werden können. (I32659) - Jetzt neu:
ContextualFlowRow
und erweiterteFlowRow
/Column
mitMaxLines
undOverflow
. Wir freuen uns, Verbesserungen an den experimentellenFlowRow
undFlowColumn
ankündigen zu können, die jetzt neben der Einführung vonContextualFlowRow
undContextualFlowColumn
auchmaxLines
und Überlauf-Unterstützung umfassen. Dieses Update wurde entwickelt, um Komponenten für eine optimale Leistung bereitzustellen, wobeiContextualFlow*
perfekt für eine große Anzahl von Artikeln mit einer kleinenmaxLines
-Konfiguration und dynamischer +N-Schaltflächen für die Anzeige weiterer Schaltflächen undFlowRow
undFlowColumn
ideal für eine kleine Anzahl von Artikeln, also weniger als 100 Elemente, geeignet ist. Wichtig: Wenn Sie das bestehende Verhalten inFlowRow
oderFlowColumn
beibehalten möchten, bei dem alle Elemente unabhängig davon, ob sie zum Maximum der Querachse passen, zusammengehören, setzen Sieoverflow
während der Initialisierung aufFlowRowOverflow.Visible
oderFlowColumnOverflow.Visible
. Sehen Sie sich die Beispiele für diese neuen Funktionen inContextualFlowRowSample
undFlowRowSample
an. (Ib9135, b/293577082)
Fehlerkorrekturen
- Für die Cursoranimation werden keine Frames mehr angefordert, die sich im Ein- oder Aus-Zustand befinden. (Ia2253)
- Die eingestellten Kopierkonstruktoren von
KeyboardOptions
kopieren jetzt alle Attribute korrekt. (If12de)
Version 1.7.0-alpha02
7. Februar 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha02
wurde veröffentlicht. Version 1.7.0-alpha02 enthält diese Commits.
API-Änderungen
HorizontalPager
,VerticalPager
undPagerState
werden auf die stabile Version hochgestuft. (I67660, b/316966909)- Es wurde eine lokale Komposition vom Typ
LocalTextLinkStyle
hinzugefügt, mit der sich der Stil der Links in „Text“ in der App ändern lässt. Wenn du in der App ein eigenes Design verwendest, solltest du diese lokale Komposition entsprechend deinem Design festlegen. Wenn Sie das Material-Design verwenden, ist die Farbe des Links standardmäßig auf die Primärfarbe des Materials festgelegt. (I7eb10) - Der
receiveContent
-Modifikator wurde eingeführt, der Entwicklern die Möglichkeit bietet, in Jetpack Compose aussagekräftige Inhalte zu empfangen. receiveContent
lässt sich inBasicTextField2
einbinden, um Rich-Text-Inhalte zu akzeptieren, die über die Softwaretastatur oder die Einfügefunktion in der Zwischenablage bereitgestellt werden. (I81b72)- Im Rahmen dieser Änderung ersetzen wir
SnapFlingBehavior
im Pager-Modus durchTargetedFlingBehavior
, um weitere Anwendungsfälle freizuschalten und mehr Flexibilität zu bieten. (I762ea) - Mit dieser Änderung machen wir Snapping APIs stabil. Außerdem bereinigen wir einen Teil des Testcodes und fügen dem Snapping weitere Beispiele hinzu. (Id8da9)
- Führe
TargetedFlingBehavior
ein. DiesesFlingBehavior
-Element ermöglicht die Weitergabe von Informationen zum Status der laufenden Animation und zum Ziel-Scroll-Offset. (I6a207)
Fehlerkorrekturen
BasicTextField2
behält den Cursor bei der Eingabe jetzt im Blick, wenn er aus dem sichtbaren Bereich gescrollt wurde oder aufgrund der Eingabe aus dem sichtbaren Bereich verschoben wird. (Ieb856, b/237190748)
Externer Beitrag
- 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
wurde veröffentlicht. Version 1.7.0-alpha01 enthält diese Commits.
Neue Funktionen
Indication API
neu hinzugefügt:IndicationNodeFactory
. Dies führt zu leistungsfähigerenIndication
-Implementierungen im Vergleich zur vorherigen (jetzt verworfenen)rememberUpdatedInstance
API. Informationen zur Migration findest du unter developer.android.com.clickable / combinedClickable / selectable / toggleable
akzeptiert jetzt einenMutableInteractionSource
-Parameter, für den Nullwerte zulässig sind. Wenn der Wert null ist und die angegebeneIndication
einIndicationNodeFactory
ist, kann dieIndication
nur bei Bedarf verzögert erstellt werden, wodurch die Leistung verbessert wird. Wenn du nicht aufhebst undMutableInteractionSource
verwendest, wird empfohlen, null zu übergeben.
API-Änderungen
- Führen Sie
DecayAnimation
inAnchoredDraggable
ein. Durch diese Änderung wirdAnchoredDraggable
eindecayAnimationSpec
-Parameter hinzugefügt, der die Verwendung einer Abklinganimation ermöglicht, wenn sich der Anker auf einen der Anker bezieht. Die Änderung umfasst auch die Umbenennung der vorhandenenanimationSpec
insnapAnimationSpec
, um die Anwendungsfälle der einzelnen Spezifikationen besser verständlich zu machen. BasicTextField2
ist für experimentelle Zwecke verfügbar. Sie sollte in etwa gleichwertig mitBasicTextField
sein und das Verhalten sollte produktionsreif sein. Die API ist vorerst jedoch noch experimentell. Vor der Stabilisierung wird es inBasicTextField
umbenannt und in dasselbe Paket verschoben.- Der erste Entwurf der
OutputTransformation
API fürBasicTextField2
wurde eingeführt. Diese API ersetzt die meisten Anwendungsfälle vonVisualTransformation
in der altenBasicTextField
. Sie ist jedoch noch nicht vollständig und einige Dinge werden nicht richtig funktionieren. Wir würden uns jedoch über Feedback zur API-Nutzungsfreundlichkeit für Ihre Anwendungsfälle freuen. (aosp/2708848) LinkAnnotation
wurde eingeführt, mit dem Links und anklickbare Elemente in Text eingefügt werden können. Die Linkfunktion ist noch nicht vollständig. Weitere API-Änderungen sind geplant.- Der
receiveContent
-Modifikator wurde eingeführt, der Entwicklern die Möglichkeit bietet, in Jetpack Compose aussagekräftige Inhalte zu empfangen. receiveContent
lässt sich inBasicTextField2
einbinden, um Rich-Media-Inhalte zu akzeptieren, die über die Softwaretastatur oder das Einfügen aus der Zwischenablage bereitgestellt werden.- Mit
KeyboardOptions.shouldShowKeyboardOnFocus
kannst du das StandardverhaltenBasicTextField
bei der Anforderung einer fokussierten Tastaturtastatur deaktivieren. TextInputService
undLocalTextInputService
wurden verworfen. Verwende stattdessenPlatformTextInputModifierNode
für die direkte Einbindung in Plattform-IME-APIs. (aosp/2862698)Indication#rememberUpdatedInstance
wurde verworfen. Sie hat eine unvermeidliche Leistungseinbußen und verhindert weitere Optimierungen. Stattdessen sollten Sie die neueIndicationNodeFactory
API verwenden.
Fehlerkorrekturen
BasicTextField
validiert jetzt eine kleine Auswahl von Offset-Zuordnungen vorab, wennVisualTransformation
übergeben wird. So lassen sich häufige Codierungsfehler erkennen, die zu nicht wiederherstellbaren Ausnahmen bei späteren Mess- oder Zeichendurchläufen führen. Durch das Auslösen dieser Fehler während der Komposition ist es wahrscheinlicher, dass Entwickler diese Fehler während der Entwicklung sehen, was dazu beiträgt, Produktionsabstürze zu vermeiden. (I0fd42)VisualTransformation
wird nicht ausgelöst, 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
wurde veröffentlicht. Version 1.6.8 enthält diese Commits.
Version 1.6.7
1. Mai 2024
androidx.compose.foundation:foundation-*:1.6.7
wurde veröffentlicht. Version 1.6.7 enthält diese Commits.
Version 1.6.6
17. April 2024
androidx.compose.foundation:foundation-*:1.6.6
wurde veröffentlicht. Version 1.6.6 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem das Umschalten der
enabled
- oderreadOnly
-Attribute vonTextField
unter bestimmten Bedingungen zu einem Absturz führte. (Iae17b)
Version 1.6.5
3. April 2024
androidx.compose.foundation:foundation-*:1.6.5
wurde veröffentlicht. Version 1.6.5 enthält diese Commits.
Fehlerkorrekturen
- Schwer zu reproduzierenden Fehlern in Zeile/Spalte werden Fehlerbehebungsprotokolle hinzugefügt: (b/300280216 und b/297974033)
Version 1.6.4
20. März 2024
androidx.compose.foundation:foundation-*:1.6.4
wurde veröffentlicht. Version 1.6.4 enthält diese Commits.
Fehlerkorrekturen
- Eine Auswahlgeste für langes Drücken und anschließendes Ziehen, die im ersten Frame des Drag aus den Layoutgrenzen des Textes herausbewegt, stürzt nicht mehr ab. (Icdf90, b/325307463)
Version 1.6.3
6. März 2024
androidx.compose.foundation:foundation-*:1.6.3
wurde veröffentlicht. Version 1.6.3 enthält diese Commits.
Version 1.6.2
21. Februar 2024
androidx.compose.foundation:foundation-*:1.6.2
wurde veröffentlicht. Version 1.6.2 enthält diese Commits.
Fehlerkorrekturen
- Fehler beim Zurücksetzen von „
AnimateContentSize
“ beheben. (I07051) - Ein Problem wurde behoben, bei dem
intrinsicHeight
Text unter bestimmten Umständen zu viel im Cache gespeichert wurde. (3cd398, b/217910352)
Version 1.6.1
7. Februar 2024
androidx.compose.foundation:foundation-*:1.6.1
wurde veröffentlicht. Version 1.6.1 enthält diese Commits.
Fehlerkorrekturen
- Die gestaffelte Rastermessung beim Scrollen über das Limit wurde korrigiert. (bffc39)
- Prüfung auf Layout mit großen Abmessungen hinzufügen. (e74af5)
- Die Position von 0-Elementen am Anfang des gestaffelten Rasters korrigieren. (785f94)
- Rufe den onRelease-Callback in der gleichen Reihenfolge wie onforgotten auf. (31ce3b)
Version 1.6.0
24. Januar 2024
androidx.compose.foundation:foundation-*:1.6.0
wurde veröffentlicht. Version 1.6.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.5.0
- Neuer Modifikator
Modifier.anchoredDraggable
, der die Möglichkeit freischaltet, zwischen vordefinierten Ankersätzen zu ziehen und zu animieren. Dieser Modifikator sollModifier.swipeable
ersetzen. In der Migrationsanleitung erfahren Sie, wie Sie es verwenden und vonModifier.swipeable
migrieren können. - Es wurde eine Drag-and-drop-Funktion zwischen Apps und Komponenten hinzugefügt. Weitere Informationen finden Sie unter
DragAndDropTarget
,Modifier.dragAndDropSource
und andere APIs Modifier.draggable2D
ist der neue Modifikator, der eine einfache Unterstützung für das Ziehen in 2D ermöglicht. Siehe Beispiel.AndroidExternalSurface
undAndroidEmbeddedExternalSurface
wurden hinzugefügt, um das Hinzufügen von oberflächengesteuerten Komponenten im Editor zu vereinfachen- Verschiedene API-Änderungen und ‐Verbesserungen in
Pager
undsnapFlingBehaviour
- Verschiedene Fokus-, Text- und Insets-APIs wurden zu stabilen APIs hochgestuft.
Version 1.6.0-rc01
10. Januar 2024
androidx.compose.foundation:foundation-*:1.6.0-rc01
wurde 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
wurde veröffentlicht. Version 1.6.0-beta03 enthält diese Commits.
Fehlerkorrekturen
- Absturz behoben, der sich auf sehr großen Text ausgewirkt hat, der mit unbegrenzten Einschränkungen gemessen wurde. (I1a7df, b/312294386)
PlatformImeOptions
ist jetzt eine konkrete Klasse anstelle einer Schnittstelle. (If40a4)
Version 1.6.0-beta02
29. November 2023
androidx.compose.foundation:foundation-*:1.6.0-beta02
wurde veröffentlicht. Version 1.6.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem
canScroll
nach dem Ändern des Layouts nicht aktualisiert wurde. (I60a86) - Fehlerkorrektur für
Modifier.animateItemPlacement()
undLookaheadScope
nach kleinem Scrollen. (I3a2b7)
Version 1.6.0-beta01
15. November 2023
androidx.compose.foundation:foundation-*:1.6.0-beta01
wurde veröffentlicht. Version 1.6.0-beta01 enthält diese Commits.
API-Änderungen
- Der
DragAndDropTarget
-Modifikator übernimmt jetzt explizit die empfangendeDragAndDropTarget
und hat eine Lambda-Funktion, um eine Drag-and-drop-Sitzung zu aktivieren. Es gibt jetzt zwei Factory-Funktionen für eineDragAndDropModifierNode
. einen für den Empfang von Übertragungen und einen für die Datenübertragung (I69481) maximumFlingVelocity
wurde so aktualisiert, dass es als Gleitkommazahl dargestellt wird. Die Dokumentation wurde aktualisiert, um klarere Angaben zur EinheitmaximumFlingVelocity
zu machen. (I8adc7)onDragAndDropStart
in derDragAndDropModifierNode
-Fabrik wurde inacceptDragAndDropTransfer
umbenannt.acceptsDragAndDropTransfer
wurde demdragAndDropTarget
Modifier
hinzugefügt, um es per Drag-and-drop zu akzeptieren. Diese Lambda-Funktion gibt ein funktionsfähigesDragAndDropTarget
zurück, wenn sie an einer Drag-and-drop-Sitzung interessiert ist. Andere Lambdas für die Verarbeitung von Drag-Events wurden dadurch ersetzt.Eine
DragAndDropTarget
-Factory-Funktion wurde hinzugefügt, um Daten aus Drag-and-drop-Sitzungen zu empfangen (Iebf3a).Wenn Sie
startDragImmediately
inAnchoredDraggable
freigeben, können Sie steuern, wie Ziehgesten erkannt werden. Es ist sinnvoll, diesen Wert festzulegen, wenn das Widget zu einem Zielanker animiert. Siehe Beispiel. (Ie6d13, b/285139987)Foundation QuickInfo APIs sind jetzt
@ExperimentalFoundationApi
(I30b0b)Der Typ "
DragAndDropModifierNode.drag
" fürDragAndDropInfo
wurde entfernt und akzeptiert jetzt Parameter für die Lambda-Funktion "transferData
", die Dekorationsgröße und die Lambda-Funktion "Ziehen"DrawScope
DragAndDropTarget
bietet Methoden für bestimmte Drag-and-drop-Ereignisse und keine einzelne abstrakte Methode.onDragAndDropEvent
in der Factory-Funktion für eineDragAndDropModifierNode
wurde inonDragAndDropStart
umbenannt, um besser zu kommunizieren, dass die angegebeneDragAndDropTarget
nur für eine bestimmte Drag-and-drop-Sitzung gültig istDragAndDropEventType
wurde entfernt (I645b1).PlatformTextInputModifierNode.runTextInputSession
wurde inestablishTextInputSession
umbenannt. (I03cd0)OriginalText
durchTextSubstitution
ersetzen. (Ifa5a8)PlatformTextInputModifierNode.textInputSession
wurde inrunTextInputSession
umbenannt. (Ie9c6b)Die untergeordneten Elemente von
SubcomposeLayout
(sowie darauf basierende Layouts wieLazyColumn
), die zur späteren Wiederverwendung beibehalten werden, gelten als deaktiviert. Zum Testen solcher Knoten wurde eine neueassertIsDeactivated()
-Test-API eingeführt. Die übrigen Test-APIs filtern deaktivierte Knoten standardmäßig heraus. (I2ef84, b/187188981)Der Parameter
clippingEnabled
vonModifier.magnifier
wurde inclip
umbenannt.Für den
magnifierCenter
-Parameter vonModifier.magnifier
können Nullwerte zulässig (Nullwerte) verwendet werden. Das Standardverhalten bleibt dabei unverändert. (I6aa66)Material
SwipeToReveal
APIs (für Karten und Chips) basieren jetzt auf einer Slot-basierten API (wie von Compose empfohlen) anstelle von datenklassenbasierten Instanzen, um diese Slots zu erstellen. Dies ist eine funktionsgefährdende Änderung. In der Demo und im Beispielcode finden Sie Beispiele zur Verwendung der neuen API. (Ia8943)
Fehlerkorrekturen
- Implementiere Gleichheits- und Hashcode für
PageSize.Fixed
. (Ie3ede, b/300134276) - Es wurde ein Fehler behoben, durch den das
BasicText
-Layout nicht verkleinert wurde, wenn sichminWidth
änderte, undminWidth
geringer als die anfängliche MessungseinschränkungenmaxWidth
(Idb19c) war. - Renderer-Unterstützung für „Erledigen“-Gradient in
ArcLine
wurde hinzugefügt. (I4d5bb) - Binär-Kompatibilitätsproblem bei der Änderung von Window Inset beheben (Iee695)
- Entferne die Materialkernschicht für den Material3-Chip/die Schaltfläche, da die Mikro-Benchmarks auch ohne sie eine bessere Leistung zeigen. (I55555)
Version 1.6.0-alpha08
18. Oktober 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha08
wurde veröffentlicht. Version 1.6.0-alpha08 enthält diese Commits.
Neue Funktionen
Modifier.draggable2D
ist der neue Modifikator, der eine einfache Unterstützung für das Ziehen in 2D ermöglicht. Beispiel (Id95f5, b/214412658)
API-Änderungen
- Bei
Modifier.dragAndDrawSource
wurde die Lambda-FunktiononDrawDragShadow
indrawDragDecoration
umbenannt und beiDragAndDropInfo
wurde der Größenparameter indragDecorationSize
umbenannt. (Id0e30, b/303904810) - Der Parameter
decorationBox
vonBasicTextField2
wurde indecorator
umbenannt. Der Typ wird ebenfalls in eine gleichwertige unterhaltsameTextFieldDecorator
-Oberfläche geändert. (I23c1c)
Fehlerkorrekturen
- Verbesserte Dokumentation zu
BasicTextField
bezüglichonValueChange
-Anforderungen. (I90fc9, b/160257648)
Version 1.6.0-alpha07
4. Oktober 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha07
wurde veröffentlicht. Version 1.6.0-alpha07 enthält diese Commits.
API-Änderungen
- Einführung von
PlatformTextInputMethodTestOverride
zum Schreiben von Tests für benutzerdefinierte Texteditoren. (ID159b) GraphicsSurface
wurde inAndroidExternalSurface
umbenannt (I11680)- Temporäres Flag
DisableNonLinearFontScalingInCompose
zum Deaktivieren der nicht linearen Schriftskalierung hinzugefügt. Legen SieDisableNonLinearFontScalingInCompose = true
in Ihren Tests fest, wenn Sie Zeit zum Bereinigen benötigen. Dieses Flag wird in Compose 1.6.0-beta01 entfernt. (IC9486) - Die Sammlungen
ColorList
undColorSet
wurden hinzugefügt, bei denen Zuweisungen vermieden werden. (I744bd) - Durch diese Änderung wird
shortSnapVelocityThreshold
entfernt, das in ein Implementierungsdetail der Implementierung vonSnapLayoutInfoProvider
umgewandelt wurde. (I65f6d) - Fügt den
dragAndDropSource
-Modifikator zum Starten von Drag-and-drop-Sitzungen unddragAndDropTarget
für den Empfang von Drag-and-drop-Sitzungen hinzu (Ib7828, b/286038936). SnapPositionInLayout
-Dokumentation und Positionsmethode aktualisieren. Stellen Sie die Positionsmethode inSnapPositionInLayout
für Abstände im Inhalt vor. (Id7938, b/300116110)UndoState
wurde zuTextFieldState
hinzugefügt, mit der vom Nutzer vorgenommene Änderungen rückgängig gemacht/wiederholt werden können. (ICC024)
Fehlerkorrekturen
- Problem behoben, bei dem
basicMarquee
nach der Geschwindigkeitsänderung nicht animiert wurde. (Id2e77, b/297974036)
Version 1.6.0-alpha06
20. September 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha06
wurde veröffentlicht. Version 1.6.0-alpha06 enthält diese Commits.
Neue Funktionen
- Neue zusammensetzbare Wrapper für
SurfaceView
,TextureView: GraphicsSurface()
undEmbeddedGraphicsSurface()
. Die API ist experimentell und unterliegt Änderungen und Änderungen. (I9ddb2) Modifier.magnifier()
ist jetzt eine stabile API. Dazu gehört auch, dassMagnifierStyle
zugunsten von Inline-Parametern im Modifikator selbst entfernt wird. (I83bec, b/298381260, b/262367109, b/261438887)
API-Änderungen
updateCurrentPage
undupdateTargetPage
wurden inScrollScope
eingeführt. Dies sind die letzten Elemente, die erforderlich sind, um das animierte Scrollen durchPagerState.scroll
anzupassen. (I9cad5, b/267744105, b/243786897)- Kompaktheitsgrad von
SnapFlingBehavior
entfernen. Alle Implementierungen vonSnapLayoutInfoProvider
haben bereits eine Möglichkeit, auf die Dichte zuzugreifen. Möglicherweise wird der Empfängerbereich entfernt, was zu einer weniger komplexen Implementierung vonSnapFlingBehavior
undSnapLayoutInfoProviders
führt. (I153c3) - Weitere Modifikatoren, die als stabil gekennzeichnet sind. (I56af1, b/298046462)
SnapStepSize
wurde ausSnapLayoutInfoProvider
entfernt. Die Berechnung sollte unter Verwendung der Layoutinformationen erfolgen und über die Methode oder das Andocken von Offsets bereitgestellt werden. (If320c)
Änderungen im Verhalten
- In „Compose“ wird jetzt eine nicht lineare Schriftskalierung verwendet, um die Lesbarkeit und Barrierefreiheit zu verbessern. Ist die Schriftgröße in den Systemeinstellungen höher als 100 %, wird kleiner Text normal vergrößert, aber bereits großer Text vergrößert sich nur geringfügig. Außerdem werden die im SP definierten Zeilenhöhen automatisch so angepasst, dass sie proportional zur geplanten Höhe von 100% bleiben. Weitere Informationen finden Sie unter Best Practices für die Schriftskalierung (I11518).
Fehlerkorrekturen
- Die Verwendung von
rememberSaveable
für Kurzinfos wurde entfernt. (Icc131, b/299500338)
Version 1.6.0-alpha05
6. September 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha05
wurde veröffentlicht. Version 1.6.0-alpha05 enthält diese Commits.
API-Änderungen
- Füge Überlastungen für
BasicSecureTextField
hinzu, die einen unveränderlichen Wert akzeptieren, und einen Callback, um diesen Wert zu ändern, wie bei der aktuellenBasicTextField
API. (Ia4882) - Fügen Sie
Modifier.preferKeepClear()
hinzu, um bei API 33 und höher als zusammensetzbar zu kennzeichnen, dass keine unverankerten Fenster zulässig sind. (Ib51d5, b/297260115) - Die Bewegungsgeschwindigkeiten in Komponenten der Datenansicht wie
ScrollView
undRecyclerView
sind aufViewConfiguration.ScaledMaximumFlingVelocity
begrenzt. „Compose“ enthält jetzt eine eigene Version vonmaximumFlingVelocity
, die jetzt fürDraggable
gilt. (Ibf974) - Die verworfenen
Pager
- undPagerState
-Überlastungen wurden entfernt. (IEa07e) BasicTooltipBox
wurdecompose.foundation
hinzugefügt undPlainTooltipBox
undRichTooltipBox
aktualisiert, umTooltipBox
mit neuen ZusammensetzbarenPlainTooltip
undRichTooltip
zu verwenden. (I79e1d)
Version 1.6.0-alpha04
23. August 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha04
wurde veröffentlicht. Version 1.6.0-alpha04 enthält diese Commits.
API-Änderungen
ReusableComposition
-Schnittstelle zur Verwaltung des Lebenszyklus und der Wiederverwendung von Unterzusammensetzungen hinzugefügt. (I812d1, b/252846775)Modifier.focusGroup
wurde zu stabilen APIs hochgestuft. (I7ffa3)- Füge Überlastungen für
BasicTextField2
hinzu, die einen unveränderlichen Wert akzeptieren, und einen Callback, um diesen Wert zu ändern, wie bei der aktuellenBasicTextField
API. (I3f2b8) GridItemSpan::currentLineSpan
ist jetzt eine stabile API. (ICC29c)- Canvas, der
contentDescription
akzeptiert, ist jetzt eine stabile API. (Ib3d29) viewportSize
wurde inScrollState
eingeführt. Damit lässt sich die Größe vonviewPort
der Komponente ermitteln, die nach dem MessenScrollState
verwendet. (I8b85a, b/283102682)- Es wurde ein Problem behoben, durch das der Vorabruf in Pager nicht mit dem Verhalten in Views übereinstimmte. (I93352, b/289088847)
Modifier.consumeWindowInsets(PaddingValues)
ist jetzt stabil.- Die
Deprecated Modifier.consumedWindowInsets
API wurde entfernt. Verwende stattdessenModifier.consumeWindowInsets
. (Id72bb)
- Die
Version 1.6.0-alpha03
9. August 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha03
wurde veröffentlicht. Version 1.6.0-alpha03 enthält diese Commits.
API-Änderungen
- Die Überlastung von
LazyLayout
wurde hinzugefügt und akzeptiert als LambdaLazyLayoutItemProvider
statt eines einfachen Objekts wie zuvor. Die vorherige Überlastung wurde verworfen. (I42a5a) - Unterstützung für die Konfiguration von
privateImeOptions
hinzugefügt (Idb772)
Fehlerkorrekturen
- Textfelder, die die Tastatur anzeigen und bearbeitbar sind, wenn
readOnly
auf „true“ gesetzt ist, wurden korrigiert. Außerdem wurde behoben, dass die Tastatur nicht angezeigt wurde, wennreadOnly
im 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
wurde veröffentlicht. Version 1.6.0-alpha02 enthält diese Commits.
API-Änderungen
- Einführung von
PagerLayoutInfo
mit Informationen, die nach einer Messung inPager
erhoben wurden. Außerdem wurdePageInfo
eingeführt, die Informationen zu einer einzelnen gemessenen Seite inPager
. (Iad003, b/283098900) - Zusätzliche Anmerkungen zur Angabe zulässiger Eingaben für zusammensetzbare Funktionen (I51109)
SemanticsNodeInteraction.requestFocus
wurde hinzugefügt, um den Fokus bei Tests bequemer und auffindbarer zu machen. (Ie8722)- Komplett überarbeitete
PlatformTextInput*
API. (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardController
undLocalSoftwareKeyboardController
befinden sich nicht mehr in der Testphase.LocalSoftwareKeyboardController
ist jetzt auch ein richtigerCompositionLocal
. (I4c364)Modifier.transformable
gibt jetzt imcanPan
-Parameter ein Schwenk-Delta an, um festzulegen, in welche Richtung das Verschieben erfolgen soll. (I692aa, b/266829800)- Aktualisiert den Modifikator
consumeWindowInsets
, um die BasisklasseAbstractComposeView
zu erweitern (Iacd74, b/269479941)
Version 1.6.0-alpha01
21. Juni 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha01
wurde veröffentlicht. Version 1.6.0-alpha01 enthält diese Commits.
Neue Funktionen
- Einführung einer neuen
AnchoredDraggable
API in der Foundation Damit können Komponenten erstellt werden, die zwischen einzelnen Zuständen gezogen werden können, z. B. modale Ansichten am unteren Rand. Diese API ersetzt dieSwipeable
API von Material. (I4a2ed)
API-Änderungen
InputConnection#requestCursorUpdates
unterstützen (I0c69b)scrollAnimationSpec
wurde eingeführt, um Spezifikationen für benutzerdefinierte Animationen zuzulassen. „BringIntoViewCalculator
“ wurde auf „BringIntoViewScroller
“ aktualisiert. (Idb741)- Füge den Wurfables, die beim Laden von Bitmap-Assets mit einer Beschreibung des Asset-Pfads, der nicht geladen werden konnte, den Typ
ResourceResolutionException
hinzu. (I19f44, b/230166331, b/278424788) - Semantikeigenschaften und Aktionen zur Unterstützung der Textübersetzung wurden hinzugefügt. (I4a6bc)
- Es wurde eine
BringIntoViewCalculator
API eingeführt, mit der angepasst werden kann, wie Komponenten wieScrollable
aufbringIntoView
-Anfragen reagieren. Die Überlastung von scrollable wurde so geändert, dass eine Instanz vonBringIntoViewCalculator
optional akzeptiert wird. (Iaf5af)
Fehlerkorrekturen
- Es wurde eine Lint-Prüfung hinzugefügt, die warnt, wenn Sie eine
MutableInteractionSource
in der Zusammensetzung erstellen, ohne sie zu speichern, ähnlich wie bei der Lint-Prüfung zum Erstellen eines veränderlichen Zustands /Animatable
. (i5daae) - Die Auswahl per Maus wird jetzt unterstützt. Die berührungsbasierte Auswahl wird um Wort für Wort erweitert und um Zeichen verkleinert. (IC0c6c, b/180639271)
- Es wurde eine
FocusTargetModifierNode
-Oberfläche hinzugefügt, die zum Erstellen einer benutzerdefiniertenFocusTarget
verwendet werden kann. (I9790e)
Version 1.5
Version 1.5.4
18. Oktober 2023
androidx.compose.foundation:foundation-*:1.5.4
wurde veröffentlicht. Version 1.5.4 enthält diese Commits.
Version 1.5.3
4. Oktober 2023
androidx.compose.foundation:foundation-*:1.5.3
wurde veröffentlicht. An dieser Version wurden keine Änderungen vorgenommen.
Version 1.5.2
27. September 2023
androidx.compose.foundation:foundation-*:1.5.2
wurde veröffentlicht. Version 1.5.2 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler im Text 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
wurde veröffentlicht. Version 1.5.1 enthält diese Commits.
Fehlerkorrekturen
- Textfelder, die die Tastatur anzeigen und bearbeitbar sind, wenn
readOnly
auf „true“ gesetzt ist, wurden korrigiert. Außerdem wurde behoben, dass die Tastatur nicht angezeigt wurde, wennreadOnly
im 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
wurde 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.scrollable
und Layoutmodifikatoren, wurden zurModifier.Node
API migriert, um den Aufwand für die erste Zusammensetzung zu reduzieren. - Die Pagers-Stabilität wurde verbessert. Viele Fehler wurden behoben.
- Die
pageCount
-Parameter befinden sich jetzt inPagerState
statt im Pager selbst
Version 1.5.0-rc01
26. Juli 2023
androidx.compose.foundation:foundation-*:1.5.0-rc01
wurde veröffentlicht. Version 1.5.0-rc01 enthält diese Commits.
Fehlerkorrekturen
Es ist eine optionale Prüfung verfügbar, um zu empfehlen,
mutableStateOf()
-Aufrufe zu den entsprechenden speziellen Typen für Primitive zu migrieren. Die Lint-ID lautetAutoboxingStateCreation
. Bisher war diese Prüfung standardmäßig für alle Projekte aktiviert. Wenn Sie diese Warnung im Android Studio-Editor und in den Lint-Ausgaben Ihres Projekts sehen möchten, ändern Sie den Schweregrad von „Informativ“ zu „Warnung“ (oder höher). Deklarieren Sie dazuwarning "AutoboxingStateCreation"
in derbuild.gradle
- oderbuild.gradle.kts
-Konfiguration Ihres Moduls (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
Version 1.5.0-beta03
28. Juni 2023
androidx.compose.foundation:foundation-*:1.5.0-beta03
wurde 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
wurde 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
wurde veröffentlicht. Version 1.5.0-beta01 enthält diese Commits.
API-Änderungen
- Implementiere
PlatformDataProvider
, um die Herzfrequenz und die täglichen Schritte anzugeben. Die SchnittstelleSensorGateway
wurde aus der öffentlichen API entfernt. (I55b84)
Fehlerkorrekturen
- Zuweisungen bei Lazy List-/Grids-Messungen usw. reduzieren (Iaf9e2)
- Reduzierte Zuweisungen beim Anwenden von Snapshots (I65c09)
- Zuweisungen aus Federanimationen entfernt (Ie9431)
- Zuweisung von
TextLayout
entfernt (I0fd11) - Mehrere Zuweisungen bei der Zeiger-Geschwindigkeitsverfolgung wurden 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
wurden veröffentlicht. Version 1.5.0-alpha04 enthält diese Commits.
API-Änderungen
- Der optimierte
TextStyle.merge(...)
mit vollständiger Parameterliste wurde hinzugefügt. (Iad234, b/246961787) - Stell eine
SnapLayoutInfoProvider
vor, die mitLazyGridState
verwendet werden kann. (I92134, b/269237141, b/260914964) - Die experimentelle Funktion „
Modifier.animateItemPlacement()
“ wurde für den Bereich „Verzögerte gestaffelte Rasterelemente“ hinzugefügt. Sie können ihn auf die Elemente anwenden, um die Animationen für die automatische Positionsänderung oder -neuanordnung zu erreichen. (I4b62d, b/257034719) GridCells.FixedSize
auf stabile Version hochstufen.FixedSize
definiert eineLazyGrid
, bei der jede Zelle die exakte Größe entlang der Querachse hat. Der verbleibende Platz ist dabei durch die Querachsenanordnung verteilt. (I8542f)- Einführung des Empfängerbereichs
PagerScope
für Pager und einer Dienstfunktion für die Berechnung eines bestimmten Seitenversatzes. (If2577) - Stell das
snapPositionalThreshold
-Element vor, wenn du ein Andockverhalten erstellst. Verwenden Sie diesen Parameter, um einen Positionsschwellenwert für das kurze Andocken in Pager anzugeben. (If8f7f) - „
SnapLayoutInfoProvider.calculateSnappingOffsetBounds
“ wurde durch „calculateSnappingOffset
“ ersetzt. Bei dieser neuen Methode fordern wir einfach den nächsten Offset zum Andocken an. Die Berechnung der Grenzen sollte auf Implementierungsebene durchgeführt werden, da diese je nachdem, wie ein Andocken ausgeführt werden muss, variieren kann. (I923a4) LazyStaggeredGrid
APIs wurden auf die stabile Version hochgestuft. (I633a5)pageCount
ausHorizontal/VerticalPager
entfernen. Diese sollte bei der Erstellung des Bundesstaats angegeben werden.PagerState
undrememberPagerState
wurden aktualisiert, um diepageCount
zu akzeptieren. (Ieb52d, b/266965072)pageCount
ausHorizontal/VerticalPager
entfernen. Diese sollte bei der Erstellung des Bundesstaats angegeben werden.PagerState
undrememberPagerState
wurden aktualisiert, um diepageCount
zu akzeptieren. (Ifa3cb, b/266965072)- Stelle
shortSnapVelocityThreshold
in PagersSnapFlingBehavior
vor. (I7379e, b/275579012) - Fügt
FlowRowScope
undFlowColumnScope
hinzu. (I54fe2)
Fehlerkorrekturen
- Aufrufe zum Abrufen der Semantik für Text, wenn
minWidth
undminHeight
nicht mehr abstürzen. (Ibd072) - Ein Problem wurde behoben, bei dem die Tastatur für Textfelder in Dialogfeldern, die nicht mit der zusammensetzbaren Funktion
Dialog
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
wurden veröffentlicht. Version 1.5.0-alpha03 enthält diese Commits.
In dieser Version wird der neue Text-Rendering-Stack für Compose aktiviert. Der neue Stapel ist leistungsoptimiert und Sie sollten keine sichtbaren Änderungen sehen.
Wenn du Änderungen im gerenderten Text feststellst, kannst du zur Fehlerbehebung NewTextRendering1_5 = false
festlegen, um den Verhaltensunterschied zu bestätigen. Mit dieser Einstellung wird eine Neuzusammensetzung erzwungen. Bitte melden Sie alle Verhaltensunterschiede als Fehler.
Das Debug-Flag wird vor der Betaversion 1.5 entfernt.(Iada23, b/246960758)
API-Änderungen
FlowColumn/FlowRow
inline erstellen. (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
wurden veröffentlicht. Version 1.5.0-alpha02 enthält diese Commits.
API-Änderungen
- Zusätzliche Unterstützung für Zellen mit fester Größe in
LazyGrid
und die Anordnung der Zellen in Querachsen-Anordnung. (I83ed9, b/235121277, b/267942510) - In
LazyStaggeredGrid
werden jetzt Fahrspuren mit fester Größe und die Anordnung von Fahrspuren in Querachsen unterstützt. (I7d519) UrlAnnotation
-Werte inAnnotatedString
Sek. können jetzt über Bedienungshilfen wieTalkBack
geöffnet werden. (If4d82, b/253292081)- Die Semantikaktion
InsertTextAtCursor
fü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 den Abstand/die Anordnung von Querachsen mithilfe von
verticalArrangement
inFlowRow
undhorizontalArrangement
inFlowColumn
. Außerdem entfernen wir dieverticalAlignment
und diehorizontalAlignment
auf oberster Ebene inFlowRow/FlowColumn
. Entwickler können stattdessenModifier.align
verwenden. Dadurch wird Verwechslungen zwischen den NamenskonventionenverticalAlignment
undverticalArrangement
vermieden. (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
wurden veröffentlicht. Version 1.5.0-alpha01 enthält diese Commits.
API-Änderungen
- Text und
BasicText
wurden refaktoriert, um das neue Modifikatorsystem zu verwenden. Das führt in vielen Fällen zu erheblichen Leistungsverbesserungen. Es sollten keine Änderungen sichtbar sein. (If1d17, b/246961435) - Die Semantikaktion
PerformImeAction
zum Aufrufen der IME-Aktion auf Texteditorknoten wurde hinzugefügt. (Ic606f, b/269633506)
Fehlerkorrekturen
- Interna von
Modifier.hoverable
wurden aktualisiert. Derhoverable
-Modifikator wird nur dann 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 ein Versionssprung).
Version 1.4.2
19. April 2023
androidx.compose.foundation:foundation:1.4.2
und androidx.compose.foundation:foundation-layout:1.4.2
wurden 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
wurden 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
wurden veröffentlicht. Version 1.4.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.3.0
- Emoji-kompatible Integration wurde für
Text
undTextField
sowie für den unteren Absatz (Absatz) hinzugefügt. Wenn „EmojiCompat“ konfiguriert ist, ist es standardmäßig aktiviert. EmojiCompat
kann mithilfe vonPlatformParagraphStyle
für einen bestimmten Text konfiguriert werden.LazyStaggeredGrid
(I28252) wurde vollständig unterstützt.- Experimentelle
onHover
wird zuClickableText
hinzugefügt (I6938f) - Einführung neuer experimenteller Überlastungen für die
runComposeUiTest
- undcreate*ComposeRule
-Funktionen, dieCoroutineContext
-Parameter akzeptieren. Der Kontext wird für die Testzusammensetzung und alleLaunchedEffect
- undrememberCoroutineScope()
-Aufrufe in der Zusammensetzung verwendet. (I10614, b/265177763) FlowRow
undFlowColumn
sind jetzt als@ExperimentalFoundationApi
verfügbar. Sie ermöglichen ein flexibleres zeilen- und spaltenbasiertes Layout von Komponenten, die zu einer neuen Zeile führen, wenn nicht genügend Platz auf der Hauptachse vorhanden ist. (I3a7b2)Modifier.basicMarquee()
ist als experimentelle Funktion für die Anzeige von Inhalten mit einem Laufschriftbild-Effekt verfügbar. (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
wurden veröffentlicht. Version 1.4.0-rc01 enthält diese Commits.
API-Änderungen
- Einführung einer neuen Low-Level-
PlatformTextInputAdapter
-API zum Erstellen benutzerdefinierter Texteingabeimplementierungen, die direkt mit Plattform-APIs kommunizieren. (I58df4) LazyStaggeredGrid
wird jetzt für das umgekehrte Layout unterstützt. (I3ef4a)
Fehlerkorrekturen
- Mit der Semantikaktion
SetText
vonBasicTextField
wird der Textpuffer jetzt mit demselben Codepfad wie IME-Updates und die Testfunktionen (z.B.performTextReplacement
) aktualisiert. - Für Texttestfunktionen
performTextClearance
,performTextReplacement
undperformTextSelection
wird jetztSemanticsActions
verwendet. (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
wurden 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 du einen lokalen Status zurücksetzen kannst, damit der Fall bei der Wiederverwendung vonLayout
korrekt verarbeitet wird (z. B. als Element vonLazyColumn
). Das ProblemFocusTargetModifierNode
wurde behoben, damit der fokussierte Zustand korrekt zurückgesetzt wird. (I65495, b/265201972) - Der
BlendMode
-Parameter wurde den MethodenDrawScope.drawText
,Paragraph.paint
undMultiParagraph.paint
hinzugefügt, um beim Zeichnen von Text auf Canvas verschiedene Mischalgorithmen zu unterstützen. (I57508) - Die
modifierElementOf()
API wurde entfernt. Bitte verlängern Sie es stattdessen direkt vonModifierNodeElement
. (Ie6d21)
Fehlerkorrekturen
- Durch das Anpassen von Auswahlziehpunkten kann kein Teilzeichen mehr ausgewählt werden. (Idedd1)
- Absturzfehler bei Strg + Rücktaste bei leerem
TextField
(I0427f, b/244185537) behoben
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
wurden veröffentlicht. Version 1.4.0-beta01 enthält diese Commits.
Neue Funktionen
- Seit Version 1.3 wurde die Emoji-kompatible Integration für
Text
undTextField
sowie für den unteren Abschnitt des Absatzes hinzugefügt. Wenn „EmojiCompat“ konfiguriert ist, ist es standardmäßig aktiviert. EmojiCompat
kann mithilfe vonPlatformParagraphStyle
für einen bestimmten Text konfiguriert werden.
API-Änderungen
- Es wurde eine allgemeine Implementierung der
PinnableContainer
API hinzugefügt, die in allenLazyLayouts
verwendet wird, um Elemente aufzubewahren, die die Zusammensetzung beenden, aber noch aktiv sein müssen. (If45a4) PinnableContainer.PinnedHandle.unpin()
wurde inrelease()
(I4667a) umbenannt
Externer Beitrag
mainAxisItemSpacing
-Property zuLazyListLayoutInfo
,LazyGridLayoutInfo
undLazyStaggeredGridItemInfo
(I52fad) hinzugefügt
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
wurden veröffentlicht. Version 1.4.0-alpha05 enthält diese Commits.
Neue Funktionen
LazyStaggeredGrid
(I28252) wurde vollständig unterstützt.- Experimentelle
onHover
wird zuClickableText
hinzugefügt (I6938f) - Einführung neuer experimenteller Überlastungen für die
runComposeUiTest
- undcreate*ComposeRule
-Funktionen, dieCoroutineContext
-Parameter akzeptieren. Der Kontext wird für die Testzusammensetzung und alleLaunchedEffect
- undrememberCoroutineScope()
-Aufrufe in der Zusammensetzung verwendet. (I10614, b/265177763)
API-Änderungen
- Führt die Pre-/Post-APIs von
OverscrollEffect
in kombiniertenapplyToScroll
- undapplyToFling
-Funktionen für Decorators zusammen. In den aktualisierten Beispielen in der Dokumentation finden Sie Beispiele zur Implementierung eines Overscroll-Effekts mit der neuen API-Form. (I8a9c4, b/255554340) - Mehr Typen/Null-Zulässigkeit von Inline-/eingestellten/verborgenen Funktionen (I24f91)
- Die APIs
LineBreak
undHyphens
inTextStyle
wurden auf die stabile Version umgestellt. (IC1e1d)
Fehlerkorrekturen
- Der Cursor in Textfeldern blinkt jetzt auch dann weiter, wenn Animationen deaktiviert sind. (I95e70, b/265177763)
Modifier.basicMarquee
wird jetzt auch dann animiert, wenn sie in den Systemeinstellungen deaktiviert sind. (I23389, b/262298306, b/265177763)
Externer Beitrag
notifyFocusedRect
-Methoden inTextInputSession
undTextInputService
werden nicht mehr verworfen. (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
wurden veröffentlicht. Version 1.4.0-alpha04 enthält diese Commits.
Neue Funktionen
FlowRow
undFlowColumn
sind jetzt als@ExperimentalFoundationApi
verfügbar. Sie ermöglichen ein flexibleres zeilen- und spaltenbasiertes Layout von Komponenten, die zu einer neuen Zeile führen, wenn nicht genügend Platz auf der Hauptachse vorhanden ist. (I3a7b2)Modifier.basicMarquee()
ist als experimentelle Funktion für die Anzeige von Inhalten mit einem Laufschriftbild-Effekt verfügbar. (I2df44, b/139321650)
API-Änderungen
FocusRequesterModifier
wird zugunsten vonFocusRequesterNode
eingestellt (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/2545299340184{/185- Der
AndroidFont
-Konstruktor mitvariationSettings
ist jetzt eine stabile API und kann zum Erstellen neuer Arten von Schriftdeskriptoren verwendet werden. (I5adcc, b/261565807) - Es wurde die
PinnableContainer
API eingeführt, die von Lazy Listen über eine lokale Komposition übertragen wird, mit der aktuelles Element angepinnt werden kann. Das bedeutet, dass das Element nicht entsorgt wird, wenn es aus der Ansicht weggescrollt wird. Beispielsweise wird mitModifier.focusable()
das aktuell fokussierte Element mit diesem Mechanismus angepinnt. (Ib8881, b/259274257, b/195049010) - Die Reaktion von Scrollables auf
bringIntoViewRequesters
und fokussierbare Elemente wurde umgeschrieben, um die Komplexität dieser Vorgänge besser zu modellieren und mehr Grenzfälle zu bewältigen. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114) - Höhere Null-Zulässigkeit für Rückgaben von nicht mehr unterstützten Funktionen (Ibf7b0)
- Die experimentelle Funktion
TextMotion
wurde zuTextStyle
hinzugefügt, um für Text entwederStatic(default)
oder Animiert zu definieren. Verwenden SieTextMotion.Animated
, wenn der Text durch Animation skaliert, übersetzt oder gedreht werden soll. (I24dd7) TextFieldFocusModifier
hinzufügen, um das Verhalten der Fokusnavigation für die Android-Plattform zu korrigieren (I00303)- Das Argument
maxSize: IntSize
indrawText
wurde durchsize: Size
ersetzt, um es in andereDrawScope
-Funktionen einzufügen.size
ist standardmäßig aufSize.Unspecified
gesetzt. Das sollte das vorherige Standardverhalten nicht ändern. (Icd27d)
Fehlerkorrekturen
- Für ein natürlicheres Gefühl wurden in
SnapFlingBehaviour
Anpassungen an der Physik des Schnappschusses vorgenommen.
Bekanntes Problem
- Beim Aktualisieren von
androidx.compose.foundation:1.4.0-alpha03
aufandroidx.compose.foundation:1.4.0-alpha04
kann einjava.lang.NoSuchFieldError
-Fehler auftreten. Das Problem wurde an dieser Stelle gemeldet. Eine Korrektur wurde gesendet, die mit dem nächsten Update für das Schreiben von Änderungen verfügbar ist. Um das Problem zu umgehen, aktualisieren Sie Ihreandroidx.compose.material
- undandroidx.compose.material3
-Bibliotheken auf die neueste Version(1.1.0-alpha04) oder führen Sie ein Downgrade vonandroidx.compose.foundation
auf 1.4.0-alpha03 durch.
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
wurden veröffentlicht. Version 1.4.0-alpha03 enthält diese Commits.
API-Änderungen
- Bei UI-Tests mit einer Schreibregel werden Fortsetzungen, die während
withFrameNanos
-Callbacks fortgesetzt werden, erst abgesendet, nachdem alle Frame-Callbacks ausgeführt wurden. Dies entspricht dem Verhalten des Editors bei normaler Ausführung. Tests, die auf dem alten Verhalten basieren, können jedoch fehlschlagen. Dies sollte nur Code betreffen, derwithFrameNanos
oderwithFrameMillis
direkt aufruft und bei dem die Logik außerhalb des Callbacks an die Funktionen übergeben wird, die möglicherweise innerhalb der Callbacks verschoben werden müssen. Beispiele finden Sie in den Änderungen an den Animationstests in dieser Änderungsliste. - Ein optionaler
onPerformTraversals: (Long) -> Unit
-Parameter wurde demTestMonotonicFrameClock
-Konstruktor und der Factory-Funktion hinzugefügt, um Code nachwithFrameNanos
-Callbacks auszuführen, aber bevor die Koroutinen der Aufrufer fortgesetzt werden. (Idb413, b/254115946, b/222093277, b/255802670) - Stell die Bedienungshilfen für Seiten vor:
PageUp
,PageDown
,PageLeft
,PageRight
. Beachten Sie, dass diese erst ab API 29 verfügbar sind. (Ida4ab) - Stell
HorizontalPager
undVerticalPager
vor, eine Möglichkeit, zusammensetzbare Funktionen auf Pager-Formulierungen darzustellen.PagerState
wurde eingeführt, um die Pager zu steuern und Informationen zum aktuellen Status des Pagers abzufragen.PageSize
wurde eingeführt, eine Methode zur Steuerung der Größe einer Pager-Seite. Damit kann ein Karussell wie Pager erstellt werden. Einführung vonPagerSnapDistance
, eine Möglichkeit, um zu steuern, wie das Andocken auf das Sprungverhalten von Pager funktioniert. (I01120) - Eine Überlastung wurde in
SnapFlingBehavior.performFling
eingeführt, um besser zu verstehen, wo sich der Flieger niederlassen wird. (I569f6) OverscrollEffect#isEnabled
wurde entfernt. Anstatt sich dieses Flag merken und festlegen zu müssen, lösen Sie einfach keine Ereignisse für den Overscroll-Effekt aus, wenn Sie nicht möchten, dass Overscroll angezeigt wird (z. B. wennScrollableState#canScrollForward/backward
beide den Wert „false“ zurückgeben). (I1a4b0, b/255554340, b/255557085)ScrollableState#canScrollForward
undScrollableState#canScrollBackward
wurden hinzugefügt, um abzufragen, ob eineScrollableState
in beide Richtungen scrollen kann (ob die Mindest- oder Höchstgrenze des Bereichs erreicht ist). Der Standardwert ist „true“, um die Abwärtskompatibilität mit vorhandenen Implementierungen vonScrollableState
zu gewährleisten. Damit können Nutzer darauf hinweisen, dass noch Platz zum Scrollen ist. Außerdem könnte so vermieden werden, dass Deltas zuScrollableStates
gesendet werden, die keinen Platz zum Scrollen in eine bestimmte Richtung haben, um unnötigen Aufwand zu reduzieren. (Idf1a0, b/255557085)- Eine Modifier API wurde hinzugefügt, um die Scroll-Informationen von Ancestors abzufragen. (I2ba9d, b/203141462)
- Wird in
Clickable
verwendet, um Interaktionen beim Drücken korrekt zu verzögern, wenn Gesten zu Scroll-Ereignissen werden können. - Das Problem, dass
Clickables
bei Verwendung innerhalb vonScrollable ViewGroup
die Ripples nicht korrekt verzögerte, wurde behoben. - Leisten und Tabellen wurden aktualisiert, um das Drücken korrekt zu verzögern, falls Gesten zu Scroll-Ereignissen werden können.
- Aktualisieren Sie die
snapStepSize
-Benennung, damit sie mit anderen Methoden inSnapLayoutInfoProvider
konsistent ist. (Ife67c) EmojiCompat
zuCompose
hinzugefügt (Ibf6f9, b/139326806)consumedWindowInsets()
wurde inconsumeWindowInsets()
undwithConsumedWindowInsets()
inonConsumedWindowInsetsChanged()
umbenannt und die Modifikatoren wurden veröffentlicht. (Ie44e1)
Fehlerkorrekturen
- Der Absturz mit
Modifier.animateItemPlacement()
und Lazy-Rastern wurde behoben. Dieser Fehler ist aufgetreten, 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
wurden veröffentlicht. Version 1.4.0-alpha02 enthält diese Commits.
API-Änderungen
awaitFirstDown
undwaitForUpOrCancellation
akzeptieren jetztPointerEventPass
für mehr Flexibilität. (I7579a, b/212091796)beyondBoundCount
API von Lazy* APIs wiederherstellen (I12197)- Einführung von Parametern in Lazy APIs, um Elemente außerhalb des Darstellungsbereichs zu erstellen und zu platzieren (I69e89, b/172029355)
- Der Parameter
minLines
wurde zuBasicText
undBasicTextField
hinzugefügt. Damit kann die Mindesthöhe dieser zusammensetzbaren Funktionen 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
wurden veröffentlicht. Version 1.4.0-alpha01 enthält diese Commits.
API-Änderungen
- Die neue Methode
awaitEachGesture()
für Bewegungsdetektoren wurde hinzugefügt. Sie funktioniert ähnlich wieforEachGesture()
, aber die Loop-over-Gesten erfolgen vollständig innerhalb vonAwaitPointerEventScope
, sodass Ereignisse zwischen Iterationen nicht verloren gehen können. forEachGesture()
wurde zugunsten vonawaitEachGesture()
eingestellt, weil dadurch Ereignisse zwischen Gesten verloren gehen können. (Iffc3f, b/251260206)WindowInsets.imeAnimationSourc
e undWindowInsets.imeAnimationTarget
wurden hinzugefügt, um den Fortschritt der Animation zu bestimmen und zu wissen, wo sich der 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
wurden veröffentlicht. Version 1.3.1 enthält diese Commits.
Fehlerkorrekturen
- Leistungsprobleme in
BeyondBoundsLayout
beheben (aosp/2255266) ContentInViewModifier
liest Layoutkoordinaten nur, wenn sie angehängt werden (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
wurden veröffentlicht. Version 1.3.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.2.0
- Es wurden experimentelle Versionen von
LazyVerticalStaggeredGrid
undLazyHorizontalStaggeredGrid
eingeführt. SnapFlingBehavior
,rememberSnapFlingBehavior
und andere entsprechende APIs wurden als experimentell hinzugefügt.- In
Modifier.clickable
,Modifier.toggleable
undModifier.selectable
werden jetzt Wellen angezeigt, wenn du mit der Tastatur oder dem Steuerkreuz auf einer Fernbedienung klickst.
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
wurden veröffentlicht. Version 1.3.0-rc01 enthält diese Commits.
API-Änderungen
- Einführung von
lowVelocityAnimationSpec
, das im Annäherungsschritt verwendet wird, wenn die Fluggeschwindigkeit nicht ausreichend ist, um abzuschwächen. (Iaeb27) - Neue experimentelle API-Bindestriche zur Unterstützung der automatischen Bindestrichsetzung in Text hinzugefügt (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
wurden veröffentlicht. Version 1.3.0-beta03 enthält diese Commits.
API-Änderungen
- Optionen zum Anpassen des Zeilenumbruchs im Text hinzufügen. (I86907)
BringIntoViewResponder
können jetzt bei der Verarbeitung die aktuellen Grenzen einer Anfrage abrufen. (If86a5, b/241591211)- Unterstützung für Abstände zwischen Elementen im experimentellen
Staggered Grid
(I10b82) - Einführung des Abstands nach Inhalten in die experimentelle
Staggered Grid
(I342ea) - Das Argument
size:IntSize
wurde in der MethodeTextMeasurer.measure
mitconstraints: Constraints
geändert, um Einschränkungen für die minimale Breite zu unterstützen. (I37530, b/242707525) Modifier.withConsumedWindowInsets()
wurde hinzugefügt, umWindowInsets
zur Verwendung außerhalb vonwindowInsetsPadding
zu nutzen.MutableWindowInsets
wurde hinzugefügt, um das Ändern vonWindowInsets
ohne Neuzusammensetzung zu ermöglichen. (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
wurden veröffentlicht. Version 1.3.0-beta02 enthält diese Commits.
API-Änderungen
- Erste Version der experimentellen Version von
StaggeredGrid
(Ia48be) FocusDirection.In
undFocusDirection.Out
wurden inFocusDirection.Enter
undFocusDirection.Exit
umbenannt (Ia4262, b/183746982)- Eine
rememberSnapFlingBehavior
-Überlastung wurde eingeführt, mit der das Andocken inLazyLists
schnell aktiviert werden kann. (Ifb48a) - Die
snapFlingBehavior
-Factory wurde durch eine konkreteSnapFlingBehavior
-Klasse ersetzt.SnapLayoutInfoProvider
-Methoden wurden auf Dichte übertragen, um die Dp-<->-Px-Konvertierungen für die API-Nutzer zu vereinfachen. (I54a11) - Aktualisieren Sie
LazyLayoutMeasureScope.measure
, um eine Liste der platzierbaren Elemente zurückzugeben. Heben Sie dabei die gewünschte Unveränderlichkeit des zurückgegebenen Werts hervor. (I48b7c) - Einführung von
SnapLayoutInfoProvider
. Damit wird eineLazyListState
-Instanz vonSnapLayoutInfoProvider
erstellt, mit der ein SnapFlingBehavior
fürLazyLists
aktiviert werden kann. (I2dd10)
Fehlerkorrekturen
- Refaktoriert
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
wurden veröffentlicht. Version 1.3.0-beta01 enthält diese Commits.
API-Änderungen
pointerPosition
wurde ausOverscrollEffect
entfernt: Effekte, für die die Zeigerposition wichtig ist, können stattdessenModifier.pointerInput { }
in dereffectModifier
verwenden, um die aktuelle Zeigerposition abzurufen. (I9f606, b/241239306)AwaitPointerEventScope#awaitLongPressOrCancellation
als zusätzlicher Baustein für eine komplexere Bewegungserkennung sichtbar (I04374, b/181577176)lazyListSnapLayoutInfoProvider
wurde eingeführt, um das Andocken in Lazy-Listen zu ermöglichen. (I3ecdf)- Einführung von
SnapFlingBehavior
, einem Fling-Verhalten, das das Andocken von Listen ermöglicht. Geben Sie eine Instanz vonSnapLayoutInfoProvider
mit Informationen zum 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
wurden veröffentlicht. Version 1.3.0-alpha03 enthält diese Commits.
API-Änderungen
- Ressourcenschriftarten unterstützen jetzt das Festlegen von Einstellungen für Schriftvariationen (API 26 und höher). (I900dd, b/143703328)
- Unterstützung für variable Schriftarten in
DeviceFontFamilyNameFont
(Ic1279, b/143703328) - Die experimentelle Annotation wurde aus
PlatformTextStyle
undLineHeightStyle
entfernt. (I64bef) - Textfelder geben jetzt detailliertere Ausnahmen aus, wenn die von
VisualTransformation
bereitgestellteOffsetMapping
ungültige Indexe zurückgibt. (Ie73f9, b/229378536) - Führen Sie experimentelle APIs ein, um die Logik des Artikelanbieters für Lazy-Layouts zu teilen. (IC891c)
ScrollableDefaults.reverseDirection()
ist nicht mehr experimentell. (Iba646)SemanticsModifier.id
wurde eingestellt und die Semantik-ID wurde nachLayoutInfo.semanticsId
verschoben. (Iac808, b/203559524)checkScrollableContainerConstraints()
ist nicht mehr experimentell. (I2c290)Modifier.clipScrollableContainer()
ist nicht mehr experimentell. (Ia2b44)TextInputService.show|hideSoftwareKeyboard
einstellen. Verwende im App-Code stattdessenSoftwareKeyboardController
und im IME-VerwaltungscodeTextInputSession
. (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
wurden veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.
API-Änderungen
- Die Erweiterungsfunktion
drawText
wurde fürDrawScope
hinzugefügt, um eine Möglichkeit zu bieten, Text mit mehreren Stilen für zusammensetzbare Funktionen und Modifikatoren zu zeichnen, die auf einemDrawScope
wieCanvas
unddrawBehind
ausgeführt werden. (I16a62, b/190787898)
Fehlerkorrekturen
- „Softtastatur“ wird jetzt ausgeblendet, wenn ein Textfeld im Fokus deaktiviert ist. (I6e3e4, b/237308379)
- Beim Hinzufügen von
InputEventChange
-Ereignissen in Velocity Tracker werden jetzt Deltas anstelle von Positionen berücksichtigt. Dadurch wird garantiert, dass die Geschwindigkeit für alle Fälle korrekt berechnet wird, selbst wenn sich das Zielelement bewegt (Icea9d, b/216582726, b/223440806, b/227709803). - Wenn ein Scrollable über ein untergeordnetes Element im Fokus verfügt, wird es nun korrekt gescrollt, damit das fokussierte untergeordnete Element beim Verringern der Größe sichtbar bleibt, auch wenn die Größe animiert ist. (I80867, b/230756508, b/220119990)
- Ein Absturz wurde behoben, bei dem
TextField
gelöscht und neu ausgefü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
wurden veröffentlicht. Version 1.3.0-alpha01 enthält diese Commits.
API-Änderungen
- Einführung des Annotationstyps
UrlAnnotation
und der zugehörigen Methoden zur Unterstützung vonTalkBack
-Links inAnnotatedString
s. (I1c754, b/231495122)
Fehlerkorrekturen
BasicTextField
cursorBrush
kann jetzt ohne Neustart des Cursor-Timers animiert werden. (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
wurden 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
wurden veröffentlicht. Version 1.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.1.0
LazyVerticalGrid
undLazyHorizontalGrid
sind jetzt stabil.- Sie können jetzt einen Inhaltstyp für Elemente in Lazy-Listen und -Rastern angeben. So können die Komponenten Elemente effizienter wiederverwenden.
- Verzögerte Listen und Raster haben jetzt den Parameter
userScrollEnabled
, mit dem das Scrollen über Nutzergesten deaktiviert werden kann. - Eine neue experimentelle API mit dem Namen
LazyLayout
wurde hinzugefügt. Es ist die API, die wir intern für Lazy Listen und Raster verwenden. - Die
OverscrollEffect
API wurde als experimentell eingeführt. Sie können benutzerdefinierte Overscroll-Effekte definieren und benutzerdefinierten scrollbaren Containern eine Standardplattform-1 hinzufügen. - Verschachtelte Interoperabilitäts-APIs für das Scrollen wurden eingeführt, um die Interoperabilität zwischen Ansichten und Scrolling-Akteuren zu ermöglichen.
- Das Scrollen mit Maus und Touchpad wurde allen scrollbaren Containern hinzugefügt.
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
wurden veröffentlicht. Version 1.2.0-rc03 enthält diese Commits.
- Keine Änderungen seit 1.2.0 bis 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
wurden 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
wurden veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.
API-Änderungen
- Es wurde eine experimentelle
OverscrollEffect
eingeführt, um neben denModifier.scrollable
-Überladungen, die diese Overscroll-Effekte akzeptieren, benutzerdefinierte Overscroll-Effekte zu ermöglichen. - Die experimentelle
LocalOverScrollConfiguration
wurde vonfoundation.gesture
in das Foundation Package verschoben und inLocalOverscrollConfiguration
umbenannt (If19fb, b/204650733) - Schnittstellen in Erstellungsbibliotheken werden jetzt mit jdk8-Standardschnittstellenmethoden erstellt (I5bcf1).
- Es wurde eine experimentelle API
checkScrollableContainerConstraints()
eingeführt, mit der geprüft werden kann, ob scrollbare Container verschachtelt werden. Sie können sie verwenden, wenn Sie überLazyLayout
eigene scrollbare Lazy-Layouts erstellen. (Id6fab, b/233352497) - Das verworfene
LazyVerticalGrid
-Objekt wurde aus demandroidx.compose.foundation.lazy
-Paket entfernt. Die neue stabile API befindet sich inandroidx.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
wurden veröffentlicht. Version 1.2.0-beta03 enthält diese Commits.
API-Änderungen
- Neue experimentelle
IntervalList
undMutableIntervalList
hinzugefügt. Damit können einige Werte in mehreren Intervallen dargestellt werden. Das ist nützlich, wenn Sie eine eigene DSL ähnlich der vonLazyColumn
verwenden möchten, bei der Listenelemente über mehrere Element-/Elementaufrufe definiert werden können. (I2d05e, b/228580728)
Fehlerkorrekturen
- In der Dokumentation zu
WindowInsets.ime
wurde klargestellt, dassime
-Einsätze ab API 23 gemeldet werden, aber ab API 30 nur animiert sind. (Ia7fc0, b/230756508) - Wenn Sie die Vorwärts-Löschtaste drücken, wenn sich der Cursor am Ende eines Textfelds befindet, stürzt dies nicht mehr ab.
- Für
DeleteSurroundingTextCommand
undDeleteSurroundingTextInCodePointsCommand
müssen ihre 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
wurden veröffentlicht. Version 1.2.0-beta02 enthält diese Commits.
- Eine herunterladbare Schriftauflösung, bei der die Layoutgröße von Text oder
TextField
nicht geändert wurde, konnte nicht neu gezeichnet werden, was zu einer veralteten Schriftart führt. Durch diese Fehlerkorrektur wird sichergestellt, dass das Textlayout immer das Neuzeichnen 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
wurden veröffentlicht. Version 1.2.0-beta01 enthält diese Commits.
Neue Funktionen
- Dies ist die erste Betaversion von Version 1.2.
API-Änderungen
- Es wurde eine experimentelle
BeyondBoundsInterval
hinzugefügt, die von benutzerdefinierten Implementierungen vonLazyList
verwendet werden kann, wenn Elemente über die sichtbaren Grenzen hinaus angeordnet werden (Ifabfb, b/184670295). LineHeightBehavior
wird inLineHeightStyle
umbenannt.LineVerticalAlignment
wird inLineHeightStyle.Alignment
umbenannt.- „
LineHeightTrim
“ wird umbenannt in „LineHeightStyle.Trim
“ - Standardkonstruktorwerte aus
LineHeightStyle
werden entfernt (I582bf, b/181155707). - Es wurden Standardwerte für die optionalen Mitglieder der
LazyLayoutItemProvider
-Oberfläche hinzugefügt. (Iba8a0) - In der
LazyLayoutItemProvider
API gibt es jetzt eine einfachere zusammensetzbare Funktion, die den Index akzeptiert, statt in einer Factory, die die zusammensetzbare Lambda nach Index zurückgibt. (ID2196) - LazyLayoutItemsProvider wurde in LazyLayoutItemProvider (I0638c) umbenannt
LazyLayoutItemsProvider.itemsCount
wird initemCount
umbenannt (Id409c).- Pinsel wurde zu
TextStyle
undSpanStyle
hinzugefügt, um Text mit Farbverlauf zu zeichnen. (I53869, b/187839528) trimFirstLineTop
wurden dietrimLastLineBottom
-Attribute vonLineHeightBehavior
zu einer einzigen Aufzählung geändert:LineHeightTrim
.LineHeightTrim
haben Werte aus vier Zuständen, die durch zwei boolesche Werte definiert werden:FirstLineTop
,LastLineBottom
, Beide und keiner (Ifc6a5, b/181155707)LineHeightBehavior
wurde zuTextStyle
hinzugefügt undParagraphStyle. LineHeightBehavior
steuert, ob die Zeilenhöhe am oberen und unteren Rand der letzten Zeile angewendet wird. Außerdem definiert er die Ausrichtung der Linie in dem durchTextStyle
(lineHeight
) vorgegebenen Feld.Es ist beispielsweise möglich, ein Verhalten zu erhalten, das dem über
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
definierten Verhalten ähnelt.Konfigurationen mit
trimFirstLineTop
undtrimLastLineBottom
funktionieren nur dann ordnungsgemäß, wennincludeFontPadding
„false“ ist. (I97332, b/181155707)Es wurde ein experimenteller
imeNestedScroll()
-Modifikator hinzugefügt, damit Entwickler den IME durch Scrollen steuern können. (I60759)
Fehlerkorrekturen
- Problem bei der Regression behoben, bei dem Textfelder die Tastatur nicht ausblenden, wenn sie im Fokus aus der Komposition entfernt wurden. (I7a410, b/230536793, b/225541817)
- Auslassungspunkte werden unterstützt, wenn die Höhe begrenzt ist und nicht für alle Textzeilen geeignet ist (Ie528c, b/168720622).
BringIntoViewRequester.bringIntoView
wird jetzt immer angehalten, bis die Anfrage abgeschlossen ist oder von einer neueren, sich nicht überschneidenden Anfrage unterbrochen wurde. Sich überschneidende Anfragen werden in die Warteschlange gestellt. (I43e7f, b/216790855)- Gleichzeitige
BringIntoViewRequester.bringIntoView
-Aufrufe für vollständig überlappende Rechtecke berücksichtigen jetzt nur die Anfrage des größeren Rechtecks. (I34be7, b/216790855, b/184760918) includeFontPadding
ist standardmäßig aktiviert. Es ist möglich, dieincludeFontPadding
mit dem AttributTextStyle.platformTextStyle
zu deaktivieren. In naher Zukunft werden wir das Standardverhalten ändern. Bis dahin können wir jedoch Verbesserungen an der Zeilenhöhe (aosp/2058653) besser integrieren undTextField
-Clipping-Probleme beheben. (I01423, b/171394808)Modifier.bringIntoViewRequester
verwendetonGloballyPositioned
nicht mehr. (I630f5)
Externer Beitrag
MouseInjectionScope.scroll(delta = someDelta)
wird jetzt unter Android umgekehrt, 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
wurden veröffentlicht. Version 1.2.0-alpha08 enthält diese Commits.
API-Änderungen
- Alle verfügbaren Schriftstärken für Systemschriftarten unter Android anzeigen, wenn
FontFamily.SansSerif
verwendet wird. In API 21 bis 28 werden dann intern Fallback-Schriftnamen wie „serif-medium“ verwendet. Dies ist eine Verhaltensänderung, da bisher nur die Gewichtungen 400 und 700 von API 21 bis 28 unterstützt wurden. (I380fe, b/156048036, b/226441992) - Absatz und MultiParagraph akzeptieren jetzt Einschränkungen-Parameter. Wenn
Constraints.maxHeight
übergeben wird, ist dies derzeit nicht möglich, ermöglicht aber zukünftige Berechnungen, z. B. Ellipsen, die auf der Höhe basieren. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()
akzeptiert jetzt eine benutzerdefinierte MutableSet-ähnliche Klasse, mit der keine neuen Elemente hinzugefügt werden können. (ICD314)- Der Teilverbrauch (nach unten ODER in der Position) wurde in
PointerInputChange
eingestellt. Sie könnenconsume()
verwenden, um die Änderung vollständig zu übernehmen. MitisConsumed
können Sie feststellen, ob die Änderung bereits von einer anderen Person übernommen wurde. PointerInputChange::copy()
erstellt jetzt immer eine oberflächliche Kopie. Das bedeutet, dass Kopien von „PointerInputChange
“ genutzt werden, sobald eines der Exemplare genutzt wurde. Wenn Sie eine ungebundenePointerInputChange
erstellen möchten, verwenden Sie stattdessen den Konstruktor. (Ie6be4, b/225669674)- Es wurde eine neue experimentelle
LazyLayout
API eingeführt. So können Sie Ihre eigenen Komponenten wieLazyColumn
vonLazyVerticalGrid
erstellen. Die API befindet sich noch in der Anfangsphase und kann in zukünftigen Versionen geändert werden. (Iba2bc, b/166591700) AndroidFont
verwendet jetzttypefaceLoader
als Konstruktorparameter. (I2c971)- „
WindowInsets
“-Companion zeigt jetzt die Sichtbarkeit (ob sie auf dem Bildschirm erscheinen, unabhängig davon, ob sie sich mit dem Fenster kreuzen) und deren Größe an, 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
wurden 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 verhindert werden können, dass die aktuell erstellten Elemente entsorgt werden (Ibbdd0, b/184670295). LazyListLayoutInfo
undLazyGridLayoutInfo
haben jetzt die FelderbeforeContentPadding
undafterContentPadding
(I3b628, b/200920410)KeyboardType.Decimal
wurde als Alternative zuKeyboard.Number
hinzugefügt, um speziell ein Dezimaltrennzeichen in IME zu verwenden. (Iec4c8, b/209835363)- Der neue Schriftartdeskriptor Font(DeviceFontFamilyName) wurde hinzugefügt, um optional vom System installierte Schriftarten während der Schriftart-Fallback-Ketten zu suchen. (I30468, b/219754572)
PointerEventType.Scroll
undPointerEvent.scrollDelta
sind jetzt stabile APIs (I574c5, b/225669674).- Die hinzugefügte temporäre Kompatibilitätskonfiguration für
includeFontPadding
inTextStyle/ParagraphStyle. includeFontPadding
kann überTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
geändert werden. Dies ist eine temporäre Konfigurationsoption, mit der die Migration aktiviert wird. Sie wird entfernt. (If47be, b/171394808) FontFamily.Resolver
wurde aktualisiert, um die systemweite Bedienungshilfe für fett formatierten Text zu integrieren (I6c1e7)- Mit der Erweiterungseigenschaft
consumeWindowInsets
vonComposeView
können Entwickler die Nutzung von Android-WindowInsets deaktivieren. Dadurch können separateComposeViews
in der Hierarchie jeweilsWindowInsets
anwenden, 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
wurden veröffentlicht. Version 1.2.0-alpha06 enthält diese Commits.
API-Änderungen
- Semantikaktion
RequestFocus
wurde hinzugefügt, um den Fokus auf das fokussierbare Ziel anzufordern. (I17b71) FocusOrder
wurde mitFocusProperties
zusammengeführt undfocusProperties()
verfügt jetzt über alle Funktionen vonfocusOrder()
.FocusOrder
undfocusOrder()
wurden verworfen.focusOrder()
, derfocusRequester
akzeptiert, sollte durch einenfocusRequester()
-Modifikator in Kombination mitfocusProperties()
ersetzt werden. Dadurch können die Modifikatoren stärker getrennt werden. (I601b7)WindowInsets.asPaddingValues(Density)
wurde hinzugefügt, damit Entwickler die Conversion auch ohne Zusammenstellung ausführen können. (I94c35)- Das Parsen von Vektor-Drawables wurde aktualisiert, um die automatische Spiegelung zu unterstützen und den Inhalt einer
VectorPainter
umzudrehen, wenn die aktuelle Layoutrichtung RTL ist. (I79cd9, b/185760237)
Fehlerkorrekturen
- Mit den Scroll-Modifikatoren (
Modifier.verticalScroll()
,Modifier.horizontalScroll()
undModifier.scrollable()
) wird jetzt gescrollt, damit die fokussierte zusammensetzbare Funktion sichtbar bleibt, wenn die Größe des Scrollbereichs geändert wird und die fokussierte zusammensetzbare Funktion zuvor sichtbar war. - Textfelder werden jetzt über der Tastatur angezeigt, wenn sie fokussiert sind und die Tastatur angezeigt wird, wenn sie sich in einem nicht Lazy Scrollable befinden und der Modus für die weiche Eingabe
ADJUST_RESIZE
ist. (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
wurden veröffentlicht. Version 1.2.0-alpha05 enthält diese Commits.
API-Änderungen
LazyVerticalGrid
undLazyHorizontalGrid
sind jetzt stabil. (I307c0)LazyGridItemInfo.Unknown
wurde durch separateLazyGridItemInfo.UnknownRow
undLazyGridItemInfo.UnknownColumn
ersetzt (I56d51)LazyVerticalGrid
/LazyHorizontalGrid
und alle zugehörigen APIs wurden in das Unterpaket.grid
verschoben. Bitte aktualisieren Sie Ihre Importe vonandroidx.compose.foundation.lazy
aufandroidx.compose.foundation.lazy.grid
. (I2d446, b/219942574)- SMS:
includeFontPadding
ist jetzt standardmäßig deaktiviert. Die Clipping-Probleme infolge vonincludeFontPadding=false
werden verarbeitet. Bei hohen Skripts sollte kein Zuschneiden auftreten. (I31c84, b/171394808) - Die Measured Interface zeigt jetzt die „parentData“-Property (I3313f) an
- Einführung des experimentellen
Modifier.onFocusedBoundsChanged
zur Beobachtung der Grenzen von untergeordneten fokussierbaren Elementen. (I14283, b/220030968, b/190539358, b/192043120, b/216842427) - LazyHorizontalGrid wurde hinzugefügt. (I61ae7, b/191238807)
- Neue
LazyVerticalGrid
API zum Definieren von Achsengrößen hinzugefügt (I17723) - FocusGroup-Modifikator (I64bc0, b/213508274, b/184670295) hinzugefügt
Fehlerkorrekturen
WindowInsets.toString()
zeigt jetzt die richtigen Werte an. (I1585d)
Externer Beitrag
- Aktualisiert für die Verwendung der Kotlinx-Koroutinen 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
wurden veröffentlicht. Version 1.2.0-alpha04 enthält diese Commits.
API-Änderungen
BringIntoViewResponders
sind nicht mehr erforderlich, um Anfragen manuell an übergeordnete Beitragende weiterzuleiten, sondern müssen sofort das Rechteck zurückgeben, das vom übergeordneten Element angezeigt werden soll. (I8e66a)- Asynchrones Laden von Schriftarten in Texten unterstützen (I77057, b/214587005)
LazyVerticalGrid
unterstützt jetztline breaking
vor Elementen mit einer Spanne, die nicht in die aktuelle Linie passt. (I05c40, b/207462103)excludeFromSystemGestures
wurde insystemGesturesExclusion
umbenannt (I19526)LazyVerticalGrid
unterstützt jetzt umgekehrtesLayout. (I6d7d7, b/215572963, b/211753558)- Fügen Sie die Methode
WindowInsets.only()
hinzu, damit Entwickler nur Dimensionen aus WindowInsets einbeziehen können. (I14c94, b/217768486) ComposableTarget
,ComposableTargetMarker
undComposableOpenTarget
wurden hinzugefügt, um Berichte zur Kompilierungszeit darüber zu erstellen, wann eine zusammensetzbare Funktion aufgerufen wird, die auf einen nicht vorgesehenen Anwendungsfall ausgerichtet ist.In den meisten Fällen können die Annotationen vom Compiler-Plug-in abgeleitet werden. Die direkte Verwendung dieser Annotationen sollte daher selten sein. Zu den Fällen, die nicht abgeleitet werden können, gehören das Erstellen und Verwenden einer benutzerdefinierten Anwendung, abstrakte zusammensetzbare Funktionen (z. B. Schnittstellenmethoden), Felder oder globale Variablen, die zusammensetzbare Lambdas sind (lokale Variablen und Parameter werden abgeleitet) oder die Verwendung von
ComposeNode
oder einer verwandten zusammensetzbaren Funktion.Bei benutzerdefinierten Anwendungen müssen die zusammensetzbaren Funktionen, die
ComposeNode
oderReusableComposeNode
aufrufen, eineCompoableTarget
-Annotation für die Funktion und alle zusammensetzbaren Lambda-Parametertypen hinzufügen. Es wird jedoch empfohlen, eine Annotation zu erstellen, die mitComposableTargetMarker
annotiert ist, und dann die markierte Annotation direkt anstelle vonComposableTarget
zu verwenden. Eine zusammensetzbare Annotation mit der KennzeichnungComposableTargetMarker
entspricht einerComposbleTarget
, bei der der vollständig qualifizierte Name der Attributklasse als Anwendungsparameter verwendet wird. Ein Beispiel für die Verwendung vonComposableTargetMarker
finden Sie unteranroidx.compose.ui.UiComposable
. (I38f11)
Fehlerkorrekturen
- Jetzt ist es zulässig, negative Scroll-Offsets an
LazyGridState.scrollToItem()
undLazyGridState.animateScrollToItem()
zu übergeben. (I025c6, b/211753558) - Asynchrones Laden von Schriftarten für TextField wird unterstützt. (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
wurden veröffentlicht. Version 1.2.0-alpha03 enthält diese Commits.
API-Änderungen
notifyFocusedRect
-Methoden inTextInputSession
undTextInputService
wurden verworfen und werden nicht aufgerufen. Verwende stattdessenBringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874)- Animationen wurden für Elemente von Lazy Grids mit Modifier.animateItemPlacement() aktiviert. (Ib6621, b/211753218)
BringIntoViewRequester
leitet jetzt Anfragen an die Android View-Hosting-Anwendung weiter. (Ia7a51)FontFamilyResolver
ist jetzt überLocalFontFamilyResolver.current
verfügbarcreateFontFamilyResolver(context)
undcreateFontFamilyResolver(context, coroutineScope)
wurden hinzugefügt, um neue FontFamily-Resolver außerhalb des Editors zu erstellen.- Absatz und MultiParagraph nehmen jetzt
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
enthält jetzt den Resolver, der für dieses Layout verwendet wird.TextLayoutResult.layoutInput.resourceLoader
wurde eingestellt, da er nicht mehr verwendet wird. (Id5a45, b/174162090)
AndroidFont
wurde hinzugefügt, eine neue Low-Level-API zur Bereitstellung neuer Typen von Ressourcendeskriptoren für Schriftarten unter Android. Beispiele: Laden von Schriftarten aus einem App-spezifischen Back-End, optionale Suche nach vorinstallierten Schriftarten auf dem Gerät oder Laden einer Schriftart aus einer Ressource, die von den aktuellen Font Factorys nicht bereitgestellt wird.- Die
Font.ResourceLoaded
API wurde erweitert, um das optionale und asynchrone Laden von Schriftarten zu unterstützen. Anwendungsentwickler sollten diese API nicht direkt verwenden. Unter „AndroidFont“ kannst du neue Schriftarten hinzufügen. - Die Erweiterungsfunktion
Font.AndroidResourceLoader
ermöglicht die Konstruktion einerFont.ResourceLoader
außerhalb der Zusammensetzung. - Der
loadingStrategy
-Parameter wurde zu ressourcenbasierten Schriftarten hinzugefügt, um ein asynchrones Laden zu ermöglichen, wenn eine Ressourcenschriftart auf herunterladbare Schriftarten-XML verweist. (Ie5aea, b/174162090)
- Die
- Der
Typeface(FontFamily)
-Konstruktor wurde verworfen. Dies wurde früher zum Vorabladen von Schriftarten verwendet, was bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern kann. Wenn Schriftarten zum Herunterladen heruntergeladen werden, kann dieser Aufruf für 10 Sekunden blockiert werden. Verwenden Sie stattdessenFontFamilyResolver.preload
.fontResource(FontFamily): Typeface
wurde verworfen. Dies wurde früher zum Vorabladen von Schriftarten verwendet, was bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern kann. Verwenden Sie stattdessenFontFamilyResolver.preload
(If8e7c, b/174162090).
- Du kannst jetzt den Inhaltstyp für die Elemente von
LazyVerticalGrid
angeben. Für Artikel-/Artikelfunktionen inLazyGridScope
werden jetzt solche Parameter akzeptiert. Die Bereitstellung solcher Informationen hilft dabei, die Logik für die Zusammensetzung von Elementen effizienter zu nutzen und nur die Inhalte zwischen Elementen eines ähnlichen Typs wiederzuverwenden. (I7b355, b/215372836) LazyListLayoutInfo
undLazyGridLayoutInfo
haben jetzt neue Properties:viewportSize
,orientation
,reverseLayout
(Ifc8ed, b/200920410)- Sie können jetzt den Inhaltstyp für Elemente von LazyColumn/LazyRow angeben – Funktionen für Elemente/Elemente in LazyListScope akzeptieren jetzt solche Parameter. Die Bereitstellung solcher Informationen hilft dabei, die Logik für die Zusammensetzung von Elementen effizienter zu nutzen und nur die Inhalte zwischen Elementen eines ähnlichen Typs wiederzuverwenden. (I26506)
- Der
SubcomposeLayoutState
-Konstruktor, dermaxSlotsToRetainForReuse
akzeptiert, wurde verworfen. Stattdessen gibt es einen neuen Konstruktor, derSubcomposeSlotReusePolicy
akzeptiert – eine neue Benutzeroberfläche, die eine genauere Kontrolle darüber ermöglicht, welche Slots für die zukünftige Wiederverwendung beibehalten werden sollen. (I52c4d) - Fügt Modifikatoren für WindowInsets hinzu, sowohl für das Padding als auch für die Größenanpassung. Dadurch kann ein Teil des Inhalts bis zum eingefügten Bereich erweitert werden, ohne dass der Hauptinhalt außerhalb des eingefügten Bereichs liegt. Mit „windowInsetsPadding“ kann beispielsweise der Inhaltsbereich aufgefüllt werden, um Bereiche zu vermeiden, die vollständig oder teilweise abgedeckt sind. (Id0395, b/213942085)
Fehlerkorrekturen
- Textfelder bleiben jetzt über der Tastatur, wenn sie hervorgehoben und die Tastatur angezeigt wird und der Modus für die weiche Eingabe auf
ADJUST_PAN
gesetzt ist. (I8eaeb, b/190539358, b/192043120) - Auf dem Computer wird die lokale Zusammensetzung für
FontFamily.Resolver
verwendetFontLoader
wurde für Computer eingestellt- Neue
createFontFamilyResolver
-Factory auf dem Computer (I6bbbb, b/174162090)
- Der Eingabemethode „Softtastatur“ flackert nicht mehr, wenn der Fokus zwischen Textfeldern geändert wird. (I1bf50, b/187746439)
- Bei Textfeldern ist kein zusätzliches Drücken der Schaltfläche „Zurück“ mehr erforderlich, wenn der Cursorziehpunkt angezeigt wird. (Ideb4b, b/205726883)
- Das Lupenverhalten bei der Textauswahl wurde an die Plattformlupe angepasst. (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
wurden veröffentlicht. Version 1.2.0-alpha02 enthält diese Commits.
API-Änderungen
NonRestartableComposable
wurde den Methoden hinzugefügt, die vorhandene Methoden ohne komplexe Logik überladen. Dadurch werden vom Compiler generierte Speicherprüfungen (ist gleich) für alle Parameter reduziert, die in der aufgerufenen inneren Funktion wiederholt werden. (I90490)excludeFromSystemGesture
-Modifikatoren für einfachen Zugriff aufsetSystemGestureExclusionRects
von Android (I46f07) hinzugefügt
Fehlerkorrekturen
- Das Lupenverhalten bei der Textauswahl wurde an die Plattformlupe angepasst. (Idd918, b/206833278)
LazyColumn
,LazyRow
,Modifier.verticalScroll
und andere Container, dieModifier.scrollable
verwenden, 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
wurden veröffentlicht. Version 1.2.0-alpha01 enthält diese Commits.
API-Änderungen
- Der neue Parameter
userScrollEnabled
wurdeLazyColumn
,LazyRow
undLazyVerticalGrid
hinzugefügt, damit Nutzer das Scrollen über Touch-Gesten oder Aktionen für Bedienungshilfen vorübergehend oder dauerhaft deaktivieren können. Das programmatische Scrollen über die Methoden für den Status ist weiterhin zulässig. (I7eae9, b/201150093) - Dem Lupenmodifikator wurde der Callback
onSizeChanged
hinzugefügt. (I6879f) - Das Lupen-Widget wird jetzt angezeigt, wenn du Ziehpunkte in einem
SelectionContainer
ziehst. (I30b38, b/139320979)
Fehlerkorrekturen
- Fehlerkorrektur: Der Cursorziehpunkt
TextField
wird nicht ausgeblendet, wenn aus dem sichtbaren Bereich gescrollt wird. (I14552, b/208883748)
Aktualisierung der Abhängigkeiten
- Jetzt abhängig von Kotlin-
1.6.10
.
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
wurden veröffentlicht. Version 1.1.1 enthält diese Commits.
Fehlerkorrekturen
- Problem mit
NullPointerException
unterandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
beheben (aosp/1947059, b/206677462) - Ein Absturz wurde behoben, der beim Lesen aus der Zwischenablage unter Android durch Inhalte in der Zwischenablage verursacht wurde. (I06020, b/197769306)
- RTL-Fehler in
LazyVerticalGrid
behoben (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
wurden 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 von Android 12
- Verbesserungen bei der Größe von Berührungszielbereichen
- In Bezug auf Compose 1.0 wird der Layoutbereich von Material-Komponenten so erweitert, dass sie den Richtlinien für Bedienungshilfen von Material für die Größe des Berührungszielbereichs entsprechen. Das Berührungsziel der Schaltfläche wird beispielsweise auf eine Mindestgröße von 48 x 48 dp erweitert, auch wenn Sie die Größe der Schaltfläche entsprechend verringern. Dadurch wird das Material Design auf das gleiche Verhalten wie die Material Design-Komponenten abgestimmt, was ein einheitliches Verhalten ermöglicht, wenn du „View“ und „Compose“ mischst. Durch diese Änderung wird außerdem sichergestellt, dass beim Erstellen der Benutzeroberfläche mit „Material erstellen“-Komponenten die Mindestanforderungen für die Barrierefreiheit auf Berührungszielbereichen erfüllt sind.
- Stabile Unterstützung für Navigation Rail
- Umstellung einer Reihe zuvor experimenteller APIs auf stabile Version
- Support 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
wurden veröffentlicht. Version 1.1.0-rc03 enthält diese Commits.
Fehlerkorrekturen
- Aktualisiert, um Compose Material 1.1.0-rc03 zu unterstützen
Version 1.1.0-rc01
15. Dezember 2021
androidx.compose.foundation:foundation:1.1.0-rc01
und androidx.compose.foundation:foundation-layout:1.1.0-rc01
wurden veröffentlicht. Version 1.1.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Jetzt ist es zulässig, negative Scroll-Offsets an
LazyListState.scrollToItem()
undLazyListState.animateScrollToItem()
zu übergeben. (Iceb90, b/184252837) - Es wurde ein Fehler behoben, der zu fehlenden Scroll-Aktionen für Bedienungshilfen führte (I7cbfb)
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
wurden veröffentlicht. Version 1.1.0-beta04 enthält diese Commits.
Neue Funktionen
- Aktualisiert, um mit Kotlin-
1.6.0
kompatibel zu sein
API-Änderungen
- Die Null-Zulässigkeit in
androidx.core.view
(I7078a, b/204917439) wurde bereinigt. - Es wurden experimentelle APIs hinzugefügt, die es ermöglichen, PointerInputchange insgesamt zu verbrauchen oder zu prüfen, ob sie verwendet wurde oder nicht. (I2e59d)
- Hiermit wird ein Lupen-Widget angezeigt, wenn du den Cursor oder die Auswahlpunkte in Textfeldern ziehst. (I5391e, b/203781358)
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das sich die Text-Ziehpunkte nicht bewegen, wenn sich die Sichtbarkeit des IME ändert. (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
wurden veröffentlicht. Version 1.1.0-beta03 enthält diese Commits.
API-Änderungen
- LazyVerticalGrid unterstützt jetzt horizontale Spans. (I7e2fa, b/176758183)
Eine experimentelle Funktion zum Animieren der Position von Elementen in Lazy Listen wurde hinzugefügt. In LazyItemScope ist ein neuer Modifikator namens
Modifier.animateItemPlacement()
verfügbar. Verwendungsbeispiel: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 über
LazyListScope.item
oderLazyListScope.items
einen Schlüssel angeben, aktiviert dieser Modifikator Animationen zur Neuanordnung der Elemente. Neben der Neuanordnung von Elementen werden auch alle anderen Positionsänderungen, die durch Ereignisse wie Anordnungen oder Ausrichtungsänderungen hervorgerufen werden, animiert. (I59e7b, b/150812265)
- Wenn Sie ü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
wurden 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. Bei einem Ausfall werden sie jetzt nicht mehr immer verzögert. (Ibefe0, b/203141462) - Es wurde eine experimentelle BringIntoView API hinzugefügt, mit der Sie eine Anfrage an Eltern senden können, damit diese scrollen, um ein Element sichtbar zu machen (Ib918d, b/195353459).
Externer Beitrag
Modifier.pointerHoverIcon
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
wurden veröffentlicht. Version 1.1.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Es wurde eine experimentelle BringIntoView API hinzugefügt, mit der Sie eine Anfrage an Eltern senden können, damit diese scrollen, um ein Element sichtbar zu machen (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
wurden veröffentlicht. Version 1.1.0-alpha06 enthält diese Commits.
API-Änderungen
- Eine Überlastung ohne Kinder für das Layout wurde mit verbesserter Effizienz hinzugefügt (Ib0d9a).
SemanticsNodeInteraction.performSemanticsAction
gibt jetzt denSemanticsNodeInteraction
-Wert zurück, auf dem die Funktion aufgerufen wurde. (I9e5db)performScrollToNode(matcher: SemanticsMatcher)
wurde hinzugefügt, mit dem ein scrollbarer Container zu dem Inhalt scrollt, der vom jeweiligen Matcher abgeglichen wird. (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
wurden veröffentlicht. Version 1.1.0-alpha05 enthält diese Commits.
API-Änderungen
- Es wurden experimentelle historische Hinweise zu PointerEventChange hinzugefügt. (Ic1fd8, b/197553056, b/199921305)
Fehlerkorrekturen
- Die Unterstützung von Bedienungshilfen für Scrollables (sowohl Lazy als auch Lazy) in Bezug auf 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
wurden veröffentlicht. Version 1.1.0-alpha04 enthält diese Commits.
API-Änderungen
- Verworfene
performGesture
undGestureScope
, die durchperformTouchInput
undTouchInjectionScope
ersetzt wurden. (Ia5f3f, b/190493367) touchBoundsInRoot
wurde zuSemanticsNode
hinzugefügt. Es enthält die Mindestgröße für Berührungszielbereiche, damit Entwickler dafür sorgen können, dass Berührungszielbereiche die Mindestanforderungen für die Barrierefreiheit erfüllen. (I2e14b, b/197751214)
Fehlerkorrekturen
- Auf Geräten mit Android 12 wird das Overscroll-Format 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
wurden veröffentlicht. Version 1.1.0-alpha03 enthält diese Commits.
Neue Funktionen
- Die Funktion „Compose“ (
1.1.0-alpha03
) wurde so aktualisiert, dass sie von „1.5.30
“ in Kotlin abhängig ist. (I74545)
API-Änderungen
- Ein Glow-Effekt für Scrollen wurde hinzugefügt. Eine neue experimentelle OverScrollConfiguration API wurde hinzugefügt, um die Konfiguration des visuellen Overscroll-Effekts zu ermöglichen. Geben Sie null an, um den Overscroll-Effekt zu deaktivieren. (I0c304, b/171682480)
- AwaitPointerEventScope enthält jetzt withTimeout() und withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- Es wurde eine Testmethode zum Abrufen der abgeschnittenen Grenzen hinzugefügt. (I6b28e)
- ViewConfiguration wurde eine Mindestgröße für Berührungszielbereiche hinzugefügt, die für die Semantik und die Zeigereingabe verwendet werden kann, um die Zugänglichkeit 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
wurden veröffentlicht. Version 1.1.0-alpha02 enthält diese Commits.
API-Änderungen
- DpSize-Versionen für
Modifier.size
undrequiredSize
hinzugefü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
wurden veröffentlicht. Version 1.1.0-alpha01 enthält diese Commits.
API-Änderungen
- Aktualisierte Methode
DrawScope#drawImage
, die Quell- und Zielabfragen zur Verarbeitung eines optionalen FilterQuality-Parameters verwendet. Dies ist nützlich für Pixelkunst, die verpixelt werden soll, wenn sie für pixelbasierte Grafiken verkleinert wird. BitmapPainter und zusammensetzbare Funktion für Bilder wurden aktualisiert, um auch einen optionalen FilterQuality-Parameter zu nutzen (Ie4fb0, b/180311607). - TextField löscht jetzt die Auswahl, wenn die Schaltfläche „Zurück“ gedrückt wird, was dem Verhalten von Android EditText entspricht. (I3ca16, b/174173645)
- Cursor-Ziehpunkt hinzufügen. (I07a82, b/173016579)
Fehlerkorrekturen
- Das Scrollen über Semantikaktionen für Lazy Listen und Komponenten für reguläres Scrollen ist jetzt animiert (Id9066, b/190742024).
Externer Beitrag
LazyVerticalGrid
akzeptiert jetzt Parameter für die horizontale und 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
wurden veröffentlicht. Version 1.0.5 enthält diese Commits.
Fehlerkorrekturen
- Ein Absturz-Tracking von RelatedStateOf-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
wurden veröffentlicht. Version 1.0.4 enthält diese Commits.
Aktualisierung der Abhängigkeiten
- Aktualisiert und abhängig von Kotlin
1.5.31
Version 1.0.3
29. September 2021
androidx.compose.foundation:foundation:1.0.3
und androidx.compose.foundation:foundation-layout:1.0.3
wurden veröffentlicht. Version 1.0.3 enthält diese Commits.
Aktualisierung der Abhängigkeiten
- Aktualisiert und abhängig von Kotlin
1.5.30
Version 1.0.2
1. September 2021
androidx.compose.foundation:foundation:1.0.2
und androidx.compose.foundation:foundation-layout:1.0.2
wurden 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
wurden veröffentlicht. Version 1.0.1 enthält diese Commits.
Aktualisierung der Abhängigkeiten
- Aktualisiert und abhängig von Kotlin-
1.5.21
.
Version 1.0.0
28. Juli 2021
androidx.compose.foundation:foundation:1.0.0
und androidx.compose.foundation:foundation-layout:1.0.0
wurden veröffentlicht. Version 1.0.0 enthält diese Commits.
Hauptfunktionen von Version 1.0.0
Dies ist die erste stabile Version von Compose. Weitere Informationen finden Sie im offiziellen Compose-Blog.
Bekannte Probleme
Wenn du Android Studio Bumblebee Canary 4 oder AGP
7.1.0-alpha04
/7.1.0-alpha05
verwendest, kann es zu folgendem Absturz kommen:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Erhöhen Sie in der Datei
build.gradle
vorübergehend Ihre minSdkVersion auf 24 oder höher, um das Problem zu beheben. Dieses Problem wird in der nächsten Version von Android Studio Bumblebee und AGP7.1
behoben. (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
wurden veröffentlicht. Version 1.0.0-rc02 enthält diese Commits.
- Das Rahmen-Rendering für allgemeine 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
wurden veröffentlicht. Version 1.0.0-rc01 enthält diese Commits.
API-Änderungen
- Canvas unterstützt jetzt einen contentDescription-Parameter für Barrierefreiheit. (Ib547c)
Fehlerkorrekturen
- Bei deaktivierten Schaltflächen, Karten, Kästchen und
Modifier.clickable(enabled=false)
wird verhindert, dass Klicks an die übergeordnete Organisation 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
wurden veröffentlicht. Version 1.0.0-beta09 enthält diese Commits.
API-Änderungen
ManualFrameClock
wurde entfernt. Wenn Sie Animationen steuern müssen, verwenden Sie stattdessencomposeTestRule.mainClock
. (I3c3e8, b/189951065)- Enum "Role" und "LiveRegionMode" in Inline-Klassen mit privatem Konstruktor (Id1890) ändern
- KeyboardCapitalization wird in eine Inline-Klasse konvertiert. (Id5a1c)
- TextOverflow wurde in eine Inline-Klasse geändert. (I433af)
Fehlerkorrekturen
- Wenn Sie jetzt eindeutige 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, wird das Element mit dem jeweiligen Schlüssel als erstes sichtbares Element beibehalten. (Id263f, b/184257857)
- Die Schlüsselkonstanten sind vorerst @ExperimentalComposeUiApi. Bei der Codeaufnahme können private Konstanten vor der Stabilisierung deklariert werden. (Ia5d48)
- IdlingStrategy wurde zu AndroidComposeTestRule hinzugefügt. Diese kann zum Testen von Frameworks verwendet werden, um einen alternativen Mechanismus zu installieren, um auf eine Ruhezeit zu warten oder eine Ruheherzigkeit zu erreichen. Verwenden Sie
AndroidComposeTestRule.setIdlingStrategyFactory()
, bevor der Test beginnt, um Ihre eigene Strategie zu installieren. (I608fa)
Regeln für Profil hinzugefügt
In diesem Release werden den folgenden Erstellungsmodulen (I14ed6) Profilregeln hinzugefügt:
- 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.geometrie
- 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 der Textdatei
baseline-prof.txt
imsrc/main
oder einem entsprechenden Verzeichnis angegeben. In der Datei ist eine Regel pro Zeile angegeben, wobei eine Regel in diesem Fall ein Muster für den Abgleich mit Methoden oder Klassen in der Bibliothek ist. Die Syntax für diese Regeln ist eine Obermenge des visuell lesbaren ART-Profilformats, das bei Verwendung vonadb shell profman --dump-classes-and-methods ...
verwendet wird. Für die Ausrichtung auf Methoden oder Klassen gibt es zwei Arten dieser Regeln.Eine Methodenregel hat das folgende Muster:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Und eine Klassenregel hat das folgende Muster:
<CLASS_DESCRIPTOR>
Hier steht
<FLAGS>
für mindestens eines der ZeichenH
,S
undP
, 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.SlotTable
hätte beispielsweise den DeskriptorLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
ist die Signatur der Methode und enthält den Namen sowie die Parametertypen und Rückgabetypen der Methode. Die Methodefun isPlaced(): Boolean
fürLayoutNode
hat beispielsweise die SignaturisPlaced()Z
.Diese Muster können Platzhalter (
**
,*
und?
) enthalten, damit eine einzelne Regel mehrere Methoden oder Klassen umfasst.
Wozu dienen die Regeln?
Eine Methode mit dem Flag
H
gibt an, dass diese Methode eine "heiße" Methode ist und im Voraus kompiliert werden sollte.Eine Methode mit dem Flag
S
gibt an, dass es sich um eine Methode handelt, die beim Start aufgerufen und im Voraus kompiliert werden sollte, um die Kosten für die Kompilierung und die Interpretation der Methode beim Start zu vermeiden.Eine Methode mit dem Flag
P
gibt an, dass es sich um eine Methode handelt, die nach dem Start aufgerufen wird.Eine in dieser Datei vorhandene Klasse gibt an, dass sie beim Start verwendet wird und im Heap zugewiesen werden sollte, um Kosten für das Laden der Klasse zu vermeiden.
So funktioniert's
- Bibliotheken können diese Regeln definieren, die in AAR-Artefakte gepackt werden. 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 für die App spezifisch ist. ART kann dieses Profil dann bei der Installation der App auf Geräten nutzen, um im Voraus eine bestimmte Teilmenge der Anwendung zu kompilieren, um die Leistung der Anwendung zu verbessern, insbesondere bei der ersten Ausführung. Dies hat keine Auswirkungen auf Debug-fähige Anwendungen.
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
wurden veröffentlicht. Version 1.0.0-beta08 enthält diese Commits.
API-Änderungen
- „NestedScrollSource“-Enum wird durch eine Inline-Klasse ersetzt. (Ie321b, b/187055290)
- Die Verwendung von enum-Werten in Inline-Klassen wurde umgestaltet, um Probleme mit vollständigen Anweisungen zu vermeiden, wenn neue Enum-Werte hinzugefügt werden. (I2b5eb)
- Fügt ein Timeout für Tipp-/Ein-/Aus-Schaltflächen hinzu, um zu verhindern, dass beim Scrollen/Ziehen eine Welle angezeigt wird (Ia2704, b/168524931).
- „ContentDescription“ und „Text Semantik“ sind keine einzelnen Werte, sondern Listen. Dies ermöglicht es, sie unverändert zusammenzuführen, anstatt Verkettungen zu verwenden. Außerdem wurden bessere Test-APIs zur Nutzung dieser Änderungen bereitgestellt (Ica6bf, b/184825850).
Modifier.focusModifier()
wurde verworfen und durchModifier.focusTarget()
(I6c860) ersetzt- Die KeyboardType-Enum wird durch eine Inline-Klasse ersetzt. (I73045, b/187055290)
FocusState
-Enum durchFocusState
-Schnittstelle ersetzt (Iccc1a, b/187055290)- ImeAction-Enum wird durch eine Inline-Klasse ersetzt. (I18be5, b/187055290)
AnnotatedString.withAnnotation
-Funktionen heißen jetzt ExperimentalTextApi anstelle von ExperimentalComposeApi. (I0cd0a)- Der TextUnit-Konstruktor mit TextUnitType ist jetzt ExperimentalTextApi anstelle von ExperimentalComposeApi.
- PaddingValues ist jetzt
@Stable
statt@Immutable
(I88c50).
Fehlerkorrekturen
- Abstürze durch langes Drücken auf den leeren Bereich in nicht leeren Texten wurden behoben. (I33ab5, b/187437299)
- Symbolleiste nach „SelectAll“ anzeigen (I495d9, b/185919613)
- Es wurde ein Fehler behoben, durch den scrollbare Container ihre untergeordneten Elemente an der Querachse beschneiden. Mit einer LazyRow mit Kartenelementen war es leicht zu reproduzieren. Jetzt wird der Schatten nicht abgeschnitten. (Icb635, b/186318448)
- Bei Verwendung von „Modifier.combinedClickable“ (I2298c, b/186223077) blieben die Wellen und andere Hinweise bei einem langen Klick manchmal hängen. Dieses Problem wurde behoben.
- Die Positionsänderung wird jetzt von
detectDragGesures
,detectVerticalGestures
unddetectHorizontalGestures
automatisch übernommen, sodass man change.consumePositionChange in den onDrag-Callbacks nicht aufrufen muss (I42fc4, b/185096350, b/187320697). Modifier.onGloballyPositioned()
wurde geändert, um die Koordinaten dieses Modifikators in der Modifikatorkette anzugeben, und nicht die Layoutkoordinaten, nachdem alle Modifikatoren angewendet wurden. Das bedeutet, dass sich jetzt die Reihenfolge der Modifikatoren darauf auswirkt, welche Koordinaten im Bericht angezeigt 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
wurden veröffentlicht. Version 1.0.0-beta07 enthält diese Commits.
API-Änderungen
- Die Logik für den Vorabruf des nächsten sichtbaren Elements wird für LazyColumn/Row eingeführt (I8a4bc, b/184940225).
- Ziehpunkt für Clip-Auswahl hinzugefügt (Iff80d, b/183408447)
Fehlerkorrekturen
- In LazyColumn/Row bleiben jetzt bis zu zwei zuvor sichtbare Elemente aktiv (nicht entsorgt), auch wenn sie bereits herausgescrollt werden. Dadurch kann die Komponente die aktiven Unterzusammensetzungen wiederverwenden, wenn ein neues Element erstellt werden muss, was das Scrollen verbessert. (IE5555)
- PaintBackground entfernen. (I38660)
- Auswahlhintergrund mit DrawScope zeichnen. (I73c61, b/186674472)
- Eine Beta06-Regression, die sich auf die Zeile/Spalte unter Verwendung von LeerzeichendBy-Anordnungen auf nach Layout gewichtete untergeordnete 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
wurden veröffentlicht. Version 1.0.0-beta06 enthält diese Commits.
API-Änderungen
- Konflikt mit Navigationsbewegung lösen (I1145e)
- Die Bedienungshilfen „CollectionInfo“ und „CollectionItemInfo“ wurden hinzugefügt, mit denen eine Sammlung und ihre Elemente für Bedienungshilfen markiert werden können (Id54ef, b/180479017).
SemanticsActions.ScrollToIndex
wurde hinzugefügt, um eine Liste mit indexierten Elementen zu dem Element mit einem bestimmten Index zu scrollen, undSemanticsProperties.IndexForKey
, um den Index eines Elements in einer Liste mit verknüpften Elementen abzurufen. Beide Aktionen werden von LazyList implementiert.- Es wurde
SemanticsNodeInteraction.performScrollToIndex
hinzugefügt, das eine Liste zum angegebenen Index scrollt, undSemanticsNodeInteraction.performScrollToKey
, das eine Liste zum Element mit dem angegebenen Schlüssel scrollt. (I4fe63, b/178483889, b/161584524)
- Es wurde
- AnnotatedString speichert die Speicherung in TextFieldValue.Saver. Zusätzliche Dienstfunktionen für addTtsAnnotation und mitAnnotationen zu AnnotatedString.Builder (I8cbdc, b/178446304)
PaddingValues(horizontal, vertical)
(I05571, b/181336792) wurden Standardwerte für0.dp
hinzugefügt.
Fehlerkorrekturen
- Bei untergeordneten Zeilen und Spalten mit
weight(fill = false)
füllen das übergeordnete Element nicht mehr den gesamten verfügbaren Bereich der Hauptachse aus. (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
wurden veröffentlicht. Version 1.0.0-beta05 enthält diese Commits.
API-Änderungen
- Die Oberfläche von FlingBehavior ist jetzt als @Stable gekennzeichnet. Alle Implementierungen müssen der
@Stable
-Vereinbarung entsprechen. (I93354, b/184830577)
Fehlerkorrekturen
- Die Scrollaktionen für Bedienungshilfen in
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
undaccessibilityActionScrollDown
wurden korrigiert. Anstatt bis zum Ende des scrollbaren Bereichs zu scrollen, wird jetzt um einen Bildschirm 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
wurden veröffentlicht. Version 1.0.0-beta04 enthält diese Commits.
API-Änderungen
- Benennen Sie hideSoftwareKeyboard und showSoftwareKeyboard für SoftwareKeyboardController in
hide()
bzw.show()
um.- Vollständige CompositionLocal-Schnittstelle für LocalSoftwareKeyboardController bereitstellen, sodass diese festgelegt werden kann (besonders in Tests nützlich) (I579a6)
TextOverflow.Visible
wurde eingeführt. (Ic8f89)- Öffentliche Instanzen von
RowScope
,ColumnScope
,BoxScope
undBoxWithConstraintsScope
wurden entfernt. (I4e83e, b/181869067)
Fehlerkorrekturen
- Das Problem, dass Elemente von
LazyColumn
/LazyRow
, die sich an den Kanten befanden, nach schnellem Wischen falsch positioniert wurden (Ie4d13, b/183877420) wurde behoben. Vor dieser Änderung waren lokale zusammensetzbare Funktionen aufgrund ihrer Parameter überspringbar. Nach dieser Änderung werden keine lokalen zusammensetzbaren Funktionen mehr übersprungen. Diese Änderung erfolgt, da lokale Funktionen häufig Parameter aus dem übergeordneten Element erfassen und dass das Überspringen eine häufige Ursache für Fehler ist.
Betrachten Sie das folgende Beispiel zusammenzufassen:
@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 Funktion
ShowCount
immer übersprungen, auch nachdem der Parametercount
aktualisiert 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
wurden veröffentlicht. Version 1.0.0-beta03 enthält diese Commits.
API-Änderungen
DefaultMonotonicFrameClock
wurde verworfen. WennwithFrameNanos
oderRecomposer.runRecomposeAndApplyChanges
ohneMonotonicFrameClock
aufgerufen wird, wird jetztIllegalStateException
ausgegeben. (I4eb0d)
Fehlerkorrekturen
FlingBehavior.performFling()
wird jetzt auch dann 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
wurden veröffentlicht. Version 1.0.0-beta02 enthält diese Commits.
API-Änderungen
- In der LazyColumn-Messlogik wurden mehrere kleine Optimierungen hinzugefügt (Ic6889).
- Neue lokale API zur
LocalSoftwareKeyboardController
-Kompositionierung hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I5951e, b/168778053) - Neue lokale API zur
LocalSoftwareKeyboardController
-Kompositionierung hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in 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
wurden veröffentlicht. Version 1.0.0-beta01 enthält diese Commits.
Dies ist die erste Version der Betaversion von Compose 1.0.0.
API-Änderungen
- Der onStart-Callback wurde
detectDragGestures
hinzugefügt (I67269, b/179995594). - Modifikatoren zur Größenanpassung für intrinsische Elemente sind nicht mehr experimentell. (I15744)
- dp-Assertions entfernt (I798d2)
- Der SoftwareKeyboardController-Callback wurde aus allen Textfeldern entfernt, der demnächst durch eine neue API ersetzt wird. (Iae869, b/168778053)
- MeasureBlocks wurde in MeasurePolicy umbenannt, eine unterhaltsame Oberfläche. Die Layout-APIs wurden für die Verwendung von MeasurePolicy aktualisiert oder vereinfacht. (Icab48, b/167662468, b/156751158)
InteractionState
wurde durch[Mutable]InteractionSource
ersetzt.- Schnittstellen sind für das Ausgeben und Erfassen von Interaktionsereignissen verantwortlich.
- Anstatt
interactionState = remember { InteractionState() }
an Komponenten wieButton
undModifier.clickable()
zu übergeben, verwenden SieinteractionSource = remember { MutableInteractionSource() }
. - Anstelle von
Interaction.Pressed in interactionState
sollten Sie stattdessen die Erweiterungsfunktionen für InteractionSource verwenden, z. B. InteractionSource.collectIsPressedAsState(). - Für komplexe Anwendungsfälle können Sie InteractionSource.interactions verwenden, um den Interaktionsstrom zu beobachten. Weitere Informationen finden Sie in der InteractionSource-Dokumentation und den Beispielen.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Die eingestellten LayoutCoordinates-Methoden wurden entfernt. Verwenden Sie anstelle der Eigenschaft für positionInParent und boundsInParent (I580ed, b/169874631, b/175142755) die Funktion
- Neue TextInputSession für Eingabesitzungen aus Low-Level-Textkomponenten wie CoreTextField erstellt. (I8817f, b/177662148)
- „Placeable“ zeigt jetzt „measureSize“ an. Sie stellt die Größe dar, mit der das untergeordnete Layout tatsächlich gemessen wurde. Bei dieser Größe werden die Messbeschränkungen möglicherweise nicht berücksichtigt. (Ib2729, b/172560206, b/172338608)
- „selectGroup“-Modifikator hinzufügen, mit dem eine Sammlung von Tabs oder Optionsfeldern aus Gründen der Barrierefreiheit markiert werden kann (Ie5c29)
LazyListState.animateScrollToItem hinzufügen
Mit dieser Methode wird geglättet zu einem bestimmten Element in der Liste. (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“, „smooPanBy“ und „smooRotationBy“ als Funktion ersetzt. (Ifc32b, b/175294473)
Der
defaultFactory
fürcompositionLocalOf
undstaticCompositionLocalOf
ist jetzt erforderlich statt optional.Diese Änderung beseitigt einen potenziellen Typfehler für Typen, die keine Nullwerte zulassen können und für die keine Standard-Factory angegeben wurde. Bisher wurde dadurch eine Nullreferenz für einen Typ bereitgestellt, der keine Nullwerte zulässt.
Für Typen, für die Nullwerte zulässig sind, sollten Sie
{ null }
als Standardwerkstatt angeben.Wir raten davon ab, Local Guides mit Typen zu verwenden, die keine Nullwerte zulassen, es sei denn, es kann ein vernünftiger Standardwert angegeben werden. Wenn kein sinnvoller Standardwert vorhanden ist, sollte die Lambda-Funktion
defaultFactory
eine Ausnahme auslösen. Das Auslösen einer Ausnahme bedeutet jedoch, dass für lokale Nutzer eine implizite Abhängigkeit besteht, die vom Typsystem nicht erzwungen wird. (Ifbd2a)„
Indication#createIndication()
“ wurde in „Indication#rememberUpdatedIndication(InteractionState)
“ geändert und der ParameterInteractionState
wird aus „IndicationInstance#drawIndication()
“ entfernt. IndicationInstance sollte nur für das Zeichnen visueller Effekte zuständig sein und keine Animationen starten bzw. einen Status als Reaktion auf InteractionState-Änderungen schreiben. Diese Animationen und Zustandsschreibvorgänge sollten stattdessen innerhalb vonrememberUpdatedIndication()
ausgeführt werden. Derindication
-Parameter inModifier.indication
wurde ebenfalls in einen erforderlichen Parameter geändert. (IC1764, b/152525426)Bei Textaktionen wird der Fokus jetzt automatisch geprüft (I13777, b/179648629).
runBlockingWithManualClock
(I15cdc, b/179664814) entferntDie Scrollposition in Modifier.verticalScroll()/horizontalScroll() wird jetzt mit "Ints" dargestellt (I81298).
Die Pakete der Methoden „smooScrollBy“ und „scrollBy“ wurden in
androidx.compose.foundation.gestures.*
geändert (I3f7c1, b/175294473).FlingConfig wurde in FlingBehavior umbenannt. Sie ermöglicht jetzt die Anpassung von Stoppanimationen anstelle von vordefinierten Decays. (I02b86, b/175294473)
Größenmodifikatoren wurden umbenannt. „modifier.width/height/size“ wurde in requiredWidth/requiredHeight/requiredSize umbenannt. „Modifier.preferredWidth/preferredHeight/preferredSize“ wurde in „Breite/Höhe/Größe“ umbenannt. (I5b414)
„defaultMinSizeConstraints“ wurde in „defaultMinSize“ umbenannt. (I4aae)
Modifier.tapGestenFilter wurde entfernt. Verwende stattdessen
Modifier.pointerInput { detectTapGestures(...) }
. (I266ed, b/175294473)ein teilweiser Verbrauch wurde aus dem Zeiger-Eingabesystem entfernt. Die empfohlene Methode zur Koordination der teilweisen Nutzung ist Modifier.nestedScroll. (Ie9c9b)
„Ausrichtung“ wurde in das Foundation-Paket verschoben. VelocirtTracker wurde von ui.gesture zu ui.input.pointer verschoben. (Iff4a8, b/175294473)
AnimationClockObservable und Unterklassen wurden entfernt. AnimierteFloat-Anzeige wurde entfernt. (Icde52, b/177457083)
DrawerState.open() unddrawerState.close() sperren jetzt Funktionen. Mit „memoryCoroutineScope()“ können Sie den Umfang der Zusammensetzung abrufen, um sie aufzurufen (I16f60, b/175294473).
„Providers“ wurde in CompositionLocalProvider umbenannt
- Der Kompositionskonstruktor akzeptiert keinen Schlüsselparameter mehr und wurde eingestellt.
- currentCompositeKeyHash wurde in eine zusammensetzbare Top-Level-Eigenschaft anstelle einer zusammensetzbaren Top-Level-Funktion umgewandelt.
- CompositionData und CompositionGroup wurden in den Namespace „androidx.compose.runtime.tooling“ verschoben
- ComposableLambda wurde zu einer Schnittstelle anstelle einer konkreten Klasse gemacht und verfügt nicht mehr über Typparameter.
- ComposableLambdaN ist jetzt eine Schnittstelle anstelle einer konkreten Klasse und hat keine Typparameter mehr.
- Die Funktion „SnapshotFlow“ wurde in den Namespace „androidx.compose.runtime“ verschoben
- Die Zusammenführungsmethode von SnapshotMutationPolicy ist nicht mehr experimentell
- Die „clearRoots“-Funktion der obersten Ebene von
@TestOnly
wurde entfernt. Es ist nicht mehr notwendig. - Die Funktionen „keySourceInfoOf“ und „resetSourceInfo“ wurden entfernt. Sie werden nicht mehr benötigt.
- Composer.collectKeySourceInformation wurde entfernt. Es ist nicht mehr notwendig.
- Die Methoden „isJoinedKey“, „joinKeyLeft“ und „joinKeyRight“ wurden entfernt. Sie werden nicht mehr benötigt.
- Verschiedene APIs der obersten Ebene wurden verschoben und in verschiedene Dateien neu organisiert. Aufgrund der Semantik der Dateiklassen von Kotlin wird die Kompatibilität der Binärdateien, aber nicht der Quelldateien beeinträchtigt. Daher sollte es für die meisten Nutzer kein Problem sein.
- (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. Du kannst einen Zustand ü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 zu intrinsischen Größen hinzugefügt. (I0a6b4)
Die verworfene
emptyContent()
wurde entfernt. Verwende stattdessen{}
. (Idb33f, b/179432510)Einige zuvor eingestellte APIs wurden gelöscht (Ice5da, b/178633932).
Fehlerkorrekturen
- Neue lokale LocalSoftwareKeyboardController-Zusammensetzungs-API hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in 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
wurden veröffentlicht. Version 1.0.0-alpha12 enthält diese Commits.
API-Änderungen
- Modifier.pointerInput erfordert jetzt das Speichern von Schlüsseln, um anzugeben, wann die Koroutine zur Erkennung der Zeigereingabe für neue Abhängigkeiten neu gestartet werden soll. (I849cd)
- Test-Update: hasText() sucht im Textfeld sowohl nach Eingabe- als auch Label-/Hinweisen/Platzhaltern (Iab803)
- „PaddingValues.Absolute“ wurde hinzugefügt und kann in APIs verwendet werden, die PaddingValues akzeptieren. (Ia5f30)
- „onImeActionPerformed“ wurde eingestellt. Verwenden Sie stattdessen KeyboardActions (If0bbd, b/179071523).
- Damit die Namenskonventionen besser mit ImageBitmap und ImageVector übereinstimmen, wurde ImagePainter in BitmapPainter in paralleles VectorPainter umbenannt. (Iba381, b/174565889)
- Bessere Teilstring-Test-APIs mit Teilstring jetzt als Argument (Icbe78)
- Ein
InfiniteAnimationPolicy
-Kontextelement für die Koroutine wurde eingeführt, das in unendlichen Animationen angewendet wird. Standardmäßig ist keine Richtlinie installiert, außer wenn Tests mitComposeTestRule
ausgeführt werden. (I50ec4, b/151940543) - Animatable.snapTo und Animatable.stop sind jetzt Stoppfunktionen (If4288)
- "ComponentActivity.setContent" wurde nach "androidx.activity.compose.setContent" im Modul "androidx.activity:activity-compose" verschoben. (Icf416)
- Die Methoden zum Löschen und copy() wurden aus mehreren Klassen entfernt, in denen sie selten verwendet wurden. (I26702, b/178659281)
Unterstützung für benutzerdefinierte Schlüssel für LazyColumn/LazyRow wurde hinzugefügt. Auf diese Weise können wir die Reihenfolge der Artikel intelligenter handhaben. Das heißt, der Zustand, den Sie in den Blöcken {} gespeichert haben, wird zusammen mit dem Element verschoben, wenn Sie Elemente neu anordnen oder das Element aus der Mitte entfernen.
LazyColumn { items(users, key = { user -> user.id }) { ... } }
Die Änderung von Indication#createInstance wurde zu @Composable geändert und LocalIndication so geändert, dass sie ein Indication-Element enthält, nicht () -> Indication. (I5eeea, b/157150564)
„
Constraints.enforce
“ wurde durch „Constraints.constrain
“ ersetzt. (I8b8ea)„loadFontResource“ wurde eingestellt. Verwenden Sie stattdessen „fontResource“. Die Attribute „imageResource“, „loadImageResource“, „vectorResource“ und „loadVectorResource“ wurden eingestellt. Verwenden Sie stattdessen PainterResource. (I6b809)
Aus Leistungsgründen verwendet die ScrollAxisRange-Semantik jetzt Lambdas, die Gleitkommazahlen zurückgeben, anstelle von direkten Gleitkommawerten. (If4a35, b/178657186)
Es wurde eine EditableText-Semantik hinzugefügt, um bearbeitbaren Eingabetext des Textfeldes zur Barrierefreiheit zu markieren, und entsprechende Testmethoden zur Prüfung der Semantik (I8e07a).
Modifier.clickable bietet jetzt keine Unterstützung für doppelte und lange Klicks. Verwenden Sie Modifier.combinedClickable, um diese Funktionalität zu erreichen. (Iafad1)
toIntPx() wurde inroundToPx() umbenannt. (I9b7e4, b/173502290)
IntBounds wurde in IntRect umbenannt und die API wurde verbessert. (I1f6ff)
„Modifier.dragGestenFilter“ wurde eingestellt. Verwende stattdessen
Modifier.pointerInput { detectDragGestures (...)}
. Alternativ können Sie „Modifier.draggable“ für das Ziehen um eine Achse verwenden (I0ba93, b/175294473).Ambients wurden umbenannt, damit sie der Umbenennung von Ambient -> CompositionLocal entsprechen. Ambients hießen früher AmbientFoo, CompositionLocals heißt jetzt LocalFoo. (I2d55d)
Auswahl wurde auf Fundament verschoben. (I7892b)
Ähnlich wie zuvor entfernte die zusammensetzbare Funktion
state { 0 }
und jetzt die Verwendung wieremember { mutableStateOf(0) }
, entfernen wir die zusammensetzbare FunktionsavedInstanceState { 0 }
. Sie sollten stattdessenrememberSaveable { mutableStateOf(0) }
verwenden. Die Speicherung und Wiederherstellung erfolgen automatisch, wenn der im MutableState verwendete Typ im Bundle gespeichert werden kann. Wenn Sie jetzt ein benutzerdefiniertes Saver-Objekt übergeben haben, müssen Sie eine neue Überladung von „memorySaveable“ mit dem ParameterstateSaver
verwenden. Die Nutzung sieht so aus:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004)Passwortsemantik für Bedienungshilfen hinzugefügt (I231ce)
"ProgressBarRangeInfo.Indeterminate" wurde hinzugefügt, um indeterminate Fortschrittsbalken für Bedienungshilfen zu kennzeichnen (I6fe05).
Die Wiedergabedauer in der Animation ist jetzt auf Nanosekunden eingestellt (If776a)
@ComposableContract wurde zugunsten von drei weiteren 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 sich nicht mehr positiv auf die Leistung auswirken (I0484d)Recomposeren können jetzt geschlossen werden. Geschlossene Recomposeren setzen die Neuzusammensetzung fort, bis die untergeordneten Koroutinen der Komposition abgeschlossen sind. Recomposer.shutDown wurde umbenannt, um den Vorgang abzubrechen und einen Kontrast mit dem Schließen zu bilden. (Ib6d76)
Mit LazyVerticalGrid verbundene APIs sind als experimentell gekennzeichnet (Ia53e3, b/178519862).
memorySavedInstanceState() wurde in „memorySaveable()“ 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 „Any“ als Schlüssel übergeben können. Eine experimentelle Anmerkung ist nicht mehr erforderlich. (I0902e, b/174598702)
Saver, listSaver(), mapSaver(), autoSaver wurde von androidx.compose.runtime.savedinstancestate nach androidx.compose.runtime.saveable (I77fe6) verschoben
Das Artefakt „androidx:compose:runtime:runtime-saved-instance-state“ wurde in „androidx:compose:runtime:runtime-saveable“ (I6dcac) umbenannt
Viele veraltete APIs im ui-Paket werden gelöscht. (I2f2dc)
Das Artefakt „Compose:runtime-Dispatch“ wurde verworfen. MonotonicFrameClock befindet sich jetzt in Composer:runtime und AndroidUiDispatcher ist in Composer:ui. (Ib5c36)
Die Parameter für RounderCornerShape, CutCornerShape und CornerBasedShape wurden von links/rechts 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 die automatische Spiegelung nicht erwünscht ist. (I61040, b/152756983)
canDrag wurde aus Modifier.scrollable entfernt. (Id66e7, b/175294473)
Die API, auf die das Compiler-Plug-in ausgerichtet ist, wurde so umgestaltet, dass anstelle einer konkreten Klasse eine Schnittstelle verwendet wird. Auf der Benutzeroberfläche wird auch kein Typparameter mehr verwendet.
Dies ist eine interne Änderung, die sich nicht auf die Kompatibilität des Quellcodes auswirken sollte, aber eine funktionsgefährdende Änderung darstellt. (I3b922, b/169406779)
Modifier.scaleTouchFilter wurde entfernt. Verwenden Sie stattdessen Modifier.zoomable. Alternativ können Sie
Modifier.pointerInput { detectMultitouchGestures { ... }}
(Id5da1, b/175294473) verwenden.Die Funktion „ananibleValue/Float“ wird jetzt nicht mehr unterstützt. Verwenden Sie stattdessen „Animatable“. (I71345, b/177457083)
- CoreText und CoreTextField wurden aus der öffentlichen API entfernt
- Veraltete Auswahlcontainer-Überlastung (I99c19) entfernt
Verworfene Scrollfunktionen ohne Sperrung entfernen Nach den Änderungen vom letzten Release wurden die Scrollfunktionen ohne Sperrung jetzt vollständig entfernt. Konvertieren Sie sie in die Sperrfunktionen mit denselben Namen. Ein Koroutinebereich kann über rememberCoroutineScope() abgerufen werden. (I3d39c, b/178169563)
androidx.compose.foundation.layout.ConstraintLayout wurde zugunsten von androidx.constraintlayout.compose.ConstraintLayout verworfen. Sie müssen eine Abhängigkeit von
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01
hinzufügen. (I87adc)„touchGestenFilter“, „doubleTapUnlockGesteFilter“, „longPress potenziellenFilter“ und „PressIndicaitonTouchFilter“ werden nicht mehr unterstützt. Verwenden Sie stattdessen Modifier.clickable oder Modifier.pointerInput mit der Funktion detectTapGestens. (I6baf9, b/175294473)
Recomposer.current()
wurde entfernt. [Zusammenfassung]ComposeView verwendet jetzt standardmäßig verzögert erstellte, fensterbezogene Recomposers, die vom ViewTreeLifecycleOwner für das Fenster gesteuert werden. Neuzusammensetzung und mit FrameNanos basierende Animationsticks werden pausiert, während der Hostlebenszyklus gestoppt wird. (I38e11)Recomposer.runningRecomposers bietet jetzt einen globalen StateFlow aus schreibgeschütztem RecomposerInfo zur Beobachtung des aktuellen Kompositionsstatus im Prozess. Ziehen Sie diese API der mittlerweile verworfenen API Recomposer.current() vor. (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
wurden veröffentlicht. Version 1.0.0-alpha11 enthält diese Commits.
API-Änderungen
ScrollBy ohne Sperrung einstellen, ScrollTo entfernen
Wir empfehlen jetzt, Sperren zu verwenden, um das Scrollen zu steuern und auf das Ende des Scrollens zu warten. Im Rahmen dieser Umstellung werden die nicht gesperrten Versionen dieser Funktionen eingestellt und/oder entfernt. (Ie9ced)
Nicht-Sperrung von „smooScrollBy“ einstellen Wir empfehlen jetzt, das Scrollen mithilfe von Sperrfunktionen zu steuern und auf den Abschluss des Scrollens zu warten. Die Versionen dieser Funktionen ohne Sperrung werden im Rahmen dieser Umstellung eingestellt. (I12880)
Der Parameter für die Inhaltsbeschreibung wurde dem Bild und dem Symbol hinzugefügt. Sie wird verwendet, um die Bedienungshilfen zu beschreiben (I2ac4c).
BasicTextField hat einen neuen Parameter namens "decorationBox" erhalten. Sie können dem Textfeld Gestaltungselemente wie Symbole, Platzhalter, Beschriftungen und Ähnliches hinzufügen und den Trefferzielbereich davon vergrößern. (I16996)
canDrag-Parameter wurde aus Modifier.draggable (Ic4bec, b/175294473) entfernt.
AnimierteFloat.fling, das FlingConfig annimmt, wurde entfernt. Verwenden Sie stattdessen „animatable.animateDecay“. (I4659b, b/177457083)
data class
wurde aus den folgenden Klassen entfernt:- InlineTextContent
- Gebietsschemaliste
- (I605c7)
Anklickbar, ein- und auswählbar können jetzt außerhalb der Komposition erstellt werden (I0a130, b/172938345, b/175294473).
„ScrollableColumn/Zeile“ wurde eingestellt. Die Verwendung von ScrollableColumn ist im Vergleich zu LazyColumn bei großen scrollbaren Inhalten weniger effizient, da wir mit LazyColumn nur sichtbare Elemente zusammensetzen/messen/zeichnen können. Um zu verhindern, dass Nutzer ineffizient arbeiten, haben wir die Funktionen „ScrollableColumn“ und „ScrollableRow“ eingestellt und stattdessen die Nutzung von LazyColumn und LazyRow hochgestuft. Nutzer können dennoch entscheiden, dass sie kein Lazy-Verhalten benötigen, und die Modifikatoren direkt wie folgt verwenden: 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, die bei Verwendung manuell importiert werden müssen. Neue Erweiterungs-Überladungen für Arrays: „items:items: Array“ und itemsIndexed(Array) (I803fc, b/175562574)Das eingestellte AbsoluteArrangement wurde entfernt. (Iffa96, b/177641870)
Der Parameter propagMinConstraints wurde zu Box hinzugefügt, um anzugeben, ob die eingehenden Mindesteinschränkungen an den Boxinhalt übergeben werden sollen oder nicht. Der Standardwert ist „false“. (I0125b, b/152613457)
Fehlerkorrekturen
- onCommit, onDispose und onActive wurden zugunsten der SideEffect und DisposableEffect APIs eingestellt (If760e)
- WithConstraints wurde als BoxWithConstraints überarbeitet und zu "foundation.layout" verschoben. (I9420b, b/173387208)
Änderungen an den werkseitigen Funktionen für Schriftart/Schriftfamilie/Schriftart
- Factory-Funktionen hinzugefügt, die mit einem Großbuchstaben beginnen
- Verworfene vorherige Factory-Funktionen mit Kleinbuchstaben
- Neue Factory-Funktionen geben die FontFamily anstelle von Unterklassen zurück.
- Konstruktoren der Unterklassen wurden ausgeblendet, sodass sie nur über Factory-Funktionen erstellt werden können.
- Font.asFontFamily wurde in Font.toFontFamily umbenannt.
- (I42aa7)
ComposeContentTestRule
wurde eingeführt, dasComposeTestRule
erweitert undsetContent
definiert, das ausComposeTestRule
entfernt wurde. Wir haben eine Factory-MethodecreateEmptyComposeRule()
hinzugefügt, die eineComposeTestRule
zurückgibt und keine Aktivität für dich 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" ist jetzt "animateFooAsState", wobei "Foo" der Typ der animierten Variablen ist, z. B. Float, Dp, Offset usw. (Ie7e25).
Die Dichte ist jetzt der Empfängerbereich für Arrangement-Schnittstellen. (I18aad)
TextFieldValue akzeptiert AnnotatedString. Dies ist jedoch nur eine API-Änderung und die Textbearbeitung mit mehreren Stilen ist noch nicht implementiert.
initial
wurde aus den Konstruktorparametern „EditingBuffer“ entfernt. (I326d5)
invalid und summaryReference() wurden zugunsten von currentRecomposeScope bzw. memoryCompositionReference verworfen. (I583a8)
AnnotatedString wurde geändert, um von kotlin.CharSequence zu erweitern. Daher sind length und SubSequence jetzt Instanzfunktionen und Erweiterungsfunktionen werden entfernt. (Iaf429)
Dauer und Verfügbarkeit werden durch lange Millisekunden ersetzt. Mit diesem Schritt wird die Abhängigkeit der Zeigereingabe von diesen Klassen entfernt. (Ia33b2, b/175142755, b/177420019)
SaveObserver ersetzt CompositionLifecycleObserver und CompositionLifecycleObserver wird jetzt eingestellt.
RememberObserver
ersetztCompositionLifecycleObserver
mit geänderter Semantik und umbenannten Methoden. Der Wechsel zur neuen API kann mechanisch für Objekte erfolgen, die nur einmal im Gedächtnis bleiben. Dies ist und ist die empfohlene Vorgehensweise. Wenn jedoch eine Referenz in einer Zusammensetzung mehrmals gespeichert wurde, wirdonRemembered
für jede Referenz aufgerufen, wobeionEnter
nur einmal aufgerufen wird.onEnter
wurde mehrmals aufgerufen, wenn das Objekt in Unterzusammensetzungen wieWithConstraints
undScaffold
verwendet wurde, wodurch der einzelneonEnter
-Aufruf garantiert unzuverlässig war und fürRememberObserver
entfernt wurde.RememberObserver
fügtonAbandoned
hinzu. Dieser wird aufgerufen, wenn dieRememberObserver
-Instanz von dem anremember
übergebenen Callback zurückgegeben wird, aber im Zusammensetzungsstatus nicht gespeichert wurde. Daher wirdonRemembered
niemals aufgerufen. Dies kann auftreten, wenn eine Ausnahme die Komposition vor Fertigstellung beendet oder die Komposition verworfen wird, weil der Status, für den eine Komposition erzeugt wurde, nicht mehr aktuell ist oder aus anderen Gründen nicht mehr benötigt wird. Wenn die Instanz vonRememberObserver
gemäß der Empfehlung oben eine externe Ressource verfolgt, zeigen sowohlonForgotten
als auchonAbandoned
an, dass die Ressource nicht mehr benötigt wird. Wenn das Objekt die gestartete Arbeit oder inonRemembered
zugewiesene Ressourcen verfolgt, kannonAbandoned
ignoriert werden, da es nicht aufgerufen wird, wennonRemembered
aufgerufen wird. (I02c36)TransformedText.transformedText wurde in TransformedText.text umbenannt
- TransformedText ist keine Datenklasse mehr (Ie672a).
Die folgenden Klassen sind keine Datenklassen mehr:
- AnnotatedString
- Absatzstil
- Span-Stil
- TextStyle
- Schriftstärke
- Textdekoration
- TextGeometricTransform
- Textindex
- TextLayoutErgebnis
- TextLayoutInput (Iaff99)
Die experimentellen monotonicFrameAnimationClockOf-Methoden wurden entfernt (Ib753f, b/170708374).
Die globalen Koordinatenmethoden wurden eingestellt und neue fensterbasierte Koordinatenmethoden eingeführt. (Iee284)
Verwende ImeAction.None anstelle von ImeAction.NoAction.
- Verwende „ImeAction.Default“ anstelle von „ImeAction.Unspecific“ (Ie1bcc).
FocusRequester.createRefs ist jetzt als experimentell gekennzeichnet, da sich dies noch ändern kann. (I2d898, b/177000821)
SemanticsPropertyReceiver.hidden wurde in „invisibleToUser“ umbenannt und als „@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 zu einer funktionalen Schnittstelle geändert (I3bba4)
TestCoroutineDispatcher beim Testen nutzen (I532b6)
PointerInputData wurde entfernt und PointerInputChange geändert, um alle Felder von PointerInputData bereitzustellen. PointerInputEvent und PointerInputEventData wurden intern gemacht, da sie in keiner öffentlichen API verwendet werden. (Ifff97, b/175142755)
TextInputService.onStateUpdated wurde in updateState (Id4853) umbenannt.
Entfernen Sie displaySize, da dies vermieden werden sollte. In der Regel ist es besser, die Größe von onRoot() oder mindestens 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
wurden veröffentlicht. Version 1.0.0-alpha10 enthält diese Commits.
API-Änderungen
- ImeOptions und KeyboardOptions sind keine Datenklasse mehr (I3c898, b/168684531).
- Änderungen der VisualTransformation API
- „OffsetMap“ wurde in „OffsetMapping“ umbenannt
- „OffsetMapping.identityOffsetMap“ wurde in „OffsetMapping.Identity“ umbenannt.
- PasswordTransformation ist keine Datenklasse mehr
- OffsetMapping wurde in eigene Datei verschoben
- (I0bdf3)
- Änderungen an der EditOperations API
- EditOperation in EditCommand umbenannt
- Zusätzliches Befehlssuffix für EditOperation-konkrete Implementierungen
- EditCommands sind keine Datenklassen mehr
- Die Funktion „EditOperation.process“ wurde in „applyTo“ umbenannt.
- InputEventListener wurde in InputEventCallback umbenannt
- (I0a366)
- Die Geschwindigkeit wurde so geändert, dass sie Komponenten und mathematische Operationen enthält. (Ib0447)
- @ExperimentalTesting wurde in @ExperimentalTestApi umbenannt, um mit ähnlichen Annotationen der experimentellen API konsistent zu sein (Ia4502, b/171464963).
- Zusätzliche experimentelle stickyHeader-Methode für LazyColumn/LazyRow (I0a81d)
- Ranamed Color.useOrElse() zu Color.takeOrElse() (Ifdcf5)
- Veralteter TestUiDispatcher. Verwenden Sie stattdessen Dispatchers.Main (Ic171f, b/175385255).
- Ein/Aus-Schaltfläche zur Grundlage Strings.kt hinzufügen (I4a5b7, b/172366489)
- NativeClass wurde ins UI-Modul verschoben und intern geändert. Die Verwendung von nativeClass in Gleich-Implementierungen wurde so aktualisiert, dass stattdessen „is MyClass“ verwendet wird. (I4f734)
- FlowRow und FlowColumn wurden eingestellt. Verwenden Sie stattdessen ein benutzerdefiniertes Layout. (I09027)
- Modifier.focus() und Modifier.focusRequester() wurden eingestellt. Verwenden Sie stattdessen Modifier.focusModifier() und Modifier.focusReference() . (I75a48, b/175160751, b/175160532, b/175077829)
- Das Tool „Selectable“.notifySelectableChange wurde eingeführt, um „Selectable“-Updates für „Selectable“ zu benachrichtigen. (I6ff30, b/173215242)
- „
fun Dp.isFinite()
“ wurde in „val Dp.isFinite
“ geändert (I50e00) - „Constraints#expectedBy“ wurde in „isSatisfiedBy“ umbenannt. (I9cf5c)
- Für Inline-Klassen mit einer Konstante „Unspezifikation“ wurden die Attribute „is„angegeben“, „isUnspezifisch“ und „useOrElse“ hinzugefügt. (I93f7b, b/174310811)
Fehlerkorrekturen
- Neue koroutinebasierte API
Animatable
, die die gegenseitige Exklusivität der Animationen gewährleistet. Neue DecayAnimationSpec zur Unterstützung mehrdimensionaler Abklinganimationen (I820f2, b/168014930) - Unterstützung für deaktivierte und schreibgeschützte Textfelder hinzugefügt (I35279, b/171040474, b/166478534)
animate()
wird jetzt durchanimateAsState()
ersetzt, das anstelle vonT
einenState<T>
-Wert zurückgibt. Dies ermöglicht eine bessere Leistung, da der Entwertungsbereich darauf eingegrenzt werden kann, wo der Statuswert gelesen wird. (Ib179e)- Fügen Sie die Semantics Role API und die Rolle als Parameter zu anklickbarer, auswählbarer und ein-/ausschaltbarer SemanticsModifier hinzu. Modifier.progressSemantics wurde so geändert, dass der Slider auch darauf zugreifen kann. (I216cd)
- Auf das native "keyEvent" kann jetzt über "keyEvent.nativeKeyEvent" (I87c57, b/173086397) zugegriffen werden.
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
wurden veröffentlicht. Version 1.0.0-alpha09 enthält diese Commits.
API-Änderungen
Scrollbare Oberfläche hinzufügen
Dadurch können ScrollState und LazyListState als ein gemeinsamer Typ behandelt werden, sodass benutzerdefiniertes Scrollen für beide Typen implementiert werden kann.
Dadurch wird auch „smooScrollBy“ zu einer Erweiterungsfunktion in Scrollable verschoben, von der diese Funktion genutzt wird. (I2153b)
LazyVerticalGrid wurde hinzugefügt. (I17267, b/162213211)
LazyColumnFor, LazyRowFor, LazyColumnForIndexed und LazyRowForIndexed werden eingestellt. Stattdessen LazyColumn und LazyRow verwenden (I5b48c)
Zum Anhalten von Zeigereingabe-APIs wurde HandlePointerInputScope in AwaitPointerEventScope und handlePointerInput() in awaitPointerEventScope() umbenannt. (Idf0a1, b/175142755)
LazyListState.layoutInfo wurde hinzugefügt, um die Liste der Größen und Offsets der derzeit sichtbaren Elemente anzuzeigen (If8678, b/170472532).
Anmerkung ExperimentalPointerInput entfernt (Ia7a24)
InteractionState-Unterstützung für Textfelder wurde hinzugefügt. (I61d91)
Fügen Sie den Parameter „ReverseLayout“ für „LazyColumn/Row“ hinzu. Wenn
true
Elemente von unten nach oben bestehen undLazyListState.firstVisibleItemIndex == 0
bedeutet, dass sich das erste Element unten befindet. (I552ae, b/166589935)Der Parameter verticalArrangement wurde für LazyColumn hinzugefügt. Der Parameter horizontalArrangement wurde für LazyRow hinzugefügt. Mithilfe der Anordnung können wir einen Abstand zwischen den Artikeln einfügen und die Anordnung der Artikel festlegen, wenn nicht genügend davon für die gesamte Mindestgröße vorhanden sind. (Icf79a, b/170394300)
„DetectMultitouchTouchs“ verwendet jetzt einen Callback mit kombinierten Parametern für den Schwerpunkt, das Schwenken, Zoomen und Drehen. (Ie6e1c)
ContentDrawScope wurde für DrawScope in das Modul "ui-graphics" verschoben. (Iee043, b/173832789)
Fehlerkorrekturen
- Lambdas in Offset-Modifikatoren geben jetzt IntOffset statt Float zurück. (Ic9ee5, b/174137212, b/174146755)
SlotTable, SlotReader und SlotWriter wurden aus der öffentlichen API entfernt. Diese wurden zuvor als InternalComposeAPI gekennzeichnet. Jetzt sind sie Teil des Schreiben-Moduls.
CompositionData und CompositionGroup wurden als Ersatz für die UI-Tooling API hinzugefügt, mit der Zusammensetzungsinformationen extrahiert werden können. Diese sind öffentlich, aber nicht für die Verwendung außerhalb der UI-Tooling API gedacht, da sie die Rohinformationen liefern, die von der UI-Tooling API interpretiert werden (I31a9c).
ShaderBrush wurde so überarbeitet, dass eine Shader-Instanz langsam erstellt wird, wenn Größeninformationen der Zeichenumgebung verfügbar sind. Dies ist nützlich, um Gradienten zu definieren, die die vollständigen Zeichengrenzen einer zusammensetzbaren Funktion zum Zeitpunkt der Erstellung einnehmen, ohne dass benutzerdefinierte DrawModifier-Implementierungen implementiert werden müssen.
APIs für Gradientenfunktionskonstruktoren wurden durch Factory-Methoden für ein Gradient-Objekt ersetzt. (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 eine Zustimmung (I0a1ec).
Destruktive Deklarationen zum Erstellen von FocusRequester-Instanzen hinzufügen (I35d84, b/174817008)
„accessibilityLabel“ wurde in „contentDescription“ umbenannt, „accessibilityValue“ in „stateDescription“. (I250f2)
Mehrere neue Funktionen in SelectionRegistrar wurden eingeführt und in „onPositionChange“ in „notificationPositionChange“ umbenannt. (Ifbaf7)
AndroidOwner intern gemacht (Ibcad0, b/170296980)
Neue Funktion infiniteRepeatable zum Erstellen einer InfiniteRepeatableSpec (I668e5)
Die Schnittstelle
Applier
wurde geändert, um das Erstellen von Baumstrukturen mit dem Bottom-up-Ansatz anstatt von oben nach unten zu vereinfachen.Die Methode
insert()
wurde ininsertTopDown()
umbenannt.Die neue Methode
insertBottomUp()
wurde hinzugefügt.Ein Applier fügt entweder Knoten mit
insertTopDown()
oderinsertBottomUp()
in den Baum ein, den er bearbeitet, je nachdem, was besser ist.Einige Bäume, z. B.
LayoutNode
undView
, lassen sich viel effizienter als Draufsicht erstellen. Vor dieser Änderung war ein Stack von Einfügungen erforderlich, um Bottom-up-Ansätzen zu entsprechen. Diese mussten dann in alle Anwendungen kopiert werden, für die eine Bottom-up-Konstruktion erforderlich war, um die Leistung zu verbessern. Mit dieser Änderung überschreibt einApplier
insertBottomUp()
, um einen Baum von unten nach oben zu erstellen, undinsertTopDown()
, um ihn von oben nach unten zu erstellen. (Icbdc2)Die PainterResource API wurde hinzugefügt, um das undurchsichtige Laden von Painter-Objekten aus Raster-Asset-Formaten (z. B. PNGs) oder VectorDrawables zu verarbeiten. Nutzer müssen den Asset-Typ nicht mehr im Voraus bestimmen und können diese Methode aufrufen, um ein Painter-Objekt zu erhalten, das in zusammensetzbaren Bildern oder in Painter-Modifikatoren verwendet werden kann. (I2c703, b/173818471)
Die Factory-Funktion "buildAnnotatedString" wurde hinzugefügt, um einen AnnotatedString zu erstellen. Die Builder-Funktion annotatedString wurde verworfen. (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
wurden veröffentlicht. Version 1.0.0-alpha08 enthält diese Commits.
API-Änderungen
- Der Parameter
maxLines
wurde aus demCoreTextField
entfernt. 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 der Abwärtspfeil nicht erkannt wird, und sie wurden in*OrCancellation
umbenannt. Außerdem ist der ParameterorientationLock
nicht mehr erforderlich. (Ie96e1) - Es wurde eine Lint-Prüfung für die Benennung und Position von zusammensetzbaren Lambda-Parametern hinzugefügt, um die Konsistenz mit den Richtlinien zum Schreiben zu prüfen.
Außerdem wurden einige APIs gemäß der Lint-Prüfung und der Anleitung mit
children
als Namen für das nachgestellte Lambda zucontent
migriert. (Iec48e) foundation:foundation-text
APIs wurden nachfoundation:foundation
verschoben. Die Paketstruktur ist gleich geblieben (Id3eb2).- Neuer Multi-Touch-Gestendetektor mit Hilfsfunktionen zum Erkennen von Drehung, Zoomen und Schwenken. (IC459d)
- Neue Drag-Gesten-Erkennung, die die Zeigereingabe-API anhält, einschließlich Ausrichtungssperre. (Icef25)
- Umbenennung von VectorAsset in ImageVector Im Rahmen der API Council-Richtlinien wurde VectorAsset in Builder verschoben und in Builder in eine innere Klasse von ImageVector umbenannt. Der Typalias von VectorAssetBuilder wurde hinzugefügt, um zur Kompatibilität mit ImageVector.Builder zu verlinken. (Icfdc8)
- „ImageAsset“ und zugehörige Methoden wurden in „ImageBitmap“ umbenannt. (Ia2d99)
- Fundamentsemantikeigenschaften wurden in die Benutzeroberfläche verschoben (I6f05c)
Fügen Sie koroutinebasierte Scroll-APIs hinzu:
Es wurden LazyListState.snapToItem und LazyListState.smoothScrollBy sowie untergeordnete APIs für die Scroll-Steuerung hinzugefügt. Diese APIs bieten eine Schnittstelle zum Anhalten zum Steuern des Scrollens, das erst nach dem Scrollen zurückkehrt. (Beispielsweise 5642)
Ein singeLine-Parameter wurde zu BasicTextField, TextField und OutlinedTextField hinzugefügt. Setzen Sie diesen Parameter auf „true“, um das Textfeld zu einer einzigen horizontal scrollbaren Zeile zu machen. (I57004, b/168187755)
Die Bewegungserkennung für Tippen, Doppeltippen, langes Drücken und Drücken der Anzeige wurde mit der neuen Eingabe für den Haltepunkt hinzugefügt. Außerdem wurden einige Dienstprogramme hinzugefügt, die Entwicklern das Schreiben eigener Gestendetektoren erleichtern. (I00807)
Für „Modifier.focusable“ ist ein zusätzliches Fundament erforderlich. Hiermit können Sie einer Komponente fokussierbares Verhalten mit korrekter Semantik und Barrierefreiheit hinzufügen. (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.bound". Modifier.gravity wurde entfernt. Verwenden Sie stattdessen Modifier.align. Der Stapel wurde entfernt. Verwenden Sie stattdessen Box (I32c2b, b/172470874).
AbsoluteArrangement wurde in Arrangement.Absolute umbenannt. (If26f2)
Fehlerkorrekturen
- DrawModifier APIs wurden vom Paket androidx.compose.ui in das Paket androidx.compose.ui.draw verlegt. Die Datei DrawModifierdeprecation.kt enthält Typaliases/Hilfsmethoden, die die Migration von den verworfenen zu den aktuellen APIs unterstützen. (Id6044, b/173834241)
- Umbenennung von Modifier.drawLayer in Modifier.graphicsLayer Änderungen der zugehörigen Klassen in GraphicsLayer gemäß dem API-Council-Feedback (I0bd29, b/173834241)
<T>
wurde aus der SubcomposeLayout-Deklaration entfernt. Sie können sie jetzt verwenden, ohne einen Typ anzugeben. (Ib60c8)- Die Verfügbarkeits- und Positionsfelder von PointerInputData können jetzt nicht mehr null sein. (ID468a)
- MaterialTheme legt jetzt die richtigen Farben für Auswahlziehpunkte und den Auswahlhintergrund fest. Nicht-Material-Apps können manuell „AmbientTextSelectionColors“ verwenden, um die für die Auswahl verwendeten Farben anzupassen. (I1e6f4, b/139320372, b/139320907)
- Der Ausrichtungsparameter von Box wurde in contentAlignment umbenannt. (I2c957)
- Die „offsetPx“-Modifikatoren wurden in „offset“ umbenannt. Sie verwenden jetzt Lambda-Parameter anstelle von Status. (IC3021, b/173594846)
- WindowManager.isWindowFocused wurde hinzugefügt, um zu überprüfen, ob das Host-Fenster im Fokus ist, sowie einen 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 schreibgeschützt.
- Entfernte Ausnahme wegen ungültiger Auswahlbereich (I4a675, b/172239032)
- Die eingestellten Ambients mit dem Suffix
Ambient
wurden gemäß den anderen Richtlinien für Ambients und Compose API durch neue Properties mit dem Präfix „Inaktiv“ ersetzt. (I33440) - Android-Schriftart-Wrapper hinzugefügt. Sie können eine Android-Schriftart über die
typeface
-Funktion (typeface(Typeface.DEFAULT)
) laden.typefaceFromFontFamily()
auch intypeface()
(I52ab7) umbenannt - Lint-Prüfung wurde hinzugefügt, um zu prüfen, ob Modifier Factorys intern
androidx.compose.ui.composed {}
verwenden, statt als@Composable
gekennzeichnet zu werden. (I3c4bc) - Es wurde eine Lint-Prüfung hinzugefügt, um zu prüfen, ob die Modifikator-Factory-Funktionen als Erweiterungen in Modifier definiert sind, damit sie fließend miteinander verkettet werden können. (I07981)
- Das Semantik-Argument „mergeAllDescendants“ wurde in „mergeDescendants“ umbenannt. (Ib6250)
- Die Zeitsteuerung in Tests (TestAnimationClock und ihre Nutzung) befindet sich jetzt in der Testphase (I6ef86, b/171378521).
- Entfernen Sie das alte UI-Test-Modul und die zugehörigen Stubs (I3a7cb).
- „TextUnit.Inherit“ wurde in „TextUnit.Unspecific“ umbenannt. (Ifce19)
- Die Benutzeroberfläche für die Ausrichtung wurde aktualisiert und funktionsfähig gemacht. (I46a07, b/172311734)
- Modul
foundation:foundation-text
wurde mitfoundation:foundation
zusammengeführt (Idac0f) - „place(Offset)“ und „placeRelative(Offset)“ verwerfen. Verwenden Sie stattdessen Überlastungen mit Ganzzahl-Offsets (I4c5e7).
id
wurde fürLayoutIdParentData
inlayoutId
umbenannt.Measurable.id
wurde inMeasurable.layoutId
umbenannt. (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
wurden veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.
API-Änderungen
- Ähnlich wie bei
Modifier.fillMaxSize[Width|Height]
unterstützen wir jetzt Brüche inModifier.fillParentMaxSize[Width|Height]
im Bereich vonLazyColumn/Row
(I797e2, b/166586426). KeyboardOptions.toImeOptions
wurde aus der öffentlichen API entfernt. (Ic2e45)- Die Grundlagen AmbientTextStyle, ProvideTextStyle und AmbientContentColor wurden eingestellt. Verwenden Sie stattdessen die neuen Versionen, die in der Material-Bibliothek verfügbar sind. Für nicht-Material-Anwendungen sollten Sie stattdessen Ihr eigenes Designsystem erstellen, das spezifische Design-Ambiente enthält, die in Ihren eigenen Komponenten verwendet werden können. (I74acc, b/172067770)
- Foundation.Text wurde eingestellt und durch material.Text ersetzt. Eine einfache, uneindeutige Text-API, die keine Werte aus einem Design verwendet, finden Sie unter androidx.compose.foundation.BasicText. (If64cb)
- MaxLines zu Textfeldern hinzugefügt (Ib2a5b)
- Textfelder aktualisieren, um KeyboardOptions zu akzeptieren (Ida7f3)
- Es wurden KeyboardOptions zur Verwendung in Textfeldern hinzugefügt (I9ca32).
- BasicText wurde als vom Design nicht bewertetes API für Text hinzugefügt, parallel zu BasicTextField. (I28268)
- Die Annotation „ExperimentalLazyDsl“ wurde entfernt. LazyColumn/LazyRow kann jetzt ohne Hinzufügen von @OptIn verwendet werden (Idab7a, b/166584730).
- „BaseTextField“ wurde eingestellt. Verwenden Sie stattdessen BasicTextField. (I896eb)
- BasicTextField wurde als Ersatz für CoreTextField und BaseTextField (Id4cea) hinzugefügt.
- Eingestellte LazyColumnItems/LazyRowItems entfernen (I1d8a8)
- Die nicht mehr unterstützten Zusammensetzungen für die Größenanpassung an intrinsische Messungen wurden entfernt. (I18537, b/171811496)
- „relativePaddingFrom“ wurde in „PaddingFrom“ umbenannt. Der Modifikator „PaddingFromBaseline“ wurde hinzugefügt, um die Abstände zwischen Layoutgrenzen und Text-Baselines einfacher festlegen zu können. (I0440a, b/170633813)
- Der Parameter „matchHeightConstraintsFirst“ wurde dem Seitenverhältnis-Modifikator hinzugefügt, mit dem der Modifikator für Größen-/Höhenbeschränkungen angegeben werden kann, bevor Sie die entsprechenden Breiten ausprobieren. (Ie7c43, b/155290593)
- Die eingestellten „DpConstraints“ wurden entfernt. (I87884, b/171702471)
Fehlerkorrekturen
- Einführung der Inline-Klasse ScaleFactor zur Darstellung von Skalierungsfaktoren für die horizontalen und vertikalen Achsen unabhängig voneinander, um uneinheitliche Skalierungsanwendungsfälle zu unterstützen.
- Die Methode "computeScaleFactor" wurde zu ContentScale hinzugefügt.
- ContentScale.FillBounds wurde hinzugefügt, um eine uneinheitliche Skalierung auszuführen und die src-Grenzen so zu erweitern, dass das Ziel vollständig belegt wird.
- Operatormethoden zur Berechnung von ScaleFactor-Parametern mit Größenparametern hinzugefügt.
- (Ic96a6, b/172291582)
- ErfassungToBitmap wurde zu SnapshotToImage verschoben. (I86385)
- Kennzeichnet CoreText als @InternalTextApi. Verwenden Sie stattdessen BasicText. (I6aaeb)
- KeyboardOptions umbenennen in ImeOptions (I82f36)
- KeyboardType und ImeAction wurden in KeyboardOptions verschoben (I910ce).
- CoreTextField wurde als @InternalTextApi gekennzeichnet. Stattdessen BasicTextField verwenden (Ie2469)
- Die Annotation ExperimentalSubcomposeLayoutApi wurde entfernt. SubcomposeLayout kann jetzt ohne Hinzufügen von @OptIn (I708ad) verwendet werden.
- Modul ui-test-junit4 (Ib91f8) einführen
- Die Icon API wurde aktualisiert, um „Color.Nicht angegeben“ als mögliche Färbungsfarbe zu erfassen, mit der das bereitgestellte Asset oder der bereitgestellte Painter ohne ColorFilter dargestellt wird. Zuvor wurde versucht, die Färbung mit Farbe zu ignorieren.Bei einer nicht angegebenen Färbung wurde am Ende eine transparente Färbung verwendet, am Ende wurde überhaupt nichts gerendert. (I049e2, b/171624632)
- MeasureResult wurde aus MeasureScope verschoben. (Ibf96d, b/171184002)
- Mehrere Layoutsymbole wurden von androidx.compose.ui nach androidx.compose.layout.ui verschoben. (I0fa98, b/170475424)
- androidx.ui.test wurde nach androidx.compose.ui.test (I9ffdb) verschoben
- FirstBaseline und LastBaseline wurden in das Paket „androidx.compose.ui.layout“ (Ied2e7) verschoben.
- "SelectionContainer" wurde ohne den Callback hinzugefügt (Ibfadb).
- Fügen Sie Tests für die Positionen von SelectionHandles in AuswahlContainer hinzu. (Ie93db)
- Auto-Korrektur IME-Option für 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
wurden veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.
API-Änderungen
- „androidx.compose.foundation.Icon“ wurde nach „androidx.compose.material.Icon“ verschoben. Sie können auch die Bildkomponente / Modifier.paint() mit einem Painter verwenden, wenn Sie die Material-Bibliothek nicht nutzen möchten. (I9f622)
- InteraktionState wurde zu Modifier.scrollable, ScrollableColumn und LazyColumnFor hinzugefügt (I81566, b/169509805).
- „alignByBaseline“ wurde „RowScope“ hinzugefügt und „alignWithSiblings“ wurde in „AlignBy“ umbenannt (I06503, b/170628732).
- Für Box wurde eine Inline-Funktion erstellt. (Ibce0c, b/155056091)
- CoreTextField wurde um maxLines erweitert (Ibee58, b/143687793).
- CoreTextField wurde um Softwrap ergänzt. (I21a4b)
Fehlerkorrekturen
- Sie können VectorPainter durch die Verwendung von „memoryVectorPainter“ einstellen. So lässt sich besser erkennen, dass die zusammensetzbare API intern „remember“ nutzt, um Daten über mehrere Kompositionen hinweg beizubehalten. (Ifda43)
- Aktivieren Sie Übergänge in ComposeTestRule; entfernen Sie die Option, um den blinkenden Cursor in ComposeTestRule zu aktivieren. (If0de3)
- Einzeilige Tastaturoption für CoreTextField (I72e6d) hinzugefügt
- Die Radius API wurde in „CornerRadius“ umbenannt, um die Verwendung in Compose besser zu verdeutlichen. Die Dokumentation wurde aktualisiert, um anzugeben, dass negative Eckenradien auf null gesetzt sind. (I130c7, b/168762961)
- Zusätzliche Möglichkeit zur Angabe von Inspector-Informationen in einem zusammengesetzten Modifikator (Idee08, b/163494569)
- IME-Option für die Großschreibung der Tastatur wurde hinzugefügt (I8ac38)
- Position des Rtl-Ziehpunkts fixieren. (I6e1e0)
- Wichtige Änderung: Der Rückgabewert wurde aus PointerInputFilter.onPointerEvent(...) entfernt, da der einzige Wert, der in Zeigerereignissen geändert werden kann, Verbrauchsdaten sind. Anstatt Daten von PointerInputFilter.onPointerEvent(...) zurückzugeben, können Sie jetzt einfach die Verbrauchsdaten der übergebenen PointerEvents ändern. (I6acd0)
- Die Option „SelectAll“ 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
wurden veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.
API-Änderungen
- CoreTextField unterstützt jetzt Cursorfunktionen (Id23aa).
Die APIs „contentColor()“ und „currentTextStyle()“ werden verworfen und durch die Umgebungselemente „AmbientContentColor“ und „AmbientTextStyle“ ersetzt. Du kannst auf den aktuellen Wert zugreifen, indem du
.current
wie bei jeder anderen Umgebungs-Property verwendest. Diese Änderung dient der Einheitlichkeit und um zu vermeiden, dass dasselbe Ziel auf mehreren Wegen erreicht werden kann. Außerdem werden einige Ambient-Eigenschaften umbenannt, um ihren Zweck wie folgt 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.Unspecific“ umbenannt, um eine Konsistenz mit anderen Inline-Klassen zu erreichen (I97611, b/169797763).
- Bedienungshilfen zum Kopieren/Einfügen/Ausschneiden hinzugefügt (I6db4f)
- TextOverflow.None wird eingeführt. Wenn overflow auf "None" gesetzt ist, kann Text den Überlauf nicht mehr verarbeiten, und er meldet seine tatsächliche Größe an LayoutNode. (I175c9, b/158830170)
- Die Parameter "Size.Nicht angegeben" wurden auf "Float.NaN" anstelle von "Float.POSITIVE_INFINITY" aktualisiert. Painter-Implementierungen wurden aktualisiert, um die Werte auf Size.Unspecific sowie auf nicht endliche Größen zu prüfen. (I95a7e)
- Das Modul zum Erstellen von Paging und die Paging-Integration wurden hinzugefügt (Ib85da).
- LazyListScope so ändern, dass Werte mit Nullwerten empfangen werden können (I1765b)
- „OnPositionedModifier“ wird in „OnGloballyPositionedModifier“ und „onPositioned()“ in „onGloballyPositioned()“ umbenannt. (I587e8, b/169083903).
- Stichproben für LazyColumn/Row (Idc16d) hinzugefügt
- Fehler bei den Methoden „itemsIndexed“ und „itemIndexed“ behoben, um eine emptyList zuzulassen (I06647)
- DSL zum Angeben von Inspector-Informationen hinzufügen (Ic9a22)
- Langes Drücken in Text verschieben. (Iff2bc)
- Deaktivierung der Textauswahl und Demo (Ie7e97)
- Unterstützung der Konvertierung von AnnotatedString in SpannableString für bessere Zugänglichkeit. (Ief907)
PointerInputFilter.onPointerInput(...)
wurde entfernt. Stattdessen solltePointerInputFilter.onPointerEvent(...)
verwendet werden. (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
wurden veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.
API-Änderungen
- Stack wurde in Box umbenannt. Die zuvor vorhandene „Foundation.Box“ wird zugunsten des neuen Felds in „Compose.foundation.layout“ eingestellt. Das Verhalten des neuen Box besteht darin, untergeordnete Elemente übereinander zu stapeln, wenn sie mehrere untergeordnete Elemente hat. Dies unterscheidet sich vom vorherigen Box, das sich ähnlich wie eine Column verhielt. (I94893, b/167680279)
- Die Parameter „Box decoration“ wurden eingestellt. Wenn Sie Ihre Box mit Verzierungen/Padding versehen möchten, verwenden Sie stattdessen Modifikatoren (Modifier.background, Modifier.Border, Modifier.padding) (Ibae92, b/167680279).
- Fügen Sie eine neue LazyListState-Klasse hinzu. Dadurch können Sie die Scrollposition der LazyRow- und LazyColumn-Komponenten beobachten und steuern. Instanzen können mit der Methode „rememberLazyListState()“ erstellt und an den Statusparameter der Komponente übergeben werden. Derzeit können das erste sichtbare Element und die Offsets in dieser ersten Version beobachtet werden. (Ic7cb7, b/159307669)
- Verzögerte Listenposition und Scroll-Offset werden jetzt für die Wiederherstellung von Aktivitäten gespeichert und wiederhergestellt (Ie045f, b/166589058).
- Semantik für lange Klicks hinzufügen (I6281b, b/156468846)
- MutatorMutex-Dienstprogramm wurde hinzugefügt, um einen einzelnen Mutator des gemeinsamen Status im Laufe der Zeit beizubehalten und in Konflikt stehende Mutatoren nach Priorität abzubrechen (I3f975).
- Annotierte „rootAnimationClockFactory“, „transitsEnabled“, „blinkingCursorEnabled“ und „textInputServiceFactory“ mit @VisibleForTesting, machen sie zu einer internen API und verbergen ihre kdoc-Dateien (I554eb, b/168308412).
- Der Inline-Parameter wurde aus der Texteingabe mit String-Eingabe entfernt. Es wird nicht verwendet, da inlineContent mit AnnotatedString funktionieren muss. (Ief403)
- Die eingestellten benutzerdefinierten Arrangement APIs wurden entfernt. (Ic576d, b/168297922, b/168297923)
- Der Parameter
unbounded
wurde zu wrapContentSize-Modifikatoren hinzugefügt, wodurch das Layoutelement mit unbegrenzten maximalen Beschränkungen gemessen werden kann. (I77951, b/158559319) - Statische Importe von Inhalten von Layoutbereichen (z.B. alignWithSiblings in RowScope) wurden verhindert. Verwenden Sie stattdessen die explizite Bereichsalternative:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
. (I216be, b/166760797)
Fehlerkorrekturen
- Aktualisierung vieler Grafik-APIs
- APIs zur Transformation von Skalierung und Rotation wurden aktualisiert, sodass ein einzelner Offset-Parameter zur Darstellung der Pivot-Koordinaten anstelle von separaten Gleitkommaparametern für die x/y-Koordinaten in DrawScope und DrawTransform verwendet wird.
- Entfernung der Methoden Rect.expandToInclude und Rect.join
- Die Dokumentation für den Radius wurde aktualisiert: „oval zusätzlich zum elliptischen
- Es wurde eine Dokumentation hinzugefügt, in der angegeben wird, dass der öffentliche Konstruktor für die Inline-Radiusklasse nicht direkt aufgerufen werden soll. Stattdessen sollten Radius-Objekte über ihre Funktionskonstruktoren instanziiert werden.
- RoundRect-APIs für die Abfrage von topRight,bottomRight, bottomCenter usw. wurden entfernt.
- Eingestellte Rect.shift-Funktion zugunsten von Rect.translate
- RoundRect.grow und Rect.shrink APIs entfernt
- Umbenennung von RoundRect.outerRect in Rect.boundingRect
- 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 verwendet jetzt Radius-Attribute anstelle einzelner Parameter für x/y-Radiuswerte.
- Größen-APIs, die von einem Rectangle mit Ursprung bei 0,0 angenommen wurden, wurden entfernt.
- Zerstörungs-API zu Radius hinzugefügt
- Migration verschiedener RoundRect-Erweiterungsfunktionen zu Eigenschaften
- (I8f5c7, b/168762961)
- Leistungsoptimierungen für LazyColumnFor/LazyRowFor Scrollen, indem keine unnötigen Neuzusammensetzungen bei jedem Scrollen vorgenommen werden (I64f65, b/168293643, b/167972292, b/165028371)
- Ein Absturz in LazyColumnFor/LazyRowFor nach dem Scrollen und anschließendem Ändern von Elementen wurde behoben und das automatische Scrollen nach dem Entfernen des zuvor sichtbaren Elements implementiert, damit am Ende keine leeren Lücken mehr angezeigt werden (I220ab, b/161480164, b/167855468).
- Das Verschachteln von scrollbaren Containern wie ScrollableContainer und LazyColumnFor in dieselbe Richtung ist nicht mehr zulässig. Es wurde nie unterstützt und brach den Fliege und die Faulheit bei der Zusammenstellung der Elemente von LazyColumnFor (I6e101).
- Aktualisierung vieler Grafik-APIs
- DrawScope APIs wurden mit Bereichstransformationsmethoden aktualisiert, um anzuzeigen, dass die Transformation nur innerhalb des Callbacks angewendet und nach dem Aufrufen des Callbacks entfernt wird.
- Die ClipPath-Dokumentation wurde aktualisiert, sodass sie auf „Path“ (Pfad) statt auf ein abgerundetes Rechteck verweist.
- Fester Abstand in der Dokumentation für den rechten Parameter in „clipPath“.
- DrawScope.drawCanvas wurde indrawIntoCanvas umbenannt und der Größenparameter wurde entfernt.
- Umbenennung der dx/dy-Parameter in der Inset-Methode in horizontal und vertikal
- Es wurde eine eingefügte Überlastung hinzugefügt, die für alle vier Grenzen denselben Eingabewert bereitstellt.
- Die Dokumentation zur Inset-Methode, die darauf hinweist, dass die Inset-Methode auf alle vier Seiten angewendet wird,
- Dokumentation für die Rect-Klasse aktualisiert
- Kommentare zu Rect-Parametern wurden an den kdoc-Stil angepasst.
- Rect.join und Rect.expandToInclude wurden entfernt.
- Überlastung für Rect.translate(offset) erstellt und Rect.shift verworfen
- (If086a, b/167737376)
- AccessibilityScrollState wird den Semantikeigenschaften hinzugefügt. (Ifeda9)
- Erstellen Sie TextRange inline, um das Erstellen von Objekten zu vermeiden. (Id034b)
- Absatzbeschränkungen wurden entfernt. Die Breite wird jetzt direkt an den Absatz ü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
wurden veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.
API-Änderungen
- „InnerPadding“ wurde in „PaddingValues“ umbenannt. (I195f1, b/167389171)
- Die Verwendung der Schwerkraft wurde konsequent zur Ausrichtung oder Ausrichtung in Layout-APIs umbenannt. (I2421a, b/164077038)
- Dem Stapel wurde ein Ausrichtungsparameter hinzugefügt, mit dem die Standardausrichtung für alle untergeordneten Stapel angegeben werden kann. (Ie80ca, b/164085265)
Fehlerkorrekturen
- DpConstraints und APIs, die es verwenden, wurden eingestellt. (I90cdb, b/167389835)
- Die Parameter
minWidth
undmaxWidth
vonwidthIn
wurden inmin
undmax
umbenannt. Gleiches gilt fürpreferredWidthIn
,heightIn
undpreferredHeightIn
. (I0e5e1, b/167389544) - OnNode und andere globale Methoden wurden zu ComposeTestRule hinzugefügt, da die aktuellen globalen Methoden nicht mehr unterstützt werden. (Ieae36)
- Größen- und Positionsberechnungen in GestureScope wurden korrigiert, was unter anderem zu ungültigen Wischgesten führte (Iaf358, b/166589947).
createAndroidComposeRule
undAndroidInputDispatcher
wurden vonandroidx.ui.test.android
nachandroidx.ui.test
verschoben (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
wurden veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- TestUiDispatcher ist als experimentell gekennzeichnet (Iae99d, b/161247083).
ManualFrameClock.hasAwaiters
wurde hinzugefügt, um zu sehen, ob von dieser Uhr etwas auf einen Frame wartet.runWithManualClock
als Ersatz fürrunBlocking
, wenn Tests ausgeführt werden, die eine manualFrameClock benötigen.TestUiDispatcher.Main
ermöglicht einfachen Zugriff auf den Haupt-UI-Dispatcher in deinen 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
wurden 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
wurden veröffentlicht. Version 0.1.0-dev17 enthält diese Commits.
API-Änderungen
- Für Zeilen und Spalten wurde der Abstand nach Anordnung hinzugefügt, um die Positionierung von untergeordneten Layoutelementen mit einem festen Abstand zu ermöglichen. Die ausgerichtete Anordnung wurde ebenfalls hinzugefügt, um zu ermöglichen, untergeordnete Layoutelemente nebeneinander zu positionieren und gemäß einer Ausrichtung in der Zeile/Spalte auszurichten. Die vorherigen Methoden Arrangement.Vertical#arrange und Arrangement.Horizontal#arrange wurden eingestellt und 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 Border-Datenklasse wurde durch BorderStroke ersetzt (I4257d, b/158160576).
- VerticalScroller und HorizontalScroller wurden entfernt. Verwenden Sie stattdessen „ScrollableColumn/Row“. Modifier.drawBackground wurde entfernt. Modifier.background (I73b0d, b/163019183) verwenden
- Entfernen Sie die als eingestellten fillMax*-Modifikatoren aus LazyItemScope, da sie das korrekte Hinzufügen solcher Modifikatoren für Elemente erschweren, die keine direkten untergeordneten Elemente von LazyColumnFor sind (Ifa78d).
- Hinzufügen der LazyColumn/LazyRow-Implementierung als DSL (I93cc6)
- Einschränkungen sind jetzt Inline-Klasse (I88736)
- Es wurde die Möglichkeit hinzugefügt, die Größe eines Layouts mithilfe der Modifikatoren "fillMaxWidth", "fillMaxHeight" und "fillMaxSize" auf einen Bruchteil des verfügbaren Platzes anzupassen. (I945bb, b/161562591)
Fehlerkorrekturen
- Ein Modifikatorparameter wurde zu AuswahlContainer hinzugefügt (I4aada, b/161487952).
- „MergePolicy“-Lambda wurde zu SemanticsPropertyKey hinzugefügt. Damit kann eine benutzerdefinierte Richtlinie für das Zusammenführen der Semantiken „mergeAllDescendants“ definiert. Die Standardrichtlinie sieht vor, den übergeordneten Wert zu verwenden, falls dieser bereits vorhanden ist, andernfalls den untergeordneten Wert. (Iaf6c4, b/161979921)
PlacementScope.placeAbsolute()
wurde inPlacementScope.place()
umbenannt und die vorherigePlacementScope.place()
wurde inPlacementScope.placeRelative()
umbenannt. Daher spiegelt die MethodePlacementScope.place()
die Position in Rechts-nach-links-Kontexten nicht mehr automatisch wider. Verwenden Sie stattdessenPlacementScope.placeRelative()
. (I873ac, b/162916675)- Die eingestellte Komponente „FilledTextField“ wurde entfernt. Verwende stattdessen „TextField“, um die Material Design-Implementierung des ausgefüllten Textfelds zu erhalten. (I5e889)
- Der Parameter backgroundColor wurde zu LinearProgressIndicator hinzugefügt und der interne Rahmen aus CircularProgressIndicator entfernt. Neue ProgressIndicatorConstants.DefaultProgressAnimationSpec wurde hinzugefügt, die bei der Animation des Fortschritts zwischen Werten als standardmäßige AnimationSpec verwendet werden kann (If38b5, b/161809914, b/161804677).
- Die zusammensetzbare Funktion
state { ... }
wurde zugunsten expliziter Aufrufe vonremember { mutableStateOf(...) }
eingestellt. Dies reduziert die API-Oberfläche insgesamt und die Anzahl der Konzepte für die Statusverwaltung. Außerdem entspricht es dem Musterby mutableStateOf()
für die Delegierung von Klassenattributen. (Ia5727) - RRect wurde in RoundRect umbenannt, damit es besser zum Zusammensetzen von Benennungsmustern passt. Erstellung ähnlicher Funktionskonstruktoren zu RRect und verworfene RRect-Funktionskonstruktoren (I5d325)
- onChildPositioned und OnChildPositionedModifier entfernt. Entwickler sollten stattdessen onPositioned und OnPositionedModifier für das untergeordnete Layout verwenden. (I4522e, b/162109766)
- IntSize ist jetzt eine Inline-Klasse (I2bf42).
- Drücke lange auf den leeren Bereich, um ihn zu bearbeiten. (Ib1e5b)
- Blenden Sie die FloatingToolbar nach dem Tippen auf den Text aus. (If4525)
- FloatingToolbar beim Aktualisieren der Auswahl ausblenden. (I8444c)
- Heben Sie die Auswahl beim Weichzeichnen auf. (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
wurden 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. Sie bietet Modifikatoren zum Füllen der maximalen Größe des übergeordneten Elements. Dies löst den Anwendungsfall, in dem das Element den Darstellungsbereich ausfüllen soll und die reguläre Modifier.fillMaxSize()-Methode nicht funktioniert, da das Element mit Grenzen für unendliche Werte gemessen wird. (Ibd3b2, b/162248854)
- Dialogfeld in Benutzeroberfläche verschieben (I47fa6)
- Zusätzliche LazyColumnForIndexed/LazyRowForIndexed - Versionen von LazyColumnFor/LazyRowFor, die sowohl einen Index als auch ein Element im itemCallback bereitstellen. Dies ist nützlich, wenn Sie zusätzlich zu einem aktuellen Element einen aktuellen Index kennen müssen. (I65ff3)
- „Modifier.deternimateProgress“ wurde in „Modifier.progressSemantics“ (I9c0b4) umbenannt
- LazyColumnItems wurde in LazyColumnFor umbenannt. LazyRowItems wurde in LazyRowFor (I84f84) umbenannt
- Füge als Best Practice einige Markierungen/Anmerkungen hinzu. (I66b20)
- Das Paket „Foundation.shape.corner“ wurde mit dem Paket „foundation.share“ flach dargestellt (I46491, b/161887429).
- сrossaxis-Schwerkraftparameter für LazyRowItems/LazyColumnItems hinzugefügt. LazyRowItems/LazyColumnItems unterstützen jetzt das Verhalten von Wrapping-Inhalten. (Ib39fc)
- ZoomableState wurde in ZoomableController umbenannt. Benutzerdefinierte Kurven werden für smoothScale unterstützt. Die Funktionen
enabled
undonZoomStarted
wurden hinzugefügt (If8b8f) - Material FilledTextField wurde in TextField und grundlegendes TextField in BaseTextField umbenannt, damit die einfachste gewünschte API leicht zu finden und zu verwenden ist (Ia6242, b/155482676).
- Die zuvor verworfene AdapterList wurde entfernt. Stattdessen LazyColumnItems verwenden (I12b9b)
- "Modifier.drawBackground" wurde in "Modifier.background" umbenannt (I13677).
- Das alte ConstraintLayout DSL wurde entfernt. ConstraintSet2 wurde in ConstraintSet umbenannt. (If58d1, b/162450908)
- Modifier.absoluteOffset() und Modifier.absoluteOffsetPx() wurden hinzugefügt. Im Gegensatz zu Offset-Modifikatoren werden Modifikatoren für den absoluten Offset im Rechts-nach-links-Kontext nicht automatisch gespiegelt (I3aa21).
Row
undColumn
sind jetzt Inline-Funktionen, die den Aufwand für ihre Verwendung erheblich reduzieren. (I75c10)
Fehlerkorrekturen
- Umfassende API-Fehlerkorrekturen (I077bc)
- Nicht verwendete OffsetBase-Schnittstelle entfernen
- Richten Sie die Offset- und IntOffset-Klassen so aus, dass sie eine einheitliche API-Oberfläche haben.
- Benennen Sie IntOffset.Origin in IntOffset.Zero um, um mit der Offset API konsistent zu sein.
- Die nativeCanvas-Methode wurde aus der Canvas-Oberfläche entfernt, damit Nutzer ihre eigenen Canvas-Instanzen erstellen können.
- EmptyCanvas-Stub-Klasse erstellt, um DrawScope zu einem Nicht-Null-Parameter anstelle von lateinit zu refaktorieren und sicherzustellen, dass das Feld keine Nullwerte enthält.
- ClipOp-Enums wurden in Pascal Case umbenannt
- FilterQuality-Enums wurden in Pascal Case umbenannt
- StrokeJoin-Enums wurden in Pascal Case umbenannt
- PointMode-Enums wurden in Pascal Case umbenannt
- PaintingStyle-Enums wurden in Pascal Case umbenannt
- PathFillType-Enums wurden in Pascal Case umbenannt
- StrokeCap-Enums wurden in Pascal Case umbenannt
- Die DrawCache-Implementierung wurde aktualisiert, sodass lateinit-Parameter nicht mehr verwendet werden.
- DrawScope wurde so aktualisiert, dass für die internen Parameter "fillPaint" und "strokePaint" kein Lazy Delegierung mehr verwendet wird.
- Die Funktion „Bild zusammensetzbar“ wurde aktualisiert, um die Nutzung von Box zu vermeiden und so den Verwaltungsaufwand zu reduzieren.
- Outline-Klasse wurde aktualisiert und enthält jetzt @Unveränderliche Annotationen.
- PathNode mit @Unveränderlichen Annotationen für jede Pfadanweisung aktualisiert
- Die Vektorunterzusammensetzung wurde aktualisiert, um redundante bedingte Prüfungen auf Gleichheit zu entfernen, da diese von der Erstellung bereits verarbeitet werden.
- Verworfene Rect-Companion-Konstruktormethoden zugunsten von Funktionskonstruktoren
- Aktualisierung der Brush-Klassen und Funktionskonstruktoren mit den APIs @Immutable und @Stable.
- VertexMode-Enum wurde auf PascalCase aktualisiert
- Die DrawScope selectPaint-Methode wurde aktualisiert, um Strichparameter für die Darstellung bedingt zu überschreiben, wenn sie sich geändert haben.
- Wir haben die Größe aktualisiert, um eine destruktive API hinzuzufügen, „Nicht angegeben“ in „Nicht angegeben“ umbenannt und nicht verwendete Methoden entfernt
MonotonicFrameAnimationClock wurde hinzugefügt, mit dem Sie eine MonotonicFrameClock als AnimationClockObservable verwenden können, um die Lücke zwischen den neuen auf Koroutinen basierenden Uhren und APIs zu schließen, die noch die alten Callback-basierten Uhren verwenden.
Das MonotonicFrameClock-Äquivalent zu manualAnimationClock ist jetzt „manualFrameClock“. (I111c7, b/161247083)
SemanticsNodeInteraction.performPartialGesture
wurde entfernt. Verwenden Sie stattdessenSemanticsNodeInteraction.performGesture
. (Id9b62)SemanticsNodeInteraction.getBoundsInRoot()
wurde inSemanticsNodeInteraction.getUnclippedBoundsInRoot()
umbenannt (Icafdf, b/161336532)Die APIs für die Unterstützung von Rechts-nach-links wurden aktualisiert. LayoutDirectionAmbient wurde hinzugefügt, um die Layoutrichtung zu lesen und zu ändern. Modifier.rtl und Modifier.ltr wurden entfernt. (I080b3)
Modifier.plus wurde eingestellt. Verwenden Sie stattdessen "Modifier.then". „Then“ (Dann) hat ein stärkeres Signal für die Reihenfolge, während gleichzeitig die Eingabe von
Modifier.padding().background() + anotherModifier
verhindert wird, wodurch die Kette unterbrochen wird und schwerer zu lesen ist (Iedd58, b/161529964).isFocused()
undisNotFocused()
SemanticsMatcher wurden hinzugefügt. (I0b760)RemeasurementModifier wurde hinzugefügt. Sie ermöglicht es den Nutzenden, das Layout synchron erneut zu messen. Im Allgemeinen benötigen Sie dies nie, da die Neumessung/das Layout automatisch erfolgt. Wir verwenden sie jedoch in LazyColumnItems beim Scrollen. (I5f331, b/160791058)
„isSystemInDarkTheme“ berücksichtigt jetzt immer die systemweite Einstellung für das dunkle Design und ignoriert den Energiesparstatus vor Q gemäß der neuesten Anleitung. (I0c10c)
„OnChildPositioned“ wurde eingestellt. Verwenden Sie stattdessen „OnPositioned“ für das untergeordnete Element. (I87f95, b/162109766)
AndroidComposeTestRule wurde in „createAndroidComposeRule“ umbenannt. (I70aaf)
Bedienungshilfen-Aktion hinzufügen, um TextLayoutResult abzurufen (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
wurden 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 aktualisieren, die oben unter Abhängigkeiten angeben gezeigt werden.
API-Änderungen
- Ähnlich wie beim neuen Parameter in ScrollableColumn/ScrollableRow LazyColumnItems/LazyRowItems ist jetzt auch der Parameter „contentPadding“ verfügbar, mit dem ein Padding für den Inhalt hinzugefügt werden kann, nachdem er abgeschnitten wurde. Dies ist nur mit einem Modifikatorparameter möglich. Außerdem ist es möglich, nur vor dem ersten und nach dem letzten Element einen Abstand hinzuzufügen. (Ibc24e)
- "onFocusChange"-Callback in Textfeldern wurde in "onFocusChanged" umbenannt (Ida4a1).
- VerticalScroller und HoriziontalScroller wurden eingestellt. Verwenden Sie „ScrollableColumn“ und „ScrollableRow“, um das Spalten-/Zeilenverhalten und die Parameter zu integrieren, oder verwenden Sie „Modifier.verticalScroll“ und „Modifier.horizontalScroll“ für Ihr eigenes Element. In ähnlicher Weise 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 der Ausrichtung entfernt. Der für das Scrollen erforderliche Status wurde vereinfacht. ScrollableState wurde in ScrollableController umbenannt (Iab63c, b/149460415).
- Für Einzelwert-Semantikeigenschaften wird jetzt ein Aufrufstil verwendet.
Beispiel: Semantik {hidden = true } wird jetzt so geschrieben:
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412) - Von RoundedCornerShape und CutCornerShape verwendete Eckengrößen können jetzt größer als 50 % sein (Id2340, b/160400213).
- Der ContentScale-Standardparameter für das zusammensetzbare Bild wurde von Inside to Fit geändert. Dies wurde vorgenommen, um ein Verhalten zum Hochskalieren des zugrunde liegenden Malers zu erreichen, wenn das Layout größer als die eigentliche Größe des Malers ist, während das Seitenverhältnis beibehalten wird. Dieses Verhalten entspricht besser den Erwartungen an die Bereitstellung fester Größen für das Bild, wirkt sich aber nicht auf das Standardverhalten aus, wenn nur die intrinsische Größe zum Berechnen der Größe der zusammensetzbaren Funktion verwendet wird. (I40ae3, b/159838006)
- Verwenden Sie in den APIs der obersten Ebene AnimationSpec anstelle von AnimationBuilder, um das Konzept der Spezifikation für statische Animationen zu verdeutlichen. – Verbessern Sie die Übergangs-DSL, indem Sie die Lambda-Anforderung zum Erstellen von AnimationSpecs wie Tween, Spring entfernen. Stattdessen nehmen sie Konstruktorparameter direkt. - Verbesserte Benutzerfreundlichkeit von AnimationSpec, die Konstruktoren öffnet, anstatt sich auf Builder zu verlassen (Ica0b4)
- Anklickbar wurde entfernt. Modifier.clickable verwenden (I84bdf)
- Zusätzliche LazyRowItems: horizontales Scrollen-Analog zu LazyColumnItems (Ibbcf7)
- Einführung zustandsloser Animations-APIs auf niedriger Ebene Diese APIs (I63bf7)
- „androidx.ui.foundation.TextFieldValue“ und „androidx.ui.input.EditorValue“ wurden eingestellt. Zusammensetzbare Funktionen für TextField, FilledTextField und CoreTextField, die diesen Typ verwenden, wurden ebenfalls eingestellt. Verwenden Sie stattdessen androidx.ui.input.TextFieldValue (I4066d, b/155211005).
- Verwendung von "IntPx" durch "Int." ersetzt. "IntPxPosition" durch "IntOffset" ersetzt. "IntPxSize" wurde durch "IntSize" ersetzt. (Ib7b44)
- androidx.ui.foundation.shape.RectangleShape entfernt; androidx.ui.graphics.RectangleShape (I94939, b/154507984) verwenden
- Um die Anzahl der Klassen zur Darstellung von Größeninformationen zu konsolidieren, sollten Sie die Verwendung der Klasse "Size" anstelle von "PxSize" standardisieren. Dies bietet die Vorteile einer Inline-Klasse, um einen Long-Wert zu verwenden, um 2 Gleitkommawerte zu verpacken, um Breite und Höhe als Gleitkommazahlen darzustellen. (IC0191)
- Um die Anzahl der Klassen zur Darstellung von Positionierungsinformationen zu konsolidieren, sollten Sie die Verwendung der Offset-Klasse anstelle von PxPosition standardisieren. Dies bietet die Vorteile einer Inline-Klasse, um einen Long-Wert zu verwenden, um 2 Gleitkommawerte zu verpacken, um x- und y-Offsets darzustellen, die als Gleitkommazahlen dargestellt werden. (I3ad98)
- Modifier.zoomable wurde hinzugefügt, um die Zoomfunktion durch Auseinander- und Zusammenziehen der Finger zu vergrößern (Id5d63).
- Ein/Aus-Schaltfläche wird nicht mehr unterstützt. 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)
- Fügt dem Text den Parameter „fontWeight“ hinzu, der zuvor versehentlich nicht hinzugefügt wurde (I56937).
- Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem für Pixelparameter nur Dp und primitive Typen verwendet werden (I19d02).
- VerticalScroller stellt jetzt „Column“ (Spalte) jetzt standardmäßig zur Verfügung. HorizontalScroller stellt jetzt Row Out of the Box bereit. (Ieca5d, b/157020670)
- Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem für Pixelparameter nur Dp und primitive Typen verwendet werden (Iede0b).
- Modifier.indication wurde dem Foundation-Paket hinzugefügt. Hiermit können Sie Informationen zum Drücken/Ziehen/Sonstiges auf Ihren benutzerdefinierten, interaktiven Elementen einblenden (I8425f, b/155287131).
- VerticalScroller und HorizontalScroller unterstützen jetzt umgekehrtes Scrollen. isReversed ist auf ScrollerPosition (I953bd) festgelegt.
- Unterstützung beim Hinzufügen von zusammensetzbaren Funktionen in das Textlayout (I1373c)
- CanvasScope-Implementierungen wurden konsolidiert, sodass es jetzt nur noch DrawScope und ContentDrawScope gibt. CanvasScope wurde in DrawScope umbenannt. DrawScope wurde aktualisiert, um die Dichte-Oberfläche zu implementieren und die Unterklasse „LayoutDirection“ von „Deleted DrawScope“ in ContentDrawScope zu implementieren. Die Funktionen „Painter“ und „PainterModifier“ werden jetzt nicht mehr selbst beibehalten, da DrawScope diese Eigenschaft bereits zur Verfügung stellt, ohne sie manuell anzugeben (I1798e).
- Die eingestellte DrawBackground API wurde zugunsten der Erweiterungs-APIs „drawBackground“ im Modifier entfernt. refaktorierte „color“-, „pinsel“- und „colordBackground“-Implementierungen, um Codepfade zu reduzieren und die Notwendigkeit, dass Modifier als Teil der Komposition erstellt werden muss, zu reduzieren. (I0343a)
- Wir haben die Erstellung von APIs auf höherer Ebene aktualisiert, die einen Canvas zur Verfügung stellen, um stattdessen CanvasScope bereitzustellen. Nutzer müssen dadurch ihre eigenen Paint-Objekte nicht mehr verwalten. Nutzer, die weiterhin Zugriff auf einen Canvas benötigen, können die Erweiterungsmethode „drawCanvas“ verwenden. Sie bietet einen Callback, um Zeichenbefehle mit dem zugrunde liegenden Canvas auszugeben. (I80afd)
- HorizontalScroller und VerticalScroller stellen ihre Scrollposition nicht mithilfe des gespeicherten Instanzstatus wieder her. (Ia0fae, b/155075048)
- FocusManagerAmbient wurde entfernt. Verwenden Sie FocusModifier.requestFocus , um den Fokus zu erhalten. (IC4826)
- Das Tabellenlayout wurde vorübergehend entfernt, bis es mit einer aktualisierten API wieder verfügbar ist. (Id88a7)
Es wurde eine CanvasScope API erstellt, die ein Canvas-Objekt umschließt, um eine zustandslose, deklarative API-Oberfläche zum Zeichnen bereitzustellen. Transformationen sind in ihrem eigenen Empfängerbereich enthalten und Größeninformationen gelten auch für entsprechende eingefügte Grenzen. Der Nutzer muss zum Konfigurieren von Zeichenvorgängen kein eigenes Paint-Statusobjekt verwalten.
CanvasScopeSample wurde hinzugefügt und die Demo-App wurde mit einer deklarativen Grafikdemo aktualisiert (Ifd86d).
ColoredRect wurde entfernt. User Box mit dem Modifikator „drawBackground“ stattdessen (I983c7, b/152753731)
Anpassung der Cursorfarbe für das Textfeld (I6e33f)
Es ist jetzt möglich, die Softwaretastatur mithilfe des Callbacks „onTextInputStarted“ (I8dc44, b/151860051) mit „SoftwareKeyboardController“ ein- und auszublenden.
TextFieldValue, der mit TextField verwendet wird, kann jetzt in folgenden Fällen verwendet werden:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
(I5c3ce, b/155075724)Fügt häufig verwendete Parameter zu Text() hinzu. Wenn Sie derzeit einen lokalen Textstil erstellen, um eine geringe Anzahl dieser Parameter wie
Text(style = TextStyle(textAlign = TextAlign.Center))
zu übergeben, können Sie die Parameter jetzt einfach direkt angeben:Text(textAlign = TextAlign.Center)
(I82768)Der Parameter „CoreTextField/TextFieldfocusIdentifier“ wurde durch „FocusNode“ ersetzt, um die Integration in das Fokus-Subsystem zu ermöglichen. (I7ea48)
TextField-Update – in der horizontalen Dimension belegt es den gesamten verfügbaren Bereich, der ihm zugewiesen ist (Ib08df, b/154638552).
InteractionState und Interaction wurden hinzugefügt, um die Erstellung von Komponenten zu vereinfachen, die auf Änderungen des UI-Status reagieren, z. B. Drücken und Ziehen (Icfe25, b/152525426).
RectangleShape wurde von androidx.ui.foundation.shape.* nach androidx.ui.graphics.* verschoben. (Ia74d5, b/154507984)
Alle Farbverwendungen, für die Nullwerte zulässig sind, in der API durch eine Funktion ersetzt, die keine Nullwerte zulässt, und Color.Unset anstelle von null verwenden (Iabaa7)
Update der TextField API – onFocus- und onBlur-Callbacks wurden zu einem einzelnen onFocusChange(Boolean)-Callback mit dem Parameter (I66cd3) zusammengeführt.
Umbenennung von ScaleFit in ContentScale. ContentScale wurde von UI-graphics in das UI-Core-Modul verschoben und befindet sich nun im selben Modul wie die Ausrichtung API. FillMaxDimension in „Zuschneiden“ umbenannt „FillMinDimension“ wurde in „FillMinDimension“ umbenannt „FitMinDimension“ wurde in „Fit“ umbenannt „Fit“ wurde in „Innen anpassen“ umbenannt, um die Entsprechungen „ImageView.ScaleType“ besser zu berücksichtigen Es wurde eine Dokumentation hinzugefügt, aus der hervorgeht, dass die Kombination aus „Zuschneiden“ und „Align.Center“ dasselbe Ergebnis erzielt wie „ImageView.ScaleType.CENTER_CROP“ und „Fit“, die mit „Align.Center“ verwendet werden, dasselbe Ergebnis wie „ImageView.ScaleType.FIT_CENTER5“.
Entfernt ProvideContentColor, verwende stattdessen ContentColorAmbient direkt mit
Providers
(Iee942)Fügt dem Text einen Farbparameter hinzu. Dadurch kann die Farbe des Textstils überschrieben werden, ohne dass diese manuell mit dem in einem Design bereitgestellten Stil zusammengeführt werden müssen. (I41a66)
DrawModifier API verbessern:
- Der Empfängerumfang für „draw() ContentDrawScope“ wurde erstellt.
- Alle Parameter fürdraw() wurden entfernt.
- DrawScope hat dieselbe Oberfläche wie der frühere CanvasScope.
- ContentDrawScope verfügt über die Methode „drawContent()“ (Ibaced, b/152919067).
„ColoredRect“ wurde eingestellt. Verwende stattdessen
Box(Modifier.preferredSize(width, height).drawBackground(color))
. (I499fa, b/152753731)Das Shape-Motiving-System wird 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)
Ziehbare Elemente wurden in Modifikator (Id9b16, b/151959544) verschoben.
Text
wurde von androidx.ui.core in das Paket androidx.ui.foundation verschoben. (I87ce5)Parameter
enabled
zu „Kästchen“, „Wechsel“ und „Ein/Aus-Schaltfläche“ hinzufügen (I41c16)Ripple ist jetzt ein Modifikator. Obwohl Clickable noch nicht konvertiert wurde, wird die Verwendung von
Clickable(onClick = { ... }, modifier = ripple())
(Ie5200, b/151331852, b/150060763) empfohlen.Die VectorPainter API wurde hinzugefügt, um die vorhandene Subcomposition API für Vektorgrafiken zu ersetzen. Das Ergebnis der Unterzusammensetzung ist ein VectorPainter-Objekt anstelle eines DrrawModifier. Die früheren DrawVector-Zusammensetzungen wurden zugunsten von VectorPainter eingestellt.
Es wurde ein Bild erstellt, das zusammensetzbar ist, um neben der Darstellung eines bestimmten Bild-Assets auf dem Bildschirm auch Größe und Layout zu verarbeiten. Diese zusammensetzbare Funktion unterstützt auch das Zeichnen einer beliebigen Painter-Instanz unter Berücksichtigung ihrer eigentlichen Größe sowie eine bestimmte feste Größe oder Mindestgröße (Ibcc8f).
Button, FloatingActionButton und Clickable haben jetzt einen separaten
enabled
-Parameter. Einige der Parameter der Schaltfläche wurden umbenannt oder neu angeordnet. (I54b5a)Umbenennung von Image in ImageAsset, um den Unterschied zwischen den Bilddaten und der zukünftigen zusammensetzbaren Funktion für das Layout und die Zeichnungen besser zu unterscheiden
Es wurde eine Erweiterungsmethode für
Bitmap.asImageAsset()
(android.graphics.Bitmap) zum Erstellen einer Instanz eines ImageAsset erstellt, die sich für die Kombination der herkömmlichen Android-Anwendungsentwicklung mit dem Framework zum Schreiben von Inhalten eignet. (Id5bbd)Die zusammensetzbare Funktion „DawImage“ wurde entfernt. Verwenden Sie ImagePainter, um ein Bild auf einem vorhandenen Layout zu zeichnen, oder SimpleImage, um ein platzsparendes Bild zu einführen (I595e1, b/149827027).
Die Stack-Komponente unterstützt die Schreibrichtung von rechts nach links (Ic9e00).
Icon, IconButton und IconToggleButton wurden hinzugefügt, um AppBarIcon zu entfernen. Sie können bestehende Verwendungen von AppBarIcon direkt durch IconButton ersetzen, sodass sie jetzt das richtige Touch-Ziel haben. Informationen zur Verwendung findest du in den Beispielen und in den Symbolen für die bereitgestellten Material-Symbole, die du direkt mit diesen Komponenten verwenden kannst. (I96849)
Die zusammensetzbare Funktion „DawShape“ wurde entfernt. Verwenden Sie stattdessen den Modifikator „Hintergrund zeichnen“. (I7ceb2)
AdapterList wurde hinzugefügt, eine scrollbare Listenkomponente, die nur die sichtbaren Elemente zusammenstellt und einrichtet. Zu den derzeit bekannten Problemen zählt, dass es sich nur um eine vertikale Version handelt und nicht alle Fälle von Änderungen an den untergeordneten Elementen vollständig verarbeitet werden. (Ib351b)
Es wurde eine scrollbare Komponente hinzugefügt, die das Erstellen von benutzerdefinierten Scrollern/Listen ermöglicht (I5fd37).
Hintergrund wurde in DrawBackground umbenannt und zum Standardspeicher gemacht (Ia0bd3).
Abstände, Rahmen, Form und Hintergrundparameter zu Box hinzufügen (I05027, b/148147281)
Canvas-Komponente hinzugefügt. Diese zusammensetzbare Funktion nimmt etwas in Anspruch (vom Nutzer bereitgestellt) und ermöglicht Ihnen, mit CanvasScope (I0d622) zu zeichnen.
Border
-Modifikator inDrawBorder
umbenennen (I8ffcc)Es wurde eine Box-Komponente zum Kombinieren gängiger Layout- und Zeichenfunktionen hinzugefügt. (I6e2a7)
Scroller zeigen jetzt natives Android-Fingerverhalten. (I922af, b/147493715)
DrawBorder durch Rahmenmodifikator ersetzt (Id335a)
„Modifier.tag“ wurde in „Modifier.layoutId“ umbenannt, um eine Verwechslung mit „Modifier.testTag“ zu vermeiden. (I995f0)
Der Parameter "percent" beim Erstellen von ConstraintLayout-Richtlinien wurde in "fraction" umbenannt. (Ida2db)
Zusätzliche Unterstützung für Ränder von ConstraintLayout-Barrieren. (I47ffe)
RTL-Unterstützung in ConstraintLayout wurde korrigiert. Nicht erkannte RTL-APIs wurden hinzugefügt. (I3b1c7)
Ein neues DSL für ConstraintLayout wurde hinzugefügt. Weitere Informationen finden Sie in den Beispielen. (Icaa9a)
Die Annotation @ExperimentalLayout wurde hinzugefügt. ConstraintLayout, FlowRow und FlowColumn sind jetzt damit getaggt, um zu kennzeichnen, dass sich ihre APIs ändern. (I412a8)
Modifier.padding(InnerPadding)
wurde hinzugefügt (I94985, b/157133803).Die verworfenen Spalten RowAlign und ColumnAlign in Row und Column wurden entfernt. (If60d4, b/155858731)
Das verworfene LayoutTag() wurde entfernt. Verwenden Sie stattdessen „Modifier.tag()“. Die eingestellte Funktion „Modifier.matchParent()“ wurde entfernt. Verwenden Sie stattdessen „Modifier.matchParentSize()“. (If8044)
Der Layoutmodifikator „offsetPx“ wurde hinzugefügt, um (dynamische) Offsets in Pixel zu definieren. (I5af57)
Die zusammensetzbare Funktion „AlignLineOffset“ wurde eingestellt. Verwenden Sie stattdessen den Modifikator relativePaddingFrom(). Die zusammensetzbare Funktion „CenterAlignmentLine“ wurde entfernt. (I60107)
Der Layoutmodifikator „defaultMinSizeConstraints“ wurde hinzugefügt, der nur dann Größenbeschränkungen für das umschlossene Layout festlegt, wenn die eingehenden entsprechenden Einschränkungen nicht angegeben sind (0 für Mindesteinschränkungen und unendlich für maximale Einschränkungen). (I311ea, b/150460257)
Der Container wurde entfernt. Verwenden Sie stattdessen Box (Ibbc2b, b/151407926).
Die nicht mehr unterstützten Layoutbreite-/Höhen-/Größenmodifikatoren wurden entfernt. (Ib0bc1)
Standardparameterwerte für den Offset-Modifikator wurden hinzugefügt. (I37f06)
Modifikator für symmetrischen Abstand wurde hinzugefügt. (I39840)
Der eingestellte Layout-AspectRatio-Modifikator wurde entfernt. (I65a74)
Die eingestellten LayoutAlign-Modifikatoren wurden entfernt. (I10877)
Es wurde ein Fehler bei den Modifikatoren für Breite und Höhe behoben, der dazu führte, dass das umschlossene Layout ohne Einschränkungen der entgegengesetzten Achse gemessen wurde. (I210b8, b/154797971)
Die Parameter verticalGravity und horizontalGravity wurden zu Zeile bzw. Spalte hinzugefügt. (I7dc5a)
„wrapContentWidth“ und „wrapContentHeight“ wurden aktualisiert und sind nun mit der vertikalen oder horizontalen Ausrichtung anstelle der Ausrichtung zu erwarten. Der Schwerkraftmodifikator wurde aktualisiert und akzeptiert nun die vertikale oder horizontale Ausrichtung. Zeilen, Spalten und Stapel wurden aktualisiert, um benutzerdefinierte fortlaufende Ausrichtungen zu unterstützen. (Ib0728)
Die Ausrichtung kann mit beliebigen Werten instanziiert werden. 1D-Ausrichtungen wurden hinzugefügt. (Ia0c05)
EdgeInsets wurde in InnerPadding umbenannt. Der Parameter innerPadding von Material Buttons wurde in paddding umbenannt. (I66165)
„alignToSiblings“ akzeptiert jetzt „Measured“ anstelle von „Placeable“. (I5788d)
Intrinsische Messungen wurden um Modifikatoren für die Größenanpassung ergänzt und die Komponenten, die diesem Zweck dienen, wurden eingestellt. (I8295d)
Unterstützung für die Anpassung der Abmessungen untergeordneter Elemente von ConstraintLayout (Idb1a5) wurde hinzugefügt.
Die eingestellten zusammensetzbaren Funktionen „Umbrechen“ und „Zentrieren“ wurden entfernt. (I29e23)
LayoutModifier2 wurde hinzugefügt, eine neue API zum Definieren von Layoutmodifikatoren. LayoutModifier (If32ac) wurde eingestellt.
RowScope- und ColumnScope-Mitglieder sind jetzt außerhalb von Zeile und Spalte zugänglich. (I3a641)
Der Container wurde verworfen. Verwenden Sie stattdessen Box. (I675ce, b/151407926)
Der LayoutOffset-Modifikator für die Versatz der Layoutposition wurde hinzugefügt (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).
Das zusammensetzbare Seitenverhältnis wurde zugunsten des Modifikators entfernt. Veraltete FlexColumn, FlexRow-zusammensetzbare Funktionen und den Abstandsmodifikator (Iec8a7) wurden gelöscht.
Der LayoutInflexible-Modifikator für Zeile und Spalte wurde entfernt (I0d820).
Implementieren Sie Ziehpunkte zum Ziehen, um die Auswahl für das Textfeld zu ändern. (I27032)
Implementiert „LongPressAndDrag“ für die Textfeldauswahl. (I17919)
Fehlerkorrekturen
- FocusModifier wird zugunsten von Modifier.focus, Modifier.focusRequester und Modifier.focusObserver eingestellt. FocusState und FocusdetailState wurden zugunsten von FocusState2 eingestellt (I46919, b/160822875, b/160922136).
runOnIdleCompose
umbenannt inrunOnIdle
(I83607)- Mehrere Test-APIs wurden umbenannt, um die Intuitivität zu verbessern. Alle findenXYZ APIs wurden in onNodeXYZ umbenannt. Alle doXYZ APIs wurden umbenannt, um XYZ auszuführen. (I7f164)
- Entfernt zuvor verworfenes Modifier.ripple. „Anklickbar“ verwendet jetzt Ripple als Standardanzeige (wenn Sie in Ihrer Anwendung ein MaterialTheme {} festgelegt haben). In den meisten Fällen können Sie also einfach „anklickbar“ verwenden und die Ripple-Anzeige kostenlos erhalten. Wenn Sie den Parameter color / size / bounded für die Verbreitung anpassen müssen, können Sie manuell eine RippleIndication erstellen und als Indication-Parameter an anklickbar übergeben. (I663b2, b/155375067)
- Veraltete APIs für Größentests wurden entfernt. (Iba0a0)
- Experimentelle LayoutNode-API erstellt (I4f2e9)
- Die Version 1 der Sperre für die Scrollausrichtung wurde in Compose implementiert. (I1ce7a, b/150289741)
- Pop-ups, Dialogfelder und Menüs übernehmen jetzt das kontextbezogene MaterialTheme (Ia3665, b/156527485).
- Der Layout-Richtungsparameter wurde aus dem Messblock der Layout()-Funktion entfernt. Die Layoutrichtung ist jedoch innerhalb des Callbacks über das Messungsbereichsobjekt verfügbar (Ic7d9d).
- Add AbsoluteArrangement – ermöglicht die Anordnung der untergeordneten Elemente innerhalb der Zeile ohne automatische Spiegelung in RTL (I3a1df)
- Die Anmerkung „@Untracked“ wurde eingestellt. Durch @ComposableContract(tracked=false) ersetzen (Id211e)
- Vor dieser Änderung hat das Compiler-Plug-in Aufrufe an Konstruktoren innerhalb einer @Composable-Funktion nicht trivilegisch abgefangen, wenn ein (I5205a, b/158123804) vorhanden war.
- Fügen Sie eine zusammensetzbare Funktion
viewModel()
hinzu, um ViewModel ähnlich wie in Activity oder Fragment (I5fdd1) zu erstellen oder bereits erstellte ViewModel-Modelle zu erstellen. Die Radiusklasse wurde in eine Inline-Klasse geändert. Methoden zur Companion-Erstellung wurden zugunsten des Funktionskonstruktors mit Standardparametern entfernt, sodass der Radius entlang der Y-Achse dem obligatorischen Radiusparameter der X-Achse entspricht.
DrawScope.drawRoundRect verwendet jetzt einen einzelnen Radius-Parameter anstelle von zwei separaten Gleitkommawerten für den Radius entlang der x- und y-Achse (I46d1b).
Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem für Pixelparameter nur Dp und primitive Typen verwendet werden. Vollständige Px-Klasse gelöscht (I3ff33)
Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem für Pixelparameter nur Dp und primitive Typen verwendet werden (I086f4).
Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem für Pixelparameter nur Dp und primitive Typen verwendet werden (Id3434).
Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem für Pixelparameter nur Dp und primitive Typen verwendet werden (I97a5a).
Der Cursor von TextField blinkt (Id10a7).
Für Teilgesten muss kein GesteToken mehr weitergegeben werden (Id7ae5).
Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem für Pixelparameter nur Dp und primitive Typen verwendet werden (I57bff).
„modifier.semantics“ wurde nicht mehr eingestellt, um die Verwendung von übergeordneten Komponenten zu ermöglichen. (I4cfdc)
Benennen Sie AnnotatedString.Builder.addAnnotationString in addStringAnnotation um. (I5059e)
Ausrichtungs-API wurde aktualisiert und Unterstützung für die absolute Ausrichtung hinzugefügt (die im Rtl-Kontext nicht automatisch gespiegelt wird) (I38cd3).
Untergeordnete Layout- und LayoutModifier-Elemente können mit einer anderen Layout-Richtung gemessen werden. (Ibd731)
ImagePainter zusätzlichen optionalen rect-Parameter hinzufügen, um das Zeichnen eines Unterabschnitts des zugrunde liegenden ImageAsset (I0ea9e) zu unterstützen
Absturz in AdapterList beim Entfernen von Elementen behoben (Ic64b0, b/153195921)
Wir haben geändert, wie das erste Layout gemessen wird, das Sie im activity.setContent { }-Block einfügen. Bisher war es erforderlich, den gesamten Bildschirm der Aktivität auszufüllen. Jetzt verhält es sich so, als würden Sie Ihr Layout in einem Stack platzieren: Es kann kleiner als ein Bildschirm sein und wird oben links positioniert. Wenn Sie das bisherige Verhalten verwenden möchten, können Sie Modifier.fillMaxSize() auf Ihr Layout anwenden. (Ie88a7, b/153453714)
Das Modul ui-text-compose wurde in ui-text umbenannt. ui-text enthält jetzt zusammensetzbare Funktionen für CoreText und CoreTextField (Ib7d47).
Modul ui-text wurde in ui-text-core umbenannt (I57dec).
Die zusammensetzbaren Funktionen „ui-framework/CoreText“ und „CoreTextField“ wurden zu „ui-text-compose“ verschoben. Sie können ui-text-compose in Ihr Projekt aufnehmen. (I32042)
runOnIdleCompose
undrunOnUiThread
sind jetzt globale Funktionen anstelle von Methoden in ComposeTestRule. (Icbe8f)[Mutable]Operatoren von Status-Property-Delegationen wurden in Erweiterungen verschoben, um Optimierungen für Kotlin 1.4-Property-Delegationen zu unterstützen. Aufrufer müssen Importe hinzufügen, um
by state { ... }
oderby mutableStateOf(...)
weiterhin verwenden zu können. (I5312c)„DawLayerModifier“ und „drawLayer()“ sind jetzt standardmäßig von „clipToBounds“ und „clipToOutline“ auf „false“ gesetzt. (I0eb8b, b/152810850)
LayoutResult wurde in MeasureResult umbenannt. (Id8c68)
Veraltete zusammensetzbare Funktion aus dem Center. Er sollte entweder durch den Modifikator „LayoutSize.Fill + LayoutAlign.Center“ oder durch eine der zusammensetzbaren Funktionen „Box“ oder „Stack“ mit geeigneten Modifikatoren ersetzt werden (Idf5e0).
LayoutFlexible wurde in LayoutWeight umbenannt. Zum Ausfüllen muss enger Parameter umbenannt werden. (If4738)
DrawVector wurde von einer normalen zusammensetzbaren Funktion geändert und gibt nun einen ModifierdrawVector() zurück, mit dem der Vektor als Hintergrund für ein Layout gezeichnet wird. (I7b8e0)
Ersetzen Sie die zusammensetzbare Funktion „Clip“ durch den Modifikator „drawClip()“. „DawClipToBounds“ ist ein praktischer Modifikator, den Sie verwenden können, wenn Sie nur mit einer Rechteckform an die Ebenengrenzen fixieren müssen. (If28eb)
Die zusammensetzbare Funktion „DawShadow“ wurde durch den Modifikator „drawShadow()“ ersetzt. Schatten werden jetzt in LayerModifier gezeichnet. (I0317a)
androidx.compose.ViewComposer wurde nach androidx.ui.node.UiComposer androidx.compose.Emittable verschoben. Es war redundant mit ComponentNode. androidx.compose.ViewAdapters wurde entfernt. Sie werden nicht mehr unterstützt. Compose.composeInto wurde eingestellt. Verwende stattdessen
setContent
odersetViewContent
. „Compose.disposeComposition“ wurde eingestellt. Verwenden Sie stattdessen die Methodedispose
für die vonsetContent
zurückgegebeneComposition
. androidx.compose.Compose.subcomposeInto wurde in androidx.ui.core.subcomposeInto verschoben. ComponentNode#emitInsertAt wurde in ComponentNode#insertAt ComponentNode#emitRemoveAt umbenannt in ComponentNode#removeAt ComponentNode#emitMode umbenannt in Component0#moveIdefComponentNode0.Idef.Eingestellte Zusammensetzbare Funktion. Er kann entweder mit dem LayoutAlign-Modifikator oder durch die zusammensetzbare Funktion "Stack" (Ib237f) ersetzt werden.
Die Layoutrichtung wird vom übergeordneten Layoutknoten auf die untergeordneten Elemente übertragen. Modifikator für Layoutrichtung wurde 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 von mehreren Modifier-Instanzen gemeinsam genutzt werden kann (I7195b).
Unterstützung von rechts nach links im LayoutPadding-Modifikator (I9e8da)
Density und DensityScope wurden in einer Schnittstelle zusammengeführt. Anstelle von „AmbientDensity()“ können Sie jetzt „DensityAmbient.current“ verwenden. Anstelle von mitDensity(density) nur mit(density) (I11cb1)
ValueHolder-Klasse entfernt. Die Klassen "animateValue" und "animateFloat" wurden umstrukturiert, um das Feld für den Animationswert abzustrahieren, sodass Unterklassen die Wertaktualisierung beobachten können.
- Es wurden Modellklassen für animateValue, animateFloat usw. hinzugefügt.
- Es wurde ein neuer Satz einfacher @Composable-API zur Animation zwischen Werten hinzugefügt.
- (I79530)
Nicht abwärtskompatible Änderungen an der Ambients API. Weitere Informationen finden Sie in der Protokoll- und
Ambient<T>
-Dokumentation (I4c7ee, b/143769776).Die von Placeable#get(AlignmentLine) zurückgegebenen Int-Positionen der Ausrichtungszeile sind jetzt nicht null. Wenn die abgefragte Ausrichtungszeile fehlt, wird „AlignLine.Unspecific“ zurückgegeben. (I896c5, b/158134875)
Ein ConstraintLayout-Fehler, der bei Neuzusammensetzungen zu Abstürzen führte, wurde behoben. (Ibee5a, b/158164341)
Die nachgestellte Lambda API mit Einschränkungen wurde geändert. Jetzt hat es anstelle von zwei Parametern einen Empfängerbereich, der zusätzlich zu den Einschränkungen und „layoutDirection“ die Eigenschaften „minWidth“, „maxWidth“, „minHeight“ und „maxHeight“ in dp bereitstellt (I91b9a, b/149979702).
LayoutModifier2 wurde in LayoutModifier umbenannt. (Id29f3)
Die Funktionen für intrinsische Messungen in Layout und LayoutModifier2 verfügen jetzt über einen IntrinsicMeasureScope-Empfänger, der nun eine intrinsische Abfrage-API mit implizit übernommener Layout-Richtung bereitstellt. (ID9945)
LayoutDirectionAmbient wurde eingestellt. Um die durch die Sprache definierte Layoutrichtung zu lesen, verwenden Sie „localLayoutDirection“ in ConfigurationAmbient (I851b1).
PositionInParent und boundsInParent für LayoutCoordinates wurden hinzugefügt. (Icacdd, b/152735784)
Die zusammensetzbare Funktion „ParentData“ wurde eingestellt. Sie sollten entweder einen Modifikator erstellen, der die ParentDataModifier-Schnittstelle implementiert, oder den LayoutTag-Modifikator verwenden, wenn Sie lediglich die untergeordneten Layout-Elemente mit einem Tag versehen müssen, damit sie innerhalb des Messwertblocks erkannt werden. (I51368, b/150953183)
Fügen Sie „OnPositionedModifier“ und „OnChildPositionedModifier“ hinzu, um die zusammensetzbaren Funktionen „OnPositioned“ und „OnChildPositioned“ zu ersetzen. (I2ec8f)
Negativer Abstand in LayoutPadding nicht zulassen Für negative Positions-Offsets sollte stattdessen LayoutOffset verwendet werden. (Ifb5b1)
WithConstraints hat den LayoutDirection-Parameter erhalten (I6d6f7)
Das Flag
ComposeFlags.COMPOSER_PARAM
wurde auftrue
aktualisiert. Dadurch wird die Strategie zur Codegenerierung für das Editor-Plug-in geändert. Auf übergeordneter Ebene werden @Composable-Funktionen mit einem zusätzlichen synthetischen Parameter generiert, der an nachfolgende @Composable-Aufrufe übergeben wird, damit die Laufzeit die Ausführung ordnungsgemäß verwalten kann. Dies ist eine erhebliche funktionsgefährdende Änderung, die jedoch bei jeder genehmigten Verwendung des Editors auf Quellebene die Kompatibilität beibehalten sollte. (I7971c)LayoutCoordinates wurde geändert, um providedAlignmentLines zu einem Set statt zu einer Karte zu machen und durch LayoutCoordinates stattdessen den Operator get() zum Abrufen eines Werts zu implementieren. So können Modifikatoren einen oder mehrere Werte des Satzes leichter ändern, ohne für jeden Modifikator eine neue Sammlung erstellen zu müssen. (I0245a)
LayoutCoordinates verfügt nicht mehr über eine Positionseigenschaft. Die Positionseigenschaft ist in Bezug auf LayoutModifier, Rotation oder Skalierung nicht sinnvoll. Stattdessen sollten Entwickler die Umwandlung von LayoutCoordinates in ein anderes mit „parentCoordinates“ und „childToLocal()“ verwenden.
LayoutCoordinates verwendet IntPxSize für die Größeneigenschaft anstelle von PxSize. Layouts verwenden ganzzahlige Pixelgrößen für Layouts. Daher sollten alle Layoutgrößen Ganzzahlen und keine Gleitkommawerte verwenden. (I9367b)
Verbesserungen an der API-Oberfläche von Einschränkungen (I0fd15)
TextDirection.Content wurde hinzugefügt (I48f36)
Verschieben Sie das Symbolleisten-Menü an die gewünschte Position, um die Optionen zum Kopieren, Ausschneiden und Einfügen richtig anzuzeigen. (ID3955)
Fügen Sie FloatingToolbar für die TextField-Auswahl hinzu. (Ie8b07)
TextDirectionAlgorithm wurde in TextDirection (I75ce8) umbenannt
TextDirection wurde in ResolvedTextDirection umbenannt (I3ff38).
HapticFeedback zur Textfeldauswahl hinzufügen. (I58050)
Fügen Sie der TextField-Auswahl Methoden zum Kopieren, Ausschneiden und Einfügen hinzu. (Idb70b)
TestTag und Semantik 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 (I8132c) geändert.
API-Änderung:
AnnotatedString(builder: Builder)
wurde inannotatedString(builder: Builder)
umbenannt. (Ia6377)API-Änderung:
AnnotatedString.Item
wurde inAnnotatedString.Range
umbenannt. (I2d44d)Symbolleiste für textbezogene Vorgänge hinzufügen. (I49d53)
Der neue LifecycleOwnerAmbient ist jetzt verfügbar. Jetzt sollte eine Aktivität, die Sie mit der Benutzeroberfläche zum Schreiben verwenden, androidx.activity.ComponentActivity (oder AppCompatActivity) erweitern. „setContent“ für „android.app.Activity“ wurde eingestellt (Idb25a, b/153141084).
Paketname „ui-android-text“ (androidx.text) durch „androidx.ui.text.platform“ ersetzt, um der Androidx-Richtlinie zu entsprechen. (I42711)