Compose-Grundlagen
Letzte Aktualisierung | Stabile Version | Releasekandidat | Beta-Ausgabe | Alpharelease |
---|---|---|---|---|
1. Mai 2024 | 1.6.7 | − | − | 1.7.0-alpha08 |
Struktur
Compose ist eine Kombination aus sieben Maven-Gruppen-IDs in androidx
. Jede Gruppe enthält eine ausgewählte 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 Nutzererfahrung zu verbessern. |
compose.compiler | @Composable-Funktionen transformieren und Optimierungen mit einem Kotlin-Compiler-Plug-in aktivieren |
compose.foundation | Schreiben Sie Jetpack Compose-Anwendungen mit einsatzbereiten Bausteinen und erweitern Sie die Grundlage, um Ihre eigenen Designsystemteile zu erstellen. |
compose.material | Erstellen Sie Jetpack Compose-Benutzeroberflächen mit einsatzbereiten Material Design-Komponenten. Das ist der übergeordnete Einstiegspunkt von Compose. Hier stellen wir Komponenten bereit, die den unter www.material.io beschriebenen entsprechen. |
compose.material3 | Erstellen Sie Jetpack Compose-Benutzeroberflächen mit Material Design 3 Components, der nächsten Entwicklung des Material Design. Material 3 enthält aktualisierte Designs und Komponenten sowie Personalisierungsfunktionen wie dynamische Farben. Das Design ist an den visuellen Stil und die System-UI von Android 12 angepasst. |
compose.runtime | Grundlegende Bausteine des Programmiermodells und der Statusverwaltung von Compose sowie der Kernlaufzeit für das Targeting des Compiler-Plug-ins „Compose“. |
compose.ui | Grundlegende Komponenten der Editor-UI, die für die Interaktion mit dem Gerät erforderlich sind, einschließlich Layout, Zeichnung und Eingabe. |
Abhängigkeiten deklarieren
Zum Hinzufügen einer Abhängigkeit von Compose müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.
Fügen Sie der Datei build.gradle
für Ihre Anwendung oder Ihr Modul die Abhängigkeiten für die benötigten Artefakte hinzu:
Groovig
dependencies { implementation "androidx.compose.foundation:foundation:1.6.7" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.13" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.6.7") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.13" } 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. Lassen Sie uns wissen, wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie eine neue erstellen. Durch Klicken auf die Stern-Schaltfläche können Sie zu einem vorhandenen Problem abstimmen.
Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.
Version 1.7
Version 1.7.0-alpha08
1. Mai 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha08
wird freigegeben. Version 1.7.0-alpha08 enthält diese Commits.
Neue Funktionen
- Für
BasicTextField
undSelectionContainer
wurde ein Kontextmenü mit den Elementen zum Ausschneiden, Kopieren, Einfügen und Auswählen aller Aktionen hinzugefügt. (If8c93, Ia2b49, I6f268)
API-Änderungen
LazyLayout
-Prefetch-Anfragen können jetzt als dringend markiert werden. Das bedeutet, dass dieses Element im nächsten Frame benötigt wird und wir das Frame-Budget ignorieren möchten, um sicherzustellen, dass wir mehr Aufgaben im Voraus erledigen können (Id513f).isPositionedByParentWithDirectManipulation
wurde inintroducesFrameOfReference
umbenannt. Jetzt hat sie den umgekehrten Effekt. Das bedeutet, dass die meistenLayoutCoordinates
standardmäßig einen Bezugsrahmen einbringen und die Eigenschaft nur bei direkter Bearbeitung falsch ist. Um die Position nur mit den Abfragen abzufragen, die einen Bezugsrahmen beinhalten, verwenden SiepositionInLocalFrameOfReference(...)
. OderpositionInLocalLookaheadFrameOfReference
vonLookaheadScope
. Ifc5f7onClicked
wurde inLinkInteractionListener
(Iaa35c) inonClick
umbenannt- Lambda-Aktion für
getScrollViewportLength
gemäß dem Feedback des API-Berats ändern. (Ibc74a) - Umbenennung der APIs zum Delegieren von Schreiben mit Eingabestiften. (Ica45f, b/327271923)
- Benennen Sie
TextInclusionStrategy.isInside
inisIncluded
um. Der RückgabetypParagraph/MultiParagraph#getRangeForRect()
darf keine Nullwerte enthalten. (I51f26)
Fehlerkorrekturen
- Allen Text-Kontextmenüs in
SelectionContainer
wurde die Option „Alle auswählen“ hinzugefügt. (Ib750e, b/240143283) - Problem mit langer Screenshotaufnahme von scrollbaren Containern mit
reverseScrolling=true
wurde behoben. (I7c59c) - Ein Problem wurde behoben, bei dem sich
currentValue
vonAnchoredDraggableState
änderte, wenn sich die Grenzen des Bundesstaates nähern. (Iea30b, b/333846848)
Externer Beitrag
PrefetchExecutor
->PrefetchScheduler
wurde umbenannt, um die Zuständigkeiten besser widerzuspiegeln. (Ib9154)- Unterstützung für den Vorabruf von Elementen in verschachtelten
LazyLists
wurde hinzugefügt, z.B. einLazyColumn
, das das verschachtelteLazyRows
rendert. Durch diese Änderung wird erwartet, dass Frame-Drops 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
wird freigegeben. Version 1.7.0-alpha07 enthält diese Commits.
Neue Funktionen
- Ein
TextDefaults
-Objekt wurde hinzugefügt, das Methoden zum Erstellen einerLinkAnnotation
und zum Parsen von HTML-getaggten Strings enthält, mit denenMaterialTheme
auf die Links angewendet wird. (I98532, b/139312671) - Unter „
LazyVerticalGrid
“ und „LazyHorizontalGrid
“ wurde die Unterstützung für die Darstellung und das Verschwinden von Elementen 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: Darstellung (Einblenden), Verschwinden (Ausblenden) und Neuanordnen. (Ib7d12, b/330510929) - Unter „
LazyVerticalStaggeredGrid
“ und „LazyHorizontalStaggeredGrid
“ wurde die Unterstützung für das Erscheinungsbild und das Verschwinden von Elementen unterstützt. 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: Darstellung (Einblenden), Verschwinden (Ausblenden) und Neuanordnen. (I69bc9, b/330511290)
API-Änderungen
- Fügt
ContextMenuColors
und die zugehörigeLocalContextMenuTheme
-ProvidableCompositionLocal
hinzu. Die Farben des Kontextmenüs für Textfelder und auswählbarer Text können durch Angabe der lokalen Komposition geändert werden. (Ifa154) - Neben der normalen Formatierung wurde für Textlinks auch die Stiloption für den betätigten Zustand gedrückt, bei der der Mauszeiger auf ein Objekt bewegt wurde und der Fokus darauf gelegt wurde. (I5f864, b/139312671)
- Stell
ViewConfiguration.HandwritingGestureLineMargin
für handschriftliche Touch-Gesten vor. Handschriftgesten fürBasicTextField
werden unterstützt. (Ie6e13, b/325660505) DelegatableNode.scrollIntoView
für Version 1.7 wurde entfernt, da wir keine Zeit hatten, den Rest der zugehörigen API-Oberfläche zu stabilisieren. Diese Funktion wird in Version 1.8 wieder eingeführt (I6cf61, b/333421581, b/332900232).- Beim Abfragen von Layoutkoordinaten können Sie jetzt das Argument
excludeDirectManipulationOffset
verwenden, um den von übergeordneten Layouts festgelegten Versatz auszuschließen, bei dem die untergeordneten Layouts mitPlaceable.PlacementScope.withDirectManipulationPlacement
platziert wurden. Ebenso kann ein Layout, bei dem die Position seiner untergeordneten Elemente häufig geändert wird, jetzt mithilfe vonwithDirectManipulationPlacement
platziert werden (z. B. „Scrollen“, das standardmäßig implementiert ist). Animationen mitapproachLayout
sind dadurch intuitiver. Sie können jetzt unterscheiden, welcher Offset animiert werden soll und was direkt angewendet werden soll, wenn der Ansatz animiert wird. (I60ec7) - Stelle
requestScrollToItem
fürLazyStaggeredGrid
vor. Für jeden Durchlauf der Messung kann der Client jetzt die Pflege des Index auf Grundlage des Schlüssels ablehnen, indem errequestScrollToItem
aufruft. Dadurch ändert sich das vorhandene Verhalten nicht, es sei denn,requestScrollToItem
wird aufgerufen. (I63983) - Stelle
requestScrollToPage
in Pager vor. Für jeden Durchlauf der Messung kann der Client jetzt die Pflege des Index auf Grundlage des Schlüssels ablehnen, indem errequestScrollToPage
aufruft. Dadurch ändert sich das vorhandene Verhalten nicht, es sei denn,requestScrollToPage
wird aufgerufen. (Ic4213) requestScrollToItem
fürLazyGrids
eingeführt. Für jeden Durchlauf der Messung kann der Client jetzt die Pflege des Index auf Grundlage des Schlüssels ablehnen, indem errequestScrollToItem
aufruft. Dadurch ändert sich das vorhandene Verhalten nicht, es sei denn,requestScrollToItem
wird aufgerufen. (I0a7a0)ClickableText
wurde als verworfen markiert. Wenn Sie dem Text Links hinzufügen möchten, erstellen Sie einAnnotatedString
mit einemLinkAnnotation
, das Ihrem Link entspricht, und übergeben Sie diesesAnnotatedString
an die zusammensetzbare FunktionText
(I34d4b, b/323346994).UrlAnnotation
wurde eingestellt. Verwende stattdessenLinkAnnotation.Url
. Wenn Sie Material-Themen verwenden, erstellen Sie mithilfe desTextDefaults
-Objekts die Anmerkung mit Material-Design (I8d180, b/323346545).String.parseAsHtml
umbenannt inAnnotatedString.Companion.fromHtml
(I43dcd)- Der
parseAsHtml
-Methode wurden Stilargumente (linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) und ein Link-Interaktions-Listener hinzugefügt. Beim Parsen des HTML-getaggten Strings mit<a>
-Tags wird mit der Methode für jedes solche Tag einLinkAnnotation.Url
erstellt. Dabei werden die Stilobjekte und der Link-Interaktions-Listener an jede Annotation übergeben. (I7c977) - Für
LinkAnnotation
werden jetzt die zustandsbasierten Stilargumente und einLinkInteractionListener
verwendet. Fügen Sie diese Annotation demAnnotatedString
hinzu, um einen Hyperlink zu erhalten. Durch Übergeben vonfocusedState
und/oderhoveredState
können Sie die visuelle Konfiguration für Links definieren, wenn sie fokussiert sind und/oder der Mauszeiger darauf bewegt wird. (I81ce4, b/139312671) - Die Funktions-Flag für lange Screenshots wurde entfernt. (I28648, b/329128246)
LazyColumn
rendert fixierte Header in langen Screenshots jetzt korrekt. (I8d239, b/329296635)- Die meisten der verbleibenden experimentellen APIs, die mit der neuen
BasicTextField
eingeführt wurden, wurden stabilisiert. (I714e2) - Der Parameter
textObfuscationCharacter
wurde zuBasicSecureTextField
hinzugefügt. Er steuert, welches Zeichen bei der Verschleierung des Inhalts verwendet werden soll. (I0588b) - Drag-and-Fling-Quellen für
NestedScroll
werden durchUserInput
undSideEffect
ersetzt, um die erweiterte Definition dieser Quellen zu ermöglichen, die jetzt Animationen (Nebeneffekt) sowie Mausrad und Tastatur (UserInput
) enthalten. (I40579) - Stell
LocalBringIntoViewSpec
vor, ein plattformabhängiges Scrollverhalten, das auf der Ebene des scrollbaren Modifikators angewendet wird. (I27aa5, b/317453911) TextFieldCharSequence
wurde entfernt.TextFieldBuffer.originalValues
wird durchTextFieldBuffer.originalText
undTextFieldBuffer.originalSelection
ersetzt. (I2c7d6)- Für
ImeOptions.hintLocales
sind keine Nullwerte mehr zulässig. Wenn du eine leere Gebietsschemaliste übergeben möchtest, verwendeLocaleList.Empty
. (Ic5bc4) getOffsetFractionForPage
wurde ingetOffsetDistanceInPages
umbenannt. (Ia05e2)
Fehlerkorrekturen
- Wenn
InputTransformations
mitnext
verknüpft wird, werden ihreKeyboardOptions
jetzt mithilfe der neuenKeyboardOptions.merge
-Methode korrekt durch die einzelnen Optionen zusammengeführt. (Ie5304, b/295951492) targetValue
vonAnchoredDraggableState
berücksichtigt jetzt keine Positionsschwellen mehr. Sie hat jetzt einen impliziten Schwellenwert von 50%, was bedeutet, dass sichtargetValue
beim Mittelpunkt zwischen zwei Ankern ändert. (I82c2c)
Externer Beitrag
- 2 Scroll-APIs wurden umbenannt (I56a75)
Version 1.7.0-alpha06
3. April 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha06
wird freigegeben. Version 1.7.0-alpha06 enthält diese Commits.
Neue Funktionen
- Unter „
LazyColumn
“ und „LazyRow
“ wurde die Unterstützung für das Erscheinungsbild und das Verschwinden von Elementen unterstützt. 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: Darstellung (Einblenden), Verschwinden (Ausblenden) und Neuanordnen. (I2d7f7, b/150812265) - Clients von
LazyColumn/LazyRow
können jetzt die Verwaltung eines Index basierend auf dem Schlüssel für den anstehenden Messwertdurchlauf ablehnen, indem sie eineLazyListState.requestToScroll
ohne Sperrung aufrufen. (I98036, b/209652366) - Die
parseAsHtml
-Methode für Strings mit benutzerdefinierten Stilen wurde hinzugefügt: Mit ihr kann ein mit HTML-Tags gekennzeichneter String inAnnotatedString
konvertiert werden. Nicht alle Tags werden unterstützt. Sie können beispielsweise noch keine Aufzählungslisten anzeigen. (I84d3d) - Implementierung der experimentellen Unterstützung für lange Screenshots in Compose-Scrollcontainern mit der offiziellen Android API (
ScrollCaptureCallback
). Diese Funktion ist experimentell und wird möglicherweise nicht in allen Fällen richtig verarbeitet. Aus diesem Grund ist sie derzeit standardmäßig deaktiviert. Legen Sie für die Aktivierung 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 beim Placement und Rendern vonGraphicsLayer
-Instanzen zu bieten und intrinsische Renderingfunktionen zu unterstützen, ohne dass eine Koordination mit zusammensetzbaren Implementierungen erforderlich ist, umGraphicsLayer
-Modifikatorinstanzen anzugeben.
API-Änderungen
- Alle
KeyboardOptions
-Parameter haben jetzt standardmäßig einen nicht angegebenen Wert. Die MethodeKeyboardOptions.merge
wurde hinzugefügt. KeyboardOptions.autoCorrect
wurde inautoCorrectEnabled
umbenannt und Nullwerte zulässig, wobei null anzeigt, 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. BevorzugensnapshotFlow { state.text }
odersnapshotFlow { TextFieldCharSequence(state.text, state.selection) }
(I7d629)InputTransformation.transformInput
-Parameter neu strukturiert. „originalValue: TextFieldCharSequence
“ wurde entfernt. Stattdessen hatTextFieldBuffer
diesen Wert jetzt unter demselben Namen. Außerdem wurde der ParametervalueWithChanges: TextFieldBuffer
entfernt.TextFieldBuffer
ist jetzt der Empfängerbereich für die Funktion. (I919cc)- Die Variante
BasicTextField(state)
undBasicSecureTextField
verwenden jetztKeyboardActionHandler
anstelle vonKeyboardActions
, um Aktionen der Softwaretastatur zu verarbeiten. (I58dda) - APIs für die Delegierung der Eingabestift-Handschrift, um die Eingabe falscher Texteingabefelder mit Eingabestiften zu unterstützen (I9c09c, b/327271923)
KeyboardOptions.shouldShowKeyboardOnFocus
wurde inshowKeyboardOnFocus
umbenannt. (Ib4b7a, b/295951492)- Der Parameter
hintMediaTypes
wurde ausModifier.contentReceiver
entfernt. Entwickler wurden bereits empfohlen, den Medientyp des empfangenenTransferableContent
zu prüfen, da er möglicherweise nicht mit der konfiguriertenhintMediaTypes
kompatibel ist. (I82f99) - Die Parameter von
BasicSecureTextField
wurden neu geordnet. DiekeyboardType
- undimeAction
-Parameter wurden zugunsten der vollständigenKeyboardOptions
-Klasse entfernt, aber die Standardwerte fürBasicSecureTextField
wurden beibehalten. Außerdem wurde der ParameterscrollState
entfernt. (Ibbfa9) - Der Typ von
TextFieldState.text
wird vonTextFieldCharSequence
in nurCharSequence
geändert. Daher wurdenTextFieldState.selection: TextRange
undTextFieldState.composition: TextRange?
hinzugefügt, um die aktuellen Auswahl- und Zusammensetzungswerte direkt aus dem Statusobjekt 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üfe 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 löschen zu können. (I7d2e9)ReceiveContentListener
wird in eine Funktionsschnittstelle konvertiert. Außerdem wird dieModifier.receiveContent
-Überlastung, die ein Lambda aufnimmt, entfernt, daReceiveContentListener
jetzt eine Funktionsschnittstelle ist.Modifier.receiveContent
wurde inModifier.contentReceiver
umbenannt. (I1e6af)TransferableContent.consumeEach
wurde inTransferableContent.consume
umbenannt. (I1e462)rememberTextFieldState
wurde auf eine stabile API umgestellt. (I37999)
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem die Variante
BasicTextField(state)
nicht mit CJK-Tastaturen(auf Kompositionsbasis) funktionierte. (I54425) - Es wurde ein Fehler behoben, bei dem
Modifier.dragAndDropTarget()
in bestimmten Szenarien auf veraltete Daten verweisen konnte, wobeiModifier.Node
wiederverwendet wurde. (I05bb1) - Es wurde eine kürzlich erfolgte Vertragsänderung rückgängig gemacht, bei der
AnchoredDraggableState#anchoredDrag
-Aufrufe am Ende einesanchoredDrag
-Vorgangs ausgelöst wurden. (I95715)
Version 1.7.0-alpha05
20. März 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha05
wird freigegeben. Version 1.7.0-alpha05 enthält diese Commits.
API-Änderungen
- Die lokale experimentelle
LocalTextLinkStyle
-Komposition für die Gestaltung von Hyperlinks wurde entfernt. (Iebfa7) - Die experimentelle Überschreibung von
BasicText
mit dem ArgumentonLinkClicked
wurde entfernt. Eine Ersatz-API für die Unterstützung von Hyperlinks wird in Zukunft folgen. (I107d5) - Methoden und Eigenschaften für Codepunkte unter
TextFieldState
undTextFieldBuffer
wurden entfernt. Außerdem wurden dieinChars
-Suffixe aus den verbleibenden auswahl- und zusammensetzungsbezogenen APIs entfernt. (Ief7ce) currentValue
vonAnchoredDraggable
wird jetzt beim Durchlaufen eines Ankerpunkts aktualisiert. Verwenden SiesettledValue
, um die vorherigecurrentValue
-Semantik zu erhalten. Wird nur aktualisiert, wenn Sie sich an einem Anker befinden. Der Fortschritt wird jetzt als Funktion angezeigt, die einen Start- und Endpunkt erfordert, und nicht mehr als eine Eigenschaft. (Ibe6e8, b/318707189, b/298271489, b/294991954)BasicTextField(state)
,TextFieldState
,InputTransformation
,OutputTransformation
,TextFieldLineLimits
undTextFieldDecorator
wurden auf die stabile Version umgestellt. (I9582b)- Einführung von
InterceptPlatformTextInput
zur Unterstützung beim Schreiben von Low-Level-IME-bezogenen Tests und anderen Low-Level-IME-Anwendungsfällen.PlatformTextInputTestOverride
wurde eingestellt. (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 letzte Scrollaktion zu prüfen. Gib „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
wird freigegeben. Version 1.7.0-alpha04 enthält diese Commits.
API-Änderungen
- Unterstützung für die Handschriftfunktion mit Eingabestift auf Geräten ab Android U. (I002e4)
hintLocales
wurde zuKeyboardOptions
hinzugefügt, umTextFields
die Möglichkeit zu geben, IMEs mit bestimmten Gebietsschemata anzugeben, um eine bevorzugte Sprache vorzugeben. (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 Änderungsliste fügen wir die semantische Aktion
GetScrollViewportLength
hinzu, damit wir Informationen über die Komponenten, die beim Schreiben gescrollt werden, an das a11y-System übergeben können. In dieser Änderungsliste wird die Verwendung dieser Eigenschaft auch in scrollbaren Fundament-Listen angewendet. (Ic5fa2) BasicTextField2
wurde inBasicTextField
umbenannt. (Ie5713)FocusRequester.createRefs
ist jetzt stabil (I4d92c, b/261436820)DelegatableNode.scrollIntoView()
wurde eingeführt, damit ModifikatorknotenscrollIntoView
-Anfragen direkt senden können. (I2b3b7, b/299939840)DelegatableNode.requireView()
wurde eingeführt, damit Modifikatorknoten die aktuelle Android-View
abrufen können, ohne eine lokale Komposition zu lesen. (I40768)- Einführung von kontextbezogenen Layoutinformationen im Zeilenbereich des Kontexts und Spaltenbereich des Kontexts mit Linienindex, Position und Einschränkungen für maximale Breite und Höhe, um an der angegebenen Position zu bleiben. Elemente, die die maximale Breite/Höhe überschreiten, können in die nächste Zeile übergehen oder aufgrund von Überlaufeinstellungen weggelassen werden. (Id13f8, b/292114798)
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem das Umschalten der
enabled
- oderreadOnly
-Attribute vonTextField
unter bestimmten Bedingungen einen Absturz verursachte. (Iae17b)
Version 1.7.0-alpha03
21. Februar 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha03
wird freigegeben. Version 1.7.0-alpha03 enthält diese Commits.
API-Änderungen
DelegatableNode.requireLayoutCoordinates()
wurde eingeführt, um den aktuellenLayoutCoordinates
einerModifier.Node
zu erhalten, ohneonPlaced
überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Ia8657)DelegatableNode.currentLayoutCoordinates
wurde eingeführt, um den aktuellenLayoutCoordinates
einerModifier.Node
zu erhalten, 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
wurden nachandroidx.compose.foundation.text
verschoben. (I9f635)BasicTextField2
akzeptiert keinenCodepointTransformation
-Parameter mehr. Verwenden SieBasicSecureTextField
oderOutputTransformation
. (Id34ff)- Es wurde eine Methode hinzugefügt, um nur die Anmerkungen von zwei
AnnotatedStrings
zu vergleichen. (I32659) - Jetzt neu:
ContextualFlowRow
und erweiterteFlowRow
/Column
mitMaxLines
undOverflow
. Wir freuen uns, neben der Einführung vonContextualFlowRow
undContextualFlowColumn
Verbesserungen an den experimentellen Funktionen vonFlowRow
undFlowColumn
ankündigen zu können, die jetztmaxLines
- und Überlauf-Unterstützung enthalten. Mit diesem Update sollen Komponenten zur Leistungsoptimierung bereitgestellt werden. Dabei istContextualFlow*
perfekt für eine große Anzahl von Elementen, bei denen eine kleinemaxLines
-Konfiguration verwendet wird und die dynamische + N mehr Schaltflächen sehen.FlowRow
undFlowColumn
eignen sich perfekt für eine kleine Anzahl von Elementen (unter 100 Elementen). Wichtig: Um das vorhandene Verhalten inFlowRow
oderFlowColumn
beizubehalten, wo sich alle Elemente unabhängig davon zusammensetzen, ob sie auf das Maximum der Kreuzachse passen, setzen Sieoverflow
während der Initialisierung aufFlowRowOverflow.Visible
oderFlowColumnOverflow.Visible
. Sieh dirContextualFlowRowSample
undFlowRowSample
an, um Beispiele für diese neuen Funktionen in Aktion zu sehen. (Ib9135, b/293577082)
Fehlerkorrekturen
- Bei der Cursoranimation werden keine Frames zwischen Ein- und Aus-Zustand mehr angefordert. (Ia2253)
- Die verworfenen 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
wird freigegeben. Version 1.7.0-alpha02 enthält diese Commits.
API-Änderungen
HorizontalPager
,VerticalPager
undPagerState
werden zur stabilen Version hochgestuft. (I67660, b/316966909)- Lokal zur
LocalTextLinkStyle
-Komposition wurde hinzugefügt, mit dem der Stil der Links im Text in der gesamten App geändert werden kann. Wenn Sie in der App ein eigenes Design verwenden, sollten Sie diese lokale Komposition entsprechend Ihrem Design festlegen. Wenn du das Material Design verwendest, wird die Farbe des Links standardmäßig auf die Hauptfarbe von Material festgelegt. (I7eb10) - Einführung des
receiveContent
-Modifikators, mit dem Entwickler Rich-Content in Jetpack Compose empfangen können. receiveContent
lässt sich inBasicTextField2
einbinden, um Rich-Media-Inhalte anzunehmen, die von der Softwaretastatur oder über das Einfügen in der Zwischenablage bereitgestellt werden. (I81b72)- Im Rahmen dieser Änderung ersetzen wir auf Pager
SnapFlingBehavior
durchTargetedFlingBehavior
, um weitere Anwendungsfälle freizuschalten und mehr Flexibilität zu bieten. (I762ea) - Durch diese Änderung machen wir Snapping APIs stabil. Außerdem bereinigen wir einen Teil des Testcodes und fügen weitere Beispiele zu „Snapping“ hinzu. (Id8da9)
- Stell
TargetedFlingBehavior
ein, einFlingBehavior
-Element, mit dem Informationen über den Status der laufenden Animation und den Ziel-Scrollversatz übertragen werden können. (I6a207)
Fehlerkorrekturen
BasicTextField2
behält den Cursor bei der Eingabe jetzt in der Ansicht, wenn er aus dem sichtbaren Bereich gescrollt oder aufgrund einer Eingabe aus dem sichtbaren Bereich verschoben wurde. (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
wird freigegeben. Version 1.7.0-alpha01 enthält diese Commits.
Neue Funktionen
Indication API
wurde neu hinzugefügt:IndicationNodeFactory
. Dies führt zu leistungsstärkerenIndication
-Implementierungen im Vergleich zur vorherigen (inzwischen eingestellten)rememberUpdatedInstance
API. Informationen zur Migration finden Sie 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 SieMutableInteractionSource
nicht aufziehen und verwenden, wird empfohlen, null zu übergeben.
API-Änderungen
- Stell
DecayAnimation
inAnchoredDraggable
vor. Durch diese Änderung wirdAnchoredDraggable
derdecayAnimationSpec
-Parameter hinzugefügt, mit dem die Auslaufanimation verwendet werden kann, wenn der Ankerpunkt festgelegt wird. Die Änderung umfasst auch die Umbenennung des vorhandenenanimationSpec
insnapAnimationSpec
, damit der Anwendungsfall der einzelnen Spezifikationen besser verstanden werden kann. BasicTextField2
ist für experimentelle Zwecke verfügbar. Das Feature sollte ungefähr gleich mit dem Feature vonBasicTextField
sein und das Verhalten sollte produktionsreif sein. Die API ist vorerst aber experimentell. Vor dem Stabilisieren wird es inBasicTextField
umbenannt und in dasselbe Paket verschoben.- Vorstellung des ersten Entwurfs der
OutputTransformation
API fürBasicTextField2
. Diese API ersetzt die meisten Anwendungsfälle vonVisualTransformation
aus der altenBasicTextField
. Sie ist jedoch noch nicht vollständig und einige Vorgänge werden nicht richtig funktionieren. Wir freuen uns jedoch über Feedback zur Nutzungsfreundlichkeit der API in Ihren Anwendungsfällen. (aosp/2708848) LinkAnnotation
wurde eingeführt, mit dem Links und anklickbare Elemente in Text eingefügt werden können. Die Verknüpfungsfunktion ist noch nicht vollständig und weitere API-Änderungen sind geplant.- Einführung des
receiveContent
-Modifikators, mit dem Entwickler Rich-Content in Jetpack Compose empfangen können. receiveContent
lässt sich inBasicTextField2
einbinden, um Rich-Content zu akzeptieren, der über die Softwaretastatur oder per Einfügen aus der Zwischenablage bereitgestellt wird.- Mit
KeyboardOptions.shouldShowKeyboardOnFocus
kannst du das Standardverhalten vonBasicTextField
zum Anfordern einer Softwaretastatur deaktivieren. TextInputService
undLocalTextInputService
wurden eingestellt. Verwenden Sie stattdessenPlatformTextInputModifierNode
, um die IME APIs der Plattform direkt einzubinden. (aosp/2862698)Indication#rememberUpdatedInstance
wurde eingestellt. Sie weist eine unvermeidbare Leistungseinbußen auf und verhindert andere Optimierungen. Stattdessen sollten Sie die neueIndicationNodeFactory
API verwenden.
Fehlerkorrekturen
BasicTextField
validiert jetzt eine kleine Auswahl von Offset-Zuordnungen vorab, wennVisualTransformation
übergeben wird. Dadurch können häufige Codierungsfehler abgefangen werden, die in späteren Messungen oder Zeichnungen zu nicht wiederherstellbaren Ausnahmen führen. Durch das Auslösen während der Zusammensetzung ist die Wahrscheinlichkeit höher, dass Entwickler diese Fehler während der Entwicklung erkennen und so Produktionsabstürze vermeiden können. (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.7
1. Mai 2024
androidx.compose.foundation:foundation-*:1.6.7
wird freigegeben. Version 1.6.7 enthält diese Commits.
Version 1.6.6
17. April 2024
androidx.compose.foundation:foundation-*:1.6.6
wird freigegeben. 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 einen Absturz verursachte. (Iae17b)
Version 1.6.5
3. April 2024
androidx.compose.foundation:foundation-*:1.6.5
wird freigegeben. Version 1.6.5 enthält diese Commits.
Fehlerkorrekturen
- Fügt Debugging-Protokolle zu schwer reproduzierbaren Fehlern in Zeile/Spalte hinzu (b/300280216 und b/297974033)
Version 1.6.4
20. März 2024
androidx.compose.foundation:foundation-*:1.6.4
wird freigegeben. Version 1.6.4 enthält diese Commits.
Fehlerkorrekturen
- Eine Auswahl durch langes Drücken und Ziehen, die sich im ersten Frame des Ziehens aus den Layoutgrenzen des Textes hinausbewegt, stürzt nicht mehr ab. (Icdf90, b/325307463)
Version 1.6.3
6. März 2024
androidx.compose.foundation:foundation-*:1.6.3
wird freigegeben. Version 1.6.3 enthält diese Commits.
Version 1.6.2
21. Februar 2024
androidx.compose.foundation:foundation-*:1.6.2
wird freigegeben. Version 1.6.2 enthält diese Commits.
Fehlerkorrekturen
- Fehler beim Zurücksetzen von
AnimateContentSize
beheben. (I07051) - Problem behoben, bei dem unter bestimmten Umständen
intrinsicHeight
des Textes zu viel im Cache gespeichert wurden. (3cd398, b/217910352)
Version 1.6.1
7. Februar 2024
androidx.compose.foundation:foundation-*:1.6.1
wird freigegeben. Version 1.6.1 enthält diese Commits.
Fehlerkorrekturen
- Das Problem mit der gestaffelten Rastermessung beim Scrollen über das Limit wurde behoben. (bffc39)
- Prüfung auf Layouts mit großen Abmessungen hinzufügen. e74af5:
- Position von Elementen der Größe 0 am Anfang des abgesetzten Rasters wurde korrigiert. (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
wird freigegeben. Version 1.6.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.5.0
- Neuer Modifikator
Modifier.anchoredDraggable
, der das Ziehen und Animieren zwischen vordefinierten Ankern freischaltet. Dieser Modifikator ist ein Ersatz fürModifier.swipeable
. Wie es verwendet und vonModifier.swipeable
migriert wird, erfahren Sie in der Migrationsanleitung. - Es wurde eine Drag-and-drop-Funktion für Apps und Komponenten hinzugefügt. Informationen für den Einstieg finden Sie unter
DragAndDropTarget
,Modifier.dragAndDropSource
und andere APIs. Modifier.draggable2D
ist der neue Modifikator, der das Ziehen von 2D einfach unterstützt. Siehe Beispiel.AndroidExternalSurface
undAndroidEmbeddedExternalSurface
wurden hinzugefügt, um das Hinzufügen oberflächengesteuerter Komponenten in Compose zu vereinfachen- Verschiedene API-Änderungen und -Verbesserungen in
Pager
undsnapFlingBehaviour
- Verschiedene APIs für Fokus, Text und Einsätze wurden zu stabilen APIs hochgestuft.
Version 1.6.0-rc01
10. Januar 2024
androidx.compose.foundation:foundation-*:1.6.0-rc01
wird freigegeben. Version 1.6.0-rc01 enthält diese Commits.
API-Änderungen
- Der Konstruktor der
DragAndDropTarget()
-Erweiterung 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
wird freigegeben. Version 1.6.0-beta03 enthält diese Commits.
Fehlerkorrekturen
- Ein Absturz wurde behoben, der sich auf sehr großen Text mit unendlichen Einschränkungen ausgewirkt hat. (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
wird freigegeben. Version 1.6.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Problem behoben, bei dem
canScroll
nach dem Scrollen nur für das Layout nicht aktualisiert wurde. (I60a86) - Korrektur für
Modifier.animateItemPlacement()
undLookaheadScope
nach kleinen Scrollvorgängen. (I3a2b7)
Version 1.6.0-beta01
15. November 2023
androidx.compose.foundation:foundation-*:1.6.0-beta01
wird freigegeben. Version 1.6.0-beta01 enthält diese Commits.
API-Änderungen
- Der
DragAndDropTarget
-Modifikator übernimmt jetzt die empfangendeDragAndDropTarget
explizit und hat eine Lambda-Funktion, um eine Drag-and-drop-Sitzung zu aktivieren. Es gibt jetzt zwei Werksfunktionen fürDragAndDropModifierNode
. einen für den Empfang von Übertragungen und einen zum Übertragen von Daten (I69481) maximumFlingVelocity
wurde aktualisiert und als Gleitkommazahl dargestellt. Die Dokumentation wurde aktualisiert, um die EinheitmaximumFlingVelocity
klarer darzustellen. (I8adc7)onDragAndDropStart
im WerkDragAndDropModifierNode
wurde inacceptDragAndDropTransfer
umbenannt.acceptsDragAndDropTransfer
wurde zudragAndDropTarget
Modifier
hinzugefügt, um sie aus einer Drag-and-drop-Sitzung zu akzeptieren. Dieses Lambda gibt ein realisierbaresDragAndDropTarget
zurück, wenn an einer Drag-and-drop-Sitzung interessiert ist. Andere Lambdas zur Verarbeitung von Drag-Ereignissen wurden dadurch ersetzt.Für den Empfang von Drag-and-drop-Sitzungen wurde eine
DragAndDropTarget
-Factory-Funktion hinzugefügt (Iebf3a).Wenn
startDragImmediately
inAnchoredDraggable
verfügbar ist, kann festgelegt werden, ob Ziehbewegungen bei der Verwendung erkannt werden. Es ist nützlich, ihn festzulegen, wenn das Widget einen Zielanker animiert. Siehe Beispiel. (Ie6d13, b/285139987)Basis-Kurzinfo-APIs sind jetzt
@ExperimentalFoundationApi
(I30b0b)Entfernte
DragAndDropInfo
als TypDragAndDropModifierNode.drag
akzeptiert jetzt Parameter fürtransferData
, die Dekorationsgröße und das Drag-Dekorations-LambdaDrawScope
DragAndDropTarget
bietet Methoden für bestimmte Drag-and-drop-Ereignisse und ist 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
und 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. Bei den übrigen Test-APIs werden deaktivierte Knoten standardmäßig herausgefiltert. (I2ef84, b/187188981)Der Parameter
clippingEnabled
vonModifier.magnifier
wurde inclip
umbenannt.Für den
magnifierCenter
-Parameter vonModifier.magnifier
werden Nullwerte zulässig, wobei dasselbe Standardverhalten beibehalten wird. (I6aa66)Material
SwipeToReveal
APIs (für Karten und Chips) basieren jetzt auf einer Slot-basierten API (wie von Compose empfohlen) und nicht mehr auf Datenklassen-basierten Instanzen zum Erstellen dieser Slots. Bei dieser Änderung handelt es sich um eine funktionsgefährdende Änderung. In der Demo und dem Beispielcode finden Sie Beispiele zur Verwendung der neuen API. (Ia8943)
Fehlerkorrekturen
- Implementieren Sie Gleichheitszeichen und Hashcode für
PageSize.Fixed
. (Ie3ede, b/300134276) - Es wurde ein Fehler behoben, der dazu führte, dass das
BasicText
-Layout nicht verkleinert wurde, wennminWidth
geändert wurde undminWidth
weniger als die anfänglichen Beschränkungen für MesswertemaxWidth
(Idb19c) geändert wurde - Renderer-Unterstützung für die Funktion „Sweep-Gradient“ in
ArcLine
wurde hinzugefügt. (I4d5bb) - Problem mit der Binärkompatibilität bei Änderung des Fenstereinsatzes beheben (Iee695)
- Entfernen Sie die Materialkernschicht für den Material3-Chip bzw. die Material 3-Schaltfläche, da die Mikro-Benchmarks ohne diese eine bessere Leistung zeigen. (I55555)
Version 1.6.0-alpha08
18. Oktober 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha08
wird freigegeben. Version 1.6.0-alpha08 enthält diese Commits.
Neue Funktionen
Modifier.draggable2D
ist der neue Modifikator, der das Ziehen von 2D einfach unterstützt. Beispiel (Id95f5, b/214412658)
API-Änderungen
- Das Lambda „
onDrawDragShadow
“ vonModifier.dragAndDrawSource
wurde in „drawDragDecoration
“ umbenannt und der Größenparameter „DragAndDropInfo
“ wurde in „dragDecorationSize
“ umbenannt. (Id0e30, b/303904810) - Der Parameter
decorationBox
vonBasicTextField2
wird indecorator
umbenannt. Der Typ wird ebenfalls in die entsprechende unterhaltsame BenutzeroberflächeTextFieldDecorator
geändert. (I23c1c)
Fehlerkorrekturen
- Die Dokumentation zu
BasicTextField
bezüglich deronValueChange
-Anforderungen wurde verbessert. (I90fc9, b/160257648)
Version 1.6.0-alpha07
4. Oktober 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha07
wird freigegeben. Version 1.6.0-alpha07 enthält diese Commits.
API-Änderungen
- Zum Schreiben von Tests für benutzerdefinierte Texteditoren wurde
PlatformTextInputMethodTestOverride
eingeführt. (Id159b) GraphicsSurface
wurde inAndroidExternalSurface
(I11680) umbenannt- Temporäres Flag
DisableNonLinearFontScalingInCompose
zum Deaktivieren der nicht linearen Schriftskalierung hinzugefügt. Legen SieDisableNonLinearFontScalingInCompose = true
in Ihren Tests fest, wenn Sie Zeit für die Bereinigung benötigen. Dieses Flag wird in Compose 1.6.0-beta01 entfernt. (Ic9486) ColorList
- undColorSet
-Sammlungen, die Zuweisungen vermeiden, wurden hinzugefügt. (I744bd)- Durch diese Änderung wird
shortSnapVelocityThreshold
entfernt, das in ein Implementierungsdetail der Implementierungen vonSnapLayoutInfoProvider
umgewandelt wurde. (I65f6d) - Fügt den Modifizierer
dragAndDropSource
für das Starten von Drag-and-drop-Sitzungen und dendragAndDropTarget
-Modifikator für den Empfang von Drag-and-drop-Sitzungen hinzu (Ib7828, b/286038936) SnapPositionInLayout
-Dokumentation und Positionierungsmethode aktualisieren. Fügen Sie der Positionsmethode inSnapPositionInLayout
die Verwendung von Innenabständen für Inhalte hinzu. (Id7938, b/300116110)UndoState
wurde zuTextFieldState
hinzugefügt. Mit dieser Funktion können vom Nutzer vorgenommene Änderungen rückgängig gemacht bzw. wiederholt werden. (ICC024)
Fehlerkorrekturen
- Problem behoben, das
basicMarquee
nach einer Änderung der Geschwindigkeit nicht animiert wurde. (Id2e77, b/297974036)
Version 1.6.0-alpha06
20. September 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha06
wird freigegeben. Version 1.6.0-alpha06 enthält diese Commits.
Neue Funktionen
- Neue zusammensetzbare Wrapper für
SurfaceView
,TextureView: GraphicsSurface()
undEmbeddedGraphicsSurface()
. Es handelt sich um eine experimentelle API, die jederzeit geändert werden kann. I9ddb2: Modifier.magnifier()
ist jetzt eine stabile API. Dazu gehört das Entfernen vonMagnifierStyle
zugunsten von Inline-Parametern im Modifikator selbst. (I83bec, b/298381260, b/262367109, b/261438887)
API-Änderungen
updateCurrentPage
undupdateTargetPage
wurden inScrollScope
eingeführt. Dies sind die letzten Elemente, die für die Anpassung des animierten Scrollens durchPagerState.scroll
erforderlich sind. (I9cad5, b/267744105, b/243786897)- Dichte von
SnapFlingBehavior
entfernen. Alle Implementierungen vonSnapLayoutInfoProvider
haben bereits eine Möglichkeit, auf die Dichte zuzugreifen. Der Empfängerbereich könnte entfernt werden, was zu einer weniger komplexen Implementierung vonSnapFlingBehavior
undSnapLayoutInfoProviders
führt. (I153c3) - Weitere Modifikatoren sind als stabil gekennzeichnet. (I56af1, b/298046462)
- „
SnapStepSize
“ wurde aus „SnapLayoutInfoProvider
“ entfernt. Die Berechnung sollte mithilfe der Layout-Informationen erfolgen und durch die Annäherung oder das Einrasten-Versatz bereitgestellt werden. (If320c)
Änderungen des Verhaltens
- In der Funktion „Compose“ wird jetzt eine nicht lineare Schriftskalierung verwendet, um die Lesbarkeit und Barrierefreiheit zu verbessern. Wenn die Schriftgröße in den Systemeinstellungen über 100% liegt, wird kleiner Text normal großgeschrieben, bereits großer Text nimmt jedoch nur ein wenig zu. Außerdem werden die Zeilenhöhen, die in SP definiert wurden, automatisch proportional zur für die Skalierung von 100% vorgesehenen Höhe angepasst. Weitere Informationen finden Sie in den Best Practices für die Schriftskalierung. (I11518)
Fehlerkorrekturen
- Entfernen Sie die Verwendung von
rememberSaveable
für Kurzinfos. (Icc131, b/299500338)
Version 1.6.0-alpha05
6. September 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha05
wird freigegeben. Version 1.6.0-alpha05 enthält diese Commits.
API-Änderungen
- Fügen Sie Überlastungen für
BasicSecureTextField
hinzu, die einen unveränderlichen Wert akzeptieren, und einen Callback zum Ändern dieses Werts, genau wie bei der aktuellenBasicTextField
API. (Ia4882) - Fügen Sie
Modifier.preferKeepClear()
hinzu, um sie als zusammensetzbar zu markieren, um unverankerte Fenster in API 33 und höher zu vermeiden. (Ib51d5, b/297260115) - Die Verschiebungsgeschwindigkeiten in Ansichtskomponenten wie
ScrollView
undRecyclerView
sind aufViewConfiguration.ScaledMaximumFlingVelocity
begrenzt. Die Funktion „Schreiben“ enthält jetzt eine eigene Version vonmaximumFlingVelocity
, die jetzt fürDraggable
gilt. (Ibf974) - Verworfene
Pager
- undPagerState
-Überlastungen wurden entfernt. (Iea07e) BasicTooltipBox
wurdecompose.foundation
hinzugefügt undPlainTooltipBox
undRichTooltipBox
aktualisiert, umTooltipBox
mit den neuen zusammensetzbaren FunktionenPlainTooltip
undRichTooltip
zu verwenden. (I79e1d)
Version 1.6.0-alpha04
23. August 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha04
wird freigegeben. Version 1.6.0-alpha04 enthält diese Commits.
API-Änderungen
ReusableComposition
-Schnittstelle zum Verwalten des Lebenszyklus und zur Wiederverwendung von Unterzusammensetzungen wurde hinzugefügt. (I812d1, b/252846775)Modifier.focusGroup
wurde zu stabilen APIs hochgestuft. (I7ffa3)- Fügen Sie Überlastungen für
BasicTextField2
hinzu, die einen unveränderlichen Wert akzeptieren, und einen Callback zum Ändern dieses Werts, genau wie bei der aktuellenBasicTextField
API. (I3f2b8) GridItemSpan::currentLineSpan
ist jetzt eine stabile API. (ICC29c)- Canvas, das
contentDescription
akzeptiert, ist jetzt eine stabile API. (Ib3d29) - In
ScrollState
wurdeviewportSize
eingeführt, um dieviewPort
-Größe der Komponente zu ermitteln, dieScrollState
nach dem Messen verwendet. (I8b85a, b/283102682) - Der Vorabruf in Pager entsprach nicht dem Verhalten in Views. Das Problem wurde behoben. (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
wird freigegeben. Version 1.6.0-alpha03 enthält diese Commits.
API-Änderungen
- Die Überlastung von
LazyLayout
wurde hinzugefügt. Es akzeptiert ein Lambda vonLazyLayoutItemProvider
und kein einfaches Objekt wie zuvor. Die vorherige Überlastung wurde verworfen. (I42a5a) - Unterstützung für die Konfiguration von
privateImeOptions
(Idb772) hinzugefügt
Fehlerkorrekturen
- Textfelder korrigiert, die die Tastatur anzeigen und bearbeitbar sind, wenn
readOnly
wahr ist. 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
wird freigegeben. Version 1.6.0-alpha02 enthält diese Commits.
API-Änderungen
- Einführung von
PagerLayoutInfo
mit Informationen, die imPager
nach einer Maßnahme erfasst wurden. Außerdem wurdePageInfo
eingeführt, die Informationen zu einer einzelnen gemessenen Seite inPager
. (Iad003, b/283098900) - Zusätzliche Annotationen zur Angabe zulässiger Eingaben für zusammensetzbare Funktionen (I51109)
SemanticsNodeInteraction.requestFocus
wurde hinzugefügt, damit der Fokus bei Tests noch einfacher und leichter auffindbar ist. (Ie8722)- Die
PlatformTextInput*
API wurde komplett neu gestaltet. (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardController
undLocalSoftwareKeyboardController
sind keine experimentellen Funktionen mehr.LocalSoftwareKeyboardController
ist jetzt auch eine korrekteCompositionLocal
. (I4c364)- In
Modifier.transformable
wird jetzt im ParametercanPan
das Schwenkdelta angegeben, um festzulegen, in welche Richtung die Schwenkbewegung erlaubt oder nicht zugelassen werden 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
wird freigegeben. Version 1.6.0-alpha01 enthält diese Commits.
Neue Funktionen
- Einführung einer neuen
AnchoredDraggable
API in Foundation. Damit können Komponenten erstellt werden, die zwischen verschiedenen Stadien verschoben werden können, z. B. modale Blätter am unteren Rand. Diese API ersetzt dieSwipeable
API von Material. (I4a2ed)
API-Änderungen
InputConnection#requestCursorUpdates
(I0c69b) unterstützen- Einführung von
scrollAnimationSpec
, um benutzerdefinierte Animationsspezifikationen zu ermöglichen. „BringIntoViewCalculator
“ wurde auf „BringIntoViewScroller
“ aktualisiert. (Idb741) - Hinzufügen des
ResourceResolutionException
-Typs zu Wrappern von Werfen, die ausgelöst werden, wenn versucht wird, Bitmap-Assets mit einer Beschreibung des Asset-Pfads zu laden, der nicht geladen werden konnte. (I19f44, b/230166331, b/278424788) - Es wurden semantische Attribute und Aktionen zur Unterstützung der Textübersetzung hinzugefügt. (I4a6bc)
- Es wurde eine
BringIntoViewCalculator
API eingeführt, mit der sich anpassen lässt, wie Komponenten wieScrollable
aufbringIntoView
-Anfragen reagieren. Die Überlastung von „scrollable“ wurde geändert, sodass optional eine Instanz vonBringIntoViewCalculator
akzeptiert wird. Iaf5af
Fehlerkorrekturen
- Eine Lint-Prüfung wurde hinzugefügt, um zu warnen, wenn Sie eine
MutableInteractionSource
in der Zusammensetzung erstellen, ohne sie sich zu merken, ähnlich wie die Lint-Prüfungen zum Erstellen eines änderbaren Status /Animatable
. (I5daae) - Die Auswahl per Maus wird jetzt unterstützt. Die berührungsbasierte Auswahl wird um Wort erweitert und wird um Zeichen verkleinert. (Ic0c6c, b/180639271)
FocusTargetModifierNode
-Schnittstelle hinzugefügt, mit der eine benutzerdefinierteFocusTarget
erstellt werden kann. (I9790e)
Version 1.5
Version 1.5.4
18. Oktober 2023
androidx.compose.foundation:foundation-*:1.5.4
wird freigegeben. Version 1.5.4 enthält diese Commits.
Version 1.5.3
4. Oktober 2023
androidx.compose.foundation:foundation-*:1.5.3
wird freigegeben. Diese Version hat keine Änderungen.
Version 1.5.2
27. September 2023
androidx.compose.foundation:foundation-*:1.5.2
wird freigegeben. 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
wird freigegeben. Version 1.5.1 enthält diese Commits.
Fehlerkorrekturen
- Textfelder korrigiert, die die Tastatur anzeigen und bearbeitbar sind, wenn
readOnly
wahr ist. 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
wird freigegeben. Version 1.5.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.4.0
- Viele grundlegende Modifizierer, darunter
Modifier.clickable
,Modifier.draggable
,Modifier.scrollable
und Layoutmodifikatoren, wurden zurModifier.Node
API migriert. Dadurch wird der Aufwand bei der ersten Komposition reduziert. - Verbesserungen bei der Stabilität der Pager Viele Fehler wurden behoben.
pageCount
-Parameter befinden sich jetzt inPagerState
und nicht im Pager selbst
Version 1.5.0-rc01
26. Juli 2023
androidx.compose.foundation:foundation-*:1.5.0-rc01
wird freigegeben. Version 1.5.0-rc01 enthält diese Commits.
Fehlerkorrekturen
Es ist eine optionale Prüfung verfügbar, mit der empfohlen wird,
mutableStateOf()
-Aufrufe zu den entsprechenden spezialisierten Typen für Primitive zu migrieren. Die Lint-ID lautetAutoboxingStateCreation
. Bisher war diese Prüfung standardmäßig für alle Projekte aktiviert. Wenn Sie diese Warnung im Editor von Android Studio und in den Lint-Ausgaben Ihres Projekts sehen möchten, ändern Sie den Schweregrad von „Informational“ in „Warnung“ (oder höher), indem Siewarning "AutoboxingStateCreation"
in derbuild.gradle
- oderbuild.gradle.kts
-Konfiguration Ihres Moduls wie hier gezeigt (I34f7e) deklarieren:android { lint { warning "AutoboxingStateCreation" } ... }
Version 1.5.0-beta03
28. Juni 2023
androidx.compose.foundation:foundation-*:1.5.0-beta03
wird freigegeben. 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
wird freigegeben. 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
wird freigegeben. Version 1.5.0-beta01 enthält diese Commits.
API-Änderungen
- Implementiere
PlatformDataProvider
, um die Herzfrequenz und tägliche Schritte anzugeben. DieSensorGateway
-Schnittstelle wird aus der öffentlichen API entfernt. (I55b84)
Fehlerkorrekturen
- Weniger Zuweisungen bei Messungen von Lazy List/grids usw. (Iaf9e2)
- Weniger Zuweisungen beim Anwenden von Snapshots (I65c09)
- Zuweisungen aus Frühlingsanimationen entfernt (Ie9431)
- Zuweisung aus
TextLayout
entfernt (I0fd11) - Mehrere Zuweisungen bei der Zeigergeschwindigkeitsverfolgung 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
werden veröffentlicht. Version 1.5.0-alpha04 enthält diese Commits.
API-Änderungen
- Optimierter
TextStyle.merge(...)
mit vollständiger Parameterliste wurde hinzugefügt. (Iad234, b/246961787) - Stell einen
SnapLayoutInfoProvider
vor, der mitLazyGridState
verwendet werden kann. (I92134, b/269237141, b/260914964) - Für den Elementbereich „Versetzte Raster“ wurde der experimentelle Modus „
Modifier.animateItemPlacement()
“ hinzugefügt. Sie können sie auf die Elemente anwenden, um die Animationen für die Automatisierung von Positionsänderung/Neuanordnung zu erreichen. (I4b62d, b/257034719) GridCells.FixedSize
in „stabile“ hochstufen.FixedSize
definiert eineLazyGrid
, bei der jede Zelle auf der Querachse exakte Größe annimmt, wobei der verbleibende Raum durch Achsenanordnung verteilt ist. (I8542f)- Einführung des Empfängerbereichs
PagerScope
für Pager und einer Dienstfunktion zur Berechnung eines bestimmten Seitenversatzes. (If2577) - Führe die
snapPositionalThreshold
ein, wenn du ein Snap-Finger-Verhalten erstellst. Verwenden Sie diesen Parameter, um einen Positionsschwellenwert für das kurze Einrasten in Pager anzugeben. (If8f7f) - „
SnapLayoutInfoProvider.calculateSnappingOffsetBounds
“ wurde durch „calculateSnappingOffset
“ ersetzt. Bei dieser neuen Methode fordern wir einfach den nächsten Offset an, an den wir andocken sollen. Die Berechnung der Grenzen sollte auf Implementierungsebene durchgeführt werden, da dies je nachdem, wie eine Ausrichtung erforderlich ist, variieren kann. (I923a4) LazyStaggeredGrid
APIs wurden auf die stabile Version hochgestuft. (I633a5)pageCount
ausHorizontal/VerticalPager
entfernen. Dies sollte beim Erstellen des Status angegeben werden. Wir habenPagerState
undrememberPagerState
aktualisiert, um diepageCount
zu akzeptieren. (Ieb52d, b/266965072)pageCount
ausHorizontal/VerticalPager
entfernen. Dies sollte beim Erstellen des Status angegeben werden. Wir habenPagerState
undrememberPagerState
aktualisiert, um diepageCount
zu akzeptieren. (Ifa3cb, b/266965072)- Stelle
shortSnapVelocityThreshold
in „SnapFlingBehavior
“ von Pager vor. (I7379e, b/275579012) - Fügt
FlowRowScope
undFlowColumnScope
hinzu. (I54fe2)
Fehlerkorrekturen
- Aufrufe zum Abrufen der Semantik für Text, wenn die Einschränkungen
minWidth
undminHeight
nicht mehr abstürzen. (ibd072) - Die Regression wurde behoben, bei der die Tastatur für Textfelder in Dialogfeldern nicht angezeigt wurde, die nicht von der zusammensetzbaren Funktion
Dialog
erstellt wurden. (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
werden veröffentlicht. Version 1.5.0-alpha03 enthält diese Commits.
In dieser Version wird der neue Text-Rendering-Stack für die Funktion "Compose" aktiviert. Der neue Stapel ist leistungsoptimiert und Sie sollten keine sichtbaren Änderungen feststellen.
Wenn du Änderungen am gerenderten Text feststellst, kannst du diesen Fehler beheben, indem du NewTextRendering1_5 = false
festlegst, um den Verhaltensunterschied zu bestätigen. Wenn Sie dies festlegen, wird die Neuzusammensetzung erzwungen. Melden Sie alle Verhaltensunterschiede als Fehler.
Das Debug-Flag wird vor dem Release 1.5 beta01 entfernt.(Iada23, b/246960758)
API-Änderungen
FlowColumn/FlowRow
inline einbinden. (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
werden veröffentlicht. Version 1.5.0-alpha02 enthält diese Commits.
API-Änderungen
- In
LazyGrid
werden Zellen mit fester Größe unterstützt und auch deren achsenübergreifende Anordnung möglich. (I83ed9, b/235121277, b/267942510) - In
LazyStaggeredGrid
werden Fahrspuren mit fester Größe und achsenübergreifende Anordnungen jetzt unterstützt. (I7d519) UrlAnnotation
s inAnnotatedString
Sekunden können jetzt über Bedienungshilfen wieTalkBack
geöffnet werden. (If4d82, b/253292081)- Die Semantikaktion
InsertTextAtCursor
für Textfelder wurde hinzugefügt. (I11ed5) - Textbezogene Testaktionen (z.B.
performTextInput
) fordern jetzt mithilfe der Semantikaktion direkt den Fokus an, anstatt auf das Feld zu klicken. (I6ed05) - Zusätzliche Unterstützung für Achsenabstände bzw. -anordnungen mit
verticalArrangement
inFlowRow
undhorizontalArrangement
inFlowColumn
. Außerdem werden dieverticalAlignment
undhorizontalAlignment
der obersten Ebene ausFlowRow/FlowColumn
entfernt. Entwickler können stattdessenModifier.align
verwenden. Dadurch wird die Verwechslung zwischen den NamenskonventionenverticalAlignment
undverticalArrangement
reduziert. (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
werden veröffentlicht. Version 1.5.0-alpha01 enthält diese Commits.
API-Änderungen
- Text und
BasicText
wurden zur Verwendung des neuen Modifikatorsystems umgestaltet. Das führt in vielen Fällen zu erheblichen Leistungsverbesserungen. Es sollten keine Änderungen sichtbar sein. (If1d17, b/246961435) - Die Semantikaktion
PerformImeAction
wurde hinzugefügt, um die IME-Aktion auf Texteditorknoten aufzurufen. (Ic606f, b/269633506)
Fehlerkorrekturen
- Die interne Struktur von
Modifier.hoverable
wurde aktualisiert. Derhoverable
-Modifikator wird nur im Inspector angezeigt, wenn er aktiviert ist. (I82103)
Version 1.4
Version 1.4.3
3. Mai 2023
androidx.compose.foundation:foundation:1.4.3
und androidx.compose.foundation:foundation-layout:1.4.3
werden ohne Änderungen (nur ein Versions-Bump) veröffentlicht.
Version 1.4.2
19. April 2023
androidx.compose.foundation:foundation:1.4.2
und androidx.compose.foundation:foundation-layout:1.4.2
werden 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
werden 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
werden veröffentlicht. Version 1.4.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.3.0
- Emoji-Kompatibilität wurde für
Text
undTextField
sowie für den Absatz auf niedrigerer Ebene hinzugefügt. Es ist standardmäßig aktiviert, wenn Emojicompat konfiguriert ist. EmojiCompat
kann mitPlatformParagraphStyle
für einen bestimmten Text konfiguriert werden.- Unterstützung für vollständige Spannweite wurde zu
LazyStaggeredGrid
(I28252) hinzugefügt. - Hinzufügen von experimentellen
onHover
zuClickableText
(I6938f) - Einführung neuer experimenteller Überlastungen für die Funktionen
runComposeUiTest
undcreate*ComposeRule
, dieCoroutineContext
-Parameter akzeptieren. Der Kontext wird für die Testzusammensetzung und alleLaunchedEffect
- undrememberCoroutineScope()
-Aufrufe in der Komposition verwendet. (I10614, b/265177763) FlowRow
undFlowColumn
sind jetzt als@ExperimentalFoundationApi
verfügbar. Dies ermöglicht ein flexibles zeilen- und spaltenbasiertes Layout von Komponenten, bei denen in einer neuen Zeile umgebrochen wird, wenn auf der Hauptachse nicht genügend Platz vorhanden ist. (I3a7b2)Modifier.basicMarquee()
ist als experimentelle Funktion für die Anzeige von Inhalten mit einem Laufrahmen-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
werden veröffentlicht. Version 1.4.0-rc01 enthält diese Commits.
API-Änderungen
- Es wurde eine neue Low-Level-
PlatformTextInputAdapter
API zum Erstellen benutzerdefinierter Texteingabeimplementierungen eingeführt, die direkt mit Plattform-APIs kommunizieren. (I58df4) - Unterstützung für das umgekehrte Layout zu
LazyStaggeredGrid
hinzufügen. (I3ef4a)
Fehlerkorrekturen
- Die Semantikaktion
SetText
vonBasicTextField
aktualisiert jetzt den Textzwischenspeicher über denselben Codepfad wie IME-Aktualisierungen und die Testfunktionen (z.B.performTextReplacement
). - Die Texttestfunktionen
performTextClearance
,performTextReplacement
undperformTextSelection
verwenden jetztSemanticsActions
. (I0807d, b/269633168, b/269624358)
Version 1.4.0-beta02
22. Februar 2023
androidx.compose.foundation:foundation:1.4.0-beta02
und androidx.compose.foundation:foundation-layout:1.4.0-beta02
werden 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 ein lokaler Status zurückgesetzt werden kann, wenn dasLayout
wiederverwendet wird, z. B. als Element vonLazyColumn
.FocusTargetModifierNode
wurde korrigiert, sodass der fokussierte Status korrekt zurückgesetzt wurde. (I65495, b/265201972) - Der
BlendMode
-Parameter wurde den MethodenDrawScope.drawText
,Paragraph.paint
undMultiParagraph.paint
hinzugefügt, um verschiedene Mischalgorithmen beim Zeichnen von Text auf Canvas zu unterstützen. (I57508) - Die
modifierElementOf()
API wurde entfernt. Bitte Verlängere stattdessen die Erweiterung vonModifierNodeElement
. (Ie6d21)
Fehlerkorrekturen
- Durch Anpassen der Auswahlziehpunkte können keine Teilzeichen mehr ausgewählt werden. (Idedd1)
- Behebung eines Absturzes bei leerem
TextField
-Element mit Strg + Rücktaste (I0427f, b/244185537)
Version 1.4.0-beta01
8. Februar 2023
androidx.compose.foundation:foundation:1.4.0-beta01
und androidx.compose.foundation:foundation-layout:1.4.0-beta01
werden veröffentlicht. Version 1.4.0-beta01 enthält diese Commits.
Neue Funktionen
- Seit Version 1.3 wurde die Emoji-Kompatibilität in
Text
undTextField
sowie in Absatz auf niedrigerer Ebene hinzugefügt. Es ist standardmäßig aktiviert, wenn Emojicompat konfiguriert ist. EmojiCompat
kann mitPlatformParagraphStyle
für einen bestimmten Text konfiguriert werden.
API-Änderungen
- Es wurde eine gemeinsame Implementierung der
PinnableContainer
API hinzugefügt, die in allenLazyLayouts
verwendet wird, um Elemente beizubehalten, die nicht zusammengehören, aber weiterhin aktiv sein müssen. (If45a4) PinnableContainer.PinnedHandle.unpin()
wurde inrelease()
(I4667a) umbenannt
Externer Beitrag
mainAxisItemSpacing
-Property zuLazyListLayoutInfo
,LazyGridLayoutInfo
undLazyStaggeredGridItemInfo
hinzugefügt (I52fad)
Version 1.4.0-alpha05
25. Januar 2023
androidx.compose.foundation:foundation:1.4.0-alpha05
und androidx.compose.foundation:foundation-layout:1.4.0-alpha05
werden veröffentlicht. Version 1.4.0-alpha05 enthält diese Commits.
Neue Funktionen
- Unterstützung für vollständige Spannweite zu
LazyStaggeredGrid
(I28252) hinzugefügt onHover
wird zuClickableText
(I6938f) hinzugefügt- Einführung neuer experimenteller Überlastungen für die Funktionen
runComposeUiTest
undcreate*ComposeRule
, dieCoroutineContext
-Parameter akzeptieren. Der Kontext wird für die Testzusammensetzung und alleLaunchedEffect
- undrememberCoroutineScope()
-Aufrufe in der Komposition verwendet. (I10614, b/265177763)
API-Änderungen
- Führt die Vorher/Nachher-APIs von
OverscrollEffect
in die kombiniertenapplyToScroll
- undapplyToFling
-Funktionen von „decorator“ zusammen. In den aktualisierten Beispielen in der Dokumentation finden Sie Beispiele dafür, wie Sie mit der neuen API-Form einen Overscroll-Effekt implementieren können. (I8a9c4, b/255554340) - Mehr Typ-/Null-Zulässigkeit von Inline-/Verworfen-hidden-Funktionen (I24f91)
LineBreak
undHyphens
APIs 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 Animationen in den Systemeinstellungen deaktiviert sind. (I23389, b/262298306, b/265177763)
Externer Beitrag
notifyFocusedRect
-Methoden inTextInputSession
undTextInputService
wurden nicht noch einmal eingestellt. (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
werden veröffentlicht. Version 1.4.0-alpha04 enthält diese Commits.
Neue Funktionen
FlowRow
undFlowColumn
sind jetzt als@ExperimentalFoundationApi
verfügbar. Dies ermöglicht ein flexibles zeilen- und spaltenbasiertes Layout von Komponenten, bei denen in einer neuen Zeile umgebrochen wird, wenn auf der Hauptachse nicht genügend Platz vorhanden ist. (I3a7b2)Modifier.basicMarquee()
steht als experimentelle Funktion zur Anzeige von Inhalten mit einem Laufrahmen-Effekt zur Verfügung. (I2df44, b/139321650)
API-Änderungen
FocusRequesterModifier
wurde zugunsten vonFocusRequesterNode
verworfen (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, 251529934, 25175{/1819, 2515}, 254529934, 254529934- Der
AndroidFont
-Konstruktor mitvariationSettings
ist jetzt eine stabile API und kann zum Erstellen neuer Arten von Schriftdeskriptoren verwendet werden. (I5adcc, b/261565807) - Einführung der
PinnableContainer
API, die durch Lazy-Listen über eine lokale Kompositionslösung weitergegeben wird, mit der aktuelle Elemente angepinnt werden können. Das bedeutet, dass solche Elemente nicht entfernt werden, wenn sie aus der Ansicht weggescrollt werden. Wenn Sie zum BeispielModifier.focusable()
auswählen, wird das aktuell fokussierte Element über diese Methode angepinnt. (Ib8881, b/259274257, b/195049010) - Die Art und Weise, wie Scrollables auf
bringIntoViewRequesters
und fokussierbare Elemente reagieren, wurde geändert, 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) - Mehr Rückgabemöglichkeit für nicht unterstützte Funktionen, die nicht mehr unterstützt werden (Ibf7b0)
TextStyle
wurde ein experimentellesTextMotion
hinzugefügt, um den Text entweder alsStatic(default)
oder als animiert zu definieren. VerwendeTextMotion.Animated
, wenn Text skaliert, übersetzt oder gedreht werden soll. (I24dd7)- Füge
TextFieldFocusModifier
hinzu, um das Navigationsverhalten für die Android-Plattform zu korrigieren (I00303) - Das Argument
maxSize: IntSize
indrawText
wurde durchsize: Size
ersetzt, damit es inline mit anderenDrawScope
-Funktionen ist.size
ist standardmäßig aufSize.Unspecified
gesetzt, wodurch das vorherige Standardverhalten nicht geändert werden sollte. Icd27d
Fehlerkorrekturen
- Das Andocken der Funktion „
SnapFlingBehaviour
“ wurde angepasst, um ein natürlicheres Bild zu erzeugen.
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. Hier finden Sie die Seite, in der das Problem ursprünglich gemeldet wurde. Eine Fehlerkorrektur wurde gesendet. Sie ist mit dem nächsten Update der Funktion „Compose“ verfügbar. Aktualisieren Sie zur Problemumgehung dieandroidx.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 aus.
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
werden veröffentlicht. Version 1.4.0-alpha03 enthält diese Commits.
API-Änderungen
- Bei UI-Tests, die eine Erstellungsregel verwenden, werden Fortsetzungen während
withFrameNanos
-Callbacks erst dann weitergeleitet, wenn alle Frame-Callbacks ausgeführt wurden. Dies entspricht dem Verhalten von „Compose“ bei normaler Ausführung. Tests, die auf dem alten Verhalten basieren, können jedoch fehlschlagen. Dies sollte sich nur auf Code auswirken, derwithFrameNanos
oderwithFrameMillis
direkt aufruft und bei dem die Logik außerhalb des Callbacks an die Funktionen übergeben wird, die innerhalb der Callbacks verschoben werden müssen. Informationen zu den Änderungen am Animationstest finden Sie in dieser Änderungsliste. - Dem
TestMonotonicFrameClock
-Konstruktor und der Werksfunktion wurde ein optionaleronPerformTraversals: (Long) -> Unit
-Parameter hinzugefügt, um Code nachwithFrameNanos
-Callbacks auszuführen, aber bevor die Koroutinen der Aufrufer fortgesetzt werden. (Idb413, b/254115946, b/222093277, b/255802670) - Leite die Aktionen für Bedienungshilfen für Seiten ein:
PageUp
,PageDown
,PageLeft
,PageRight
. Diese sind nur ab API 29 verfügbar. (Ida4ab) - Stell
HorizontalPager
undVerticalPager
vor, um zusammensetzbare Funktionen auf Pager-Art darzustellen.PagerState
wurde eingeführt, um die Pager zu steuern und Informationen zum aktuellen Status des Pagers abzufragen.PageSize
wurde eingeführt, eine Möglichkeit, die Größe einer Pager-Seite zu steuern. Damit kann ein Karussell wie Pager erstellt werden.PagerSnapDistance
wurde eingeführt, mit der Sie steuern können, wie das Andocken beim Fling-Verhalten von Pager funktioniert. (I01120) - In
SnapFlingBehavior.performFling
wurde eine Überlastung eingeführt, um besser zu verstehen, wo sich die Schleudergewöhnung beruhigt. (I569f6) OverscrollEffect#isEnabled
wurde entfernt. Sie müssen sich dieses Flag nicht merken und festlegen, sondern es dürfen in Fällen, in denen das Overscroll-Effekt nicht angezeigt werden soll, keine Ereignisse für den Overscroll-Effekt ausgelöst werden (z. B. wenn fürScrollableState#canScrollForward/backward
beide „false“ zurückgegeben werden). (I1a4b0, b/255554340, b/255557085)ScrollableState#canScrollForward
undScrollableState#canScrollBackward
wurden hinzugefügt, um abzufragen, ob bei einemScrollableState
-Element ausreichend Platz für das Scrollen in beide Richtungen besteht. Die Standardeinstellung ist „true“ für die Abwärtskompatibilität mit vorhandenen Implementierungen vonScrollableState
. Nutzer können so darauf hinweisen, dass noch Platz zum Scrollen vorhanden ist. Außerdem lässt sich so vermeiden, dass Deltas anScrollableStates
gesendet werden, die keinen Platz zum Scrollen in eine bestimmte Richtung haben, um unnötigen Aufwand zu reduzieren. (Idf1a0, b/255557085)- Es wurde eine Modifier API hinzugefügt, um Scrollinformationen zu Ancestors abzufragen. (I2ba9d, b/203141462)
- Wird in
Clickable
verwendet, um Interaktionen beim Drücken korrekt zu verzögern, wenn Touch-Gesten zu Scroll-Ereignissen werden können. - Es wurde behoben, dass
Clickables
die Wellen nicht korrekt verzögert, wenn sie innerhalb einesScrollable ViewGroup
verwendet wurde. - Schubladen und Tabellen wurden aktualisiert, um das Drücken korrekt zu verzögern, falls Touch-Gesten zu Scroll-Ereignissen werden können.
- Passen Sie die
snapStepSize
-Benennung so an, dass sie anderen Methoden inSnapLayoutInfoProvider
entspricht. (Ife67c) EmojiCompat
zuCompose
hinzugefügt (Ibf6f9, b/139326806)consumedWindowInsets()
wurde inconsumeWindowInsets()
undwithConsumedWindowInsets()
inonConsumedWindowInsetsChanged()
umbenannt und die Modifikatoren wurden öffentlich gemacht. (Ie44e1)
Fehlerkorrekturen
- Der Absturz mit
Modifier.animateItemPlacement()
und Lazy Grids wurde behoben. Dies trat unter bestimmten Bedingungen auf, wenn die Anzahl der neuen Elemente kleiner 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
werden veröffentlicht. Version 1.4.0-alpha02 enthält diese Commits.
API-Änderungen
awaitFirstDown
undwaitForUpOrCancellation
akzeptieren jetzt einePointerEventPass
, um noch flexibler zu sein. (I7579a, b/212091796)beyondBoundCount
API von Lazy* APIs (I12197) zurücksetzen- Parameter in Lazy APIs eingeführt, um Elemente außerhalb des Darstellungsbereichs zu erstellen und zu platzieren (I69e89, b/172029355)
- Der Parameter
minLines
wurde zuBasicText
undBasicTextField
hinzugefügt. Sie können damit die Mindesthöhe dieser zusammensetzbaren Funktionen in Bezug auf die Anzahl der Zeilen festlegen (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
werden veröffentlicht. Version 1.4.0-alpha01 enthält diese Commits.
API-Änderungen
- Die neue Methode
awaitEachGesture()
für Gestendetektoren wurde hinzugefügt. Sie funktioniert ähnlich wieforEachGesture()
, aber die Loop-over-Touch-Gesten funktionieren vollständig innerhalb desAwaitPointerEventScope
, sodass Ereignisse zwischen den Iterationen nicht verloren gehen können. forEachGesture()
wurde zugunsten vonawaitEachGesture()
eingestellt, da hiermit Ereignisse zwischen Touch-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
werden veröffentlicht. Version 1.3.1 enthält diese Commits.
Fehlerkorrekturen
- Leistungsprobleme in
BeyondBoundsLayout
(aosp/2255266) beheben ContentInViewModifier
liest Layoutkoordinaten nur dann, wenn es angehängt ist (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
werden 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 weitere zugehörige APIs wurden als experimentell hinzugefügt.Modifier.clickable
,Modifier.toggleable
undModifier.selectable
zeigen jetzt Wellen an, wenn sie mit der Tastatur oder dem Steuerkreuz einer Fernbedienung angeklickt werden.
Version 1.3.0-rc01
5. Oktober 2022
androidx.compose.foundation:foundation:1.3.0-rc01
und androidx.compose.foundation:foundation-layout:1.3.0-rc01
werden veröffentlicht. Version 1.3.0-rc01 enthält diese Commits.
API-Änderungen
- Für den Ansatzschritt wurde
lowVelocityAnimationSpec
eingeführt, wenn nicht genügend Schleppgeschwindigkeit zum Zerfall vorhanden ist. (Iaeb27) - Es wurden neue experimentelle API-Bindestriche hinzugefügt, um die automatische Bindestriche im Text zu unterstützen (Iaa869).
Version 1.3.0-beta03
21. September 2022
androidx.compose.foundation:foundation:1.3.0-beta03
und androidx.compose.foundation:foundation-layout:1.3.0-beta03
werden veröffentlicht. Version 1.3.0-beta03 enthält diese Commits.
API-Änderungen
- Fügen Sie Optionen zum Anpassen von Zeilenumbrüchen im Text hinzu. (I86907)
BringIntoViewResponder
können jetzt die aktuellen Grenzen einer Anfrage abrufen, während sie verarbeitet werden. (If86a5, b/241591211)- Einführung der Unterstützung für Abstände zwischen Elementen in der experimentellen Version von
Staggered Grid
(I10b82) - Einführung von Innenabstände zwischen Inhalten in experimentellen
Staggered Grid
(I342ea) - Das Argument
size:IntSize
mitconstraints: Constraints
in der MethodeTextMeasurer.measure
wurde geändert, um Einschränkungen für die Mindestbreite zu unterstützen. (I37530, b/242707525) Modifier.withConsumedWindowInsets()
wurde hinzugefügt, umWindowInsets
für die Nutzung außerhalb vonwindowInsetsPadding
verbraucht zu werden.MutableWindowInsets
wurde hinzugefügt, umWindowInsets
ohne Neuzusammensetzung ändern zu können. (I7fd28, b/237019262, b/243119659)
Version 1.3.0-beta02
7. September 2022
androidx.compose.foundation:foundation:1.3.0-beta02
und androidx.compose.foundation:foundation-layout:1.3.0-beta02
werden veröffentlicht. Version 1.3.0-beta02 enthält diese Commits.
API-Änderungen
- Anfängliche 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, um das Andocken inLazyLists
schnell zu aktivieren. (Ifb48a) - Die
snapFlingBehavior
-Fabrik wurde durch eine BetonklasseSnapFlingBehavior
ersetzt. Es wurdenSnapLayoutInfoProvider
-Methoden auf Dichte festgelegt, um dp<->Px-Conversions für die API-Nutzer einfacher zu gestalten. (I54a11) - Aktualisieren Sie
LazyLayoutMeasureScope.measure
, um eine Liste der platzierbaren Werte zurückzugeben. Dabei wird die gewünschte Unveränderlichkeit des zurückgegebenen Werts hervorgehoben. (I48b7c) SnapLayoutInfoProvider
wurde eingeführt, das einLazyListState
benötigt, um eine Instanz vonSnapLayoutInfoProvider
zu erstellen, mit der ein Snap-FlingBehavior
fürLazyLists
aktiviert werden kann. (I2dd10)
Fehlerkorrekturen
- Refaktoriert
AwaitPointerEventScope#awaitLongPressOrCancellation
entsprechend anderen „await“-Funktionen (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
werden veröffentlicht. Version 1.3.0-beta01 enthält diese Commits.
API-Änderungen
pointerPosition
wurde ausOverscrollEffect
entfernt: Effekte, die die Zeigerposition betreffen, können stattdessenModifier.pointerInput { }
ineffectModifier
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)SnapFlingBehavior
wurde eingeführt, ein FLing-Verhalten, das das Anordnen von Listen ermöglicht. Geben Sie eine Instanz vonSnapLayoutInfoProvider
mit Informationen zu Ihrem Andock-Layout 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
werden veröffentlicht. Version 1.3.0-alpha03 enthält diese Commits.
API-Änderungen
- Resource Fonts unterstützt jetzt das Festlegen von Einstellungen für Schriftartvariationen (API 26 und höher). (I900dd, b/143703328)
- Unterstützung variabler Schriftarten in
DeviceFontFamilyNameFont
(Ic1279, b/143703328) - Experimentelle Annotation wurde aus
PlatformTextStyle
undLineHeightStyle
entfernt. (I64bef) - Textfelder geben jetzt detailliertere Ausnahmen aus, wenn das von einem
VisualTransformation
bereitgestellteOffsetMapping
ungültige Indexe zurückgibt. (Ie73f9, b/229378536) - Experimentelle APIs einführen, um die Elementanbieterlogik für Lazy-Layouts gemeinsam zu nutzen (Ic891c)
ScrollableDefaults.reverseDirection()
ist keine experimentelle Funktion mehr. (Iba646)SemanticsModifier.id
wurde verworfen und die Semantik-ID wurde nachLayoutInfo.semanticsId
verschoben. (Iac808, b/203559524)checkScrollableContainerConstraints()
ist keine experimentelle Funktion mehr. (I2c290)Modifier.clipScrollableContainer()
ist keine experimentelle Funktion mehr. (Ia2b44)TextInputService.show|hideSoftwareKeyboard
wird eingestellt. Verwenden Sie stattdessenSoftwareKeyboardController
im App-Code undTextInputSession
im IME-Verwaltungscode. (I14e4c, b/183448615)
Version 1.3.0-alpha02
27. Juli 2022
androidx.compose.foundation:foundation:1.3.0-alpha02
und androidx.compose.foundation:foundation-layout:1.3.0-alpha02
werden veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.
API-Änderungen
- Es wurde eine
drawText
-Erweiterungsfunktion fürDrawScope
hinzugefügt, die eine Möglichkeit bietet, Text mit mehreren Stilen auf zusammensetzbaren Funktionen und Modifikatoren zu zeichnen, die aufDrawScope
wieCanvas
unddrawBehind
angewendet werden. (I16a62, b/190787898)
Fehlerkorrekturen
- Die Option „Softtastatur“ wird jetzt ausgeblendet, wenn ein Textfeld im Fokus deaktiviert ist. (I6e3e4, b/237308379)
- Beim Hinzufügen von
InputEventChange
-Ereignissen zu Velocity Tracker werden jetzt Deltas anstelle von Positionen berücksichtigt. Dadurch wird sichergestellt, dass die Geschwindigkeit für alle Fälle korrekt berechnet wird, auch wenn sich das Zielelement bewegt (Icea9d, b/216582726, b/223440806, b/227709803). - Wenn ein scrollbares untergeordnetes Element im Fokus ist, scrollt es jetzt korrekt, sodass das untergeordnete Element im Fokus jetzt bleibt, wenn seine Größe verringert wird, auch wenn die Größe animiert ist. (I80867, b/230756508, b/220119990)
- Ein Absturz wurde behoben, bei dem
TextField
gelöscht und wieder aufgefü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
werden veröffentlicht. Version 1.3.0-alpha01 enthält diese Commits.
API-Änderungen
- Der Annotationstyp
UrlAnnotation
und die zugehörigen Methoden wurden eingeführt, um die Unterstützung vonTalkBack
-Links inAnnotatedString
s zu unterstützen. (I1c754, b/231495122)
Fehlerkorrekturen
BasicTextField
cursorBrush
darf jetzt animiert werden, ohne dass der Cursor-Timer neu gestartet wird. (I812e6, b/236383522)
Version 1.2
Version 1.2.1
10. August 2022
androidx.compose.foundation:foundation:1.2.1
und androidx.compose.foundation:foundation-layout:1.2.1
werden 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
werden 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. Auf diese Weise 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 in der Testphase eingeführt. Sie können benutzerdefinierte Overscroll-Effekte definieren und benutzerdefinierten scrollbaren Containern einen Standard-Plattform-1 hinzufügen. - Verschachtelte Scroll-Interoperabilitäts-APIs wurden eingeführt, um die Interoperabilität zwischen Ansichten zu ermöglichen und Scroll-Akteure zu erstellen.
- Allen Scroll-Containern wurde das Scrollen per Maus und Touchpad 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
werden veröffentlicht. Version 1.2.0-rc03 enthält diese Commits.
- Keine Änderungen seit 1.2.0-rc02.
Version 1.2.0-rc02
22. Juni 2022
androidx.compose.foundation:foundation:1.2.0-rc02
und androidx.compose.foundation:foundation-layout:1.2.0-rc02
werden 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
werden veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.
API-Änderungen
- Es wurde ein experimenteller
OverscrollEffect
eingeführt, der neben denModifier.scrollable
-Überlastungen, die diese zulassen, benutzerdefinierte Overscroll-Effekte ermöglicht. - Das experimentelle
LocalOverScrollConfiguration
wurde vonfoundation.gesture
in das Foundation-Paket verschoben und inLocalOverscrollConfiguration
umbenannt (If19fb, b/204650733). - Schnittstellen in compose-Bibliotheken werden jetzt mit den jdk8-Standardschnittstellenmethoden (I5bcf1) erstellt.
- Es wurde eine experimentelle API (
checkScrollableContainerConstraints()
) eingeführt, mit der geprüft werden kann, ob scrollbare Container nicht verschachtelt werden. Du kannst es verwenden, wenn du überLazyLayout
eigene scrollbare Lazy-Layouts erstellst. (Id6fab, b/233352497) - Die eingestellte
LazyVerticalGrid
wurde aus dem Paketandroidx.compose.foundation.lazy
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
werden veröffentlicht. Version 1.2.0-beta03 enthält diese Commits.
API-Änderungen
- Neue experimentelle
IntervalList
undMutableIntervalList
wurden hinzugefügt. Sie ermöglicht es, eine Liste von Werten über mehrere Intervalle darzustellen. Dies ist nützlich, wenn Sie Ihr eigenes DSL-Objekt definieren möchten, ähnlich dem, das vonLazyColumn
verwendet wird. Hier können Listenelemente über mehrere Elemente/Elemente definiert werden. (I2d05e, b/228580728)
Fehlerkorrekturen
- Die Dokumentation für
WindowInsets.ime
wurde klarer formuliert, um zu verdeutlichen, dassime
-Einsätze bis API 23 zurückgemeldet sind, aber nur ab 30 animiert werden. (Ia7fc0, b/230756508) - Das Drücken der Vorwärts-Löschtaste, wenn sich der Cursor am Ende eines Textfelds befindet, stürzt nicht mehr ab.
- Die Konstruktorargumente von
DeleteSurroundingTextCommand
undDeleteSurroundingTextInCodePointsCommand
dürfen 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
werden veröffentlicht. Version 1.2.0-beta02 enthält diese Commits.
- Die Auflösung von herunterladbaren Schriftarten, durch die die Layoutgröße von „Text“ oder „
TextField
“ nicht geändert wird, wurde zuvor nicht neu gezeichnet, sodass die Schrift veraltet ist. Durch diesen Fehler wird sichergestellt, dass das Textlayout immer eine Neuzeichnung 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
werden veröffentlicht. Version 1.2.0-beta01 enthält diese Commits.
Neue Funktionen
- Dies ist die erste Betaversion von 1.2.
API-Änderungen
- Es wurde eine experimentelle
BeyondBoundsInterval
hinzugefügt, die von benutzerdefinierten Implementierungen vonLazyList
verwendet werden kann, wenn sie Elemente über die sichtbaren Grenzen hinaus anordnen (Ifabfb, b/184670295). LineHeightBehavior
wird inLineHeightStyle
umbenannt.LineVerticalAlignment
wird inLineHeightStyle.Alignment
umbenannt.- Umbenennung von
LineHeightTrim
wird inLineHeightStyle.Trim
umbenannt - Die Standardkonstruktorwerte aus
LineHeightStyle
werden entfernt (I582bf, b/181155707). - Standardwerte für die optionalen Mitglieder der
LazyLayoutItemProvider
-Schnittstelle wurden hinzugefügt. (Iba8a0) - In der
LazyLayoutItemProvider
-API gibt es anstelle einer Factory, die die zusammensetzbare Lambda-Funktion nach Index zurückgibt, eine einfachere zusammensetzbare Funktion, die den Index akzeptiert. (Id2196) - LazyLayoutItemsProvider wurde in LazyLayoutItemProvider (I0638c) umbenannt
LazyLayoutItemsProvider.itemsCount
wurde initemCount
(Id409c) umbenannt- Für
TextStyle
undSpanStyle
wurde der Pinsel hinzugefügt, um Text mit Farbverlauf zu zeichnen. (I53869, b/187839528) - Die Attribute
trimFirstLineTop
undtrimLastLineBottom
vonLineHeightBehavior
wurden in eine einzelne Aufzählung geändert:LineHeightTrim
.LineHeightTrim
haben Werte für vier Zustände, die durch zwei boolesche Werte definiert sind:FirstLineTop
,LastLineBottom
, Beide und Keine (Ifc6a5, b/181155707) LineHeightBehavior
wurde denTextStyle
- undParagraphStyle. LineHeightBehavior
-Steuerelementen hinzugefügt, um festzulegen, ob die Zeilenhöhe oben und unten in der letzten Zeile angewendet wird. Außerdem definiert sie die Ausrichtung der Linie in dem vonTextStyle
(lineHeight
) angegebenen Bereich.Es ist beispielsweise möglich, ein ähnliches Verhalten zu erhalten, das CSS über
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
definiert.trimFirstLineTop
,trimLastLineBottom
-Konfigurationen funktionieren nur dann korrekt, 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
- Die Regression wurde behoben, bei der Textfelder die Tastatur nicht ausblenden konnten, 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 in alle Textzeilen passt (Ie528c, b/168720622)
BringIntoViewRequester.bringIntoView
wird jetzt immer angehalten, bis die Anfrage entweder abgeschlossen ist oder durch eine neuere, sich nicht überschneidende 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. Sie können dasincludeFontPadding
-Objekt mit dem AttributTextStyle.platformTextStyle
deaktivieren. Demnächst werden wir das Standardverhalten ändern. Bis dahin können wir Verbesserungen der Zeilenhöhe (aosp/2058653) jedoch besser einbinden und Probleme mitTextField
-Clippings beheben. (I01423, b/171394808)Modifier.bringIntoViewRequester
verwendetonGloballyPositioned
nicht mehr. (I630f5)
Externer Beitrag
MouseInjectionScope.scroll(delta = someDelta)
wird unter Android jetzt invertiert, wenn wir vertikal scrollen (wenn etwas Delta positiv ist, wird es 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
werden veröffentlicht. Version 1.2.0-alpha08 enthält diese Commits.
API-Änderungen
- Bei Verwendung von
FontFamily.SansSerif
werden alle verfügbaren Schriftstärken für Systemschriftarten unter Android angezeigt. Dadurch werden Fallback-Schriftarten wie Sans-Serif-Medium intern in API 21–28 verwendet. Dies ist eine Verhaltensänderung, da bisher nur die Gewichtungen 400 und 700 in den APIs 21–28 unterstützt wurden. (I380fe, b/156048036, b/226441992) - „Absatz“ und „MultiParagraph“ akzeptieren jetzt den Parameter „Constraints“. Das Übergeben von
Constraints.maxHeight
ist derzeit ein Leerbefehl, ermöglicht aber in Zukunft eine Berechnung, z. B. die Auslassung basierend auf der Höhe. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()
akzeptiert jetzt eine benutzerdefinierte MutableSet-ähnliche Klasse, in die keine neuen Elemente hinzugefügt werden können. Icd314- Der teilweise Verbrauch (Position unten ODER unten) wurde in
PointerInputChange
eingestellt. Mitconsume()
können Sie die Änderung vollständig übernehmen. MitisConsumed
können Sie feststellen, ob eine andere Person die Änderung bereits übernommen hat. PointerInputChange::copy()
erstellt jetzt immer eine oberflächliche Kopie. Das bedeutet, dass Kopien vonPointerInputChange
verbraucht sind, sobald eine der Kopien verbraucht ist. Wenn Sie ein ungebundenesPointerInputChange
erstellen möchten, verwenden Sie stattdessen den Konstruktor. (Ie6be4, b/225669674)- Es wird eine neue experimentelle
LazyLayout
API eingeführt. So können Sie eigene 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
-Companions zeigt jetzt die Sichtbarkeit (unabhängig davon, ob sie auf dem Bildschirm angezeigt werden, unabhängig davon, ob sie sich mit dem Fenster schneiden) und die mögliche 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
werden veröffentlicht. Version 1.2.0-alpha07 enthält diese Commits.
API-Änderungen
- Eine
PinnableParent
API wurde hinzugefügt, mit der untergeordnete Elemente von Lazy-Layouts nicht entsorgt werden können (Ibbdd0, b/184670295). LazyListLayoutInfo
undLazyGridLayoutInfo
haben jetzt die FelderbeforeContentPadding
undafterContentPadding
(I3b628, b/200920410).KeyboardType.Decimal
wurde als Alternative zuKeyboard.Number
hinzugefügt, um das Dezimaltrennzeichen in IME speziell einzubeziehen. (Iec4c8, b/209835363)- Fügen Sie den neuen Schriftartdeskriptor „Font(DeviceFontFamilyName)“ hinzu, um vom System installierte Schriftarten während Schriftart-Fallback-Ketten optional nachzuschlagen. (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 zur Aktivierung der Migration. Sie wird entfernt. (If47be, b/171394808) FontFamily.Resolver
wurde aktualisiert, um die systemweite Einstellung für Fett-Text-Bedienungshilfen zu integrieren (I6c1e7).- Mit der
consumeWindowInsets
-Erweiterungseigenschaft vonComposeView
können Entwickler die Nutzung von Android-WindowInsets deaktivieren. Dadurch können separateComposeViews
in der Hierarchie jeweilsWindowInsets
anwenden, ohne sich gegenseitig zu stören. (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
werden veröffentlicht. Version 1.2.0-alpha06 enthält diese Commits.
API-Änderungen
- Die Semantikaktion
RequestFocus
wurde hinzugefügt, um den Fokus auf das fokussierbare Ziel anzufordern. (I17b71) FocusOrder
wurde mitFocusProperties
zusammengeführt undfocusProperties()
verfügt jetzt über alle Funktionen vonfocusOrder()
.FocusOrder
undfocusOrder()
wurden verworfen.focusOrder()
, dasfocusRequester
akzeptiert, sollte durch einenfocusRequester()
-Modifikator in Kombination mitfocusProperties()
ersetzt werden. Dies ermöglicht eine stärkere Trennung von Belangen durch die Modifikatoren. (I601b7)WindowInsets.asPaddingValues(Density)
wurde hinzugefügt, damit Entwickler die Konvertierung vornehmen können, ohne in der Zusammensetzung sein zu müssen. (I94c35)- Das Parsen von Vektor-Drawables wurde aktualisiert, um die automatische Spiegelung zu unterstützen, um den Inhalt eines
VectorPainter
umzudrehen, wenn die aktuelle Layoutrichtung RTL ist. (I79cd9, b/185760237)
Fehlerkorrekturen
- Mit den Scroll-Modifikatoren (
Modifier.verticalScroll()
,Modifier.horizontalScroll()
undModifier.scrollable()
) scrollen Sie jetzt, damit die fokussierte zusammensetzbare Funktion sichtbar bleibt, auch 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 eingeblendet wird, wenn sich das Feld in einem nicht Lazy Scrolling aufrufbaren Bereich und im Soft Input-Modus auf
ADJUST_RESIZE
befindet. (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
werden 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 Teilpaket.grid
verschoben. Bitte aktualisieren Sie Ihre Importe vonandroidx.compose.foundation.lazy
inandroidx.compose.foundation.lazy.grid
. (I2d446, b/219942574)- Text:
includeFontPadding
ist jetzt standardmäßig deaktiviert. Die Clipping-Probleme als Ergebnis vonincludeFontPadding=false
werden behandelt und bei großen Skripts sollte keine Clipping-Funktion auftreten. (I31c84, b/171394808) - Measured Interface gibt jetzt die Eigenschaft „parentData“ (I3313f) an
- Einführung von experimentellen
Modifier.onFocusedBoundsChanged
s, um die Beobachtung der Grenzen von untergeordneten Fokussierbaren zu beobachten. (I14283, b/220030968, b/190539358, b/192043120, b/216842427) - LazyHorizontalGrid wurde hinzugefügt. (I61ae7, b/191238807)
- Neue
LazyVerticalGrid
API zum Definieren von Querachsgrößen (I17723) hinzugefügt - „FocusGroup“-Modifikator hinzugefügt (I64bc0, b/213508274, b/184670295)
Fehlerkorrekturen
WindowInsets.toString()
zeigt jetzt die richtigen Werte an. (I1585d)
Externer Beitrag
- Für die Verwendung von Kotlinx-Coroutinen 1.6.0 (I3366d) aktualisiert
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
werden veröffentlicht. Version 1.2.0-alpha04 enthält diese Commits.
API-Änderungen
BringIntoViewResponders
müssen Anfragen nicht mehr manuell an übergeordnete Antworten übergeben. Stattdessen muss sofort das Rechteck zurückgegeben werden, das ihr übergeordnetes Element sichtbar machen soll. (I8e66a)- Asynchrones Laden von Schriftarten im Text unterstützen (I77057, b/214587005)
LazyVerticalGrid
unterstützt jetztline breaking
vor Elementen, deren Span nicht in die aktuelle Zeile passt. (I05c40, b/207462103)excludeFromSystemGestures
wurde insystemGesturesExclusion
(I19526) umbenanntLazyVerticalGrid
unterstützt jetzt ReverseLayout. (I6d7d7, b/215572963, b/211753558)- Fügen Sie die Methode
WindowInsets.only()
hinzu, damit Entwickler nur Dimensionen aus WindowInsets einschließen können. (I14c94, b/217768486) ComposableTarget
,ComposableTargetMarker
undComposableOpenTarget
wurden hinzugefügt. Damit können während der Kompilierungszeit Berichte dazu erstellt werden, wann eine zusammensetzbare Funktion aufgerufen wird, die auf eine Anwendung ausgerichtet ist, für die sie nicht vorgesehen ist.In den meisten Fällen können die Annotationen vom Compiler-Plug-in „compose“ abgeleitet werden, sodass die direkte Verwendung dieser Annotationen eher selten ist . Zu den Fällen, die sich nicht ableiten lassen, gehören das Erstellen und Verwenden einer benutzerdefinierten Anwendung, abstrakten zusammensetzbaren Funktionen (z. B. Schnittstellenmethoden), Feldern oder globalen Variablen, die zusammensetzbare Lambdas sind (lokale Variablen und Parameter werden abgeleitet), oder die Verwendung von
ComposeNode
oder einer zugehörigen 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 empfiehlt sich jedoch, eine Annotation zu erstellen, die mitComposableTargetMarker
annotiert ist, und dann direkt die markierte Annotation anstelle vonComposableTarget
zu verwenden. Eine zusammensetzbare Annotation, die mitComposableTargetMarker
gekennzeichnet ist, entspricht einerComposbleTarget
mit dem voll qualifizierten Namen der Attributklasse als Anwendungsparameter. Ein Beispiel für die Verwendung vonComposableTargetMarker
finden Sie unteranroidx.compose.ui.UiComposable
. (I38f11)
Fehlerkorrekturen
- Jetzt dürfen negative Scroll-Offsets an
LazyGridState.scrollToItem()
undLazyGridState.animateScrollToItem()
übergeben werden. (I025c6, b/211753558) - Asynchrones Laden von Schriftarten für TextField 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
werden veröffentlicht. Version 1.2.0-alpha03 enthält diese Commits.
API-Änderungen
- Die
notifyFocusedRect
-Methoden inTextInputSession
undTextInputService
wurden verworfen und werden nicht aufgerufen. Verwenden Sie stattdessenBringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874) - Animationen wurden für Elemente von Lazy Grids mit Modifier.animateItemPlacement() aktiviert. (Ib6621, b/211753218)
BringIntoViewRequester
leitet jetzt Anfragen an die gehostete Android View weiter. (Ia7a51)FontFamilyResolver
ist jetzt verfügbar überLocalFontFamilyResolver.current
createFontFamilyResolver(context)
undcreateFontFamilyResolver(context, coroutineScope)
wurden hinzugefügt, um neue FontFamily-Resolver zu erstellen, die außerhalb der Verwendung von „Compose“ verwendet werden.- „Paragraph“ und „MultiParagraph“ nehmen jetzt
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
enthält jetzt den für dieses Layout verwendeten ResolverTextLayoutResult.layoutInput.resourceLoader
, da er nicht mehr verwendet wird. (Id5a45, b/174162090)
AndroidFont
wurde hinzugefügt, eine neue untergeordnete API zur Bereitstellung neuer Typen von Ressourcendeskriptoren für Schriftarten unter Android. Beispielsweise können Sie Schriftarten aus einem app-spezifischen Back-End laden, nach vorinstallierten Schriftarten auf dem Gerät suchen oder eine Schriftart aus einer Ressource laden, die nicht von den aktuellen Font Factorys bereitgestellt wird.- Die
Font.ResourceLoaded
API wurde erweitert, um das optionale und asynchrone Laden von Schriftarten zu unterstützen. Es wird nicht empfohlen, dass Anwendungsentwickler diese API direkt verwenden. Informationen zum Hinzufügen neuer Schriftarten finden Sie unter AndroidFont. - Die Erweiterungsfunktion
Font.AndroidResourceLoader
ermöglicht die Erstellung einerFont.ResourceLoader
, wenn diese außerhalb der Zusammensetzung liegt. - Der
loadingStrategy
-Parameter wurde zu ressourcenbasierten Schriftarten hinzugefügt, um ein asynchrones Laden zu ermöglichen, wenn Ressourcenschriftarten auf herunterladbare XML-Schriftarten verweist. (Ie5aea, b/174162090)
- Die
- Der
Typeface(FontFamily)
-Konstruktor wurde verworfen. Bisher wurden damit Schriftarten vorab geladen, was bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern kann. Bei herunterladbaren Schriftarten kann dieser Aufruf 10 Sekunden lang blockiert sein. Verwenden Sie stattdessenFontFamilyResolver.preload
.fontResource(FontFamily): Typeface
wurde verworfen. Bisher wurden damit Schriftarten vorab geladen, 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. Die Funktionen „item/items“ inLazyGridScope
akzeptieren jetzt solche Parameter. Die Bereitstellung solcher Informationen trägt dazu bei, dass die Logik der Artikelkomposition wiederverwendet werden kann, wodurch diese effizienter und nur der Inhalt zwischen Elementen ähnlicher Art wiederverwendet werden kann. (I7b355, b/215372836) LazyListLayoutInfo
undLazyGridLayoutInfo
haben jetzt neue Properties:viewportSize
,orientation
,reverseLayout
(Ifc8ed, b/200920410)- Sie können jetzt den Inhaltstyp für die Elemente der LazyColumn-/LazyRow-Funktionen angeben. Für item/items in LazyListScope werden jetzt solche Parameter akzeptiert. Die Bereitstellung solcher Informationen trägt dazu bei, dass die Logik der Artikelkomposition wiederverwendet werden kann, wodurch diese effizienter und nur der Inhalt zwischen Elementen ähnlicher Art wiederverwendet werden kann. (I26506)
- Der
SubcomposeLayoutState
-Konstruktor, dermaxSlotsToRetainForReuse
akzeptiert, wurde verworfen. Stattdessen gibt es einen neuen Konstruktor, derSubcomposeSlotReusePolicy
akzeptiert. Dies ist eine neue Schnittstelle, 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 die Füllung als auch für die Größe. Dadurch können sich einige Inhalte in den Zusatzbereich erstrecken, der Hauptinhalt aber bleibt außerhalb dieses Bereichs. Mit „windowInsetsPadding“ kann beispielsweise der Inhaltsbereich aufgefüllt werden, um Bereiche zu vermeiden, die möglicherweise vollständig oder teilweise verdeckt sind. (Id0395, b/213942085)
Fehlerkorrekturen
- Textfelder werden jetzt über der Tastatur angezeigt, wenn sie fokussiert sind und die Tastatur eingeblendet wird, wenn der Soft Input-Modus
ADJUST_PAN
ist. (I8eaeb, b/190539358, b/192043120) - Desktop verwendet die lokale Komposition für
FontFamily.Resolver
- Computer „
FontLoader
“ wurde eingestellt - Neue
createFontFamilyResolver
-Fabrik auf dem Computer (I6bbbb, b/174162090)
- Computer „
- Der Eingabetyp „Softtastatur“ flackert nicht mehr, wenn der Fokus zwischen Textfeldern gewechselt wird. (I1bf50, b/187746439)
- In Textfeldern ist kein zusätzliches Zurückdrücken mehr erforderlich, wenn der Cursor-Ziehpunkt angezeigt wird. (Ideb4b, b/205726883)
- Das Verhalten der Lupe für die Textauswahl wurde an die Lupenfunktion der Plattform 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
werden veröffentlicht. Version 1.2.0-alpha02 enthält diese Commits.
API-Änderungen
NonRestartableComposable
wurde Methoden hinzugefügt, die Überlastungen vorhandener Methoden ohne komplexe Logik darstellen. Dadurch werden die vom Compiler generierten Memoisierungsprüfungen (gleich) für alle Parameter reduziert, die in der inneren Funktion, die aufgerufen wird, wiederholt werden. (I90490)excludeFromSystemGesture
-Modifikatoren für einfachen Zugriff aufsetSystemGestureExclusionRects
(I46f07) von Android hinzugefügt
Fehlerkorrekturen
- Das Verhalten der Lupe für die Textauswahl wurde an die Lupenfunktion der Plattform 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
werden veröffentlicht. Version 1.2.0-alpha01 enthält diese Commits.
API-Änderungen
- Der neue Parameter
userScrollEnabled
wurde zuLazyColumn
,LazyRow
undLazyVerticalGrid
hinzugefügt, damit Nutzer das vom Nutzer initiierte Scrollen über Touch-Gesten oder Aktionen für Bedienungshilfen vorübergehend oder dauerhaft deaktivieren können. Programmatisches Scrollen mithilfe der Methoden für den Status ist weiterhin zulässig. (I7eae9, b/201150093) - Füge dem Lupenmodifikator einen
onSizeChanged
-Callback hinzu. (I6879f) - Das Lupen-Widget wird jetzt angezeigt, wenn Auswahlziehpunkte in einem
SelectionContainer
ziehen. (I30b38, b/139320979)
Fehlerkorrekturen
- Das Problem, dass der
TextField
-Cursor-Ziehpunkt nicht ausgeblendet wird, wenn er aus der Ansicht gescrollt wird, wurde behoben. (I14552, b/208883748)
Aktualisierungen von Abhängigkeiten
- Jetzt hängt der Kotlin-Code
1.6.10
ab.
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
werden veröffentlicht. Version 1.1.1 enthält diese Commits.
Fehlerkorrekturen
NullPointerException
korrigieren unterandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462)- Ein Absturz wurde behoben, der durch Inhalte in der Zwischenablage beim Lesen aus der Zwischenablage auf Android-Geräten verursacht wurde. (I06020, b/197769306)
- RTL in
LazyVerticalGrid
korrigiert (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
werden 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
- Beachten Sie, dass in Compose 1.0 der Layoutbereich von Material-Komponenten erweitert wird, um die Material-Richtlinien für Barrierefreiheit im Hinblick auf die Größe des Berührungszielbereichs zu erfüllen. Beispielsweise wird das Berührungsziel der Schaltfläche auf eine Mindestgröße von 48 x 48 dp maximiert, auch wenn Sie eine kleinere Größe für die Schaltfläche festgelegt haben. Dadurch wird das Verhalten von „Compose-Material“ an das gleiche Verhalten wie Material Design-Komponenten angepasst, was beim Mischen von Ansichten und der Funktion „Compose“ zu einem einheitlichen Verhalten führt. Durch diese Änderung wird auch sichergestellt, dass beim Erstellen Ihrer Benutzeroberfläche mit Compose Material-Komponenten die Mindestanforderungen für die Barrierefreiheit des Berührungszielbereichs erfüllt werden.
- Stabile Unterstützung für Navigationsschienen
- Eine Reihe von zuvor experimentellen APIs wird zu einer stabilen Version umgestellt
- Unterstützung neuerer 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
werden veröffentlicht. Version 1.1.0-rc03 enthält diese Commits.
Fehlerkorrekturen
- Aktualisiert zur Unterstützung von Compose Material 1.1.0-rc03
Version 1.1.0-rc01
15. Dezember 2021
androidx.compose.foundation:foundation:1.1.0-rc01
und androidx.compose.foundation:foundation-layout:1.1.0-rc01
werden veröffentlicht. Version 1.1.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Jetzt dürfen negative Scroll-Offsets an
LazyListState.scrollToItem()
undLazyListState.animateScrollToItem()
übergeben werden. (Iceb90, b/184252837) - Es wurde ein Fehler behoben, der zu fehlenden Scrollaktionen 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
werden veröffentlicht. Version 1.1.0-beta04 enthält diese Commits.
Neue Funktionen
- Für Kotlin-Kompatibilität aktualisiert
1.6.0
API-Änderungen
- Null-Zulässigkeit in
androidx.core.view
bereinigt(I7078a, b/204917439) - Es wurden experimentelle APIs hinzugefügt, mit denen PointerInputchange als Ganzes genutzt oder geprüft werden kann, ob es genutzt wurde. (I2e59d)
- Beim Ziehen des Cursors oder der Auswahlziehpunkte in Textfeldern wird ein Lupen-Widget angezeigt. (I5391e, b/203781358)
Fehlerkorrekturen
- Text-Ziehpunkte wurden korrigiert, wenn sich die IME-Sichtbarkeit ä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
werden veröffentlicht. Version 1.1.0-beta03 enthält diese Commits.
API-Änderungen
- LazyVerticalGrid unterstützt jetzt horizontale Spans. (I7e2fa, b/176758183)
Es wurde eine experimentelle Funktion zum Animieren von Positionen von Lazy-Listen-Elementen hinzugefügt. In LazyItemScope gibt es den neuen Modifikator
Modifier.animateItemPlacement()
. 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 du über
LazyListScope.item
oderLazyListScope.items
einen Schlüssel angibst, aktiviert dieser Modifikator Animationen für die Reihenfolge der Elemente. Neben der Neuanordnung von Elementen sind auch alle anderen Positionsänderungen, die durch Ereignisse wie Anordnungs- oder Ausrichtungsänderungen verursacht werden, animiert. (I59e7b, b/150812265)
- Wenn du ü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
werden veröffentlicht. Version 1.1.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Ripples und andere Hinweise werden jetzt nur dann verzögert, wenn sie sich in einem
Modifier.scrollable()
-Container befinden, und nicht mehr bei einem Down-Ereignis. (Ibefe0, b/203141462) - Es wurde eine experimentelle BringIntoView API hinzugefügt, mit der Sie eine Anfrage an Eltern senden können, damit diese scrollen können, um ein Element sichtbar zu machen (Ib918d, b/195353459).
Externer Beitrag
Modifier.pointerHoverIcon
(I95f01) hinzugefügt
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
werden 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 können, 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
werden veröffentlicht. Version 1.1.0-alpha06 enthält diese Commits.
API-Änderungen
- Für das Layout wurde eine Überlastung ohne untergeordnete Elemente mit verbesserter Effizienz hinzugefügt (Ib0d9a).
SemanticsNodeInteraction.performSemanticsAction
gibt jetzt dasSemanticsNodeInteraction
zurück, für das die Funktion aufgerufen wurde. I9e5db:performScrollToNode(matcher: SemanticsMatcher)
wurde hinzugefügt, das einen scrollbaren Container zu dem Inhalt scrollt, der mit dem angegebenen Matcher übereinstimmt. (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
werden veröffentlicht. Version 1.1.0-alpha05 enthält diese Commits.
API-Änderungen
- PointerEventChange wurde um experimentelle Verlaufszeiger erweitert. (Ic1fd8, b/197553056, b/199921305)
Fehlerkorrekturen
- Die Unterstützung von Bedienungshilfen für scrollbare Elemente (sowohl Lazy als auch nicht Lazy) in Bezug auf das Scrollen wurde korrigiert (I6cdb0).
Version 1.1.0-alpha04
15. September 2021
androidx.compose.foundation:foundation:1.1.0-alpha04
und androidx.compose.foundation:foundation-layout:1.1.0-alpha04
werden veröffentlicht. Version 1.1.0-alpha04 enthält diese Commits.
API-Änderungen
performGesture
undGestureScope
wurden verworfen und durchperformTouchInput
undTouchInjectionScope
ersetzt. (Ia5f3f, b/190493367)touchBoundsInRoot
zuSemanticsNode
hinzugefügt, die die Mindestgröße für Berührungszielbereiche enthält, damit Entwickler sicherstellen können, dass Berührungszielbereiche die Mindestanforderungen für die Barrierefreiheit erfüllen. (I2e14b, b/197751214)
Fehlerkorrekturen
- Auf Android 12-Geräten wird Stretch-Overscroll 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
werden veröffentlicht. Version 1.1.0-alpha03 enthält diese Commits.
Neue Funktionen
- Aktualisierung von „Compose“-
1.1.0-alpha03
auf eine Abhängigkeit von Kotlin-1.5.30
wurde aktualisiert. (I74545)
API-Änderungen
- Glow-Effekt für das Scrollen wurde hinzugefügt. Es wurde eine neue experimentelle OverScrollConfiguration API 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 hat jetzt withTimeout() und withTimeoutOrNull() (I507f0, b/179239764, b/182397793).
- Eine Testmethode zum Abrufen der verkürzten Grenzen wurde hinzugefügt. (I6b28e)
- Zur Gewährleistung der Zugänglichkeit wurde die Mindestgröße des Berührungszielbereichs zur Verwendung in der Semantik und der Zeigereingabe zu ViewConfiguration hinzugefügt. (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
werden 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
werden veröffentlicht. Version 1.1.0-alpha01 enthält diese Commits.
API-Änderungen
- Aktualisierte Methode
DrawScope#drawImage
, die Quell- und Zielrekte nutzt, um einen optionalen Parameter „FilterQuality“ zu verarbeiten. Dies ist nützlich für Pixelart, die verpixelt werden soll, wenn sie für pixelbasierte Grafiken hochskaliert werden. Die zusammensetzbare Funktion „BitmapPainter + Image“ wurde aktualisiert, sodass auch ein optionaler Parameter „FilterQuality“ verwendet wird (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 semantische Aktionen für Lazy-Listen und reguläre Scroll-Komponenten ist jetzt animiert (Id9066, b/190742024).
Externer Beitrag
LazyVerticalGrid
akzeptiert jetzt sowohl horizontale als auch vertikale Anordnungsparameter. (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
werden veröffentlicht. Version 1.0.5 enthält diese Commits.
Fehlerkorrekturen
- Ein Absturz-Tracking für abgeleiteteStateOf-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
werden veröffentlicht. Version 1.0.4 enthält diese Commits.
Aktualisierungen von Abhängigkeiten
- Aktualisiert und hängt von Kotlin ab
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
werden veröffentlicht. Version 1.0.3 enthält diese Commits.
Aktualisierungen von Abhängigkeiten
- Aktualisiert und hängt von Kotlin ab
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
werden veröffentlicht. Version 1.0.2 enthält diese Commits.
Aktualisiert, um den Compose-Release 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
werden veröffentlicht. Version 1.0.1 enthält diese Commits.
Aktualisierungen von Abhängigkeiten
- Aktualisiert, sodass sie von Kotlin-
1.5.21
abhängig sind.
Version 1.0.0
28. Juli 2021
androidx.compose.foundation:foundation:1.0.0
und androidx.compose.foundation:foundation-layout:1.0.0
werden 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 Blog zur Compose-Version.
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 die minSdkVersion auf 24 oder höher. 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
werden 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
werden veröffentlicht. Version 1.0.0-rc01 enthält diese Commits.
API-Änderungen
- Canvas unterstützt jetzt den Parameter „contentDescription“ für Barrierefreiheit. (Ib547c)
Fehlerkorrekturen
- Deaktivierte Schaltflächen, Infokarten, Kästchen und die gesamten
Modifier.clickable(enabled=false)
verhindern, dass Klicks zum übergeordneten Element weitergeleitet werden. (Ic2c3b, b/183908811)
Version 1.0.0-beta09
16. Juni 2021
androidx.compose.foundation:foundation:1.0.0-beta09
und androidx.compose.foundation:foundation-layout:1.0.0-beta09
werden 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)- die Rollen „enum“ und „LiveRegionMode“ in Inline-Klassen mit privatem Konstruktor (Id1890) ändern.
- KeyboardCapitalization wird in Inline-Klasse konvertiert. (Id5a1c)
- TextOverflow wird in eine Inline-Klasse geändert. (I433af)
Fehlerkorrekturen
- Wenn Sie nun eindeutige Schlüssel für LazyColumn/Row-Elemente angeben, wird die Scrollposition auf Grundlage des Schlüssels beibehalten. Das heißt, wenn Sie Elemente vor dem aktuell sichtbaren Element hinzufügen/entfernen, wird das Element mit dem angegebenen Schlüssel als erstes sichtbares Element beibehalten. (Id263f, b/184257857)
- Die Schlüsselkonstanten sind vorerst @ExperimentalComposeUiApi. Durch die Verarbeitung von Code können vor der Stabilisierung private Konstanten deklariert werden. (Ia5d48)
- IdlingStrategy wurde zu AndroidComposeTestRule hinzugefügt. Damit können Frameworks getestet werden, um einen alternativen Mechanismus zu installieren, der auf Ruhe wartet oder stillgelegt wird. Verwenden Sie
AndroidComposeTestRule.setIdlingStrategyFactory()
, bevor Sie mit dem Test beginnen, um Ihre eigene Strategie zu implementieren. (I608fa)
Hinzugefügte Profilregeln
In diesem Release werden Profilregeln zu den folgenden Erstellungsmodulen (I14ed6) 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-Datei
Was sind Profilregeln?
Profilregeln für eine Bibliothek sind 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 menschenlesbaren ART-Profilformats, das bei Verwendung vonadb shell profman --dump-classes-and-methods ...
verwendet wird. Für die Ausrichtung auf Methoden oder Klassen stehen zwei Regeln für diese Regeln zur Verfügung.Eine Methodenregel hat das folgende Muster:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Und eine Klassenregel hat das folgende Muster:
<CLASS_DESCRIPTOR>
In diesem Fall ist
<FLAGS>
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, 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 wird und im Voraus kompiliert werden sollte, um Kosten für Kompilierung und 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 weist darauf hin, dass sie beim Start verwendet wird und im Heap vorab zugewiesen werden sollte, um die Kosten für das Laden der Klasse zu vermeiden.
So funktioniert's
- Bibliotheken können diese Regeln definieren, die in AAR-Artefakte verpackt werden. Wenn dann eine App erstellt wird, die diese Artefakte enthält, werden diese Regeln zusammengeführt und die zusammengeführten Regeln 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 vorab eine bestimmte Teilmenge der Anwendung zu kompilieren und so die Leistung der Anwendung, insbesondere die erste Ausführung, zu verbessern. Dies hat keine Auswirkungen auf Anwendungen, die debuggen werden können.
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
werden veröffentlicht. Version 1.0.0-beta08 enthält diese Commits.
API-Änderungen
- Die Enum „NestedScrollSource“ wird durch eine Inline-Klasse ersetzt. (Ie321b, b/187055290)
- Die Verwendung von Aufzählungen wurde auf Inline-Klassen umgestaltet, um Probleme mit Vollständigkeit bei Anweisungen zu vermeiden, wenn neue Aufzählungswerte hinzugefügt werden. (I2b5eb)
- Fügt ein Zeitlimit für Tippvorgänge für anklickbar bzw. ein-/ausschaltbar hinzu, um zu verhindern, dass beim Scrollen / Ziehen eine Welle angezeigt wird (Ia2704, b/168524931)
- Die Attribute „ContentDescription“ und „Text“ sind keine einzelnen Werte mehr, sondern Listen. Auf diese Weise können sie unverändert zusammengeführt werden, anstatt Verkettungen. 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 durch eineFocusState
-Schnittstelle ersetzt (Iccc1a, b/187055290)- ImeAction-Enum wird durch eine Inline-Klasse ersetzt. (I18be5, b/187055290)
AnnotatedString.withAnnotation
-Funktionen heißen jetzt ExperimentalTextApi und nicht 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 leerem Text wurden behoben. (I33ab5, b/187437299)
- Symbolleiste nach „SelectAll“ anzeigen (I495d9, b/185919613)
- Ein Problem mit scrollbaren Containern, bei denen die untergeordneten Elemente an der Kreuzachse abgeschnitten wurden, wurde behoben. Es war leicht reproduzierbar, wenn Sie eine LazyRow mit Kartenelementen haben. Jetzt wird der Schatten nicht abgeschnitten. (Icb635, b/186318448)
- Problem behoben, bei dem Wellen / andere Hinweise bei einem langen Klick manchmal hängen geblieben sind, wenn Modifier.combinedClickable verwendet wurde (I2298c, b/186223077)
detectDragGesures
,detectVerticalGestures
unddetectHorizontalGestures
nutzen jetzt die Positionsänderung automatisch. Ein Aufruf von change.consumePositionChange in den onDrag-Callbacks ist nicht mehr erforderlich (I42fc4, b/185096350, b/187320697).Modifier.onGloballyPositioned()
wurde geändert, um nach Anwendung aller Modifikatoren die Koordinaten dieses Modifikators in die Ausgabe aufzunehmen, nicht die Layoutkoordinaten. Das bedeutet, dass sich jetzt die Reihenfolge der Modifikatoren darauf auswirkt, welche Koordinaten gemeldet werden. (Ieb67d, b/177926591)
Version 1.0.0-beta07
18. Mai 2021
androidx.compose.foundation:foundation:1.0.0-beta07
und androidx.compose.foundation:foundation-layout:1.0.0-beta07
werden veröffentlicht. Version 1.0.0-beta07 enthält diese Commits.
API-Änderungen
- Die nächste sichtbare Element-Vorabruflogik wird für LazyColumn/Row eingeführt (I8a4bc, b/184940225).
- Ziehpunkt zur Clipauswahl hinzugefügt (Iff80d, b/183408447)
Fehlerkorrekturen
- LazyColumn/Row sorgt nun dafür, dass bis zu zwei zuvor sichtbare Elemente aktiv (nicht verworfen) bleiben, auch wenn sie bereits herausgescrollt werden. Auf diese Weise kann die Komponente die aktiven Unterzusammensetzungen wiederverwenden, wenn wir ein neues Element zusammensetzen müssen, was die Scroll-Leistung verbessert. (Ie5555)
- PaintBackground entfernen. (I38660)
- Hintergrund für Auswahl mit DrawScope zeichnen (I73c61, b/186674472)
- Eine Beta06-Regression, die Zeilen/Spalten unter Verwendung von SpacedBy-Anordnungen für das Layout gewichteter untergeordneter Elemente betrifft, 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
werden veröffentlicht. Version 1.0.0-beta06 enthält diese Commits.
API-Änderungen
- Konflikte mit Bedienungsgeste lösen (I1145e)
- Bedienungshilfen-APIs für CollectionInfo und CollectionItemInfo wurden hinzugefügt, mit denen Sammlungen und zugehörige Elemente für Bedienungshilfen markiert werden können (Id54ef, b/180479017).
SemanticsActions.ScrollToIndex
wurde hinzugefügt, um eine Liste mit indexierten Elementen zu einem Element mit einem bestimmten Index zu scrollen, undSemanticsProperties.IndexForKey
, um den Index eines Elements in einer Liste mit Schlüsselelementen abzurufen. Beide Aktionen werden von LazyList implementiert.SemanticsNodeInteraction.performScrollToIndex
wurde 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)
- AnnotatedString-Speicherunterstützung in TextFieldValue.Saver. Zusätzliche Funktionen des Dienstprogramms addTtsAnnotation und withAnnotation zu AnnotatedString.Builder (I8cbdc, b/178446304)
0.dp
-Standardparameterwerte wurden zuPaddingValues(horizontal, vertical)
hinzugefügt (I05571, b/181336792)
Fehlerkorrekturen
- Untergeordnete Zeilen und Spalten mit
weight(fill = false)
füllen 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
werden veröffentlicht. Version 1.0.0-beta05 enthält diese Commits.
API-Änderungen
- Die FlingBehavior-Oberfläche ist jetzt als @Stable markiert. Alle Implementierungen müssen dem
@Stable
-Vertrag entsprechen. (I93354, b/184830577)
Fehlerkorrekturen
- Scrollaktionen
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
undaccessibilityActionScrollDown
für Bedienungshilfen wurden korrigiert. Anstatt bis zum Ende des scrollbaren Elements zu scrollen, scrollt es jetzt um einen Bildschirm in die angegebene Richtung. (Ieccb0) - Die AndroidManifest-Dateien aus „ui-test-manifest“ und „ui-tooling-data“ sind jetzt mit Android 12 (I6f9de, b/184718994) kompatibel.
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
werden veröffentlicht. Version 1.0.0-beta04 enthält diese Commits.
API-Änderungen
- Benennen Sie „hideSoftwareKeyboard“ und „showSoftwareKeyboard“ auf SoftwareKeyboardController in
hide()
bzw.show()
um.- Die vollständige CompositionLocal-Schnittstelle für LocalSoftwareKeyboardController bereitstellen, um diese festzulegen (besonders bei Tests nützlich) (I579a6)
TextOverflow.Visible
wird eingeführt. (Ic8f89)- Öffentliche Instanzen von
RowScope
,ColumnScope
,BoxScope
undBoxWithConstraintsScope
wurden entfernt. (I4e83e, b/181869067)
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem Elemente von
LazyColumn
/LazyRow
, die sich an den Rändern befinden, nach dem schnellen Ziehen falsch positioniert wurden (Ie4d13, b/183877420). Bisher waren lokale zusammensetzbare Funktionen aufgrund ihrer Parameter überspringbar. Nach dieser Änderung werden keine lokalen zusammensetzbaren Funktionen mehr übersprungen. Diese Änderung wurde vorgenommen, da es üblich ist und erwartet wird, dass lokale Funktionen Parameter aus der übergeordneten Funktion erfassen. Wenn sie übersprungen werden, kommt es häufig zu Programmfehlern.
Schauen wir uns das Beispiel an:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }
Vor dieser Änderung wurde die zusammensetzbare Funktion
ShowCount
immer übersprungen, auch wenn 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
werden veröffentlicht. Version 1.0.0-beta03 enthält diese Commits.
API-Änderungen
DefaultMonotonicFrameClock
wurde verworfen. Durch den Aufruf vonwithFrameNanos
oderRecomposer.runRecomposeAndApplyChanges
ohneMonotonicFrameClock
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
werden veröffentlicht. Version 1.0.0-beta02 enthält diese Commits.
API-Änderungen
- In der LazyColumn-Messlogik wurden mehrere kleine Optimierungen hinzugefügt (Ic6889).
- Eine neue lokale
LocalSoftwareKeyboardController
-Zusammensetzungs-API wurde hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I5951e, b/168778053) - Eine neue lokale
LocalSoftwareKeyboardController
-Zusammensetzungs-API wurde 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
werden 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 zu
detectDragGestures
hinzugefügt (I67269, b/179995594) - Modifikatoren zur Größenanpassung an intrinsische Elemente sind nicht mehr experimentell. (I15744)
- dp-Assertions entfernt (I798d2)
- Der SoftwareKeyboardController-Callback wurde aus allen Textfeldern entfernt, der bald durch eine neue API ersetzt werden soll. (Iae869, b/168778053)
- MeasureBlocks wurde in MeasurePolicy umbenannt und bietet jetzt eine unterhaltsame Benutzeroberfläche. Layout-APIs wurden für die Verwendung von MeasurePolicy aktualisiert bzw. vereinfacht. (Icab48, b/167662468, b/156751158)
InteractionState
wurde durch[Mutable]InteractionSource
ersetzt.- Schnittstellen sind für das Senden und Erfassen von Interaktionsereignissen verantwortlich.
- Verwenden Sie
interactionSource = remember { MutableInteractionSource() }
, anstattinteractionState = remember { InteractionState() }
an Komponenten wieButton
undModifier.clickable()
zu übergeben. - Verwenden Sie statt
Interaction.Pressed in interactionState
die Erweiterungsfunktionen für InteractionSource, z. B. InteractionSource.collectIsPressedAsState(). - Bei komplexen Anwendungsfällen können Sie mit InteractionSource.interactions den Stream von Interaktionen beobachten. Weitere Informationen finden Sie in der Dokumentation zu InteractionSource und in Beispielen.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Die nicht mehr unterstützten LayoutCoordinates-Methoden wurden entfernt. Verwenden Sie die Funktion „function“ anstelle der Eigenschaft für „positionInParent“ und „boundsInParent“ (I580ed, b/169874631, b/175142755).
- Für Eingabesitzungen über Low-Level-Textkomponenten wie CoreTextField wurde eine neue TextInputSession erstellt. (I8817f, b/177662148)
- „Placeable“ zeigt jetzt „measureSize“ an, der die Größe darstellt, die das untergeordnete Layout tatsächlich gemessen hat. Bei dieser Größe werden möglicherweise die Einschränkungen für die Messung nicht berücksichtigt. (Ib2729, b/172560206, b/172338608)
- Modifikator „selectGroup“ hinzufügen, mit dem eine Sammlung von Tabs oder Optionsfeldern für Bedienungshilfen markiert werden kann (Ie5c29)
LazyListState.animateScrollToItem hinzufügen
Mit dieser Methode wird automatisch zu einem bestimmten Element in der Liste gescrollt. I4bfd7.
ScrollableState.smoothScrollBy() wurde in animateScrollBy() umbenannt. „LazyListState.snapToItemIndex()“ wurde in „scrollToItem()“ umbenannt ScrollState.smoothScrollTo() wurde in „animateScrollTo()“ (I35ded) umbenannt
Modifier.zoomable wurde durch Modifier.transformable ersetzt. smoothPanBy, smoothRotationBy wurde als Funktion hinzugefügt. (Ifc32b, b/175294473)
defaultFactory
fürcompositionLocalOf
undstaticCompositionLocalOf
ist jetzt erforderlich und nicht mehr optional.Durch diese Änderung wird ein potenzieller Typfehler für Typen beseitigt, die keine Nullwerte zulassen und für die keine Standard-Factory bereitgestellt wurde. Zuvor wurde dadurch ein Nullverweis für einen Typ bereitgestellt, der keine Nullwerte zulässt.
Wenn für Typen Nullwerte zulässig sind, sollten Sie
{ null }
als Standard-Factory angeben.Wir raten davon ab, lokale Parameter mit Typen zu verwenden, die keine Nullwerte zulassen, es sei denn, ein vernünftiger Standardwert kann angegeben werden. Wenn kein vernünftiger Standardwert vorhanden ist, sollte das Lambda
defaultFactory
eine Ausnahme ausgeben. Allerdings bedeutet das Auslösen einer Ausnahme, dass Nutzer des lokalen Netzwerks eine implizite Abhängigkeit von der Bereitstellung haben, die vom Typsystem nicht erzwungen wird. (Ifbd2a)Indication#createIndication()
inIndication#rememberUpdatedIndication(InteractionState)
geändert und ParameterInteractionState
aus IndicationInstance#drawIndication()
entfernt. IndicationInstance sollte nur für das Zeichnen von visuellen Effekten zuständig sein und nicht das Starten von Animationen bzw. das Schreiben des Status als Reaktion auf InteractionState-Änderungen. Diese Animationen und Schreibvorgänge für Status sollten stattdessen innerhalb vonrememberUpdatedIndication()
erfolgen. Der Parameterindication
inModifier.indication
wurde ebenfalls in einen erforderlichen Parameter geändert. (Ic1764, b/152525426)Bei Textaktionen wird jetzt automatisch der Fokus 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 „smoothScrollBy“ und „scrollBy“ wurden in
androidx.compose.foundation.gestures.*
(I3f7c1, b/175294473) geändertFlingConfig wurde in FlingBehavior umbenannt und ermöglicht nun die Anpassung der Animierungsanimation anstelle vordefinierter Verkleinerungen. (I02b86, b/175294473)
Größenmodifikatoren wurden umbenannt. "Modifier.width/height/size" wurde in "requiredWidth/requiredHeight/requiredSize" umbenannt. "Modifier.preferredWidth/preferredHeight/preferredSize" wurden in "width/height/size" umbenannt. (I5b414)
„defaultMinSizeConstraints“ wurde in „defaultMinSize“ umbenannt. (I4eaae)
Modifier.tapTouchFilter wurde entfernt. Verwende stattdessen
Modifier.pointerInput { detectTapGestures(...) }
. (I266ed, b/175294473)der Teilverbrauch wurde aus dem Zeigereingabesystem entfernt. Die empfohlene Methode, um die Teilnutzung zu koordinieren, ist Modifier.nestedScroll. (Ie9c9b)
Die Ausrichtung wurde in das Foundation-Paket verschoben. VelocirtTracker wurde von ui.gesture zu ui.input.pointer verschoben. (Iff4a8, b/175294473)
AnimationClockObservable und Unterklassen wurden entfernt. AnimierteFloat wurde entfernt. (Icde52, b/177457083)
„DrawerState.open()“ und „drawerState.close()“ sind jetzt angehaltene Funktionen. Mit MemorystoreScope() können Sie den Umfang der Zusammensetzung ermitteln, um sie aufzurufen (I16f60, b/175294473).
Provider wurde in CompositionLocalProvider umbenannt
- Der Kompositionskonstruktor akzeptiert keinen Schlüsselparameter mehr und wurde eingestellt.
- CurrentsCompositeKeyHash wurde in eine zusammensetzbare Top-Level-Eigenschaft anstelle einer zusammensetzbaren Funktion der obersten Ebene umgewandelt.
- CompositionData und CompositionGroup wurden in den Namespace „androidx.compose.runtime.tooling“ verschoben
- ComposableLambda wurde anstelle einer konkreten Klasse als Interface erstellt und verfügt nicht mehr über Typparameter.
- ComposableLambdaN wurde als Schnittstelle anstelle einer konkreten Klasse erstellt und verfügt nicht mehr über Typparameter.
- Die Funktion „SnapshotFlow“ wurde in den Namespace „androidx.compose.runtime“ verschoben
- Die Zusammenführungsmethode von SnapshotMutationPolicy ist nicht mehr experimentell
- Die Funktion „clearRoots“ der obersten Ebene von
@TestOnly
wurde entfernt. Es ist nicht mehr erforderlich. - Die Funktionen „keySourceInfoOf“ und „resetSourceInfo“ wurden entfernt. Sie werden nicht mehr benötigt.
- Composer.collectKeySourceInformation wurde entfernt. Es ist nicht mehr erforderlich.
- Die Methoden "isJoinedKey", "joinKeyLeft" und "joinKeyRight" wurden entfernt. Sie werden nicht mehr benötigt.
- Verschiedene APIs auf oberster Ebene wurden verschoben und in verschiedene Dateien neu organisiert. Aufgrund der Semantik der Dateiklassen von Kotlin beeinträchtigt dies die Binärkompatibilität, aber nicht die Quellkompatibilität. Daher sollte dies für die meisten Nutzer kein Problem sein.
- (I99b7d, b/177245490)
Modifier.scrollable wurde überarbeitet. Jetzt wird die scrollbare Schnittstelle anstelle der ScrollableController-Klasse verwendet (I4f5a5, b/174485541, b/175294473).
Modifier.draggable akzeptiert jetzt DraggableState anstelle eines einfachen Lambda-Elements. Du kannst einen Status über
rememberDraggableState { delta -> }
erstellen, um das gleiche Verhalten wie zuvor zu erhalten (Ica70f, b/175294473).Die Modifikatoren requiredWidth(IntrinsicSize) und requiredHeight(IntrinsicSize) wurden für die erforderliche Größenanpassung zu internen Größen hinzugefügt. (I0a6b4)
Das eingestellte
emptyContent()
wird entfernt. Verwende stattdessen{}
. (Idb33f, b/179432510)Einige zuvor verworfene APIs (Ice5da, b/178633932) wurden gelöscht.
Fehlerkorrekturen
- Eine neue lokale Zusammensetzungs-API LocalSoftwareKeyboardController wurde 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
werden veröffentlicht. Version 1.0.0-alpha12 enthält diese Commits.
API-Änderungen
- Für Modifier.pointerInput sind nun Schlüssel zum Merken erforderlich, die angeben, wann die Koroutine für die Zeigereingabeerkennung bei neuen Abhängigkeiten neu gestartet werden soll. (I849cd)
- Testaktualisierung: hasText() prüft sowohl auf Eingabe- als auch auf Beschriftungs-/Hinweis-/Platzhaltertexte im Textfeld (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).
- Um die Namenskonventionen besser mit ImageBitmap und ImageVector abzugleichen, wurde ImagePainter in BitmapPainter umbenannt, damit parallel zu VectorPainter. (Iba381, b/174565889)
- Bessere Teilstring-Test-APIs mit Teilstrings jetzt als Argument (Icbe78)
- Das Koroutinen-Kontextelement
InfiniteAnimationPolicy
wurde eingeführt, das in Endlosanimationen 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 Funktionen zum Anhalten (If4288)
- ComponentActivity.setContent wurde nach androidx.activity.compose.setContent im Modul androidx.activity:activity-compose verschoben. ICF416
- Die Methoden "Destrukturierung" und "copy()" wurden aus mehreren Klassen entfernt, in denen sie nur selten verwendet wurden. (I26702, b/178659281)
Unterstützung für benutzerdefinierte Schlüssel für LazyColumn/LazyRow wurde hinzugefügt. So können wir Artikel besser neu anordnen. Der Status, den Sie in {}-Blöcken gespeichert haben, verschiebt sich also zusammen mit dem Element, wenn Sie Elemente neu anordnen oder das Element aus der Mitte entfernen.
LazyColumn { items(users, key = { user -> user.id }) { ... } }
Indication#createInstance wurde in @Composable geändert und LocalIndication in einen Indication geändert, nicht () -> Indication. (I5eeea, b/157150564)
„
Constraints.enforce
“ wurde durch „Constraints.constrain
“ ersetzt. (I8b8ea)„loadFontResource“ wurde eingestellt. Verwenden Sie stattdessen fontResource. „imageResource“, „loadImageResource“, „vectorResource“ und „loadVectorResource“ wurden eingestellt. Verwenden Sie stattdessen PainterResource. (I6b809)
Aus Leistungsgründen akzeptiert die ScrollAxisRange-Semantik nun Lambdas, die Gleitkommazahlen zurückgeben, anstelle von direkten Gleitkommazahlen. (If4a35, b/178657186)
Es wurde eine „EditableText“-Semantik hinzugefügt, um bearbeitbaren Eingabetext des Textfeldes für Barrierefreiheit zu markieren, und entsprechende Testmethoden zum Überprüfen der Semantik (I8e07a).
Modifier.clickable bietet jetzt keine Unterstützung für Mehrfach- und Langklicks. Verwenden Sie Modifier.combinedClickable, um diese Funktionalität zu erreichen. (Iafad1)
„toIntPx()“ wurde in „roundToPx()“ umbenannt. (I9b7e4, b/173502290)
IntBounds wurde in IntRect umbenannt und die API wurde verbessert. (I1f6ff)
Modifier.dragGestenFilter wurden eingestellt. Verwende stattdessen
Modifier.pointerInput { detectDragGestures (...)}
. Alternativ können Sie Modifier.draggable für Ziehbewegungen einer Achse verwenden (I0ba93, b/175294473).Ambients wurden umbenannt, sodass sie unter Ambient > CompositionLocal umbenannt werden. Ambients hießen früher „AmbientFoo“, jetzt heißt „CompositionLocals“ LocalFoo. (I2d55d)
Die Auswahl wurde auf die Grundlage verschoben. (I7892b)
Ähnlich wie wir die zusammensetzbare Funktion
state { 0 }
zuvor entfernt haben und jetzt die Verwendung wieremember { mutableStateOf(0) }
fördern, entfernen wir jetzt die zusammensetzbare FunktionsavedInstanceState { 0 }
. Sie sollten stattdessenrememberSaveable { mutableStateOf(0) }
verwenden. Es wird automatisch gespeichert und wiederhergestellt, wenn der in „MuttableState“ verwendete Typ im Bundle gespeichert werden kann. Wenn Sie bisher ein benutzerdefiniertes Saver-Objekt übergeben haben, müssen Sie jetzt eine neue Überlastung von savedSaveable mit dem ParameterstateSaver
verwenden. Die Nutzung sieht so aus:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004)Zusätzliche Passwortsemantik für Barrierefreiheit (I231ce)
ProgressBarRangeInfo.Indeterminate wurde hinzugefügt, um unbestimmte Fortschrittsbalken für Barrierefreiheit zu markieren (I6fe05).
Die Abspielzeit in der Animation ist jetzt auf Nanosekunden abgestimmt (If776a)
@ComposableContract wurde eingestellt und durch drei spezifischere Annotationen ersetzt.
@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 verworfen, da sie keine positiven Auswirkungen auf die Leistung oder ihren Wert mehr haben (I0484d).Recomposer können jetzt geschlossen werden. Bei geschlossenen Neuzusammensetzungen wird die Neuzusammensetzung so lange fortgesetzt, bis die untergeordneten Koroutinen abgeschlossen sind. Recomposer.shutDown wurde in „Abbrechen“ umbenannt, um einen Kontrast mit „Schließen“ zu bilden. (Ib6d76)
APIs im Zusammenhang mit LazyVerticalGrid sind als experimentell gekennzeichnet (Ia53e3, b/178519862).
MemorystoreSavedInstanceState() wurde in noteSaveable() umbenannt und in das Paket „androidx.compose.runtime.saveable“ verschoben. (I1366e, b/177338004)
RestorableStateHolder wurde in SaveableStateHolder umbenannt und in das Paket „androidx.compose.runtime.saveable“ verschoben. Die innere Methode RestorableStateProvider wurde in SaveableStateProvider umbenannt. Der generische Typ wurde entfernt, sodass Sie einfach „Any“ als Schlüssel übergeben können. 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 verschoben (I77fe6)
Artefakt „androidx:compose:runtime:runtime- saved-instance-state“ wurde in androidx:compose:runtime:runtime-saveable (I6dcac) umbenannt
Viele der seit Langem verworfenen APIs im UI-Paket werden gelöscht. I2f2dc.
Das Artefakt „compose:runtime-dispatch“ wurde jetzt eingestellt. MonotonicFrameClock ist jetzt in „compose:runtime“ und „AndroidUiDispatcher“ in „compose:ui“ zu finden. (Ib5c36)
Die Parameter von RounderCornerShape, CutCornerShape und CornerBasedShape wurden von links/rechts in Anfang/Ende 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 eine 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 „Compose“ ausgerichtet ist, wurde umgestaltet, um eine Schnittstelle anstelle einer konkreten Klasse zu verwenden. In der Schnittstelle wird auch kein Typparameter mehr verwendet.
Dies ist eine interne Änderung, die sich nicht auf die Quellcode-Kompatibilität auswirken sollte, ist aber eine funktionsgefährdende Änderung. (I3b922, b/169406779)
Modifier.scaleGestenFilter wurde entfernt. Verwende stattdessen Modifier.zoomable. Alternativ können Sie
Modifier.pointerInput { detectMultitouchGestures { ... }}
(Id5da1, b/175294473) verwenden.Die Funktion „AnimierteWert/Gleitkommazahl“ wird jetzt nicht mehr unterstützt. Bitte verwende stattdessen „Animatable“. (I71345, b/177457083)
- CoreText und CoreTextField aus der öffentlichen API entfernt
- Die verworfene SelectionContainer-Überlastung wurde entfernt (I99c19).
Verworfene Scrollfunktionen ohne Stoppen entfernen Konvertieren Sie diese in die Anhalten-Funktionen mit denselben Namen. Ein Koroutinenbereich kann über rememberCoroutineScope() abgerufen werden. (I3d39c, b/178169563)
„androidx.compose.foundation.layout.ConstraintLayout“ wurde zugunsten von „androidx.constraintlayout.compose.ConstraintLayout“ eingestellt. Sie müssen eine Abhängigkeit von
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01
hinzufügen. (I87adc)tapGestenFilter, doubleTapGestenFilter, longPressGestenFilter und pressIndicaitonGMSFilter wurden eingestellt. Verwende stattdessen "Modifier.clickable" oder "Modifier.pointerInput" mit der Funktion detectTapTouch. (I6baf9, b/175294473)
Recomposer.current()
wurde entfernt. [Summary]ComposeView verwenden jetzt standardmäßig verzögerte, fensterbezogene Recomposers, die vom ViewTreeLifecycleOwner für das Fenster gesteuert werden. Die Neuzusammensetzung und mit FrameNanos-basierte Animationsmarkierungen werden pausiert, während der Hostlebenszyklus angehalten wird. (I38e11)Recomposer.runningRecomposers bietet jetzt einen globalen StateFlow mit schreibgeschütztem RecomposerInfo zur Beobachtung des laufenden Kompositionsstatus während des Prozesses. Bevorzugen Sie diese API Recomposer.current(), da diese mittlerweile eingestellt wurde. (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
werden veröffentlicht. Version 1.0.0-alpha11 enthält diese Commits.
API-Änderungen
„scrollBy“ ohne Sperrung verwerfen, „scrollTo nicht sperren“ entfernen
Wir empfehlen jetzt, Funktion zum Sperren zu verwenden, um das Scrollen zu steuern und zu warten, bis das Scrollen beendet ist. Im Rahmen dieser Umstellung werden die Versionen dieser Funktionen, die nicht gesperrt sind, eingestellt und/oder entfernt. (Ie9ced)
smoothScrollBy ohne Sperrung einstellen. Wir empfehlen jetzt die Verwendung von Sperrfunktionen, um das Scrollen zu steuern und zu warten, bis das Scrollen abgeschlossen ist. Im Rahmen dieser Umstellung werden die Versionen dieser Funktionen, die nicht gesperrt sind, eingestellt. (I12880)
Dem Bild und Symbol wurde der Parameter für die Inhaltsbeschreibung hinzugefügt. Es wird verwendet, um die Bedienungshilfen zu beschreiben (I2ac4c).
BasicTextField hat einen neuen Parameter namens „decorationBox“ erhalten. Sie können Dekorationen wie Symbole, Platzhalter, Beschriftungen und Ähnliches wie das Textfeld hinzufügen und den Zielbereich des Textfelds vergrößern. (I16996)
Der Parameter „canDrag“ wurde aus „Modifier.draggable“ entfernt (Ic4bec, b/175294473).
Die Funktion „AnimierteFloat.fling“, die FlingConfig akzeptiert, wurde entfernt. Verwenden Sie stattdessen „animatable.animateDecay“. (I4659b, b/177457083)
data class
wurde aus den folgenden Klassen entfernt:- InlineTextContent
- Sprachliste
- (I605c7)
klickbar, ein-/ausschaltbar 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 einem großen Scroll-Inhalt weniger effizient, da wir mit LazyColumn nur sichtbare Elemente erstellen/messen/zeichnen können. Um zu verhindern, dass Nutzer ineffizient arbeiten, haben wir „ScrollableColumn“ und „ScrollableRow“ eingestellt und stattdessen die Nutzung von LazyColumn und LazyRow erhöht. Nutzer können trotzdem entscheiden, dass sie das Lazy-Verhalten nicht benötigen, und die Modifikatoren direkt wie folgt verwenden: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
Neue Factory-Methode
items(count: Int)
für den Bereich von LazyColumn/LazyRow/LazyVerticalGrid. „items(items: List)
“ und „itemsIndexed(items: List)
“ sind jetzt Erweiterungsfunktionen. Sie müssen sie also manuell importieren, wenn sie verwendet werden. 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 „proConstraints“ wurde zu Box hinzugefügt, um anzugeben, ob die eingehenden Mindesteinschränkungen an den Inhalt der Box übergeben werden sollen oder nicht. Der Standardwert ist „false“. (I0125b, b/152613457)
Fehlerkorrekturen
- onCommit, onDispose und onActive wurden zugunsten der SideEffect und DisposableEffect APIs (If760e) eingestellt
- WithConstraints wurde in „BoxWithConstraints“ umgestaltet und nach „fundation.layout“ verschoben. (I9420b, b/173387208)
Änderungen an den Werksfunktionen für Schriftart/Schriftart/Schriftart
- Werksfunktionen hinzugefügt, die mit einem Großbuchstaben beginnen
- Verworfene frühere Factory-Funktionen mit Kleinbuchstaben
- Neue Factory-Funktionen geben die FontFamily anstelle von Unterklassen zurück.
- Konstruktoren der abgeleiteten Klassen ausgeblendet, damit 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. Die Factory-MethodecreateEmptyComposeRule()
wurde hinzugefügt, die einComposeTestRule
zurückgibt und keine Activity für Sie startet. Verwenden Sie diese Option, wenn Sie Ihre Activity 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 (Ie7e25)
Die Dichte ist jetzt der Empfängerumfang für Arrangement-Schnittstellen. (I18aad)
TextFieldValue akzeptiert AnnotatedString. Dabei handelt es sich jedoch um eine reine API-Änderung. Die Textbearbeitung mit mehreren Stilen wurde noch nicht implementiert.
initial
wurde aus den Konstruktorparametern von EditingBuffer entfernt. (I326d5)
"invalid" und "compositionReference()" wurden zugunsten von "currentRecomposeScope" und "memoryCompositionReference" eingestellt. (I583a8)
AnnotatedString wird geändert, um kotlin.CharSequence zu erweitern. Daher sind „length“ und „subSequence“ jetzt Instanzfunktionen und Erweiterungsfunktionen werden entfernt. (Iaf429)
Dauer und Betriebszeit werden durch lange Millisekunden ersetzt. Mit diesem Schritt wird die Abhängigkeit der Zeigereingabe von diesen Klassen beseitigt. (Ia33b2, b/175142755, b/177420019)
MerkObserver ersetzt CompositionLifecycleObserver und CompositionLifecycleObserver wurde jetzt eingestellt.
RememberObserver
ist ein Ersatz fürCompositionLifecycleObserver
mit geänderter Semantik und umbenannten Methoden. Der Wechsel zur neuen API kann mechanisch für Objekte erfolgen, die nur einmal gespeichert werden. Dies ist und bleibt die empfohlene Vorgehensweise. Wenn eine Referenz jedoch in einer Komposition mehr als einmal 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 die Garantie für einen einzelnenonEnter
-Aufruf unzuverlässig wurde und fürRememberObserver
entfernt wurde.RememberObserver
fügtonAbandoned
hinzu, die aufgerufen wird, wenn dieRememberObserver
-Instanz von dem anremember
übergebenen Callback zurückgegeben wird, aber im Zusammensetzungsstatus nicht gespeichert wurde. Daher wirdonRemembered
nie aufgerufen. Dies kann auftreten, wenn eine Ausnahme die Komposition vor dem Abschluss beendet oder die Zusammensetzung verworfen wird, weil der Status, für den eine Komposition erstellt wurde, nicht mehr aktuell ist oder nicht mehr benötigt wird. Wenn die Instanz vonRememberObserver
, die der oben genannten Referenzempfehlung folgt, eine externe Ressource sowohlonForgotten
als auchonAbandoned
verfolgt, weisen beide darauf hin, dass die Ressource nicht mehr benötigt wird. Wenn das Objekt die gestarteten Arbeitsschritte oder inonRemembered
zugewiesenen Ressourcen verfolgt, kannonAbandoned
ignoriert werden, da es beionRemembered
nicht 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
- SpanStyle
- Textstil
- Schriftstärke
- Textdekoration
- TextGeometricTransform
- Textindex
- TextLayoutResult
- TextLayoutInput (Iaff99)
Die experimentellen monotonicFrameAnimationClockOf-Methoden (Ib753f, b/170708374) wurden entfernt.
Globale Koordinatenmethoden wurden verworfen und neue fensterbasierte Koordinatenmethoden eingeführt. (Iee284)
Verwenden Sie „ImeAction.None“ anstelle von „ImeAction.NoAction“.
- Verwenden Sie „ImeAction.Default“ anstelle von „ImeAction.Unspecific“ (Ie1bcc).
FocusRequester.createRefs ist jetzt als experimentell gekennzeichnet, da es sich möglicherweise ändern kann. (I2d898, b/177000821)
„SemanticsPropertyReceiver.hidden“ wurde in „invisibleToUser“ umbenannt und mit „@ExperimentalComposeUiApi“ gekennzeichnet. „AccessibilityRangeInfo“ wurde in „ProgressBarRangeInfo“ umbenannt. „stateDescriptionRange“ wurde in „progressBarRangeInfo“ umbenannt. „AccessibilityScrollState“ wurde in „ScrollAxisRange“ umbenannt. „horizontalAccessibilityScrollState“ wurde in „horizontalAccessibilityScrollState“ umbenannt. „verticalAccessibilityScrollState“ wurde in „VerticalScrollAxisRange“ umbenannt. (Id3148)
VisualTransformation wurde in eine funktionsfähige Schnittstelle geändert (I3bba4)
TestCoroutineDispatcher beim Testen verwenden (I532b6)
PointerInputData wurde entfernt und PointerInputChange geändert, um alle Felder von PointerInputData bereitzustellen. PointerInputEvent und PointerInputEventData wurden intern erstellt, da sie in keiner öffentlichen API verwendet werden. (Ifff97, b/175142755)
TextInputService.onStateUpdated in updateState (Id4853) umbenannt
Entfernen Sie displaySize. Dies sollte vermieden werden. Normalerweise ist es besser, die Größe 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
werden veröffentlicht. Version 1.0.0-alpha10 enthält diese Commits.
API-Änderungen
- ImeOptions und KeyboardOptions sind keine Datenklassen mehr (I3c898, b/168684531).
- Änderungen an der VisualTransformation API
- OffsetMap wurde in OffsetMapping umbenannt
- OffsetMapping.identityOffsetMap wurde in OffsetMapping.Identity umbenannt
- PasswordTransformation ist nicht mehr Datenklasse
- OffsetMapping wurde in seine eigene Datei verschoben
- (I0bdf3)
- Änderungen an der EditOperations API
- EditOperation wurde in EditCommand umbenannt
- Befehlssuffix für konkrete EditOperation-Implementierungen hinzugefügt
- „EditCommand“ ist keine Datenklassen mehr
- Funktion "EditOperation.process" wurde in "applyTo" umbenannt
- InputEventListener wurde in InputEventCallback umbenannt.
- (I0a366)
- Die Geschwindigkeit wurde so geändert, dass Komponenten und mathematische Operationen enthalten sind. (Ib0447)
- @ExperimentalTesting wurde in @ExperimentalTestApi umbenannt, um die Konsistenz mit ähnlichen experimentellen API-Annotationen zu gewährleisten (Ia4502, b/171464963).
- Zusätzliche experimentelle stickyHeader-Methode für LazyColumn/LazyRow (I0a81d)
- Ranamed Color.useOrElse() zu Color.takeOrElse() (Ifdcf5)
- TestUiDispatcher wurde eingestellt. Stattdessen „Dispatchers.Main“ verwenden (Ic171f, b/175385255)
- Ein/Aus-Schaltfläche zu Foundation Strings.kt hinzufügen (I4a5b7, b/172366489)
- „nativeClass“ wurde in ein UI-Modul verschoben und intern gemacht. Die Verwendung von „nativeClass“ in gleich-Implementierungen wurde aktualisiert, um stattdessen „is MyClass“ zu verwenden. (I4f734)
- FlowRow und FlowColumn wurden eingestellt. Bitte 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)
- Einführung von SelectionRegistrar.notifySelectableChange zur Benachrichtigung von Selectable-Updates für SelectionManager. (I6ff30, b/173215242)
fun Dp.isFinite()
inval Dp.isFinite
geändert (I50e00)- „Constraints#FreeBy“ wurde in „isSatisfiedBy“ umbenannt. (I9cf5c)
- Für Inline-Klassen mit einer nicht spezifizierten Konstante wurden „isspezifiziert“, „isUnspecific“ und „useOrElse“ hinzugefügt. (I93f7b, b/174310811)
Fehlerkorrekturen
- Neue koroutinenbasierte API
Animatable
, die eine gegenseitige Exklusivität in den Animationen gewährleistet. Neues DecayAnimationSpec zur Unterstützung der mehrdimensionalen Abnahmeanimation (I820f2, b/168014930) - Unterstützung für deaktivierte und schreibgeschützte Textfelder hinzugefügt (I35279, b/171040474, b/166478534)
animate()
wird jetzt durchanimateAsState()
ersetzt, wodurch einState<T>
anstelle vonT
zurückgegeben wird. Dies führt zu einer besseren Leistung, da der Entwertungsbereich darauf beschränkt werden kann, wo der Statuswert gelesen wird. (Ib179e)- Fügen Sie die Semantics Role API und den klickbaren, auswählbaren und ein-/ausschaltbaren SemanticsModifier als Parameter hinzu. Modifizierer.progressSemantics geändert, sodass der Slider ihn ebenfalls verwenden kann. (I216cd)
- Auf das native keyEvent kann jetzt über keyEvent.nativeKeyEvent zugegriffen werden (I87c57, b/173086397).
Version 1.0.0-alpha09
16. Dezember 2020
androidx.compose.foundation:foundation:1.0.0-alpha09
und androidx.compose.foundation:foundation-layout:1.0.0-alpha09
werden 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 smoothScrollBy auch zu einer Erweiterungsfunktion in „Scrollable“ verschoben, die diese Funktion nutzt. (I2153b)
LazyVerticalGrid wird hinzugefügt. (I17267, b/162213211)
LazyColumnFor, LazyRowFor, LazyColumnForIndexed und LazyRowForIndexed werden eingestellt. Stattdessen LazyColumn und LazyRow verwenden (I5b48c)
Zum Anhalten von Pointer-Eingabe-APIs wurde HandlePointerInputScope in AwaitPointerEventScope und handlePointerInput() in awaitPointerEventScope() umbenannt. (Idf0a1, b/175142755)
LazyListState.layoutInfo wurde hinzugefügt, wodurch eine Liste der Größen und Offsets der aktuell sichtbaren Elemente verfügbar wird (If8678, b/170472532).
Die Annotation "ExperimentalPointerInput" (Ia7a24) wurde entfernt.
InteractionState-Unterstützung für Textfelder wurde hinzugefügt. (I61d91)
Fügen Sie einen ReverseLayout-Parameter für LazyColumn/Row hinzu. Wenn
true
-Elemente von unten nach oben zusammengesetzt werden undLazyListState.firstVisibleItemIndex == 0
bedeutet, dass sich das erste Element ganz unten befindet. (I552ae, b/166589935)verticalArrangement-Parameter wurden für LazyColumn hinzugefügt. Der Parameter „HorizontalArrangement“ wurde für LazyRow hinzugefügt. Mithilfe des Arrangements können wir einen Abstand zwischen den Elementen hinzufügen und die Anordnung der Elemente festlegen, wenn nicht genügend Platz vorhanden ist, um die Mindestgröße zu füllen. (Icf79a, b/170394300)
DetectMultitouchGesten verwendet jetzt einen Callback mit kombinierten Parametern für Schwerpunkt, Schwenken, Zoomen und Drehen. (Ie6e1c)
„ContentDrawScope“ wurde in das ui-graphics-Modul 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 intern im Composer-Modul.
CompositionData und CompositionGroup wurden als Ersatz für die UI-Tooling API hinzugefügt, mit der Informationen zur Zusammensetzung extrahiert werden können. Sie sind öffentlich, aber nicht für die Verwendung außerhalb der UI-Tooling API gedacht, da sie die Rohdaten bereitstellen, die die UI-Tooling API interpretiert (I31a9c).
Überarbeitetes ShaderBrush, um eine Shader-Instanz langsam zu erstellen, wenn Größeninformationen aus der Zeichenumgebung verfügbar sind. Dies ist nützlich, um Farbverläufe zu definieren, die zum Zeitpunkt der Erstellung die gesamten Zeichengrenzen einer zusammensetzbaren Funktion einnehmen, ohne benutzerdefinierte DrawModifier-Implementierungen zu implementieren.
Die Konstruktor-APIs für Gradientenfunktionen wurden zugunsten von Factory-Methoden für ein Gradient-Objekt eingestellt. (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 Aktivierung (I0a1ec).
Destrukturierungsdeklarationen zum Erstellen von FocusRequester-Instanzen hinzufügen (I35d84, b/174817008)
„AccessibilityLabel“ wurde in „contentDescription“ umbenannt. „accessibilityValue“ wurde in „stateDescription“ umbenannt. (I250f2)
Einführung mehrerer neuer Funktionen im SelectionRegistrar und Umbenennung von „onPositionChange“ in „benachrichtigungPositionChange“. (Ifbaf7)
Android-Inhaber intern (Ibcad0, b/170296980)
Neue infiniteRepeatable-Funktion zum Erstellen einer InfiniteRepeatableSpec (I668e5)
Die Oberfläche
Applier
wurde geändert, um das Erstellen von Bäumen von unten anstelle von Top-down zu vereinfachen.Die Methode
insert()
wurde ininsertTopDown()
umbenannt.Die neue Methode
insertBottomUp()
wurde hinzugefügt.Ein Anwender fügt entweder mit
insertTopDown()
oderinsertBottomUp()
Knoten in die Baumstruktur ein, die er bearbeitet, je nachdem, welcher besser funktioniert.Einige Bäume wie
LayoutNode
undView
sind beim Erstellen von Bottom-up-Anlagen viel effizienter als von Top-down. Vor dieser Änderung war ein Stapel von Einfügungen erforderlich, um die Bottom-up-Methode zu implementieren, die dann in jede Anwendung kopiert werden musste, die eine Bottom-up-Konstruktion für die Leistung erforderte. Mit dieser Änderung überschreibt einApplier
insertBottomUp()
, um einen Baum von Bottom-up zu erstellen, undinsertTopDown()
, um den Baum von oben nach unten zu erstellen. (Icbdc2)Die PainterResource API wurde hinzugefügt, um undurchsichtig geladene Painter-Objekte aus gerasterten Asset-Formaten (wie 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 für zusammensetzbare Bilder oder Painter-Modifikatoren abzurufen. (I2c703, b/173818471)
Die Factory-Funktion buildAnnotatedString zum Erstellen eines AnnotatedString wurde hinzugefügt. Eingestellte Builder-Funktion für annotierteStrings. (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
werden veröffentlicht. Version 1.0.0-alpha08 enthält diese Commits.
API-Änderungen
- Der
maxLines
-Parameter wurde aus derCoreTextField
entfernt. Wenn Sie die Höhe des Textfelds auf die Anzahl der Zeilen beschränken möchten, verwenden Sie stattdessenBasicTextField
. (Iec002) - Die Methoden
await*TouchSlop()
wurden so geändert, dass der Zeiger nicht mehr nach unten 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 Erstellungsrichtlinien zu prüfen.
Außerdem wurden einige APIs mit
children
als Name für die nachgestellte Lambda-Funktion gemäß Lint-Prüfung und Anleitung zucontent
migriert. (Iec48e) foundation:foundation-text
APIs wurden nachfoundation:foundation
verschoben. Die Paketstruktur blieb unverändert (Id3eb2).- Neuer Multi-Touch-Gestenerkennung, einschließlich Hilfsprogrammen zum Erkennen von Drehung, Zoomen und Schwenken. (Ic459d)
- Neue API zur Erkennung von Ziehbewegungen, die die Zeigereingabe sperrt, einschließlich der Sperre der Ausrichtung. (Icef25)
- VectorAsset wurde in ImageVector verschoben und VectorAsset wurde in Builder umbenannt, um gemäß den Richtlinien des API-Berats eine innere Klasse von ImageVector zu sein. typealias von VectorAssetBuilder wurde zur Verknüpfung mit ImageVector.Builder für Compat hinzugefügt. (Icfdc8)
- Umbenennung von ImageAsset und zugehörigen Methoden in ImageBitmap. (Ia2d99)
- Semantik-Eigenschaften der Grundlage in die Benutzeroberfläche verschoben (I6f05c)
Fügen Sie koroutinebasierte Scroll-APIs hinzu:
Es werden LazyListState.snapToItem und LazyListState.smoothScrollBy sowie untergeordnete APIs für die Scrollsteuerung hinzugefügt. Diese APIs stellen eine Schnittstelle zum Anhalten bereit, über die das Scrollen gesteuert wird, das erst nach dem Scrollen beendet wird. (Ie5642)
Ein singeLine-Parameter wurde in „BasicTextField“, „TextField“ und „OutlinedTextField“ hinzugefügt. Setzen Sie diesen Parameter auf „true“, um das Textfeld zu einer einzelnen horizontal scrollbaren Zeile zu machen. (I57004, b/168187755)
Die Bewegungserkennung für Tippen, Doppeltippen, langes Drücken und Drücken wurde mit der neuen Eingabe für den Anhalten des Zeigers hinzugefügt. Außerdem wurden einige Dienstprogramme hinzugefügt, mit denen Entwickler ihre eigenen Gestendetektoren einfacher schreiben können. (I00807)
Für Modifier.focusable wurde ein Grund hinzugefügt. Hiermit können Sie einer Komponente fokussierbares Verhalten mit korrekter Semantik und Zugänglichkeit hinzufügen. (I41eb9, b/152525426, b/162865824)
Zuvor eingestellte APIs wurden entfernt: Der Rahmen wurde entfernt. Verwende stattdessen BorderStroke. "Modifier.drawBorder" wurde entfernt. Verwende stattdessen "Modifier.bound". Modifier.gravity wurde entfernt. Verwende stattdessen Modifier.align. Stack wurde entfernt, verwenden Sie stattdessen Box (I32c2b, b/172470874)
„AbsoluteArrangement“ wurde in „Arrangement.Absolute“ umbenannt. (If26f2)
Fehlerkorrekturen
- Die DrawModifier APIs wurden aus dem Paket „androidx.compose.ui“ in das Paket „androidx.compose.ui.draw“ verschoben. Erstellung der Datei DrawModifierveraltet.kt zur Einbindung von typealiases/helper-Methoden zur Unterstützung der Migration von den eingestellten zu den aktuellen APIs (Id6044, b/173834241)
- Umbenennung von Modifier.drawLayer in Modifier.graphicsLayer. Entsprechend dem Feedback des API Councils wurden auch verwandte Klassen in "GraphicsLayer" aktualisiert. (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 sind nicht mehr Nullwerte zulässig. (Id468a)
- „MaterialTheme“ legt jetzt die richtigen Farben für Auswahlziehpunkte und Auswahlhintergrund fest. Nicht-Material-Apps können AmbientTextSelectionColors manuell 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 Modifikatoren „offsetPx“ wurden in „offset“ umbenannt. Sie verwenden jetzt Lambda-Parameter anstelle von „State“. (Ic3021, b/173594846)
- WindowManager.isWindowFocused wurde hinzugefügt, um zu überprüfen, ob das Host-Fenster im Fokus ist, sowie ein WindowFocusObserver, das einen onWindowFocusChanged-Callback bereitstellt. (I53b2a, b/170932874)
- Der Parameter „resetInput“ wurde zu TextInputService#onStateUpdated hinzugefügt (I3e8f5, b/172239032, b/171860947).
- Die TextFieldValue API wurde aktualisiert.
- TextFieldValue.composition schreibgeschützt
- Entfernte Ausnahme für ungültigen Auswahlbereich ausgelöst (I4a675, b/172239032)
- Ambients mit dem Namen
Ambient
als Suffix wurden eingestellt und durch neue Properties mit dem Präfix „Ambient“ ersetzt. Dabei wurden andere Richtlinien für Ambients und die Compose API befolgt. (I33440) - Android Typeface-Wrapper wurde hinzugefügt. Sie können ein Android-Schriftarten über die Funktion
typeface
laden, z.B.typeface(Typeface.DEFAULT)
. AuchtypefaceFromFontFamily()
intypeface()
umbenannt (I52ab7) - Eine Lint-Prüfung wurde hinzugefügt, um zu überprüfen, ob Modifikator-Factorys intern
androidx.compose.ui.composed {}
verwenden, anstatt als@Composable
markiert zu sein. (I3c4bc) - Es wurde eine Lint-Prüfung hinzugefügt, mit der geprüft wird, ob die Werksfunktionen des Modifiers im Modifier als Erweiterungen definiert sind, sodass sie fließend miteinander verkettet werden können. (I07981)
- Das Semantics-Argument „mergeAllDescendants“ wurde in „mergeDescendants“ umbenannt. (Ib6250)
- Die Zeitsteuerung in Tests (TestAnimationClock und deren Nutzung) ist jetzt experimentell (I6ef86, b/171378521).
- Entfernen Sie das alte UI-Test-Modul und die zugehörigen Stubs (I3a7cb).
- „TextUnit.Inherit“ wird in „TextUnit.Unspecific“ (in Übereinstimmung mit anderen Einheiten) umbenannt. (Ifce19)
- Die Ausrichtungsoberfläche wurde aktualisiert und funktionsfähig gemacht. (I46a07, b/172311734)
- Das Modul „
foundation:foundation-text
“ wurde mit „foundation:foundation
“ (Idac0f) zusammengeführt. - „place(Offset)“ und „placeRelative(Offset)“ werden abgelehnt. 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 Materialbibliothek verfügbar sind. Für Anwendungen, die keine Material sind, sollten Sie stattdessen Ihr eigenes Designsystem erstellen, das Themen als Ambients definiert, die in Ihren eigenen Komponenten verwendet werden können. (I74acc, b/172067770)
- „fundation.Text“ wurde eingestellt und durch „material.Text“ ersetzt. Eine einfache, neutrale Text-API, die keine Werte aus einem Design verwendet, finden Sie unter androidx.compose.foundation.BasicText. (If64cb)
- „maxLines“ wurde zu Textfeldern hinzugefügt (Ib2a5b)
- Textfelder aktualisieren, damit KeyboardOptions unterstützt werden (Ida7f3)
- KeyboardOptions zur Verwendung in Textfeldern hinzugefügt (I9ca32).
- Ergänzt BasicText als designunabhängige API für Text, 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.
- Nicht mehr unterstützte LazyColumnItems/LazyRowItems (I1d8a8) entfernen
- Die eingestellten zusammensetzbaren Funktionen für Größenanpassungen wurden entfernt. (I18537, b/171811496)
- relativePaddingFrom wurde in „addingFrom“ umbenannt. Der Modifikator „addingFromBaseline“ wurde hinzugefügt, um Abstände zwischen Layoutgrenzen und Textreferenzen einfacher angeben zu können. (I0440a, b/170633813)
- Der Parameter "matchHeightConstraintsFirst" wurde dem Seitenverhältnis-Modifikator hinzugefügt, mit dem der Modifikator für die Größe-zu-Höhe-Einschränkungen angegeben werden kann, bevor die entsprechenden Breitenwerte ausprobiert werden. (Ie7c43, b/155290593)
- Die verworfenen DpConstraints wurden entfernt. (I87884, b/171702471)
Fehlerkorrekturen
- Einführung der Inline-Klasse ScaleFactor zur Darstellung von Skalierungsfaktoren für die horizontale und vertikale Achse unabhängig voneinander, um Anwendungsfälle mit nicht einheitlicher Skalierung zu unterstützen.
- Die Methode „computeScaleFactor“ wurde zu ContentScale hinzugefügt.
- ContentScale.FillBounds wurde hinzugefügt, um eine uneinheitliche Skalierung durchzuführen und die Quellgrenzen so zu erweitern, dass das Ziel vollständig belegt ist.
- Es wurden Operatormethoden zur Berechnung von ScaleFactor-Parametern mit Größenparametern hinzugefügt.
- (Ic96a6, b/172291582)
- „CaptureToBitmap“ wurde nach „CaptureToImage“ verschoben. (I86385)
- Kennzeichnet CoreText als @InternalTextApi. Verwenden Sie stattdessen BasicText. (I6aaeb)
- Benennen Sie KeyboardOptions in ImeOptions um (I82f36).
- KeyboardType und ImeAction wurden in KeyboardOptions (I910ce) verschoben.
- CoreTextField wurde als „@InternalTextApi“ gekennzeichnet. Stattdessen BasicTextField verwenden (Ie2469)
- Die Annotation ExperimentalSubcomposeLayoutApi wurde entfernt. SubcomposeLayout kann jetzt ohne Hinzufügen von @OptIn verwendet werden (I708ad)
- Einführung des Moduls „ui-test-junit4“ (Ib91f8)
- Die Icon API wurde aktualisiert, sodass „Color.Nicht angegeben“ als mögliche Farbton verwendet wird, mit der das bereitgestellte Asset oder Painter ohne „ColorFilter“ gezeichnet wird. Bisher wurde versucht, die Färbung mit „Color“ zu ignorieren.Wenn keine Angabe gemacht wurde, wurde eine transparente Farbe verwendet, wodurch überhaupt nichts gerendert wurde. (I049e2, b/171624632)
- „MeasureResult“ wurde aus MeasureScope verschoben. (Ibf96d, b/171184002)
- Einige Layout-Symbole wurden von androidx.compose.ui nach androidx.compose.layout.ui verschoben. (I0fa98, b/170475424)
- androidx.ui.test wurde nach androidx.compose.ui.test verschoben (I9ffdb)
- FirstBaseline und LastBaseline wurden in das Paket „androidx.compose.ui.layout“ (Ied2e7) verschoben
- SelectionContainer ohne Callback (Ibfadb) hinzugefügt
- Tests für die Positionen von SelectionHandles im SelectionContainer hinzufügen. Ie93db:
- Autokorrektur für Tastatur-IME-Option (I57b8d) hinzugefügt
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 die Image-Komponente / Modifier.paint() auch mit einem Painter verwenden, wenn Sie die Material-Bibliothek nicht verwenden möchten. (I9f622)
- „interaktionState“ wurde zu „Modifier.scrollable“, „ScrollableColumn“ und „LazyColumnFor“ hinzugefügt (I81566, b/169509805).
- „alignByBaseline“ wurde zu RowScope hinzugefügt und „alignWithSiblings“ wurde in „alignBy“ (I06503, b/170628732) umbenannt.
- Box wurde als Inline-Funktion erstellt. (Ibce0c, b/155056091)
- „maxLines“ wurde zu CoreTextField hinzugefügt (Ibee58, b/143687793)
- CoreTextField wurde hinzugefügt. Softwrap wurde hinzugefügt. (I21a4b)
Fehlerkorrekturen
- Sie sollten VectorPainter zugunsten von MemorystorePainter abschaffen, um besser darauf hinzuweisen, dass die zusammensetzbare API intern das „Erinnern“ nutzt, um Daten über mehrere Kompositionen hinweg zu speichern. (Ifda43)
- Übergänge in ComposeTestRule aktivieren und die Option zum Aktivieren des blinkenden Cursors in ComposeTestRule entfernen. (If0de3)
- CoreTextField (I72e6d) bietet eine einzeilige Tastaturoption.
- Die Radius API wurde in CornerRadius umbenannt, um ihre Verwendung in der Funktion „Compose“ besser zu verdeutlichen. Die Dokumentation wurde aktualisiert, um anzugeben, dass negative Eckradien auf null gebunden sind. (I130c7, b/168762961)
- Möglichkeit hinzugefügt, Informationen zum Prüftool in zusammengesetzten Modifikatoren anzugeben (Idee08, b/163494569)
- IME-Option für Großschreibung wurde hinzugefügt (I8ac38)
- Position des Rtl-Ziehpunkts korrigieren. (I6e1e0)
- Nicht abwärtskompatible Änderung: Der Rückgabewert wurde aus PointerInputFilter.onPointerEvent(...) entfernt, da der einzige Wert, der in Zeigerereignissen geändert werden sollte, Verbrauchsdaten sind. Anstatt Daten von PointerInputFilter.onPointerEvent(...) zurückzugeben, können Sie jetzt nur die Verbrauchsdaten der übergebenen PointerEvents ändern. (I6acd0)
- 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 AmbientContentColor- bzw. die AmbientTextStyle-Ambiente ersetzt. Wie bei allen anderen Ambient-Attributen können Sie mit
.current
auf den aktuellen Wert zugreifen. Diese Änderung wurde aus Gründen der Einheitlichkeit vorgenommen, um zu vermeiden, dass mehrere Wege für das Gleiche verfügbar sind. Außerdem werden einige Umgebungseigenschaften umbenannt, um ihren Zweck besser zu beschreiben:- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
Fehlerkorrekturen
- Im Rahmen der Standardisierung von Sentinel-Werten für Inline-Klassen müssen Sie „Color.Unset“ in „Color.Unset“ umbenennen, um Konsistenz mit anderen Inline-Klassen zu gewährleisten (I97611, b/169797763).
- Bedienungshilfeaktionen „Kopieren/Einfügen/Ausschneiden“ hinzugefügt (I6db4f)
- TextOverflow.None wird eingeführt. Wenn der overflow-Objekt den Wert "None" hat, verarbeitet der Text den Überlauf nicht mehr und meldet seine tatsächliche Größe an LayoutNode. (I175c9, b/158830170)
- Die nicht spezifizierten „Size.Unspecific“-Parameter wurden auf Float.NaN anstelle von Float.POSITIVE_INFINITY aktualisiert. Painter-Implementierungen wurden aktualisiert, um sie auf „Size.Unspecific“ und nicht endliche Größen zu vergleichen. (I95a7e)
- Paging Compose-Modul und Paging-Integration hinzugefügt (Ib85da)
- Änderung von LazyListScope, um Nullwertewerte zu erhalten (I1765b)
- "OnPositionedModifier" wird in "OnGloballyPositionedModifier" und "onPositioned()" in "onGloballyPositioned()" umbenannt. (I587e8, b/169083903)
- Beispiele für LazyColumn/Row (Idc16d) hinzugefügt
- Fehlerkorrektur für die Methoden „itemsIndexed“ und „itemIndexed“, sodass „leerList“ zugelassen wird (I06647)
- DSL zum Angeben von Inspector-Informationen hinzufügen (Ic9a22)
- Langes Drücken in Text verschieben. (Iff2bc)
- Deaktivieren Sie die Auswahl in Text und eine Demo. (Ie7e97)
- Unterstützung für die Barrierefreiheit von AnnotatedString in SpannableString (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 eingestellt und durch die neue Box in „compose.foundation.layout“ ersetzt. Das Verhalten des neuen Box besteht darin, untergeordnete Elemente übereinander zu stapeln, wenn es mehrere untergeordnete Elemente hat. Dies unterscheidet sich vom vorherigen Box, das sich ähnlich wie eine Column verhält. (I94893, b/167680279)
- Parameter für die Dekoration von Boxen wurden eingestellt. Wenn Ihre Box Dekorationen/Füllungen enthalten soll, verwenden Sie stattdessen Modifiers (Modifier.background, Modifier.bound, Modifier.adding) (Ibae92, b/167680279).
- Fügen Sie eine neue LazyListState-Klasse hinzu. So können Sie die Scrollposition von LazyRow- und LazyColumn-Komponenten beobachten und steuern. Instanzen können mit „rememberLazyListState()“ erstellt und an den Statusparameter der Komponente übergeben werden. Derzeit können das erste sichtbare Element und die ersten Offsets in dieser anfänglichen Version beobachtet werden. (Ic7cb7, b/159307669)
- Position und Scroll-Offset der Lazy-Liste werden jetzt bei der Aktivitätserstellung gespeichert und wiederhergestellt (Ie045f, b/166589058).
- Semantikaktion für lange Klicks hinzufügen (I6281b, b/156468846)
- MutatorMutex-Dienstprogramm wurde hinzugefügt, um einen einzelnen Mutator mit gemeinsamem Status über einen bestimmten Zeitraum beizubehalten und in Konflikt stehende Mutatoren nach Priorität abzubrechen (I3f975)
- Die annotierte „rootAnimationClockFactory“, „transitsEnabled“, „blinkingCursorEnabled“ und „textInputServiceFactory“ mit @visibleForTesting, die in die interne API umgewandelt und die KDOC-Datei ausgeblendet wird (I554eb, b/168308412)
- Der InlineContent-Parameter wurde aus der Texteingabe mit String entfernt. Er wird nicht verwendet, da inlineContent mit AnnotatedString funktionieren muss. (Ief403)
- Die verworfenen benutzerdefinierten Arrangement APIs wurden entfernt. (Ic576d, b/168297922, b/168297923)
- Der Parameter
unbounded
wurde den wrapContentSize-Modifikatoren hinzugefügt, die das Messen des Layoutelements mit unbegrenzten Einschränkungen für maximale Anzahl ermöglichen. (I77951, b/158559319) - Statische Importe von Inhalten von Layoutbereichen (z.B. „alignWithSiblings“ in RowScope) wurden verhindert. Stattdessen sollte die explizite Option „
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
“ verwendet werden. (I216be, b/166760797)
Fehlerkorrekturen
- Viele Graphics APIs wurden aktualisiert.
- Die APIs für Skalierungs- und Rotationstransformationen wurden aktualisiert, sodass ein einziger Offset-Parameter zur Darstellung der Pivot-Koordinaten anstelle separater Gleitkomma-Parameter für die x/y-Koordinaten in DrawScope und DrawTransform verwendet wird.
- Die Methoden Rect.expandToInclude und Rect.join wurden entfernt.
- Die Dokumentation für den Radius wurde aktualisiert, sodass jetzt neben dem Ellipsentrainer auch „Oval“ angezeigt wird.
- Es wurde eine Dokumentation hinzugefügt, in der angegeben wird, dass der öffentliche Konstruktor für die Inline-Radius-Klasse nicht direkt aufgerufen werden soll. Radius-Objekte sollten stattdessen über ihre Funktionskonstruktoren instanziiert werden.
- RoundRect APIs zur Abfrage von topRight, bottomRight, bottomCenter usw. wurden entfernt.
- Rect.shift wurde zugunsten von Rect.translate eingestellt
- RoundRect.grow und Rect.shrink APIs entfernt
- RoundRect.outerRect wurde in Rect.boundingRect umbenannt
- Die Methoden RoundRect.middleRect/tallMiddleRect/wideMiddleRect und Rect.isStadium wurden entfernt.
- RoundRect.longestSide wurde umbenannt in RoundRect.maxDimension
- RoundRect.shortestSide wurde in RoundRect.minDimension umbenannt
- RoundRect.center wurde in eine Eigenschaft anstelle einer Funktion geändert
- Der RoundRect-Konstruktor wurde so aktualisiert, dass Radiuseigenschaften anstelle einzelner Parameter für x/y-Radiuswerte verwendet werden.
- APIs für die Größe, bei denen angenommen wurde, dass es sich um ein Rechteck mit dem Ursprung 0,0 handelt, wurden entfernt.
- Zerstörende API zu Radius hinzugefügt
- Verschiedene RoundRect-Erweiterungsfunktionen wurden zu Eigenschaften migriert
- (I8f5c7, b/168762961)
- Leistungsoptimierungen für LazyColumnFor/LazyRowFor, indem keine unnötigen Neuzusammensetzungen bei jedem Scrollen vorgenommen werden (I64f65, b/168293643, b/167972292, b/165028371)
- Behebung eines Absturzes in LazyColumnFor/LazyRowFor nach dem Scrollen und dem anschließenden Ändern von Elementen und Implementierung des automatischen Scrollens nach oben, wenn das zuvor sichtbare Element entfernt wurde, damit am Ende keine leeren Lücken mehr angezeigt werden (I220ab, b/161480164, b/167855468).
- Container, die in dieselbe Richtung scrollen können, wie ScrollableContainer und LazyColumnFor, können nicht mehr verschachtelt werden. Sie wurde nie unterstützt und brach den Effekt und brach die Faulheit beim Erstellen der Elemente von LazyColumnFor (I6e101).
- Viele Graphics APIs wurden aktualisiert.
- Wir haben die DrawScope APIs mit bereichsspezifischen Transformationsmethoden aktualisiert, um anzuzeigen, dass die Transformation nur innerhalb des Callbacks angewendet und entfernt wird, nachdem der Callback aufgerufen wurde.
- Die „clipPath“-Dokumentation wurde aktualisiert, sodass jetzt auf „Pfad“ und nicht auf ein abgerundetes Rechteck verwiesen wird.
- In der Dokumentation wurde der Abstand für den rechten Parameter in „clipPath“ festgelegt.
- „DrawScope.drawCanvas“ wurde in „drawIntoCanvas“ umbenannt und der Größenparameter wurde entfernt.
- Umbenennung der dx/dy-Parameter in der Einfügungsmethode in horizontal und vertikal
- Zusätzliche Überlastung, die allen 4 Grenzen denselben Wert bietet,
- Die Dokumentation zur Einfügungsmethode, die darauf hinweist, dass Einsatz auf alle 4 Seiten angewendet wird, wurde entfernt.
- Aktualisierte Dokumentation für die Rect-Klasse
- Die Kommentare zu den Rect-Parametern wurden aktualisiert, damit sie dem kdoc-Stil entsprechen.
- Rect.join und Rect.expandToInclude entfernt
- Überlastung für Rect.translate(offset) erstellt und Rect.shift eingestellt
- (If086a, b/167737376)
- den Semantikeigenschaften „AccessibilityScrollState“ hinzufügen. (Ifeda9)
- Machen Sie TextRange inline, um die Erstellung von Objekten zu vermeiden. (Id034b)
- Absatzeinschränkungen wurden entfernt. Die Breite wird jetzt direkt an 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 Nutzung der Gravitation wurde konsequent umbenannt, um die Layout-APIs auszurichten. (I2421a, b/164077038)
- Für die Filterliste wurde ein Parameter für die Ausrichtung hinzugefügt, mit dem die Standardausrichtung für alle untergeordneten Elemente angegeben werden kann. (Ie80ca, b/164085265)
Fehlerkorrekturen
- DpConstraints und APIs, die sie verwenden, wurden eingestellt. (I90cdb, b/167389835)
- Die Parameter
minWidth
undmaxWidth
vonwidthIn
wurden inmin
undmax
umbenannt. Ähnliches gilt fürpreferredWidthIn
,heightIn
,preferredHeightIn
. (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 GestenScope wurden korrigiert, was unter anderem zu ungültigen Wischgesten führte (Iaf358, b/166589947).
createAndroidComposeRule
undAndroidInputDispatcher
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 etwas auf einen Frame ab dieser Uhr gewartet wird;runWithManualClock
als Ersatz fürrunBlocking
beim Ausführen von Tests, die eine ManuelleFrameClock benötigen;TestUiDispatcher.Main
, das einfachen Zugriff auf den primären UI-Dispatcher in Ihren Tests ermöglicht.Beispiele:
@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
- Das „spacedBy“-Arrangement wurde für „Row“ (Zeile) und „Column“ (Spalte) hinzugefügt, um Layoutunterelemente mit einem festen Abstand zu positionieren. Das ausgerichtete Layout wurde ebenfalls hinzugefügt, um Layout-Unterelemente nebeneinander zu positionieren und gemäß einer Ausrichtung in der Zeile/Spalte auszurichten. Die vorherigen Methoden Arrangement.Vertical#arrange und Arrangement.Horizontal#arrange wurden eingestellt. Das Schreiben benutzerdefinierter Arrangement-Methoden wird in Zukunft nicht mehr unterstützt. (I6733d, b/161985975)
- „Offset“ wurde zu einer Inline-Klasse (Iaec70)
- onFocusChanged-Callbacks wurden aus TextField entfernt. Verwenden Sie stattdessen Modifier.focusObserver. (I51089, b/161297615)
- „Modifier.drawBorder“ wurde eingestellt. Verwende stattdessen Modifier.Border. Border-Datenklasse wurde durch BorderStroke (I4257d, b/158160576) ersetzt
- VerticalScroller und HorizontalScroller wurden entfernt. Verwenden Sie stattdessen „ScrollableColumn/Row“. Modifier.drawBackground wurde entfernt. "Modifier.background" verwenden (I73b0d, b/163019183)
- Als eingestellte „fillMax*“-Modifikatoren aus LazyItemScope entfernen, da sie das korrekte Hinzufügen solcher Modifikatoren für Elemente erschweren, die keine direkten untergeordneten Elemente von LazyColumnFor sind (Ifa78d)
- LazyColumn/LazyRow-Implementierung als DSL (I93cc6) hinzugefügt
- Einschränkungen sind jetzt eine Inline-Klasse (I88736)
- Mit den Modifikatoren „fillMaxWidth“, „fillMaxHeight“ und „fillMaxSize“ kann die Größe eines Layouts nur noch für einen Bruchteil des verfügbaren Platzes angepasst werden. (I945bb, b/161562591)
Fehlerkorrekturen
- Modifikatorparameter wurde zu SelectionContainer hinzugefügt (I4aada, b/161487952).
- „MergePolicy Lambda“ zu SemanticsPropertyKey hinzugefügt. Damit kann eine benutzerdefinierte Richtlinie für die Zusammenführung von „MergeAllDescendants“ definiert werden. Standardmäßig wird der übergeordnete Wert verwendet, falls dieser bereits vorhanden ist. Andernfalls wird der untergeordnete Wert verwendet. (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 linksläufigen Kontexten nicht mehr automatisch wider. Wenn dies gewünscht ist, verwenden Sie stattdessenPlacementScope.placeRelative()
. (I873ac, b/162916675)- Die eingestellte FilledTextField-Komponente 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 Abstand aus dem CircularProgressIndicator entfernt. Neue ProgressIndicatorConstants.DefaultProgressAnimationSpec zur Verwendung als Standard-AnimationSpec bei der Animation des Fortschritts zwischen Werten hinzugefügt (If38b5, b/161809914, b/161804677)
- Die zusammensetzbare Funktion
state { ... }
wurde verworfen und durch explizite Aufrufe vonremember { mutableStateOf(...) }
ersetzt. Dies reduziert die API-Oberfläche insgesamt und die Anzahl der Konzepte für die Statusverwaltung und entspricht dem Musterby mutableStateOf()
für die Delegierung von Klassenattributen. (Ia5727) - RRect wurde in RoundRect umbenannt, um besser zu Zusammensetzungsmustern zu passen. Ähnliche Funktionskonstruktoren wie RRect und eingestellte RRect-Funktionskonstruktoren wurden erstellt (I5d325).
- "onChildPositioned" und "OnChildPositionedModifier" wurden entfernt. Entwickler sollten stattdessen onPositioned und OnPositionedModifier im untergeordneten Layout verwenden. (I4522e, b/162109766)
- IntSize ist jetzt eine Inline-Klasse (I2bf42)
- Zum Bearbeiten lange auf den leeren Bereich drücken. (Ib1e5b)
- Schwebende Symbolleiste nach dem Tippen auf den Text ausblenden. (If4525)
- Unverankerte Symbolleiste beim Aktualisieren der Auswahl ausblenden. (I8444c)
- Hebe die Auswahl bei 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 Ausfüllen der maximalen Größe des übergeordneten Elements, wodurch der Anwendungsfall gelöst wird, in dem das Element den Darstellungsbereich ausfüllen sollte und die reguläre Modifier.fillMaxSize() nicht funktioniert, da das Element mit unendlichen Einschränkungen gemessen wird. (Ibd3b2, b/162248854)
- Dialogfeld in Benutzeroberfläche verschieben (I47fa6)
- LazyColumnForIndexed/LazyRowForIndexed – Versionen von LazyColumnFor/LazyRowFor, die sowohl Index als auch Element in itemCallback bereitstellt, wurde hinzugefügt. Dies ist nützlich, wenn Sie neben einem aktuellen Element auch einen aktuellen Index benötigen. (I65ff3)
- Modifier.deternimateProgress wurde in Modifier.progressSemantics (I9c0b4) umbenannt.
- „LazyColumnItems“ wurde in „LazyColumnFor“ umbenannt. LazyRowItems wurde in LazyRowFor (I84f84) umbenannt
- Fügen Sie als Best Practice einige Markierungen/Vermerke hinzu. (I66b20)
- „fundation.shape.corner“-Pakete wurden zu „fundation.share“ vereinfacht (I46491, b/161887429).
- Der Gravitationsparameter „Srossaxis“ wurde für LazyRowItems/LazyColumnItems hinzugefügt. LazyRowItems/LazyColumnItems unterstützen jetzt das Verhalten bei Inhaltsumbrüchen. (Ib39fc)
- ZoomableState wurde in ZoomableController umbenannt. Für smoothScale wird jetzt benutzerdefinierte Kurve unterstützt. Die Funktionen
enabled
undonZoomStarted
wurden hinzugefügt (If8b8f). - Material FilledTextField wurde in TextField umbenannt und das grundlegende TextField in BaseTextField umbenannt, damit die einfachste gewünschte API leichter 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" (I13677) umbenannt.
- Die 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 absolute Offset-Modifikatoren nicht automatisch im Rechts-nach-links-Kontext gespiegelt (I3aa21).
Row
undColumn
sind jetzt Inline-Funktionen, wodurch der Aufwand für ihre Verwendung erheblich reduziert wird. (I75c10)
Fehlerkorrekturen
- Umfangreiche API-Fehlerkorrekturen (I077bc)
- Nicht verwendete OffsetBase-Schnittstelle entfernen
- Die Klassen „Align Offset“ und „IntOffset“ für eine einheitliche API-Oberfläche
- Benennen Sie „IntOffset.Origin“ in „IntOffset.Zero“ um, um der Offset API zu entsprechen.
- Die nativeCanvas-Methode wurde aus der Canvas-Oberfläche verschoben, damit Nutzer ihre eigenen Canvas-Instanzen erstellen können.
- Die Stub-EmptyCanvas-Klasse wurde erstellt, um DrrawScope in einen Nicht-Null-Parameter anstelle von lateinit zu refaktorieren und eine Nicht-Null-Zulässigkeit des Felds zu gewährleisten.
- ClipOp-Enums wurden in Pascal Case umbenannt
- FilterQuality-Enums wurden in Pascal Case umbenannt
- Die 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-Schreibweise umbenannt
- Die StrokeCap-Enums wurden in „Pascal Case“ umbenannt
- Die DrawCache-Implementierung wurde so aktualisiert, dass latinit-Parameter nicht mehr verwendet werden.
- DrawScope aktualisiert, um die Lazy-Delegierung für die internen Parameter „fillPaint“ und „StrokePaint“ nicht mehr zu verwenden.
- Die zusammensetzbare Image-Funktion wurde aktualisiert, um die Nutzung von Box zu vermeiden und so den Aufwand zu reduzieren.
- Die Outline-Klasse wurde so aktualisiert, dass sie @Unmutable-Annotationen enthält.
- PathNode wurde aktualisiert und enthält nun @Immutable-Annotationen für jede Pfadanweisung.
- Die Vektorunterzusammensetzung wurde aktualisiert, um redundante bedingte Prüfungen auf Gleichheit zu entfernen, da sie in der Zusammensetzung bereits verarbeitet werden.
- Eingestellte Methoden des Companion-Konstruktors „Rect“ zugunsten von Funktionskonstruktoren
- Aktualisierte Brush-Klassen und Funktionskonstruktoren mit den APIs @Immutable und @Stable
- VertexMode-Enum wurde auf „PascalCase“ aktualisiert
- Wir haben die DrawScope selectPaint-Methode aktualisiert, damit Strichparameter der Farbdarstellung bedingt überschrieben werden, wenn sie sich geändert haben.
- „Größe“ wurde aktualisiert, um eine destruktive API hinzuzufügen, „UnspecificSize“ in „Nicht angegeben“ umzubenennen und nicht verwendete Methoden zu entfernen
MonotonicFrameAnimationClock wurde hinzugefügt. Damit können Sie MonotonicFrameClock als AnimationClockObservable verwenden, um die Lücke zwischen den neuen, auf Koroutinen basierenden Uhren und APIs zu schließen, die noch die alten Callback-basierten Uhren verwenden.
Die MonotonicFrameClock-Äquivalent von „Manuelle AnimationClock“ heißt jetzt „ManuellFrameClock“. (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, mit dem sich die Layoutrichtung lesen und ändern lässt. Modifier.rtl und Modifier.ltr wurden entfernt. (I080b3)
Modifier.plus wurde eingestellt. Verwende stattdessen Modifier.then. „Dann“ gibt ein stärkeres Signal für die Sortierung, verhindert aber auch die Eingabe von
Modifier.padding().background() + anotherModifier
, wodurch die Kette unterbrochen wird und schwerer zu lesen ist (Iedd58, b/161529964).SemanticsMatcher
isFocused()
undisNotFocused()
wurden hinzugefügt. (I0b760)RemeasurementModifier wurde hinzugefügt. Nutzer können damit das Layout synchron neu messen. Im Allgemeinen ist sie nie erforderlich, da Neuberechnungen bzw. Layoutänderungen automatisch erfolgen. Wir verwenden sie jedoch während des Scrollens in LazyColumnItems. (I5f331, b/160791058)
isSystemInDarkTheme berücksichtigt jetzt immer die systemweite Einstellung für das dunkle Design und ignoriert den Energiesparmodus vor Q. gemäß den neuesten Anweisungen. (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 (I9d6e6) abzurufen
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 deklarieren gezeigt werden.
API-Änderungen
- Ähnlich wie der neue Parameter in ScrollableColumn/ScrollableRow LazyColumnItems/LazyRowItems verfügen jetzt auch über den Parameter contentPadding, mit dem ein Abstand für den Inhalt hinzugefügt werden kann, nachdem dieser abgeschnitten wurde. Dies ist nicht allein durch einen Modifikatorparameter möglich. Außerdem können Sie einen Abstand vor dem ersten bzw. nach dem letzten Element einfügen. (Ibc24e)
- onFocusChange-Callback in Textfeldern wurde in onFocusChanged (Ida4a1) umbenannt
- VerticalScroller und HoriziontalScroller wurden eingestellt. Verwende ScrollableColumn und ScrollableRow, um integrierte Funktionen mit Spalten-/Zeilenverhalten und -parametern zu nutzen, oder Modifier.verticalScroll und Modifier.horizontalScroll für dein eigenes Element. In ähnlicher Weise wurde ScrollerPosition zugunsten von ScrollState verworfen (I400ce, b/157225838, b/149460415, b/154105299).
- Die APIs Modifier.draggable und Modifier.scrollable wurden überarbeitet. DragDirection wurde zugunsten der Ausrichtung entfernt. Der Status, der für „scrollable“ erforderlich ist, wurde vereinfacht. ScrollableState wurde in ScrollableController umbenannt (Iab63c, b/149460415).
- Semantische Einzelwert-Attribute verwenden jetzt einen aufrufenden Stil.
So wird beispielsweise „Semantik {hidden = true}“ so geschrieben:
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412) - Eckengrößen von RoundedCornerShape und CutCornerShape können jetzt größer als 50 % sein (Id2340, b/160400213)
- Der Standardparameter „ContentScale“ für die zusammensetzbare Bild-Funktion wurde von „Inside“ zu „Fit“ geändert. Dies wurde getan, um ein Verhalten zu erzielen, mit dem der zugrunde liegende Painter skaliert werden kann, wenn die Layoutgröße größer ist als die eigentliche Größe des Painters, während das Seitenverhältnis beibehalten wird. Dieses Verhalten entspricht eher den Erwartungen an die Bereitstellung fester Größen für das Bild. Es wirkt sich nicht auf das Standardverhalten aus, wenn nur die ursprüngliche 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, Feder verwenden. Stattdessen werden Konstruktorparameter direkt übernommen. – Verbessern der allgemeinen Nutzerfreundlichkeit von AnimationSpec, die Konstruktoren öffnet, anstatt sich auf Builder zu verlassen. – Ändern Sie die Dauer und Verzögerung für KeyFrames und "Tween" in "Int". Dadurch werden unnötige Typumwandlungen und eine Methodenüberlastung vermieden (zur Unterstützung von Long und Int). (Ica0b4)
- Anklickbares Element wurde entfernt. Verwenden Sie Modifier.clickable (I84bdf).
- „LazyRowItems“ – Analog zu horizontal scrollbarem Element von LazyColumnItems (Ibbcf7) hinzugefügt
- Einführung von Low-Level-, zustandslosen Animations-APIs. Diese APIs (I63bf7)
- „androidx.ui.foundation.TextFieldValue“ und „androidx.ui.input.EditorValue“ wurden eingestellt. Die zusammensetzbaren Funktionen „TextField“, „FilledTextField“ und „CoreTextField“, die diesen Typ verwenden, wurden ebenfalls eingestellt. Verwenden Sie stattdessen androidx.ui.input.TextFieldValue (I4066d, b/155211005).
- Die Verwendung von „IntPx“ wurde durch „Int“ ersetzt. „IntPxPosition“ wurde durch „IntOffset“ ersetzt. IntPxSize durch IntSize ersetzt. (Ib7b44)
- androidx.ui.foundation.shape.RectangleShape entfernt; verwenden Sie androidx.ui.graphics.RectangleShape (I94939, b/154507984)
- Wenn Sie die Anzahl der Klassen zur Darstellung von Größeninformationen konsolidieren möchten, sollten Sie die Verwendung der Klasse „Size“ anstelle von „PxSize“ standardisieren. Dies bietet die Vorteile einer Inline-Klasse, da ein „Long“ verwendet werden kann, um zwei 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: Sie kann einen Long-Wert verwenden, um zwei Gleitkommawerte zu packen, um x- und y-Offsets als Gleitkommazahlen darzustellen. (I3ad98)
- Modifier.zoomable wurde für das Zoomen durch Auseinander- und Zusammenziehen hinzugefügt (Id5d63).
- Die ein-/ausschaltbare Komponente wurde eingestellt. Stattdessen Modifier.toggleable verwenden (I35220, b/157642842)
- MutuallyexklusivSetItem wurde eingestellt. Verwende stattdessen Modifier.selectable. (I02b47, b/157642842)
- TestTag wurde eingestellt. Verwende 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 der umfangreichen Refaktorierungsversuche ersetzt, bei denen für Pixelparameter nur der Dp-Wert und primitive Typen verwendet wurden (I19d02).
- VerticalScroller stellt die Spalte jetzt standardmäßig zur Verfügung. HorizontalScroller stellt jetzt eine Zeile aus dem Feld bereit. (Ieca5d, b/157020670)
- Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem nur Dp und primitive Typen für Pixelparameter verwendet wurden (Iede0b).
- Modifier.indication wurde zum Foundation-Paket hinzugefügt. Verwenden Sie dieses Symbol, um die Elemente durch Drücken bzw. Ziehen oder andere Elemente auf Ihren benutzerdefinierten interaktiven Elementen einzublenden (I8425f, b/155287131).
- VerticalScroller und HorizontalScroller unterstützen jetzt das umgekehrte Scrollen. isReversed ist auf ScrollerPosition (I953bd) festgelegt.
- Unterstützung beim Hinzufügen von zusammensetzbaren Funktionen in das Textlayout (I1373c)
- CanvasScope-Implementierungen wurden konsolidiert. Es gibt jetzt nur noch DrawScope und ContentDrawScope haben CanvasScope in DrawScope umbenannt. DrawScope wurde aktualisiert, um die Dichte-Schnittstelle zu implementieren und die LayoutDirection Deleted DrawScope Unterklasse in ContentDrawScope bereitzustellen. Painter und PainterModifier wurden aktualisiert, um eine RTL-Eigenschaft selbst nicht mehr zu verwalten.
- Die eingestellte DrawBackground API wurde entfernt und durch den Modifier ersetzt. Wir haben die DrawBackground-Implementierungen für Farbe, Pinsel und Farbe überarbeitet, um Codepfade zu reduzieren. Außerdem wurde die Anforderung entfernt, dass der Modifikator als Teil der Komposition erstellt werden muss. (I0343a)
- Die APIs der höheren Ebene, die ein Canvas zur Freigabe von CanvasScope bereitstellen, wurden aktualisiert. Nutzer müssen dann ihre eigenen Paint-Objekte nicht mehr verwalten. Nutzer, die weiterhin Zugriff auf einen Canvas benötigen, können die DrawCanvas-Erweiterungsmethode verwenden. Diese bietet einen Callback, mit dem Zeichenbefehle mit dem zugrunde liegenden Canvas ausgeführt werden können. (I80afd)
- Bei HorizontalScroller und VerticalScroller werden die Scrollpositionen nicht über den Status der gespeicherten Instanz wiederhergestellt. (Ia0fae, b/155075048)
- „FocusManagerAmbient“ wurde entfernt. Verwenden Sie FocusModifier.requestFocus, um den Fokus zu erhalten. (Ic4826)
- Das Tabellenlayout wurde vorübergehend entfernt, bis wir es mit einer aktualisierten API wieder verfügbar machen. (Id88a7)
Es wurde eine CanvasScope API erstellt, die ein Canvas-Objekt umschließt, um eine zustandslose, deklarative Zeichen-API-Oberfläche freizugeben. Transformationen sind in ihrem eigenen Empfängerbereich enthalten, und Größeninformationen werden ebenfalls auf die entsprechenden Einfügungsgrenzen beschränkt. Ein Nutzer muss kein eigenes Paint-State-Objekt zum Konfigurieren von Zeichenvorgängen verwalten.
CanvasScopeSample wurde hinzugefügt und die Demo-App wurde um eine deklarative Grafikdemo ergänzt (Ifd86d).
ColoredRect wurde entfernt. Feld mit dem Modifikator "drawBackground" (I983c7, b/152753731)
Anpassung der Cursorfarbe für TextField (I6e33f)
Jetzt ist es möglich, die Softwaretastatur mithilfe von SoftwareKeyboardController ein- oder auszublenden. Dafür wird der onTextInputStarted-Callback verwendet (I8dc44, b/151860051).
Wenn TextFieldValue mit TextField verwendet wird, kann es jetzt auch in einem der folgenden Weise neu erstellt 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 kleine 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)Für die Einbindung in das Fokus-Subsystem wurde der Parameter „CoreTextField/TextFieldfocusIdentifier“ durch „FocusNode“ ersetzt. (I7ea48)
TextField-Aktualisierung: Bei horizontalen Dimensionen nimmt es den gesamten verfügbaren Platz ein (Ib08df, b/154638552)
InteractionState und Interaction wurden hinzugefügt. Dies vereinfacht die Erstellung von Komponenten, die auf UI-Statusänderungen wie Drücken und Ziehen reagieren (Icfe25, b/152525426).
RectangleShape wurde von androidx.ui.foundation.shape.* nach androidx.ui.graphics.* (Ia74d5, b/154507984)
Alle Farbverwendungen, bei denen Nullwerte zulässig sind, in der API durch Werte ohne Nullwerte ersetzt und „Color.Unset“ anstelle von null (Iabaa7) verwendet
TextField API-Update – onFocus- und onBlur-Callbacks zu einem einzigen onFocusChange(Boolean)-Callback mit Parameter (I66cd3) zusammengeführt
Umbenennung von ScaleFit in ContentScale. ContentScale wurde von ui-graphics in das UI-Core-Modul verschoben, das sich im selben Modul wie die Ausrichtungs-API befindet. "FillMaxDimension" wurde in "Zuschneiden" umbenannt "FillMinDimension" wurde in "Passen" umbenannt "FillMinDimension" wurde in "Passend" umbenannt "FillMaxDimension" wurde umbenannt, um besser mit den Entsprechungen von ImageView.ScaleType zu übereinstimmen Es wurde eine Dokumentation hinzugefügt, die darauf hinweist, dass mit der Kombination aus "Zuschneiden" und "Ausrichtung.Center" dasselbe Ergebnis erzielt wird wie bei "ImageView.ScaleType.CENTER_CROP" und "Fit mit Ausrichtung.Center" verwendet.
Entfernt ProvideContentColor, stattdessen aber einfach ContentColorAmbient direkt mit
Providers
(Iee942) verwendenFügt dem Text einen Farbparameter hinzu, sodass die Farbe des Textstils überschrieben werden kann, ohne dass eine Verbindung mit dem Stil eines Designs manuell hergestellt werden muss. (I41a66)
DrawModifier API verbessern:
- Der Empfängerbereich fürdraw() ContentDrawScope wurde erstellt.
- Alle Parameter fürdraw() wurden entfernt
- DrawScope hat die gleiche Oberfläche wie das frühere CanvasScope
- ContentDrawScope verfügt über die MethodedrawContent() (Ibaced, b/152919067).
ColoredRect wurde eingestellt. Verwende stattdessen
Box(Modifier.preferredSize(width, height).drawBackground(color))
. (I499fa, b/152753731)Das Formthema-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).
Der Operator "Modifier Plus" wurde durch Erweiterungsfunktionen auf Werkseinstellungen ersetzt (I225e4).
Ziehbares Element wurde in Modifikator verschoben (Id9b16, b/151959544)
Text
von androidx.ui.core in das Paket androidx.ui.foundation verschoben. (I87ce5)Parameter
enabled
zu Kästchen, Schalter und Umschaltbar hinzufügen (I41c16)Welle ist jetzt ein Modifikator. Die anklickbare Schaltfläche wurde noch nicht konvertiert, die empfohlene Verwendung ist
Clickable(onClick = { ... }, modifier = ripple())
(Ie5200, b/151331852, b/150060763).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. Wir haben vorherige DrawVector-Funktionen zugunsten von VectorPainter eingestellt.
Die
Image(Painter)
API wurde inPaintBox(Painter)
erstellt und funktioniert wie die zusammensetzbare Bild-Funktion, mit Ausnahme eines VectorAsset anstelle eines ImageAsset (I9af9a, b/149030271).Erstellt eine zusammensetzbare Bild-Funktion, die zusätzlich zum Zeichnen eines bestimmten Bild-Assets auf dem Bildschirm auch die Größe und das Layout verarbeitet. Diese zusammensetzbare Funktion unterstützt auch das Zeichnen jeder beliebigen Painter-Instanz unter Berücksichtigung ihrer intrinsischen Größe sowie die Unterstützung einer bestimmten festen Größe oder Mindestgröße (Ibcc8f).
Schaltfläche, FloatingActionButton und Clickable haben jetzt einen separaten
enabled
-Parameter. Einige Parameter der Schaltfläche wurden umbenannt oder neu angeordnet. (I54b5a)Umbenennung von „Image“ in „ImageAsset“, um den Unterschied zwischen den Bilddaten und der nächsten zusammensetzbaren Funktion für das Layout und das Zeichnen von Inhalten besser zu unterscheiden.
Für android.graphics.Bitmap,
Bitmap.asImageAsset()
, wurde eine Erweiterungsmethode erstellt, mit der eine Instanz eines ImageAsset erstellt werden kann, die sich zum Kombinieren der traditionellen Android-Anwendungsentwicklung mit dem Compose-Framework eignet. (Id5bbd)Die zusammensetzbare Funktion „DrawImage“ wurde entfernt. Verwenden Sie ImagePainter, um Bilder in einem vorhandenen Layout zu zeichnen, oder SimpleImage, um ein Bild vorzustellen, das Platz einnimmt (I595e1, b/149827027)
Die Stack-Komponente unterstützt die Schreibrichtung von rechts nach links (Ic9e00).
Symbol, IconButton und IconToggleButton hinzugefügt, wodurch AppBarIcon entfernt wurde. Sie können vorhandene Verwendungen von AppBarIcon direkt durch IconButton ersetzen, und diese haben jetzt das richtige Berührungsziel. Informationen zur Verwendung findest du in den Beispielen und in den Symbolen für die bereitgestellten Material Icons, die du direkt mit diesen Komponenten verwenden kannst. (I96849)
Die zusammensetzbare Funktion „DrawShape“ wurde entfernt. Verwende stattdessen den Modifikator DrawBackground. (I7ceb2)
AdapterList wurde hinzugefügt, eine scrollbare Listenkomponente, die nur die sichtbaren Elemente zusammensetzt und darstellt. Derzeit bekannte Probleme bestehen darin, dass es nur vertikal ist und nicht alle Fälle von Änderungen an seinen untergeordneten Elementen vollständig verarbeitet. (Ib351b)
Die scrollbare Komponente wurde hinzugefügt, mit der benutzerdefinierte Scroller/Listen erstellt werden können (I5fd37).
Hintergrund wurde in „Hintergrund zeichnen“ umbenannt und der Hintergrund soll standardmäßig gespeichert werden (Ia0bd3).
Parameter für Abstände, Rahmen, Form und Hintergrund zu Box hinzufügen (I05027, b/148147281)
Canvas-Komponente hinzugefügt. Diese zusammensetzbare Funktion nimmt eine gewisse Größe ein (vom Nutzer bereitgestellt) und ermöglicht das Zeichnen mit CanvasScope (I0d622).
Border
-Modifikator inDrawBorder
umbenennen (I8ffcc)Die Box-Komponente zum Kombinieren von Layout- und Zeichenfunktionen wurde hinzugefügt. (I6e2a7)
Scroller zeigen nun natives Schleuder-Bewegungsverhalten von Android. (I922af, b/147493715)
DrawBorder ersetzt Border Modifier (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:
Die Ränder von ConstraintLayout-Barrieren werden jetzt unterstützt. (I47ffe)
RTL-Unterstützung in ConstraintLayout wurde behoben. Nicht erkannte RTL-APIs hinzugefügt. (I3b1c7)
Eine neue 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 ihre APIs geändert werden. (I412a8)
Modifier.padding(InnerPadding)
wurde hinzugefügt (I94985, b/157133803).Verworfene Zeilenausrichtung (RowAlign), ColumnAlign in Row & Column (Spalte) wurden entfernt. (If60d4, b/155858731)
Das eingestellte LayoutTag() wurde entfernt. Bitte verwende stattdessen Modifier.tag(). Der eingestellte Modifier.matchParent() wurde entfernt. Verwende stattdessen „Modifier.matchParentSize()“. (If8044)
Der Layoutmodifikator „offsetPx“ wurde hinzugefügt, mit dem (dynamische) Offsets in Pixeln definiert werden können. (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 Größenbeschränkungen für das umschlossene Layout nur dann festlegt, wenn die eingehenden entsprechenden Einschränkungen nicht angegeben sind (0 für minimale Einschränkungen und unendlich für maximale Einschränkungen). (I311ea, b/150460257)
Der Container wurde entfernt. Stattdessen Box verwenden (Ibbc2b, b/151407926)
Die eingestellten Modifikatoren LayoutWidth/Height/Size wurden entfernt. (Ib0bc1)
Für den Offset-Modifikator wurden Standardparameterwerte hinzugefügt. (I37f06)
Modifikator für symmetrischen Abstand hinzugefügt. (I39840)
Der eingestellte Modifikator LayoutAspectRatio wurde entfernt. (I65a74)
Die eingestellten LayoutAlign-Modifikatoren wurden entfernt. (I10877)
Ein Fehler in den Modifikatoren für Breite und Höhe wurde behoben, durch den das umschlossene Layout ohne Einschränkungen der gegenüberliegenden Achse gemessen wurde. (I210b8, b/154797971)
Die Parameter verticalGravity und horizontalGravity wurden für Row bzw. Spalte hinzugefügt. (I7dc5a)
„wrapContentWidth“ und „wrapContentHeight“ wurden aktualisiert, sodass jetzt eine vertikale oder horizontale Ausrichtung anstelle einer Ausrichtung erwartet wird. Der Gravitationsmodifikator wurde aktualisiert, um die vertikale oder horizontale Ausrichtung zu akzeptieren. Die Zeilen-, Spalten- und Filterlisten wurden aktualisiert, um benutzerdefinierte kontinuierliche Ausrichtungen zu unterstützen. (Ib0728)
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 „Padding“ umbenannt. (I66165)
„alignToSiblings“ akzeptiert jetzt „Measured“ anstelle von „Placeable“. (I5788d)
Modifikatoren für Größenanpassungen wurden für systeminterne Messungen hinzugefügt und die zu diesem Zweck vorgesehenen Komponenten wurden eingestellt. (I8295d)
Unterstützung für das Anpassen von Dimensionen untergeordneter Elemente von ConstraintLayout (Idb1a5)
Veraltete zusammensetzbare Funktionen wie „Wrap“ und „Center“ wurden entfernt. (I29e23)
LayoutModifier2 wurde hinzugefügt, eine neue API zum Definieren von Layout-Modifikatoren; „LayoutModifier2“ wurde eingestellt (If32ac)
RowScope- und ColumnScope-Mitglieder sind jetzt außerhalb von Row und Column zugänglich. (I3a641)
Der Container wurde verworfen. Verwende stattdessen Box. (I675ce, b/151407926)
Der Modifikator "LayoutOffset" zum Versetzen der Layoutposition wurde hinzugefügt (I0b8a3).
Erste Unterstützung von Rtl im Layout „Compose“ (Ia5519)
LayoutAlign so aktualisiert, dass der verfügbare Platz nicht mehr ausgefüllt wird (I2b14f)
Die zusammensetzbare Funktion „AspectRatio“ wurde zugunsten des Modifizierers entfernt. Veraltete FlexColumn-, FlexRow- zusammensetzbare Funktionen und Abstandsmodifikatoren wurden gelöscht (Iec8a7)
Entfernung des Modifikator "LayoutInflexible" für Zeile und Spalte (I0d820)
Implementieren Sie Ziehpunkte für die Ziehauswahl, um die Auswahl für TextField zu ändern. (I27032)
Implementiert LongPressAndDrag für die TextField-Auswahl. (I17919)
Fehlerkorrekturen
- FocusModifizierer wurde zugunsten von Modifier.focus, Modifier.focusRequester, 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 Benutzerfreundlichkeit zu verbessern. Alle „findXYZ“ APIs wurden in „onNodeXYZ“ umbenannt. Alle doXYZ APIs wurden in „performanceXYZ“ umbenannt. (I7f164)
- Entfernt den in der Vergangenheit verworfenen Modifier.ripple. Für „Anklickbar“ wird jetzt die Welle als Standardanzeige verwendet (wenn Sie in Ihrer App ein MaterialTheme-Element {} festgelegt haben). In den meisten Fällen können Sie die Ripple-Anzeige also kostenlos anzeigen lassen. Wenn Sie den Parameter „color“, „size“ oder „bounded“ für die Wellen anpassen möchten, können Sie manuell eine „RippleIndication“-Parameter erstellen und sie an „anklickbar“ als „indikationsparameter“ übergeben. (I663b2, b/155375067)
- Veraltete APIs für Größentests wurden entfernt. (Iba0a0)
- Made LayoutNode experimentelle API (I4f2e9)
- Version 1 der Sperre für die Scrollausrichtung wurde in der Funktion „Compose“ implementiert. (I1ce7a, b/150289741)
- Pop-ups, Dialogfelder und Menüs übernehmen jetzt das kontextabhängige MaterialTheme (Ia3665, b/156527485).
- Der Layout-Richtungsparameter wurde aus dem Messungsblock der Layout()-Funktion entfernt. Die Layoutrichtung ist jedoch innerhalb des Callbacks über das Messwertbereich-Objekt (Ic7d9d) verfügbar.
- Add AbsoluteArrangement – ermöglicht die Anordnung von untergeordneten Elementen innerhalb der Row ohne automatische Spiegelung in RTL (I3a1df)
- Die Annotation „@Untracked“ wurde eingestellt. Ersetzen durch @ComposableContract(tracked=false) (Id211e)
- Vor dieser Änderung konnte das Compose-Compiler-Plug-in Aufrufe an Konstruktoren innerhalb einer @Composable-Funktion nicht einfach abfangen, wenn eine (I5205a, b/158123804) vorhanden war.
- Fügen Sie eine zusammensetzbare Funktion von
viewModel()
hinzu, mit der Sie ViewModel-Elemente, ähnlich wie in „Aktivität“ oder „Fragment“ (I5fdd1) erstellen oder bereits erstellen können. Die Radiusklasse wurde in eine Inline-Klasse umgewandelt. Methoden zum Erstellen von Companion-Anzeigen wurden entfernt. Stattdessen wurde der Funktionskonstruktor mit Standardparametern entfernt, sodass der Radius entlang der Y-Achse mit dem des erforderlichen Radius-Parameters für die x-Achse übereinstimmt.
DrawScope.drawRoundRect wurde so aktualisiert, dass ein einziger Radius-Parameter anstelle von zwei separaten Gleitkommawerten für den Radius entlang der x- und y-Achse verwendet wird (I46d1b).
Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem nur Dp- und primitive Typen für Pixelparameter verwendet wurden. Px-Klasse vollständig gelöscht (I3ff33)
Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem für Pixelparameter nur der Dp-Wert und primitive Typen verwendet wurden (I086f4).
Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem nur Dp- und primitive Typen für Pixelparameter verwendet wurden (Id3434).
Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem für Pixelparameter nur der Dp-Wert und primitive Typen verwendet wurden (I97a5a).
Der Cursor von TextField hat eine blinkende Animation (Id10a7).
Bei teilweisen Gesten muss kein Gesten-Token mehr übergeben werden (Id7ae5)
Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem für Pixelparameter nur der Dp-Wert und primitive Typen verwendet wurden (I57bff).
Die Einstellung von Modifier.semantics wurde eingestellt, um die Verwendung von übergeordneten Komponenten zu ermöglichen. (I4cfdc)
Benennen Sie AnnotatedString.Builder.addAnnotationString um in addStringAnnotation. (I5059e)
Die Ausrichtungs-API wurde aktualisiert und die absolute Ausrichtung wird jetzt unterstützt. Diese wird in Rtl-Kontext nicht automatisch gespiegelt (I38cd3).
Untergeordnete Layout- und LayoutModifier-Elemente können mit einer anderen Layoutrichtung gemessen werden. (ibd731)
Einführung eines zusätzlichen optionalen rect-Parameters in ImagePainter, der das Zeichnen eines Unterabschnitts des zugrunde liegenden ImageAsset (I0ea9e) unterstützt
Ein Absturz in der AdapterList beim Entfernen von Elementen wurde behoben (Ic64b0, b/153195921).
Wir haben die Messung des ersten Layouts geändert, das Sie in den activity.setContent { }-Block einfügen. Früher musste es den gesamten Bildschirm ausfüllen. Jetzt verhält es sich so, als würden Sie Ihr Layout in einen Stack legen: Es kann kleiner als ein Bildschirm sein und wird oben links platziert. Wenn Sie das alte 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 die zusammensetzbaren Funktionen von CoreText und CoreTextField (Ib7d47).
Das Modul "ui-text" wird in "ui-text-core" (I57dec) umbenannt.
Die zusammensetzbaren Funktionen „ui-framework/CoreText“ und „CoreTextField“ wurden nach „ui-text-compose“ verschoben. Vielleicht möchten Sie „ui-text-compose“ in Ihr Projekt einbinden. (I32042)
runOnIdleCompose
undrunOnUiThread
sind jetzt globale Funktionen anstelle von Methoden in ComposeTestRule. (Icbe8f)[Mutable]Die Stellvertreter-Operatoren für Status-Properties wurden in Erweiterungen verschoben, um die Optimierung von Property-Delegaten für Kotlin 1.4 zu unterstützen. Aufrufer müssen Importe hinzufügen, um
by state { ... }
oderby mutableStateOf(...)
weiterhin verwenden zu können. (I5312c)In „DawLayerModifier“ und „drawLayer()“ sind jetzt die Standardeinstellungen „clipToBounds“ und „clipToOutline“ auf „false“ festgelegt. (I0eb8b, b/152810850)
LayoutResult wurde in MeasureResult umbenannt. (Id8c68)
Eingestellte 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 entsprechenden Modifikatoren ersetzt werden (Idf5e0).
LayoutFlexible wurde in LayoutWeight umbenannt. Enger zu füllender Parameter wurde umbenannt. (If4738)
DrawVector wurde von einer regulären zusammensetzbaren Funktion in die Rückgabe einer ModifierdrawVector()-Funktion geändert, die den Vektor als Hintergrund in einem Layout zeichnet. (I7b8e0)
Ersetzen Sie die zusammensetzbare Funktion „Clip“ durch den Modifikator „drawClip()“. „DawClipToBounds“ ist ein praktischer Modifikator, der verwendet werden kann, wenn Sie nur die Ebenengrenzen mit einer Rechteckform beschneiden müssen. (If28eb)
Die zusammensetzbare Funktion „DawShadow“ wurde durch den Modifizierer „drawShadow()“ ersetzt. Schatten werden jetzt als Teil von LayerModifier gezeichnet. (I0317a)
„androidx.compose.ViewComposer“ wurde nach „androidx.ui.node.UiComposer“ verschoben androidx.compose.Emittable wurde entfernt. Es war durch ComponentNode redundant. 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ürComposition
, die vonsetContent
zurückgegeben wird. androidx.compose.Compose.subcomposeInto wurde nach androidx.ui.core.subcomposeInto ComponentNode#emitInsertAt umbenannt in ComponentNode#insertAt ComponentNode#emitRemoveAt wurde in Component#removeAt Component0Node#emitMode umbenannt in androidx.ui.core.subcomposeIntoNode#emitInsertAt wurde in ComponentNode#insertAt umbenannt.Einstellung der zusammensetzbaren Funktion „Umbruch“. Er kann entweder durch den Modifikator „LayoutAlign“ oder durch die zusammensetzbare Funktion „Stack“ ersetzt werden (Ib237f).
Die Layoutrichtung wurde vom übergeordneten Layoutknoten an untergeordnete Elemente weitergegeben. Modifikator für die Layoutrichtung hinzugefügt. (I3d955)
Benennen Sie Painter.toModifier in Painter.asModifier um, da der neu erstellte Modifikator 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()“ kannst du jetzt „DensityAmbient.current“ verwenden. Anstelle von withDensity(density) nur mit(density) (I11cb1)
ValueHolder-Klasse entfernt. Neustrukturierung von AnimierteValue-, animateFloat-Klassen, um das Animationswertfeld zu abstrahieren, sodass Unterklassen die Aktualisierung des Werts beobachten können.
- Modellklassen für AnimierteValue, animateFloat usw. wurden hinzugefügt.
- Es wurde eine neue, einfache @Composable API zum Animieren zwischen Werten hinzugefügt.
- (I79530)
Wichtige Änderungen an der Ambients API. Weitere Informationen finden Sie in der Protokoll- und
Ambient<T>
-Dokumentation (I4c7ee, b/143769776).Die Ganzzahlpositionen der Ausrichtungslinie, die von Placeable#get(AlignmentLine) zurückgegeben werden, sind jetzt nicht null. Wenn die abgefragte Ausrichtungslinie fehlt, wird „AlignLine.Unspecific“ zurückgegeben. (I896c5, b/158134875)
Ein ConstraintLayout-Fehler, der bei Neuzusammensetzungen einen Absturz verursachte, wurde behoben. (Ibee5a, b/158164341)
Die nachgelagerte Lambda API WithConstraints wurde geändert. Statt zwei Parametern gibt es nun einen Empfängerbereich, der neben den Einschränkungen und layoutDirection der Eigenschaften minWidth, maxWidth, minHeight und maxHeight in Dp definiert ist (I91b9a, b/149979702)
LayoutModifier2 wurde in LayoutModifier umbenannt. (Id29f3)
Die intrinsischen Messfunktionen in Layout und LayoutModifier2 verfügen jetzt über einen IntrinsicMeasureScope-Empfänger, der eine intrinsische Abfrage-API mit implizit weitergegebener Layoutrichtung bietet. (Id9945)
LayoutDirectionAmbient wurde eingestellt. Um die durch die Sprache definierte Layoutrichtung zu lesen, verwenden Sie „languageLayoutDirection“ 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 einen LayoutTag-Modifikator, wenn Sie einfach untergeordnete Layout-Tags taggen müssen, um sie im Messwertblock zu erkennen. (I51368, b/150953183)
Fügen Sie OnPositionedModifier und OnChildPositionedModifier hinzu, um die zusammensetzbaren Funktionen OnPositioned und OnChildPositioned zu ersetzen. (I2ec8f)
Negatives Padding in LayoutPadding nicht zulassen. LayoutOffset sollte stattdessen für Offsets negativer Positionen verwendet werden. (Ifb5b1)
WithConstraints hat LayoutDirection-Parameter erhalten (I6d6f7)
Das Flag
ComposeFlags.COMPOSER_PARAM
wurde intrue
geändert. Dadurch wird die Strategie zur Codegenerierung für das „compose“-Plug-in geändert. Auf übergeordneter Ebene führt dies dazu, dass @Composable-Funktionen mit einem zusätzlichen synthetischen Parameter generiert werden, der an nachfolgende @Composable-Aufrufe übergeben wird, damit die Laufzeit die Ausführung ordnungsgemäß verwaltet. Dies ist eine erhebliche Änderung beim Binärcode, die jedoch bei jeder genehmigten Verwendung von „compose“ die Kompatibilität auf Quellebene aufrechterhalten sollte. (I7971c)LayoutCoordinates wurde geändert, um ProvidedAlignmentLines als Set anstelle einer Karte zu definieren und LayoutCoordinates zu implementieren, um stattdessen den get()-Operator zum Abrufen eines Werts zu implementieren. So ist es für Modifikatoren einfacher, einen oder mehrere Werte des Satzes zu ändern, ohne für jeden Modifikator eine neue Sammlung zu erstellen. (I0245a)
LayoutCoordinates weist keine Positionseigenschaft mehr auf. Die Eigenschaft "position" ist im Hinblick auf LayoutModifiers, Rotation oder Skalierung nicht sinnvoll. Stattdessen sollten Entwickler die Elemente „parentCoordinates“ und „childToLocal()“ verwenden, um die Transformation von LayoutCoordinate in eine andere zu berechnen.
LayoutCoordinates verwendet für die Größeneigenschaft IntPxSize anstelle von PxSize. Bei Layouts werden für Layouts ganze Pixelgrößen verwendet. Daher sollten für alle Layoutgrößen Ganzzahlen und keine Gleitkommawerte verwendet werden. (I9367b)
Verbesserungen an der API-Oberfläche von Einschränkungen (I0fd15)
TextDirection.Content wurde hinzugefügt (I48f36)
Aktivieren Sie das Symbolleistenmenü, um die Funktionen „Kopieren“, „Ausschneiden“ und „Einfügen“ korrekt anzuzeigen. (Id3955)
Unverankerte Symbolleiste für die Textfeldauswahl hinzufügen. (Ie8b07)
TextDirectionAlgorithm wird in TextDirection (I75ce8) umbenannt
TextDirection wird in ResolvedTextDirection (I3ff38) umbenannt
HapticFeedback zur TextField-Auswahl hinzufügen. (I58050)
Methoden zum Kopieren, Ausschneiden und Einfügen zur Textfeldauswahl hinzufügen (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 zu 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 Operationen hinzufügen. (I49d53)
Das neue LifecycleOwnerAmbient ist jetzt verfügbar. Eine Aktivität, die Sie mit der Benutzeroberfläche zum Schreiben verwenden, sollte jetzt androidx.activity.ComponentActivity (oder AppCompatActivity) erweitern. „setContent“ in android.app.Activity wurde verworfen (Idb25a, b/153141084).
ui-android-text-Paketname (androidx.text) durch androidx.ui.text.platform ersetzt, um ihn an die androidx-Richtlinie anzupassen. (I42711)