Compose Foundation
androidx.compose.foundation
androidx.compose.foundation.layout
androidx.compose.foundation.gestures
androidx.compose.foundation.selection
androidx.compose.foundation.lazy
androidx.compose.foundation.interaction
androidx.compose.foundation.text
(API-Referenzdokumente für alle Compose-Pakete ansehen)
Letzte Aktualisierung | Stabile Version | Release Candidate | Beta-Ausgabe | Alphaversion |
---|---|---|---|---|
11. Dezember 2024 | 1.7.6 | - | - | 1.8.0-alpha07 |
Struktur
Compose ist eine Kombination aus sieben Maven-Gruppen-IDs in androidx
. Jede Gruppe enthält eine gezielte Teilmenge von Funktionen, für die jeweils eigene Release-Notes gelten.
In dieser Tabelle werden die Gruppen und Links zu den einzelnen Versionshinweisen erläutert.
Gruppe | Beschreibung |
---|---|
compose.animation | Sie können Animationen in ihren Jetpack Compose-Anwendungen erstellen, um die Nutzerfreundlichkeit zu verbessern. |
compose.compiler | @Composable-Funktionen transformieren und Optimierungen mit einem Kotlin-Compiler-Plug-in aktivieren |
compose.foundation | Erstellen Sie Jetpack Compose-Anwendungen mit vorgefertigten Bausteinen und erweitern Sie das Fundament, um eigene Designsystemelemente zu erstellen. |
compose.material | Erstellen Sie Jetpack Compose-UIs mit vorgefertigten Material Design-Komponenten. Dies ist der übergeordnete Einstiegspunkt von Compose. Er wurde entwickelt, um Komponenten bereitzustellen, die denen auf www.material.io entsprechen. |
compose.material3 | Erstellen Sie Jetpack Compose-UIs mit Material Design 3-Komponenten, der nächsten Weiterentwicklung von Material Design. Material 3 umfasst aktualisierte Themen und Komponenten sowie Personalisierungsfunktionen von Material You wie dynamische Farben. Es wurde so konzipiert, dass es zum neuen visuellen Stil und zur System-UI von Android 12 passt. |
compose.runtime | Grundlegende Bausteine des Programmiermodells und der Statusverwaltung von Compose sowie die Kernlaufzeit, auf die das Compose-Compiler-Plug-in ausgerichtet ist. |
compose.ui | Grundlegende Komponenten der Compose-Benutzeroberfläche, die für die Interaktion mit dem Gerät erforderlich sind, einschließlich Layout, Zeichnen und Eingabe. |
Abhängigkeiten deklarieren
Wenn Sie eine Abhängigkeit von Compose hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.
Fügen Sie der Datei build.gradle
für Ihre App oder Ihr Modul die Abhängigkeiten für die erforderlichen Artefakte hinzu:
Groovy
dependencies { implementation "androidx.compose.foundation:foundation:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.7.5") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Ihr Feedback hilft uns, Jetpack zu verbessern. Bitte teilen Sie uns mit, wenn Sie neue Probleme feststellen oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können einem vorhandenen Problem Ihre Stimme geben, indem Sie auf die Schaltfläche mit dem Stern klicken.
Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.
Version 1.8
Version 1.8.0-alpha07
11. Dezember 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha07
wird veröffentlicht. Version 1.8.0-alpha07 enthält diese Commits.
API-Änderungen
- Das Flag
ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled
wurde gelöscht, mit dem das Entfernen der internengraphicsLayer
ausBasicText
rückgängig gemacht werden konnte. Wenn Sie diese Markierung verwendet haben, teilen Sie uns bitte die Gründe mit, indem Sie einen Fehler melden. Sie können auch einfachModifier.graphicsLayer()
an IhreBasicText
-Aufrufe übergeben, um das gleiche Verhalten wie zuvor zu erzielen. (Id9f90) - Standardimplementierung für neue
stickyHeader
-DSL hinzugefügt. (I68986) - Wird in der
LocalAutofillHighlightColor
-Komposition lokal ein Farbtyp verwendet? (I0e05b) OverscrollEffect#withoutDrawing
wurde inOverscrollEffect#withoutVisualEffect
umbenannt. (I1a154)
Fehlerkorrekturen
- Weitere Fehlerbehebung für ein Problem bei der Zielberechnung von
AnchoredDraggable
, bei dem bei bestimmten Wischbewegungen der falsche Anker festgelegt werden konnte. (I23b87, b/367660226)
Externer Beitrag
BringIntoViewResponderModifierNode
zur Benutzeroberfläche hinzugefügt, was eine neue Möglichkeit zur Implementierung der Funktion „In den Blick bringen“ bietet und die Implementierung auf Plattformebene ermöglicht (Ia6dd8)- Wir ändern die Darstellung des Cursors immer wieder leicht. Mit
LocalCursorBlinkEnabled
können Sie die Darstellung des Cursors in Tests deaktivieren. (I4c697)
Version 1.8.0-alpha06
13. November 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha06
wird veröffentlicht. Version 1.8.0-alpha06 enthält diese Commits.
API-Änderungen
- Fügt den
stylusHoverIcon
-Modifikator hinzu. (Iff20a, b/331289114) AnchoredDraggableState
ist veraltet.confirmValueChange
Anstatt Statusänderungen zu verwerfen, sollten nicht zulässige Anker nicht zum aktiven Ankersatz gehören. Stattdessen sollte einOverscrollEffect
verwendet werden, um die Nichtverfügbarkeit der angeforderten Aktion anzugeben. (Ia717f)- Der Autofill-Manager wird zu einer Benutzeroberfläche. (I84914, b/376080755)
- Es wurden die APIs
OverscrollEffect#withoutDrawing
undOverscrollEffect#withoutEventHandling
hinzugefügt. Diese APIs erstellen eine gewickelte Instanz des bereitgestellten Overscroll-Effekts, der Ereignisse nicht zeichnet bzw. nicht verarbeitet. Dadurch kann Overscroll in einer separaten Komponente gerendert werden, die von der Komponente, die Ereignisse sendet, getrennt ist. Beispielsweise können Sie das Zeichnen des Überscrollens in einer Lazy-Liste deaktivieren und es dann oben oder an anderer Stelle separat zeichnen. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244) - Unterstützung für die automatische Vervollständigung in der Textsymbolleiste (Ie6a4c)
OverscrollConfiguration
undLocalOverscrollConfiguration
werden eingestellt undrememberPlatformOverscrollFactory
wird hinzugefügt, um eine Instanz der Standard-Overscroll-Implementierung zu erstellen oder Parameter zu ändern. Wenn Sie das Überscrollen deaktivieren möchten, verwenden Sie anstelle vonLocalOverscrollConfiguration provides null
LocalOverscrollFactory provides null
. Wenn Sie die Farbe oder den Abstand des Glühens ändern möchten, verwenden Sie anstelle vonLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
. (Ie71f9, b/255554340, b/234451516)- Das Attribut
effectModifier
vonOverscrollEffect
innode: DelegatableNode
geändert, um mit anderen APIs übereinzustimmen. (Ic0b46, b/255554340) - Die experimentelle
GlobalAssertions
API wurde entfernt. Sie wurde ursprünglich für die Durchführung von Barrierefreiheitstests entwickelt. Verwenden Sie stattdessenenableAccessibilityChecks()
. (I59322)
Version 1.8.0-alpha05
30. Oktober 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha05
wird veröffentlicht. Version 1.8.0-alpha05 enthält diese Commits.
Neue Funktionen
- Unterstützung für die automatische Textgröße. Übergeben Sie eine
AutoSize
-Instanz (z. B.AutoSize.StepBased
) an Ihre bevorzugte Textkomposition (z. B.BasicText
), damit sich die Textgröße an den verfügbaren Platz anpasst. (Ice7e0, b/139320827) - Es werden die APIs
OverscrollFactory
undLocalOverscrollFactory
hinzugefügt, um das Überscrollen innerhalb einer Hierarchie zu konfigurieren. Der überLocalOverscrollFactory
angegebene Wert wird standardmäßig verwendet, um eineOverscrollEffect
zu erstellen. MitrememberOverscrollEffect()
kannst du einen Effekt aus der aktuellen bereitgestellten Factory erstellen und speichern. (I51ca4, b/255554340)
API-Änderungen
- Einführung von
CompositionLocal
, mit dem sich der Farbton der Hervorhebung für die erfolgreiche Autofill-Füllung ändern lässt. (I32092) ScrollableDefaults.overscrollEffect
wurde entfernt. Verwenden Sie stattdessenrememberOverscrollEffect
. Dadurch wird eine Instanz der aktuellen Overscroll-Implementierung erstellt, die mitLocalOverscrollFactory
bereitgestellt wird. (I1651a, b/255554340),(b/234451516)- Es wird eine neue
AutofillManager
-Benutzeroberfläche eingeführt, mit der sich der Autofill-Vorgang für Nutzer optimieren lässt, sowie einisSemanticAutofillEnabled
-Flag, mit dem diese neue Version von Autofill aktiviert werden kann. (I9d484) - Entfernt
CombinedClickableNode
. Diese experimentelle API wurde vorübergehend freigegeben, um Leistungsprobleme zu beheben. Sie ist jedoch nicht mehr erforderlich. Verwenden Sie stattdessen direktModifier.combinedClickable
, wie bei anderen Modifikator-APIs. (I4b658) - Es werden Überladungen für
horizontalScroll
,verticalScroll
,LazyColumn
,LazyRow
,LazyHorizontalGrid
,LazyVerticalGrid
,LazyHorizontalStaggeredGrid
,LazyVerticalStaggeredGrid
,HorizontalPager
undVerticalPager
hinzugefügt, die die Angabe einer benutzerdefiniertenOverscrollEffect
unterstützen. Das angegebeneOverscrollEffect
empfängt Ereignisse und wird innerhalb der Grenzen dieser Komponenten gerendert. Das Zeichnen derselbenOverscrollEffect
zweimal wird nicht unterstützt. Sie können also nicht dieselbeOverscrollEffect
, die einer dieser Komponenten bereitgestellt wird, separat mitModifier.overscroll
zeichnen. Der Anwendungsfall, bei dem der Überlauf außerhalb der Grenzen dieser Komponenten gezeichnet wird, wird in Zukunft separat behandelt. (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)
Version 1.8.0-alpha04
16. Oktober 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha04
wird veröffentlicht. Version 1.8.0-alpha04 enthält diese Commits.
API-Änderungen
- Es werden
DelegatableNode#onDensityChange
- undDelegatableNode#onLayoutDirectionChange
-Callbacks hinzugefügt, um den Knotenstatus bei Änderungen zu aktualisieren. (I04f3e, b/340662451) - Für „Absatz“ und
ParagraphIntrinsics
wird jetzt eine Liste aller Anmerkungen verwendet, die auf denAnnotatedString
angewendet wurden. Bisher gab es nur eine Liste derSpanStyles
. (I12f80) - Einführung von
PointerInputModifierNode#touchBoundsExpansion
, mit dem sich die Touch-Grenzen eines Eingabemodifikators für einen einzelnen Zeiger vergrößern lassen. (Iccf02, b/335339283)
Fehlerkorrekturen
- Ein Fehler wurde behoben, durch den Positionsgrenzwerte, die an
AnchoredDraggableDefaults.flingBehavior
übergeben wurden, in einigen Fällen nicht richtig berücksichtigt wurden. (Ifdf0d, b/367660226) - Es wurde ein Fehler behoben, bei dem verschachtelte scrollbare Elemente während eines laufenden Wischvorgangs aus dem Knotenbaum entfernt wurden. Diese Knoten brechen jetzt den Wisch ab und senden das
onPostFling
-Ereignis mit der verbleibenden Geschwindigkeit korrekt. Außerdem führen wir das FlagNewNestedScrollFlingDispatchingEnabled
ein, um das Verhalten bei Rückschritten zu steuern. Das Flag wird vor der Betaphase entfernt. (I05c37, b/371168883) - Ein Fehler wurde behoben, durch den
OverscrollEffects
, das anModifier.anchoredDraggable
übergeben wurde, 2D-Deltas statt 1D-Deltas erhielt. (Ie52c0)
Version 1.8.0-alpha03
2. Oktober 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha03
wird veröffentlicht. Version 1.8.0-alpha03 enthält diese Commits.
API-Änderungen
- Aktualisierung der Kotlin-Version auf 1.9 (I1a14c)
- Einführung des Flags
DraggableAddDownEventFixEnabled
(I848d5) - Es wurde eine neue semantische Rolle namens „Karussell“ eingeführt, um das Listenverhalten in Pagern für A11Y-Dienste zu emulieren. (Id354b, b/354109776, b/239672673)
- Der implizite
graphicsLayer
-Modifikator wurde aus demBasicText
-Kompositelement entfernt. Es wurde das experimentelle FlagComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled
hinzugefügt, um zum alten Verhalten zurückkehren zu können. (Ie478d) Modifier.recalculateWindowInsets()
wurde hinzugefügt, damit untergeordnete Elemente in der HierarchieinsetsPadding
verwenden können, auch wenn übergeordnete Elemente sie ohneconsumeWindowInsets()
ausgerichtet haben. (I7f9e4)
Fehlerkorrekturen
- Implementieren Sie die Gestenerkennung in
detectDragGestures
, in Elementen, die verschoben werden können, und in scrollbaren Elementen. Wenn ein Kind, das ein Element verschieben kann, eine Geste nicht ausführen kann, hat das übergeordnete Element die Möglichkeit, es aufzunehmen. Dies ermöglicht eine kontinuierlichere und integriertere Gestenverwaltung. (Ic88fe) - Aktualisierung des Verhaltens beim Abbrechen von Wischaktionen in scrollbaren Elementen Wenn ein scrollbares Element jetzt nach dem Weitwischen die Grenzen erreicht, wird die Weitwischgeschwindigkeit korrekt an das nächste scrollbare Element in der Kette übergeben, anstatt den Weitwisch fortzusetzen. (I9326a)
Version 1.8.0-alpha02
18. September 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha02
wird veröffentlicht. Version 1.8.0-alpha02 enthält diese Commits.
API-Änderungen
TextOverflow.StartEllipsis
undTextOverflow.MiddleEllipsis
sind jetzt verfügbar. Damit können Auslassungspunkte am Anfang oder in der Mitte der Zeile des einzeiligen Texts platziert werden (I38913, b/185418980)
Version 1.8.0-alpha01
4. September 2024
androidx.compose.foundation:foundation-*:1.8.0-alpha01
wird veröffentlicht. Version 1.8.0-alpha01 enthält diese Commits.
Version 1.7
Version 1.7.6
11. Dezember 2024
androidx.compose.foundation:foundation-*:1.7.6
wird veröffentlicht. Version 1.7.6 enthält diese Commits.
Fehlerkorrekturen
- Text-Inline-Inhalte, die für Bedienungshilfen nicht sichtbar waren, wurden korrigiert.
- Ein Problem wurde behoben, durch das
AndroidEmbeddedExternalSurface
nicht richtig zurückgesetzt wurde und bei der Wiederverwendung in einer Lazy List hängen blieb.
Version 1.7.5
30. Oktober 2024
androidx.compose.foundation:foundation-*:1.7.5
wird veröffentlicht. Version 1.7.5 enthält diese Commits.
Fehlerkorrekturen
- Achten Sie darauf, dass angepinnte Elemente im Bereich für den Inhaltsabstand nicht zweimal untergeordnet sind. (Ic6224)
Version 1.7.4
16. Oktober 2024
androidx.compose.foundation:foundation-*:1.7.4
wird veröffentlicht. Version 1.7.4 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, der in seltenen Fällen zu Abstürzen in Textfeldern führte. (I475c6, b/313010266)
ReusableContentHost
wurde an der Wurzel von Elementen mit Lazy Layout entfernt. Dies war eine mögliche Ursache für Abstürze vom Typ „Maßnahme wird auf einem deaktivierten Knoten aufgerufen“. (Id6e60)
Version 1.7.3
2. Oktober 2024
androidx.compose.foundation:foundation-*:1.7.3
wird veröffentlicht. Version 1.7.3 enthält diese Commits.
Fehlerkorrekturen
- Ein Speicherleck bei
BasicText
wurde behoben, wenn „minLines“ auf einen anderen Wert als den Standardwert festgelegt ist.
Version 1.7.2
18. September 2024
androidx.compose.foundation:foundation-*:1.7.2
wird veröffentlicht. Version 1.7.2 enthält diese Commits.
Fehlerkorrekturen
- Problem mit draggable behoben, bei dem Abwärtsereignisse fehlten, wodurch Wischaktionen langsamer als normal aussahen
Version 1.7.1
10. September 2024
- An Android-Artefakten gibt es keine Änderungen.
-desktop
Artefakte wurden entfernt und-jvmStubs
und-linuxx64Stubs
Artefakte hinzugefügt. Keines dieser Ziele ist zur Verwendung vorgesehen. Sie dienen als Platzhalter für die Arbeit mit Jetbrains Compose.
Version 1.7.0
4. September 2024
androidx.compose.foundation:foundation-*:1.7.0
wird veröffentlicht. Version 1.7.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.6.0
- Die Leistung von
Modifier.clickable
,Modifier.focusable
,Modifier.indication
,Modifier.scrollable
undModifier.draggable
wurde deutlich verbessert. Im Rahmen dieser Bemühungen wurden neben internen Änderungen auch die folgenden API-Änderungen vorgenommen.- Neue Indication API
IndicationNodeFactory
hinzugefügt. Dies führt zu leistungsfähigeren Anzeigenimplementierungen im Vergleich zur vorherigen (jetzt eingestellten)rememberUpdatedInstance
API. Informationen zur Migration finden Sie unter developer.android.com. - Für
clickable
,combinedClickable
,selectable
undtoggleable
kann jetzt einMutableInteractionSource
-Parameter mit dem Attribut „nullable“ verwendet werden. Wenn „null“ ist und die angegebene Angabe eineIndicationNodeFactory
ist, kann die Angabe nur bei Bedarf erstellt werden, was die Leistung verbessert. Wenn SieMutableInteractionSource
nicht hochskalieren und verwenden, sollten Sie anstelle vonremember { MutableInteractionSource() }
den Wert „null“ übergeben. Indication#rememberUpdatedInstance
wurde eingestellt. Sie führt zu einer unvermeidlichen Leistungseinbuße und verhindert andere Optimierungen. Verwenden Sie stattdessen die neueIndicationNodeFactory
API.
- Neue Indication API
BasicTextField
mit einerTextFieldState
ist jetzt stabil und wir empfehlen allen Call-Sites, mit der Migration vonBasicTextField(value, onValueChange)
zuBasicTextField(TextFieldState)
zu beginnen.- Das Feld
ClickableText
wurde eingestellt. Wenn du deinem Text anklickbare Links hinzufügen möchtest, verwendeBasicText
mit der neuen AnmerkungLinkAnnotation
in deinemAnnotatedString
. MitLinkAnnotation
können Sie ein benutzerdefiniertes Design basierend auf dem Linkstatus festlegen (z.B. fokussiert, Mauszeiger bewegt). - Einführung von
ContextualFlowRow
undEnhanced FlowRow/Column
mitMaxLines
undOverflow
Wir freuen uns, Ihnen Verbesserungen an den experimentellenFlowRow
undFlowColumn
vorstellen zu können. Sie unterstützen jetztmaxLines
und Overflow. Außerdem sindContextualFlowRow
undContextualFlowColumn
neu hinzugekommen. Dieses Update soll leistungsoptimierte Komponenten bieten.ContextualFlow*
eignet sich hervorragend für eine große Anzahl von Elementen, wobei eine kleine maxLines-Konfiguration und dynamische Schaltflächen vom Typ „+N weitere anzeigen“ verwendet werden.FlowRow
undFlowColumn
eignen sich hervorragend für eine kleine Anzahl von Elementen, also weniger als 100 Elemente. Wichtig: Wenn Sie das bisherige Verhalten inFlowRow
oderFlowColumn
beibehalten möchten, bei dem alle Elemente unabhängig davon zusammengesetzt werden, ob sie in die maximale Breite der Querachse passen, legen Sie bei der Initialisierung „overflow“ aufFlowRowOverflow.Visible
oderFlowColumnOverflow.Visible
fest. UnterContextualFlowRowSample
undFlowRowSample
finden Sie Beispiele für diese neuen Funktionen in der Praxis. (Ib9135, b/293577082) - In
LazyColumn
undLazyRow
wurde die Unterstützung für Animationen zum Ein- und Ausblenden von Elementen hinzugefügt. Bisher war es möglich, den ModifiziererModifier.animateItemPlacement()
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 Sie alle drei Animationstypen unterstützen können: Einblenden (Einblenden), Ausblenden (Ausblenden) und Neuanordnen. (I2d7f7, b/150812265) - Es wurde experimentelle Unterstützung für lange Screenshots in Scrollcontainern für die Nachrichtenerstellung mithilfe der offiziellen Android API (
ScrollCaptureCallback
) implementiert. - Die
NestedScroll
-Quellen „Ziehen“ und „Wischen“ werden durchUserInput
undSideEffect
ersetzt, um der erweiterten Definition dieser Quellen Rechnung zu tragen. Dazu gehören jetzt auch Animationen (Nebeneffekt) sowie Mausrad und Tastatur (UserInput
). LazyLayout
Prefetch-Anfragen können jetzt als „dringend“ gekennzeichnet werden. Das bedeutet, dass wir davon ausgehen, dass dieser Artikel im nächsten Frame benötigt wird, und das Frame-Budget ignorieren möchten, um mehr Arbeit im Voraus zu erledigen (Id513f)- Unterstützung der Eingabe per Eingabestift auf Geräten ab Android U (I002e4)
- Verschiedene APIs wurden auf die stabile Version umgestellt.
- Bildlaufleiste, Andocken, Fenstereinzüge
Version 1.7.0-rc01
21. August 2024
androidx.compose.foundation:foundation-*:1.7.0-rc01
wird veröffentlicht. Version 1.7.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Ein Absturz wurde behoben, der auftrat, wenn ein Element innerhalb eines übergeordneten Elements, das fokussierbar (oder anklickbar) und deaktiviert ist, den Fokus erhält. (b/317561689)
Version 1.7.0-beta07
7. August 2024
androidx.compose.foundation:foundation-*:1.7.0-beta07
wird veröffentlicht. Version 1.7.0-beta07 enthält diese Commits.
Fehlerkorrekturen
- Bei den
SemanticsNodeInteraction
-FunktionenperformTextReplacement
,performTextInput
undperformTextClearance
, die sich auf die Texteingabe beziehen, werden jetzt Assertion-Fehler ausgegeben, wenn sie auf schreibgeschützteTextFields
aufgerufen werden. (I4ae8f) - Ein visueller Fehler bei Hyperlinks wurde behoben. (I23311)
- Behoben wurde ein Problem, durch das die Tastenkombination
contentReceiver
mit einigen Eingabemethoden nicht funktionierte. - Velocity-Generierung: Verhindern der Weiterleitung von NaN-Werten in der Compose-Benutzeroberfläche und in Foundation.
Version 1.7.0-beta06
24. Juli 2024
androidx.compose.foundation:foundation-*:1.7.0-beta06
wird veröffentlicht. Version 1.7.0-beta06 enthält diese Commits.
Version 1.7.0-beta05
10. Juli 2024
androidx.compose.foundation:foundation-*:1.7.0-beta05
wird veröffentlicht. Version 1.7.0-beta05 enthält diese Commits.
Fehlerkorrekturen
- Behebung eines Problems bei der Verarbeitung von Nan-Werten in
SnapFlingBehavior
und Pager.
Version 1.7.0-beta04
26. Juni 2024
androidx.compose.foundation:foundation-*:1.7.0-beta04
wird veröffentlicht. Version 1.7.0-beta04 enthält diese Commits.
Fehlerkorrekturen
- Vermeiden von Abstürzen beim Messen sehr langer Textzeilen (z. B. 10.000 Zeichen) (8157ab)
- Behebung eines Fehlers beim Messen sehr großer Textmengen, der in der neuen
BasicTextField
zu Abstürzen führte (6b7575) - Eine Verhaltensänderung bei Zeilen-/Spaltenmessungen rückgängig machen, die die Textnutzung in bestimmten Szenarien beeinträchtigt (69e8ba)
Version 1.7.0-beta03
12. Juni 2024
androidx.compose.foundation:foundation-*:1.7.0-beta03
wird veröffentlicht. Version 1.7.0-beta03 enthält diese Commits.
Version 1.7.0-beta02
29. Mai 2024
androidx.compose.foundation:foundation-*:1.7.0-beta02
wird veröffentlicht. Version 1.7.0-beta02 enthält diese Commits.
API-Änderungen
- Es wird eine experimentelle API zum Konfigurieren des Vorab-Ladeverhaltens von
LazyGrids
hinzugefügt, die der vorhandenen experimentellen API fürLazyLists
ähnelt. Dazu gehört auch die Unterstützung für das Vorabladen von Elementen in verschachteltenLazyGrids
. Ähnlich wie beiLazyListPrefetchStrategy
werden standardmäßig die ersten beiden verschachtelten Elemente jedes Rasters vorab abgerufen. Dies kann jedoch mit den neuenLazyGridPrefetchStrategy(nestedPrefetchItemCount)
- undLazyListPrefetchStrategy#onNestedPrefetch
-APIs konfiguriert werden. (I591c4) SemanticsProperties.Editable
wurde inIsEditable
umbenannt undSemanticsPropertyReceiver.editable
in den WertisEditable
. Die Property ist jetzt ein boolescher Wert und wird immer über Textfelder angegeben. (I8acd8)- Die Standardwerte von
basicMarquee
wurden in dasMarqueeDefaults
-Objekt verschoben. (I12ff6) - Der Parameter
basicMarquee
delayMillis
wurde inrepeatDelayMillis
umbenannt. (I12ff6) - API für das Formatieren der Links aktualisiert:
TextLinkStyles
wurde an dieTextStyle
verschoben undTextDefaults
aus dem Material entfernt (I5477b)
Fehlerkorrekturen
LayoutCoordinates.introducesFrameOfReference
inLayoutCoordinates.introducesMotionFrameOfReference
umbenannt, um den Zweck besser zu verdeutlichen. Die zugehörige Funktion wurde umbenannt, um Koordinaten anhand dieses Flags zu berechnen. (I3a330)- „Standard“ wurde aus den
MarqueeDefaults
-Properties entfernt. (I1d8a0) - „Marquee“ wurde aus
MarqueeDefaults
-Properties entfernt. (Iad4f4) TextLinkStyles
wurde aus dem KursTextStyle
entfernt. Stattdessen istTextLinkStyles
Teil des KonstruktorsLinkAnntation
und der MethodeAnnotatedString.fromHtml
(I90b2b).- Ein Fehler wurde behoben, durch den der Pager beim Wischen in Richtung einer Grenze an dieser Grenze anschlug, obwohl er sich bereits an der Grenze befand. (I9f373, b/339171222)
- In BTF2 werden jetzt die richtigen Maus-Auswahlgesten verwendet. (Ibe8c6)
Externer Beitrag
- „Berechnung der Zusammenstellungs-/Messzeit basierend auf dem Inhaltstyp im Prefetch vornehmen, um die Genauigkeit zu verbessern“ noch einmal einreichen (Iea622)
- Die Berechnung der Zusammenstellungs-/Messzeit basierend auf dem Inhaltstyp im Prefetch verbessern, um die Genauigkeit zu erhöhen (Ibccb1)
WindowInsetsPadding
-Modifikatoren aus dem gemeinsamen Quellsatz verfügbar machen (I070b2)
Version 1.7.0-beta01
14. Mai 2024
androidx.compose.foundation:foundation-*:1.7.0-beta01
wird veröffentlicht. Version 1.7.0-beta01 enthält diese Commits.
API-Änderungen
- Die Property
KeyboardOptions.shouldShowKeyboardOnFocus
wurde aus Gründen der Binärkompatibilität wieder als eingestellt und ausgeblendet hinzugefügt. (I15cfe) Modifier.anchoredDraggable
kehrt jetzt standardmäßig die Deltas für Komponenten mit horizontaler Ausrichtung um, wenn sie in einem RTL-Layout verwendet werden. (I3c6d9)AnnotatedString.hasEqualsAnnotations
heißt jetzthasEqualAnnotations
. (I685c0)- Die API zum Abrufen von Material-Links im Text wurde aktualisiert. Insbesondere wurden die Methoden aus der
TextDefaults
zum Erstellen von themenbezogenenLinkAnnotations
und zum Parsen von HTML mit themenbezogenen Links entfernt. Stattdessen wurde die KlasseTextLinkStyles
hinzugefügt, mit der die Links als Parameter für das Text-Element formatiert werden können. (I31b93) onDragStarted
undonDragStopped
wurden durch Callbacks ohne Suspend ersetzt. (I59de8)
Fehlerkorrekturen
- Ein Fehler wurde behoben, aufgrund dessen Pager abstürzte, wenn die
contentPadding
größer als die eingehenden Einschränkungen war. Der Pager wandelt negative Werte, die vonPageSize
zurückgegeben werden, jetzt in 0 um. (Iba5d8, b/314008560)
Version 1.7.0-alpha08
1. Mai 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha08
wird veröffentlicht. Version 1.7.0-alpha08 enthält diese Commits.
Neue Funktionen
- Für
BasicTextField
undSelectionContainer
wurde ein Kontextmenü mit den Optionen „Ausschneiden“, „Kopieren“, „Einfügen“ und „Alle auswählen“ hinzugefügt. (If8c93, Ia2b49, I6f268)
API-Änderungen
LazyLayout
Prefetch-Anfragen können jetzt als „dringend“ gekennzeichnet werden. Das bedeutet, dass wir davon ausgehen, dass dieser Artikel im nächsten Frame benötigt wird, und das Frame-Budget ignorieren möchten, um mehr Arbeit im Voraus zu erledigen (Id513f)isPositionedByParentWithDirectManipulation
wurde inintroducesFrameOfReference
umbenannt. Hinweis: Jetzt hat es den umgekehrten Effekt. Das bedeutet, dass die meistenLayoutCoordinates
standardmäßig einen Referenzrahmen einführen und die Eigenschaft nur dann auf „false“ gesetzt wird, wenn sie direkt manipuliert wird. Wenn Sie die Position nur mit Elementen abfragen möchten, die einen Bezugspunkt einführen, verwenden SiepositionInLocalFrameOfReference(...)
. OderpositionInLocalLookaheadFrameOfReference
von einemLookaheadScope
. (Ifc5f7)onClicked
inLinkInteractionListener
inonClick
umbenannt (Iaa35c)- Aktionslambda für
getScrollViewportLength
gemäß Feedback des API-Rates ändern (Ibc74a) - APIs zur Delegierung von Eingabestiften wurden umbenannt. (Ica45f, b/327271923)
- Benennen Sie
TextInclusionStrategy.isInside
inisIncluded
um. Der Rückgabetyp vonParagraph/MultiParagraph#getRangeForRect()
darf keine Nullwerte enthalten. (I51f26)
Fehlerkorrekturen
- In
SelectionContainer
wurde allen kontextbezogenen Textmenüs die Option „Alle auswählen“ hinzugefügt. (Ib750e, b/240143283) - Problem beim Erstellen langer Screenshots für scrollende Container mit
reverseScrolling=true
behoben (I7c59c) - Ein Problem wurde behoben, durch das sich der
currentValue
vonAnchoredDraggableState
beim Erreichen der Grenzen des Bundesstaats geändert hat. (Iea30b, b/333846848)
Externer Beitrag
PrefetchExecutor
inPrefetchScheduler
umbenannt, um die Zuständigkeiten besser widerzuspiegeln. (Ib9154)- Unterstützung für das Vorabladen von Elementen in verschachtelten
LazyLists
hinzugefügt (z.B. eineLazyColumn
, die verschachtelteLazyRows
rendert). Durch diese Änderung werden bei diesenLazyLists
voraussichtlich weniger Frame-Drops beim Scrollen auftreten. Standardmäßig werden die ersten beiden verschachtelten Elemente vorab abgerufen. Dieses Verhalten kann jedoch mit den neuenLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
- undLazyListPrefetchStrategy#onNestedPrefetch
-APIs gesteuert werden. (I51952)
Version 1.7.0-alpha07
17. April 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha07
wird veröffentlicht. Version 1.7.0-alpha07 enthält diese Commits.
Neue Funktionen
- Es wurde ein
TextDefaults
-Objekt hinzugefügt, das Methoden zum Erstellen einerLinkAnnotation
und zum Parsen von HTML-getaggten Strings enthält, dieMaterialTheme
auf die Links anwenden. (I98532, b/139312671) - In
LazyVerticalGrid
undLazyHorizontalGrid
wurde die Unterstützung für Animationen beim Ein- und Ausblenden von Elementen hinzugefügt. Bisher war es möglich, den ModifiziererModifier.animateItemPlacement()
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 Sie alle drei Animationstypen unterstützen können: Einblenden (Einblenden), Ausblenden (Ausblenden) und Neuanordnen. (Ib7d12, b/330510929) - In
LazyVerticalStaggeredGrid
undLazyHorizontalStaggeredGrid
wurde die Unterstützung für Animationen zum Ein- und Ausblenden von Elementen hinzugefügt. Bisher war es möglich, den ModifiziererModifier.animateItemPlacement()
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 Sie alle drei Animationstypen unterstützen können: Einblenden (Einblenden), Ausblenden (Ausblenden) und Neuanordnen. (I69bc9, b/330511290)
API-Änderungen
- Fügt
ContextMenuColors
und das zugehörigeLocalContextMenuTheme
ProvidableCompositionLocal
hinzu. Die Farben des Kontextmenüs für Textfelder und auswählbaren Text können geändert werden, indem die Komposition lokal bereitgestellt wird. (Ifa154) - Für Textlinks gibt es jetzt neben den Optionen für den normalen Stil, den Mauszeiger- und den Fokusstil auch eine Option für den gedrückten Zustand. (I5f864, b/139312671)
- Einführung von
ViewConfiguration.HandwritingGestureLineMargin
für Handschriftgesten Unterstützung der Geste für die Handschrifteingabe fürBasicTextField
(Ie6e13, b/325660505) DelegatableNode.scrollIntoView
wurde für die Version 1.7 entfernt, da wir nicht genügend Zeit hatten, die restliche API-Oberfläche zu stabilisieren. Diese Funktion wird in Version 1.8 wieder eingeführt (I6cf61, b/333421581, b/332900232)- Wenn Sie Layoutkoordinaten abfragen, können Sie jetzt das Argument
excludeDirectManipulationOffset
verwenden, um den Versatz auszuschließen, der von übergeordneten Layouts festgelegt wurde, die ihre untergeordneten Elemente mitPlaceable.PlacementScope.withDirectManipulationPlacement
platziert haben. Ebenso können die Elemente in einem Layout, bei dem sich die Position der untergeordneten Elemente häufig ändert, jetzt mitwithDirectManipulationPlacement
platziert werden (z. B. Scroll, standardmäßig implementiert). Dadurch sindapproachLayout
-basierte Animationen intuitiver, da Sie jetzt unterscheiden können, welcher Offset animiert werden soll und was direkt angewendet werden soll, wenn Sie sich für die Animation entscheiden. (I60ec7) requestScrollToItem
fürLazyStaggeredGrid
einführen Für jeden Mess-Pass kann der Client jetzt die Indexerhaltung basierend auf dem Schlüssel deaktivieren, indem errequestScrollToItem
aufruft. Das bestehende Verhalten ändert sich dadurch nicht, es sei denn,requestScrollToItem
wird aufgerufen. (I63983)- Einführung von
requestScrollToPage
in Pager Für jeden Mess-Pass kann der Client jetzt die Indexerhaltung basierend auf dem Schlüssel deaktivieren, indem errequestScrollToPage
aufruft. Das bestehende Verhalten ändert sich dadurch nicht, es sei denn,requestScrollToPage
wird aufgerufen. (Ic4213) - Einführung von
requestScrollToItem
fürLazyGrids
. Für jeden Mess-Pass kann der Client jetzt die Indexerhaltung basierend auf dem Schlüssel deaktivieren, indem errequestScrollToItem
aufruft. Das bestehende Verhalten ändert sich dadurch nicht, es sei denn,requestScrollToItem
wird aufgerufen. (I0a7a0) ClickableText
wurde verworfen. Wenn du dem Text Links hinzufügen möchtest, erstelle eineAnnotatedString
mit einerLinkAnnotation
, die deinem Link entspricht, und übergebe dieseAnnotatedString
an dasText
-Element (I34d4b, b/323346994).UrlAnnotation
wurde verworfen. Verwenden Sie stattdessenLinkAnnotation.Url
. Wenn Sie Material-Design-Designvorlagen verwenden, verwenden Sie dasTextDefaults
-Objekt, um die Anmerkung mit Material-Design-Designvorlagen zu erstellen (I8d180, b/323346545).String.parseAsHtml
inAnnotatedString.Companion.fromHtml
umbenannt (I43dcd)- Stilargumente (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) und ein Link-Interaktions-Listener wurden der MethodeparseAsHtml
hinzugefügt. Beim Parsen des HTML-getaggten Strings mit<a>
-Tags erstellt die Methode für jedes solche Tag einLinkAnnotation.Url
und übergibt die Stilobjekte und den Link-Interaktions-Listener an jede Anmerkung. (I7c977) LinkAnnotation
akzeptiert jetzt die zustandsbasierten Stilargumente und einLinkInteractionListener
. Fügen Sie diese Anmerkung demAnnotatedString
hinzu, um einen Hyperlink zu erhalten. Wenn SiefocusedState
und/oderhoveredState
übergeben, können Sie die visuelle Konfiguration für Links definieren, wenn sie den Fokus haben und/oder der Mauszeiger darauf ruht. (I81ce4, b/139312671)- Das Feature-Flag für lange Screenshots wurde entfernt. (I28648, b/329128246)
LazyColumn
rendert jetzt fixierte Überschriften in langen Screenshots korrekt. (I8d239, b/329296635)- Die meisten der verbleibenden experimentellen APIs, die mit der neuen
BasicTextField
eingeführt wurden, wurden stabilisiert. (I714e2) - Dem Parameter
BasicSecureTextField
wurde der ParametertextObfuscationCharacter
hinzugefügt, mit dem festgelegt wird, welches Zeichen beim Verschleieren des Inhalts verwendet werden soll. (I0588b) - Die
NestedScroll
-Quellen „Ziehen“ und „Wischen“ werden durchUserInput
undSideEffect
ersetzt, um der erweiterten Definition dieser Quellen Rechnung zu tragen. Dazu gehören jetzt auch Animationen (Nebeneffekt) sowie Mausrad und Tastatur (UserInput
). (I40579) - Einführung von
LocalBringIntoViewSpec
, einem plattformabhängigen Fokus-Scrollverhalten, das auf der Scrollable-Modifikatorebene angewendet wird. (I27aa5, b/317453911) TextFieldCharSequence
wurde entfernt.TextFieldBuffer.originalValues
wird durchTextFieldBuffer.originalText
undTextFieldBuffer.originalSelection
ersetzt. (I2c7d6)ImeOptions.hintLocales
ist nicht mehr optional. Wenn Sie eine leere Liste mit Sprachen übergeben möchten, verwenden SieLocaleList.Empty
. (Ic5bc4)getOffsetFractionForPage
wurde ingetOffsetDistanceInPages
umbenannt. (Ia05e2)
Fehlerkorrekturen
- Wenn
InputTransformations
mitnext
zusammengeführt werden, werden ihreKeyboardOptions
jetzt mithilfe der neuenKeyboardOptions.merge
-Methode richtig mithilfe einzelner Optionen zusammengeführt. (Ie5304, b/295951492) - Bei
AnchoredDraggableState
werdentargetValue
jetzt keine Positionsgrenzwerte mehr berücksichtigt. Es hat jetzt einen impliziten Grenzwert von 50%, was bedeutet, dass sichtargetValue
in der Mitte zwischen zwei Ankern ändert. (I82c2c)
Externer Beitrag
- 2 Scroll-APIs umbenannt (I56a75)
Version 1.7.0-alpha06
3. April 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha06
wird veröffentlicht. Version 1.7.0-alpha06 enthält diese Commits.
Neue Funktionen
- In
LazyColumn
undLazyRow
wurde die Unterstützung für Animationen zum Ein- und Ausblenden von Elementen hinzugefügt. Bisher war es möglich, den ModifiziererModifier.animateItemPlacement()
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 Sie alle drei Animationstypen unterstützen können: Einblenden (Einblenden), Ausblenden (Ausblenden) und Neuanordnen. (I2d7f7, b/150812265) - Kunden von
LazyColumn/LazyRow
können jetzt die Indexerhaltung basierend auf dem Schlüssel für den anstehenden Messdurchgang deaktivieren, indem sie eine nicht ausgesetzteLazyListState.requestToScroll
aufrufen. (I98036, b/209652366) - Die Methode
parseAsHtml
für formatierte Strings wurde hinzugefügt. Damit können Sie einen mit HTML-Tags markierten String inAnnotatedString
konvertieren. Beachten Sie, dass nicht alle Tags unterstützt werden. Aufzählungslisten können beispielsweise noch nicht angezeigt werden. (I84d3d) - Es wurde eine experimentelle Unterstützung für lange Screenshots in Scroll-Containern für die Nachrichtenerstellung mithilfe der offiziellen Android API (
ScrollCaptureCallback
) implementiert. Diese Funktion ist experimentell und wird derzeit möglicherweise nicht in allen Fällen korrekt verarbeitet. Aus diesem Grund ist die Funktion derzeit standardmäßig deaktiviert. Wenn Sie die Funktion aktivieren möchten, setzen Sie das FlagComposeFeatureFlag_LongScreenshotsEnabled
auf „true“. Dieses Flag wird vor der 1.7-Betaversion entfernt. (I2b055, b/329296471) - Einführung einer neuen
GraphicsLayer
API, um mehr Flexibilität beim Platzieren und Rendern vonGraphicsLayer
-Instanzen zu ermöglichen und intrinsische Rendering-Funktionen zu unterstützen, ohne dass eine Abstimmung mit Composable-Implementierungen erforderlich ist, umGraphicsLayer
-Modifikatorinstanzen anzugeben.
API-Änderungen
- Alle
KeyboardOptions
-Parameter haben jetzt standardmäßig keinen Wert. Die MethodeKeyboardOptions.merge
wurde hinzugefügt. KeyboardOptions.autoCorrect
inautoCorrectEnabled
umbenannt und als „nullable“ (mit Nullwert zulässig) gekennzeichnet. „Null“ gibt an, dass kein Wert angegeben wurde. (Ia8ba0, b/295951492)outOfBoundsPageCount
wurde inbeyondViewportPageCount
umbenannt. (I129c6)fun ClipEntry.getMetadata()
wird inval ClipEntry.clipMetadata
geändert. (I50155)TextFieldState.valueAsFlow()
wurde entfernt. Verwenden Sie vorzugsweisesnapshotFlow { state.text }
odersnapshotFlow { TextFieldCharSequence(state.text, state.selection) }
(I7d629).- Die
InputTransformation.transformInput
-Parameter wurden neu angeordnet.originalValue: TextFieldCharSequence
wurde entfernt. Stattdessen trägtTextFieldBuffer
jetzt diesen Wert mit demselben Namen. Außerdem wurde der ParametervalueWithChanges: TextFieldBuffer
entfernt.TextFieldBuffer
ist jetzt der Empfängerbereich der Funktion. (I919cc) - Bei der
BasicTextField(state)
-Variante undBasicSecureTextField
wird jetztKeyboardActionHandler
anstelle vonKeyboardActions
verwendet, um Aktionen der Softwaretastatur zu verarbeiten. (I58dda) - APIs zur Delegierung der Eingabe per Eingabestift, um das Schreiben per Eingabestift in „gefälschten“ Texteingabefeldern zu unterstützen. (I9c09c, b/327271923)
KeyboardOptions.shouldShowKeyboardOnFocus
wurde inshowKeyboardOnFocus
umbenannt. (Ib4b7a, b/295951492)- Der Parameter
hintMediaTypes
wurde ausModifier.contentReceiver
entfernt. Entwickler wurden bereits aufgefordert, den Medientyp der empfangenenTransferableContent
zu prüfen, da er möglicherweise nicht mit der konfiguriertenhintMediaTypes
kompatibel ist. (I82f99) - Die Parameter von
BasicSecureTextField
wurden neu angeordnet. Die ParameterkeyboardType
undimeAction
wurden zugunsten der vollständigenKeyboardOptions
-Klasse entfernt. Die Standardeinstellungen fürBasicSecureTextField
blieben unverändert. Außerdem wurde der ParameterscrollState
entfernt. (Ibbfa9) - Der Typ von
TextFieldState.text
wird vonTextFieldCharSequence
inCharSequence
geändert. Daher wurdenTextFieldState.selection: TextRange
undTextFieldState.composition: TextRange?
hinzugefügt, um die aktuellen Auswahl- und Kompositionswerte 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üfen Sie auch, ob das Ergebnis vonClipboardManager.getClip
null ist, um zu sehen, ob sich in der Zwischenablage ein aktueller Clip befindet. (I50498) - Für
ClipboardManager.setClip
wird jetzt „null“ akzeptiert, um die Zwischenablage zu leeren. (I7d2e9) ReceiveContentListener
wird in eine Funktionsschnittstelle umgewandelt. Außerdem wurde dieModifier.receiveContent
-Überladung entfernt, die eine Lambda-Funktion annimmt, daReceiveContentListener
jetzt eine Funktionsschnittstelle ist.Modifier.receiveContent
wird inModifier.contentReceiver
umbenannt. (I1e6af)TransferableContent.consumeEach
wurde inTransferableContent.consume
umbenannt. (I1e462)rememberTextFieldState
ist jetzt eine stabile API. (I37999)
Fehlerkorrekturen
- Ein Fehler wurde behoben, durch den die Variante
BasicTextField(state)
mit CJK-Tastaturen(zusammensetzungsbasiert) nicht funktionierte. (I54425) - Ein Fehler wurde behoben, durch den
Modifier.dragAndDropTarget()
in bestimmten Szenarien bei der Wiederverwendung vonModifier.Node
auf veraltete Daten verweisen konnte. (I05bb1) - Eine kürzliche Vertragsänderung wurde rückgängig gemacht, bei der
AnchoredDraggableState#anchoredDrag
-Aufrufe am Ende einesanchoredDrag
-Vorgangs unterbrochen wurden. (I95715)
Version 1.7.0-alpha05
20. März 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha05
wird veröffentlicht. Version 1.7.0-alpha05 enthält diese Commits.
API-Änderungen
- Die experimentelle
LocalTextLinkStyle
-Komposition für das Stilisieren von Hyperlinks wurde entfernt. (Iebfa7) - Die experimentelle Überschreibung von
BasicText
durch das ArgumentonLinkClicked
wurde entfernt. Eine Ersatz-API für die Unterstützung von Hyperlinks wird in Zukunft folgen. (I107d5) - Methoden und Eigenschaften, die sich auf Codepunkte beziehen, wurden unter
TextFieldState
undTextFieldBuffer
entfernt. Außerdem wurden dieinChars
-Suffixe aus den verbleibenden APIs für Auswahl und Zusammensetzung entfernt. (Ief7ce) currentValue
vonAnchoredDraggable
wird jetzt aktualisiert, wenn ein Ankerpunkt passiert wird. MitsettledValue
wird die vorherigecurrentValue
-Semantik empfangen und nur aktualisiert, wenn sich der Standort an einem Anker befindet. Der Fortschritt wird jetzt als Funktion (mit Start- und Endpunkt) statt als Eigenschaft angezeigt. (Ibe6e8, b/318707189, b/298271489, b/294991954)BasicTextField(state)
,TextFieldState
,InputTransformation
,OutputTransformation
,TextFieldLineLimits
undTextFieldDecorator
sind als stabil eingestuft. (I9582b)- Einführung von
InterceptPlatformTextInput
zur Unterstützung beim Schreiben von Low-Level-IME-Tests und anderen Low-Level-IME-Anwendungsfällen.PlatformTextInputTestOverride
wurde eingestellt. (I862ed, b/322680547) restrictedConstraints()
in zwei Methoden aufteilen:fitPrioritizingWidth()
undfitPrioritizingHeight()
(I6d7fd)
Externer Beitrag
- Es wurden zwei neue APIs hinzugefügt:
isLastScrollForward
/isLastScrollBackward
. Mit diesen APIs kann die Scrollrichtung der letzten Scrollaktion überprüft werden. Wenn noch keine Scrollaktion stattgefunden hat, wird „falsch“ zurückgegeben. (I63a0e)
Version 1.7.0-alpha04
6. März 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha04
wird veröffentlicht. Version 1.7.0-alpha04 enthält diese Commits.
API-Änderungen
- Unterstützung der Eingabe per Eingabestift auf Geräten ab Android U (I002e4)
hintLocales
wurde zuKeyboardOptions
hinzugefügt, damitTextFields
IMEs mit bestimmten Gebietsschemata Hinweise zur Voreinstellung einer bevorzugten Sprache geben kann. (Id18c2)- Die experimentellen Überladungen von
BasicTextField2
undBasicSecureTextField
, dievalue: String
- undonValueChange: () -> String
-Parameter akzeptierten, wurden entfernt. (I568b4) - Fügen Sie
InputTransformation
eine optionaleapplySemantics
-Funktion hinzu, um die Semantik derBasicTextField2
zu beeinflussen, auf die sie angewendet wird. (I74a2f, b/170648072) - In dieser CL fügen wir die semantische Aktion
GetScrollViewportLength
hinzu, damit wir Informationen zu den Komponenten, die in Compose gescrollt werden, an das A11Y-System weiterleiten können. Diese CL gilt auch für die Verwendung dieser Property in scrollbaren Foundation-Listen. (Ic5fa2) BasicTextField2
wird inBasicTextField
umbenannt. (Ie5713)FocusRequester.createRefs
ist jetzt stabil (I4d92c, b/261436820)- Einführung von
DelegatableNode.scrollIntoView()
, damit ModifikatorknotenscrollIntoView
-Anfragen direkt stellen können. (I2b3b7, b/299939840) - Einführung von
DelegatableNode.requireView()
, damit Modifikatorknoten die aktuelle Android-View
abrufen können, ohne eine Komposition lokal zu lesen. (I40768) - Es gibt jetzt kontextbezogene Layoutinformationen im Kontextablauf auf Zeilen- und Spaltenebene. Dazu gehören Zeilenindex, Position und Einschränkungen für maximale Breite und Höhe, damit die Elemente an der angegebenen Position bleiben. Elemente, die die maximale Breite/Höhe überschreiten, werden je nach Überlaufeinstellungen möglicherweise in die nächste Zeile verschoben oder weggelassen. (Id13f8, b/292114798)
Fehlerkorrekturen
- Ein Fehler wurde behoben, der unter bestimmten Bedingungen zum Absturz führte, wenn
enabled
- oderreadOnly
-Attribute vonTextField
aktiviert oder deaktiviert wurden. (Iae17b)
Version 1.7.0-alpha03
21. Februar 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha03
wird veröffentlicht. Version 1.7.0-alpha03 enthält diese Commits.
API-Änderungen
- Einführung von
DelegatableNode.requireLayoutCoordinates()
als Möglichkeit, die aktuelleLayoutCoordinates
einesModifier.Node
abzurufen, ohneonPlaced
überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Ia8657) - Einführung von
DelegatableNode.currentLayoutCoordinates
als Möglichkeit, die aktuelleLayoutCoordinates
einesModifier.Node
abzurufen, ohneonPlaced
überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Iaebaa) - Leistungsoptimierungen in
DraggableAnchors
, die vonAnchoredDraggable
verwendet werden. (I89cff) BasicTextField2
und die zugehörigen APIs im Paketandroidx.compose.foundation.text2
werden zuandroidx.compose.foundation.text
verschoben. (I9f635)- Für
BasicTextField2
wird keinCodepointTransformation
-Parameter mehr akzeptiert. Verwenden SieBasicSecureTextField
oderOutputTransformation
. (Id34ff) - Es wurde eine Methode hinzugefügt, mit der nur die Anmerkungen von zwei
AnnotatedStrings
verglichen werden können. (I32659) - Jetzt neu:
ContextualFlowRow
und optimierteFlowRow
/Column
mitMaxLines
undOverflow
. Wir freuen uns, Ihnen Verbesserungen an den experimentellenFlowRow
undFlowColumn
vorstellen zu können. Sie unterstützen jetztmaxLines
und Overflow. Außerdem sindContextualFlowRow
undContextualFlowColumn
neu hinzugekommen. Dieses Update wurde entwickelt, um leistungsoptimierte Komponenten bereitzustellen.ContextualFlow*
eignet sich hervorragend für eine große Anzahl von Elementen, wobei eine kleinemaxLines
-Konfiguration und dynamische Schaltflächen vom Typ „Mehr anzeigen +N“ verwendet werden.FlowRow
undFlowColumn
eignen sich hervorragend für eine kleine Anzahl von Elementen, also weniger als 100 Elemente. Wichtig: Wenn Sie das bisherige Verhalten inFlowRow
oderFlowColumn
beibehalten möchten, bei dem alle Elemente unabhängig davon zusammengesetzt werden, ob sie in die maximale Breite der Querachse passen, legen Sie bei der Initialisierungoverflow
aufFlowRowOverflow.Visible
oderFlowColumnOverflow.Visible
fest. UnterContextualFlowRowSample
undFlowRowSample
finden Sie Beispiele für diese neuen Funktionen in der Praxis. (Ib9135, b/293577082)
Fehlerkorrekturen
- Für die Cursoranimation werden keine Frames mehr zwischen den Status „An“ und „Aus“ angefordert. (Ia2253)
- Die veralteten Kopierkonstruktoren von
KeyboardOptions
kopieren jetzt alle Eigenschaften korrekt. (If12de)
Version 1.7.0-alpha02
7. Februar 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha02
wird veröffentlicht. Version 1.7.0-alpha02 enthält diese Commits.
API-Änderungen
HorizontalPager
,VerticalPager
undPagerState
werden zur stabilen Version hochgestuft. (I67660, b/316966909)- Die lokale Komposition
LocalTextLinkStyle
wurde hinzugefügt, mit der sich der Stil der Links im Text in der gesamten App ändern lässt. Wenn Sie in der App ein eigenes Design verwenden, sollten Sie diese Komposition lokal entsprechend Ihrem Design festlegen. Wenn Sie das Material-Design verwenden, wird die Farbe des Links standardmäßig auf die primäre Farbe des Materials festgelegt. (I7eb10) - Der Modifikator
receiveContent
wurde eingeführt, mit dem Entwickler Rich-Inhalte in Jetpack Compose empfangen können. receiveContent
lässt sich inBasicTextField2
einbinden, um Rich-Inhalte zu akzeptieren, die über die Softwaretastatur oder über die Zwischenablage eingefügt werden. (I81b72)- Dabei ersetzen wir
SnapFlingBehavior
durchTargetedFlingBehavior
, um andere Anwendungsfälle zu ermöglichen und mehr Flexibilität zu bieten. (I762ea) - Durch diese Änderung werden die Snapping APIs stabil. Außerdem optimieren wir den Testcode und fügen Snapping weitere Beispiele hinzu. (Id8da9)
- Einführung von
TargetedFlingBehavior
, einemFlingBehavior
, mit dem Informationen zum Status der laufenden Animation und zum Ziel-Scroll-Offset übertragen werden können. (I6a207)
Fehlerkorrekturen
BasicTextField2
hält den Cursor beim Tippen jetzt sichtbar, wenn er durch Scrollen nicht mehr sichtbar ist oder sich durch Eingaben aus dem Sichtfeld bewegen würde. (Ieb856, b/237190748)
Externer Beitrag
- Es wird eine experimentelle API zum Konfigurieren des Vorab-Ladeverhaltens von LazyLists hinzugefügt. (I022a4)
Version 1.7.0-alpha01
24. Januar 2024
androidx.compose.foundation:foundation-*:1.7.0-alpha01
wird veröffentlicht. Version 1.7.0-alpha01 enthält diese Commits.
Neue Funktionen
- Neue
Indication API
,IndicationNodeFactory
, hinzugefügt. Dies führt zu leistungsfähigerenIndication
-Implementierungen im Vergleich zur vorherigen (jetzt eingestellten)rememberUpdatedInstance
API. Informationen zur Migration finden Sie unter developer.android.com. - Für
clickable / combinedClickable / selectable / toggleable
kann jetzt ein optionalerMutableInteractionSource
-Parameter verwendet werden. Wenn „null“ ist und die angegebeneIndication
eineIndicationNodeFactory
ist, kann dieIndication
nur bei Bedarf erstellt werden, was die Leistung verbessert. Wenn Sie dieMutableInteractionSource
nicht hochskalieren und verwenden, wird empfohlen, „null“ zu übergeben.
API-Änderungen
- Einführung von
DecayAnimation
inAnchoredDraggable
: Durch diese Änderung wirdAnchoredDraggable
der ParameterdecayAnimationSpec
hinzugefügt, mit dem beim Anpassen an einen der Anker eine Abklinganimation verwendet werden kann. Außerdem wird die vorhandeneanimationSpec
insnapAnimationSpec
umbenannt, um den Anwendungsfall der einzelnen Spezifikationen besser nachvollziehen zu können. BasicTextField2
ist für experimentelle Zwecke verfügbar. Die Funktion sollte in etwa mitBasicTextField
übereinstimmen und produktionsbereit sein. Die API befindet sich jedoch noch in der Testphase. Vor der Stabilisierung wird es inBasicTextField
umbenannt und in dasselbe Paket verschoben.- Erster Entwurf der
OutputTransformation
API fürBasicTextField2
eingeführt. Diese API ersetzt die meisten Anwendungsfälle vonVisualTransformation
in der altenBasicTextField
. Sie ist jedoch noch nicht vollständig und einige Dinge funktionieren nicht richtig. Wir würden uns aber über Feedback zur Nutzerfreundlichkeit der API für Ihre Anwendungsfälle freuen. (aosp/2708848) - Einführung von
LinkAnnotation
, mit dem Text Links und anklickbare Elemente hinzugefügt werden können. Die Funktion „Links“ ist noch nicht fertig und es sind weitere API-Änderungen geplant. - Der Modifikator
receiveContent
wurde eingeführt, mit dem Entwickler Rich-Inhalte in Jetpack Compose empfangen können. receiveContent
lässt sich inBasicTextField2
einbinden, um Rich-Inhalte zu akzeptieren, die über die Softwaretastatur oder durch Einfügen aus der Zwischenablage bereitgestellt werden.- Mit
KeyboardOptions.shouldShowKeyboardOnFocus
können Sie das Standardverhalten vonBasicTextField
deaktivieren, bei dem beim Fokus eine Softwaretastatur angefordert wird. TextInputService
undLocalTextInputService
sind jetzt eingestellt. Verwenden Sie stattdessenPlatformTextInputModifierNode
, um die direkte Integration in die IME-APIs der Plattform zu ermöglichen. (aosp/2862698)Indication#rememberUpdatedInstance
wurde eingestellt. Sie führt zu einer unvermeidlichen Leistungseinbuße und verhindert andere Optimierungen. Verwenden Sie stattdessen die neueIndicationNodeFactory
API.
Fehlerkorrekturen
- Bei
BasicTextField
wird jetzt eine kleine Auswahl von Offsetzuordnungen vorab validiert, wennVisualTransformation
übergeben wird. So lassen sich häufige Programmierfehler erkennen, die zu nicht wiederherstellbaren Ausnahmen bei späteren Mess- oder Zeichendurchläufen führen. Wenn Sie Fehler während der Komposition werfen, ist es wahrscheinlicher, dass Entwickler diese Fehler während der Entwicklung sehen und so Produktionsabstürze vermeiden können. (I0fd42) VisualTransformation
gibt keine Fehlermeldung aus, wenn Sie einen ungültigen Index für einen ungültigen Index zurückgeben (b/316401857 )
Version 1.6
Version 1.6.8
12. Juni 2024
androidx.compose.foundation:foundation-*:1.6.8
wird veröffentlicht. Version 1.6.8 enthält diese Commits.
Version 1.6.7
1. Mai 2024
androidx.compose.foundation:foundation-*:1.6.7
wird veröffentlicht. Version 1.6.7 enthält diese Commits.
Version 1.6.6
17. April 2024
androidx.compose.foundation:foundation-*:1.6.6
wird veröffentlicht. Version 1.6.6 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, der unter bestimmten Bedingungen zum Absturz führte, wenn
enabled
- oderreadOnly
-Attribute vonTextField
aktiviert oder deaktiviert wurden. (Iae17b)
Version 1.6.5
3. April 2024
androidx.compose.foundation:foundation-*:1.6.5
wird veröffentlicht. Version 1.6.5 enthält diese Commits.
Fehlerkorrekturen
- Es werden Fehlerbehebungsprotokolle zu schwer reproduzierbaren Fehlern in Zeilen/Spalten hinzugefügt: (b/300280216 und b/297974033)
Version 1.6.4
20. März 2024
androidx.compose.foundation:foundation-*:1.6.4
wird veröffentlicht. Version 1.6.4 enthält diese Commits.
Fehlerkorrekturen
- Bei der Auswahl durch langes Drücken und Ziehen, die im ersten Frame des Ziehens außerhalb des Layoutbereichs des Texts verläuft, kommt es nicht mehr zu Abstürzen. (Icdf90, b/325307463)
Version 1.6.3
6. März 2024
androidx.compose.foundation:foundation-*:1.6.3
wird veröffentlicht. Version 1.6.3 enthält diese Commits.
Version 1.6.2
21. Februar 2024
androidx.compose.foundation:foundation-*:1.6.2
wird veröffentlicht. Version 1.6.2 enthält diese Commits.
Fehlerkorrekturen
- Behebung des Problems, dass
AnimateContentSize
nicht richtig zurückgesetzt wird. (I07051) - Problem behoben, bei dem in einigen Fällen
intrinsicHeight
Textzeilen zu viel im Cache gespeichert wurden. (3cd398, b/217910352)
Version 1.6.1
7. Februar 2024
androidx.compose.foundation:foundation-*:1.6.1
wird veröffentlicht. Version 1.6.1 enthält diese Commits.
Fehlerkorrekturen
- Korrektur des unterbrochenen Rastermaßes, wenn das Limit überschritten wird. (bffc39)
- Prüfung für Layouts mit großen Abmessungen hinzufügen (e74af5)
- Platzierung von Elementen mit einer Größe von 0 am Anfang des versetzten Rasters korrigieren (785f94)
- Rufen Sie den Rückruf „onRelease“ in derselben Reihenfolge wie „onForgotten“ auf. (31ce3b)
Version 1.6.0
24. Januar 2024
androidx.compose.foundation:foundation-*:1.6.0
wird veröffentlicht. Version 1.6.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.5.0
- Neuer Modifikator
Modifier.anchoredDraggable
, mit dem sich zwischen vordefinierten Ankern ziehen und animieren lässt Dieser Modifikator sollModifier.swipeable
ersetzen. Weitere Informationen zur Verwendung und Migration vonModifier.swipeable
finden Sie in der Migrationsanleitung. - Es wurde eine Drag-and-drop-Funktion zwischen Apps und Komponenten hinzugefügt. Weitere Informationen finden Sie unter
DragAndDropTarget
,Modifier.dragAndDropSource
und anderen APIs. Modifier.draggable2D
ist die neue Tastenkombination, die einfaches Ziehen in 2D ermöglicht. Siehe Beispiel.AndroidExternalSurface
undAndroidEmbeddedExternalSurface
wurden hinzugefügt, um das Hinzufügen von komponentenbasierten Oberflächen in Compose zu vereinfachen.- Verschiedene API-Änderungen und -Verbesserungen in
Pager
undsnapFlingBehaviour
- Verschiedene APIs für den Fokus, Text und Einblendungen wurden zu stabilen APIs aufgewertet
Version 1.6.0-rc01
10. Januar 2024
androidx.compose.foundation:foundation-*:1.6.0-rc01
wird veröffentlicht. Version 1.6.0-rc01 enthält diese Commits.
API-Änderungen
- Der Konstruktor für
DragAndDropTarget()
-Erweiterungen 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 veröffentlicht. Version 1.6.0-beta03 enthält diese Commits.
Fehlerkorrekturen
- Behebung eines Absturzes, der bei sehr großem Text auftrat, der mit unendlichen Einschränkungen gemessen wurde. (I1a7df, b/312294386)
PlatformImeOptions
ist jetzt eine konkrete Klasse anstelle einer Schnittstelle. (If40a4)
Version 1.6.0-beta02
29. November 2023
androidx.compose.foundation:foundation-*:1.6.0-beta02
wird veröffentlicht. Version 1.6.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Behebung des Problems, dass
canScroll
nach dem Scrollen nur zum Neulayouten nicht aktualisiert wurde. (I60a86) - Behebung eines Problems mit
Modifier.animateItemPlacement()
undLookaheadScope
nach kurzen Scrollvorgängen. (I3a2b7)
Version 1.6.0-beta01
15. November 2023
androidx.compose.foundation:foundation-*:1.6.0-beta01
wird veröffentlicht. Version 1.6.0-beta01 enthält diese Commits.
API-Änderungen
- Der
DragAndDropTarget
-Modifikator nimmt jetzt die empfangeneDragAndDropTarget
explizit auf und hat ein Lambda, um eine Drag-and-drop-Sitzung zu aktivieren. Es gibt jetzt zwei Standardfunktionen für eineDragAndDropModifierNode
. Eine für den Empfang von Übertragungen und eine für die Übertragung von Daten (I69481) maximumFlingVelocity
wird jetzt als Float dargestellt. Die Dokumentation wurde aktualisiert, um die Einheitlichkeit vonmaximumFlingVelocity
zu verdeutlichen. (I8adc7)onDragAndDropStart
in derDragAndDropModifierNode
-Fabrik wurde inacceptDragAndDropTransfer
umbenannt.acceptsDragAndDropTransfer
wurde derdragAndDropTarget
Modifier
hinzugefügt, um sie aus einer Drag-and-drop-Sitzung zu akzeptieren. Dieses Lambda gibt eine gültigeDragAndDropTarget
zurück, wenn Sie an einer Drag-and-drop-Sitzung interessiert sind. Andere Lambdas zur Verarbeitung von Drag-Ereignissen wurden durch diese Funktion ersetzt.Es wurde eine
DragAndDropTarget
-Funktion hinzugefügt, um Daten aus Drag-and-drop-Sitzungen zu empfangen (Iebf3a)Wenn Sie
startDragImmediately
inAnchoredDraggable
anzeigen, können Sie die Erkennung von Zieh-Gesten steuern. Es ist nützlich, diese Einstellung festzulegen, wenn das Widget zu einem Zielanker animiert wird. Siehe Beispiel. (Ie6d13, b/285139987)Die APIs für Kurzinfos für die Google Unternehmensprofil-Plattform sind jetzt
@ExperimentalFoundationApi
(I30b0b).DragAndDropInfo
wurde als Typ entfernt.DragAndDropModifierNode.drag
nimmt jetzt Parameter fürtransferData
, die Größe der Dekoration und die Drag-DekorationDrawScope
lambda an.DragAndDropTarget
hat Methoden für bestimmte Drag-and-drop-Ereignisse anstelle einer einzelnen abstrakten Methode.onDragAndDropEvent
in der Standardfunktion für eineDragAndDropModifierNode
wurde inonDragAndDropStart
umbenannt, um besser zu verdeutlichen, dass die angegebeneDragAndDropTarget
nur für eine bestimmte Drag-and-drop-Sitzung gültig ist.Die
DragAndDropEventType
wurde entfernt (I645b1)PlatformTextInputModifierNode.runTextInputSession
wurde inestablishTextInputSession
umbenannt. (I03cd0)Ersetzen Sie
OriginalText
durchTextSubstitution
. (Ifa5a8)PlatformTextInputModifierNode.textInputSession
wurde inrunTextInputSession
umbenannt. (Ie9c6b)Die untergeordneten Elemente von
SubcomposeLayout
(und Layouts wieLazyColumn
, die darauf basieren) werden zur späteren Wiederverwendung beibehalten und gelten als deaktiviert. Es wurde eine neueassertIsDeactivated()
-Test-API eingeführt, um solche Knoten zu testen. Bei den restlichen Test-APIs werden deaktivierte Knoten standardmäßig herausgefiltert. (I2ef84, b/187188981)Der Parameter
clippingEnabled
vonModifier.magnifier
wird inclip
umbenannt.Der Parameter
magnifierCenter
vonModifier.magnifier
ist nun nullable, das Standardverhalten bleibt jedoch unverändert. (I6aa66)Material
SwipeToReveal
APIs (für Karten und Chips) nutzen jetzt eine slotbasierte API (wie von Compose empfohlen) anstelle von datenklassenbasierten Instanzen, um diese Slots zu erstellen. Dies ist eine gravierende Änderung. In der Demo und im Beispielcode finden Sie Beispiele zur Verwendung der neuen API. (Ia8943)
Fehlerkorrekturen
- Implementieren Sie „equals“ und „hashcode“ für
PageSize.Fixed
. (Ie3ede, b/300134276) - Es wurde ein Fehler behoben, durch den das
BasicText
-Layout nicht schrumpfte, wenn sichminWidth
änderte undminWidth
kleiner als die ursprünglichen MaßbeschränkungenmaxWidth
war (Idb19c) - Unterstützung für den Renderer für den Farbverlauf „Sweep Gradient“ in
ArcLine
hinzufügen (I4d5bb) - Behebung eines Binärkompatibilitätsproblems mit der Änderung des Fensterabstands (Iee695)
- Entfernen Sie die Material Core-Ebene für Material3-Chips/-Schaltflächen, da die Microbenchmarks ohne diese eine bessere Leistung zeigen. (I55555)
Version 1.6.0-alpha08
18. Oktober 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha08
wird veröffentlicht. Version 1.6.0-alpha08 enthält diese Commits.
Neue Funktionen
Modifier.draggable2D
ist die neue Tastenkombination, die einfaches Ziehen in 2D ermöglicht. Siehe Beispiel (Id95f5, b/214412658)
API-Änderungen
- Bei
Modifier.dragAndDrawSource
wurde das LambdaonDrawDragShadow
indrawDragDecoration
umbenannt und beiDragAndDropInfo
wurde der Größeparameter indragDecorationSize
umbenannt. (Id0e30, b/303904810) - Der Parameter
decorationBox
vonBasicTextField2
wird indecorator
umbenannt. Der Typ wird auch in eine entsprechende lustige BenutzeroberflächeTextFieldDecorator
geändert. (I23c1c)
Fehlerkorrekturen
- Die Dokumentation zu
BasicTextField
wurde im Hinblick auf die Anforderungen anonValueChange
verbessert. (I90fc9, b/160257648)
Version 1.6.0-alpha07
4. Oktober 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha07
wird veröffentlicht. Version 1.6.0-alpha07 enthält diese Commits.
API-Änderungen
- Einführung von
PlatformTextInputMethodTestOverride
zum Schreiben von Tests für benutzerdefinierte Texteditoren. (Id159b) GraphicsSurface
inAndroidExternalSurface
umbenannt (I11680)- Das temporäre Flag
DisableNonLinearFontScalingInCompose
wurde hinzugefügt, um die nicht lineare Schriftskalierung zu deaktivieren. Legen Sie in Ihren TestsDisableNonLinearFontScalingInCompose = true
fest, wenn Sie Zeit für die Bereinigung benötigen. Dieses Flag wird in Compose 1.6.0-beta01 entfernt. (Ic9486) - Die Sammlungen
ColorList
undColorSet
wurden hinzugefügt, um Zuweisungen zu vermeiden. (I744bd) - Durch diese Änderung wird
shortSnapVelocityThreshold
entfernt, das zu einer Implementierungsdetaillierung der Implementierungen vonSnapLayoutInfoProvider
geworden ist. (I65f6d) - Es wird die Modifikatortaste
dragAndDropSource
zum Starten von Drag-and-drop-Sitzungen und die ModifikatortastedragAndDropTarget
zum Empfangen von Drag-and-drop-Sitzungen hinzugefügt (Ib7828, b/286038936) - Aktualisieren Sie die Dokumentation und Positionierungsmethode für
SnapPositionInLayout
. Führen Sie inSnapPositionInLayout
für die Positionierungsmethode Textabstände ein. (Id7938, b/300116110) UndoState
wurde zuTextFieldState
hinzugefügt, um die vom Nutzer vorgenommenen Änderungen rückgängig zu machen oder wiederherzustellen. (Icc024)
Fehlerkorrekturen
- Behoben:
basicMarquee
wurde nach einer Geschwindigkeitsänderung nicht animiert. (Id2e77, b/297974036)
Version 1.6.0-alpha06
20. September 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha06
wird veröffentlicht. Version 1.6.0-alpha06 enthält diese Commits.
Neue Funktionen
- Neue zusammensetzbare Wrapper für
SurfaceView
,TextureView: GraphicsSurface()
undEmbeddedGraphicsSurface()
. Es handelt sich um eine experimentelle API, die Änderungen und Modifikationen unterliegt. (I9ddb2) Modifier.magnifier()
ist jetzt eine stabile API. Dazu gehört auch die Entfernung vonMagnifierStyle
zugunsten von Inline-Parametern im Modifikator selbst. (I83bec, b/298381260, b/262367109, b/261438887)
API-Änderungen
updateCurrentPage
undupdateTargetPage
wurden inScrollScope
eingeführt. Sie sind die letzten Elemente, die für die Anpassung des animierten Scrollens inPagerState.scroll
erforderlich sind. (I9cad5, b/267744105, b/243786897)- Entfernen Sie „density“ aus
SnapFlingBehavior
. 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 als stabil gekennzeichnet. (I56af1, b/298046462)
SnapStepSize
wurde ausSnapLayoutInfoProvider
entfernt. Die Berechnung sollte anhand der Layoutinformationen und der Annäherungs- oder Anpassversatzwerte erfolgen. (If320c)
Verhaltensänderungen
- In 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 vergrößert, bereits großer Text jedoch nur geringfügig. Außerdem werden in SP definierte Zeilenhöhen automatisch angepasst, damit sie proportional zur beabsichtigten Höhe im Maßstab 100% bleiben. Weitere Informationen finden Sie in den Best Practices für die Schriftgröße. (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 veröffentlicht. Version 1.6.0-alpha05 enthält diese Commits.
API-Änderungen
- Fügen Sie Überladungen für
BasicSecureTextField
hinzu, die einen unveränderlichen Wert und einen Rückruf zum Ändern dieses Werts akzeptieren, genau wie die aktuelleBasicTextField
API. (Ia4882) - Fügen Sie
Modifier.preferKeepClear()
hinzu, um das Element als zusammensetzbar zu markieren, da Sie bei API 33 und höher keine schwebenden Fenster verwenden möchten. (Ib51d5, b/297260115) - Die Geschwindigkeit von Wischaktionen in Ansichtskomponenten wie
ScrollView
undRecyclerView
ist aufViewConfiguration.ScaledMaximumFlingVelocity
begrenzt. Compose enthält jetzt eine eigene Version vonmaximumFlingVelocity
, die jetzt aufDraggable
angewendet wird. (Ibf974) - Die veralteten Überladungen von
Pager
undPagerState
wurden entfernt. (Iea07e) BasicTooltipBox
wurde zucompose.foundation
hinzugefügt undPlainTooltipBox
undRichTooltipBox
wurden aktualisiert, damitTooltipBox
mit den neuenPlainTooltip
- undRichTooltip
-Kompositen verwendet werden kann. (I79e1d)
Version 1.6.0-alpha04
23. August 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha04
wird veröffentlicht. Version 1.6.0-alpha04 enthält diese Commits.
API-Änderungen
ReusableComposition
-Benutzeroberfläche zum Verwalten des Lebenszyklus und zur Wiederverwendung von Unterkompositionen hinzufügen (I812d1, b/252846775)Modifier.focusGroup
wurde zu stabilen APIs hochgestuft. (I7ffa3)- Fügen Sie Überladungen für
BasicTextField2
hinzu, die einen unveränderlichen Wert und einen Rückruf zum Ändern dieses Werts akzeptieren, genau wie die aktuelleBasicTextField
API. (I3f2b8) GridItemSpan::currentLineSpan
ist jetzt eine stabile API. (Icc29c)- Canvas, das
contentDescription
akzeptiert, ist jetzt eine stabile API. (Ib3d29) - Einführung von
viewportSize
inScrollState
, um dieviewPort
-Größe der Komponente zu ermitteln, dieScrollState
verwendet, nachdem die Messung stattgefunden hat. (I8b85a, b/283102682) - Ein Problem wurde behoben, durch das das Vorabladen in Pager nicht mit dem Verhalten in Ansichten übereinstimmte. (I93352, b/289088847)
Modifier.consumeWindowInsets(PaddingValues)
ist jetzt stabil.- Die
Deprecated Modifier.consumedWindowInsets
API wurde entfernt. Verwenden Sie stattdessenModifier.consumeWindowInsets
. (Id72bb)
- Die
Version 1.6.0-alpha03
9. August 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha03
wird veröffentlicht. Version 1.6.0-alpha03 enthält diese Commits.
API-Änderungen
- Überladung von
LazyLayout
hinzugefügt, akzeptiert ein Lambda vonLazyLayoutItemProvider
, kein einfaches Objekt wie zuvor. Die vorherige Überlastung wurde eingestellt. (I42a5a) - Unterstützung für die Konfiguration von
privateImeOptions
hinzugefügt (Idb772)
Fehlerkorrekturen
- Textfelder, in denen die Tastatur angezeigt und der Text bearbeitet werden kann, wenn
readOnly
= „wahr“ ist, wurden korrigiert. Außerdem wurde behoben, dass die Tastatur nicht angezeigt wurde, wennreadOnly
während der Fokussierung von „wahr“ zu „falsch“ geändert wurde. (I34a19, b/246909589)
Version 1.6.0-alpha02
26. Juli 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha02
wird veröffentlicht. Version 1.6.0-alpha02 enthält diese Commits.
API-Änderungen
- Einführung von
PagerLayoutInfo
mit Informationen, die nach einem Messdurchgang inPager
erfasst wurden. Außerdem wurdePageInfo
eingeführt, die Informationen zu einer einzelnen gemessenen Seite inPager
. (Iad003, b/283098900) - Zusätzliche Anmerkungen zum Angeben zulässiger Eingaben für Composeables (I51109)
SemanticsNodeInteraction.requestFocus
wurde hinzugefügt, um den Fokus in Tests einfacher und leichter anfordern zu können. (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 richtigeCompositionLocal
. (I4c364)Modifier.transformable
bietet jetzt einen Schwenk-Delta im ParametercanPan
, um die Richtung des Schwenkens zu bestimmen, die zugelassen oder nicht zugelassen werden soll. (I692aa, b/266829800)- Der Modifikator
consumeWindowInsets
wird aktualisiert, um die SuperklasseAbstractComposeView
zu erweitern (Iacd74, b/269479941)
Version 1.6.0-alpha01
21. Juni 2023
androidx.compose.foundation:foundation-*:1.6.0-alpha01
wird veröffentlicht. Version 1.6.0-alpha01 enthält diese Commits.
Neue Funktionen
- In Foundation wurde eine neue
AnchoredDraggable
API eingeführt. Damit lassen sich Komponenten erstellen, die zwischen verschiedenen Zuständen verschoben werden können, z. B. modale Unterbrechungen. Diese API ersetzt dieSwipeable
API von Material. (I4a2ed)
API-Änderungen
InputConnection#requestCursorUpdates
(I0c69b) unterstützen- Einführung von
scrollAnimationSpec
für benutzerdefinierte Animationsspezifikationen.BringIntoViewCalculator
aufBringIntoViewScroller
aktualisiert (Idb741) - Fügen Sie den Typ
ResourceResolutionException
hinzu, um Throwables zu verpacken, die beim Versuch, Bitmap-Assets zu laden, geworfen werden, mit einer Beschreibung des Asset-Pfads, der nicht geladen werden konnte. (I19f44, b/230166331, b/278424788) - Es wurden semantische Eigenschaften und Aktionen hinzugefügt, um die Textübersetzung zu unterstützen. (I4a6bc)
- Einführung einer
BringIntoViewCalculator
API, mit der sich anpassen lässt, wie Komponenten wieScrollable
aufbringIntoView
-Anfragen reagieren. Die Überladung von „scrollable“ wurde geändert, sodass optional eine Instanz vonBringIntoViewCalculator
akzeptiert wird. (Iaf5af)
Fehlerkorrekturen
- Es wurde eine Lint-Prüfung hinzugefügt, die warnt, wenn Sie in einer Komposition eine
MutableInteractionSource
erstellen, ohne sie zu merken. Ähnlich wie bei den Lint-Prüfungen zum Erstellen eines veränderbaren Zustands /Animatable
. (I5daae) - Unterstützung für die Auswahl per Maus hinzugefügt. Bei der Auswahl per Berührung wird die Auswahl um ein Wort erweitert und um ein Zeichen verkleinert. (Ic0c6c, b/180639271)
- Die
FocusTargetModifierNode
-Benutzeroberfläche wurde hinzugefügt, mit der benutzerdefinierteFocusTarget
erstellt werden können. (I9790e)
Version 1.5
Version 1.5.4
18. Oktober 2023
androidx.compose.foundation:foundation-*:1.5.4
wird veröffentlicht. Version 1.5.4 enthält diese Commits.
Version 1.5.3
4. Oktober 2023
androidx.compose.foundation:foundation-*:1.5.3
wird veröffentlicht. In dieser Version gibt es keine Änderungen.
Version 1.5.2
27. September 2023
androidx.compose.foundation:foundation-*:1.5.2
wird veröffentlicht. Version 1.5.2 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler im Text wurde behoben, der unter bestimmten Umständen zu Abstürzen führte, wenn die Semantik ungültig wurde.
Version 1.5.1
6. September 2023
androidx.compose.foundation:foundation-*:1.5.1
wird veröffentlicht. Version 1.5.1 enthält diese Commits.
Fehlerkorrekturen
- Textfelder, in denen die Tastatur angezeigt und der Text bearbeitet werden kann, wenn
readOnly
= „wahr“ ist, wurden korrigiert. Außerdem wurde behoben, dass die Tastatur nicht angezeigt wurde, wennreadOnly
während der Fokussierung von „wahr“ zu „falsch“ geändert wurde. (I34a19, b/246909589)
Version 1.5.0
9. August 2023
androidx.compose.foundation:foundation-*:1.5.0
wird veröffentlicht. Version 1.5.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.4.0
- Viele grundlegende Modifikatoren, darunter
Modifier.clickable
,Modifier.draggable
,Modifier.scrollable
und der Layout-Modifikator, wurden zurModifier.Node
API migriert, wodurch der Overhead bei der ursprünglichen Komposition reduziert wurde. - Verbesserungen bei der Stabilität von Pagern. Viele Fehler wurden behoben.
pageCount
-Parameter befinden sich jetzt inPagerState
anstelle im Pager selbst.
Version 1.5.0-rc01
26. Juli 2023
androidx.compose.foundation:foundation-*:1.5.0-rc01
wird veröffentlicht. Version 1.5.0-rc01 enthält diese Commits.
Fehlerkorrekturen
Es ist eine optionale Prüfung verfügbar, mit der empfohlen wird,
mutableStateOf()
-Aufrufe zu den entsprechenden spezialisierten Typen für 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 die Schwere von „Information“ zu „Warnung“ (oder höher). Deklarieren Sie dazuwarning "AutoboxingStateCreation"
wie gezeigt in derbuild.gradle
- oderbuild.gradle.kts
-Konfiguration Ihres Moduls (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
Version 1.5.0-beta03
28. Juni 2023
androidx.compose.foundation:foundation-*:1.5.0-beta03
wird veröffentlicht. Version 1.5.0-beta03 enthält diese Commits.
Version 1.5.0-beta02
7. Juni 2023
androidx.compose.foundation:foundation-*:1.5.0-beta02
wird veröffentlicht. Version 1.5.0-beta02 enthält diese Commits.
Version 1.5.0-beta01
24. Mai 2023
androidx.compose.foundation:foundation-*:1.5.0-beta01
wird veröffentlicht. Version 1.5.0-beta01 enthält diese Commits.
API-Änderungen
- Implementiere
PlatformDataProvider
, um Herzfrequenz und tägliche Schrittzahl bereitzustellen. DieSensorGateway
-Benutzeroberfläche wird aus der öffentlichen API entfernt. (I55b84)
Fehlerkorrekturen
- Zuweisungen bei Lazy-Listen/-Rastern usw. reduzieren (Iaf9e2)
- Verringerte Zuweisungen beim Anwenden von Snapshots (I65c09)
- Zuweisungen aus Federungsanimationen entfernt (Ie9431)
- Zuweisung für
TextLayout
(I0fd11) entfernt - Mehrere Zuordnungen beim Tracking der Mauszeigergeschwindigkeit 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 freigegeben. Version 1.5.0-alpha04 enthält diese Commits.
API-Änderungen
- Optimierte
TextStyle.merge(...)
mit vollständiger Parameterliste hinzugefügt. (Iad234, b/246961787) - Eine
SnapLayoutInfoProvider
einführen, die mitLazyGridState
verwendet werden kann (I92134, b/269237141, b/260914964) - Die experimentelle
Modifier.animateItemPlacement()
wurde für den Artikelbereich mit Lazy Staggered Grids hinzugefügt. Sie können sie auf die Elemente anwenden, um die Automatisierungsposition zu ändern oder die Neuanordnungsanimationen zu erzielen. (I4b62d, b/257034719) GridCells.FixedSize
zu „Stable“ hochstufen.FixedSize
definiert einLazyGrid
, bei dem jede Zelle auf der Querachse genau die Größe hat und der verbleibende Platz über die Anordnung der Querachse verteilt wird. (I8542f)- Einführung des Empfängerbereichs
PagerScope
für Pager und einer Dienstprogrammfunktion zum Berechnen eines bestimmten Seitenoffsets. (If2577) - Verwenden Sie das
snapPositionalThreshold
, wenn Sie ein Snap-Fling-Verhalten erstellen. Mit diesem Parameter können Sie einen Positionsgrenzwert für das schnelle Anpinnen in Pager angeben. (If8f7f) SnapLayoutInfoProvider.calculateSnappingOffsetBounds
wurde durchcalculateSnappingOffset
ersetzt. Bei dieser neuen Methode wird einfach der nächste Offset angefordert, an dem angedockt werden soll. Die Berechnung der Begrenzungen sollte auf Implementierungsebene erfolgen, da dies je nach Art des Anpassens variieren kann. (I923a4)LazyStaggeredGrid
APIs wurden in den Status „Stable“ hochgestuft. (I633a5)- Entfernen Sie
pageCount
ausHorizontal/VerticalPager
. Dieser sollte bei der Erstellung des Status angegeben werden.PagerState
undrememberPagerState
wurden aktualisiert, um diepageCount
zu akzeptieren. (Ieb52d, b/266965072) - Entfernen Sie
pageCount
ausHorizontal/VerticalPager
. Dieser sollte bei der Erstellung des Status angegeben werden.PagerState
undrememberPagerState
wurden aktualisiert, um diepageCount
zu akzeptieren. (Ifa3cb, b/266965072) shortSnapVelocityThreshold
inSnapFlingBehavior
von Pager einführen (I7379e, b/275579012)- Fügt
FlowRowScope
undFlowColumnScope
hinzu. (I54fe2)
Fehlerkorrekturen
- Aufrufe zum Abrufen der Semantik für Text, wenn Einschränkungen
minWidth
undminHeight
enthalten, führen nicht mehr zu Abstürzen. (Ibd072) - Behobene Regression, durch die die Tastatur für Textfelder in Dialogfeldern, die nicht mit dem
Dialog
-Komposit erstellt wurden, nicht angezeigt wurde. (I82551, b/262140644)
Version 1.5.0-alpha03
19. April 2023
androidx.compose.foundation:foundation:1.5.0-alpha03
und androidx.compose.foundation:foundation-layout:1.5.0-alpha03
werden freigegeben. Version 1.5.0-alpha03 enthält diese Commits.
Mit diesem Release wird der neue Text-Rendering-Stack für Compose aktiviert. Der neue Stack ist leistungsoptimiert und es sollten keine sichtbaren Änderungen auftreten.
Wenn Sie Änderungen am gerenderten Text sehen, können Sie die Funktion NewTextRendering1_5 = false
einrichten, um den Verhaltensunterschied zu bestätigen. Wenn Sie diese Einstellung festlegen, wird eine Neuzusammensetzung erzwungen. Bitte melden Sie alle Verhaltensunterschiede als Fehler.
Das Debug-Flag wird vor der Veröffentlichung von 1.5 beta01 entfernt.(Iada23, b/246960758)
API-Änderungen
- Machen Sie
FlowColumn/FlowRow
Inline. (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 freigegeben. Version 1.5.0-alpha02 enthält diese Commits.
API-Änderungen
- Unterstützung für Zellen mit fester Größe in
LazyGrid
und deren Anordnung über mehrere Achsen hinweg hinzugefügt. (I83ed9, b/235121277, b/267942510) - Es wurde Unterstützung für Fahrstreifen mit fester Größe in
LazyStaggeredGrid
hinzugefügt und die Anordnung der Fahrstreifen wurde über die Querachse möglich gemacht. (I7d519) UrlAnnotation
s inAnnotatedString
s können jetzt über Bedienungshilfen wieTalkBack
geöffnet werden. (If4d82, b/253292081)- Die semantische Aktion
InsertTextAtCursor
wurde für Textfelder hinzugefügt. (I11ed5) - Bei textbezogenen Testaktionen (z.B.
performTextInput
) wird der Fokus jetzt direkt über die semantische Aktion angefordert, anstatt auf das Feld zu klicken. (I6ed05) - Unterstützung für den Abstand/die Anordnung zwischen Achsen mithilfe von
verticalArrangement
inFlowRow
undhorizontalArrangement
inFlowColumn
hinzugefügt. Außerdem entfernen wir die obersten EbenenverticalAlignment
undhorizontalAlignment
inFlowRow/FlowColumn
. Entwickler können stattdessenModifier.align
verwenden. So wird Verwechslungsgefahr zwischen den Benennungskonventionen vonverticalAlignment
undverticalArrangement
vermieden. (I87b60, b/268365538)
Version 1.5.0-alpha01
22. März 2023
androidx.compose.foundation:foundation:1.5.0-alpha01
und androidx.compose.foundation:foundation-layout:1.5.0-alpha01
werden freigegeben. Version 1.5.0-alpha01 enthält diese Commits.
API-Änderungen
- Text und
BasicText
wurden für die Verwendung des neuen Modifikatorsystems umstrukturiert. Das führt in vielen Fällen zu erheblichen Leistungsverbesserungen. Es sollten keine Änderungen sichtbar sein. (If1d17, b/246961435) - Die semantische Aktion
PerformImeAction
wurde hinzugefügt, um die IME-Aktion auf Texteditorknoten aufzurufen. (Ic606f, b/269633506)
Fehlerkorrekturen
- Interne Funktionen von
Modifier.hoverable
wurden aktualisiert. Der Modifikatorhoverable
wird nur angezeigt, wenn er aktiviert ist. (I82103)
Version 1.4
Version 1.4.3
3. Mai 2023
androidx.compose.foundation:foundation:1.4.3
und androidx.compose.foundation:foundation-layout:1.4.3
werden ohne Änderungen veröffentlicht (nur eine Versionsaktualisierung).
Version 1.4.2
19. April 2023
androidx.compose.foundation:foundation:1.4.2
und androidx.compose.foundation:foundation-layout:1.4.2
werden freigegeben. 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 freigegeben. 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 freigegeben. Version 1.4.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.3.0
- Emoji-Kompatibilität für
Text
undTextField
sowie für den Absatz auf niedrigerer Ebene hinzugefügt. Sie ist standardmäßig aktiviert, wenn emojicompat konfiguriert ist. EmojiCompat
kann mitPlatformParagraphStyle
für einen bestimmten Text konfiguriert werden.- Unterstützung für die vollständige Zeile für
LazyStaggeredGrid
(I28252) hinzugefügt - Experimentelles
onHover
zuClickableText
hinzufügen (I6938f) - Es wurden neue experimentelle Überladungen für die Funktionen
runComposeUiTest
undcreate*ComposeRule
eingeführt, dieCoroutineContext
-Parameter akzeptieren. Der Kontext wird für die Testkomposition und alleLaunchedEffect
- undrememberCoroutineScope()
-Aufrufe in der Komposition verwendet. (I10614, b/265177763) FlowRow
undFlowColumn
sind jetzt als@ExperimentalFoundationApi
verfügbar. Diese ermöglichen ein flexibleres zeilen- und spaltenbasiertes Layout von Komponenten, die in eine neue Zeile umbrechen, wenn auf der Hauptachse nicht genügend Platz vorhanden ist. (I3a7b2)Modifier.basicMarquee()
ist als experimentelle Funktion verfügbar, um Inhalte mit einem Scroll-Marquee-Effekt anzuzeigen. (I2df44, b/139321650)
Version 1.4.0-rc01
8. März 2023
androidx.compose.foundation:foundation:1.4.0-rc01
und androidx.compose.foundation:foundation-layout:1.4.0-rc01
werden freigegeben. Version 1.4.0-rc01 enthält diese Commits.
API-Änderungen
- Einführung einer neuen Low-Level-
PlatformTextInputAdapter
API zum Erstellen benutzerdefinierter Texteingabeimplementierungen, die direkt mit Plattform-APIs kommunizieren. (I58df4) - Unterstützung für umgekehrtes Layout für
LazyStaggeredGrid
hinzufügen (I3ef4a)
Fehlerkorrekturen
- Die
SetText
-Semantikaktion vonBasicTextField
aktualisiert den Textbuffer jetzt mit demselben Codepfad wie IME-Aktualisierungen und die Testfunktionen (z.B.performTextReplacement
). - Für die Texttestfunktionen
performTextClearance
,performTextReplacement
undperformTextSelection
wird jetztSemanticsActions
verwendet. (I0807d, b/269633168, b/269624358)
Version 1.4.0-beta02
22. Februar 2023
androidx.compose.foundation:foundation:1.4.0-beta02
und androidx.compose.foundation:foundation-layout:1.4.0-beta02
werden freigegeben. Version 1.4.0-beta02 enthält diese Commits.
API-Änderungen
- Es wurde ein neuer
Modifier.Node.onReset()
-Callback hinzugefügt, mit dem Sie den lokalen Status zurücksetzen können, um den Fall zu behandeln, in demLayout
wiederverwendet wird (z. B. als Element vonLazyColumn
).FocusTargetModifierNode
wurde korrigiert, damit der Fokusstatus richtig zurückgesetzt wird. (I65495, b/265201972) - Den Methoden
DrawScope.drawText
,Paragraph.paint
undMultiParagraph.paint
wurde der ParameterBlendMode
hinzugefügt, um beim Zeichnen von Text auf Canvas verschiedene Überblendungsalgorithmen zu unterstützen. (I57508) - Die
modifierElementOf()
API wurde entfernt. Bitte verlängern Sie stattdessen direkt vonModifierNodeElement
aus. (Ie6d21)
Fehlerkorrekturen
- Durch das Verschieben der Auswahlpunkte kann kein Teilzeichen mehr ausgewählt werden. (Idedd1)
- Absturz beim Drücken von Strg + Rücktaste in einer leeren
TextField
behoben (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 freigegeben. Version 1.4.0-beta01 enthält diese Commits.
Neue Funktionen
- Seit Version 1.3 wurden Emojis in
Text
undTextField
sowie in der untergeordneten Ebene „Absatz“ integriert. Sie 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 die Komposition verlassen, aber weiterhin aktiv sein müssen. (If45a4) PinnableContainer.PinnedHandle.unpin()
wurde inrelease()
umbenannt (I4667a)
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 freigegeben. Version 1.4.0-alpha05 enthält diese Commits.
Neue Funktionen
- Für
LazyStaggeredGrid
wurde die Unterstützung für die gesamte Zeile hinzugefügt (I28252) ClickableText
wird das experimentelleonHover
hinzugefügt (I6938f)- Es wurden neue experimentelle Überladungen für die Funktionen
runComposeUiTest
undcreate*ComposeRule
eingeführt, dieCoroutineContext
-Parameter akzeptieren. Der Kontext wird für die Testkomposition und alleLaunchedEffect
- undrememberCoroutineScope()
-Aufrufe in der Komposition verwendet. (I10614, b/265177763)
API-Änderungen
- Die Pre-/Post-APIs von
OverscrollEffect
werden in die kombinierten „Dekorator“-FunktionenapplyToScroll
undapplyToFling
zusammengeführt. In den aktualisierten Beispielen in der Dokumentation finden Sie Beispiele für die Implementierung eines Overscroll-Effekts mit der neuen API-Form. (I8a9c4, b/255554340) - Weitere Informationen zu Typ/Nullbarkeit von Inline-/veralteten ausgeblendeten Funktionen (I24f91)
- Die APIs
LineBreak
undHyphens
inTextStyle
werden in die stabile Version überführt. (Ic1e1d)
Fehlerkorrekturen
- Der Cursor in Textfeldern blinkt jetzt auch dann, wenn Animationen deaktiviert sind. (I95e70, b/265177763)
Modifier.basicMarquee
wird jetzt auch animiert, wenn Animationen in den Systemeinstellungen deaktiviert sind. (I23389, b/262298306, b/265177763)
Externer Beitrag
notifyFocusedRect
-Methoden inTextInputSession
undTextInputService
werden 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 freigegeben. Version 1.4.0-alpha04 enthält diese Commits.
Neue Funktionen
FlowRow
undFlowColumn
sind jetzt als@ExperimentalFoundationApi
verfügbar. Diese ermöglichen ein flexibleres zeilen- und spaltenbasiertes Layout von Komponenten, die in eine neue Zeile umbrechen, wenn auf der Hauptachse nicht genügend Platz vorhanden ist. (I3a7b2)Modifier.basicMarquee()
ist als experimentelle Funktion verfügbar, um Inhalte mit einem scrollbaren Laufschrifteffekt anzuzeigen. (I2df44, b/139321650)
API-Änderungen
FocusRequesterModifier
wird zugunsten vonFocusRequesterNode
eingestellt (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)- Der
AndroidFont
-Konstruktor mitvariationSettings
ist jetzt eine stabile API und kann zum Erstellen neuer Arten von Schriftartdeskriptoren verwendet werden. (I5adcc, b/261565807) - Einführung der
PinnableContainer
API, die über Lazy-Listen über ein lokales Compose-Element übertragen wird und das Anpinnen des aktuellen Elements ermöglicht. Das bedeutet, dass dieses Element nicht entfernt wird, wenn es aus der Ansicht herausgescrollt wird. MitModifier.focusable()
wird beispielsweise das aktuell fokussierte Element über diesen Mechanismus angepinnt. (Ib8881, b/259274257, b/195049010) - Die Reaktion von scrollbaren Elementen auf
bringIntoViewRequesters
und fokussierbare Elemente wurde neu geschrieben, um die Komplexität dieser Vorgänge besser zu modellieren und mehr Grenzfälle zu verarbeiten. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114) - Mehr Informationen zur Nullbarkeit des Rückgabetyps von eingestellten und ausgeblendeten Funktionen (Ibf7b0)
- Es wurde eine experimentelle
TextMotion
zuTextStyle
hinzugefügt, um Text entweder alsStatic(default)
oder als animiert zu definieren. Verwenden SieTextMotion.Animated
, wenn Text durch eine Animation skaliert, verschoben oder gedreht werden soll. (I24dd7) TextFieldFocusModifier
hinzufügen, um das Verhalten der Fokusnavigation für die Android-Plattform zu korrigieren (I00303)- Das Argument
maxSize: IntSize
indrawText
wurde durchsize: Size
ersetzt, um mit anderenDrawScope
-Funktionen übereinzustimmen.size
ist standardmäßig aufSize.Unspecified
festgelegt. Das bisherige Standardverhalten sollte dadurch nicht geändert werden. (Icd27d)
Fehlerkorrekturen
- Die Anpassmechanismen in
SnapFlingBehaviour
wurden optimiert, um ein natürlicheres Gefühl zu vermitteln.
Bekanntes Problem
- Beim Aktualisieren von
androidx.compose.foundation:1.4.0-alpha03
aufandroidx.compose.foundation:1.4.0-alpha04
kann der Fehlerjava.lang.NoSuchFieldError
auftreten. Hier wurde das Problem ursprünglich gemeldet. Eine Lösung wurde eingereicht und ist im nächsten Update für Compose verfügbar. Als Behelfslösung können Sie Ihreandroidx.compose.material
- undandroidx.compose.material3
-Bibliotheken auf die neueste Version(1.1.0-alpha04) aktualisieren oder Ihreandroidx.compose.foundation
auf 1.4.0-alpha03 downgraden.
Version 1.4.0-alpha03
7. Dezember 2022
androidx.compose.foundation:foundation:1.4.0-alpha03
und androidx.compose.foundation:foundation-layout:1.4.0-alpha03
werden freigegeben. Version 1.4.0-alpha03 enthält diese Commits.
API-Änderungen
- In UI-Tests mit einer Compose-Regel werden Fortsetzungen, die während
withFrameNanos
-Callbacks fortgesetzt wurden, erst gesendet, nachdem alle Frame-Callbacks ausgeführt wurden. Das entspricht dem Verhalten von compose bei normalem Ausführen. Tests, die auf dem alten Verhalten basieren, können jedoch fehlschlagen. Dies sollte sich nur auf Code auswirken, derwithFrameNanos
oderwithFrameMillis
direkt aufruft und Logik außerhalb des Callbacks hat, die an diese Funktionen übergeben wird und möglicherweise in die Callbacks verschoben werden muss. Beispiele für die Änderungen am Animationtest finden Sie in diesem CL. - Dem Konstruktor und der Fabrikfunktion von
TestMonotonicFrameClock
wurde der optionale ParameteronPerformTraversals: (Long) -> Unit
hinzugefügt, um Code nachwithFrameNanos
-Callbacks auszuführen, aber bevor die coroutines der Aufrufer fortgesetzt werden. (Idb413, b/254115946, b/222093277, b/255802670) - Einführung von Aktionen zur Barrierefreiheit von Seiten:
PageUp
,PageDown
,PageLeft
,PageRight
. Diese sind erst ab API 29 verfügbar. (Ida4ab) - Einführung von
HorizontalPager
undVerticalPager
, mit denen sich Composeables auf Pager-Art anzeigen lassen. Einführung vonPagerState
zum Steuern der Pager und zum Abfragen von Informationen zum aktuellen Status des Pagers. MitPageSize
können Sie die Größe der Seite eines Ausklappers steuern. So können Sie ein Karussell wie Ausklapper erstellen. Einführung vonPagerSnapDistance
, mit dem sich das Anspringen beim Wischen des Pagers steuern lässt. (I01120) - In
SnapFlingBehavior.performFling
wurde eine Überladung eingeführt, um besser nachvollziehen zu können, wo sich die Auslenkung einpendelt. (I569f6) OverscrollEffect#isEnabled
wurde entfernt. Anstatt sich dieses Flag merken und setzen zu müssen, senden Sie einfach keine Ereignisse an den Overscroll-Effekt, wenn er nicht angezeigt werden soll (z. B. wenn beideScrollableState#canScrollForward/backward
-Werte „false“ zurückgeben). (I1a4b0, b/255554340, b/255557085)ScrollableState#canScrollForward
undScrollableState#canScrollBackward
wurden hinzugefügt, um abzufragen, ob bei einemScrollableState
in eine beliebige Richtung gescrollt werden kann (d. h., ob es sich am Minimum oder Maximum seines Bereichs befindet). Standardmäßig ist diese Option für die Abwärtskompatibilität mit vorhandenen Implementierungen vonScrollableState
aktiviert. Verbraucher können damit dem Nutzer anzeigen, dass noch Platz zum Scrollen vorhanden ist. Außerdem kann damit verhindert werden, dass Delta anScrollableStates
gesendet wird, in denen in einer bestimmten Richtung nicht gescrollt werden kann, um unnötige Arbeit zu vermeiden. (Idf1a0, b/255557085)- Eine Modifier API zum Abfragen von Informationen zum Scrollen von Vorfahren hinzugefügt. (I2ba9d, b/203141462)
- Wird in
Clickable
verwendet, um die Interaktionen mit dem Drücken richtig zu verzögern, wenn Touch-Gesten zu Scrollereignissen werden könnten. - Bei Verwendung in einem
Scrollable ViewGroup
wurden die Wellen beiClickables
nicht richtig verzögert. - In Ausklappern und Seiten wurde die Verzögerung von Betätigungen angepasst, damit Touch-Gesten nicht zu Scrollereignissen führen.
- Aktualisieren Sie die Benennung von
snapStepSize
, damit sie mit den anderen Methoden inSnapLayoutInfoProvider
übereinstimmt. (Ife67c) EmojiCompat
wurde zuCompose
hinzugefügt (Ibf6f9, b/139326806)consumedWindowInsets()
wurde inconsumeWindowInsets()
undwithConsumedWindowInsets()
inonConsumedWindowInsetsChanged()
umbenannt und die Modifikatoren wurden öffentlich zugänglich gemacht. (Ie44e1)
Fehlerkorrekturen
- Der Absturz mit
Modifier.animateItemPlacement()
und Lazy-Grids wurde behoben. Das Problem trat unter bestimmten Bedingungen auf, wenn die Anzahl der neuen Elemente kleiner als die vorherige war. (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 freigegeben. Version 1.4.0-alpha02 enthält diese Commits.
API-Änderungen
- Für
awaitFirstDown
undwaitForUpOrCancellation
kann jetzt einPointerEventPass
verwendet werden, um mehr Flexibilität zu ermöglichen. (I7579a, b/212091796) beyondBoundCount
API von Lazy* APIs zurücksetzen (I12197)- Parameter in Lazy APIs zum Erstellen und Platzieren von Elementen außerhalb des sichtbaren Bereichs eingeführt (I69e89, b/172029355)
- Den Parametern
BasicText
undBasicTextField
wurde der ParameterminLines
hinzugefügt. Damit lässt sich die Mindesthöhe dieser Composeables 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 freigegeben. Version 1.4.0-alpha01 enthält diese Commits.
API-Änderungen
- Die neue Methode
awaitEachGesture()
für Gestenerkennung wurde hinzugefügt. Die Funktionsweise ähnelt der vonforEachGesture()
, aber die Schleife über die Touch-Gesten wird vollständig innerhalb desAwaitPointerEventScope
ausgeführt, sodass Ereignisse zwischen den Iterationen nicht verloren gehen können. forEachGesture()
wurde zugunsten vonawaitEachGesture()
eingestellt, da beiforEachGesture()
Ereignisse zwischen den 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 die IME nach Abschluss der Animation befindet. (I356f1, b/217770337)
Version 1.3
Version 1.3.1
9. November 2022
androidx.compose.foundation:foundation:1.3.1
und androidx.compose.foundation:foundation-layout:1.3.1
werden freigegeben. Version 1.3.1 enthält diese Commits.
Fehlerkorrekturen
- Leistungsproblem in
BeyondBoundsLayout
behoben (aosp/2255266) ContentInViewModifier
liest Layoutkoordinaten nur, wenn sie angehängt sind (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 freigegeben. Version 1.3.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.2.0
- Es wurden experimentelle Versionen von
LazyVerticalStaggeredGrid
undLazyHorizontalStaggeredGrid
eingeführt. SnapFlingBehavior
,rememberSnapFlingBehavior
und andere entsprechende APIs wurden als experimentell hinzugefügt.- Bei
Modifier.clickable
,Modifier.toggleable
undModifier.selectable
werden jetzt Wellen angezeigt, wenn mit der Tastatur oder dem D-Pad auf einer Fernbedienung darauf geklickt wird.
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 freigegeben. Version 1.3.0-rc01 enthält diese Commits.
API-Änderungen
- Einführung von
lowVelocityAnimationSpec
, das vom Annäherungsschritt verwendet wird, wenn die Wischgeschwindigkeit nicht ausreicht, um zu sinken. (Iaeb27) - Die experimentelle API „Hyphens“ wurde hinzugefügt, um die automatische Silbentrennung in Text zu unterstützen (Iaa869)
Version 1.3.0-beta03
21. September 2022
androidx.compose.foundation:foundation:1.3.0-beta03
und androidx.compose.foundation:foundation-layout:1.3.0-beta03
werden freigegeben. Version 1.3.0-beta03 enthält diese Commits.
API-Änderungen
- Optionen zum Anpassen der Zeilenumbrüche in Text hinzufügen (I86907)
BringIntoViewResponder
s können jetzt die aktuellsten Grenzen einer Anfrage während der Verarbeitung abrufen. (If86a5, b/241591211)- Unterstützung für Abstände zwischen Elementen in der experimentellen Version von
Staggered Grid
(I10b82) - Einführung von Textabstand in der experimentellen
Staggered Grid
(I342ea) - Das Argument
size:IntSize
wurde in der MethodeTextMeasurer.measure
durchconstraints: Constraints
ersetzt, um Mindestbreite-Einschränkungen zu unterstützen. (I37530, b/242707525) Modifier.withConsumedWindowInsets()
wurde hinzugefügt, umWindowInsets
für die Verwendung außerhalb vonwindowInsetsPadding
zu verbrauchen.MutableWindowInsets
wurde hinzugefügt, damitWindowInsets
ohne Neuzusammenstellung leicht geändert werden kann. (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 freigegeben. Version 1.3.0-beta02 enthält diese Commits.
API-Änderungen
- Erste Version der experimentellen
StaggeredGrid
(Ia48be) FocusDirection.In
undFocusDirection.Out
wurden inFocusDirection.Enter
undFocusDirection.Exit
umbenannt (Ia4262, b/183746982)- Es wurde eine
rememberSnapFlingBehavior
-Überladung eingeführt, mit der sich das Anpinnen inLazyLists
schnell aktivieren lässt. (Ifb48a) - Die
snapFlingBehavior
-Fabrik wurde durch eine konkreteSnapFlingBehavior
-Klasse ersetzt. DieSnapLayoutInfoProvider
-Methoden wurden auf „Density“ (Dichte) beschränkt, um die Umwandlung von dp in px für API-Nutzer zu vereinfachen. (I54a11) - Aktualisieren Sie
LazyLayoutMeasureScope.measure
, um eine Liste von Placeables zurückzugeben, wobei die gewünschte Unveränderlichkeit des zurückgegebenen Werts hervorgehoben wird. (I48b7c) - Einführung von
SnapLayoutInfoProvider
, mit dem eineLazyListState
verwendet wird, um eine Instanz vonSnapLayoutInfoProvider
zu erstellen, die zum Aktivieren eines SnapsFlingBehavior
fürLazyLists
verwendet werden kann. (I2dd10)
Fehlerkorrekturen
AwaitPointerEventScope#awaitLongPressOrCancellation
wurde überarbeitet, damit sie mit anderen „await“-Funktionen übereinstimmt (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 freigegeben. Version 1.3.0-beta01 enthält diese Commits.
API-Änderungen
pointerPosition
wurde ausOverscrollEffect
entfernt. Für Effekte, bei denen die Position des Mauszeigers wichtig ist, kann stattdessenModifier.pointerInput { }
ineffectModifier
verwendet werden, um die aktuelle Position des Mauszeigers abzurufen. (I9f606, b/241239306)AwaitPointerEventScope#awaitLongPressOrCancellation
als zusätzlicher Baustein für die komplexere Gestenerkennung freigegeben (I04374, b/181577176)- Die Taste
lazyListSnapLayoutInfoProvider
wurde eingeführt, um das Anpinnen in Lazy-Listen zu aktivieren. (I3ecdf) - Einführung von
SnapFlingBehavior
, einem Wisch-Verhalten, das das Anpinnen von Listen ermöglicht. Geben Sie einer Instanz vonSnapLayoutInfoProvider
Informationen zu Ihrem Anpasslayout 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 freigegeben. Version 1.3.0-alpha03 enthält diese Commits.
API-Änderungen
- Für Ressourcenschriften können jetzt Schriftvarianteneinstellungen festgelegt werden (API 26 und höher). (I900dd, b/143703328)
- Unterstützung für variable Schriftarten in
DeviceFontFamilyNameFont
(Ic1279, b/143703328) - Die experimentelle Anmerkung wurde aus
PlatformTextStyle
undLineHeightStyle
entfernt. (I64bef) - Bei Textfeldern werden jetzt detailliertere Ausnahmen geworfen, wenn die von einem
VisualTransformation
bereitgestellteOffsetMapping
ungültige Indizes zurückgibt. (Ie73f9, b/229378536) - Einführung experimenteller APIs, um die Logik des Artikelanbieters zwischen Lazy-Layouts zu teilen. (Ic891c)
ScrollableDefaults.reverseDirection()
ist nicht mehr experimentell. (Iba646)SemanticsModifier.id
wurde eingestellt und die Semantics-ID stattdessen inLayoutInfo.semanticsId
verschoben. (Iac808, b/203559524)checkScrollableContainerConstraints()
ist nicht mehr experimentell. (I2c290)Modifier.clipScrollableContainer()
ist nicht mehr experimentell. (Ia2b44)TextInputService.show|hideSoftwareKeyboard
einstellen 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 freigegeben. Version 1.3.0-alpha02 enthält diese Commits.
API-Änderungen
- Es wurde eine
drawText
-Erweiterungsfunktion fürDrawScope
hinzugefügt, um Text mit mehreren Stilen auf Composeables und Modifikatoren zu zeichnen, die auf einemDrawScope
wieCanvas
unddrawBehind
ausgeführt werden. (I16a62, b/190787898)
Fehlerkorrekturen
- Die Bildschirmtastatur wird jetzt ausgeblendet, wenn ein Textfeld deaktiviert ist, während es den Fokus hat. (I6e3e4, b/237308379)
- Wenn Sie Velocity Tracker
InputEventChange
-Ereignisse hinzufügen, werden jetzt Deltas anstelle von Positionen berücksichtigt. So wird sichergestellt, dass die Geschwindigkeit in allen Fällen korrekt berechnet wird, auch wenn sich das Zielelement bewegt (Icea9d, b/216582726, b/223440806, b/227709803) - Wenn ein scrollbares Element ein fokussiertes untergeordnetes Element hat, wird es jetzt korrekt gescrollt, damit das fokussierte untergeordnete Element im Blick bleibt, wenn seine Größe verringert wird, auch wenn die Größe animiert wird. (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 freigegeben. Version 1.3.0-alpha01 enthält diese Commits.
API-Änderungen
- Der Anmerkungstyp
UrlAnnotation
und die zugehörigen Methoden wurden eingeführt, um die Unterstützung vonTalkBack
-Links inAnnotatedString
s zu ermöglichen. (I1c754, b/231495122)
Fehlerkorrekturen
BasicTextField
cursorBrush
kann jetzt animiert werden, ohne dass der Cursor-Timer zurückgesetzt 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 freigegeben. 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 freigegeben. Version 1.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.1.0
LazyVerticalGrid
undLazyHorizontalGrid
sind jetzt stabil.- Sie können jetzt einen Inhaltstyp für Elemente in Lazy-Listen und -Rastern angeben. So können die Komponenten Elemente effizienter wiederverwenden.
- Lazy-Listen und -Raster haben jetzt die Parameter
userScrollEnabled
, mit dem sich das Scrollen über die Nutzergesten deaktivieren lässt. - Es wurde eine neue experimentelle API namens
LazyLayout
hinzugefügt. Diese API verwenden wir intern für Lazy-Listen und ‑Raster. - Die
OverscrollEffect
API wurde als experimentell eingeführt. Sie können benutzerdefinierte Überlaufeffekte definieren und benutzerdefinierten scrollbaren Containern einen standardmäßigen Plattformeffekt hinzufügen. - APIs für die Interoperabilität verschachtelten Scrollens wurden eingeführt, um die Interoperabilität zwischen Ansichten und Scroll-Akteuren zu ermöglichen.
- Das Scrollen mit der Maus und dem Touchpad wurde allen Scrollcontainern 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 freigegeben. 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 freigegeben. 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 freigegeben. Version 1.2.0-rc01 enthält diese Commits.
API-Änderungen
- Es wurde eine experimentelle
OverscrollEffect
eingeführt, die neben denModifier.scrollable
-Überladungen, die sie akzeptieren, benutzerdefinierte Überblendungseffekte ermöglicht. - Die experimentelle
LocalOverScrollConfiguration
wurde ausfoundation.gesture
in das Foundation-Paket verschoben und inLocalOverscrollConfiguration
umbenannt (If19fb, b/204650733) - Schnittstellen in Compose-Bibliotheken werden jetzt mit den Standardschnittstellenmethoden von JDK 8 erstellt (I5bcf1)
- Einführung einer experimentellen API
checkScrollableContainerConstraints()
, mit der sich prüfen lässt, ob scrollbare Container verschachtelt sind. Sie können es verwenden, wenn Sie überLazyLayout
eigene scrollbare Lazy-Layouts erstellen. (Id6fab, b/233352497) - Die eingestellte
LazyVerticalGrid
wurde aus demandroidx.compose.foundation.lazy
-Paket entfernt. Die neue stabile API befindet sich unterandroidx.compose.foundation.lazy.grid
(I73c76, b/225192009).
Version 1.2.0-beta03
1. Juni 2022
androidx.compose.foundation:foundation:1.2.0-beta03
und androidx.compose.foundation:foundation-layout:1.2.0-beta03
werden freigegeben. Version 1.2.0-beta03 enthält diese Commits.
API-Änderungen
- Neue experimentelle
IntervalList
undMutableIntervalList
hinzugefügt. Damit können Sie eine Liste von Werten über mehrere Intervalle darstellen. Sie ist nützlich, wenn Sie eine eigene DSL definieren möchten, die der vonLazyColumn
ähnelt, bei der Listenelemente über mehrere item/items-Aufrufe definiert werden können. (I2d05e, b/228580728)
Fehlerkorrekturen
- Die Dokumentation für
WindowInsets.ime
wurde dahingehend ergänzt, dassime
-Einblendungen bereits seit API 23 gemeldet werden, aber nur ab Version 30 animiert sind. (Ia7fc0, b/230756508) - Wenn Sie die Rückwärtslöschtaste drücken, während sich der Cursor am Ende eines Textfelds befindet, kommt es nicht mehr zu einem Absturz.
- Für
DeleteSurroundingTextCommand
undDeleteSurroundingTextInCodePointsCommand
müssen die Konstruktorargumente jetzt nicht negativ sein. (Ica8e6, b/199919707)
Version 1.2.0-beta02
18. Mai 2022
androidx.compose.foundation:foundation:1.2.0-beta02
und androidx.compose.foundation:foundation-layout:1.2.0-beta02
werden freigegeben. Version 1.2.0-beta02 enthält diese Commits.
- Die herunterladbare Schriftauflösung, die die Layoutgröße von Text oder
TextField
nicht ändert, wurde zuvor nicht neu gezeichnet, was zu einer veralteten Schriftanzeige führte. Durch diese Fehlerkorrektur wird sichergestellt, dass das Textlayout immer ein Neuzeichnen auslöst (b/229727404). (I1d49e, b/229727404)
Version 1.2.0-beta01
11. Mai 2022
androidx.compose.foundation:foundation:1.2.0-beta01
und androidx.compose.foundation:foundation-layout:1.2.0-beta01
werden freigegeben. 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 Elemente außerhalb des sichtbaren Bereichs angeordnet werden (Ifabfb, b/184670295) LineHeightBehavior
wird inLineHeightStyle
umbenannt.LineVerticalAlignment
wird inLineHeightStyle.Alignment
umbenannt.- Umbenennen
LineHeightTrim
wird inLineHeightStyle.Trim
umbenannt - Standardkonstruktorwerte aus
LineHeightStyle
entfernt (I582bf, b/181155707) - Es wurden Standardwerte für die optionalen Mitglieder der
LazyLayoutItemProvider
-Benutzeroberfläche hinzugefügt. (Iba8a0) - In der
LazyLayoutItemProvider
API gibt es anstelle einer Fabrik, die die zusammensetzbare Lambda-Funktion nach Index zurückgibt, jetzt eine einfachere zusammensetzbare Funktion „Item“, die den Index akzeptiert. (Id2196) - LazyLayoutItemsProvider in LazyLayoutItemProvider umbenannt (I0638c)
LazyLayoutItemsProvider.itemsCount
wird initemCount
(Id409c) umbenannt.- Der Zeichenstift wurde zu
TextStyle
undSpanStyle
hinzugefügt, um Text mit Farbverlauf zeichnen zu können. (I53869, b/187839528) - Die Attribute
trimFirstLineTop
undtrimLastLineBottom
vonLineHeightBehavior
wurden in ein einzelnes Enum geändert:LineHeightTrim
.LineHeightTrim
hat vier Status, die durch zwei Boolesche Werte definiert sind:FirstLineTop
,LastLineBottom
, „Beide“ und „Keiner“ (Ifc6a5, b/181155707) LineHeightBehavior
wurde zuTextStyle
undParagraphStyle. LineHeightBehavior
hinzugefügt, um festzulegen, ob die Zeilenhöhe oben in der ersten Zeile und unten in der letzten Zeile angewendet wird. Außerdem wird damit die Ausrichtung der Linie im durchTextStyle
(lineHeight
) bereitgestellten Bereich definiert.So ist es beispielsweise möglich, ein Verhalten zu erzielen, das dem über
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
definierten Verhalten von Preisvergleichsportalen ähnelt.trimFirstLineTop
- undtrimLastLineBottom
-Konfigurationen funktionieren nur dann richtig, wennincludeFontPadding
auf „false“ (falsch) gesetzt ist. (I97332, b/181155707)Es wurde die experimentelle Modifikatortaste
imeNestedScroll()
hinzugefügt, damit Entwickler die IME durch Scrollen steuern können. (I60759)
Fehlerkorrekturen
- Ein Regressionsfehler wurde behoben, durch den die Tastatur nicht ausgeblendet wurde, wenn Textfelder aus der Komposition entfernt wurden, während sie den Fokus hatten. (I7a410, b/230536793, b/225541817)
- Unterstützung von Auslassungspunkten, wenn die Höhe begrenzt ist und nicht alle Textzeilen passen (Ie528c, b/168720622)
BringIntoViewRequester.bringIntoView
wird jetzt immer ausgesetzt, bis die Anfrage entweder abgeschlossen ist oder durch eine neuere, nicht überlappende Anfrage unterbrochen wurde. Überlappende Anfragen werden in die Warteschlange gestellt. (I43e7f, b/216790855)- Bei gleichzeitigen
BringIntoViewRequester.bringIntoView
-Aufrufen für Rechtecke, die sich vollständig überschneiden, wird jetzt nur die Anfrage des größeren Rechtecks berücksichtigt. (I34be7, b/216790855, b/184760918) - Standardmäßig aktiviert:
includeFontPadding
. Sie könnenincludeFontPadding
mit dem AttributTextStyle.platformTextStyle
deaktivieren. In naher Zukunft werden wir das Standardverhalten ändern. Bis dahin können wir jedoch Verbesserungen bei der Zeilenhöhe (aosp/2058653) besser integrieren undTextField
-Ausbrüche beheben. (I01423, b/171394808) Modifier.bringIntoViewRequester
verwendetonGloballyPositioned
nicht mehr. (I630f5)
Externer Beitrag
MouseInjectionScope.scroll(delta = someDelta)
wird jetzt auf Android-Geräten umgekehrt, wenn vertikal gescrollt wird. Wenn someDelta positiv ist, wird nach unten gescrollt. (Ifb697, b/224992993)
Version 1.2.0-alpha08
20. April 2022
androidx.compose.foundation:foundation:1.2.0-alpha08
und androidx.compose.foundation:foundation-layout:1.2.0-alpha08
werden freigegeben. Version 1.2.0-alpha08 enthält diese Commits.
API-Änderungen
- Wenn Sie
FontFamily.SansSerif
verwenden, werden alle verfügbaren Schriftschnitte für Systemschriften auf Android-Geräten angezeigt. In API 21–28 werden dann intern Fallback-Schriftnamen wie „sans-serif-medium“ verwendet. Dies ist eine Verhaltensänderung, da in API 21–28 bisher nur die Gewichte 400 und 700 unterstützt wurden. (I380fe, b/156048036, b/226441992) - Für „Absatz“ und „Mehrere Absätze“ kann jetzt der Parameter „Einschränkungen“ verwendet werden. Wenn Sie
Constraints.maxHeight
übergeben, geschieht derzeit nichts. In Zukunft können Sie damit jedoch Berechnungen durchführen, z. B. eine elliptische Form basierend auf der Höhe. (I6afee, b/168720622) - Für
SubcomposeSlotReusePolicy.getSlotsToRetain()
wird jetzt eine benutzerdefinierte Klasse vom Typ „MutableSet“ akzeptiert, in der keine neuen Elemente hinzugefügt werden können. (Icd314) - Der teilweise Verbrauch (nach unten ODER Position) wurde in
PointerInputChange
eingestellt. Mitconsume()
können Sie die Änderung vollständig übernehmen. MitisConsumed
kannst du feststellen, ob jemand anderes die Änderung bereits verwendet hat. PointerInputChange::copy()
erstellt jetzt immer eine flache Kopie. Das bedeutet, dass Kopien vonPointerInputChange
verbraucht werden, sobald eine der Kopien verbraucht wurde. Wenn Sie eine nicht gebundenePointerInputChange
erstellen möchten, verwenden Sie stattdessen den Konstruktor. (Ie6be4, b/225669674)- Einführung einer neuen experimentellen
LazyLayout
API. So können Sie eigene Komponenten wieLazyColumn
vonLazyVerticalGrid
erstellen. Die API befindet sich noch in der Entwicklungsphase und kann in zukünftigen Releases geändert werden. (Iba2bc, b/166591700) AndroidFont
nimmt jetzttypefaceLoader
als Konstruktorparameter an. (I2c971)- Der
WindowInsets
-Companion zeigt jetzt die Sichtbarkeit an (ob sie auf dem Bildschirm zu sehen sind, unabhängig davon, ob sie sich mit dem Fenster überschneiden) und die Größe, die sie haben könnten, wenn sie auf dem Gerät verfügbar, aber derzeit nicht aktiv sind. (I65182, b/217770337)
Version 1.2.0-alpha07
6. April 2022
androidx.compose.foundation:foundation:1.2.0-alpha07
und androidx.compose.foundation:foundation-layout:1.2.0-alpha07
werden freigegeben. Version 1.2.0-alpha07 enthält diese Commits.
API-Änderungen
- Es wurde eine
PinnableParent
API hinzugefügt, mit der Kinder von Lazy-Layouts verhindern können, dass die aktuell zusammengestellten Elemente entsorgt werden (Ibbdd0, b/184670295) LazyListLayoutInfo
undLazyGridLayoutInfo
haben jetzt die FelderbeforeContentPadding
undafterContentPadding
(I3b628, b/200920410)KeyboardType.Decimal
wurde als Alternative zuKeyboard.Number
hinzugefügt, um das Dezimaltrennzeichen speziell in die Eingabemethode einzuschließen. (Iec4c8, b/209835363)- Fügen Sie den neuen Schriftart-Beschreibungstext „Schrift(DeviceFontFamilyName)“ hinzu, um optional systeminstallierte Schriftarten in Schrift-Fallback-Ketten abzurufen. (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 vorübergehende Konfigurationsoption, um die Migration zu aktivieren. Sie wird entfernt. (If47be, b/171394808) FontFamily.Resolver
wurde aktualisiert, um die systemweite Bedienungshilfe „Fettdruck“ zu integrieren (I6c1e7)- Mit der Erweiterungseigenschaft
consumeWindowInsets
vonComposeView
können Entwickler die Nutzung von Android WindowInsets deaktivieren. So 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 freigegeben. Version 1.2.0-alpha06 enthält diese Commits.
API-Änderungen
- Die
RequestFocus
-Semantikaktion wurde hinzugefügt, um den Fokus auf das fokussierbare Ziel zu setzen. (I17b71) FocusOrder
wurde jetzt inFocusProperties
zusammengeführt undfocusProperties()
bietet jetzt alle Funktionen vonfocusOrder()
.FocusOrder
undfocusOrder()
wurden eingestellt.focusOrder()
, das einfocusRequester
akzeptiert, sollte durch einenfocusRequester()
-Modifikator in Kombination mitfocusProperties()
ersetzt werden. So lässt sich die Zuständigkeit der Modifikatoren besser trennen. (I601b7)WindowInsets.asPaddingValues(Density)
wurde hinzugefügt, damit Entwickler die Umwandlung vornehmen können, ohne sich in der Komposition befinden zu müssen. (I94c35)- Das Parsen von Vektorgrafiken wurde aktualisiert, um die automatische Spiegelung zu unterstützen, mit der der Inhalt einer
VectorPainter
gedreht wird, wenn die aktuelle Layoutrichtung „Rechts nach links“ ist. (I79cd9, b/185760237)
Fehlerkorrekturen
- Mit den Scroll-Modifizierern
Modifier.verticalScroll()
,Modifier.horizontalScroll()
undModifier.scrollable()
wird jetzt so gescrollt, dass das fokussierte Compose-Element sichtbar bleibt, wenn der Scrollbereich neu skaliert wird und das fokussierte Compose-Element zuvor sichtbar war. - Textfelder werden jetzt über der Tastatur angezeigt, wenn sie den Fokus haben und die Tastatur eingeblendet ist, wenn sie sich in einem nicht-lazy scrollbaren Element befinden und der Modus für die Eingabemethode
ADJUST_RESIZE
ist. (I4a485, b/190539358, b/192043120, b/216842427)
Version 1.2.0-alpha05
9. März 2022
androidx.compose.foundation:foundation:1.2.0-alpha05
und androidx.compose.foundation:foundation-layout:1.2.0-alpha05
werden freigegeben. Version 1.2.0-alpha05 enthält diese Commits.
API-Änderungen
LazyVerticalGrid
undLazyHorizontalGrid
sind jetzt stabil. (I307c0)LazyGridItemInfo.Unknown
wurde durch separateLazyGridItemInfo.UnknownRow
undLazyGridItemInfo.UnknownColumn
ersetzt (I56d51)LazyVerticalGrid
/LazyHorizontalGrid
und alle zugehörigen APIs wurden in das Unterpaket.grid
verschoben. Bitte aktualisieren Sie Ihre Importe vonandroidx.compose.foundation.lazy
aufandroidx.compose.foundation.lazy.grid
. (I2d446, b/219942574)- Text:
includeFontPadding
ist jetzt standardmäßig deaktiviert. Die Probleme mit dem Zuschneiden aufgrund vonincludeFontPadding=false
wurden behoben und bei hohen Scripts sollte es nicht mehr zu Zuschneidungen kommen. (I31c84, b/171394808) - Die gemessene Benutzeroberfläche enthält jetzt die Property „parentData“ (I3313f).
- Einführung der experimentellen
Modifier.onFocusedBoundsChanged
, um die Grenzen von untergeordneten Fokusobjekten zu beobachten. (I14283, b/220030968, b/190539358, b/192043120, b/216842427) - LazyHorizontalGrid wurde hinzugefügt. (I61ae7, b/191238807)
- Neue
LazyVerticalGrid
API zum Definieren von Größen für Achsenkreuze hinzugefügt (I17723) - Der Modifikator „FocusGroup“ wurde hinzugefügt (I64bc0, b/213508274, b/184670295)
Fehlerkorrekturen
WindowInsets.toString()
zeigt jetzt die richtigen Werte an. (I1585d)
Externer Beitrag
- Aktualisiert auf Kotlinx-Coroutines 1.6.0 (I3366d)
Version 1.2.0-alpha04
23. Februar 2022
androidx.compose.foundation:foundation:1.2.0-alpha04
und androidx.compose.foundation:foundation-layout:1.2.0-alpha04
werden freigegeben. Version 1.2.0-alpha04 enthält diese Commits.
API-Änderungen
BringIntoViewResponders
müssen Anfragen nicht mehr manuell an übergeordnete Teilnehmer weiterleiten, sondern müssen stattdessen sofort das Rechteck zurückgeben, das ihr übergeordnetes Element anzeigen soll. (I8e66a)- Unterstützung des asynchronen Ladens von Schriftarten in Text (I77057, b/214587005)
LazyVerticalGrid
unterstützt jetztline breaking
vor Elementen, deren Spannweite nicht in die aktuelle Zeile passt. (I05c40, b/207462103)excludeFromSystemGestures
insystemGesturesExclusion
umbenannt (I19526)LazyVerticalGrid
unterstützt jetzt „reverseLayout“. (I6d7d7, b/215572963, b/211753558)- Die Methode
WindowInsets.only()
wurde hinzugefügt, damit Entwickler nur Dimensionen aus den WindowInsets einbeziehen können. (I14c94, b/217768486) Die Funktionen
ComposableTarget
,ComposableTargetMarker
undComposableOpenTarget
wurden hinzugefügt. Damit können Sie bei der Kompilierung feststellen, wann eine zusammensetzbare Funktion auf einen Anwender angewendet wird, für den sie nicht vorgesehen ist.In den meisten Fällen können die Anmerkungen vom Compose-Compiler-Plug-in abgeleitet werden. Die direkte Verwendung dieser Anmerkungen sollte daher selten vorkommen. Dazu gehören das Erstellen und Verwenden benutzerdefinierter Applier, abstrakter zusammensetzbarer Funktionen (z. B. Schnittstellenmethoden), Felder oder globaler Variablen, die zusammensetzbare Lambdas sind (lokale Variablen und Parameter werden abgeleitet), oder die Verwendung von
ComposeNode
oder einer ähnlichen zusammensetzbaren Funktion.Bei benutzerdefinierten Anwendern müssen die zusammensetzbaren Funktionen, die
ComposeNode
oderReusableComposeNode
aufrufen, eineCompoableTarget
-Anmerkung für die Funktion und alle zusammensetzbaren Lambda-Parametertypen hinzufügen. Es wird jedoch empfohlen, eine Anmerkung zu erstellen, die mitComposableTargetMarker
gekennzeichnet ist, und dann die gekennzeichnete Anmerkung anstelle vonComposableTarget
direkt zu verwenden. Eine mitComposableTargetMarker
gekennzeichnete zusammensetzbare Anmerkung entspricht einerComposbleTarget
mit dem voll qualifizierten Namen der Attributklasse als Anwenderparameter. Ein Beispiel für die Verwendung vonComposableTargetMarker
finden Sie unteranroidx.compose.ui.UiComposable
. (I38f11)
Fehlerkorrekturen
- Es ist jetzt zulässig, negative Scroll-Offsets an
LazyGridState.scrollToItem()
undLazyGridState.animateScrollToItem()
zu übergeben. (I025c6, b/211753558) - Unterstützung des asynchronen Schriftartenladens für Textfelder. (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 freigegeben. Version 1.2.0-alpha03 enthält diese Commits.
API-Änderungen
- Die
notifyFocusedRect
-Methoden inTextInputSession
undTextInputService
sind jetzt veraltet und werden nicht mehr aufgerufen. Verwenden Sie stattdessenBringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874) - Für Elemente in Lazy Grids wurden mit Modifier.animateItemPlacement() Animationen aktiviert. (Ib6621, b/211753218)
BringIntoViewRequester
leitet Anfragen jetzt an die gehostete Android-Ansicht weiter. (Ia7a51)FontFamilyResolver
ist jetzt überLocalFontFamilyResolver.current
verfügbar.- Es wurden
createFontFamilyResolver(context)
undcreateFontFamilyResolver(context, coroutineScope)
hinzugefügt, um neue Schriftfamilien-Resolver außerhalb der Verwendung in Compose zu erstellen. - Für „Absatz“ und „Mehrere Absätze“ wird jetzt
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
enthält jetzt den für dieses Layout verwendeten Resolver.TextLayoutResult.layoutInput.resourceLoader
wird nicht mehr verwendet und ist daher eingestellt. (Id5a45, b/174162090)
- Es wurden
AndroidFont
wurde hinzugefügt, eine neue Low-Level-API für die Bereitstellung neuer Arten von Schriftressourcenbeschreibungen unter Android. Beispielsweise können Sie Schriftarten aus einem app-spezifischen Backend laden, optional vorinstallierte Schriftarten auf dem Gerät suchen oder eine Schriftart aus einer Ressource laden, die nicht von den aktuellen Schriftartenfabriken bereitgestellt wird.- Die
Font.ResourceLoaded
API wurde um die Unterstützung für optionales und asynchrones Laden von Schriftarten erweitert. Es wird nicht empfohlen, dass Anwendungsentwickler diese API direkt verwenden. Informationen zum Hinzufügen neuer Schriftarten finden Sie unter AndroidFont. - Mit der Erweiterungsfunktion
Font.AndroidResourceLoader
kann eineFont.ResourceLoader
außerhalb einer Komposition erstellt werden. - Dem Parameter
loadingStrategy
für ressourcenbasierte Schriftarten wurde ein Parameter hinzugefügt, um das asynchrone Laden zu ermöglichen, wenn die ressourcenbasierte Schriftart auf herunterladbare Schriftarten-XML verweist. (Ie5aea, b/174162090)
- Die
- Der Konstruktor von
Typeface(FontFamily)
wird nicht mehr unterstützt. Bisher wurde diese Funktion verwendet, um Schriftarten vorab zu laden. Das kann bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern. Bei herunterladbaren Schriftarten kann dieser Aufruf 10 Sekunden lang blockiert werden. Verwenden Sie stattdessenFontFamilyResolver.preload
.fontResource(FontFamily): Typeface
wurde eingestellt. Bisher wurde diese Funktion verwendet, um Schriftarten vorab zu laden. Das kann bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern. Verwenden Sie stattdessenFontFamilyResolver.preload
(If8e7c, b/174162090).
- Sie können jetzt den Inhaltstyp für die Elemente von
LazyVerticalGrid
angeben. Die Funktionen „item“/„items“ aufLazyGridScope
akzeptieren jetzt einen solchen Parameter. Wenn Sie solche Informationen angeben, kann die Logik für die Artikelzusammensetzung effizienter genutzt werden und die Inhalte werden nur zwischen Artikeln desselben Typs wiederverwendet. (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 von LazyColumn/LazyRow angeben. Die item/items-Funktionen auf LazyListScope akzeptieren jetzt einen solchen Parameter. Wenn Sie solche Informationen angeben, kann die Logik für die Artikelzusammensetzung effizienter genutzt werden und die Inhalte werden nur zwischen Artikeln desselben Typs wiederverwendet. (I26506)
- Der
SubcomposeLayoutState
-Konstruktor, dermaxSlotsToRetainForReuse
akzeptiert, wurde eingestellt. Stattdessen gibt es einen neuen Konstruktor, derSubcomposeSlotReusePolicy
akzeptiert. Diese neue Schnittstelle ermöglicht eine detailliertere Steuerung der Slots, die für die spätere Wiederverwendung beibehalten werden sollen. (I52c4d) - Fügen Sie Modifikatoren für WindowInsets hinzu, sowohl für Ränder als auch für die Größe. So können einige Inhalte in den Einblendbereich hineinragen, während die Hauptinhalte außerhalb des Einblendbereichs bleiben. Mit „windowInsetsPadding“ können Sie beispielsweise den Inhaltsbereich auffüllen, um Bereiche zu vermeiden, die möglicherweise vollständig oder teilweise verdeckt werden. (Id0395, b/213942085)
Fehlerkorrekturen
- Textfelder werden jetzt über der Tastatur angezeigt, wenn sie den Fokus haben und die Tastatur angezeigt wird, wenn der Modus für die Eingabehilfe
ADJUST_PAN
ist. (I8eaeb, b/190539358, b/192043120) - Auf dem Computer wird für
FontFamily.Resolver
die lokale Komposition verwendet.- Desktop-
FontLoader
wird eingestellt - Neue
createFontFamilyResolver
-Fabrik auf dem Computer (I6bbbb, b/174162090)
- Desktop-
- Der Eingabetyp der Soft-Tastatur flackert nicht mehr, wenn der Fokus zwischen Textfeldern wechselt. (I1bf50, b/187746439)
- In Textfeldern muss nicht mehr zusätzlich die Rücktaste gedrückt werden, wenn der Cursor-Griff angezeigt wird. (Ideb4b, b/205726883)
- Das Verhalten der Lupe für die Textauswahl wurde optimiert, damit sie der Lupe der Plattform entspricht. (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 freigegeben. Version 1.2.0-alpha02 enthält diese Commits.
API-Änderungen
NonRestartableComposable
wurde Methoden hinzugefügt, die Überladungen vorhandener Methoden ohne komplexe Logik sind. Dadurch werden vom Compiler generierte Memoisierungsüberprüfungen (Gleichungen) für alle Parameter reduziert, die in der aufgerufenen inneren Funktion wiederholt werden. (I90490)excludeFromSystemGesture
-Modifikatoren für einfachen Zugriff auf diesetSystemGestureExclusionRects
von Android hinzugefügt (I46f07)
Fehlerkorrekturen
- Das Verhalten der Lupe für die Textauswahl wurde optimiert, damit sie der Lupe der Plattform entspricht. (Idd918, b/206833278)
LazyColumn
,LazyRow
,Modifier.verticalScroll
und andere Container, dieModifier.scrollable
verwenden, unterstützen jetzt das Scrollen per 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 freigegeben. Version 1.2.0-alpha01 enthält diese Commits.
API-Änderungen
- Den Typen
LazyColumn
,LazyRow
undLazyVerticalGrid
wurde der neue ParameteruserScrollEnabled
hinzugefügt, damit Nutzer das Scrollen durch Touch-Gesten oder Bedienungshilfen vorübergehend oder dauerhaft deaktivieren können. Programmatisches Scrollen über die Methoden für den Status ist weiterhin zulässig. (I7eae9, b/201150093) - Dem Lupen-Modifikator den Rückruf
onSizeChanged
hinzufügen (I6879f) - Das Lupen-Widget wird jetzt angezeigt, wenn Sie Auswahlpunkte in einer
SelectionContainer
ziehen. (I30b38, b/139320979)
Fehlerkorrekturen
- Es wurde behoben, dass der Cursor-Handle
TextField
nicht ausgeblendet wurde, wenn der Bildlauf nach oben erfolgte. (I14552, b/208883748)
Abhängigkeitsupdates
- Jetzt hängt es von Kotlin
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 freigegeben. Version 1.1.1 enthält diese Commits.
Fehlerkorrekturen
- Fehler bei
NullPointerException
unterandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
beheben (aosp/1947059, b/206677462) - Ein Absturz, der durch den Inhalt der Zwischenablage beim Lesen aus der Zwischenablage auf Android-Geräten verursacht wurde, wurde behoben. (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 freigegeben. 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 Touch-Zielen
- Im Vergleich zu Compose 1.0 wird der Layoutbereich von Materialkomponenten erweitert, um die Richtlinien für Bedienungshilfen von Material Design für die Größe von Touch-Zielelementen einzuhalten. So wird beispielsweise der Berührungszielbereich einer Schaltfläche auf eine Mindestgröße von 48 x 48 dp erweitert, auch wenn Sie die Größe der Schaltfläche kleiner festlegen. Dadurch wird das Verhalten von Compose-Material mit dem von Material Design-Komponenten abgeglichen, was für ein einheitliches Verhalten sorgt, wenn Sie Ansichten und Compose kombinieren. Durch diese Änderung werden auch die Mindestanforderungen an die Barrierefreiheit von Touch-Zielen erfüllt, wenn Sie Ihre Benutzeroberfläche mit Compose Material-Komponenten erstellen.
- Stabile Unterstützung für den Navigationsstreifen
- Eine Reihe zuvor experimenteller APIs wird in stabile APIs überführt
- Unterstützung für neuere Kotlin-Versionen
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 freigegeben. Version 1.1.0-rc03 enthält diese Commits.
Fehlerkorrekturen
- Aktualisiert, um Compose Material 1.1.0-rc03 zu unterstützen
Version 1.1.0-rc01
15. Dezember 2021
androidx.compose.foundation:foundation:1.1.0-rc01
und androidx.compose.foundation:foundation-layout:1.1.0-rc01
werden freigegeben. Version 1.1.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Es ist jetzt zulässig, negative Scroll-Offsets an
LazyListState.scrollToItem()
undLazyListState.animateScrollToItem()
zu übergeben. (Iceb90, b/184252837) - Ein Fehler wurde behoben, durch den die Bildlaufaktionen für die Barrierefreiheit fehlten (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 freigegeben. Version 1.1.0-beta04 enthält diese Commits.
Neue Funktionen
- Aktualisiert für die Kompatibilität mit Kotlin
1.6.0
API-Änderungen
- Bereinigung der Nullbarkeit in
androidx.core.view
(I7078a, b/204917439) - Es wurden experimentelle APIs hinzugefügt, mit denen PointerInputchange als Ganzes genutzt oder geprüft werden kann, ob es verwendet wurde oder nicht. (I2e59d)
- Ein Lupen-Widget wird angezeigt, wenn Sie den Cursor oder die Auswahlpunkte in Textfeldern ziehen. (I5391e, b/203781358)
Fehlerkorrekturen
- Text-Ziehpunkte bewegen sich nicht mehr, wenn sich die Sichtbarkeit der IME ändert. (I25f2e)
Version 1.1.0-beta03
17. November 2021
androidx.compose.foundation:foundation:1.1.0-beta03
und androidx.compose.foundation:foundation-layout:1.1.0-beta03
werden freigegeben. Version 1.1.0-beta03 enthält diese Commits.
API-Änderungen
- LazyVerticalGrid unterstützt jetzt horizontale Spannweiten. (I7e2fa, b/176758183)
Es wurde eine experimentelle Funktion hinzugefügt, mit der sich die Positionen von Elementen in Lazy-Listen animieren lassen. Im LazyItemScope gibt es einen neuen Modifikator namens
Modifier.animateItemPlacement()
. Anwendungsbeispiel:var list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }
- Wenn Sie einen Schlüssel über
LazyListScope.item
oderLazyListScope.items
angeben, werden mit diesem Modifikator Animationen für die Neuanordnung von Elementen aktiviert. Neben der Neuanordnung von Elementen werden auch alle anderen Positionsänderungen animiert, die durch Ereignisse wie Änderungen der Anordnung oder Ausrichtung verursacht werden. (I59e7b, b/150812265)
- Wenn Sie einen Schlüssel über
Version 1.1.0-beta02
3. November 2021
androidx.compose.foundation:foundation:1.1.0-beta02
und androidx.compose.foundation:foundation-layout:1.1.0-beta02
werden freigegeben. Version 1.1.0-beta02 enthält diese Commits.
Fehlerkorrekturen
- Wellen und andere Anzeigen werden jetzt nur verzögert, wenn sie sich in einem
Modifier.scrollable()
-Container befinden, anstatt immer bei einem Down-Ereignis. (Ibefe0, b/203141462) - Die experimentelle BringIntoView API wurde hinzugefügt. Damit können Sie eine Anfrage an die Eltern senden, damit sie scrollen, um einen Artikel in den Blick zu bekommen (Ib918d, b/195353459)
Externer Beitrag
Modifier.pointerHoverIcon
(I95f01) wurde 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 freigegeben. Version 1.1.0-beta01 enthält diese Commits.
Fehlerkorrekturen
- Die experimentelle BringIntoView API wurde hinzugefügt. Damit können Sie eine Anfrage an die Eltern senden, damit sie scrollen, um einen Artikel in den Blick zu bekommen (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 freigegeben. Version 1.1.0-alpha06 enthält diese Commits.
API-Änderungen
- Es wurde eine überlastungsfreie Überladung für das Layout hinzugefügt, die die Effizienz verbessert (Ib0d9a)
SemanticsNodeInteraction.performSemanticsAction
gibt jetzt denSemanticsNodeInteraction
zurück, über den die Funktion aufgerufen wurde. (I9e5db)- Es wurde
performScrollToNode(matcher: SemanticsMatcher)
hinzugefügt, mit dem ein scrollbarer Container zu den Inhalten scrollt, die mit dem angegebenen Matcher übereinstimmen. (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 freigegeben. Version 1.1.0-alpha05 enthält diese Commits.
API-Änderungen
- PointerEventChange enthält jetzt experimentelle bisherige Zeiger. (Ic1fd8, b/197553056, b/199921305)
Fehlerkorrekturen
- Die Unterstützung für die Barrierefreiheit bei scrollbaren Elementen (sowohl lazy als auch non-lazy) 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 freigegeben. Version 1.1.0-alpha04 enthält diese Commits.
API-Änderungen
performGesture
undGestureScope
wurden eingestellt und durchperformTouchInput
undTouchInjectionScope
ersetzt. (Ia5f3f, b/190493367)touchBoundsInRoot
wurdeSemanticsNode
hinzugefügt. Dieser enthält die Mindestgröße des Berührungszielbereichs, damit Entwickler sicherstellen können, dass Berührungsziele die Mindestanforderungen an die Barrierefreiheit erfüllen. (I2e14b, b/197751214)
Fehlerkorrekturen
- Auf Android 12-Geräten wird jetzt die Funktion „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 freigegeben. Version 1.1.0-alpha03 enthält diese Commits.
Neue Funktionen
- Compose
1.1.0-alpha03
wurde so aktualisiert, dass es von Kotlin1.5.30
abhängt. (I74545)
API-Änderungen
- Es wurde ein Glüheneffekt für das Scrollen hinzugefügt. Die neue experimentelle OverScrollConfiguration API wurde hinzugefügt, um den visuellen Effekt beim Überscrollen zu konfigurieren. Geben Sie „null“ ein, um den Overscroll-Effekt zu deaktivieren. (I0c304, b/171682480)
- AwaitPointerEventScope hat jetzt die Methoden „withTimeout()“ und „withTimeoutOrNull()“ (I507f0, b/179239764, b/182397793)
- Testmethode zum Abrufen der zugeschnittenen Begrenzungen hinzugefügt (I6b28e)
- In ViewConfiguration wurde eine Mindestgröße für den Berührungszielbereich hinzugefügt, die für die Semantik und die Eingabe per Mauszeiger verwendet wird, um die Barrierefreiheit zu gewährleisten. (Ie861c)
Version 1.1.0-alpha02
18. August 2021
androidx.compose.foundation:foundation:1.1.0-alpha02
und androidx.compose.foundation:foundation-layout:1.1.0-alpha02
werden freigegeben. 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 freigegeben. Version 1.1.0-alpha01 enthält diese Commits.
API-Änderungen
- Die
DrawScope#drawImage
-Methode wurde aktualisiert. Sie verwendet Quell- und Ziel-Rechtecke, um einen optionalen Filterqualitätsparameter zu verwenden. Das ist nützlich für Pixel-Art, die beim Skalieren für pixelbasierte Kunst gepixelt werden soll. BitmapPainter und Bild-Composable wurden aktualisiert, sodass auch ein optionaler FilterQuality-Parameter verwendet wird (Ie4fb0, b/180311607) - Die Auswahl wird jetzt in TextField gelöscht, wenn die Zurück-Schaltfläche gedrückt wird. Dies entspricht dem Verhalten von Android EditText. (I3ca16, b/174173645)
- Fügen Sie einen Cursor-Handle hinzu. (I07a82, b/173016579)
Fehlerkorrekturen
- Das Scrollen über semantische Aktionen für Lazy-Listen und reguläre Scrollkomponenten ist jetzt animiert (Id9066, b/190742024)
Externer Beitrag
LazyVerticalGrid
unterstützt 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 freigegeben. Version 1.0.5 enthält diese Commits.
Fehlerkorrekturen
- Ein Absturz beim Tracking von „derivedStateOf“-Instanzen wurde behoben. (aosp/1792247)
Version 1.0.4
13. Oktober 2021
androidx.compose.foundation:foundation:1.0.4
und androidx.compose.foundation:foundation-layout:1.0.4
werden freigegeben. Version 1.0.4 enthält diese Commits.
Abhängigkeitsupdates
- Aktualisiert, um von Kotlin
1.5.31
abhängig zu sein
Version 1.0.3
29. September 2021
androidx.compose.foundation:foundation:1.0.3
und androidx.compose.foundation:foundation-layout:1.0.3
werden freigegeben. Version 1.0.3 enthält diese Commits.
Abhängigkeitsupdates
- Aktualisiert, um von Kotlin
1.5.30
abhängig zu sein
Version 1.0.2
1. September 2021
androidx.compose.foundation:foundation:1.0.2
und androidx.compose.foundation:foundation-layout:1.0.2
werden freigegeben. Version 1.0.2 enthält diese Commits.
Aktualisiert, um die Compose 1.0.2
-Version 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 freigegeben. Version 1.0.1 enthält diese Commits.
Abhängigkeitsupdates
- Aktualisiert auf Kotlin
1.5.21
.
Version 1.0.0
28. Juli 2021
androidx.compose.foundation:foundation:1.0.0
und androidx.compose.foundation:foundation-layout:1.0.0
werden freigegeben. Version 1.0.0 enthält diese Commits.
Wichtige Funktionen von 1.0.0
Dies ist die erste stabile Version von Compose. Weitere Informationen findest du im offiziellen Compose-Release-Blog.
Bekannte Probleme
Wenn Sie Android Studio Bumblebee Canary 4 oder AGP
7.1.0-alpha04
/7.1.0-alpha05
verwenden, kann der folgende Absturz auftreten:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Erhöhen Sie in der
build.gradle
-Datei vorübergehend die minSdkVersion auf mindestens 24, um das Problem zu beheben. Dieses Problem wird in der nächsten Version von Android Studio Bumblebee und AGP7.1
behoben. (b/194289155)
Version 1.0.0-rc02
14. Juli 2021
androidx.compose.foundation:foundation:1.0.0-rc02
und androidx.compose.foundation:foundation-layout:1.0.0-rc02
werden freigegeben. Version 1.0.0-rc02 enthält diese Commits.
- Die Rahmendarstellung für generisch geformte Objekte 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 freigegeben. 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, Karten, Kästchen und
Modifier.clickable(enabled=false)
insgesamt verhindern, dass Klicks an das übergeordnete Element weitergeleitet werden. (Ic2c3b, b/183908811)
Version 1.0.0-beta09
16. Juni 2021
androidx.compose.foundation:foundation:1.0.0-beta09
und androidx.compose.foundation:foundation-layout:1.0.0-beta09
werden freigegeben. Version 1.0.0-beta09 enthält diese Commits.
API-Änderungen
ManualFrameClock
wurde entfernt. Wenn Sie Animationen steuern möchten, verwenden Sie stattdessencomposeTestRule.mainClock
. (I3c3e8, b/189951065)- Enum „Role“ und „LiveRegionMode“ in Inline-Klassen mit privatem Konstruktor ändern (Id1890)
- KeyboardCapitalization wird in eine Inline-Klasse umgewandelt. (Id5a1c)
- TextOverflow wird in eine Inline-Klasse geändert. (I433af)
Fehlerkorrekturen
- Wenn Sie jetzt eindeutige Schlüssel für LazyColumn-/LazyRow-Elemente angeben, wird die Scrollposition basierend auf dem Schlüssel beibehalten. Wenn Sie also Elemente vor dem aktuell sichtbaren Element hinzufügen oder entfernen, bleibt das Element mit dem angegebenen Schlüssel als erstes sichtbar. (Id263f, b/184257857)
- Die wichtigsten Konstanten sind derzeit @ExperimentalComposeUiApi. Der Code, der die Konstanten verwendet, kann private Konstanten vor der Stabilisierung deklarieren. (Ia5d48)
- IdlingStrategy wurde der AndroidComposeTestRule hinzugefügt. Mit dieser Funktion können Testframeworks einen alternativen Mechanismus zum Warten auf oder Erreichen des Inaktivitätsstatus installieren. Verwenden Sie
AndroidComposeTestRule.setIdlingStrategyFactory()
, bevor der Test beginnt, um Ihre eigene Strategie zu installieren. (I608fa)
Profilregeln hinzugefügt
In dieser Version werden den folgenden Compose-Modulen (I14ed6) Profilregeln hinzugefügt:
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Was sind Profilregeln?
Profilregeln für eine Bibliothek werden in einer Textdatei
baseline-prof.txt
im Verzeichnissrc/main
oder einem ähnlichen Verzeichnis angegeben. Die Datei enthält eine Regel pro Zeile. Eine Regel ist in diesem Fall ein Muster, das mit Methoden oder Klassen in der Bibliothek abgeglichen wird. Die Syntax dieser Regeln ist ein Superset des visuell lesbaren ART-Profilformats, das bei der Verwendung vonadb shell profman --dump-classes-and-methods ...
verwendet wird. Diese Regeln können auf eine von zwei Arten formuliert werden, um entweder auf Methoden oder Klassen ausgerichtet zu sein.Eine Methodenregel hat das folgende Muster:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Eine Klassenregel hat das folgende Muster:
<CLASS_DESCRIPTOR>
Hier ist
<FLAGS>
eines oder mehrere 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 die Rückgabetypen der Methode. Beispiel: Die Methodefun isPlaced(): Boolean
vonLayoutNode
hat die SignaturisPlaced()Z
.Diese Muster können Platzhalter (
**
,*
und?
) enthalten, damit eine einzelne Regel mehrere Methoden oder Klassen umfassen kann.
Welchen Zweck haben die Regeln?
Eine Methode mit dem Flag
H
ist eine „heiße“ Methode und sollte vorab kompiliert werden.Eine Methode mit dem Flag
S
wird beim Start aufgerufen und sollte vorab kompiliert werden, um die Kosten für die Kompilierung und Interpretation der Methode beim Start zu vermeiden.Eine Methode mit dem Flag
P
wird nach dem Start aufgerufen.Eine Klasse, die in dieser Datei vorhanden ist, wird beim Start verwendet und sollte im Heap vorab zugewiesen werden, um die Kosten für das Laden der Klasse zu vermeiden.
So funktioniert's
- Diese Regeln können in Bibliotheken definiert werden und werden in AAR-Artefakten verpackt. Wenn dann eine App erstellt wird, die diese Artefakte enthält, werden diese Regeln zusammengeführt und die zusammengeführten Regeln werden verwendet, um ein kompaktes binäres ART-Profil zu erstellen, das für die App spezifisch ist. ART kann dieses Profil dann nutzen, wenn die App auf Geräten installiert wird, um einen bestimmten Teil der Anwendung vorab zu kompilieren und so die Leistung der Anwendung zu verbessern, insbesondere beim ersten Ausführen. Hinweis: Dies hat keine Auswirkungen auf debuggbare Anwendungen.
Version 1.0.0-beta08
2. Juni 2021
androidx.compose.foundation:foundation:1.0.0-beta08
und androidx.compose.foundation:foundation-layout:1.0.0-beta08
werden freigegeben. Version 1.0.0-beta08 enthält diese Commits.
API-Änderungen
- Das NestedScrollSource-Enum wurde durch eine Inline-Klasse ersetzt. (Ie321b, b/187055290)
- Die Verwendung von Enums wurde in Inline-Klassen umgestellt, um Probleme mit umfassenden Wenn-Beschreibungen zu vermeiden, wenn neue Enum-Werte hinzugefügt werden. (I2b5eb)
- Für anklickbare/umschaltbare Elemente wird eine Zeitüberschreitung für das Tippen hinzugefügt, um zu verhindern, dass beim Scrollen oder Ziehen eine Wellenbewegung angezeigt wird (Ia2704, b/168524931)
- Die Properties „ContentDescription“ und „Text-Semantik“ sind keine einzelnen Werte mehr, sondern Listen. So können sie zusammengeführt werden, anstatt zusammengefügt zu werden. Außerdem wurden bessere Test-APIs zur Nutzung dieser Änderungen bereitgestellt (Ica6bf, b/184825850).
Modifier.focusModifier()
wurde verworfen und durchModifier.focusTarget()
(I6c860) ersetzt.- Das Enum „KeyboardType“ wird durch eine Inline-Klasse ersetzt. (I73045, b/187055290)
FocusState
-Enum durch eineFocusState
-Schnittstelle ersetzt (Iccc1a, b/187055290)- Das ImeAction-Enum wird durch eine Inline-Klasse ersetzt. (I18be5, b/187055290)
AnnotatedString.withAnnotation
-Funktionen heißen jetzt ExperimentalTextApi anstelle von ExperimentalComposeApi. (I0cd0a)- Der TextUnit-Konstruktor mit TextUnitType ist jetzt ExperimentalTextApi anstelle von ExperimentalComposeApi.
- PaddingValues ist jetzt
@Stable
statt@Immutable
(I88c50)
Fehlerkorrekturen
- Behebung von Abstürzen beim langen Drücken auf den leeren Bereich in nicht leerem Text. (I33ab5, b/187437299)
- Symbolleiste nach „Alle auswählen“ anzeigen (I495d9, b/185919613)
- Problem behoben, bei dem scrollbare Container ihre untergeordneten Elemente auf der Querachse zuschneiden. Das Problem konnte leicht reproduziert werden, wenn eine LazyRow mit Kartenelementen vorhanden war. Jetzt wird der Schatten nicht mehr abgeschnitten. (Icb635, b/186318448)
- Ein Problem wurde behoben, bei dem bei Verwendung von Modifier.combinedClickable manchmal Wellen oder andere Anzeigen bei einem langen Klick hängen blieben (I2298c, b/186223077)
- Jetzt werden die Positionsänderungen von
detectDragGesures
,detectVerticalGestures
unddetectHorizontalGestures
automatisch verarbeitet. Es ist nicht mehr erforderlich, in den onDrag-Callbacks change.consumePositionChange aufzurufen (I42fc4, b/185096350, b/187320697) Modifier.onGloballyPositioned()
wurde geändert, sodass die Koordinaten dieses Modifiers in der Modifikatorkette und nicht die Layoutkoordinaten nach dem Anwenden aller Modifikatoren erfasst werden. Das bedeutet, dass jetzt die Reihenfolge der Modifikatoren darüber entscheidet, welche Koordinaten erfasst 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 freigegeben. Version 1.0.0-beta07 enthält diese Commits.
API-Änderungen
- Die Logik für das Vorabladen des nächsten sichtbaren Elements wird für LazyColumn/Row eingeführt (I8a4bc, b/184940225)
- Auswahl-Handle für Clips hinzugefügt (Iff80d, b/183408447)
Fehlerkorrekturen
- Bei LazyColumn/Row bleiben jetzt bis zu zwei zuvor sichtbare Elemente aktiv (nicht entsorgt), auch wenn sie bereits ausgeblendet wurden. So können die aktiven Unterkompositionen von der Komponente wiederverwendet werden, wenn ein neues Element erstellt werden muss, was die Scrollleistung verbessert. (Ie5555)
- Entfernen Sie „paintBackground“. (I38660)
- Mit DrawScope den Hintergrund der Auswahl zeichnen (I73c61, b/186674472)
- Ein Regressionsfehler in der Beta 06, der sich auf Zeilen/Spalten auswirkte, die mit „spacedBy“-Anordnungen für das Layout gewichteter untergeordneter Elemente verwendet wurden, 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 freigegeben. Version 1.0.0-beta06 enthält diese Commits.
API-Änderungen
- Konflikt mit Navigationsgeste beheben (I1145e)
- Die APIs „CollectionInfo“ und „CollectionItemInfo“ für Bedienungshilfen wurden hinzugefügt, mit denen Sammlungen und ihre Elemente für Bedienungshilfen gekennzeichnet werden können (Id54ef, b/180479017)
- Es wurde die Taste
SemanticsActions.ScrollToIndex
hinzugefügt, um in einer Liste mit indexierten Elementen zum Element mit einem bestimmten Index zu scrollen, und die TasteSemanticsProperties.IndexForKey
, um den Index eines Elements in einer Liste mit Schlüsselelementen abzurufen. Beide Aktionen werden von LazyList implementiert.- Es wurde
SemanticsNodeInteraction.performScrollToIndex
hinzugefügt, mit dem eine Liste zum angegebenen Index scrollt, undSemanticsNodeInteraction.performScrollToKey
, mit dem eine Liste zum Element mit dem angegebenen Schlüssel scrollt. (I4fe63, b/178483889, b/161584524)
- Es wurde
- Unterstützung für das Speichern von AnnotatedString in TextFieldValue.Saver Die Dienstfunktionen „addTtsAnnotation“ und „withAnnotation“ wurden zu „AnnotatedString.Builder“ hinzugefügt (I8cbdc, b/178446304)
PaddingValues(horizontal, vertical)
wurden Standardwerte für den Parameter0.dp
hinzugefügt (I05571, b/181336792)
Fehlerkorrekturen
- Durch Zeilen- und Spaltenelemente mit
weight(fill = false)
füllt das übergeordnete Element nicht mehr den gesamten verfügbaren Hauptachsenbereich 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 freigegeben. Version 1.0.0-beta05 enthält diese Commits.
API-Änderungen
- Die Schnittstelle „FlingBehavior“ ist jetzt als „@Stable“ gekennzeichnet. Alle Implementierungen müssen dem
@Stable
-Vertrag entsprechen. (I93354, b/184830577)
Fehlerkorrekturen
- Die Bedienungshilfen für das Scrollen mit
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
undaccessibilityActionScrollDown
wurden korrigiert. Anstatt bis zum Ende des scrollbaren Elements zu scrollen, wird jetzt ein Bildschirm in die angegebene Richtung gescrollt. (Ieccb0) - Die AndroidManifest-Dateien aus „ui-test-manifest“ und „ui-tooling-data“ sind jetzt mit Android 12 kompatibel (I6f9de, b/184718994)
Version 1.0.0-beta04
7. April 2021
androidx.compose.foundation:foundation:1.0.0-beta04
und androidx.compose.foundation:foundation-layout:1.0.0-beta04
werden freigegeben. Version 1.0.0-beta04 enthält diese Commits.
API-Änderungen
- Benennen Sie „hideSoftwareKeyboard“ und „showSoftwareKeyboard“ in „SoftwareKeyboardController“ in „
hide()
“ bzw. „show()
“ um.- Die vollständige CompositionLocal-Oberfläche für LocalSoftwareKeyboardController bereitstellen, damit sie festgelegt werden kann (besonders nützlich in Tests) (I579a6)
TextOverflow.Visible
wird eingeführt. (Ic8f89)- Öffentliche Instanzen von
RowScope
,ColumnScope
,BoxScope
undBoxWithConstraintsScope
wurden entfernt. (I4e83e, b/181869067)
Fehlerkorrekturen
- Das Problem wurde behoben, bei dem Elemente von
LazyColumn
/LazyRow
an den Rändern nach einem schnellen Wischen falsch positioniert wurden (Ie4d13, b/183877420) Vor dieser Änderung konnten lokale kompositionsfähige Funktionen basierend auf ihren Parametern übersprungen werden. Nach dieser Änderung werden keine lokalen kompositionsfähigen Funktionen mehr übersprungen. Diese Änderung ist erforderlich, da lokale Funktionen häufig Parameter von übergeordneten Funktionen übernehmen und das Überspringen eine häufige Ursache für Fehler ist.
Hier ein Beispiel:
@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 nachdem der Parametercount
aktualisiert wurde. Diese Änderungen haben wir jedoch nicht vorgenommen (I5648a)
Version 1.0.0-beta03
24. März 2021
androidx.compose.foundation:foundation:1.0.0-beta03
und androidx.compose.foundation:foundation-layout:1.0.0-beta03
werden freigegeben. Version 1.0.0-beta03 enthält diese Commits.
API-Änderungen
DefaultMonotonicFrameClock
wurde eingestellt. Wenn SiewithFrameNanos
oderRecomposer.runRecomposeAndApplyChanges
ohneMonotonicFrameClock
aufrufen, wird jetztIllegalStateException
ausgegeben. (I4eb0d)
Fehlerkorrekturen
FlingBehavior.performFling()
wird jetzt auch aufgerufen, wenn die Geschwindigkeit 0 ist (I0b6e5, b/181237123)
Version 1.0.0-beta02
10. März 2021
androidx.compose.foundation:foundation:1.0.0-beta02
und androidx.compose.foundation:foundation-layout:1.0.0-beta02
werden freigegeben. Version 1.0.0-beta02 enthält diese Commits.
API-Änderungen
- Mehrere kleine Optimierungen in der Logik zur Messung von LazyColumn wurden hinzugefügt (Ic6889)
- Neue lokale
LocalSoftwareKeyboardController
-Komposition API hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I5951e, b/168778053) - Neue lokale
LocalSoftwareKeyboardController
-Komposition API 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 freigegeben. Version 1.0.0-beta01 enthält diese Commits.
Dies ist die erste Version von Compose 1.0.0 Beta.
API-Änderungen
- Der Rückruf „onStart“ wurde
detectDragGestures
hinzugefügt (I67269, b/179995594) - Modifikatoren für die Größenanpassung an intrinsische Werte sind nicht mehr experimentell. (I15744)
- Entfernte dp-Behauptungen (I798d2)
- Der Rückruf von SoftwareKeyboardController wurde aus allen Textfeldern entfernt und wird bald durch eine neue API ersetzt. (Iae869, b/168778053)
- MeasureBlocks wurde in MeasurePolicy umbenannt und hat eine ansprechende Benutzeroberfläche erhalten. Layout-APIs wurden aktualisiert / vereinfacht, um MeasurePolicy zu verwenden. (Icab48, b/167662468, b/156751158)
InteractionState
wurde durch[Mutable]InteractionSource
ersetzt- Oberflächen sind für das Senden / Erfassen von Interaktionsereignissen verantwortlich.
- Verwenden Sie stattdessen
interactionSource = remember { MutableInteractionSource() }
, uminteractionState = remember { InteractionState() }
an Komponenten wieButton
undModifier.clickable()
zu übergeben. - Anstatt
Interaction.Pressed in interactionState
sollten Sie stattdessen die Erweiterungsfunktionen von InteractionSource verwenden, z. B. InteractionSource.collectIsPressedAsState(). - Bei komplexen Anwendungsfällen können Sie mit „InteractionSource.interactions“ den Stream der Interaktionen beobachten. Weitere Informationen finden Sie in der Dokumentation und in den Beispielen zu „InteractionSource“.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Die veralteten LayoutCoordinates-Methoden wurden entfernt. Verwenden Sie für „positionInParent“ und „boundsInParent“ eine Funktion anstelle der Eigenschaft. (I580ed, b/169874631, b/175142755)
- Neue TextInputSession für Eingabesitzungen von Textkomponenten auf niedriger Ebene wie CoreTextField erstellt. (I8817f, b/177662148)
- Für „Placeable“ ist jetzt „measuredSize“ verfügbar, das die Größe darstellt, auf die das untergeordnete Layout tatsächlich gemessen wurde. Diese Größe entspricht möglicherweise nicht den Messbeschränkungen. (Ib2729, b/172560206, b/172338608)
- Mit dem Modifikator „selectionGroup“ können mehrere Tabs oder Radiobuttons aus Gründen der Barrierefreiheit gekennzeichnet werden (Ie5c29)
LazyListState.animateScrollToItem hinzufügen
Mit dieser Methode wird flüssig 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() umbenannt (I35ded)
Modifier.zoomable wurde durch Modifier.transformable ersetzt. Die Funktionen smoothPanBy und smoothRotationBy wurden hinzugefügt. (Ifc32b, b/175294473)
Die
defaultFactory
fürcompositionLocalOf
undstaticCompositionLocalOf
ist jetzt erforderlich und nicht mehr optional.Durch diese Änderung wird ein potenzieller Typfehler für nicht null-wertige Typen behoben, für die keine Standard-Factory angegeben wurde. Bisher wurde in diesem Fall eine Nullreferenz für einen nicht nullwertigen Typ zurückgegeben.
Für Typen mit zulässigen Nullwerten können Sie
{ null }
als Standard-Factory angeben.Wir empfehlen nicht, lokale Variablen mit nicht nullwertigen Typen zu verwenden, es sei denn, ein sinnvoller Standardwert kann angegeben werden. Wenn kein sinnvoller Standardwert vorhanden ist, sollte das
defaultFactory
-Lambda eine Ausnahme auslösen. Wenn jedoch eine Ausnahme ausgelöst wird, haben die Nutzer der lokalen Variablen eine implizite Abhängigkeit von der Bereitstellung, die vom Typsystem nicht erzwungen wird. (Ifbd2a)Indication#createIndication()
inIndication#rememberUpdatedIndication(InteractionState)
geändert und ParameterInteractionState
aus IndicationInstance#drawIndication()
entfernt Die „IndicationInstance“ sollte nur für das Zeichnen visueller Effekte verantwortlich sein und keine Animationen starten oder den Status als Reaktion auf Änderungen des „InteractionState“ schreiben. Diese Animationen und Statusänderungen sollten stattdessen inrememberUpdatedIndication()
erfolgen. Der Parameterindication
inModifier.indication
wurde ebenfalls in einen erforderlichen Parameter geändert. (Ic1764, b/152525426)Bei Textaktionen wird der Fokus jetzt automatisch geprüft (I13777, b/179648629)
runBlockingWithManualClock
(I15cdc, b/179664814) entferntDie Scrollposition in Modifier.verticalScroll()/horizontalScroll() wird jetzt mit Ganzzahlen dargestellt (I81298)
Die Pakete der Methoden „smoothScrollBy“ und „scrollBy“ wurden in
androidx.compose.foundation.gestures.*
geändert (I3f7c1, b/175294473)FlingConfig wurde in FlingBehavior umbenannt und ermöglicht jetzt die Anpassung der Schwebeanimation anstelle von vordefinierten Abklingzeiten. (I02b86, b/175294473)
Größenmodifikatoren wurden umbenannt. „Modifier.width/height/size“ wurden in „requiredWidth/requiredHeight/requiredSize“ umbenannt. Modifier.preferredWidth/preferredHeight/preferredSize wurden in width/height/size umbenannt. (I5b414)
„defaultMinSizeConstraints“ wurde in „defaultMinSize“ umbenannt. (I4eaae)
Modifier.tapGestureFilter wurde entfernt. Verwenden Sie stattdessen
Modifier.pointerInput { detectTapGestures(...) }
. (I266ed, b/175294473)Der teilweise Verbrauch wurde aus dem Eingabesystem für den Cursor entfernt. Die empfohlene Methode zur Koordination der teilweisen Nutzung ist Modifier.nestedScroll. (Ie9c9b)
Die Ausrichtung wurde in das Foundation-Paket verschoben. VelocityTracker wurde von ui.gesture zu ui.input.pointer verschoben. (Iff4a8, b/175294473)
AnimationClockObservable und die untergeordneten Klassen wurden entfernt. AnimatedFloat wurde entfernt. (Icde52, b/177457083)
drawerState.open() und drawerState.close() sind jetzt suspendierende Funktionen. Mit rememberCoroutineScope() den Bereich der Zusammensetzung abrufen, um sie aufzurufen (I16f60, b/175294473)
„Anbieter“ wurde in „CompositionLocalProvider“ umbenannt.
- Der Konstruktor für Kompositionen akzeptiert keinen Schlüsselparameter mehr und wurde eingestellt.
- „currentCompositeKeyHash“ wurde in eine zusammensetzbare Property auf oberster Ebene statt in eine zusammensetzbare Funktion auf oberster Ebene umgewandelt.
- „CompositionData“ und „CompositionGroup“ wurden in den Namespace „androidx.compose.runtime.tooling“ verschoben.
- ComposableLambda ist jetzt eine Schnittstelle anstelle einer konkreten Klasse und hat keine Typparameter mehr.
- ComposableLambdaN wurde zu einer Schnittstelle anstelle einer konkreten Klasse und hat keine Typparameter mehr.
- Die Funktion „snapshotFlow“ wurde in den Namespace „androidx.compose.runtime“ verschoben.
- Die Zusammenführungsmethode von SnapshotMutationPolicy ist nicht mehr experimentell
- Die Funktion „clearRoots“ der
@TestOnly
auf oberster Ebene wurde entfernt. Das ist nicht mehr erforderlich. - Die Funktionen „keySourceInfoOf“ und „resetSourceInfo“ wurden entfernt. Sie werden nicht mehr benötigt.
- „Composer.collectKeySourceInformation“ wurde entfernt. Das ist nicht mehr erforderlich.
- Die Methoden „isJoinedKey“, „joinedKeyLeft“ und „joinedKeyRight“ wurden entfernt. Sie werden nicht mehr benötigt.
- Verschiedene APIs der obersten Ebene wurden in verschiedene Dateien verschoben und neu angeordnet. Aufgrund der Dateiklassensemantik von Kotlin wird dadurch die Binärkompatibilität, aber nicht die Quellkompatibilität beeinträchtigt. Das sollte für die meisten Nutzer kein Problem darstellen.
- (I99b7d, b/177245490)
Modifier.scrollable wurde überarbeitet. Jetzt wird die Scrollable-Schnittstelle anstelle der ScrollableController-Klasse verwendet (I4f5a5, b/174485541, b/175294473)
Modifier.draggable akzeptiert jetzt DraggableState anstelle eines einfachen Lambdas. Sie können den Status über
rememberDraggableState { delta -> }
erstellen, um dasselbe Verhalten wie zuvor zu erhalten (Ica70f, b/175294473)Die Modifikatoren „requiredWidth(IntrinsicSize)“ und „requiredHeight(IntrinsicSize)“ wurden für die erforderliche Größe zu den intrinsischen Größen hinzugefügt. (I0a6b4)
Die verworfene Funktion
emptyContent()
wurde entfernt. Verwenden Sie stattdessen{}
. (Idb33f, b/179432510)Einige zuvor eingestellte APIs wurden gelöscht (Ice5da, b/178633932)
Fehlerkorrekturen
- Es wurde eine neue lokale API für die Zusammensetzung von LocalSoftwareKeyboardController 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 freigegeben. Version 1.0.0-alpha12 enthält diese Commits.
API-Änderungen
- Für Modifier.pointerInput sind jetzt Schlüssel zum Speichern erforderlich, um anzugeben, wann die Coroutine zur Erkennung der Eingabe per Mauszeiger für neue Abhängigkeiten neu gestartet werden soll. (I849cd)
- Testaktualisierung: „hasText()“ prüft sowohl Eingaben als auch Labels, Hinweise und Platzhaltertexte im Textfeld (Iab803)
- PaddingValues.Absolute wurde hinzugefügt und kann in APIs verwendet werden, die PaddingValues akzeptieren. (Ia5f30)
- onImeActionPerformed ist eingestellt. Verwenden Sie stattdessen KeyboardActions. (If0bbd, b/179071523)
- Um die Namenskonventionen besser an ImageBitmap und ImageVector anzupassen, wurde ImagePainter in BitmapPainter umbenannt, um es mit VectorPainter zu parallelisieren. (Iba381, b/174565889)
- Bessere APIs für den Test von Substrings, bei denen der Substring jetzt als Argument verwendet wird (Icbe78)
- Einführung eines
InfiniteAnimationPolicy
-Kooroutinen-Kontextelements, das in endlosen Animationen angewendet wird. Standardmäßig ist keine Richtlinie installiert, es sei denn, Sie führen Tests mitComposeTestRule
aus. (I50ec4, b/151940543) - „Animatable.snapTo“ und „Animatable.stop“ sind jetzt Aussetzungsfunktionen (If4288)
- ComponentActivity.setContent wurde in das Modul androidx.activity:activity-compose zu androidx.activity.compose.setContent verschoben. (Icf416)
- Destrukturierungs- und copy()-Methoden wurden aus mehreren Klassen entfernt, in denen sie nur selten verwendet wurden. (I26702, b/178659281)
Unterstützung für benutzerdefinierte Schlüssel für LazyColumn/LazyRow wurde hinzugefügt. So können wir die Nachbestellung von Artikeln intelligenter verarbeiten. Der Status, den Sie in remember {}-Blöcken gespeichert haben, wird also zusammen mit dem Element verschoben, wenn Sie Elemente neu anordnen oder das Element aus der Mitte entfernen.
LazyColumn { items(users, key = { user -> user.id }) { ... } }
„Indication#createInstance“ wurde in „@Composable“ geändert und „LocalIndication“ enthält jetzt eine „Indication“, keine „() -> Indication“. (I5eeea, b/157150564)
Constraints.enforce
wurde durchConstraints.constrain
ersetzt. (I8b8ea)„loadFontResource“ wird nicht mehr unterstützt. Verwenden Sie stattdessen „fontResource“. „imageResource“, „loadImageResource“, „vectorResource“ und „loadVectorResource“ wurden eingestellt. Verwenden Sie stattdessen „painterResource“. (I6b809)
Aus Leistungsgründen werden für die ScrollAxisRange-Semantik jetzt Lambdas verwendet, die Floats zurückgeben, anstatt direkte Float-Werte. (If4a35, b/178657186)
Die Semantic EditableText wurde hinzugefügt, um den bearbeitbaren Eingabetext des Textfelds für die Barrierefreiheit zu kennzeichnen, und die entsprechenden Testmethoden, um die Semantik zu prüfen (I8e07a)
Modifier.clickable unterstützt jetzt keine Doppel- und Langklicks mehr. Verwenden Sie dazu Modifier.combinedClickable. (Iafad1)
„toIntPx()“ wurde in „roundToPx()“ umbenannt. (I9b7e4, b/173502290)
IntBounds wurde in IntRect umbenannt und die API wurde verbessert. (I1f6ff)
Modifier.dragGestureFilter wurde eingestellt. Verwenden Sie stattdessen
Modifier.pointerInput { detectDragGestures (...)}
. Alternativ können Sie Modifier.draggable für das Ziehen entlang einer Achse verwenden (I0ba93, b/175294473)Die Namen der Bildschirmschoner wurden an die Umbenennung von „Ambient“ in „CompositionLocal“ angepasst. Ambients hießen früher AmbientFoo, jetzt heißen sie CompositionLocals. (I2d55d)
Die Auswahl wurde in die Foundation verschoben. (I7892b)
Ähnlich wie wir zuvor
state { 0 }
-Kompositen entfernt und die Verwendung vonremember { mutableStateOf(0) }
empfohlen haben, werden wirsavedInstanceState { 0 }
-Kompositen entfernen. Verwenden Sie stattdessenrememberSaveable { mutableStateOf(0) }
. Dieser wird automatisch gespeichert und wiederhergestellt, wenn der im MutableState verwendete Typ im Bundle gespeichert werden kann. Wenn Sie zuvor ein benutzerdefiniertes Speicherobjekt übergeben haben, müssen Sie jetzt eine neue Überladung von „rememberSaveable“ mit dem ParameterstateSaver
verwenden. Die Verwendung sieht dann so aus:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004)Passwortsemantik für Barrierefreiheit hinzugefügt (I231ce)
ProgressBarRangeInfo.Indeterminate wurde hinzugefügt, um nicht befristete Fortschrittsanzeigen für die Barrierefreiheit zu kennzeichnen (I6fe05)
Die Wiedergabezeit in der Animation ist jetzt nicht mehr auf Nanosekunden festgelegt (If776a)
@ComposableContract wurde zugunsten von drei spezifischeren Anmerkungen eingestellt.
@ComposableContract(restartable = false)
wird zu@NonRestartableComposable
@ComposableContract(readonly = true)
wird zu@ReadOnlyComposable
@ComposableContract(preventCapture = true)
wird zu@DisallowComposableCalls
@ComposableContract(tracked = true)
wurde entfernt. (I60a9d)Die Dienstprogramme
emptyContent()
und(@Composable () -> Unit).orEmpty()
wurden eingestellt, da sie keine positiven Auswirkungen auf die Leistung mehr haben und keinen Mehrwert bieten (I0484d)Recomposers können jetzt geschlossen werden. Geschlossene Rekompositionen werden fortgesetzt, bis die untergeordneten coroutines der Komposition abgeschlossen sind. Recomposer.shutDown in „cancel“ umbenannt, um einen Kontrast zu „close“ herzustellen. (Ib6d76)
APIs im Zusammenhang mit LazyVerticalGrid sind als experimentell gekennzeichnet (Ia53e3, b/178519862)
rememberSavedInstanceState() wurde in rememberSaveable() umbenannt und in das Paket androidx.compose.runtime.saveable verschoben. (I1366e, b/177338004)
RestorableStateHolder wurde in SaveableStateHolder umbenannt und in das Paket androidx.compose.runtime.saveable verschoben. Die innere Methode „RestorableStateProvider“ wurde in „SaveableStateProvider“ umbenannt. Der generische Typ wurde entfernt. Sie können also einfach „Any“ als Schlüssel übergeben. Die experimentelle Anmerkung ist nicht mehr erforderlich. (I0902e, b/174598702)
Saver, listSaver(), mapSaver(), autoSaver wurden von androidx.compose.runtime.savedinstancestate zu androidx.compose.runtime.saveable verschoben (I77fe6)
Das Artefakt androidx:compose:runtime:runtime-saved-instance-state wurde in androidx:compose:runtime:runtime-saveable umbenannt (I6dcac)
Viele seit langem eingestellte APIs im ui-Paket wurden gelöscht. (I2f2dc)
Das Artefakt „compose:runtime-dispatch“ wird jetzt eingestellt. MonotonicFrameClock finden Sie jetzt unter compose:runtime und AndroidUiDispatcher unter compose:ui. (Ib5c36)
Die Parameter „left“ (links) und „right“ (rechts) von „RounderCornerShape“, „CutCornerShape“ und „CornerBasedShape“ wurden in „start“ (Anfang) und „end“ (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 keine automatische Spiegelung gewünscht ist. (I61040, b/152756983)
„canDrag“ wurde aus „Modifier.scrollable“ entfernt. (Id66e7, b/175294473)
Die API, auf die das Compose-Compiler-Plug-in ausgerichtet ist, wurde so umgestellt, dass anstelle einer konkreten Klasse eine Schnittstelle verwendet wird. Auf der Benutzeroberfläche wird auch kein Typparameter mehr verwendet.
Dies ist eine interne Änderung, die sich nicht auf die Kompatibilität des Quellcodes auswirken sollte, aber eine funktionsgefährdende Änderung des Binärcodes ist. (I3b922, b/169406779)
Modifier.scaleGestureFilter wurde entfernt. Verwenden Sie stattdessen „Modifier.zoomable“. Alternativ können Sie auch
Modifier.pointerInput { detectMultitouchGestures { ... }}
(Id5da1, b/175294473) verwenden.„AnimatedValue/Float“ wurde eingestellt. Verwenden Sie stattdessen „Animatable“. (I71345, b/177457083)
- CoreText und CoreTextField aus der öffentlichen API entfernt
- Einstellungscontainer-Überladung entfernt (I99c19)
Entfernen veralteter Funktionen für das Scrollen ohne Pausieren Wie in der letzten Version angekündigt, wurden die Funktionen für das Scrollen ohne Pausieren jetzt vollständig entfernt. Bitte verwenden Sie die Funktionen „suspend“ mit denselben Namen. Ein coroutine-Scope 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)Die Funktionen „tapGestureFilter“, „doubleTapGestureFilter“, „longPressGestureFilter“ und „pressIndicaitonGestureFilter“ wurden eingestellt. Verwenden Sie stattdessen Modifier.clickable oder Modifier.pointerInput mit der Funktion „detectTapGestures“. (I6baf9, b/175294473)
Recomposer.current()
wurde entfernt. [Zusammenfassung]ComposeView verwendet jetzt standardmäßig verzögert erstellte, fensterweite Recomposer, die vom ViewTreeLifecycleOwner für das Fenster gesteuert werden. Recomposition und mitFrameNanos-basierte Animations-Ticks werden pausiert, während der Lebenszyklus des Hosts angehalten ist. (I38e11)„Recomposer.runningRecomposers“ bietet jetzt einen globalen StateFlow mit schreibgeschützten RecomposerInfos, um den laufenden Kompositionsstatus im Prozess zu beobachten. Diese API ist Recomposer.current() vorzuziehen, das jetzt eingestellt wird. (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 freigegeben. Version 1.0.0-alpha11 enthält diese Commits.
API-Änderungen
scrollBy ohne Pausieren wird eingestellt, scrollTo ohne Pausieren wird entfernt
Wir empfehlen jetzt, das Scrollen mithilfe von Pausierungsfunktionen zu steuern und zu warten, bis das Scrollen beendet ist. Im Rahmen dieser Umstellung werden die nicht ausgesetzten Versionen dieser Funktionen eingestellt und/oder entfernt. (Ie9ced)
Einstellung der Funktion „smoothScrollBy“ ohne Pausierung Wir empfehlen jetzt, Pausierungsfunktionen zu verwenden, um das Scrollen zu steuern und zu warten, bis das Scrollen abgeschlossen ist. Im Rahmen dieser Umstellung werden die Versionen dieser Funktionen ohne Pausierung eingestellt. (I12880)
Dem Bild und dem Symbol wurde der Parameter „Inhaltsbeschreibung“ hinzugefügt. Sie wird verwendet, um eine Beschreibung für die Bedienungshilfen bereitzustellen (I2ac4c).
BasicTextField hat einen neuen Parameter namens „decorationBox“ erhalten. Sie können dem Textfeld Dekorationen wie Symbole, Platzhalter, Labels usw. hinzufügen und den Trefferbereich vergrößern. (I16996)
Der Parameter „canDrag“ wurde aus „Modifier.draggable“ entfernt (Ic4bec, b/175294473)
AnimatedFloat.fling, das FlingConfig akzeptiert, wurde entfernt. Verwenden Sie stattdessen „suspendAnimatable.animateDecay“. (I4659b, b/177457083)
data class
wurde aus den folgenden Kursen entfernt:- InlineTextContent
- LocaleList
- (I605c7)
Klickbare, ausblendbare und auswählbare Elemente können jetzt außerhalb der Komposition erstellt werden (I0a130, b/172938345, b/175294473)
ScrollableColumn/Row wurden eingestellt. Die Verwendung von ScrollableColumn ist bei großen scrollbaren Inhalten weniger effizient als LazyColumn, da mit LazyColumn nur sichtbare Elemente erstellt, gemessen und gezeichnet werden können. Um zu verhindern, dass Nutzer ineffizient arbeiten, haben wir uns entschieden, ScrollableColumn und ScrollableRow einzustellen und stattdessen die Verwendung von LazyColumn und LazyRow zu empfehlen. Nutzer können weiterhin entscheiden, dass sie das Lazy-Verhalten nicht benötigen, und die Modifikatoren direkt verwenden, z. B. so: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
Neue
items(count: Int)
-Factorymethode für LazyColumn/LazyRow/LazyVerticalGriditems(items: List)
unditemsIndexed(items: List)
sind jetzt Erweiterungsfunktionen und müssen bei Verwendung manuell importiert werden. Neue Erweiterungsüberladungen für Arrays: „items(items: Array)“ und „itemsIndexed(Array)“ (I803fc, b/175562574)Die Einstellung „AbsoluteArrangement“ wurde entfernt. (Iffa96, b/177641870)
Der Parameter „propagateMinConstraints“ wurde Box hinzugefügt, um anzugeben, ob die eingehenden Mindesteinschränkungen an den Inhalt des Boxes übergeben werden sollen oder nicht. Der Standardwert ist „false“. (I0125b, b/152613457)
Fehlerkorrekturen
- onCommit, onDispose und onActive wurden zugunsten der SideEffect- und DisposableEffect-APIs eingestellt (If760e)
- „WithConstraints“ wurde als „BoxWithConstraints“ überarbeitet und in „foundation.layout“ verschoben. (I9420b, b/173387208)
Änderungen an den Standardfunktionen für „Schrift“/„Schriftfamilie“/„Schriftschnitt“
- Es wurden Standardfunktionen hinzugefügt, die mit einem Großbuchstaben beginnen.
- Bisherige Standardfunktionen mit Kleinbuchstaben im ersten Buchstaben wurden eingestellt
- Neue Factory-Funktionen geben die Schriftfamilie anstelle von Unterklassen zurück
- Die Konstruktoren der Unterklassen wurden ausgeblendet, sodass sie nur über Fabrikfunktionen erstellt werden können.
- Font.asFontFamily wurde in Font.toFontFamily umbenannt.
- (I42aa7)
Einführung von
ComposeContentTestRule
, dasComposeTestRule
erweitert undsetContent
definiert, das ausComposeTestRule
entfernt wurde. Es wurde eine FabrikmethodecreateEmptyComposeRule()
hinzugefügt, die eineComposeTestRule
zurückgibt und keine Aktivität für Sie startet. Verwenden Sie diese Option, wenn Sie die Aktivität während des Tests starten möchten, z. B. mitActivityScenario.launch
(I9d782, b/174472899).„animateAsState“ heißt jetzt „animateFooAsState“, wobei „Foo“ der Typ der animierten Variablen ist, z. B. „Float“, „Dp“ oder „Offset“ (Ie7e25)
Die Dichte ist jetzt auf Empfängerebene für Arrangement-Oberflächen verfügbar. (I18aad)
Für „TextFieldValue“ ist „AnnotatedString“ zulässig. Diese Änderung betrifft jedoch nur die API. Die Textbearbeitung mit mehreren Stilen ist noch nicht implementiert.
initial
wurde aus den Parametern des Konstruktors von EditingBuffer entfernt. (I326d5)
invalidate und compositionReference() werden jetzt zugunsten von currentRecomposeScope bzw. rememberCompositionReference eingestellt. (I583a8)
AnnotatedString wird jetzt von kotlin.CharSequence abgeleitet. Daher sind „length“ und „subSequence“ jetzt Instanzfunktionen und Erweiterungsfunktionen wurden entfernt. (Iaf429)
„Duration“ (Dauer) und „Uptime“ (Laufzeit) werden durch „Long milliseconds“ ersetzt. Dadurch wird die Abhängigkeit der Zeigereingabe von diesen Klassen aufgehoben. (Ia33b2, b/175142755, b/177420019)
RememberObserver ersetzt CompositionLifecycleObserver und CompositionLifecycleObserver wird nicht mehr unterstützt.
RememberObserver
ist ein Ersatz fürCompositionLifecycleObserver
mit geänderter Semantik und umbenannten Methoden. Für Objekte, die nur einmal gespeichert werden, kann die Umstellung auf die neue API automatisch erfolgen. Dies ist und bleibt die empfohlene Vorgehensweise. Wenn ein Verweis jedoch in einer Komposition mehrmals gespeichert wurde, wirdonRemembered
für jeden Verweis aufgerufen, währendonEnter
nur einmal aufgerufen wird.onEnter
wurde mehrmals aufgerufen, wenn das Objekt in Unterkompositionen verwendet wurde, z. B.WithConstraints
undScaffold
. Dadurch war die Garantie für einen einzelnenonEnter
-Aufruf nicht zuverlässig und wurde fürRememberObserver
entfernt.RememberObserver
fügtonAbandoned
hinzu, das aufgerufen wird, wenn dieRememberObserver
-Instanz vom Callback zurückgegeben wird, der anremember
übergeben wurde, aber nicht im Kompositionstatus gespeichert wurde. Daher wirdonRemembered
nie aufgerufen. Das kann passieren, wenn eine Ausnahme die Zusammenstellung vor dem Abschluss beendet oder die Zusammenstellung verworfen wird, weil der Status, für den eine Zusammenstellung erstellt wurde, nicht mehr aktuell ist oder anderweitig nicht mehr benötigt wird. Wenn die Instanz vonRememberObserver
gemäß der Empfehlung oben mit einer einzelnen Referenz eine externe Ressource erfasst, geben sowohlonForgotten
als auchonAbandoned
an, dass die Ressource nicht mehr benötigt wird. Wenn das Objekt die inonRemembered
gestartete Arbeit oder zugewiesenen Ressourcen erfasst, kannonAbandoned
ignoriert werden, da es nicht aufgerufen wird, wennonRemembered
aufgerufen wird. (I02c36)TransformedText.transformedText in TransformedText.text umbenannt
- „TransformedText“ ist keine Datenklasse mehr (Ie672a)
Die folgenden Klassen sind keine Datenklassen mehr:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
Die experimentellen Methoden „monotonicFrameAnimationClockOf“ wurden entfernt (Ib753f, b/170708374)
Die Methoden für globale Koordinaten wurden eingestellt und neue Methoden für fensterbasierte Koordinaten eingeführt. (Iee284)
Verwenden Sie stattdessen „ImeAction.None“ statt „ImeAction.NoAction“.
- Verwenden Sie ImeAction.Default anstelle von ImeAction.Unspecified (Ie1bcc).
FocusRequester.createRefs ist jetzt als experimentell gekennzeichnet, da sich die Funktion noch ändern kann. (I2d898, b/177000821)
SemanticsPropertyReceiver.hidden wurde in invisibleToUser umbenannt und mit @ExperimentalComposeUiApi gekennzeichnet. „AccessibilityRangeInfo“ wurde in „ProgressBarRangeInfo“ umbenannt. „stateDescriptionRange“ wurde in „progressBarRangeInfo“ umbenannt. „AccessibilityScrollState“ wurde in „ScrollAxisRange“ umbenannt. „horizontalAccessibilityScrollState“ wurde in „horizontalScrollAxisRange“ umbenannt. „verticalAccessibilityScrollState“ wurde in „verticalScrollAxisRange“ umbenannt. (Id3148)
VisualTransformation in eine funktionale Oberfläche geändert (I3bba4)
TestCoroutineDispatcher bei Tests nutzen (I532b6)
„PointerInputData“ wurde entfernt und „PointerInputChange“ so geändert, dass es alle Felder von „PointerInputData“ enthält. PointerInputEvent und PointerInputEventData wurden intern gemacht, da sie in keiner öffentlichen API verwendet werden. (Ifff97, b/175142755)
TextInputService.onStateUpdated in updateState umbenannt (Id4853)
Entfernen Sie „displaySize“, da diese Option vermieden werden sollte. Normalerweise ist es besser, die Größe von onRoot() oder zumindest die Fenstergröße zu verwenden. (I62db4)
Version 1.0.0-alpha10
13. Januar 2021
androidx.compose.foundation:foundation:1.0.0-alpha10
und androidx.compose.foundation:foundation-layout:1.0.0-alpha10
werden freigegeben. 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 in OffsetMapping umbenannt
- OffsetMapping.identityOffsetMap in OffsetMapping.Identity umbenannt
- PasswordTransformation ist keine Datenklasse mehr
- OffsetMapping in eine eigene Datei verschoben
- (I0bdf3)
- Änderungen an der EditOperations API
- „EditOperation“ in „EditCommand“ umbenannt
- Befehlssuffix für konkrete Implementierungen von EditOperation hinzugefügt
- EditCommand sind keine Datenklassen mehr
- Die Funktion „EditOperation.process“ wurde in „applyTo“ umbenannt.
- InputEventListener wurde in InputEventCallback umbenannt
- (I0a366)
- Velocity wurde um Komponententeile und mathematische Operationen erweitert. (Ib0447)
- @ExperimentalTesting in @ExperimentalTestApi umbenannt, um mit ähnlichen experimentellen API-Anmerkungen übereinzustimmen (Ia4502, b/171464963)
- Die experimentelle Methode „stickyHeader“ für LazyColumn/LazyRow wurde hinzugefügt (I0a81d)
- Color.useOrElse() in Color.takeOrElse() umbenannt (Ifdcf5)
- TestUiDispatcher wurde eingestellt. Verwenden Sie stattdessen Dispatchers.Main (Ic171f, b/175385255).
- „Toggle“ zu „foundation Strings.kt“ hinzufügen (I4a5b7, b/172366489)
- nativeClass wurde in das UI-Modul verschoben und intern gemacht. Die Verwendung von „nativeClass“ in „equals“-Implementierungen wurde aktualisiert. Stattdessen wird jetzt „is MyClass“ verwendet. (I4f734)
- FlowRow und FlowColumn wurden eingestellt. Verwenden Sie stattdessen ein benutzerdefiniertes Layout. (I09027)
- Modifier.focus() und Modifier.focusRequester() sind veraltet. Verwenden Sie stattdessen „Modifier.focusModifier()“ und „Modifier.focusReference()“. (I75a48, b/175160751, b/175160532, b/175077829)
- Einführung von SelectionRegistrar.notifySelectableChange, um SelectionManager über Updates für auswählbare Elemente zu benachrichtigen. (I6ff30, b/173215242)
fun Dp.isFinite()
inval Dp.isFinite
geändert (I50e00)- Constraints#satisfiedBy wurde in isSatisfiedBy umbenannt. (I9cf5c)
- „isSpecified“, „isUnspecified“ und „useOrElse“ für Inline-Klassen mit einer Unspecified-Konstante hinzugefügt (I93f7b, b/174310811)
Fehlerkorrekturen
- Neue coroutine-basierte API
Animatable
, die für gegenseitige Ausschließlichkeit der Animationen sorgt. Neue DecayAnimationSpec zur Unterstützung mehrdimensionaler Zerfallanimationen (I820f2, b/168014930) - Unterstützung für deaktivierte und schreibgeschützte Textfelder hinzugefügt (I35279, b/171040474, b/166478534)
animate()
wurde durchanimateAsState()
ersetzt, dasState<T>
stattT
zurückgibt. Dies ermöglicht eine bessere Leistung, da der Gültigkeitsbereich der Daten auf den Bereich eingegrenzt werden kann, in dem der Statuswert gelesen wird. (Ib179e)- Fügen Sie die Semantics-Rollen-API und die Rolle als Parameter zum anklickbaren, auswählbaren und umschaltbaren SemanticsModifier hinzu. Wir haben Modifier.progressSemantics geändert, damit es auch für den Schieberegler verwendet werden kann. (I216cd)
- Der native keyEvent kann jetzt über „keyEvent.nativeKeyEvent“ aufgerufen 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 freigegeben. Version 1.0.0-alpha09 enthält diese Commits.
API-Änderungen
Scrollbare Oberfläche hinzufügen
So können ScrollState und LazyListState als gemeinsamer Typ behandelt werden, sodass benutzerdefiniertes Scrollen für beide Typen implementiert werden kann.
Dadurch wird auch smoothScrollBy zu einer Erweiterungsfunktion für Scrollable verschoben, um diese Funktion zu nutzen. (I2153b)
LazyVerticalGrid wird hinzugefügt. (I17267, b/162213211)
Die Funktionen „LazyColumnFor“, „LazyRowFor“, „LazyColumnForIndexed“ und „LazyRowForIndexed“ werden eingestellt. Verwenden Sie stattdessen LazyColumn und LazyRow (I5b48c).
Die APIs zum Pausieren der Eingabe per Eingabestift wurden umbenannt: HandlePointerInputScope in AwaitPointerEventScope und handlePointerInput() in awaitPointerEventScope(). (Idf0a1, b/175142755)
„LazyListState.layoutInfo“ wurde hinzugefügt, eine Liste mit den Größen und Abständen der derzeit sichtbaren Elemente (If8678, b/170472532)
Anmerkung zu ExperimentalPointerInput entfernt (Ia7a24)
Unterstützung für den InteractionState für Textfelder wurde hinzugefügt. (I61d91)
Fügen Sie den Parameter „reverseLayout“ für „LazyColumn/Row“ hinzu. Bei
true
werden die Elemente von unten nach oben zusammengesetzt und beiLazyListState.firstVisibleItemIndex == 0
befindet sich der erste Artikel unten. (I552ae, b/166589935)Der Parameter „verticalArrangement“ wurde für „LazyColumn“ hinzugefügt. Der Parameter „horizontalArrangement“ wurde für LazyRow hinzugefügt. Mit der Anordnung können wir einen Abstand zwischen den Elementen hinzufügen und die Anordnung der Elemente festlegen, wenn wir nicht genügend Elemente haben, um die gesamte Mindestgröße zu füllen. (Icf79a, b/170394300)
Für „detectMultitouchGestures“ wird jetzt ein Callback mit kombinierten Parametern für den Schwerpunkt, das Schwenken, das Zoomen und das Drehen verwendet. (Ie6e1c)
ContentDrawScope wurde in das ui-graphics-Modul verschoben, um es mit DrawScope zusammenzuführen. (Iee043, b/173832789)
Fehlerkorrekturen
- Lambdas in Offset-Modifizierern 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 im Modul „Schreiben“ enthalten.
„CompositionData“ und „CompositionGroup“ wurden als Ersatz für die UI-Tooling API hinzugefügt, um Kompositionsinformationen zu extrahieren. Diese sind öffentlich, aber nicht für die Verwendung außerhalb der UI-Tooling API vorgesehen, da sie die Rohdaten enthalten, die von der UI-Tooling API interpretiert werden (I31a9c).
ShaderBrush wurde neu strukturiert, um eine Shaderinstanz zu erstellen, wenn Informationen zur Größe der Zeichenumgebung verfügbar sind. Dies ist nützlich, um Farbverläufe zu definieren, die bei der Zusammensetzung die gesamten Zeichengrenzen eines Composeables einnehmen, ohne dass benutzerdefinierte DrawModifier-Implementierungen implementiert werden müssen.
Die APIs für Gradientenfunktionskonstruktoren wurden zugunsten von Fabrikmethoden für ein Gradientenobjekt verworfen. (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 muss aktiviert werden (I0a1ec)
Destrukturierungsdeklarationen hinzufügen, um FocusRequester-Instanzen zu erstellen (I35d84, b/174817008)
„accessibilityLabel“ wurde in „contentDescription“ umbenannt. „accessibilityValue“ wurde in „stateDescription“ umbenannt. (I250f2)
Es wurden mehrere neue Funktionen in SelectionRegistrar eingeführt und „onPositionChange“ in „notifyPositionChange“ umbenannt. (Ifbaf7)
Von AndroidOwner intern gemacht (Ibcad0, b/170296980)
Neue Funktion „infiniteRepeatable“ zum Erstellen einer InfiniteRepeatableSpec (I668e5)
Die
Applier
-Oberfläche wurde geändert, um das Erstellen von Bäumen von unten nach oben statt von oben nach unten zu vereinfachen.Die Methode
insert()
wurde ininsertTopDown()
umbenannt.Die neue Methode
insertBottomUp()
wurde hinzugefügt.Ein Anwender fügt dem bearbeiteten Baum Knoten entweder mit
insertTopDown()
oderinsertBottomUp()
ein, je nachdem, welche Leistung besser ist.Einige Bäume, z. B.
LayoutNode
undView
, lassen sich viel effizienter von unten nach oben als von oben nach unten erstellen. Vor dieser Änderung war für die Bottom-Up-Implementierung ein Stapel von Einfügungen erforderlich, der in jeden Applier kopiert werden musste, der für die Leistung eine Bottom-Up-Konstruktion benötigte. Mit dieser Änderung wirdApplier
überinsertBottomUp()
überschrieben, um einen Baum von unten nach oben zu erstellen, undinsertTopDown()
, um den Baum von oben nach unten zu erstellen. (Icbdc2)Die painterResource API wurde hinzugefügt, um das undurchsichtige Laden von Painter-Objekten aus Raster-Asset-Formaten (z. B. PNGs) oder VectorDrawables zu ermöglichen. Nutzer müssen den Asset-Typ nicht mehr im Voraus bestimmen. Sie können diese Methode aufrufen, um ein Painter-Objekt für Bildkompositionen oder Painter-Modifikatoren abzurufen. (I2c703, b/173818471)
Die werkseitige Funktion „buildAnnotatedString“ wurde hinzugefügt, um einen AnnotatedString zu erstellen. Die Funktion „annotatedString.builder“ wurde eingestellt. (Idfe0b)
Version 1.0.0-alpha08
2. Dezember 2020
androidx.compose.foundation:foundation:1.0.0-alpha08
und androidx.compose.foundation:foundation-layout:1.0.0-alpha08
werden freigegeben. Version 1.0.0-alpha08 enthält diese Commits.
API-Änderungen
- Der Parameter
maxLines
wurde ausCoreTextField
entfernt. Wenn Sie die Höhe des Textfelds an die Anzahl der Zeilen binden möchten, verwenden Sie stattdessenBasicTextField
. (Iec002) - Die
await*TouchSlop()
-Methoden wurden so geändert, dass der Cursor nicht mehr als gedrückt erkannt wird. Außerdem wurden sie 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 Übereinstimmung mit den Compose-Richtlinien zu prüfen.
Außerdem wurden einige APIs, die
children
als Namen für das abschließende Lambda verwendet haben, gemäß der Lint-Prüfung und den Anleitungen zucontent
migriert. (Iec48e) foundation:foundation-text
APIs wurden zufoundation:foundation
verschoben. Die Paketstruktur blieb unverändert (Id3eb2).- Neuer Multitouch-Gesten-Detektor, einschließlich Hilfsfunktionen zum Erkennen von Drehen, Zoomen und Schwenken (Ic459d)
- Neue API für den Zeiger-Eingabe-Inaktivitäts-Detektor für Zieh-Gesten, einschließlich Ausrichtungssperre. (Icef25)
- VectorAsset in ImageVector umbenannt VectorAsset in Builder verschoben und umbenannt, um gemäß den Richtlinien des API-Rates eine innere Klasse von ImageVector zu sein Typealias von VectorAssetBuilder hinzugefügt, um eine Verknüpfung mit ImageVector.Builder herzustellen. (Icfdc8)
- ImageAsset und zugehörige Methoden wurden in ImageBitmap umbenannt. (Ia2d99)
- Eigenschaften für die grundlegende Semantik in die Benutzeroberfläche verschoben (I6f05c)
Fügen Sie coroutine-basierte Scrolling-APIs hinzu:
Es wurden LazyListState.snapToItem und LazyListState.smoothScrollBy sowie APIs der unteren Ebene für die Scrollsteuerung hinzugefügt. Diese APIs bieten eine Sperroberfläche zum Steuern des Scrollens, die wartet, bis das Scrollen abgeschlossen ist, bevor sie zurückgegeben wird. (Ie5642)
Den Parameter „singleLine“ wurde den Elementen „BasicTextField“, „TextField“ und „OutlinedTextField“ hinzugefügt. Legen Sie diesen Parameter auf „true“ fest, um das Textfeld in eine einzige horizontal scrollbare Zeile zu verwandeln. (I57004, b/168187755)
Mit der neuen Eingabemethode für den schwebenden Cursor wurden ein Gestensensor für Tippen, Doppeltippen, langes Drücken und eine Druckanzeige hinzugefügt. Außerdem wurden einige Dienstprogramme hinzugefügt, mit denen Entwickler ihre eigenen Gestenerkennungen leichter erstellen können. (I00807)
Modifier.focusable muss in der Foundation hinzugefügt werden. Mit diesem Attribut können Sie einer Komponente ein fokussierbares Verhalten mit korrekter Semantik und Barrierefreiheit hinzufügen. (I41eb9, b/152525426, b/162865824)
Bisher verworfene APIs wurden entfernt: „Border“ wurde entfernt, verwenden Sie stattdessen „BorderStroke“. Modifier.drawBorder wurde entfernt. Verwenden Sie stattdessen Modifier.border. Modifier.gravity wurde entfernt. Verwenden Sie stattdessen Modifier.align. Stack wurde entfernt, verwenden Sie stattdessen Box (I32c2b, b/172470874)
„AbsoluteArrangement“ wurde in „Arrangement.Absolute“ umbenannt. (If26f2)
Fehlerkorrekturen
- Die DrawModifier APIs wurden aus dem Paket androidx.compose.ui in das Paket androidx.compose.ui.draw verschoben. Die Datei „DrawModifierDeprecated.kt“ wurde erstellt, um Aliasse und Hilfsmethoden für die Migration von den eingestellten zu den aktuellen APIs zu enthalten. (Id6044, b/173834241)
- Modifier.drawLayer in Modifier.graphicsLayer umbenannt Zusätzlich wurden die zugehörigen Klassen gemäß dem Feedback des API-Rates in GraphicsLayer aktualisiert. (I0bd29, b/173834241)
<T>
wurde aus der Deklaration von „SubcomposeLayout“ entfernt. Sie können es jetzt ohne Angabe eines Typs verwenden. (Ib60c8)- Die Felder „Uptime“ und „Position“ von „PointerInputData“ sind jetzt nicht mehr optional. (Id468a)
- MaterialTheme setzt jetzt die richtigen Farben für Auswahl-Handle und Auswahlhintergrund. In nicht-Material-Apps können die Farben für die Auswahl manuell mithilfe von „AmbientTextSelectionColors“ angepasst werden. (I1e6f4, b/139320372, b/139320907)
- Der Ausrichtungsparameter von „Box“ wurde in „contentAlignment“ umbenannt. (I2c957)
- Die Modifikatoren „offsetPx“ wurden in „offset“ umbenannt. Stattdessen werden jetzt Lambda-Parameter anstelle von „State“ verwendet. (Ic3021, b/173594846)
- WindowManager.isWindowFocused wurde hinzugefügt, um zu prüfen, ob das Hostfenster den Fokus hat, und WindowFocusObserver, der einen Rückruf onWindowFocusChanged bereitstellt. (I53b2a, b/170932874)
- Dem TextInputService#onStateUpdated-Parameter wurde der Parameter „resetInput“ hinzugefügt (I3e8f5, b/172239032, b/171860947)
- Aktualisierte TextFieldValue API
- TextFieldValue.composition wurde schreibgeschützt
- Ausnahme für ungültigen Auswahlbereich entfernt (I4a675, b/172239032)
- Wir haben Ambients mit dem Suffix
Ambient
eingestellt und durch neue Properties mit dem Präfix „Ambient“ ersetzt, gemäß den anderen Richtlinien für Ambients und die Compose API. (I33440) - Android-Schriftart-Wrapper hinzugefügt. Sie können eine Android-Schriftart über die
typeface
-Funktion (typeface(Typeface.DEFAULT)
) laden. Außerdem wurdetypefaceFromFontFamily()
intypeface()
(I52ab7) umbenannt. - Es wurde eine Lint-Prüfung hinzugefügt, um zu prüfen, ob Modifier-Fabriken intern
androidx.compose.ui.composed {}
verwenden, anstatt als@Composable
gekennzeichnet zu sein. (I3c4bc) - Es wurde eine Lint-Prüfung hinzugefügt, um zu prüfen, ob Modifier-Factory-Funktionen als Erweiterungen von Modifier definiert sind, damit sie nahtlos miteinander verknüpft werden können. (I07981)
- Das semantische Argument „mergeAllDescendants“ wurde in „mergeDescendants“ umbenannt. (Ib6250)
- Die Zeitsteuerung in Tests (TestAnimationClock und ihre Verwendung) ist jetzt experimentell (I6ef86, b/171378521)
- Altes UI-Testmodul und seine Stubs entfernen (I3a7cb)
- TextUnit.Inherit wurde in Übereinstimmung mit anderen Einheiten in TextUnit.Unspecified umbenannt. (Ifce19)
- Die Benutzeroberfläche für die Ausrichtung wurde aktualisiert und funktioniert jetzt. (I46a07, b/172311734)
- Das Modul
foundation:foundation-text
wurde infoundation:foundation
(Idac0f) zusammengeführt. - Die Funktionen „place(Offset)“ und „placeRelative(Offset)“ werden eingestellt. Verwenden Sie stattdessen Überladungen mit int-Offset (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
werden losgelassen. Version 1.0.0-alpha07 enthält diese Commits.
API-Änderungen
- Ähnlich wie bei
Modifier.fillMaxSize[Width|Height]
werden jetzt auch Brüche inModifier.fillParentMaxSize[Width|Height]
innerhalb vonLazyColumn/Row
unterstützt (I797e2, b/166586426) KeyboardOptions.toImeOptions
wurde aus der öffentlichen API entfernt. (Ic2e45)- Die Foundation-Elemente „AmbientTextStyle“, „ProvideTextStyle“ und „AmbientContentColor“ wurden eingestellt. Verwenden Sie stattdessen die neuen Versionen, die in der Materialbibliothek verfügbar sind. Für nicht-Material-Anwendungen sollten Sie stattdessen eigene Designsystem-spezifische Themenumgebungen erstellen, die in Ihren eigenen Komponenten verwendet werden können. (I74acc, b/172067770)
- foundation.Text wurde eingestellt und durch material.Text ersetzt. Eine grundlegende, neutrale Text-API, die keine Werte aus einem Design verwendet, finden Sie unter androidx.compose.foundation.BasicText. (If64cb)
- Textfeldern wurde „maxLines“ hinzugefügt (Ib2a5b)
- TextFields so aktualisieren, dass sie Tastaturoptionen akzeptieren (Ida7f3)
- KeyboardOptions für die Verwendung in Textfeldern hinzugefügt (I9ca32)
- „BasicText“ wird als API für Text hinzugefügt, die unabhängig vom Design ist und parallel zu „BasicTextField“ verwendet werden kann. (I28268)
- Die Anmerkung „ExperimentalLazyDsl“ wurde entfernt. LazyColumn/LazyRow können jetzt ohne @OptIn verwendet werden (Idab7a, b/166584730)
- BaseTextField wurde eingestellt. Verwenden Sie stattdessen „BasicTextField“. (I896eb)
- Das BasicTextField wurde als Ersatz für CoreTextField und BaseTextField hinzugefügt (Id4cea)
- Einstellung der veralteten LazyColumnItems/LazyRowItems (I1d8a8)
- Die nicht mehr unterstützten Composeables für die Größenanpassung an inhärente Messwerte wurden entfernt. (I18537, b/171811496)
- „relativePaddingFrom“ wurde in „paddingFrom“ umbenannt. Der Modifikator „paddingFromBaseline“ wurde hinzugefügt, um die Abstände von den Layoutgrenzen zu den Textgrundlinien einfacher angeben zu können. (I0440a, b/170633813)
- Dem Seitenverhältnis-Modifikator wurde der Parameter „matchHeightConstraintsFirst“ hinzugefügt. Mit diesem Parameter können Sie den Modifikator für Größen- und Höheneinschränkungen angeben, bevor die entsprechenden Werte für die Breite versucht werden. (Ie7c43, b/155290593)
- Die verworfene Option „DpConstraints“ wurde entfernt. (I87884, b/171702471)
Fehlerkorrekturen
- Die Inline-Klasse „ScaleFactor“ wurde eingeführt, um Skalierungsfaktoren für die horizontale und vertikale Achse unabhängig voneinander darzustellen und so Anwendungsfälle mit nicht einheitlicher Skalierung zu unterstützen.
- Der ContentScale-Klasse wurde die Methode „computeScaleFactor“ hinzugefügt.
- ContentScale.FillBounds wurde hinzugefügt, um eine nicht einheitliche Skalierung durchzuführen und die Quellgrenzen so zu dehnen, dass das Ziel vollständig ausgefüllt wird.
- Es wurden Operatormethoden hinzugefügt, um Skalierungsfaktor-Parameter mit Größenparametern zu berechnen.
- (Ic96a6, b/172291582)
- „captureToBitmap“ wurde in „captureToImage“ umbenannt. (I86385)
- CoreText wird als @InternalTextApi gekennzeichnet. Verwenden Sie stattdessen „BasicText“. (I6aaeb)
- KeyboardOptions in ImeOptions umbenennen (I82f36)
- KeyboardType und ImeAction wurden in KeyboardOptions verschoben (I910ce)
- CoreTextField wurde als @InternalTextApi gekennzeichnet. Verwenden Sie stattdessen „BasicTextField“ (Ie2469).
- Die Anmerkung „ExperimentalSubcomposeLayoutApi“ wurde entfernt. SubcomposeLayout kann jetzt ohne Hinzufügen von @OptIn verwendet werden (I708ad)
- Einführung des Moduls „ui-test-junit4“ (Ib91f8)
- Die Symbol-API wurde aktualisiert, sodass „Color.Unspecified“ als mögliche Färbung verwendet werden kann. Dadurch wird das bereitgestellte Asset oder der bereitgestellte Painter ohne Farbfilter gezeichnet. Bisher wurde bei Versuchen, die Färbung mit „Color.Unspecified“ zu ignorieren, eine transparente Farbe verwendet, wodurch gar nichts gerendert wurde. (I049e2, b/171624632)
- „MeasureResult“ wurde aus „MeasureScope“ verschoben. (Ibf96d, b/171184002)
- Mehrere layoutbezogene Symbole wurden von androidx.compose.ui zu androidx.compose.layout.ui verschoben. (I0fa98, b/170475424)
- androidx.ui.test wurde in androidx.compose.ui.test verschoben (I9ffdb)
- „FirstBaseline“ und „LastBaseline“ wurden in das Paket „androidx.compose.ui.layout“ verschoben (Ied2e7).
- SelectionContainer ohne Rückruf hinzugefügt (Ibfadb)
- Fügen Sie Tests für die Positionen der Auswahl-Handles in SelectionContainer hinzu. (Ie93db)
- Die Option „Autokorrektur der Tastatur“ wurde hinzugefügt (I57b8d)
Version 1.0.0-alpha06
28. Oktober 2020
androidx.compose.foundation:foundation:1.0.0-alpha06
, androidx.compose.foundation:foundation-layout:1.0.0-alpha06
und androidx.compose.foundation:foundation-text:1.0.0-alpha06
werden losgelassen. Version 1.0.0-alpha06 enthält diese Commits.
API-Änderungen
- androidx.compose.foundation.Icon wurde zu androidx.compose.material.Icon verschoben. Sie können auch die Bildkomponente / Modifier.paint() mit einem Painter verwenden, wenn Sie die Materialbibliothek nicht verwenden möchten. (I9f622)
- „interactionState“ zu „Modifier.scrollable“, „ScrollableColumn“ und „LazyColumnFor“ hinzugefügt (I81566, b/169509805)
- alignByBaseline wurde zu RowScope hinzugefügt und alignWithSiblings in alignBy umbenannt (I06503, b/170628732)
- „Box“ wurde zu einer Inline-Funktion. (Ibce0c, b/155056091)
- „maxLines“ zu CoreTextField hinzugefügt (Ibee58, b/143687793)
- CoreTextField unterstützt jetzt den Softwrap. (I21a4b)
Fehlerkorrekturen
- VectorPainter wird zugunsten von rememberVectorPainter eingestellt, um besser zu verdeutlichen, dass die composable API intern „remember“ nutzt, um Daten in Kompositionen zu speichern. (Ifda43)
- Übergänge in ComposeTestRule aktivieren; Option zum Aktivieren des blinkenden Cursors aus ComposeTestRule entfernen. (If0de3)
- CoreTextField (I72e6d) hat jetzt eine Option für eine Tastatur mit einer Zeile.
- Die Radius API wurde in „CornerRadius“ umbenannt, um besser auszudrücken, wie sie in Compose verwendet wird. Die Dokumentation wurde aktualisiert, um anzugeben, dass negative Eckradien auf null begrenzt werden. (I130c7, b/168762961)
- Möglichkeit hinzufügen, Prüftool-Informationen in zusammengesetzten Modifikatoren anzugeben (Idee08, b/163494569)
- Die IME-Option „KeyboardCapitalization“ wurde hinzugefügt (I8ac38).
- Position des Rtl-Griffs korrigieren (I6e1e0)
- Wichtige Änderung: Der Rückgabewert von PointerInputFilter.onPointerEvent(...) wurde entfernt, da nur Verbrauchsdaten in Zeigerereignissen geändert werden können. Anstatt Daten von PointerInputFilter.onPointerEvent(...) zurückzugeben, können Sie jetzt einfach die Verbrauchsdaten der übergebenen PointerEvents ändern. (I6acd0)
- Die Option „Alle auswählen“ wurde dem Auswahlmenü hinzugefügt (Ief02b)
Version 1.0.0-alpha05
14. Oktober 2020
androidx.compose.foundation:foundation:1.0.0-alpha05
, androidx.compose.foundation:foundation-layout:1.0.0-alpha05
und androidx.compose.foundation:foundation-text:1.0.0-alpha05
werden losgelassen. Version 1.0.0-alpha05 enthält diese Commits.
API-Änderungen
- CoreTextField unterstützt jetzt die Cursorfunktion (Id23aa)
Die APIs „contentColor()“ und „currentTextStyle()“ werden eingestellt und durch die Umgebungen „AmbientContentColor“ und „AmbientTextStyle“ ersetzt. Wie bei allen anderen Umgebungseigenschaften können Sie mit
.current
auf den aktuellen Wert zugreifen. Diese Änderung wurde aus Gründen der Einheitlichkeit vorgenommen, um zu vermeiden, dass es mehrere Möglichkeiten gibt, dasselbe zu tun. Außerdem wurden 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 Grenzwertwerten für Inline-Klassen wurde „Color.Unset“ in „Color.Unspecified“ umbenannt, um für Einheitlichkeit mit anderen Inline-Klassen zu sorgen (I97611, b/169797763)
- Es wurden Bedienungshilfen-Aktionen zum Kopieren/Einfügen/Ausschneiden hinzugefügt (I6db4f)
- TextOverflow.None wurde eingeführt. Wenn „overflow“ den Wert „None“ hat, wird der Text nicht mehr von „Text“ verarbeitet und seine tatsächliche Größe wird an „LayoutNode“ gemeldet. (I175c9, b/158830170)
- Die Parameter für „Größe.Unspezifiziert“ wurden auf „Float.NaN“ statt „Float.POSITIVE_INFINITY“ aktualisiert. Die Painter-Implementierungen wurden aktualisiert, um auch „Size.Unspecified“ und nicht endliche Größen zu prüfen. (I95a7e)
- Modul „Paginierte Zusammenstellung“ und Paginierungsintegration hinzugefügt (Ib85da)
- LazyListScope so ändern, dass er Nullwerte akzeptiert (I1765b)
- OnPositionedModifier wurde in OnGloballyPositionedModifier umbenannt und onPositioned() in onGloballyPositioned(). (I587e8, b/169083903)
- Beispiele für LazyColumn/Row hinzugefügt (Idc16d)
- Die Methoden „items“ und „itemsIndexed“ wurden so geändert, dass „emptyList“ zulässig ist (I06647).
- DSL zum Angeben von Prüferinformationen hinzufügen (Ic9a22)
- Verschieben Sie „Langes Drücken“ in „Text“. (Iff2bc)
- Deaktivierung der Textauswahl und Demo (Ie7e97)
- Unterstützung der Umwandlung von AnnotatedString in SpannableString für Barrierefreiheit. (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
werden losgelassen. Version 1.0.0-alpha04 enthält diese Commits.
API-Änderungen
- „Stack“ wurde in „Box“ umbenannt. Das bisher vorhandene Element „foundation.Box“ wird zugunsten des neuen Elements „Box“ in „compose.foundation.layout“ eingestellt. Das neue Feld stapelt die untergeordneten Elemente übereinander, wenn es mehrere davon hat. Das unterscheidet es vom vorherigen Feld, das sich ähnlich wie eine Spalte verhielt. (I94893, b/167680279)
- Die Parameter für die Box-Dekoration wurden eingestellt. Wenn Sie Verzierungen oder Ränder für das Feld haben möchten, verwenden Sie stattdessen Modifikatoren (Modifier.background, Modifier.border, Modifier.padding). (Ibae92, b/167680279)
- Fügen Sie eine neue Klasse „LazyListState“ hinzu. So können Sie die Scrollposition der LazyRow- und LazyColumn-Komponenten beobachten und steuern. Instanzen können mit rememberLazyListState() erstellt und an den Statusparameter der Komponente übergeben werden. Derzeit sind in dieser ersten Version das erste sichtbare Element und die Abweichungen zu sehen. (Ic7cb7, b/159307669)
- Die Position der Lazy-Liste und der Scroll-Offset werden jetzt bei der Wiederherstellung von Aktivitäten gespeichert und wiederhergestellt (Ie045f, b/166589058)
- Aktion für langes Tippen hinzufügen (I6281b, b/156468846)
- Das Dienstprogramm „MutatorMutex“ wurde hinzugefügt, um einen einzelnen Mutator des gemeinsamen Zustands im Zeitverlauf beizubehalten und konfliktierende Mutatoren nach Priorität abbrechen zu lassen (I3f975)
- rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled und textInputServiceFactory mit @VisibleForTesting annotiert, zu einer internen API gemacht und ihre Kdoc ausgeblendet (I554eb, b/168308412)
- Der Parameter „inlineContent“ wurde aus „Text mit Stringeingabe“ entfernt. Er wird nicht verwendet, da „inlineContent“ mit „AnnotatedString“ funktionieren muss. (Ief403)
- Die veralteten APIs für benutzerdefinierte Arrangements wurden entfernt. (Ic576d, b/168297922, b/168297923)
- Der Parameter
unbounded
wurde den Modifikatoren für „wrapContentSize“ hinzugefügt. Damit kann das Layoutelement mit unendlichen maximalen Einschränkungen gemessen werden. (I77951, b/158559319) - Statische Importe von Inhalten von Layoutbereichen (z.B. „alignWithSiblings“ in „RowScope“) sind nicht mehr möglich. Stattdessen sollte die Alternative mit explizitem Umfang verwendet werden:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
. (I216be, b/166760797)
Fehlerkorrekturen
- Viele Grafik-APIs wurden aktualisiert.
- Die APIs für Skalierungs- und Drehtransformationen wurden aktualisiert, sodass jetzt ein einzelner Offset-Parameter für die Drehpunktkoordinate verwendet wird, anstatt separater Gleitkommaparameter für die X-/Y-Koordinaten in DrawScope und DrawTransform.
- Die Methoden „Rect.expandToInclude“ und „Rect.join“ wurden entfernt.
- Die Dokumentation zu Radius wurde aktualisiert. Neben „elliptisch“ wird jetzt auch „oval“ verwendet.
- Es wurde eine Dokumentation hinzugefügt, in der darauf hingewiesen wird, dass der öffentliche Konstruktor für die Inline-Klasse „Radius“ nicht direkt aufgerufen werden darf, sondern dass Radius-Objekte stattdessen über ihre Funktionskonstruktoren instanziiert werden sollten.
- RoundRect APIs zum Abfragen von „topRight“, „bottomRight“ und „bottomCenter“ wurden entfernt.
- Rect.shift wurde zugunsten von Rect.translate eingestellt
- Die APIs „RoundRect.grow“ und „Rect.shrink“ wurden entfernt.
- RoundRect.outerRect wurde in Rect.boundingRect umbenannt
- Die Methoden „RoundRect.middleRect“, „tallMiddleRect“, „wideMiddleRect“ und „Rect.isStadium“ wurden entfernt.
- RoundRect.longestSide in RoundRect.maxDimension umbenannt
- RoundRect.shortestSide wurde in RoundRect.minDimension umbenannt
- RoundRect.center wurde zu einer Eigenschaft anstelle einer Funktion geändert
- Der Konstruktor für RoundRect wurde aktualisiert, sodass Radiuseigenschaften anstelle einzelner Parameter für X‑/Y‑Radiuswerte verwendet werden.
- Entfernte APIs für die Größe, bei denen davon ausgegangen wurde, dass es sich um ein Rechteck mit dem Ursprung bei 0,0 handelt
- Radius-API zum Löschen von Elementen hinzugefügt
- Verschiedene Erweiterungsfunktionen für RoundRect wurden zu Eigenschaften migriert.
- (I8f5c7, b/168762961)
- Leistungsoptimierungen beim Scrollen mit LazyColumnFor/LazyRowFor, da nicht bei jedem Scrollen unnötige Neuzusammensetzungen durchgeführt werden (I64f65, b/168293643, b/167972292, b/165028371)
- Der Absturz in LazyColumnFor/LazyRowFor nach dem Scrollen und dem Ändern von Elementen wurde behoben. Außerdem wurde das automatische Scrollen nach oben implementiert, wenn das zuvor sichtbare Element entfernt wurde, damit am Ende keine Lücken mehr angezeigt werden (I220ab, b/161480164, b/167855468)
- Das Verschachteln von Containern, die in dieselbe Richtung scrollbar sind, wie ScrollableContainer und LazyColumnFor, ist nicht mehr zulässig. Es wurde nie unterstützt und hat die Funktionsweise von Fling und die Bequemlichkeit beim Erstellen der Elemente von LazyColumnFor beeinträchtigt (I6e101)
- Viele Grafik-APIs wurden aktualisiert.
- Die DrawScope APIs wurden um Transformationsmethoden mit Bereichsangabe erweitert, um anzugeben, dass die Transformation nur innerhalb des Callbacks angewendet und nach dem Aufruf des Callbacks entfernt wird.
- Die Dokumentation zu „clipPath“ wurde aktualisiert, um statt „rounded rectangle“ auf „Path“ zu verweisen.
- In der Dokumentation wurde der Abstand für den rechten Parameter in clipPath korrigiert.
- DrawScope.drawCanvas in drawIntoCanvas umbenannt und Größeparameter entfernt
- Die Parameter „dx“ und „dy“ in der Einblendmethode wurden in „horizontal“ und „vertical“ umbenannt.
- Überladung für „inset“ hinzugefügt, die allen vier Rändern denselben Wert zuweist
- Die Dokumentation zur Inset-Methode, in der angegeben wurde, dass der Inset auf alle vier Seiten angewendet wird, wurde entfernt.
- Aktualisierte Dokumentation für die Klasse „Rect“
- Kommentare zu Rect-Parametern wurden an den KDoc-Stil angepasst
- Entfernt: Rect.join und Rect.expandToInclude
- Überladung für Rect.translate(offset) erstellt und Rect.shift eingestellt
- (If086a, b/167737376)
- Fügen Sie den semantischen Properties die Property „AccessibilityScrollState“ hinzu. (Ifeda9)
- TextRange inline einfügen, um das Erstellen von Objekten zu vermeiden (Id034b)
- ParagraphConstraints wurde entfernt. Die Breite wird jetzt direkt an den Absatz übergeben. (Ica712)
Version 1.0.0-alpha03
16. September 2020
androidx.compose.foundation:foundation:1.0.0-alpha03
, androidx.compose.foundation:foundation-layout:1.0.0-alpha03
und androidx.compose.foundation:foundation-text:1.0.0-alpha03
werden losgelassen. Version 1.0.0-alpha03 enthält diese Commits.
API-Änderungen
- „InnerPadding“ wurde in „PaddingValues“ umbenannt. (I195f1, b/167389171)
- Die Verwendung von „gravity“ wurde in Layout-APIs einheitlich in „align“ oder „alignment“ umbenannt. (I2421a, b/164077038)
- Dem Stack wurde ein Ausrichtungsparameter hinzugefügt, mit dem die Standardausrichtung für alle untergeordneten Elemente des Stacks 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
undpreferredHeightIn
. (I0e5e1, b/167389544) - onNode und andere globale Methoden wurden zu ComposeTestRule hinzugefügt, da die aktuellen globalen Methoden eingestellt werden. (Ieae36)
- Feste Größe und Position in GestureScope, was unter anderem zu ungültigen Wischgesten führte (Iaf358, b/166589947)
createAndroidComposeRule
undAndroidInputDispatcher
wurden vonandroidx.ui.test.android
nachandroidx.ui.test
verschoben (Idef08, b/164060572)
Version 1.0.0-alpha02
2. September 2020
androidx.compose.foundation:foundation:1.0.0-alpha02
, androidx.compose.foundation:foundation-layout:1.0.0-alpha02
und androidx.compose.foundation:foundation-text:1.0.0-alpha02
werden losgelassen. Version 1.0.0-alpha02 enthält diese Commits.
Fehlerkorrekturen
- TestUiDispatcher ist als experimentell gekennzeichnet (Iae99d, b/161247083)
Es wurde
ManualFrameClock.hasAwaiters
hinzugefügt, um zu sehen, ob ein Frame von dieser Uhr erwartet wird.runWithManualClock
ersetztrunBlocking
bei Tests, für die eine ManualFrameClock erforderlich ist.TestUiDispatcher.Main
bietet einfachen Zugriff auf den Haupt-UI-Dispatcher in Ihren Tests.Beispiel:
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
Version 1.0.0-alpha01
26. August 2020
androidx.compose.foundation:foundation:1.0.0-alpha01
, androidx.compose.foundation:foundation-layout:1.0.0-alpha01
und androidx.compose.foundation:foundation-text:1.0.0-alpha01
werden losgelassen. 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
werden losgelassen. Version 0.1.0-dev17 enthält diese Commits.
API-Änderungen
- Die Anordnung „spacedBy“ wurde für Zeilen und Spalten hinzugefügt, um Layout-Unterelemente mit einem festen Abstand zu positionieren. Außerdem wurde die Ausrichtung hinzugefügt, um Layout-Unterelemente nebeneinander zu positionieren und in der Zeile/Spalte gemäß einer Ausrichtung auszurichten. Die bisherigen Methoden „Arrangement.Vertical#arrange“ und „Arrangement.Horizontal#arrange“ wurden eingestellt. Das Erstellen benutzerdefinierter Arrangements wird in Zukunft nicht mehr unterstützt. (I6733d, b/161985975)
- „Offset“ ist zu einer Inline-Klasse geworden (Iaec70)
- onFocusChanged-Callbacks aus TextField entfernt Verwenden Sie stattdessen Modifier.focusObserver. (I51089, b/161297615)
- Modifier.drawBorder wurde eingestellt. Verwenden Sie stattdessen „Modifier.border“. Die Datenklasse „Border“ wurde durch „BorderStroke“ ersetzt (I4257d, b/158160576)
- VerticalScroller und HorizontalScroller wurden entfernt. Verwenden Sie stattdessen ScrollableColumn/Row. Modifier.drawBackground wurde entfernt. Modifier.background verwenden (I73b0d, b/163019183)
- Die als veraltet gekennzeichneten Modifikatoren „fillMax*“ wurden aus „LazyItemScope“ entfernt, da sie es erschweren, solche Modifikatoren korrekt für Elemente hinzuzufügen, die keine direkten untergeordneten Elemente von „LazyColumnFor“ sind (Ifa78d)
- LazyColumn/LazyRow-Implementierung als DSL hinzugefügt (I93cc6)
- „Einschränkungen“ ist jetzt eine Inline-Klasse (I88736)
- Es ist jetzt möglich, ein Layout mit den Modifikatoren „fillMaxWidth“, „fillMaxHeight“ und „fillMaxSize“ auf einen Bruchteil des verfügbaren Bereichs zu skalieren. (I945bb, b/161562591)
Fehlerkorrekturen
- Dem SelectionContainer wurde ein Parameter für die Modifizierung hinzugefügt (I4aada, b/161487952)
- Dem SemanticsPropertyKey wurde die Lambda-Funktion „mergePolicy“ hinzugefügt. So können Sie eine benutzerdefinierte Richtlinie für die Zusammenführung mit der Semantik „mergeAllDescendants“ definieren. Standardmäßig wird der übergeordnete Wert verwendet, falls vorhanden, andernfalls der untergeordnete Wert. (Iaf6c4, b/161979921)
PlacementScope.placeAbsolute()
wurde inPlacementScope.place()
umbenannt und das vorherigePlacementScope.place()
inPlacementScope.placeRelative()
. Daher wird die Position in Kontexten, in denen von rechts nach links geschrieben wird, mit derPlacementScope.place()
-Methode nicht mehr automatisch gespiegelt. Verwenden Sie stattdessenPlacementScope.placeRelative()
. (I873ac, b/162916675)- Die nicht mehr unterstützte Komponente „FilledTextField“ wurde entfernt. Verwenden Sie stattdessen „TextField“, um die Material Design-Implementierung des ausgefüllten Textfelds zu erhalten. (I5e889)
- Dem LinearProgressIndicator wurde der Parameter „backgroundColor“ hinzugefügt und das interne Padding von CircularProgressIndicator entfernt. Neue ProgressIndicatorConstants.DefaultProgressAnimationSpec hinzugefügt, die als Standard-AnimationSpec beim Animieren des Fortschritts zwischen Werten verwendet werden kann (If38b5, b/161809914, b/161804677)
- Die
state { ... }
-Komponente wird zugunsten expliziter Aufrufe vonremember { mutableStateOf(...) }
eingestellt. Dadurch wird die API-Oberfläche insgesamt und die Anzahl der Konzepte für die Zustandsverwaltung reduziert. Außerdem entspricht dies demby mutableStateOf()
-Muster für die Delegation von Klasseneigenschaften. (Ia5727) - RRect in RoundRect umbenannt, um besser zu den Benennungsmustern von Compose zu passen Ähnliche Funktionskonstruktoren wie RRect erstellt und RRect-Funktionskonstruktoren eingestellt (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).
- Halten Sie den leeren Bereich zum Bearbeiten gedrückt. (Ib1e5b)
- Die FloatingToolbar wird ausgeblendet, nachdem auf den Text getippt wurde. (If4525)
- „FloatingToolbar“ beim Aktualisieren der Auswahl ausblenden (I8444c)
- Heben Sie die Auswahl von „Bei Unkenntlichmachen“ 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
werden losgelassen. Version 0.1.0-dev16 enthält diese Commits.
API-Änderungen
- „LazyItemScope“ wurde für den Parameter „itemContent“ von Lazy-Listen hinzugefügt. Es bietet Modifikatoren, um die maximale Größe des übergeordneten Elements zu füllen. Dies löst den Anwendungsfall, wenn das Element den Darstellungsbereich füllen soll und die normale Funktion Modifier.fillMaxSize() nicht funktioniert, da das Element mit unendlichen Einschränkungen gemessen wird. (Ibd3b2, b/162248854)
- Dialogfeld in die Benutzeroberfläche verschieben (I47fa6)
- Es wurden LazyColumnForIndexed/LazyRowForIndexed hinzugefügt, Versionen von LazyColumnFor/LazyRowFor, die sowohl Index als auch Element im itemCallback bereitstellen. Sie ist nützlich, wenn Sie zusätzlich zu einem aktuellen Element einen aktuellen Index benötigen. (I65ff3)
- „Modifier.determineProgress“ wurde in „Modifier.progressSemantics“ umbenannt (I9c0b4)
- „LazyColumnItems“ wurde in „LazyColumnFor“ umbenannt. „LazyRowItems“ wurde in „LazyRowFor“ umbenannt (I84f84)
- Fügen Sie einige Markierungen/Anmerkungen hinzu, um Best Practices zu berücksichtigen. (I66b20)
- Das Paket „foundation.shape.corner“ wurde zu „foundation.share“ zusammengeführt (I46491, b/161887429)
- Der Parameter „crossaxis gravity“ wurde für LazyRowItems/LazyColumnItems hinzugefügt. LazyRowItems/LazyColumnItems unterstützen jetzt das Umbrechen von Inhalten. (Ib39fc)
- „ZoomableState“ wurde in „ZoomableController“ umbenannt. Für „smoothScale“ wurde die Unterstützung benutzerdefinierter Kurven hinzugefügt. Die Funktionen
enabled
undonZoomStarted
wurden hinzugefügt (If8b8f) - „Material FilledTextField“ wurde in „TextField“ umbenannt und „foundational TextField“ in „BaseTextField“, damit die einfachste gewünschte API leicht zu finden und zu verwenden ist (Ia6242, b/155482676)
- Das zuvor eingestellte Attribut „AdapterList“ wurde entfernt. Verwenden Sie stattdessen LazyColumnItems (I12b9b).
- Modifier.drawBackground wurde in Modifier.background umbenannt (I13677)
- Die alte ConstraintLayout-DSL wurde entfernt. ConstraintSet2 wurde in ConstraintSet umbenannt. (If58d1, b/162450908)
- Es wurden Modifier.absoluteOffset() und Modifier.absoluteOffsetPx() hinzugefügt. Im Gegensatz zu Offset-Modifizierer werden Modifizierer für absoluten Offset nicht automatisch in einem Kontext von rechts nach links gespiegelt (I3aa21)
Row
undColumn
sind jetzt Inline-Funktionen, wodurch der Overhead bei der Verwendung erheblich reduziert wird. (I75c10)
Fehlerkorrekturen
- Allgemeine API-Fehler behoben (I077bc)
- Nicht verwendete OffsetBase-Schnittstelle entfernen
- Align Offset and IntOffset classes to have a consistent API surface
- IntOffset.Origin in IntOffset.Zero umbennen, um mit der Offset API übereinzustimmen
- Die nativeCanvas-Methode wurde aus der Canvas-Benutzeroberfläche entfernt, damit Nutzer ihre eigenen Canvas-Instanzen erstellen können.
- Die Stub-Klasse „EmptyCanvas“ wurde erstellt, um „DrawScope“ zu einem nicht nullwertigen Parameter anstelle eines lateinit-Parameters umzuwandeln und dafür zu sorgen, dass das Feld nicht null sein darf.
- ClipOp-Enum-Typen wurden in Pascal-Case umbenannt
- Die Filterqualitätsenumer wurden in Pascal-Schriftart umbenannt.
- Die StrokeJoin-Enume wurden in Pascal Case umbenannt.
- Die PointMode-Enum-Typen wurden in Pascal Case umbenannt.
- Die Enum-Typen „PaintingStyle“ wurden in Pascal Case umbenannt.
- Die Aufzählungen vom Typ „PathFillType“ wurden in Pascal-Schriftart umbenannt.
- StrokeCap-Enumerierungen in Pascal Case umbenannt
- Die Implementierung von DrawCache wurde aktualisiert, sodass lateinit-Parameter nicht mehr verwendet werden.
- DrawScope wurde aktualisiert, sodass für die internen Parameter „fillPaint“ und „strokePaint“ nicht mehr die lazy Delegation verwendet wird.
- Die Bildkomposition wurde aktualisiert, um die Nutzung von Box zu vermeiden und so den Overhead zu reduzieren.
- Die „Outline“-Klasse wurde um die Anmerkungen „@Immutable“ ergänzt.
- PathNode wurde aktualisiert, um @Immutable-Anmerkungen für jede Pfadanweisung zu haben.
- Die Vektor-Unterkomposition wurde aktualisiert, um redundante bedingte Gleichheitsprüfungen zu entfernen, da diese bereits von „compose“ verarbeitet werden.
- Die Methoden des Rect-Begleiterkonstruktors wurden zugunsten von Funktionskonstruktoren eingestellt.
- Aktualisierte Pinselklassen und Funktionskonstruktoren mit @Immutable- und @Stable-APIs
- VertexMode-Enum in PascalCase geändert
- Die DrawScope-Methode „selectPaint“ wurde aktualisiert, um Strichparameter für die Farbe bedingt zu überschreiben, wenn sie sich geändert haben.
- Die Funktion „Size“ wurde aktualisiert, um die Destrukturierungs-API hinzuzufügen. Außerdem wurde „UnspecifiedSize“ in „Unspecified“ umbenannt und nicht verwendete Methoden entfernt.
Es wurde die MonotonicFrameAnimationClock hinzugefügt, mit der du eine MonotonicFrameClock als AnimationClockObservable verwenden kannst, um die Lücke zwischen den neuen coroutinesbasierten Uhren und APIs zu schließen, die noch die alten callbackbasierten Uhren verwenden.
Das MonotonicFrameClock-Äquivalent von ManualAnimationClock ist jetzt ManualFrameClock. (I111c7, b/161247083)
SemanticsNodeInteraction.performPartialGesture
wurde entfernt. Verwenden Sie stattdessenSemanticsNodeInteraction.performGesture
. (Id9b62)SemanticsNodeInteraction.getBoundsInRoot()
inSemanticsNodeInteraction.getUnclippedBoundsInRoot()
umbenannt (Icafdf, b/161336532)Die APIs für die Unterstützung von rechts nach links wurden aktualisiert. Die Variable „LayoutDirectionAmbient“ wurde hinzugefügt. Mit ihr kann die Layoutrichtung gelesen und geändert werden. Modifier.rtl und Modifier.ltr wurden entfernt. (I080b3)
Modifier.plus wurde eingestellt. Verwenden Sie stattdessen Modifier.then. „Dann“ ist ein stärkeres Signal für die Reihenfolge und verhindert gleichzeitig das Eintippen von
Modifier.padding().background() + anotherModifier
, was die Abfolge unterbricht und die Lesbarkeit erschwert (Iedd58, b/161529964)isFocused()
undisNotFocused()
wurden dem SemanticsMatcher hinzugefügt. (I0b760)RemeasurementModifier wurde hinzugefügt. So können Nutzer das Layout synchron neu vermessen. Im Allgemeinen ist das nicht erforderlich, da das Neumessen und Neulayout automatisch erfolgt. Wir verwenden es jedoch in LazyColumnItems während des Scrollens. (I5f331, b/160791058)
Bei „isSystemInDarkTheme“ wird jetzt immer die systemweite Einstellung für das dunkle Design berücksichtigt. Der Energiesparstatus wird vor Android Q gemäß den neuesten Richtlinien ignoriert. (I0c10c)
„OnChildPositioned“ wurde eingestellt. Verwenden Sie stattdessen „OnPositioned“ auf dem untergeordneten Element. (I87f95, b/162109766)
AndroidComposeTestRule in createAndroidComposeRule umbenannt (I70aaf)
Aktion für Bedienungshilfen hinzufügen, um TextLayoutResult abzurufen (I9d6e6)
Version 0.1.0-dev15
22. Juli 2020
androidx.compose.foundation:foundation:0.1.0-dev15
, androidx.compose.foundation:foundation-layout:0.1.0-dev15
und androidx.compose.foundation:foundation-text:0.1.0-dev15
werden losgelassen. 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:
Aktualisierung von Abhängigkeiten
- Wenn Sie die
0.1.0-dev15
-Version von Compose verwenden möchten, müssen Sie Ihre Abhängigkeiten gemäß den neuen Code-Snippets oben unter Abhängigkeiten deklarieren aktualisieren.
API-Änderungen
- Ähnlich wie der neue Parameter in ScrollableColumn/ScrollableRow haben LazyColumnItems/LazyRowItems jetzt auch den Parameter „contentPadding“, mit dem nach dem Zuschneiden ein Abstand für den Inhalt hinzugefügt werden kann. Das ist mit nur einem Modifiziererparameter nicht möglich. Außerdem können Sie einen Abstand nur vor dem ersten oder nach dem letzten Element hinzufügen. (Ibc24e)
- Der Rückruf „onFocusChange“ in Textfeldern wurde in „onFocusChanged“ umbenannt (Ida4a1)
- VerticalScroller und HoriziontalScroller wurden eingestellt. Verwenden Sie ScrollableColumn und ScrollableRow für integrierte Funktionen mit Spalten-/Zeilenverhalten und -Parametern oder Modifier.verticalScroll und Modifier.horizontalScroll für Ihr eigenes Element. Ebenso wurde „ScrollerPosition“ zugunsten von „ScrollState“ eingestellt (I400ce, b/157225838, b/149460415, b/154105299)
- Die APIs „Modifier.draggable“ und „Modifier.scrollable“ wurden überarbeitet. DragDirection wurde zugunsten von „Orientation“ entfernt. Der für scrollbare Elemente erforderliche Status wurde vereinfacht. ScrollableState wurde in ScrollableController umbenannt (Iab63c, b/149460415)
- Für Properties mit Einzelwertsemantik wird jetzt ein Aufrufstil verwendet.
„semantics { hidden = true }“ wird jetzt beispielsweise so geschrieben:
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412) - Die von „RoundedCornerShape“ und „CutCornerShape“ verwendeten Eckengrößen können jetzt größer als 50 % sein (Id2340, b/160400213)
- Der Standardparameter „ContentScale“ für das Bild-Composit wurde von „Inside“ in „Fit“ geändert. Dadurch soll das Verhalten so eingestellt werden, dass der zugrunde liegende Painter vergrößert wird, wenn die Layoutgröße größer als die Eigengröße des Painters ist, wobei das Seitenverhältnis beibehalten wird. Dieses Verhalten entspricht besser den Erwartungen, wenn für das Bild feste Größen angegeben werden. Das Standardverhalten wird nicht geändert, wenn nur die intrinsische Größe zum Berechnen der Größe des Composeables verwendet wird. (I40ae3, b/159838006)
- In den APIs der obersten Ebene wird jetzt „AnimationSpec“ anstelle von „AnimationBuilder“ verwendet, um das Konzept der statischen Animationsspezifikation zu verdeutlichen. Stattdessen werden die Konstruktorparameter direkt übernommen. – Verbesserte Nutzerfreundlichkeit von AnimationSpec durch die Öffnung von Konstruktoren anstelle der Verwendung von Buildern (Ica0b4)
- „Anklickbar“ wurde entfernt. Modifier.clickable (I84bdf) verwenden
- LazyRowItems hinzugefügt – horizontal scrollbariges Analogon zu LazyColumnItems (Ibbcf7)
- Einführung von zustandslosen Animations-APIs auf niedriger Ebene. Diese APIs (I63bf7)
- androidx.ui.foundation.TextFieldValue und androidx.ui.input.EditorValue wurden eingestellt. Die Composeables „TextField“, „FilledTextField“ und „CoreTextField“, die diesen Typ verwenden, werden ebenfalls eingestellt. Verwenden Sie stattdessen androidx.ui.input.TextFieldValue (I4066d, b/155211005).
- IntPx wurde durch Int ersetzt. IntPxPosition wurde durch IntOffset ersetzt. IntPxSize durch IntSize ersetzt (Ib7b44)
- androidx.ui.foundation.shape.RectangleShape wurde entfernt; verwenden Sie stattdessen androidx.ui.graphics.RectangleShape (I94939, b/154507984)
- Um die Anzahl der Klassen zu reduzieren, die zur Darstellung von Größeninformationen verwendet werden, sollten Sie die Verwendung der Klasse „Size“ anstelle von „PxSize“ standardisieren. Dies bietet die Vorteile einer Inline-Klasse, bei der ein Long-Wert verwendet wird, um zwei Float-Werte für Breite und Höhe zu verpacken. (Ic0191)
- Um die Anzahl der Klassen zu reduzieren, die zur Darstellung von Positionierungsinformationen verwendet werden, sollten Sie stattdessen die Klasse „Offset“ verwenden. Dies bietet die Vorteile einer Inline-Klasse, um mit einem Long-Wert zwei Gleitkommawerte zu verpacken, die X- und Y-Achsenabweichungen als Gleitkommawerte darstellen. (I3ad98)
- Modifikator „zoomable“ für die Funktion „Zum Heranzoomen zusammenziehen und auseinanderziehen“ hinzugefügt (Id5d63)
- Die schaltbare Komponente wurde eingestellt. Verwenden Sie stattdessen „Modifier.toggleable“ (I35220, b/157642842).
- „MutuallyExclusiveSetItem“ wurde eingestellt. Verwenden Sie stattdessen „Modifier.selectable“. (I02b47, b/157642842)
- TestTag ist jetzt eingestellt. Verwenden Sie stattdessen „Modifier.testTag“. (If5110, b/157173105)
- Dem Text wird der Parameter „fontWeight“ hinzugefügt, der zuvor versehentlich nicht hinzugefügt wurde (I56937)
- Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen der umfangreichen Refaktorierung ersetzt, um nur noch Dp- und primitive Typen für Pixelparameter zu verwenden (I19d02)
- VerticalScroller bietet jetzt standardmäßig die Spalte. HorizontalScroller bietet jetzt standardmäßig die Option „Zeile“. (Ieca5d, b/157020670)
- Die Verwendung der Px-Klasse in verschiedenen zusammengesetzten Klassen wurde im Rahmen der umfangreichen Refaktorierung ersetzt, um nur noch Dp- und primitive Typen für Pixelparameter zu verwenden (Iede0b)
- „Modifier.indication“ wurde dem Basispaket hinzugefügt. Mit diesem Attribut können Sie eine entsprechende Anzeige für Ihre benutzerdefinierten interaktiven Elemente einblenden (I8425f, b/155287131).
- VerticalScroller und HorizontalScroller unterstützen jetzt das umgekehrte Scrollen, wenn „isReversed“ auf „ScrollerPosition“ festgelegt ist (I953bd)
- Unterstützung für das Hinzufügen von Composeables in das Textlayout (I1373c)
- CanvasScope-Implementierungen wurden konsolidiert. Es gibt jetzt nur noch DrawScope und ContentDrawScope. DrawScope wurde aktualisiert, um die Density-Oberfläche zu implementieren und LayoutDirection bereitzustellen. Die DrawScope-Unterklasse wurde aus ContentDrawScope entfernt. Painter und PainterModifier wurden aktualisiert, damit sie keine RTL-Eigenschaft mehr selbst verwalten, da DrawScope diese bereits ohne manuelle Angabe bereitstellt (I1798e)
- Die verworfene DrawBackground API wurde zugunsten der drawBackground-Erweiterungs-APIs für Modifier entfernt. Die Implementierungen von „color“, „brush“ und „paint drawBackground“ wurden überarbeitet, um Codepfade zu reduzieren und die Anforderung zu entfernen, dass Modifier als Teil der Komposition erstellt werden müssen. (I0343a)
- Compose APIs der höheren Ebene, die einen Canvas bereitstellen, wurden aktualisiert, um stattdessen CanvasScope bereitzustellen. So müssen Nutzer keine eigenen Paint-Objekte mehr verwalten. Nutzer, die weiterhin Zugriff auf ein Canvas benötigen, können die Erweiterungsmethode „drawCanvas“ verwenden. Diese bietet einen Rückruf, um Zeichenbefehle für das zugrunde liegende Canvas auszugeben. (I80afd)
- Die Scrollposition von HorizontalScroller und VerticalScroller wird nicht mit dem gespeicherten Instanzstatus wiederhergestellt. (Ia0fae, b/155075048)
- FocusManagerAmbient wurde entfernt. Verwenden Sie FocusModifier.requestFocus, um den Fokus zu erhalten. (Ic4826)
- Das Tabellenlayout wurde vorübergehend entfernt. Es wird mit einer aktualisierten API wieder verfügbar sein. (Id88a7)
CanvasScope API erstellt, die ein Canvas-Objekt umschließt, um eine zustandslose, deklarative API-Oberfläche für die Zeichnung bereitzustellen Transformationen sind auf ihren eigenen Empfängerbereich beschränkt und die Informationen zur Größe beziehen sich ebenfalls auf die entsprechenden Einblendungsgrenzen. Der Verbraucher muss kein eigenes Paint-Statusobjekt zum Konfigurieren von Zeichenvorgängen verwalten.
CanvasScopeSample hinzugefügt und die Demo-App um eine deklarative Grafikdemo (Ifd86d) erweitert
„ColoredRect“ wurde entfernt. User Box mit dem Modifikator „drawBackground“ (I983c7, b/152753731)
Dem Textfeld eine Anpassung der Cursorfarbe hinzufügen (I6e33f)
Es ist jetzt möglich, die Softwaretastatur mithilfe von SoftwareKeyboardController auszublenden/einblenden, der über den Rückruf onTextInputStarted gesendet wird (I8dc44, b/151860051)
TextFieldValue, das mit TextField verwendet wird, kann jetzt bei der Aktivitätswiederherstellung erhalten bleiben, wenn es so verwendet wird:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
(I5c3ce, b/155075724)Häufig verwendete Parameter werden Text() hinzugefügt. Wenn Sie gerade einen lokalen Textstil erstellen, um eine kleine Anzahl dieser Parameter wie
Text(style = TextStyle(textAlign = TextAlign.Center))
zu übergeben, können Sie die Parameter jetzt direkt angeben:Text(textAlign = TextAlign.Center)
(I82768)Der Parameter „focusIdentifier“ von CoreTextField/TextField wurde durch „FocusNode“ ersetzt, um die Integration in das Fokus-Subsystem zu ermöglichen. (I7ea48)
Aktualisierung des Textfelds: In der horizontalen Dimension nimmt es den gesamten verfügbaren Platz ein (Ib08df, b/154638552)
Die neuen Properties „InteractionState“ und „Interaction“ erleichtern das Erstellen von Komponenten, die auf Änderungen des UI-Status reagieren, z. B. auf Drücken und Ziehen (Icfe25, b/152525426)
RectangleShape wurde von androidx.ui.foundation.shape.* zu androidx.ui.graphics.* verschoben (Ia74d5, b/154507984)
Alle nullablen Farbverwendungen in der API wurden durch nicht nullable ersetzt und Color.Unset wird anstelle von null verwendet (Iabaa7)
Aktualisierung der TextField API: Die Callbacks „onFocus“ und „onBlur“ wurden in einen einzigen Callback „onFocusChange(Boolean)“ mit Parametern zusammengeführt (I66cd3)
„ScaleFit“ in „ContentScale“ umbenannt „ContentScale“ aus dem ui-graphics-Modul in das ui-core-Modul verschoben, damit es sich im selben Modul wie die Alignment API befindet „FillMaxDimension“ in „Zuschneiden“ umbenannt „FillMinDimension“ in „Anpassen“ umbenannt „Anpassen“ in „Innen“ umbenannt, um besser zu den Entsprechungen von ImageView.ScaleType zu passen Hinweise hinzugefügt, dass die Kombination aus „Zuschneiden“ und „Ausrichtung.Mitte“ dasselbe Ergebnis wie ImageView.ScaleType.CENTER_CROP erzielt und „Anpassen“ in Kombination mit „Ausrichtung.Mitte“ dasselbe Ergebnis wie ImageView.ScaleType.FIT_CENTER und „Innen“ in Kombination mit „Ausrichtung.Mitte“ dasselbe Ergebnis wie ImageView.ScaleType.CENTER_INSIDE erzielt (I45f09, b/152842521)
„ProvideContentColor“ wird entfernt. Verwenden Sie stattdessen einfach „ContentColorAmbient“ direkt mit
Providers
(Iee942).Fügen Sie dem Text einen Farbparameter hinzu, um die Farbe des Textstils zu überschreiben, ohne ihn manuell mit dem im Design enthaltenen Stil zusammenführen zu müssen. (I41a66)
Verbesserungen an der DrawModifier API:
- Der Empfängerbereich für draw() wurde zu ContentDrawScope geändert.
- Alle Parameter für „draw()“ entfernt
- DrawScope hat dieselbe Oberfläche wie das bisherige CanvasScope
- ContentDrawScope hat die Methode „drawContent()“ (Ibaced, b/152919067)
„ColoredRect“ wurde eingestellt. Verwenden Sie stattdessen
Box(Modifier.preferredSize(width, height).drawBackground(color))
. (I499fa, b/152753731)Das Farbsystem wird gemäß der Material Design-Spezifikation aktualisiert. Sie können jetzt kleine, mittlere und große Formen für die meisten Komponenten bereitstellen (Ifb4d1).
Der Modifikator-Plus-Operator wurde durch Funktionen der werkseitigen Erweiterung ersetzt (I225e4)
„Draggable“ wurde in „Modifier“ verschoben (Id9b16, b/151959544)
Text
wurde aus dem Paket „androidx.ui.core“ in das Paket „androidx.ui.foundation“ verschoben. (I87ce5)enabled
-Parameter zu Kästchen, Schaltern und Ein-/Aus-Schaltflächen hinzufügen (I41c16)„Ripple“ ist jetzt ein Modifikator. „Clickable“ wird 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 Subkomposition API für Vektorgrafiken zu ersetzen. Das Ergebnis der Unterkomposition ist ein VectorPainter-Objekt anstelle eines DrawModifier-Objekts. Die bisherigen DrawVector-Kompositionen wurden zugunsten von VectorPainter eingestellt.
Image(Painter)
API inPaintBox(Painter)
umbenannt Erstellung eines Vektor-Kompositionselements, das sich wie das Bild-Kompositionselement verhält, jedoch mit einem VectorAsset anstelle eines ImageAssets (I9af9a, b/149030271)Die Bildkomponente wurde erstellt, um die Größe und das Layout zu steuern und ein bestimmtes Bild-Asset auf dem Bildschirm zu zeichnen. Diese Komponente unterstützt auch das Zeichnen beliebiger Painter-Instanzen unter Berücksichtigung ihrer eigenen Größe sowie einer bestimmten festen Größe oder Mindestgröße (Ibcc8f).
Für „Button“, „FloatingActionButton“ und „Clickable“ gibt es jetzt eine separate
enabled
-Paramter. Einige der Parameter für die Schaltfläche wurden umbenannt oder neu angeordnet. (I54b5a)„Image“ in „ImageAsset“ umbenannt, um den Unterschied zwischen den Bilddaten und dem anstehenden Bild-Komposit besser zu unterscheiden, das für das Layout und zum Zeichnen von Inhalten verwendet wird.
Es wurde eine Erweiterungsmethode für android.graphics.Bitmap
Bitmap.asImageAsset()
erstellt, um eine Instanz eines ImageAsset zu erstellen. Diese ist nützlich, um die traditionelle Entwicklung von Android-Anwendungen mit dem Compose-Framework zu kombinieren. (Id5bbd)Das composable „DrawImage“ wurde entfernt. Mit ImagePainter ein Bild in ein vorhandenes Layout zeichnen oder mit SimpleImage ein Bild einfügen, das Platz einnimmt (I595e1, b/149827027)
Stapelkomponente unterstützt die Richtungsvorgabe von rechts nach links (Ic9e00)
Die Symbole „Icon“, „IconButton“ und „IconToggleButton“ wurden hinzugefügt und „AppBarIcon“ entfernt. Sie können vorhandene Verwendungen von AppBarIcon direkt durch IconButton ersetzen. Diese haben dann das richtige Touch-Ziel. In den Beispielen finden Sie Informationen zur Verwendung. Unter „Symbole“ finden Sie die bereitgestellten Material Icons, die Sie direkt mit diesen Komponenten verwenden können. (I96849)
Das composable „DrawShape“ wurde entfernt. Verwenden Sie stattdessen den Modifikator „DrawBackground“. (I7ceb2)
AdapterList wurde hinzugefügt, eine scrollbare Listenkomponente, die nur die sichtbaren Elemente zusammenstellt und anordnet. Zu den derzeit bekannten Problemen gehört, dass die Funktion nur für vertikale Channels verfügbar ist und nicht alle Änderungen an untergeordneten Channels berücksichtigt. (Ib351b)
Die scrollbare Komponente wurde hinzugefügt, mit der benutzerdefinierte Scroller/Listen erstellt werden können (I5fd37)
Der Hintergrund wurde in „DrawBackground“ umbenannt und standardmäßig gespeichert (Ia0bd3).
Dem Feld „Box“ die Parameter „Abstand“, „Rahmen“, „Form“ und „Hintergrund“ hinzufügen (I05027, b/148147281)
Canvas-Komponente hinzugefügt. Dieses Composeable nimmt eine gewisse Größe ein (vom Nutzer angegeben) und ermöglicht das Zeichnen mit CanvasScope (I0d622).
Border
-Modifikator inDrawBorder
umbenannt (I8ffcc)Die Box-Komponente wurde hinzugefügt, um Layout- und Zeichenfunktionen zu kombinieren. (I6e2a7)
Scroller zeigen jetzt das native Android-Fling-Bewegungsverhalten. (I922af, b/147493715)
„DrawBorder“ durch „Border Modifier“ ersetzt (Id335a)
„Modifier.tag“ wurde in „Modifier.layoutId“ umbenannt, um Verwechslungen mit „Modifier.testTag“ zu vermeiden. (I995f0)
Der Prozentsatzparameter beim Erstellen von ConstraintLayout-Richtlinien wurde in „Bruch“ umbenannt. (Ida2db)
Unterstützung für Ränder von ConstraintLayout-Grenzen hinzugefügt (I47ffe)
Die Unterstützung für die RTL-Ausrichtung in ConstraintLayout wurde verbessert. APIs ohne RTL-Unterstützung hinzugefügt (I3b1c7)
Es wurde eine neue DSL für ConstraintLayout hinzugefügt. Weitere Informationen finden Sie in den Beispielen. (Icaa9a)
Die Anmerkung @ExperimentalLayout wurde hinzugefügt. ConstraintLayout, FlowRow und FlowColumn sind jetzt mit diesem Tag gekennzeichnet, um anzuzeigen, dass sich ihre APIs ändern werden. (I412a8)
Modifier.padding(InnerPadding)
wurde hinzugefügt (I94985, b/157133803)Die eingestellten Optionen „RowAlign“ und „ColumnAlign“ in „Zeile“ und „Spalte“ wurden entfernt. (If60d4, b/155858731)
Das veraltete LayoutTag() wurde entfernt. Verwenden Sie stattdessen Modifier.tag(). Das eingestellte Modifier.matchParent() wurde entfernt. Verwenden Sie stattdessen Modifier.matchParentSize(). (If8044)
Der Layout-Modifikator „offsetPx“ wurde hinzugefügt, mit dem (dynamische) Abstände in Pixeln definiert werden können. (I5af57)
Das composable-Element „AlignmentLineOffset“ wurde eingestellt. Verwenden Sie stattdessen den Modifikator „relativePaddingFrom()“. Das composable „CenterAlignmentLine“ wurde entfernt. (I60107)
Der Layout-Modifikator „defaultMinSizeConstraints“ wurde hinzugefügt. Er legt Größenbeschränkungen für das umgebrochene Layout nur dann fest, wenn die entsprechenden eingehenden Einschränkungen nicht angegeben sind (0 für Mindesteinschränkungen und unendlich für Höchsteinschränkungen). (I311ea, b/150460257)
Container wurde entfernt. Verwenden Sie stattdessen Box (Ibbc2b, b/151407926).
Die eingestellten Modifikatoren „LayoutWidth“, „Height“ und „Size“ wurden entfernt. (Ib0bc1)
Es wurden Standardparameterwerte für den Offset-Modifikator hinzugefügt. (I37f06)
Modifikator für symmetrisches Padding hinzugefügt. (I39840)
Der veraltete Modifikator „LayoutAspectRatio“ wurde entfernt. (I65a74)
Die nicht mehr unterstützten LayoutAlign-Modifizierer wurden entfernt. (I10877)
Ein Fehler in den Modifikatoren für Breite und Höhe wurde behoben, der dazu führte, dass das umgebrochene Layout ohne Einschränkungen der gegenüberliegenden Achse gemessen wurde. (I210b8, b/154797971)
Den Parametern „verticalGravity“ und „horizontalGravity“ wurden die Optionen „Zeile“ und „Spalte“ hinzugefügt. (I7dc5a)
„wrapContentWidth“ und „wrapContentHeight“ wurden aktualisiert, damit statt „Alignment“ eine vertikale oder horizontale Ausrichtung erwartet wird. Der Gravitationsmodifikator wurde aktualisiert, um eine vertikale oder horizontale Ausrichtung zuzulassen. „Zeile“, „Spalte“ und „Stapel“ wurden aktualisiert, um benutzerdefinierte kontinuierliche Ausrichtungen zu unterstützen. (Ib0728)
Ausrichtung kann jetzt 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)
Für „alignToSiblings“ kann jetzt ein „Gemessen“ anstelle eines „Platzierbaren“ verwendet werden. (I5788d)
Es wurden Modifikatoren für die Größe zu den intrinsischen Messwerten hinzugefügt und die Komponenten, die diesem Zweck dienten, eingestellt. (I8295d)
Unterstützung für die Anpassung der Abmessungen von untergeordneten Elementen von ConstraintLayout hinzugefügt (Idb1a5)
Die veralteten Composeables „Umbruch“ und „Zentriert“ wurden entfernt. (I29e23)
LayoutModifier2 wurde hinzugefügt, eine neue API zum Definieren von Layoutmodifikatoren. LayoutModifier (If32ac) wurde eingestellt.
Auf Mitglieder von „RowScope“ und „ColumnScope“ kann jetzt auch außerhalb von „Row“ und „Column“ zugegriffen werden. (I3a641)
Container wurde eingestellt. Verwenden Sie stattdessen Box. (I675ce, b/151407926)
Der Modifikator „LayoutOffset“ wurde hinzugefügt, um die Layoutposition zu verschieben (I0b8a3)
Erste Unterstützung für RTL im Compose-Layout (Ia5519)
LayoutAlign wurde aktualisiert, damit der verfügbare Bereich nicht mehr ausgefüllt wird (I2b14f)
„AspectRatio“-Komposition wurde zugunsten des Modifiers entfernt. Die veralteten FlexColumn- und FlexRow-Kompositionen sowie der Spacing-Modifikator wurden entfernt (Iec8a7).
Der Modifikator „LayoutInflexible“ für Zeilen und Spalten wurde entfernt (I0d820)
Implementieren Sie Ziehpunkte für die Auswahl, um die Auswahl für das Textfeld zu ändern. (I27032)
Implementiert „LongPressAndDrag“ für die Textfeldauswahl. (I17919)
Fehlerkorrekturen
- FocusModifier wurde zugunsten von Modifier.focus, Modifier.focusRequester und Modifier.focusObserver eingestellt. „FocusState“ und „FocusDetailedState“ werden zugunsten von „FocusState2“ eingestellt (I46919, b/160822875, b/160922136)
runOnIdleCompose
inrunOnIdle
umbenannt (I83607)- Mehrere Test-APIs wurden umbenannt, um sie intuitiver zu gestalten. Alle APIs vom Typ „findXYZ“ wurden in „onNodeXYZ“ umbenannt. Alle APIs vom Typ „doXYZ“ wurden in „performXYZ“ umbenannt. (I7f164)
- Die zuvor eingestellte Option „Modifier.ripple“ wurde entfernt. Bei „Clickable“ wird jetzt die Ripple-Funktion als Standardhinweis verwendet (sofern in Ihrer Anwendung ein MaterialTheme {} festgelegt ist). In den meisten Fällen können Sie also einfach „Clickable“ verwenden und erhalten die Ripple-Funktion kostenlos. Wenn Sie den Parameter „Farbe“, „Größe“ oder „Begrenzt“ für die Ripple-Animation anpassen möchten, können Sie eine Ripple-Anzeige manuell erstellen und als Parameter „Anzeige“ an „klickbar“ übergeben. (I663b2, b/155375067)
- Veraltete APIs für die Größenprüfung wurden entfernt. (Iba0a0)
- LayoutNode ist jetzt eine experimentelle API (I4f2e9)
- Version 1 der Sperre für die Scrollrichtung ist in Compose implementiert. (I1ce7a, b/150289741)
- Pop-ups, Dialogfelder und Menüs übernehmen jetzt das kontextbezogene MaterialTheme (Ia3665, b/156527485)
- Der Parameter „Layoutrichtung“ wurde aus dem Messblock der Funktion „Layout()“ entfernt. Die Layoutrichtung ist jedoch im Callback über das Objekt „Measure Scope“ (Ic7d9d) verfügbar.
- AbsoluteArrangement hinzufügen: Ermöglicht die Anordnung der untergeordneten Elemente innerhalb der Zeile ohne automatische Spiegelung in RTL (I3a1df)
- Die Anmerkung „@Untracked“ wurde eingestellt. Ersetzen Sie den Code durch @ComposableContract(tracked=false) (Id211e).
- Vor dieser Änderung hat das Compose-Compiler-Plug-in Aufrufe an Konstruktoren innerhalb einer @Composable-Funktion nicht trivial abgefangen, wenn ein (I5205a, b/158123804)
- Fügen Sie
viewModel()
hinzu, mit dem Sie ein ViewModel erstellen oder ein bereits erstelltes ViewModel abrufen können, ähnlich wie in einer Aktivität oder einem Fragment (I5fdd1). Die Radius-Klasse wurde in eine Inline-Klasse umgestellt. Die Methoden zum Erstellen von Zusatzfunktionen wurden entfernt und durch einen Funktionskonstruktor mit Standardparameter ersetzt, damit der Radius entlang der Y-Achse mit dem obligatorischen Radiusparameter der X-Achse übereinstimmt.
DrawScope.drawRoundRect wurde aktualisiert, sodass jetzt ein einzelner Radiusparameter anstelle von zwei separaten Float-Werten für den Radius entlang der X- und Y-Achse verwendet wird (I46d1b)
Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen der umfangreichen Refaktorierung ersetzt, um nur noch Dp- und primitive Typen für Pixelparameter zu verwenden. Die Px-Klasse wurde vollständig gelöscht (I3ff33).
Die Verwendung der Px-Klasse in verschiedenen zusammengesetzten Klassen wurde im Rahmen der umfangreichen Refaktorisierung ersetzt, um nur noch Dp und primitive Typen für Pixelparameter zu verwenden (I086f4)
Die Verwendung der Px-Klasse in verschiedenen Compose-Klassen wurde im Rahmen der umfangreichen Refactoring-Bemühungen durch Dp- und primitive Typen für Pixelparameter ersetzt (Id3434)
Die Verwendung der Px-Klasse in verschiedenen zusammengesetzten Klassen wurde im Rahmen der umfangreichen Refaktorierung ersetzt, sodass nur noch Dp- und primitive Typen für Pixelparameter verwendet werden (I97a5a)
Der Cursor des Textfelds hat eine blinkende Animation (Id10a7)
Für teilweise Touch-Gesten muss kein GestureToken mehr übergeben werden (Id7ae5)
Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen der umfangreichen Refaktorisierung ersetzt, um nur noch Dp- und primitive Typen für Pixelparameter zu verwenden (I57bff)
Modifier.semantics wurde nicht mehr als veraltet eingestuft, um die Verwendung für allgemeine Komponenten zu ermöglichen. (I4cfdc)
Rename AnnotatedString.Builder.addAnnotationString to addStringAnnotation. (I5059e)
Die Alignment API wurde aktualisiert und die Unterstützung für die absolute Ausrichtung hinzugefügt, die im RTL-Kontext nicht automatisch gespiegelt wird (I38cd3)
Layout- und LayoutModifier-Unterelemente können mit einer anderen Layoutrichtung gemessen werden. (Ibd731)
Einführung eines zusätzlichen optionalen Rechteckparameters für ImagePainter, um einen Teil des zugrunde liegenden ImageAssets zu zeichnen (I0ea9e)
Ein Absturz in AdapterList beim Entfernen von Elementen wurde behoben (Ic64b0, b/153195921)
Wir haben die Art und Weise geändert, wie das erste Layout gemessen wird, das Sie in den activity.setContent { }-Block einfügen. Bisher musste das Layout den gesamten Aktivitätsbildschirm ausfüllen. Jetzt verhält es sich so, als würden Sie Ihr Layout in einen Stapel einfügen: Es kann kleiner als ein Bildschirm sein und wird oben links auf dem Display platziert. Wenn Sie das alte Verhalten wünschen, 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 Composables „CoreText“ und „CoreTextField“ (Ib7d47)
Das Modul „ui-text“ wurde in „ui-text-core“ umbenannt (I57dec).
Die ui-framework/CoreText- und CoreTextField-Kompositen wurden in ui-text-compose verschoben. Sie können ui-text-compose in Ihr Projekt aufnehmen. (I32042)
runOnIdleCompose
undrunOnUiThread
sind jetzt globale Funktionen anstelle von Methoden in ComposeTestRule. (Icbe8f)[Veränderlich]Operatoren für die Deklaration von Statuseigenschaften wurden in Erweiterungen verschoben, um die Optimierung von Property Delegate-Funktionen in Kotlin 1.4 zu unterstützen. Anrufer müssen Importe hinzufügen, um
by state { ... }
oderby mutableStateOf(...)
weiterhin verwenden zu können. (I5312c)Bei DrawLayerModifier und drawLayer() sind „clipToBounds“ und „clipToOutline“ jetzt standardmäßig auf „false“ festgelegt. (I0eb8b, b/152810850)
„LayoutResult“ in „MeasureResult“ umbenannt. (Id8c68)
Eingestellte Center-Kompositionen Er sollte entweder durch den Modifizierer „LayoutSize.Fill“ + „LayoutAlign.Center“ oder durch eines der Box- oder Stack-Kompositionen mit geeigneten Modifizierern ersetzt werden (Idf5e0).
„LayoutFlexible“ in „LayoutWeight“ umbenannt. Der Parameter „tight“ wurde in „fill“ umbenannt. (If4738)
DrawVector wurde von einer regulären kombinierbaren Funktion in einen Modifikator umgewandelt, der drawVector() zurückgibt, um den Vektor als Hintergrund für ein Layout zu zeichnen. (I7b8e0)
Ersetzen Sie die zusammensetzbare Funktion „Clip“ durch den Modifikator „drawClip()“. „DrawClipToBounds“ ist ein praktischer Modifikator, wenn Sie nur die Ebenengrenzen mit einem Rechteck zuschneiden müssen. (If28eb)
Die composable Funktion „DrawShadow“ wurde durch den Modifikator „drawShadow()“ ersetzt. Schatten werden jetzt als Teil von „LayerModifier“ gezeichnet. (I0317a)
androidx.compose.ViewComposer wurde zu androidx.ui.node.UiComposer verschoben und androidx.compose.Emittable wurde entfernt. Es war mit ComponentNode redundant. androidx.compose.ViewAdapters wurde entfernt. Dieser Anwendungsfall wird nicht mehr unterstützt. Compose.composeInto wurde eingestellt. Verwenden Sie stattdessen
setContent
odersetViewContent
. Compose.disposeComposition wurde eingestellt. Verwenden Sie stattdessen die Methodedispose
auf dem vonsetContent
zurückgegebenenComposition
. androidx.compose.Compose.subcomposeInto wurde in androidx.ui.core.subcomposeInto verschoben ComponentNode#emitInsertAt wurde in ComponentNode#insertAt umbenannt ComponentNode#emitRemoveAt wurde in ComponentNode#removeAt umbenannt ComponentNode#emitMode wurde in ComponentNode#move umbenannt (Idef00)Die Funktion „Wrap“ (Umbruch) ist nicht mehr verfügbar. Er kann entweder durch den LayoutAlign-Modifikator oder durch das Stack-Kompositelement (Ib237f) ersetzt werden.
Die Layoutrichtung wird jetzt vom übergeordneten Layoutknoten an die untergeordneten Knoten weitergegeben. Modus für die Layoutrichtung hinzugefügt. (I3d955)
Benennen Sie Painter.toModifier in Painter.asModifier um, da der neu erstellte Modifier einen Verweis auf den ursprünglichen Painter hat, der für mehrere Modifier-Instanzen freigegeben werden kann (I7195b)
Unterstützung der Ausrichtung von rechts nach links im LayoutPadding-Modifikator (I9e8da)
Density und DensityScope wurden in einer Benutzeroberfläche zusammengeführt. Anstelle von „ambientDensity()“ können Sie jetzt „DensityAmbient.current“ verwenden. Statt „withDensity(density)“ einfach „with(density)“ verwenden (I11cb1)
Die Klasse „ValueHolder“ wurde entfernt. Die Klassen „AnimatedValue“ und „AnimatedFloat“ wurden neu strukturiert, um das Feld für den Animationswert abstrakt zu machen, damit Unterklassen die Wertaktualisierung beobachten können.
- Es wurden Modellklassen für „AnimatedValue“, „AnimatedFloat“ usw. hinzugefügt.
- Es wurde eine neue Reihe von schlanken @Composable API-Funktionen zum Animieren zwischen Werten hinzugefügt.
- (I79530)
Funktionsgefährdende Änderungen an der Ambients API Weitere Informationen finden Sie im Log und in der
Ambient<T>
-Dokumentation (I4c7ee, b/143769776).Die Ganzzahlpositionen der Ausrichtungslinie, die von „Placeable#get(AlignmentLine)“ zurückgegeben werden, sind jetzt nicht mehr null. Wenn die abgefragte Ausrichtungslinie fehlt, wird „AlignmentLine.Unspecified“ zurückgegeben. (I896c5, b/158134875)
Ein Fehler in ConstraintLayout, der bei Neuzusammensetzungen zu Abstürzen führte, wurde behoben. (Ibee5a, b/158164341)
Die API für die abschließende Lambda-Funktion „WithConstraints“ wurde geändert. Anstelle von zwei Parametern gibt es jetzt einen Empfängerbereich, der zusätzlich zu „constraints“ und „layoutDirection“ die Eigenschaften „minWidth“, „maxWidth“, „minHeight“ und „maxHeight“ in Dp enthält (I91b9a, b/149979702)
LayoutModifier2 in LayoutModifier umbenannt (Id29f3)
Die Funktionen für intrinsische Messungen in „Layout“ und „LayoutModifier2“ haben jetzt einen Empfänger für „IntrinsicMeasureScope“, der die intrinsische Abfrage-API mit implizit weitergegebener Layoutrichtung bereitstellt. (Id9945)
LayoutDirectionAmbient wird nicht mehr unterstützt. Um die vom Gebietsschema definierte Layoutrichtung zu lesen, verwenden Sie „localeLayoutDirection“ auf „ConfigurationAmbient“ (I851b1).
„positionInParent“ und „boundsInParent“ für „LayoutCoordinates“ hinzugefügt (Icacdd, b/152735784)
Das composable-Element „ParentData“ wird nicht mehr unterstützt. Sie sollten entweder einen Modifikator erstellen, der die ParentDataModifier-Schnittstelle implementiert, oder den LayoutTag-Modifikator verwenden, wenn Sie einfach Layout-Kinder taggen müssen, damit sie im Messblock erkannt werden. (I51368, b/150953183)
Fügen Sie „OnPositionedModifier“ und „OnChildPositionedModifier“ hinzu, um die composable-Funktionen „OnPositioned“ und „OnChildPositioned“ zu ersetzen. (I2ec8f)
Negative Ränder in LayoutPadding sind nicht zulässig. Für negative Positionierungsabstände sollte stattdessen „LayoutOffset“ verwendet werden. (Ifb5b1)
„WithConstraints“ hat den Parameter „LayoutDirection“ erhalten (I6d6f7)
Das Flag
ComposeFlags.COMPOSER_PARAM
wurde intrue
geändert. Dadurch ändert sich die Codegenerierungsstrategie für das Compose-Plug-in. Im Allgemeinen führt dies dazu, dass @Composable-Funktionen mit einem zusätzlichen synthetischen Parameter generiert werden, der an nachfolgende @Composable-Aufrufe übergeben wird, damit die Laufzeit die Ausführung richtig verwalten kann. Dies ist eine erhebliche Änderung, die die Binärkompatibilität jedoch bei allen zulässigen Verwendungen von compose beibehalten sollte. (I7971c)Bei „LayoutCoordinates“ wurde geändert, dass „providedAlignmentLines“ ein Set anstelle einer Map ist und dass „LayoutCoordinates“ den Operator „get()“ zum Abrufen eines Werts implementiert. So können Modifikatoren einen oder mehrere Werte des Sets leichter ändern, ohne für jeden Modifikator eine neue Sammlung erstellen zu müssen. (I0245a)
LayoutCoordinates hat keine Positionseigenschaft mehr. Die Eigenschaft „position“ ist bei Layout-Modifizierern, Drehungen oder Skalierungen nicht sinnvoll. Stattdessen sollten Entwickler „parentCoordinates“ und „childToLocal()“ verwenden, um die Transformation von einer Layoutkoordinate in eine andere zu berechnen.
Bei „LayoutCoordinates“ wird für die Größe die Property „IntPxSize“ anstelle von „PxSize“ verwendet. Für Layouts werden Ganzzahlpixelgröß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 hinzugefügt (I48f36)
Passen Sie das Symbolleistenmenü so an, dass die Optionen „Kopieren“, „Ausschneiden“ und „Einfügen“ richtig angezeigt werden. (Id3955)
FloatingToolbar für die Textfeldauswahl hinzufügen (Ie8b07)
TextDirectionAlgorithm in TextDirection umbenannt (I75ce8)
„TextDirection“ in „ResolvedTextDirection“ umbenannt (I3ff38)
Fügen Sie der Textfeldauswahl „HapticFeedback“ hinzu. (I58050)
Fügen Sie der Auswahl des Textfelds die Methoden „Kopieren“, „Ausschneiden“ und „Einfügen“ hinzu. (Idb70b)
TestTag und Semantics wurden gelöscht. Verwenden Sie stattdessen Modifier.testTag und Modifier.semantics (I15ff0, b/158841414).
Der Paketname für „Locale“ und „LocaleList“ wurde von „androidx.ui.text“ in „androidx.ui.intl“ geändert (I8132c)
API-Änderung:
AnnotatedString(builder: Builder)
wird inannotatedString(builder: Builder)
umbenannt. (Ia6377)API-Änderung:
AnnotatedString.Item
wird inAnnotatedString.Range
umbenannt. (I2d44d)Symbolleiste für textbezogene Vorgänge hinzufügen (I49d53)
Die neue Variable „LifecycleOwnerAmbient“ ist jetzt verfügbar. Eine Aktivität, die Sie mit der Compose-Benutzeroberfläche verwenden, sollte jetzt androidx.activity.ComponentActivity (oder AppCompatActivity) erweitern. setContent auf android.app.Activity ist jetzt eingestellt (Idb25a, b/153141084)
Der Paketname „ui-android-text“ (androidx.text) wurde durch „androidx.ui.text.platform“ ersetzt, um den androidx-Richtlinien zu entsprechen. (I42711)