Grundlagen verfassen
Erstellen Sie Jetpack Compose-Anwendungen mit vorgefertigten Bausteinen und erweitern Sie die Grundlage, um eigene Designsystem-Elemente zu erstellen.
Letzte Aktualisierung Stabile Version Release Candidate Beta-Ausgabe Alphaversion
30. Oktober 2024 1,7,5 - - 1.8.0-alpha05

Struktur

Compose ist eine Kombination aus sieben Maven-Gruppen-IDs in androidx. Jede Gruppe umfasst eine bestimmte Teilmenge von Funktionen mit jeweils eigenen Versionshinweisen.

In dieser Tabelle werden die Gruppen und Links zu den einzelnen Versionshinweisen erläutert.

GruppeBeschreibung
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.foundationErstellen Sie Jetpack Compose-Anwendungen mit vorgefertigten Bausteinen und erweitern Sie die Grundlage, um eigene Designsystem-Elemente zu erstellen.
compose.materialJetpack Compose-UIs mit einsatzbereiten Material Design-Komponenten erstellen Dies ist der übergeordnete Einstiegspunkt von Compose. Er wurde entwickelt, um Komponenten bereitzustellen, die denen auf www.material.io entsprechen.
compose.material3Erstellen Sie Jetpack Compose-UIs mit Material Design 3-Komponenten, der nächsten Weiterentwicklung von Material Design. Material 3 enthält aktualisierte Designs und Komponenten sowie Funktionen zur Personalisierung von Material You wie dynamische Farben. Das Produkt wurde so gestaltet, dass es zum visuellen Stil und zur System-UI von Android 12 passt.
compose.runtimeGrundlegende Bausteine des Programmiermodells und der Statusverwaltung von Compose sowie die Kernlaufzeit, auf die das Compose-Compiler-Plug-in ausgerichtet ist.
compose.uiGrundlegende 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 Anwendung oder Ihr Modul die Abhängigkeiten für die Artefakte hinzu, die Sie benötigen:

Cool

dependencies {
    implementation "androidx.compose.foundation:foundation:1.7.0"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.foundation:foundation:1.7.0")
}

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. Bitte sieh dir die vorhandenen Probleme in dieser Bibliothek an, bevor du eine neue erstellst. Sie können einem vorhandenen Problem Ihre Stimme geben, indem Sie auf die Schaltfläche mit dem Stern klicken.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.

Version 1.8

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 und LocalOverscrollFactory hinzugefügt, um das Überscrollen innerhalb einer Hierarchie zu konfigurieren. Der über LocalOverscrollFactory angegebene Wert wird standardmäßig verwendet, um eine OverscrollEffect zu erstellen. Verwenden Sie rememberOverscrollEffect(), um einen Effekt der aktuell bereitgestellten Factory zu erstellen und zu speichern. (I51ca4, b/255554340)

API-Änderungen

  • Stelle CompositionLocal vor, mit der du den Farbton der Füllmarkierung von Autofill ändern kannst. (I32092)
  • ScrollableDefaults.overscrollEffect wurde entfernt. Verwenden Sie stattdessen rememberOverscrollEffect. Dadurch wird eine Instanz der aktuellen Overscroll-Implementierung erstellt, die mit LocalOverscrollFactory bereitgestellt wird. (I1651a, b/255554340),(b/234451516)
  • Einführung einer neuen AutofillManager-Benutzeroberfläche, mit der sich der Autofill-Vorgang für Nutzer optimieren lässt, und eines isSemanticAutofillEnabled-Flags zum Aktivieren dieser neuen Version von Autofill. (I9d484)
  • Entfernt CombinedClickableNode. Diese experimentelle API wurde vorübergehend freigegeben, um Leistungsprobleme zu beheben. Sie ist jedoch nicht mehr erforderlich. Verwenden Sie stattdessen direkt Modifier.combinedClickable, wie bei anderen Modifikator-APIs. (I4b658)
  • Es werden Überladungen für horizontalScroll, verticalScroll, LazyColumn, LazyRow, LazyHorizontalGrid, LazyVerticalGrid, LazyHorizontalStaggeredGrid, LazyVerticalStaggeredGrid, HorizontalPager und VerticalPager hinzugefügt, die die Angabe einer benutzerdefinierten OverscrollEffect unterstützen. Die angegebene OverscrollEffect empfängt Ereignisse und wird innerhalb der Grenzen dieser Komponenten gerendert. Das Zeichnen derselben OverscrollEffect zweimal wird nicht unterstützt. Sie können also nicht dieselbe OverscrollEffect, die einer dieser Komponenten bereitgestellt wird, separat mit Modifier.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- und DelegatableNode#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 den AnnotatedString angewendet wurden. Bisher gab es nur eine Liste der SpanStyles. (I12f80)
  • Einführung von PointerInputModifierNode#touchBoundsExpansion, mit dem sich die Touch-Grenzen eines Eingabemodifikators mit einem 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. Jetzt brechen diese Knoten den Vorgang ab und senden das onPostFling-Ereignis mit der verbleibenden Geschwindigkeit. Außerdem führen wir das Flag NewNestedScrollFlingDispatchingEnabled ein, um das Verhalten bei Regressionen zu steuern. Das Flag wird vor der Betaphase entfernt. (I05c37, b/371168883)
  • Ein Fehler wurde behoben, durch den OverscrollEffects, das an Modifier.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 wurde veröffentlicht. Version 1.8.0-alpha03 enthält diese Commits.

API-Änderungen

  • Aktualisierung der Kotlin-Version auf 1.9 (I1a14c)
  • Flag DraggableAddDownEventFixEnabled (I848d5) wurde eingeführt
  • Eine neue Semantikrolle namens Carousel wurde eingeführt, um das Listenverhalten in Pager für A11y-Dienste zu emulieren. (Id354b, b/354109776, b/239672673)
  • Der implizite graphicsLayer-Modifikator wurde aus der zusammensetzbaren Funktion BasicText entfernt. Es wurde ein experimentelles ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled-Flag hinzugefügt, um zum alten Verhalten zurückzukehren. (Ie478d)
  • Modifier.recalculateWindowInsets() wurde hinzugefügt, damit untergeordnete Elemente in der Hierarchie insetsPadding auch dann verwenden können, wenn sie von übergeordneten Elementen ohne consumeWindowInsets() ausgerichtet wurden. (I7f9e4)

Fehlerkorrekturen

  • Implementieren Sie die Gestenerkennung in detectDragGestures, in Elementen, die verschoben werden können, und in scrollbaren Elementen. Wenn ein ziehbares Kind nun eine Geste aufgibt, kann das Elternteil sie annehmen. 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 Weitschwenken die Grenzen erreicht, wird die Weitschwenkgeschwindigkeit korrekt an das nächste scrollbare Element in der Kette übergeben, anstatt den Weitschwenk 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 und TextOverflow.MiddleEllipsis sind jetzt verfügbar. Damit können Auslassungspunkte am Anfang oder in der Mitte der Zeile des einzeiligen Textes 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.5

30. Oktober 2024

androidx.compose.foundation:foundation-*:1.7.5 wurde 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 wurde 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

  • Keine Änderungen an Android-Artefakten. -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 wurde 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 und Modifier.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 leistungsstärkeren Indication-Implementierungen im Vergleich zur vorherigen (jetzt verworfenen) rememberUpdatedInstance API. Informationen zur Migration finden Sie unter developer.android.com.
    • Für clickable / combinedClickable / selectable / toggleable ist jetzt ein MutableInteractionSource-Parameter zulässig, für den Nullwerte zulässig sind. Wenn „null“ ist und die angegebene Angabe eine IndicationNodeFactory ist, kann die Angabe nur bei Bedarf erstellt werden, was die Leistung verbessert. Wenn Sie MutableInteractionSource nicht hoisten und verwenden, sollten Sie anstelle von remember { 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 neue IndicationNodeFactory API.
  • BasicTextField mit einer TextFieldState ist jetzt stabil und wir empfehlen allen Call-Sites, mit der Migration von BasicTextField(value, onValueChange) zu BasicTextField(TextFieldState) zu beginnen.
  • Das Feld ClickableText wurde eingestellt. Wenn du deinem Text anklickbare Links hinzufügen möchtest, verwende BasicText mit der neuen Anmerkung LinkAnnotation in deiner AnnotatedString. Mit LinkAnnotation können Sie ein benutzerdefiniertes Design basierend auf dem Linkstatus festlegen (z.B. fokussiert, Mauszeiger bewegt).
  • Einführung von ContextualFlowRow und Enhanced FlowRow/Column mit MaxLines und Overflow Wir freuen uns, Ihnen Verbesserungen an den experimentellen FlowRow und FlowColumn vorstellen zu können. Sie unterstützen jetzt maxLines und Overflow. Außerdem sind ContextualFlowRow und ContextualFlowColumn 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 und FlowColumn eignen sich hervorragend für eine kleine Anzahl von Elementen (weniger als 100 Elemente). Wichtig: Wenn Sie das bestehende Verhalten in FlowRow oder FlowColumn beibehalten möchten, bei dem alle Elemente unabhängig davon, ob sie unter die maximale Größe der Querachse passen, zusammengehören, setzen Sie den Überlauf während der Initialisierung auf FlowRowOverflow.Visible oder FlowColumnOverflow.Visible. Unter ContextualFlowRowSample und FlowRowSample finden Sie Beispiele für diese neuen Funktionen in der Praxis. (Ib9135, b/293577082)
  • In LazyColumn und LazyRow wurde die Unterstützung für Animationen beim Ein- und Ausblenden von Elementen hinzugefügt. Bisher war es möglich, den Modifizierer Modifier.animateItemPlacement() hinzuzufügen, um Animationen für die Platzierung (Neuanordnung) zu unterstützen. Wir haben diesen Modifikator eingestellt und einen neuen nicht experimentellen Modifikator namens Modifier.animateItem() eingeführt, mit dem alle drei Animationstypen unterstützt werden: Erscheinungsbild (Einblenden), Verschwinden (Ausblenden) und Neuanordnung. (I2d7f7, b/150812265)
  • Implementierung der experimentellen Unterstützung für lange Screenshots in Scroll-Containern von Compose mit der offiziellen Android API (ScrollCaptureCallback).
  • NestedScroll-Quellen „Ziehen und Ziehen“ werden durch UserInput und SideEffect ersetzt, um die erweiterte Definition dieser Quellen zu ermöglichen, die jetzt Animationen (Seiteneffekt) sowie Mausrad und Tastatur (UserInput) umfasst.
  • LazyLayout Prefetch-Anfragen können jetzt als dringend gekennzeichnet werden. Wir erwarten also, dass dieses Element im nächsten Frame benötigt wird, und möchten das Frame-Budget ignorieren, um im Voraus mehr Arbeit erledigen zu können (Id513f).
  • 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-Funktionen performTextReplacement, performTextInput und performTextClearance, die sich auf die Texteingabe beziehen, werden jetzt Assertion-Fehler ausgegeben, wenn sie auf schreibgeschützte TextFields aufgerufen werden. (I4ae8f)
  • Eine visuelle Störung in 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

  • Fehlerbehebung 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

  • Abstürze bei sehr großen Textzeilen vermeiden (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 in bestimmten Fällen die Verwendung von Text verhinderte (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 wurde veröffentlicht. Version 1.7.0-beta02 enthält diese Commits.

API-Änderungen

  • Fügt eine experimentelle API zum Konfigurieren des Prefetch-Verhaltens von LazyGrids hinzu, ähnlich der vorhandenen experimentellen API für LazyLists. Dazu gehört auch die Unterstützung für das Vorabladen von Elementen in verschachtelten LazyGrids. Ähnlich wie bei LazyListPrefetchStrategy werden standardmäßig die ersten beiden verschachtelten Elemente jedes Rasters vorab abgerufen. Dies kann jedoch mit den neuen LazyGridPrefetchStrategy(nestedPrefetchItemCount)- und LazyListPrefetchStrategy#onNestedPrefetch-APIs konfiguriert werden. (I591c4)
  • SemanticsProperties.Editable wurde in IsEditable umbenannt und SemanticsPropertyReceiver.editable wird in einen Wert isEditable geändert. Die Property ist jetzt ein boolescher Wert und wird immer über Textfelder angegeben. (I8acd8)
  • Standardwerte vom Typ „basicMarquee“ wurden in das Objekt MarqueeDefaults verschoben. (I12ff6)
  • Der Parameter basicMarquee delayMillis wurde in repeatDelayMillis umbenannt. (I12ff6)
  • API für das Formatieren der Links aktualisiert: TextLinkStyles wurde an die TextStyle verschoben und TextDefaults aus dem Material entfernt (I5477b)

Fehlerkorrekturen

  • LayoutCoordinates.introducesFrameOfReference in LayoutCoordinates.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 Kurs TextStyle entfernt. Stattdessen ist TextLinkStyles Teil des LinkAnntation-Konstruktors und der AnnotatedString.fromHtml-Methode (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

  • Erneut senden „Inhaltstyp für die Zeitberechnung anhand des Prefetch-Inhalts erstellen/messen, um die Genauigkeit zu verbessern“ (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 jetzt hasEqualAnnotations. (I685c0)
  • Die API zum Erhalten von Material-Links im Text wurde aktualisiert. Insbesondere wurden die Methoden aus der TextDefaults zum Erstellen von themenbezogenen LinkAnnotations und zum Parsen von HTML mit themenbezogenen Links entfernt. Stattdessen wurde die Klasse TextLinkStyles hinzugefügt, mit der die Links als Parameter für das Text-Element formatiert werden können. (I31b93)
  • onDragStarted und onDragStopped 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 von PageSize 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 und SelectionContainer 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 markiert werden. Wir erwarten also, dass dieses Element im nächsten Frame benötigt wird, und möchten das Frame-Budget ignorieren, damit wir im Voraus mehr Arbeit erledigen können (Id513f).
  • isPositionedByParentWithDirectManipulation wurde in introducesFrameOfReference umbenannt. Beachten Sie, dass dies jetzt den umgekehrten Effekt hat. Das bedeutet, dass die meisten LayoutCoordinates standardmäßig einen Referenzrahmen einführen und das Attribut nur bei direkter Bearbeitung den Wert „false“ hat. Wenn Sie die Position nur mit Elementen abfragen möchten, die einen Bezugspunkt einführen, verwenden Sie positionInLocalFrameOfReference(...). Oder positionInLocalLookaheadFrameOfReference von einem LookaheadScope. (Ifc5f7)
  • onClicked in LinkInteractionListener in onClick 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 in isIncluded um. Setzen Sie den Rückgabetyp Paragraph/MultiParagraph#getRangeForRect() auf einen Rückgabetyp, der nicht Nullwerte zulässig ist. (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 von AnchoredDraggableState beim Erreichen der Grenzen des Bundesstaats geändert hat. (Iea30b, b/333846848)

Externer Beitrag

  • PrefetchExecutor in PrefetchScheduler umbenannt, um die Zuständigkeiten besser widerzuspiegeln. (Ib9154)
  • Unterstützung für das Vorabladen von Elementen in verschachtelten LazyLists hinzugefügt (z.B. eine LazyColumn, die verschachtelte LazyRows rendert). Durch diese Änderung werden bei diesen LazyLists voraussichtlich weniger Frame-Drops beim Scrollen auftreten. Standardmäßig werden die ersten beiden verschachtelten Elemente vorab abgerufen. Dieses Verhalten kann jedoch über die neuen APIs LazyLayoutPrefetchStrategy(nestedPrefetchItemCount) und LazyListPrefetchStrategy#onNestedPrefetch 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 einer LinkAnnotation und zum Parsen von HTML-getaggten Strings enthält, die MaterialTheme auf die Links anwenden. (I98532, b/139312671)
  • Die Unterstützung für Animationen für das Erscheinungsbild und das Verschwinden von Elementen wurde in LazyVerticalGrid und LazyHorizontalGrid hinzugefügt. Bisher war es möglich, den Modifizierer Modifier.animateItemPlacement() hinzuzufügen, um Animationen für die Platzierung (Neuanordnung) zu unterstützen. Wir haben diesen Modifikator eingestellt und einen neuen, nicht experimentellen Modifikator namens Modifier.animateItem() eingeführt, mit dem Sie alle drei Animationstypen unterstützen können: Einblenden (Einblenden), Ausblenden (Ausblenden) und Neuanordnung. (Ib7d12, b/330510929)
  • Die Unterstützung für Animationen für das Erscheinungsbild und das Verschwinden von Elementen wurde in LazyVerticalStaggeredGrid und LazyHorizontalStaggeredGrid hinzugefügt. Bisher war es möglich, den Modifizierer Modifier.animateItemPlacement() hinzuzufügen, um Animationen für die Platzierung (Neuanordnung) zu unterstützen. Wir haben diesen Modifikator eingestellt und einen neuen, nicht experimentellen Modifikator namens Modifier.animateItem() eingeführt, mit dem Sie alle drei Animationstypen unterstützen können: Einblenden (Einblenden), Ausblenden (Ausblenden) und Neuanordnung. (I69bc9, b/330511290)

API-Änderungen

  • Fügt ContextMenuColors und das zugehörige LocalContextMenuTheme 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)
  • Die Stiloption für Textlinks wurde zusätzlich zur normalen Gestaltung gedrückt, wenn der Mauszeiger darauf bewegt wurde und der Text hervorgehoben wurde. (I5f864, b/139312671)
  • Einführung von ViewConfiguration.HandwritingGestureLineMargin für Handschriftgesten Unterstützung der Geste für die Handschrifteingabe für BasicTextField (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 mit Placeable.PlacementScope.withDirectManipulationPlacement platziert haben. Ebenso können die Elemente in einem Layout, bei dem sich die Position der untergeordneten Elemente häufig ändert, jetzt mit withDirectManipulationPlacement platziert werden (z. B. Scroll, standardmäßig implementiert). Dadurch sind approachLayout-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)
  • Stelle requestScrollToItem für LazyStaggeredGrid vor. Für jeden Measure-Pass kann der Client nun durch Aufrufen von requestScrollToItem die Pflege des Index basierend auf dem Schlüssel deaktivieren. 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 er requestScrollToPage aufruft. Das bestehende Verhalten ändert sich dadurch nicht, es sei denn, requestScrollToPage wird aufgerufen. (IC4213)
  • requestScrollToItem“ wurde für LazyGrids eingeführt. Für jeden Mess-Pass kann der Client jetzt die Indexerhaltung basierend auf dem Schlüssel deaktivieren, indem er requestScrollToItem 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 eine AnnotatedString mit einer LinkAnnotation, die deinem Link entspricht, und übergebe diese AnnotatedString an das Text-Element (I34d4b, b/323346994).
  • UrlAnnotation wurde verworfen. Verwenden Sie stattdessen LinkAnnotation.Url. Wenn Sie Material-Designs verwenden, erstellen Sie mit einem TextDefaults-Objekt die Anmerkung mit angewendeten Material-Designs (I8d180, b/323346545).
  • String.parseAsHtml umbenannt in AnnotatedString.Companion.fromHtml (I43dcd)
  • Stilargumente (linkStyle, focusedLinkStyle, hoveredLinkStyle) und ein Link-Interaktions-Listener wurden der Methode parseAsHtml hinzugefügt. Beim Parsen des HTML-getaggten Strings mit <a>-Tags erstellt die Methode für jedes solche Tag ein LinkAnnotation.Url und übergibt die Stilobjekte und den Link-Interaktions-Listener an jede Anmerkung. (I7c977)
  • LinkAnnotation akzeptiert jetzt die zustandsbasierten Stilargumente und ein LinkInteractionListener. Fügen Sie diese Anmerkung dem AnnotatedString hinzu, um einen Hyperlink zu erhalten. Wenn Sie focusedState und/oder hoveredState ü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 Mehrheit der verbleibenden experimentellen APIs, die mit der neuen BasicTextField eingeführt wurden, wurde stabilisiert. (I714e2)
  • Dem Parameter BasicSecureTextField wurde der Parameter textObfuscationCharacter hinzugefügt, mit dem festgelegt wird, welches Zeichen beim Verschleieren des Inhalts verwendet werden soll. (I0588b)
  • Die NestedScroll-Quellen „Ziehen“ und „Wischen“ werden durch UserInput und SideEffect 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 durch TextFieldBuffer.originalText und TextFieldBuffer.originalSelection ersetzt. (I2c7d6)
  • ImeOptions.hintLocales ist nicht mehr optional. Wenn Sie eine leere Gebietsschemaliste übergeben möchten, verwenden Sie LocaleList.Empty. (Ic5bc4)
  • getOffsetFractionForPage wurde in getOffsetDistanceInPages umbenannt. (Ia05e2)

Fehlerkorrekturen

  • Wenn InputTransformations mit next zusammengeführt werden, werden die KeyboardOptions jetzt ordnungsgemäß durch einzelne Optionen mit der neuen KeyboardOptions.merge-Methode zusammengeführt. (Ie5304, b/295951492)
  • Bei AnchoredDraggableState werden Positionsgrenzwerte nicht mehr berücksichtigt.targetValue Es hat jetzt einen impliziten Grenzwert von 50%, was bedeutet, dass sich targetValue 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

  • Die Unterstützung für Animationen für das Erscheinungsbild und das Verschwinden von Elementen wurde in LazyColumn und LazyRow hinzugefügt. Bisher war es möglich, den Modifizierer Modifier.animateItemPlacement() hinzuzufügen, um Animationen für die Platzierung (Neuanordnung) zu unterstützen. Wir haben diesen Modifikator eingestellt und einen neuen nicht experimentellen Modifikator namens Modifier.animateItem() eingeführt, mit dem alle drei Animationstypen unterstützt werden: Erscheinungsbild (Einblenden), Verschwinden (Ausblenden) und Neuanordnung. (I2d7f7, b/150812265)
  • Kunden von LazyColumn/LazyRow können jetzt die Indexerhaltung basierend auf dem Schlüssel für den nächsten Messdurchgang deaktivieren, indem sie eine LazyListState.requestToScroll ohne Sperrung aufrufen. (I98036, b/209652366)
  • Es wurde die parseAsHtml-Methode für Strings mit benutzerdefinierten Stilen hinzugefügt: Sie ermöglicht das Konvertieren eines mit HTML-Tags markierten Strings in AnnotatedString. Beachten Sie, dass nicht alle Tags unterstützt werden. Aufzählungslisten können beispielsweise noch nicht angezeigt werden. (I84d3d)
  • Implementierung der experimentellen Unterstützung für lange Screenshots in Compose-Scrollcontainern mithilfe der offiziellen Android API (ScrollCaptureCallback). Diese Funktion ist experimentell und verarbeitet derzeit möglicherweise nicht alle Fälle richtig. Aus diesem Grund ist die Funktion derzeit standardmäßig deaktiviert. Legen Sie zum Aktivieren das Flag ComposeFeatureFlag_LongScreenshotsEnabled auf „true“ fest. 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 von GraphicsLayer-Instanzen zu ermöglichen und intrinsische Rendering-Funktionen zu unterstützen, ohne dass eine Abstimmung mit Composable-Implementierungen erforderlich ist, um GraphicsLayer-Modifikatorinstanzen anzugeben.

API-Änderungen

  • Alle KeyboardOptions-Parameter haben jetzt standardmäßig keinen Wert. Die Methode KeyboardOptions.merge wurde hinzugefügt.
  • KeyboardOptions.autoCorrect in autoCorrectEnabled umbenannt und als „nullable“ (mit Nullwert zulässig) gekennzeichnet. „Null“ gibt an, dass kein Wert angegeben wurde. (Ia8ba0, b/295951492)
  • outOfBoundsPageCount wurde in beyondViewportPageCount umbenannt. (I129c6)
  • fun ClipEntry.getMetadata()“ wird in „val ClipEntry.clipMetadata“ geändert. (I50155)
  • TextFieldState.valueAsFlow() wurde entfernt. snapshotFlow { state.text } oder snapshotFlow { TextFieldCharSequence(state.text, state.selection) } bevorzugen (I7d629)
  • Die InputTransformation.transformInput-Parameter wurden neu angeordnet. originalValue: TextFieldCharSequence wurde entfernt. Stattdessen trägt TextFieldBuffer jetzt diesen Wert mit demselben Namen. Außerdem wurde der Parameter valueWithChanges: TextFieldBuffer entfernt. TextFieldBuffer ist jetzt der Empfängerbereich der Funktion. (I919cc)
  • Die Variante „BasicTextField(state)“ und „BasicSecureTextField“ verwenden jetzt KeyboardActionHandler anstelle von KeyboardActions, um Aktionen über die 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 in showKeyboardOnFocus umbenannt. (Ib4b7a, b/295951492)
  • Parameter hintMediaTypes wurde aus Modifier.contentReceiver entfernt. Entwicklern wurde bereits empfohlen, den Medientyp des empfangenen TransferableContent zu prüfen, da er möglicherweise nicht mit dem konfigurierten hintMediaTypes kompatibel ist. (I82f99)
  • Die Parameter von BasicSecureTextField wurden neu angeordnet. Die Parameter keyboardType und imeAction wurden zugunsten der vollständigen KeyboardOptions-Klasse entfernt. Die Standardeinstellungen für BasicSecureTextField blieben unverändert. Außerdem wurde der Parameter scrollState entfernt. (Ibbfa9)
  • Der Typ von TextFieldState.text wurde von TextFieldCharSequence in CharSequence geändert. Daher wurden TextFieldState.selection: TextRange und TextFieldState.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 und ClipboardManager.hasClip wurden entfernt. Verwende clipEntry.getMetadata(), um die Metadaten des aktuellen Clipeintrags zu lesen. Prüfen Sie auch, ob das Ergebnis von ClipboardManager.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 die Modifier.receiveContent-Überladung entfernt, die ein Lambda annimmt, da ReceiveContentListener jetzt eine Funktionsschnittstelle ist.
  • Modifier.receiveContent wird in Modifier.contentReceiver umbenannt. (I1e6af)
  • TransferableContent.consumeEach wurde in TransferableContent.consume umbenannt. (I1e462)
  • rememberTextFieldState ist jetzt eine stabile API. (I37999)

Fehlerkorrekturen

  • Ein Fehler wurde behoben, bei dem die Variante BasicTextField(state) nicht mit CJK-Tastaturen(kompositionsbasiert) funktionierte. (I54425)
  • Es wurde ein Fehler behoben, bei dem Modifier.dragAndDropTarget() in bestimmten Szenarien mit der Wiederverwendung von Modifier.Node auf veraltete Daten verweisen konnte. (I05bb1)
  • Eine kürzliche Vertragsänderung wurde rückgängig gemacht, bei der AnchoredDraggableState#anchoredDrag-Aufrufe am Ende eines anchoredDrag-Vorgangs unterbrochen wurden. (I95715)

Version 1.7.0-alpha05

20. März 2024

androidx.compose.foundation:foundation-*:1.7.0-alpha05 wurde veröffentlicht. Version 1.7.0-alpha05 enthält diese Commits.

API-Änderungen

  • Die lokale Testkomposition LocalTextLinkStyle für das Gestalten von Hyperlinks wurde entfernt. (Iebfa7)
  • Die experimentelle Überschreibung von BasicText durch das Argument onLinkClicked 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 und TextFieldBuffer entfernt. Außerdem wurden die inChars-Suffixe aus den verbleibenden APIs für Auswahl und Zusammensetzung entfernt. (Ief7ce)
  • currentValue von AnchoredDraggable wird jetzt aktualisiert, wenn ein Ankerpunkt passiert wird. Verwende settledValue, um die vorherige currentValue-Semantik zu erhalten, und wird nur aktualisiert, wenn sich die App an einem Anker befindet. Der Fortschritt wird jetzt als Funktion statt als Eigenschaft angezeigt, die einen Start- und Endpunkt erfordert. (Ibe6e8, b/318707189, b/298271489, b/294991954)
  • BasicTextField(state), TextFieldState, InputTransformation, OutputTransformation, TextFieldLineLimits, TextFieldDecorator wurden auf die stabile Version umgestellt. (I9582b)
  • Einführung von InterceptPlatformTextInput 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() und fitPrioritizingHeight() (I6d7fd)

Externer Beitrag

  • Zwei neue API isLastScrollForward/isLastScrollBackward hinzugefügt, um die Scrollrichtung für die neueste Scrollaktion zu prüfen. Gibt „false“ zurück, wenn noch keine Scrollaktion vorhanden ist. (I63a0e)

Version 1.7.0-alpha04

6. März 2024

androidx.compose.foundation:foundation-*:1.7.0-alpha04 wurde veröffentlicht. Version 1.7.0-alpha04 enthält diese Commits.

API-Änderungen

  • Unterstützung der Eingabe per Eingabestift auf Geräten ab Android U (I002e4)
  • hintLocales wurde zu KeyboardOptions hinzugefügt, damit TextFields IMEs mit bestimmten Gebietsschemata Hinweise zur Voreinstellung einer bevorzugten Sprache geben kann. (Id18c2)
  • Die experimentellen Überladungen BasicTextField2 und BasicSecureTextField, die die Parameter value: String und onValueChange: () -> String akzeptierten, wurden entfernt. (I568b4)
  • Fügen Sie InputTransformation eine optionale applySemantics-Funktion hinzu, um die Semantik der BasicTextField2 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 in BasicTextField umbenannt. (Beispielsweise 5713)
  • FocusRequester.createRefs ist jetzt stabil (I4d92c, b/261436820).
  • Einführung von DelegatableNode.scrollIntoView(), damit Modifikatorknoten scrollIntoView-Anfragen direkt stellen können. (I2b3b7, b/299939840)
  • DelegatableNode.requireView() wurde eingeführt, damit Modifikatorknoten das aktuelle Android-View abrufen können, ohne eine lokale Zusammensetzung zu lesen. (I40768)
  • 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- oder readOnly-Attribute von TextField 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 aktuelle LayoutCoordinates eines Modifier.Node abzurufen, ohne onPlaced überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Ia8657)
  • Einführung von DelegatableNode.currentLayoutCoordinates als Möglichkeit, die aktuelle LayoutCoordinates eines Modifier.Node abzurufen, ohne onPlaced überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Iaebaa)
  • Leistungsoptimierungen in DraggableAnchors werden von AnchoredDraggable verwendet. (I89cff)
  • BasicTextField2 und die zugehörigen APIs im Paket androidx.compose.foundation.text2 werden zu androidx.compose.foundation.text verschoben. (I9f635)
  • Für BasicTextField2 wird kein CodepointTransformation-Parameter mehr akzeptiert. Verwenden Sie BasicSecureTextField oder OutputTransformation. (Id34ff)
  • Es wurde eine Methode hinzugefügt, mit der nur die Anmerkungen von zwei AnnotatedStrings verglichen werden können. (I32659)
  • Jetzt neu: ContextualFlowRow und optimierte FlowRow/Column mit MaxLines und Overflow. Wir freuen uns, Verbesserungen an den experimentellen FlowRow und FlowColumn ankündigen zu können, die jetzt neben der Einführung von ContextualFlowRow und ContextualFlowColumn auch maxLines und Überlauf-Unterstützung umfassen. Dieses Update wurde entwickelt, um Komponenten für eine optimale Leistung bereitzustellen, wobei ContextualFlow* perfekt für eine große Anzahl von Artikeln mit einer kleinen maxLines-Konfiguration und dynamischen +N-Schaltflächen für die Anzeige weiterer Schaltflächen und FlowRow und FlowColumn sich ideal für eine kleine Anzahl von Artikeln mit weniger als 100 Elementen eignet. Wichtig: Wenn Sie das bestehende Verhalten in FlowRow oder FlowColumn beibehalten möchten, bei dem alle Elemente unabhängig davon, ob sie zur Maximalgröße der Querachse passen, zusammengehören, setzen Sie overflow während der Initialisierung auf FlowRowOverflow.Visible oder FlowColumnOverflow.Visible. Unter ContextualFlowRowSample und FlowRowSample 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 eingestellten Kopierkonstruktoren von KeyboardOptions kopieren jetzt alle Attribute korrekt. (If12de)

Version 1.7.0-alpha02

7. Februar 2024

androidx.compose.foundation:foundation-*:1.7.0-alpha02 wird veröffentlicht. Version 1.7.0-alpha02 enthält diese Commits.

API-Änderungen

  • HorizontalPager, VerticalPager und PagerState werden auf die stabile 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 lokale Komposition 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 in BasicTextField2 einbinden, um Rich-Inhalte zu akzeptieren, die über die Softwaretastatur oder über die Zwischenablage eingefügt werden. (I81b72)
  • Dabei ersetzen wir SnapFlingBehavior durch TargetedFlingBehavior, 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, einem FlingBehavior, 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

  • Indication API neu hinzugefügt: IndicationNodeFactory. Dies führt zu leistungsfähigeren Indication-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 optionaler MutableInteractionSource-Parameter verwendet werden. Wenn „null“ ist und die angegebene Indication eine IndicationNodeFactory ist, kann die Indication nur bei Bedarf erstellt werden, was die Leistung verbessert. Wenn Sie die MutableInteractionSource nicht hochskalieren und verwenden, wird empfohlen, „null“ zu übergeben.

API-Änderungen

  • Führen Sie DecayAnimation in AnchoredDraggable ein. Durch diese Änderung wird AnchoredDraggable ein decayAnimationSpec-Parameter hinzugefügt, der die Verwendung von Abklinganimationen ermöglicht, wenn sich der Anker auf einen der Anker bezieht. Außerdem wird die vorhandene animationSpec in snapAnimationSpec umbenannt, um den Anwendungsfall der einzelnen Spezifikationen besser nachvollziehen zu können.
  • BasicTextField2 ist für experimentelle Zwecke verfügbar. Sie sollte in etwa gleichwertig mit BasicTextField sein und das Verhalten sollte produktionsreif sein. Die API befindet sich jedoch noch in der Testphase. Vor der Stabilisierung wird es in BasicTextField umbenannt und in dasselbe Paket verschoben.
  • Erster Entwurf der OutputTransformation API für BasicTextField2 eingeführt. Diese API ersetzt die meisten Anwendungsfälle von VisualTransformation in der alten BasicTextField. Sie ist jedoch noch nicht vollständig und einige Dinge werden nicht richtig funktionieren, aber wir würden uns über Feedback zur API-Nutzungsfreundlichkeit 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 in BasicTextField2 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 von BasicTextField deaktivieren, bei dem beim Fokus eine Softwaretastatur angefordert wird.
  • TextInputService und LocalTextInputService sind jetzt eingestellt. Verwenden Sie stattdessen PlatformTextInputModifierNode, um die direkte Integration in die IME-APIs der Plattform zu ermöglichen. (aosp/2862698)
  • Indication#rememberUpdatedInstance wurde verworfen. Sie führt zu einer unvermeidlichen Leistungseinbuße und verhindert andere Optimierungen. Verwenden Sie stattdessen die neue IndicationNodeFactory API.

Fehlerkorrekturen

  • Bei BasicTextField wird jetzt eine kleine Auswahl von Offsetzuordnungen vorab validiert, wenn VisualTransformation übergeben wird. So lassen sich häufige Programmierfehler erkennen, die zu nicht wiederherstellbaren Ausnahmen bei späteren Mess- oder Zeichendurchläufen führen. Durch das Wurfen während der Komposition ist es wahrscheinlicher, dass Entwickler diese Fehler während der Entwicklung bemerken, um Produktionsabstürze zu vermeiden. (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- oder readOnly-Attribute von TextField 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

  • Eine Auswahlgeste, die durch langes Drücken und dann Ziehen innerhalb des Textes aus den Layoutgrenzen des Textes im ersten Frame des Ziehens herausbewegt, stürzt nicht mehr ab. (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 wurde veröffentlicht. Version 1.6.1 enthält diese Commits.

Fehlerkorrekturen

  • Korrektur des Maßstabs für versetzte Raster, 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 korrigiert (785f94)
  • Rufe den onRelease-Callback in der gleichen Reihenfolge auf wie onforgotten. (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 soll Modifier.swipeable ersetzen. Weitere Informationen zur Verwendung und Migration von Modifier.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 und AndroidEmbeddedExternalSurface wurden hinzugefügt, um das Hinzufügen von komponentenbasierten Oberflächen in Compose zu vereinfachen.
  • Verschiedene API-Änderungen und ‐Verbesserungen in Pager und snapFlingBehaviour
  • Verschiedene APIs für 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 mit object: 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

  • Absturz behoben, der sich auf sehr großen Text ausgewirkt hat, der mit unbegrenzten Einschränkungen gemessen wurde. (I1a7df, b/312294386)
  • PlatformImeOptions ist jetzt eine konkrete Klasse anstelle einer Schnittstelle. (If40a4)

Version 1.6.0-beta02

29. November 2023

androidx.compose.foundation:foundation-*:1.6.0-beta02 wurde veröffentlicht. Version 1.6.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • Behebung des Problems, dass canScroll nach dem Scrollen nur zum Neulayouten nicht aktualisiert wurde. (I60a86)
  • Behebung eines Problems mit Modifier.animateItemPlacement() und LookaheadScope 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 empfangene DragAndDropTarget explizit auf und hat ein Lambda, um eine Drag-and-drop-Sitzung zu aktivieren. Es gibt jetzt zwei Factory-Funktionen für eine DragAndDropModifierNode. Eine für den Empfang von Übertragungen und eine für die Übertragung von Daten (I69481)
  • maximumFlingVelocity wurde so aktualisiert, dass es als Gleitkommazahl dargestellt wird. Die Dokumentation wurde aktualisiert, um die Einheitlichkeit von maximumFlingVelocity zu verdeutlichen. (I8adc7)
  • onDragAndDropStart in der DragAndDropModifierNode-Fabrik wurde in acceptDragAndDropTransfer umbenannt.

    acceptsDragAndDropTransfer wurde dem dragAndDropTarget Modifier hinzugefügt, um es per Drag-and-drop zu akzeptieren. Diese Lambda-Funktion gibt ein funktionsfähiges DragAndDropTarget zurück, wenn sie an einer Drag-and-drop-Sitzung interessiert ist. 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 in AnchoredDraggable freigeben, können Sie steuern, wie Ziehgesten erkannt werden. 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 der Google Unternehmensprofil-Plattform sind jetzt @ExperimentalFoundationApi (I30b0b).

  • Der Typ "DragAndDropModifierNode.drag" für DragAndDropInfo wurde entfernt und akzeptiert jetzt Parameter für die Lambda-Funktion "transferData", die Verzierungsgröße und die Lambda-Funktion "Ziehen" DrawScope

    DragAndDropTarget bietet Methoden für bestimmte Drag-and-drop-Ereignisse und keine einzelne abstrakte Methode.

    onDragAndDropEvent in der Standardfunktion für eine DragAndDropModifierNode wurde in onDragAndDropStart umbenannt, um besser zu verdeutlichen, dass die angegebene DragAndDropTarget nur für eine bestimmte Drag-and-drop-Sitzung gültig ist.

    Die DragAndDropEventType wurde entfernt (I645b1)

  • PlatformTextInputModifierNode.runTextInputSession wurde in establishTextInputSession umbenannt. (I03cd0)

  • Ersetzen Sie OriginalText durch TextSubstitution. (Ifa5a8)

  • PlatformTextInputModifierNode.textInputSession wurde in runTextInputSession umbenannt. (Ie9c6b)

  • Die untergeordneten Elemente von SubcomposeLayout (und Layouts wie LazyColumn, die darauf basieren) werden zur späteren Wiederverwendung beibehalten und gelten als deaktiviert. Zum Testen solcher Knoten wurde eine neue assertIsDeactivated()-Test-API eingeführt. Bei den restlichen Test-APIs werden deaktivierte Knoten standardmäßig herausgefiltert. (I2ef84, b/187188981)

  • Der Parameter clippingEnabled von Modifier.magnifier wird in clip umbenannt.

  • Der Parameter magnifierCenter von Modifier.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 data class-basierten 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 sich minWidth änderte und minWidth kleiner als die ursprünglichen Maßbeschränkungen maxWidth war (Idb19c)
  • Unterstützung für den Renderer für den Farbverlauf „Sweep Gradient“ in ArcLine hinzufügen (I4d5bb)
  • Behebung eines Binärkompatibilitätsproblems bei der Änderung des Fensterabstands (Iee695)
  • Entferne die Materialkernschicht für den Material3-Chip/die Schaltfläche, da die Mikro-Benchmarks auch ohne sie eine bessere Leistung zeigen. (I55555)

Version 1.6.0-alpha08

18. Oktober 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha08 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 Lambda onDrawDragShadow in drawDragDecoration umbenannt und bei DragAndDropInfo wurde der Größeparameter in dragDecorationSize umbenannt. (Id0e30, b/303904810)
  • Der Parameter decorationBox von BasicTextField2 wird in decorator umbenannt. Der Typ wird auch in eine entsprechende lustige Benutzeroberfläche TextFieldDecorator geändert. (I23c1c)

Fehlerkorrekturen

  • Die Dokumentation zu BasicTextField wurde im Hinblick auf die Anforderungen an onValueChange 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 in AndroidExternalSurface umbenannt (I11680)
  • Das temporäre Flag DisableNonLinearFontScalingInCompose wurde hinzugefügt, um die nicht lineare Schriftskalierung zu deaktivieren. Legen Sie in Ihren Tests DisableNonLinearFontScalingInCompose = 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 und ColorSet wurden hinzugefügt, um Zuweisungen zu vermeiden. (I744bd)
  • Durch diese Änderung wird shortSnapVelocityThreshold entfernt, das zu einer Implementierungsdetaillierung der Implementierungen von SnapLayoutInfoProvider geworden ist. (I65f6d)
  • Es wird die Modifikatortaste dragAndDropSource zum Starten von Drag-and-drop-Sitzungen und die Modifikatortaste dragAndDropTarget zum Empfangen von Drag-and-drop-Sitzungen hinzugefügt (Ib7828, b/286038936)
  • SnapPositionInLayout-Dokumentation und Positionsmethode aktualisieren. Führen Sie in SnapPositionInLayout für die Positionierungsmethode Textabstände ein. (Id7938, b/300116110)
  • UndoState wurde zu TextFieldState 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() und EmbeddedGraphicsSurface(). 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 von MagnifierStyle zugunsten von Inline-Parametern im Modifikator selbst. (I83bec, b/298381260, b/262367109, b/261438887)

API-Änderungen

  • updateCurrentPage und updateTargetPage wurden in ScrollScope eingeführt. Sie sind die letzten Elemente, die für die Anpassung des animierten Scrollens in PagerState.scroll erforderlich sind. (I9cad5, b/267744105, b/243786897)
  • Kompaktheitsgrad von SnapFlingBehavior entfernen. Alle Implementierungen von SnapLayoutInfoProvider haben bereits eine Möglichkeit, auf die Dichte zuzugreifen. Der Empfängerbereich könnte entfernt werden, was zu einer weniger komplexen Implementierung von SnapFlingBehavior und SnapLayoutInfoProviders führt. (I153c3)
  • Weitere Modifikatoren, die als stabil gekennzeichnet sind. (I56af1, b/298046462)
  • SnapStepSize wurde aus SnapLayoutInfoProvider entfernt. Die Berechnung sollte mithilfe der Layoutinformationen erfolgen und über die Methode oder das Andocken von Offsets bereitgestellt werden. (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 Schriftskalierung. (I11518)

Fehlerkorrekturen

  • Entfernen Sie die Verwendung von rememberSaveable für Kurzinfos. (Icc131, b/299500338)

Version 1.6.0-alpha05

6. September 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha05 wurde 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 aktuelle BasicTextField 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 Wischgeschwindigkeit in Ansichtskomponenten wie ScrollView und RecyclerView ist auf ViewConfiguration.ScaledMaximumFlingVelocity begrenzt. Compose enthält jetzt eine eigene Version von maximumFlingVelocity, die jetzt auf Draggable angewendet wird. (Ibf974)
  • Die veralteten Überladungen von Pager und PagerState wurden entfernt. (Iea07e)
  • BasicTooltipBox wurde zu compose.foundation hinzugefügt und PlainTooltipBox und RichTooltipBox wurden aktualisiert, damit TooltipBox mit den neuen PlainTooltip- und RichTooltip-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-Schnittstelle zur Verwaltung des Lebenszyklus und der Wiederverwendung von Unterzusammensetzungen hinzugefügt. (I812d1, b/252846775)
  • Modifier.focusGroup wurde zu stabilen APIs hochgestuft. (I7ffa3)
  • Füge Überlastungen für BasicTextField2 hinzu, die einen unveränderlichen Wert akzeptieren, und einen Callback, um diesen Wert zu ändern, wie bei der aktuellen BasicTextField API. (I3f2b8)
  • GridItemSpan::currentLineSpan ist jetzt eine stabile API. (Icc29c)
  • Canvas, das contentDescription akzeptiert, ist jetzt eine stabile API. (Ib3d29)
  • Einführung von viewportSize in ScrollState, um die viewPort-Größe der Komponente zu ermitteln, die ScrollState 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. Verwende stattdessen Modifier.consumeWindowInsets. (Id72bb)

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 von LazyLayoutItemProvider, kein einfaches Objekt wie zuvor. Die vorherige Überlastung wurde eingestellt. (I42a5a)
  • Unterstützung für die Konfiguration von privateImeOptions hinzugefügt (Idb772)

Fehlerkorrekturen

  • Textfelder, die die Tastatur anzeigen und bearbeitbar sind, wenn readOnly auf „true“ gesetzt ist, wurden korrigiert. Außerdem wurde behoben, dass die Tastatur nicht angezeigt wurde, wenn readOnly 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 einer Messung in Pager erhoben wurden. Außerdem wurde PageInfo eingeführt, die Informationen zu einer einzelnen gemessenen Seite in Pager. (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)
  • Komplett überarbeitete PlatformTextInput* API. (I6c93a, b/274661182, b/267235947, b/277380808)
  • SoftwareKeyboardController und LocalSoftwareKeyboardController sind keine experimentellen Funktionen mehr. LocalSoftwareKeyboardController ist jetzt auch eine richtige CompositionLocal. (I4c364)
  • Modifier.transformable bietet jetzt einen Schwenk-Deltawert im Parameter canPan, mit dem die Schwenkrichtung festgelegt werden kann, die zugelassen oder nicht zugelassen werden soll. (I692aa, b/266829800)
  • Der Modifikator consumeWindowInsets wird aktualisiert, um die Superklasse AbstractComposeView 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 die Swipeable API von Material. (I4a2ed)

API-Änderungen

  • InputConnection#requestCursorUpdates (I0c69b) unterstützen
  • scrollAnimationSpec wurde eingeführt, um Spezifikationen für benutzerdefinierte Animationen zuzulassen. BringIntoViewCalculator auf BringIntoViewScroller aktualisiert (Idb741)
  • Füge den Wurfables, die beim Laden von Bitmap-Assets mit einer Beschreibung des Asset-Pfads, der nicht geladen werden konnte, den Typ ResourceResolutionException hinzu. (I19f44, b/230166331, b/278424788)
  • Semantikeigenschaften und Aktionen zur Unterstützung der Textübersetzung wurden hinzugefügt. (I4a6bc)
  • Es wurde eine BringIntoViewCalculator API eingeführt, mit der angepasst werden kann, wie Komponenten wie Scrollable auf bringIntoView-Anfragen reagieren. Die Überladung von „scrollable“ wurde geändert, sodass optional eine Instanz von BringIntoViewCalculator akzeptiert wird. (Iaf5af)

Fehlerkorrekturen

  • Es wurde eine Lint-Prüfung hinzugefügt, die warnt, wenn Sie eine MutableInteractionSource in einer Zusammensetzung erstellen, ohne sie zu speichern, ähnlich wie bei der Lint-Prüfung zum Erstellen eines veränderlichen 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)
  • Es wurde eine FocusTargetModifierNode-Oberfläche hinzugefügt, die zum Erstellen einer benutzerdefinierten FocusTarget verwendet werden kann. (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 wurde 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 wurde veröffentlicht. Version 1.5.1 enthält diese Commits.

Fehlerkorrekturen

  • Textfelder, in denen die Tastatur angezeigt und die Textfelder bearbeitet werden können, wenn readOnly = „wahr“ ist, wurden korrigiert. Außerdem wurde behoben, dass die Tastatur nicht angezeigt wurde, wenn readOnly 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 wurde veröffentlicht. Version 1.5.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.4.0

  • Viele grundlegende Modifikatoren, darunter Modifier.clickable,Modifier.draggable, Modifier.scrollable und der Layout-Modifikator, wurden zur Modifier.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 in PagerState 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, um zu empfehlen, mutableStateOf()-Aufrufe zu den entsprechenden speziellen Typen für Primitive zu migrieren. Die Lint-ID lautet AutoboxingStateCreation. 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 dazu warning "AutoboxingStateCreation" wie gezeigt in der build.gradle- oder build.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 anzugeben. Die SensorGateway-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 Federanimationen 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)
  • Einführung eines SnapLayoutInfoProvider, das mit LazyGridState verwendet werden kann (I92134, b/269237141, b/260914964)
  • Die experimentelle Funktion „Modifier.animateItemPlacement()“ wurde für den Bereich „Verzögerte gestaffelte Rasterelemente“ hinzugefügt. Sie können 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 ein LazyGrid, bei dem jede Zelle auf der Querachse genau die Größe hat und der verbleibende Platz durch 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 durch calculateSnappingOffset 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 aus Horizontal/VerticalPager. Diese sollte bei der Erstellung des Bundesstaats angegeben werden. PagerState und rememberPagerState wurden aktualisiert, um die pageCount zu akzeptieren. (Ieb52d, b/266965072)
  • Entfernen Sie pageCount aus Horizontal/VerticalPager. Diese sollte bei der Erstellung des Bundesstaats angegeben werden. PagerState und rememberPagerState wurden aktualisiert, um die pageCount zu akzeptieren. (Ifa3cb, b/266965072)
  • shortSnapVelocityThreshold in SnapFlingBehavior von Pager einführen (I7379e, b/275579012)
  • Fügt FlowRowScope und FlowColumnScope hinzu. (I54fe2)

Fehlerkorrekturen

  • Aufrufe zum Abrufen der Semantik für Text, wenn minWidth und minHeight nicht mehr 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. (I7d519)
  • UrlAnnotation-Werte in AnnotatedString Sek. können jetzt über Bedienungshilfen wie TalkBack 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)
  • Es wird Unterstützung für den Abstand/die Anordnung zwischen Achsen hinzugefügt. Dazu wird verticalArrangement in FlowRow und horizontalArrangement in FlowColumn verwendet. Außerdem entfernen wir die obersten Ebenen verticalAlignment und horizontalAlignment in FlowRow/FlowColumn. Entwickler können stattdessen Modifier.align verwenden. So wird Verwechslungsgefahr zwischen den Benennungskonventionen von verticalAlignment und verticalArrangement 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 Modifikator hoverable 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 ein Versionssprung).

Version 1.4.2

19. April 2023

androidx.compose.foundation:foundation:1.4.2 und androidx.compose.foundation:foundation-layout:1.4.2 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 wurden veröffentlicht. Version 1.4.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.3.0

  • Die Emoji-kompatible Integration wurde für Text und TextField sowie für den unteren Absatz (Absatz) hinzugefügt. Sie ist standardmäßig aktiviert, wenn emojicompat konfiguriert ist.
  • EmojiCompat kann mithilfe von PlatformParagraphStyle für einen bestimmten Text konfiguriert werden.
  • Unterstützung für die vollständige Zeile für LazyStaggeredGrid(I28252) hinzugefügt
  • Experimentelles onHover zu ClickableText hinzufügen (I6938f)
  • Es wurden neue experimentelle Überladungen für die Funktionen runComposeUiTest und create*ComposeRule eingeführt, die CoroutineContext-Parameter akzeptieren. Der Kontext wird für die Testkomposition und alle LaunchedEffect- und rememberCoroutineScope()-Aufrufe in der Komposition verwendet. (I10614, b/265177763)
  • FlowRow und FlowColumn 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)

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 von BasicTextField aktualisiert den Textbuffer jetzt mit demselben Codepfad wie IME-Aktualisierungen und die Testfunktionen (z.B. performTextReplacement).
  • Für die Texttestfunktionen performTextClearance, performTextReplacement und performTextSelection wird jetzt SemanticsActions verwendet. (I0807d, b/269633168, b/269624358)

Version 1.4.0-beta02

22. Februar 2023

androidx.compose.foundation:foundation:1.4.0-beta02 und androidx.compose.foundation:foundation-layout:1.4.0-beta02 wurden veröffentlicht. Version 1.4.0-beta02 enthält diese Commits.

API-Änderungen

  • Es wurde ein neuer Modifier.Node.onReset()-Callback hinzugefügt, mit dem du einen lokalen Status zurücksetzen kannst, um den Fall zu verarbeiten, dass Layout wiederverwendet wird (z. B. als Element von LazyColumn). Das Problem FocusTargetModifierNode wurde behoben, damit der fokussierte Zustand korrekt zurückgesetzt wird. (I65495, b/265201972)
  • Den Methoden DrawScope.drawText, Paragraph.paint und MultiParagraph.paint wurde der Parameter BlendMode 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 von ModifierNodeElement 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 wurde für Text und TextField sowie für den unteren Absatz eine Emoji-kompatible Integration hinzugefügt. Sie ist standardmäßig aktiviert, wenn emojicompat konfiguriert ist.
  • EmojiCompat kann mit PlatformParagraphStyle für einen bestimmten Text konfiguriert werden.

API-Änderungen

  • Es wurde eine gemeinsame Implementierung der PinnableContainer API hinzugefügt, die in allen LazyLayouts verwendet wird, um Elemente beizubehalten, die die Komposition verlassen, aber weiterhin aktiv sein müssen. (If45a4)
  • PinnableContainer.PinnedHandle.unpin() wurde in release() (I4667a) umbenannt

Externer Beitrag

  • mainAxisItemSpacing-Property zu LazyListLayoutInfo, LazyGridLayoutInfo und LazyStaggeredGridItemInfo 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)
  • Experimentelle onHover wird zu ClickableText hinzugefügt (I6938f)
  • Es wurden neue experimentelle Überladungen für die Funktionen runComposeUiTest und create*ComposeRule eingeführt, die CoroutineContext-Parameter akzeptieren. Der Kontext wird für die Testkomposition und alle LaunchedEffect- und rememberCoroutineScope()-Aufrufe in der Komposition verwendet. (I10614, b/265177763)

API-Änderungen

  • Die Pre-/Post-APIs von OverscrollEffect werden in die kombinierten „Dekorator“-Funktionen applyToScroll und applyToFling 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 und Hyphens in TextStyle 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 in TextInputSession und TextInputService 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 und FlowColumn 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 von FocusRequesterNode eingestellt (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • Der AndroidFont-Konstruktor mit variationSettings 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 weitergegeben wird und das Anpinnen des aktuellen Elements ermöglicht. Das bedeutet, dass das Element nicht entsorgt wird, wenn es aus der Ansicht weggescrollt wird. Mit Modifier.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)
  • Die experimentelle TextMotion wurde zu TextStyle hinzugefügt, um Text entweder als Static(default) oder als animiert zu definieren. Verwenden Sie TextMotion.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 in drawText wurde durch size: Size ersetzt, um mit anderen DrawScope-Funktionen übereinzustimmen. size ist standardmäßig auf Size.Unspecified festgelegt. Das bisherige Standardverhalten sollte dadurch nicht geändert werden. (Icd27d)

Fehlerkorrekturen

  • Für ein natürlicheres Gefühl wurden in SnapFlingBehaviour Anpassungen an der Physik des Schnappschusses vorgenommen.

Bekanntes Problem

  • Beim Aktualisieren von androidx.compose.foundation:1.4.0-alpha03 auf androidx.compose.foundation:1.4.0-alpha04 kann der Fehler java.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. Um das Problem zu umgehen, aktualisieren Sie Ihre androidx.compose.material- und androidx.compose.material3-Bibliotheken auf die neueste Version(1.1.0-alpha04) oder führen Sie ein Downgrade von androidx.compose.foundation auf 1.4.0-alpha03 aus.

Version 1.4.0-alpha03

7. Dezember 2022

androidx.compose.foundation:foundation:1.4.0-alpha03 und androidx.compose.foundation:foundation-layout:1.4.0-alpha03 wurden veröffentlicht. Version 1.4.0-alpha03 enthält diese Commits.

API-Änderungen

  • Bei UI-Tests mit einer Schreibregel werden Fortsetzungen, die während withFrameNanos-Callbacks fortgesetzt werden, erst abgesendet, nachdem alle Frame-Callbacks ausgeführt wurden. 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, der withFrameNanos oder withFrameMillis 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 finden Sie in den Änderungen an den Animationstests in dieser Änderungsliste.
  • Dem Konstruktor und der Fabrikfunktion von TestMonotonicFrameClock wurde der optionale Parameter onPerformTraversals: (Long) -> Unit hinzugefügt, um Code nach withFrameNanos-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. Beachten Sie, dass diese erst ab API 29 verfügbar sind. (Ida4ab)
  • Einführung von HorizontalPager und VerticalPager, mit denen sich Composeables auf Pager-Art anzeigen lassen. Einführung von PagerState zum Steuern der Pager und Abfragen von Informationen zum aktuellen Status des Pagers. Mit PageSize können Sie die Größe der Seite eines Ausklappers steuern. So können Sie ein Karussell wie Ausklapper erstellen. Einführung von PagerSnapDistance, 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 beide ScrollableState#canScrollForward/backward-Werte „false“ zurückgeben). (I1a4b0, b/255554340, b/255557085)
  • ScrollableState#canScrollForward und ScrollableState#canScrollBackward wurden hinzugefügt, um abzufragen, ob bei einem ScrollableState 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 von ScrollableState aktiviert. Verbraucher können damit dem Nutzer anzeigen, dass noch Platz zum Scrollen vorhanden ist. Außerdem kann damit verhindert werden, dass Delta an ScrollableStates 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 bei Clickables keine korrekten Verzögerungen für Wellen erzeugt. Dieses Problem wurde behoben.
  • In Ausklappern und Ansichten werden Tastendrücke jetzt korrekt verzögert, falls Touch-Gesten zu Scrollereignissen führen können.
  • Aktualisieren Sie die Benennung von snapStepSize, damit sie mit den anderen Methoden in SnapLayoutInfoProvider übereinstimmt. (Ife67c)
  • EmojiCompat wurde zu Compose hinzugefügt (Ibf6f9, b/139326806)
  • consumedWindowInsets() wurde in consumeWindowInsets() und withConsumedWindowInsets() in onConsumedWindowInsetsChanged() umbenannt und die Modifikatoren wurden veröffentlicht. (Ie44e1)

Fehlerkorrekturen

  • Der Absturz mit Modifier.animateItemPlacement() und Lazy-Rastern 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 wurden veröffentlicht. Version 1.4.0-alpha02 enthält diese Commits.

API-Änderungen

  • Für awaitFirstDown und waitForUpOrCancellation kann jetzt ein PointerEventPass 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 und BasicTextField wurde der Parameter minLines hinzugefügt. Damit kann die Mindesthöhe dieser zusammensetzbaren Funktionen in Bezug auf die Anzahl der Zeilen festgelegt werden (I24294, b/122476634).

Version 1.4.0-alpha01

24. Oktober 2022

androidx.compose.foundation:foundation:1.4.0-alpha01 und androidx.compose.foundation:foundation-layout:1.4.0-alpha01 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 von forEachGesture(), aber die Schleife über die Touch-Gesten wird vollständig innerhalb von AwaitPointerEventScope ausgeführt, sodass Ereignisse zwischen den Iterationen nicht verloren gehen können.
  • forEachGesture() wurde zugunsten von awaitEachGesture() eingestellt, da bei forEachGesture() Ereignisse zwischen den Touch-Gesten verloren gehen können. (Iffc3f, b/251260206)
  • WindowInsets.imeAnimationSource und WindowInsets.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 und LazyHorizontalStaggeredGrid eingeführt.
  • SnapFlingBehavior, rememberSnapFlingBehavior und andere entsprechende APIs wurden als experimentell hinzugefügt.
  • Bei Modifier.clickable, Modifier.toggleable und Modifier.selectable werden jetzt Wellen angezeigt, wenn mit der Tastatur oder dem Steuerkreuz 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 wurden veröffentlicht. Version 1.3.0-beta03 enthält diese Commits.

API-Änderungen

  • Optionen zum Anpassen der Zeilenumbrüche in Text hinzufügen (I86907)
  • BringIntoViewResponders können jetzt bei der Verarbeitung die aktuellen Grenzen einer Anfrage 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 Methode TextMeasurer.measure durch constraints: Constraints ersetzt, um Mindestbreite-Einschränkungen zu unterstützen. (I37530, b/242707525)
  • Modifier.withConsumedWindowInsets() wurde hinzugefügt, um WindowInsets für die Verwendung außerhalb von windowInsetsPadding zu verbrauchen.
  • MutableWindowInsets wurde hinzugefügt, damit WindowInsets 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 und FocusDirection.Out wurden in FocusDirection.Enter und FocusDirection.Exit umbenannt (Ia4262, b/183746982)
  • Eine rememberSnapFlingBehavior-Überlastung wurde eingeführt, mit der das Andocken in LazyLists schnell aktiviert werden kann. (Ifb48a)
  • Die snapFlingBehavior-Factory wurde durch eine konkrete SnapFlingBehavior-Klasse ersetzt. Die SnapLayoutInfoProvider-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 Placements zurückzugeben, wobei die gewünschte Unveränderlichkeit des zurückgegebenen Werts hervorgehoben wird. (I48b7c)
  • Einführung von SnapLayoutInfoProvider. Dabei wird ein LazyListState zum Erstellen einer Instanz von SnapLayoutInfoProvider benötigt, mit dem ein Snap FlingBehavior für LazyLists aktiviert 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 aus OverscrollEffect entfernt. Für Effekte, bei denen die Position des Mauszeigers wichtig ist, kann stattdessen Modifier.pointerInput { } in effectModifier verwendet werden, um die aktuelle Position des Mauszeigers abzurufen. (I9f606, b/241239306)
  • AwaitPointerEventScope#awaitLongPressOrCancellation als zusätzlicher Baustein für komplexere Gestenerkennung freigegeben (I04374, b/181577176)
  • lazyListSnapLayoutInfoProvider wurde eingeführt, um das Andocken in Lazy-Listen zu ermöglichen. (I3ecdf)
  • Einführung von SnapFlingBehavior, einem Fling-Verhalten, das das Andocken von Listen ermöglicht. Geben Sie einer Instanz von SnapLayoutInfoProvider 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 und LineHeightStyle entfernt. (I64bef)
  • Bei Textfeldern werden jetzt detailliertere Ausnahmen geworfen, wenn die von einem VisualTransformation bereitgestellte OffsetMapping ungültige Indizes zurückgibt. (Ie73f9, b/229378536)
  • Führen Sie experimentelle APIs ein, um die Logik des Artikelanbieters für Lazy-Layouts zu teilen. (Ic891c)
  • ScrollableDefaults.reverseDirection() ist nicht mehr experimentell. (Iba646)
  • SemanticsModifier.id wurde eingestellt und die Semantics-ID wurde stattdessen in LayoutInfo.semanticsId verschoben. (Iac808, b/203559524)
  • checkScrollableContainerConstraints() ist nicht mehr experimentell. (I2c290)
  • Modifier.clipScrollableContainer() ist nicht mehr experimentell. (Ia2b44)
  • TextInputService.show|hideSoftwareKeyboard einstellen Verwenden Sie stattdessen SoftwareKeyboardController im App-Code und TextInputSession 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 wurden veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.

API-Änderungen

  • Es wurde eine drawText-Erweiterungsfunktion für DrawScope hinzugefügt, um Text mit mehreren Stilen auf Composeables und Modifikatoren zu zeichnen, die auf einem DrawScope wie Canvas und drawBehind 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 neu ausgefüllt wurde, während die Auswahl aktiv war. (I1235b, b/208655565, b/214253689)

Version 1.3.0-alpha01

29. Juni 2022

androidx.compose.foundation:foundation:1.3.0-alpha01 und androidx.compose.foundation:foundation-layout:1.3.0-alpha01 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 von TalkBack-Links in AnnotatedStrings 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 wurden veröffentlicht. Version 1.2.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.1.0

  • LazyVerticalGrid und LazyHorizontalGrid sind jetzt stabil.
  • Sie können jetzt einen Inhaltstyp für Elemente in Lazy-Listen und -Rastern angeben. So können die Komponenten Elemente effizienter wiederverwenden.
  • Verzögerte Listen und Raster haben jetzt den Parameter userScrollEnabled, mit dem das Scrollen über Nutzergesten deaktiviert werden kann.
  • Eine neue experimentelle API mit dem Namen LazyLayout wurde hinzugefügt. Diese API verwenden wir intern für Lazy-Listen und ‑Raster.
  • Die OverscrollEffect API wurde als experimentell eingeführt. Sie können benutzerdefinierte Overscroll-Effekte definieren und benutzerdefinierten scrollbaren Containern eine Standardplattform-1 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 Maus und Touchpad wurde allen scrollbaren Containern hinzugefügt.

Version 1.2.0-rc03

29. Juni 2022

androidx.compose.foundation:foundation:1.2.0-rc03 und androidx.compose.foundation:foundation-layout:1.2.0-rc03 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 wurden veröffentlicht. Version 1.2.0-rc02 enthält diese Commits.

Version 1.2.0-rc01

15. Juni 2022

androidx.compose.foundation:foundation:1.2.0-rc01 und androidx.compose.foundation:foundation-layout:1.2.0-rc01 werden freigegeben. Version 1.2.0-rc01 enthält diese Commits.

API-Änderungen

  • Es wurde eine experimentelle OverscrollEffect eingeführt, die neben den Modifier.scrollable-Überladungen, die sie akzeptieren, benutzerdefinierte Überblendungseffekte ermöglicht.
  • Die experimentelle LocalOverScrollConfiguration wurde aus foundation.gesture in das Foundation-Paket verschoben und in LocalOverscrollConfiguration umbenannt (If19fb, b/204650733)
  • Schnittstellen in Erstellungsbibliotheken werden jetzt mit jdk8-Standardschnittstellenmethoden erstellt (I5bcf1).
  • Einführung einer experimentellen API checkScrollableContainerConstraints(), mit der sich prüfen lässt, ob scrollbare Container verschachtelt sind. Sie können sie verwenden, wenn Sie über LazyLayout eigene scrollbare Lazy-Layouts erstellen. (Id6fab, b/233352497)
  • Das verworfene LazyVerticalGrid-Objekt wurde aus dem androidx.compose.foundation.lazy-Paket entfernt. Die neue stabile API befindet sich unter androidx.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 und MutableIntervalList 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 von LazyColumn ä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, dass ime-Einblendungen bereits seit API 23 gemeldet werden, aber nur ab Version 30 animiert sind. (Ia7fc0, b/230756508)
  • Wenn Sie die Vorwärts-Löschtaste drücken, wenn sich der Cursor am Ende eines Textfelds befindet, stürzt dies nicht mehr ab.
  • Für DeleteSurroundingTextCommand und DeleteSurroundingTextInCodePointsCommand 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.

  • Herunterladbare Schriftauflösungen, die die Layoutgröße von Text oder TextField nicht ändern, wurden 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 wurden veröffentlicht. Version 1.2.0-beta01 enthält diese Commits.

Neue Funktionen

  • Dies ist die erste Betaversion von Version 1.2.

API-Änderungen

  • Es wurde eine experimentelle BeyondBoundsInterval hinzugefügt, die von benutzerdefinierten Implementierungen von LazyList verwendet werden kann, wenn Elemente außerhalb des sichtbaren Bereichs angeordnet werden (Ifabfb, b/184670295)
  • LineHeightBehavior wird in LineHeightStyle umbenannt.
  • LineVerticalAlignment wird in LineHeightStyle.Alignment umbenannt.
  • Umbenennen LineHeightTrim wird in LineHeightStyle.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 in itemCount (Id409c) umbenannt.
  • Pinsel wurde zu TextStyle und SpanStyle hinzugefügt, um Text mit Farbverlauf zu zeichnen. (I53869, b/187839528)
  • Die Attribute trimFirstLineTop und trimLastLineBottom von LineHeightBehavior 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 zu TextStyle und ParagraphStyle. LineHeightBehavior hinzugefügt, um festzulegen, ob die Zeilenhöhe oben in der ersten Zeile und unten in der letzten Zeile angewendet wird. Außerdem definiert er die Ausrichtung der Linie in dem durch TextStyle(lineHeight) vorgegebenen Feld.

    Es ist beispielsweise möglich, ein Verhalten zu erhalten, das dem über LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false) definierten Verhalten ähnelt.

  • trimFirstLineTop- und trimLastLineBottom-Konfigurationen funktionieren nur dann richtig, wenn includeFontPadding 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. Sich überschneidende Anfragen werden in die Warteschlange gestellt. (I43e7f, b/216790855)
  • Gleichzeitige BringIntoViewRequester.bringIntoView-Aufrufe für vollständig überlappende Rechtecke berücksichtigen jetzt nur die Anfrage des größeren Rechtecks. (I34be7, b/216790855, b/184760918)
  • Standardmäßig aktiviert: includeFontPadding. Es ist möglich, die includeFontPadding mit dem Attribut TextStyle.platformTextStyle zu deaktivieren. In naher Zukunft werden wir das Standardverhalten ändern. Bis dahin können wir jedoch Verbesserungen bei der Zeilenhöhe (aosp/2058653) besser integrieren und TextField-Ausbrüche beheben. (I01423, b/171394808)
  • Modifier.bringIntoViewRequester verwendet onGloballyPositioned 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 wurden veröffentlicht. 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. Mit consume() können Sie die Änderung vollständig übernehmen. Mit isConsumed kannst du feststellen, ob jemand anderes die Änderung bereits verwendet hat.
  • PointerInputChange::copy() erstellt jetzt immer eine flache Kopie. Das bedeutet, dass Kopien von „PointerInputChange“ genutzt werden, sobald eines der Exemplare verarbeitet wurde. Wenn Sie eine nicht gebundene PointerInputChange erstellen möchten, verwenden Sie stattdessen den Konstruktor. (Ie6be4, b/225669674)
  • Einführung einer neuen experimentellen LazyLayout API. So können Sie eigene Komponenten wie LazyColumn von LazyVerticalGrid erstellen. Die API befindet sich noch in der Entwicklungsphase und kann in zukünftigen Releases geändert werden. (Iba2bc, b/166591700)
  • AndroidFont verwendet jetzt typefaceLoader als Konstruktorparameter. (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 und LazyGridLayoutInfo haben jetzt die Felder beforeContentPadding und afterContentPadding (I3b628, b/200920410)
  • KeyboardType.Decimal wurde als Alternative zu Keyboard.Number hinzugefügt, um das Dezimaltrennzeichen speziell in die Eingabemethode einzuschließen. (Iec4c8, b/209835363)
  • Fügen Sie den neuen Schriftart-Beschreibungstext „Schriftart(DeviceFontFamilyName)“ hinzu, um optional systeminstallierte Schriftarten in Schriftart-Fallback-Ketten abzurufen. (I30468, b/219754572)
  • PointerEventType.Scroll und PointerEvent.scrollDelta sind jetzt stabile APIs (I574c5, b/225669674).
  • Die hinzugefügte temporäre Kompatibilitätskonfiguration für includeFontPadding in TextStyle/ParagraphStyle. includeFontPadding kann über TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)) geändert werden. Dies ist eine temporäre Konfigurationsoption, mit der die Migration aktiviert wird. Sie wird entfernt. (If47be, b/171394808)
  • FontFamily.Resolver wurde aktualisiert, um die systemweite Bedienungshilfe „Fettdruck“ zu integrieren (I6c1e7)
  • Mit der Erweiterungseigenschaft consumeWindowInsets von ComposeView können Entwickler die Nutzung von Android WindowInsets deaktivieren. So können separate ComposeViews in der Hierarchie jeweils WindowInsets 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 mit FocusProperties zusammengeführt und focusProperties() verfügt jetzt über alle Funktionen von focusOrder(). FocusOrder und focusOrder() wurden eingestellt. focusOrder(), das ein focusRequester akzeptiert, sollte durch einen focusRequester()-Modifikator in Kombination mit focusProperties() ersetzt werden. So können die Modifikatoren besser voneinander getrennt werden. (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() und Modifier.scrollable() wird jetzt so gescrollt, dass das fokussierte Compose-Objekt sichtbar bleibt, wenn der Scrollbereich neu skaliert wird und das fokussierte Compose-Objekt zuvor sichtbar war.
  • Textfelder werden jetzt über der Tastatur angezeigt, wenn sie fokussiert sind und die Tastatur angezeigt wird, wenn sie sich in einem nicht Lazy Scrollable befinden und der Modus für die weiche Eingabe ADJUST_RESIZE ist. (I4a485, b/190539358, b/192043120, b/216842427)

Version 1.2.0-alpha05

9. März 2022

androidx.compose.foundation:foundation:1.2.0-alpha05 und androidx.compose.foundation:foundation-layout:1.2.0-alpha05 werden freigegeben. Version 1.2.0-alpha05 enthält diese Commits.

API-Änderungen

  • LazyVerticalGrid und LazyHorizontalGrid sind jetzt stabil. (I307c0)
  • LazyGridItemInfo.Unknown wurde durch separate LazyGridItemInfo.UnknownRow und LazyGridItemInfo.UnknownColumn ersetzt (I56d51)
  • LazyVerticalGrid/LazyHorizontalGrid und alle zugehörigen APIs wurden in das Unterpaket .grid verschoben. Bitte aktualisieren Sie Ihre Importe von androidx.compose.foundation.lazy auf androidx.compose.foundation.lazy.grid. (I2d446, b/219942574)
  • SMS: includeFontPadding ist jetzt standardmäßig deaktiviert. Die Probleme mit dem Zuschneiden aufgrund von includeFontPadding=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 für die Verwendung der Kotlinx-Koroutinen 1.6.0 (I3366d)

Version 1.2.0-alpha04

23. Februar 2022

androidx.compose.foundation:foundation:1.2.0-alpha04 und androidx.compose.foundation:foundation-layout:1.2.0-alpha04 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 jetzt line breaking vor Elementen, deren Spannweite nicht in die aktuelle Zeile passt. (I05c40, b/207462103)
  • excludeFromSystemGestures in systemGesturesExclusion 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 und ComposableOpenTarget wurden hinzugefügt. Damit können Sie zur Kompilierungszeit Berichte dazu erhalten, wann eine zusammensetzbare Funktion auf einen Anwender angewendet wird, für den sie nicht vorgesehen ist.

    In den meisten Fällen können die Annotationen vom Compose-Compiler-Plug-in abgeleitet werden. Die direkte Verwendung dieser Annotationen sollte daher selten sein. 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 oder ReusableComposeNode aufrufen, eine CompoableTarget-Anmerkung für die Funktion und alle zusammensetzbaren Lambda-Parametertypen hinzufügen. Es wird jedoch empfohlen, eine Anmerkung zu erstellen, die mit ComposableTargetMarker gekennzeichnet ist, und dann die gekennzeichnete Anmerkung anstelle von ComposableTarget direkt zu verwenden. Eine mit ComposableTargetMarker gekennzeichnete zusammensetzbare Anmerkung entspricht einer ComposbleTarget mit dem voll qualifizierten Namen der Attributklasse als Anwenderparameter. Ein Beispiel für die Verwendung von ComposableTargetMarker finden Sie unter anroidx.compose.ui.UiComposable. (I38f11)

Fehlerkorrekturen

  • Es ist jetzt zulässig, negative Scroll-Offsets an LazyGridState.scrollToItem() und LazyGridState.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

  • notifyFocusedRect-Methoden in TextInputSession und TextInputService wurden verworfen und werden nicht aufgerufen. Verwende stattdessen BringIntoViewRequester. (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 über LocalFontFamilyResolver.current verfügbar.
    • createFontFamilyResolver(context) und createFontFamilyResolver(context, coroutineScope) wurden hinzugefügt, um neue FontFamily-Resolver außerhalb des Editors 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)
  • 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 eine Font.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)
  • 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 stattdessen FontFamilyResolver.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 stattdessen FontFamilyResolver.preload (If8e7c, b/174162090).
  • Sie können jetzt den Inhaltstyp für die Elemente von LazyVerticalGrid angeben. Die Funktionen „item“/„items“ auf LazyGridScope 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 und LazyGridLayoutInfo 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. Die Bereitstellung solcher Informationen hilft dabei, die Logik für die Zusammensetzung von Elementen effizienter zu nutzen und nur die Inhalte zwischen Elementen eines ähnlichen Typs wiederzuverwenden. (I26506)
  • Der SubcomposeLayoutState-Konstruktor, der maxSlotsToRetainForReuse akzeptiert, wurde eingestellt. Stattdessen gibt es einen neuen Konstruktor, der SubcomposeSlotReusePolicy akzeptiert. Diese neue Schnittstelle ermöglicht eine detailliertere Steuerung der Slots, die für die spätere Wiederverwendung beibehalten werden sollen. (I52c4d)
  • Fügt Modifikatoren für WindowInsets hinzu, sowohl für das Padding als auch für die Größenanpassung. 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)
  • Der Eingabemethode „Softtastatur“ flackert nicht mehr, wenn der Fokus zwischen Textfeldern geändert wird. (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 die setSystemGestureExclusionRects 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, die Modifier.scrollable verwenden, unterstützen jetzt das Scrollen mit dem Mausrad. (I2b5e1, b/198214718)

Version 1.2.0-alpha01

12. Januar 2022

androidx.compose.foundation:foundation:1.2.0-alpha01 und androidx.compose.foundation:foundation-layout:1.2.0-alpha01 werden freigegeben. Version 1.2.0-alpha01 enthält diese Commits.

API-Änderungen

  • Den Typen LazyColumn, LazyRow und LazyVerticalGrid wurde der neue Parameter userScrollEnabled 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 du Ziehpunkte in einem SelectionContainer ziehst. (I30b38, b/139320979)

Fehlerkorrekturen

  • Der Cursor-Handle für TextField wird jetzt ausgeblendet, wenn der Inhalt nicht mehr sichtbar ist. (I14552, b/208883748)

Abhängigkeitsupdates

  • Jetzt abhängig von Kotlin 1.6.10.

Version 1.1

Version 1.1.1

23. Februar 2022

androidx.compose.foundation:foundation:1.1.1 und androidx.compose.foundation:foundation-layout:1.1.1 wurden veröffentlicht. Version 1.1.1 enthält diese Commits.

Fehlerkorrekturen

  • Fehler bei NullPointerException unter androidx.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
  • In Bezug auf Compose 1.0 wird der Layoutbereich von Material-Komponenten so erweitert, dass sie den Richtlinien für Bedienungshilfen von Material für die Größe des Berührungszielbereichs entsprechen. 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 Navigation Rail
  • 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 wurden veröffentlicht. Version 1.1.0-rc03 enthält diese Commits.

Fehlerkorrekturen

  • Aktualisiert, um Compose Material 1.1.0-rc03 zu unterstützen

Version 1.1.0-rc01

15. Dezember 2021

androidx.compose.foundation:foundation:1.1.0-rc01 und androidx.compose.foundation:foundation-layout:1.1.0-rc01 werden freigegeben. Version 1.1.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Jetzt ist es zulässig, negative Scroll-Offsets an LazyListState.scrollToItem() und LazyListState.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, um mit Kotlin-1.6.0 kompatibel zu sein

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 zum Animieren der Positionen von Elementen in Lazy-Listen hinzugefügt. Im LazyItemScope gibt es einen neuen Modifikator namens Modifier.animateItemPlacement(). Verwendungsbeispiel:

      var list by remember { mutableStateOf(listOf("A", "B", "C")) }
      LazyColumn {
          item {
              Button( list = list.shuffled() }) {
                  Text("Shuffle")
              }
          }
          items(list, key = { it }) {
              Text("Item $it", Modifier.animateItemPlacement())
          }
      }
    
    • Wenn Sie einen Schlüssel über LazyListScope.item oder LazyListScope.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, die durch Ereignisse wie Anordnungen oder Ausrichtungsänderungen hervorgerufen werden, animiert. (I59e7b, b/150812265)

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 wurden veröffentlicht. 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 Variante für das Layout hinzugefügt, die effizienter ist (Ib0d9a)
  • SemanticsNodeInteraction.performSemanticsAction gibt jetzt den SemanticsNodeInteraction-Wert zurück, auf dem 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 wurden veröffentlicht. Version 1.1.0-alpha05 enthält diese Commits.

API-Änderungen

Fehlerkorrekturen

  • Die Unterstützung von Bedienungshilfen für Scrollables (sowohl Lazy als auch Lazy) in Bezug auf Scrollen wurde korrigiert (I6cdb0).

Version 1.1.0-alpha04

15. September 2021

androidx.compose.foundation:foundation:1.1.0-alpha04 und androidx.compose.foundation:foundation-layout:1.1.0-alpha04 wurden veröffentlicht. Version 1.1.0-alpha04 enthält diese Commits.

API-Änderungen

  • performGesture und GestureScope wurden eingestellt und durch performTouchInput und TouchInjectionScope ersetzt. (Ia5f3f, b/190493367)
  • touchBoundsInRoot wurde SemanticsNode 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 Kotlin 1.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 enthält jetzt 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 verbessern. (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 und requiredSize 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 jetzt Quell- und Ziel-Rechtecke, um einen optionalen Parameter für die Filterqualität zu verwenden. Das ist nützlich für Pixel-Art, die beim Skalieren für pixelbasierte Kunst gepixelt werden soll. BitmapPainter und zusammensetzbare Funktion für Bilder wurden aktualisiert, um auch einen optionalen FilterQuality-Parameter zu nutzen (Ie4fb0, b/180311607).
  • TextField löscht jetzt die Auswahl, wenn die Schaltfläche „Zurück“ gedrückt wird, was dem Verhalten von Android EditText entspricht. (I3ca16, b/174173645)
  • Cursor-Ziehpunkt hinzufügen. (I07a82, b/173016579)

Fehlerkorrekturen

  • Das Scrollen über 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 und abhängig von Kotlin-1.5.21.

Version 1.0.0

28. Juli 2021

androidx.compose.foundation:foundation:1.0.0 und androidx.compose.foundation:foundation-layout:1.0.0 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 Datei build.gradle vorübergehend Ihre minSdkVersion auf 24 oder höher, um das Problem zu beheben. Dieses Problem wird in der nächsten Version von Android Studio Bumblebee und AGP 7.1 behoben. (b/194289155)

Version 1.0.0-rc02

14. Juli 2021

androidx.compose.foundation:foundation:1.0.0-rc02 und androidx.compose.foundation:foundation-layout:1.0.0-rc02 wurden veröffentlicht. Version 1.0.0-rc02 enthält diese Commits.

  • 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 wurden veröffentlicht. Version 1.0.0-beta09 enthält diese Commits.

API-Änderungen

  • ManualFrameClock wurde entfernt. Wenn Sie Animationen steuern möchten, verwenden Sie stattdessen composeTestRule.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 wurde 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. Bei der Codeaufnahme können private Konstanten vor der Stabilisierung deklariert werden. (Ia5d48)
  • IdlingStrategy wurde der AndroidComposeTestRule hinzugefügt. Mit dieser Funktion können Testframeworks einen alternativen Mechanismus zum Warten auf oder Erreichen des Inaktivitätszustands 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 Verzeichnis src/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 von adb shell profman --dump-classes-and-methods ... verwendet wird. Für die Ausrichtung auf Methoden oder Klassen gibt es zwei Arten dieser Regeln.

  • Eine Methodenregel hat das folgende Muster:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • Eine Klassenregel hat das folgende Muster:

    <CLASS_DESCRIPTOR>
    
  • Hier ist <FLAGS> eines oder mehrere der Zeichen H, S und P, 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 Klasse androidx.compose.runtime.SlotTable hätte beispielsweise den Deskriptor Landroidx/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 Methode fun isPlaced(): Boolean von LayoutNode hat die Signatur isPlaced()Z.

  • Diese Muster können Platzhalter (**, * und ?) enthalten, damit eine einzelne Regel mehrere Methoden oder Klassen umfasst.

Welchen Zweck haben die Regeln?

  • Eine Methode mit dem Flag H gibt an, dass diese Methode eine "heiße" Methode ist und im Voraus kompiliert werden sollte.

  • Eine Methode mit dem Flag S 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. Dies hat keine Auswirkungen auf Debug-fähige Anwendungen.

Version 1.0.0-beta08

2. Juni 2021

androidx.compose.foundation:foundation:1.0.0-beta08 und androidx.compose.foundation:foundation-layout:1.0.0-beta08 werden freigegeben. Version 1.0.0-beta08 enthält diese Commits.

API-Änderungen

  • „NestedScrollSource“-Enum wird durch eine Inline-Klasse ersetzt. (Ie321b, b/187055290)
  • Die Verwendung von Enums wurde in Inline-Klassen umgestellt, um Probleme mit umfassenden Wenn-Beschreibungen zu vermeiden, wenn neue Enum-Werte hinzugefügt werden. (I2b5eb)
  • Fügt ein Zeitlimit für Tipp-/Ein-/Aus-Schaltflächen hinzu, um zu verhindern, dass beim Scrollen/Ziehen eine Welle angezeigt wird (Ia2704, b/168524931).
  • Die Properties „ContentDescription“ und „Text-Semantik“ sind keine einzelnen Werte mehr, sondern Listen. Dies ermöglicht es, sie unverändert zusammenzuführen, anstatt Verkettungen zu verwenden. Außerdem wurden bessere Test-APIs zur Nutzung dieser Änderungen bereitgestellt (Ica6bf, b/184825850).
  • Modifier.focusModifier() wurde verworfen und durch Modifier.focusTarget() (I6c860) ersetzt
  • Das Enum „KeyboardType“ wird durch eine Inline-Klasse ersetzt. (I73045, b/187055290)
  • FocusState-Enum durch eine FocusState-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)
  • Es wurde ein Fehler behoben, durch den scrollbare Container ihre untergeordneten Elemente an der Querachse beschneiden. Das Problem konnte leicht reproduziert werden, wenn eine LazyRow mit Kartenelementen vorhanden war. Jetzt wird der Schatten nicht mehr abgeschnitten. (Icb635, b/186318448)
  • Bei Verwendung von „Modifier.combinedClickable“ (I2298c, b/186223077) blieben die Wellen und andere Hinweise bei einem langen Klick manchmal hängen. Dieses Problem wurde behoben.
  • Jetzt werden die Positionsänderungen von detectDragGesures, detectVerticalGestures und detectHorizontalGestures 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 erfasst werden, nicht die Layoutkoordinaten nach Anwendung aller Modifikatoren. 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 den Vorabruf 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)
  • Entferne „colorBackground“. (I38660)
  • Auswahlhintergrund mit DrawScope zeichnen. (I73c61, b/186674472)
  • Ein Regressionsfehler in der Betaversion 06, der sich auf Zeilen/Spalten mit „spacedBy“-Anordnungen für das Layout gewichteter untergeordneter Elemente auswirkte, wurde behoben. (Ifaf8c, b/187326588)

Version 1.0.0-beta06

5. Mai 2021

androidx.compose.foundation:foundation:1.0.0-beta06 und androidx.compose.foundation:foundation-layout:1.0.0-beta06 werden freigegeben. Version 1.0.0-beta06 enthält diese Commits.

API-Änderungen

  • Konflikt mit Navigationsbewegung lösen (I1145e)
  • Bedienungshilfen für CollectionInfo und CollectionItemInfo, mit denen Sammlungen und ihre Elemente für Bedienungshilfen markiert werden können (Id54ef, b/180479017)
  • SemanticsActions.ScrollToIndex wurde hinzugefügt, um eine Liste mit indexierten Elementen zu dem Element mit einem bestimmten Index zu scrollen, und SemanticsProperties.IndexForKey, um den Index eines Elements in einer Liste mit verknüpften Elementen abzurufen. Beide Aktionen werden von LazyList implementiert.
    • Es wurde SemanticsNodeInteraction.performScrollToIndex hinzugefügt, das eine Liste zum angegebenen Index scrollt, und SemanticsNodeInteraction.performScrollToKey, das eine Liste zum Element mit dem angegebenen Schlüssel scrollt. (I4fe63, b/178483889, b/161584524)
  • Unterstützung für das Speichern von AnnotatedString in TextFieldValue.Saver Die Dienstprogrammfunktionen „addTtsAnnotation“ und „withAnnotation“ wurden zu „AnnotatedString.Builder“ hinzugefügt (I8cbdc, b/178446304)
  • PaddingValues(horizontal, vertical) (I05571, b/181336792) wurden Standardwerte für 0.dp hinzugefügt.

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 und accessibilityActionScrollDown 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 wurden veröffentlicht. Version 1.0.0-beta04 enthält diese Commits.

API-Änderungen

  • Benennen Sie hideSoftwareKeyboard und showSoftwareKeyboard für SoftwareKeyboardController in hide() bzw. show() um.
    • Vollständige CompositionLocal-Schnittstelle für LocalSoftwareKeyboardController bereitstellen, sodass diese festgelegt werden kann (besonders in Tests nützlich) (I579a6)
  • TextOverflow.Visible wird eingeführt. (Ic8f89)
  • Öffentliche Instanzen von RowScope, ColumnScope, BoxScope und BoxWithConstraintsScope 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 waren lokale zusammensetzbare Funktionen aufgrund ihrer Parameter überspringbar. 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( onCountChange(count + 1) }) {
        Text("Increment")
      }
    }
    

    Vor dieser Änderung wurde die Funktion ShowCount immer übersprungen, auch nachdem der Parameter count 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 verworfen. Wenn Sie withFrameNanos oder Recomposer.runRecomposeAndApplyChanges ohne MonotonicFrameClock aufrufen, wird jetzt IllegalStateException 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 onStart-Callback wurde detectDragGestures hinzugefügt (I67269, b/179995594).
  • Modifikatoren zur Größenanpassung für intrinsische Elemente 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.
    • Anstatt interactionState = remember { InteractionState() } an Komponenten wie Button und Modifier.clickable() zu übergeben, verwenden Sie interactionSource = remember { MutableInteractionSource() }.
    • 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. Bei dieser Größe werden die Messbeschränkungen möglicherweise nicht berücksichtigt. (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 geglättet zu einem bestimmten Element in der Liste. (I4bfd7)

  • ScrollableState.smoothScrollBy() wurde in animateScrollBy() umbenannt LazyListState.snapToItemIndex() wurde in scrollToItem() umbenannt ScrollState.smoothScrollTo() wurde in animateScrollTo() umbenannt (I35ded)

  • Modifier.zoomable wurde durch Modifier.transformable ersetzt. Die Funktionen smoothPanBy und smoothRotationBy wurden hinzugefügt. (Ifc32b, b/175294473)

  • Die defaultFactory für compositionLocalOf und staticCompositionLocalOf 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 die Lambda-Funktion defaultFactory 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() in Indication#rememberUpdatedIndication(InteractionState) geändert und Parameter InteractionState 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 in rememberUpdatedIndication() erfolgen. Der Parameter indication in Modifier.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) entfernt

  • Die 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. (I4aae)

  • Modifier.tapGestureFilter wurde entfernt. Verwenden Sie stattdessen Modifier.pointerInput { detectTapGestures(...) }. (I266ed, b/175294473)

  • ein teilweiser Verbrauch wurde aus dem Zeiger-Eingabesystem entfernt. Die empfohlene Methode zur Koordination der teilweisen Nutzung ist Modifier.nestedScroll. (Ie9c9b)

  • Die Ausrichtung wurde in das Basispaket verschoben. VelocirtTracker 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 „memoryCoroutineScope()“ können Sie den Umfang der Zusammensetzung abrufen, um sie aufzurufen (I16f60, b/175294473).

  • „Anbieter“ wurde in „CompositionLocalProvider“ umbenannt.

    • Der Kompositionskonstruktor 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 wurde zu einer 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 „clearRoots“-Funktion der obersten Ebene von @TestOnly 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 einer einfachen Lambda-Funktion. Du kannst einen Zustand über rememberDraggableState { delta -> } erstellen, um das gleiche Verhalten wie zuvor zu erhalten (Ica70f, b/175294473).

  • Die Modifikatoren „requiredWidth(IntrinsicSize)“ und „requiredHeight(IntrinsicSize)“ wurden für die erforderliche Größ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

  • Neue lokale LocalSoftwareKeyboardController-Zusammensetzungs-API hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I658b6, b/168778053)

Version 1.0.0-alpha12

10. Februar 2021

androidx.compose.foundation:foundation:1.0.0-alpha12 und androidx.compose.foundation:foundation-layout:1.0.0-alpha12 werden freigegeben. Version 1.0.0-alpha12 enthält diese Commits.

API-Änderungen

  • Modifier.pointerInput erfordert jetzt das Speichern von Schlüsseln, um anzugeben, wann die Koroutine zur Erkennung der Zeigereingabe für neue Abhängigkeiten neu gestartet werden soll. (I849cd)
  • 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 Parallelität zu VectorPainter herzustellen. (Iba381, b/174565889)
  • Bessere APIs für den Test von Substrings, bei denen der Substring jetzt als Argument verwendet wird (Icbe78)
  • Ein InfiniteAnimationPolicy-Kontextelement für die Koroutine wurde eingeführt, das in unendlichen Animationen angewendet wird. Standardmäßig ist keine Richtlinie installiert, es sei denn, Sie führen Tests mit ComposeTestRule aus. (I50ec4, b/151940543)
  • „Animatable.snapTo“ und „Animatable.stop“ sind jetzt Aussetzungsfunktionen (If4288)
  • „ComponentActivity.setContent“ wurde nach androidx.activity.compose.setContent im Modul androidx.activity:activity-compose verschoben. (Icf416)
  • Die Methoden zum Löschen und copy() wurden aus mehreren Klassen entfernt, in denen sie selten verwendet wurden. (I26702, b/178659281)
  • Unterstützung für benutzerdefinierte Schlüssel für LazyColumn/LazyRow wurde hinzugefügt. 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 durch Constraints.constrain ersetzt. (I8b8ea)

  • „loadFontResource“ wurde eingestellt. Verwenden Sie stattdessen „fontResource“. „imageResource“, „loadImageResource“, „vectorResource“ und „loadVectorResource“ wurden eingestellt. Verwenden Sie stattdessen painterResource. (I6b809)

  • Aus Leistungsgründen 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 Semantic zu prüfen (I8e07a)

  • Modifier.clickable bietet jetzt keine Unterstützung für doppelte und lange Klicks. Verwenden Sie dazu Modifier.combinedClickable. (Iafad1)

  • toIntPx() wurde inroundToPx() 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 um eine Achse verwenden (I0ba93, b/175294473).

  • Die Namen der Bildschirmschoner wurden umbenannt, damit sie mit der Umbenennung von „Ambient“ in „CompositionLocal“ übereinstimmen. Ambients hießen früher AmbientFoo, CompositionLocals heißt jetzt LocalFoo. (I2d55d)

  • Die Auswahl wurde in die Foundation verschoben. (I7892b)

  • Ähnlich wie wir zuvor state { 0 }-Kompositen entfernt und die Verwendung von remember { mutableStateOf(0) } empfohlen haben, werden wir savedInstanceState { 0 }-Kompositen entfernen. Verwenden Sie stattdessen rememberSaveable { 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 Parameter stateSaver 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 weiteren Annotationen 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 sich nicht mehr positiv auf die Leistung auswirken (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. Eine 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 befindet sich jetzt in Composer:runtime und AndroidUiDispatcher ist in Composer: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 Richtung „rtl“ 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.scaleTouchFilter wurde entfernt. Verwenden Sie stattdessen Modifier.zoomable. Alternativ können Sie auch Modifier.pointerInput { detectMultitouchGestures { ... }} (Id5da1, b/175294473) verwenden.

  • Die Funktion „Animierter Wert/Gleitkommazahl“ wird jetzt 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 Sperrung einstellen, scrollTo entfernen (nicht gesperrtes Element)

    Wir empfehlen jetzt, Sperren zu verwenden, um das Scrollen zu steuern und auf das Ende des Scrollens zu warten. Im Rahmen dieser Umstellung werden die nicht 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)

  • Der Parameter für die Inhaltsbeschreibung wurde dem Bild und dem Symbol hinzugefügt. Sie wird verwendet, um Bedienungshilfen zu beschreiben (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 im Vergleich zu LazyColumn bei großen scrollbaren Inhalten weniger effizient, da wir mit LazyColumn nur sichtbare Elemente zusammensetzen/messen/zeichnen können. Um zu verhindern, dass Nutzer ineffizient arbeiten, haben wir 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)-Factory-Methode für den Bereich von LazyColumn/LazyRow/LazyVerticalGrid. items(items: List) und itemsIndexed(items: List) sind jetzt Erweiterungsfunktionen, die bei Verwendung manuell importiert werden müssen. Neue Erweiterungsüberladungen für Arrays: „items:items: Array“ und itemsIndexed(Array) (I803fc, b/175562574)

  • 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 werkseitigen Funktionen für Schriftart/Schriftartfamilie/Schriftart

    • 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, das ComposeTestRule erweitert und setContent definiert, das aus ComposeTestRule entfernt wurde. Es wurde eine Fabrikmethode createEmptyComposeRule() hinzugefügt, die eine ComposeTestRule zurückgibt und keine Aktivität für Sie startet. Verwenden Sie diese Option, wenn Sie Ihre Aktivität während des Tests starten möchten, z. B. mit ActivityScenario.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)

  • TextFieldValue akzeptiert AnnotatedString. 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“ und „Uptime“ 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ür CompositionLifecycleObserver 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 jedoch eine Referenz in einer Zusammensetzung mehrmals gespeichert wurde, wird onRemembered für jede Referenz aufgerufen, wobei onEnter nur einmal aufgerufen wird. onEnter wurde mehrmals aufgerufen, wenn das Objekt in Unterkompositionen verwendet wurde, z. B. WithConstraints und Scaffold. Dadurch war die Garantie für einen einzelnen onEnter-Aufruf nicht zuverlässig und wurde für RememberObserver entfernt.

    RememberObserver fügt onAbandoned hinzu. Dieser wird aufgerufen, wenn die RememberObserver-Instanz von dem an remember übergebenen Callback zurückgegeben wird, aber im Zusammensetzungsstatus nicht gespeichert wurde. Daher wird onRemembered niemals 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 von RememberObserver gemäß der Empfehlung oben mit einer einzelnen Referenz eine externe Ressource erfasst, geben sowohl onForgotten als auch onAbandoned an, dass die Ressource nicht mehr benötigt wird. Wenn das Objekt die in onRemembered gestartete Arbeit oder zugewiesenen Ressourcen erfasst, kann onAbandoned ignoriert werden, da es nicht aufgerufen wird, wenn onRemembered 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
    • Schriftstärke
    • 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)

  • Verwende „ImeAction.None“ anstelle von „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. In der Regel ist es besser, die Größe von onRoot() oder mindestens die Fenstergröße zu verwenden. (I62db4)

Version 1.0.0-alpha10

13. Januar 2021

androidx.compose.foundation:foundation:1.0.0-alpha10 und androidx.compose.foundation:foundation-layout:1.0.0-alpha10 werden freigegeben. Version 1.0.0-alpha10 enthält diese Commits.

API-Änderungen

  • „ImeOptions“ und „KeyboardOptions“ sind keine Datenklassen mehr (I3c898, b/168684531)
  • Änderungen der VisualTransformation API
    • OffsetMap in OffsetMapping umbenannt
    • OffsetMapping.identityOffsetMap in OffsetMapping.Identity umbenannt
    • PasswordTransformation ist keine Datenklasse mehr
    • OffsetMapping wurde in eigene Datei verschoben
    • (I0bdf3)
  • Änderungen an der EditOperations API
    • „EditOperation“ in „EditCommand“ umbenannt
    • Befehlssuffix für konkrete Implementierungen von EditOperation hinzugefügt
    • EditCommands 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)
  • Zusätzliche experimentelle stickyHeader-Methode für LazyColumn/LazyRow (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() in val Dp.isFinite geändert (I50e00)
  • Constraints#satisfiedBy wurde in isSatisfiedBy umbenannt. (I9cf5c)
  • „isSpecified“, „isUnspecified“ und „useOrElse“ wurden 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() wird jetzt durch animateAsState() ersetzt. Dieser gibt State<T> anstelle von T zurück. 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. „Modifier.progressSemantics“ wurde geändert, sodass Slider auch auf ihn zugreifen 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 wurden veröffentlicht. 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)

  • LazyColumnFor, LazyRowFor, LazyColumnForIndexed und LazyRowForIndexed werden eingestellt. Verwenden Sie stattdessen LazyColumn und LazyRow (I5b48c).

  • Zum Anhalten von Zeigereingabe-APIs wurde HandlePointerInputScope in AwaitPointerEventScope und handlePointerInput() in awaitPointerEventScope() umbenannt. (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. Wenn true Elemente von unten nach oben bestehen und LazyListState.firstVisibleItemIndex == 0 bedeutet, dass sich das erste Element unten befindet. (I552ae, b/166589935)

  • Der Parameter „verticalArrangement“ wurde für „LazyColumn“ hinzugefügt. Der Parameter „horizontalArrangement“ wurde für LazyRow hinzugefügt. 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)

  • „DetectMultitouchTouchs“ verwendet jetzt einen Callback mit kombinierten Parametern für den Schwerpunkt, das Schwenken, Zoomen und Drehen. (Ie6e1c)

  • ContentDrawScope wurde in das UI-Grafikmodul verschoben, um es mit DrawScope zusammenzuführen. (Iee043, b/173832789)

Fehlerkorrekturen

  • Lambdas in Offset-Modifikatoren geben jetzt IntOffset statt Float zurück. (Ic9ee5, b/174137212, b/174146755)
  • SlotTable, SlotReader und SlotWriter wurden aus der öffentlichen API entfernt. Diese wurden zuvor als „InternalComposeAPI“ gekennzeichnet. Jetzt sind sie im Modul „Schreiben“ enthalten.

    „CompositionData“ und „CompositionGroup“ wurden als Ersatz für die UI-Tooling API hinzugefügt, um Informationen zur Komposition 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 erfordert eine Zustimmung (I0a1ec).

  • Destruktive Deklarationen zum Erstellen von FocusRequester-Instanzen hinzufügen (I35d84, b/174817008)

  • „accessibilityLabel“ wurde in „contentDescription“ umbenannt. „accessibilityValue“ wurde in „stateDescription“ umbenannt. (I250f2)

  • Mehrere neue Funktionen in SelectionRegistrar wurden eingeführt und in „onPositionChange“ in „notificationPositionChange“ umbenannt. (Ifbaf7)

  • AndroidOwner intern gemacht (Ibcad0, b/170296980)

  • Neue Funktion infiniteRepeatable zum Erstellen einer InfiniteRepeatableSpec (I668e5)

  • Die Schnittstelle Applier wurde geändert, um das Erstellen von Baumstrukturen mit dem Bottom-up-Ansatz anstatt von oben nach unten zu vereinfachen.

    Die Methode insert() wurde in insertTopDown() umbenannt.

    Die neue Methode insertBottomUp() wurde hinzugefügt.

    Ein Anwender fügt dem bearbeiteten Baum Knoten entweder mit insertTopDown() oder insertBottomUp() ein, je nachdem, welche Leistung besser ist.

    Einige Bäume, z. B. LayoutNode und View, lassen sich viel effizienter als Draufsicht 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 wird Applier über insertBottomUp() überschrieben, um einen Baum von unten nach oben zu erstellen, und insertTopDown(), 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 Factory-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 aus CoreTextField entfernt. Wenn Sie die Höhe des Textfelds an die Anzahl der Zeilen binden möchten, verwenden Sie stattdessen BasicTextField. (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 Parameter orientationLock nicht mehr erforderlich. (Ie96e1)
  • Es wurde eine Lint-Prüfung für die Benennung und Position von zusammensetzbaren Lambda-Parametern hinzugefügt, um die Konsistenz mit den Richtlinien für das Schreiben 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 zu content migriert. (Iec48e)
  • foundation:foundation-text APIs wurden zu foundation:foundation verschoben. Die Paketstruktur blieb unverändert (Id3eb2).
  • Neuer Multitouch-Gesten-Detektor, einschließlich Hilfsfunktionen zum Erkennen von Drehen, Zoomen und Schwenken (Ic459d)
  • Neue Drag-Gesten-Erkennung, die die Zeigereingabe-API anhält, einschließlich Ausrichtungssperre. (Icef25)
  • Umbenennung von VectorAsset in ImageVector VektorAsset wurde in Builder verschoben und in Builder umbenannt. Es wurde gemäß den API Council-Richtlinien in eine innere Klasse von ImageVector umbenannt. 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. Setzen Sie diesen Parameter auf „true“, um das Textfeld zu einer einzelnen horizontal scrollbaren Zeile zu machen. (I57004, b/168187755)

  • Die Bewegungserkennung für Tippen, Doppeltippen, langes Drücken und Drücken der Anzeige wurde mit der neuen Eingabe für den Haltepunkt hinzugefügt. Außerdem wurden einige Dienstprogramme hinzugefügt, die Entwicklern das Schreiben eigener Gestendetektoren erleichtern. (I00807)

  • 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.bound". 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 DrawModifierdeprecation.kt enthält Typaliases/Hilfsmethoden, die die Migration von den verworfenen zu den aktuellen APIs erleichtern. (Id6044, b/173834241)
  • Modifier.drawLayer in Modifier.graphicsLayer umbenannt. Die zugehörigen Klassen wurden 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 überprüfen, ob das Host-Fenster im Fokus ist, sowie einen WindowFocusObserver, der einen onWindowFocusChanged-Callback bereitstellt. (I53b2a, b/170932874)
  • Dem TextInputService#onStateUpdated-Parameter wurde der Parameter „resetInput“ hinzugefügt (I3e8f5, b/172239032, b/171860947)
  • Aktualisierte TextFieldValue API
    • TextFieldValue.composition ist 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 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. typefaceFromFontFamily() auch in typeface() (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 „TextUnit.Unspecific“ umbenannt. (Ifce19)
  • Die Benutzeroberfläche für die Ausrichtung wurde aktualisiert und funktioniert jetzt. (I46a07, b/172311734)
  • Das Modul foundation:foundation-text wurde in foundation:foundation (Idac0f) zusammengeführt.
  • „place(Offset)“ und „placeRelative(Offset)“ verwerfen. Verwenden Sie stattdessen Überladungen mit int-Offset (I4c5e7).
  • id wurde für LayoutIdParentData in layoutId umbenannt. Measurable.id wurde in Measurable.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 in Modifier.fillParentMaxSize[Width|Height] innerhalb von LazyColumn/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 Material-Bibliothek verfügbar sind. Für nicht-Material-Anwendungen sollten Sie stattdessen Ihr eigenes Designsystem erstellen, das spezifische Design-Ambiente enthält, die in Ihren eigenen Komponenten verwendet werden können. (I74acc, b/172067770)
  • foundation.Text wurde eingestellt und durch material.Text ersetzt. Eine 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 Annotation „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 Zusammensetzungen für die Größenanpassung an intrinsische Messungen wurden entfernt. (I18537, b/171811496)
  • „relativePaddingFrom“ wurde in „paddingFrom“ umbenannt. Der Modifikator „PaddingFromBaseline“ wurde hinzugefügt, um die Abstände zwischen Layoutgrenzen und Text-Baselines einfacher festlegen zu können. (I0440a, b/170633813)
  • 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 uneinheitliche Skalierung durchzuführen und die src-Grenzen so zu erweitern, dass das Ziel vollständig belegt wird.
    • Es wurden Operatormethoden hinzugefügt, um Skalierungsfaktor-Parameter mit Größenparametern zu berechnen.
    • (Ic96a6, b/172291582)
  • „captureToBitmap“ wurde in „captureToImage“ umbenannt. (I86385)
  • Kennzeichnet CoreText als @InternalTextApi. 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“ (Ied2e7) verschoben.
  • SelectionContainer ohne Rückruf hinzugefügt (Ibfadb)
  • Fügen Sie Tests für die Positionen der Auswahl-Handles im 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 wurden veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.

API-Änderungen

  • „androidx.compose.foundation.Icon“ wurde nach „androidx.compose.material.Icon“ verschoben. Sie können auch die Bildkomponente / Modifier.paint() mit einem Painter verwenden, wenn Sie die Material-Bibliothek nicht nutzen möchten. (I9f622)
  • „interactionState“ wurde 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)
  • CoreTextField wurde um maxLines erweitert (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)
  • Es ist jetzt möglich, Prüftool-Informationen in zusammengesetzten Modifikatoren anzugeben (Idee08, b/163494569)
  • Die IME-Option „KeyboardCapitalization“ wurde hinzugefügt (I8ac38).
  • Rtl-Handle-Position 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. Du kannst auf den aktuellen Wert zugreifen, indem du .current wie bei jeder anderen Umgebungs-Property verwendest. 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)
  • Bedienungshilfen 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“ wird in „OnGloballyPositionedModifier“ und „onPositioned()“ in „onGloballyPositioned()“ umbenannt. (I587e8, b/169083903).
  • Beispiele für LazyColumn/Row hinzugefügt (Idc16d)
  • Die Methoden „items“ und „itemsIndexed“ wurden so geändert, dass sie jetzt auch „emptyList“ zulassen (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 sollte PointerInputFilter.onPointerEvent(...) verwendet werden. (I6f04a)

Version 1.0.0-alpha04

1. Oktober 2020

androidx.compose.foundation:foundation:1.0.0-alpha04, androidx.compose.foundation:foundation-layout:1.0.0-alpha04 und androidx.compose.foundation:foundation-text:1.0.0-alpha04 wurden veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.

API-Änderungen

  • „Stack“ wurde in „Box“ umbenannt. Die zuvor vorhandene „Foundation.Box“ wird zugunsten des neuen Felds in „Compose.foundation.layout“ eingestellt. Das 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 der Methode „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 freigegebenen Status 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 eingestellten benutzerdefinierten Arrangement APIs wurden entfernt. (Ic576d, b/168297922, b/168297923)
  • Der Parameter unbounded wurde zu wrapContentSize-Modifikatoren hinzugefügt, wodurch das Layoutelement mit unbegrenzten maximalen Beschränkungen gemessen werden kann. (I77951, b/158559319)
  • Statische Importe von Inhalten von Layoutbereichen (z.B. „alignWithSiblings“ in „RowScope“) sind nicht mehr möglich. Verwenden Sie stattdessen die explizite Bereichsalternative: 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.
    • Die Dokumentation wurde um einen Hinweis ergänzt, dass der öffentliche Konstruktor für die Inline-Klasse „Radius“ nicht direkt aufgerufen werden darf, sondern dass Radius-Objekte stattdessen über ihre Funktionskonstruktoren erstellt 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 ist jetzt eine Eigenschaft anstelle einer Funktion.
    • Der Konstruktor für RoundRect wurde aktualisiert, sodass Radiuseigenschaften anstelle einzelner Parameter für X‑/Y‑Radiuswerte verwendet werden.
    • Größen-APIs, die von einem Rectangle mit Ursprung bei 0,0 angenommen wurden, wurden entfernt.
    • Radius-API zum Löschen von Elementen hinzugefügt
    • Verschiedene Erweiterungsfunktionen für RoundRect wurden zu Eigenschaften migriert.
    • (I8f5c7, b/168762961)
  • Leistungsoptimierungen für LazyColumnFor/LazyRowFor Scrollen, indem keine unnötigen Neuzusammensetzungen bei jedem Scrollen vorgenommen werden (I64f65, b/168293643, b/167972292, b/165028371)
  • 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 (I6e101) beeinträchtigt.
  • Viele Grafik-APIs wurden aktualisiert.
    • DrawScope APIs wurden mit Bereichstransformationsmethoden aktualisiert, um anzuzeigen, dass die Transformation nur innerhalb des Callbacks angewendet und nach dem Aufrufen des Callbacks entfernt wird.
    • Die 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
    • Überlastung für Rect.translate(offset) erstellt und Rect.shift verworfen
    • (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 wurden veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.

API-Änderungen

  • „InnerPadding“ wurde in „PaddingValues“ umbenannt. (I195f1, b/167389171)
  • Die Verwendung der Schwerkraft wurde konsequent zur Ausrichtung oder Ausrichtung in Layout-APIs umbenannt. (I2421a, b/164077038)
  • Dem Stapel wurde ein Ausrichtungsparameter hinzugefügt, mit dem die Standardausrichtung für alle untergeordneten Stapel angegeben werden kann. (Ie80ca, b/164085265)

Fehlerkorrekturen

  • DpConstraints und APIs, die sie verwenden, wurden eingestellt. (I90cdb, b/167389835)
  • Die Parameter minWidth und maxWidth von widthIn wurden in min und max umbenannt. Ähnliches gilt für preferredWidthIn, heightIn und preferredHeightIn. (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 und AndroidInputDispatcher wurden von androidx.ui.test.android nach androidx.ui.test verschoben (Idef08, b/164060572)

Version 1.0.0-alpha02

2. September 2020

androidx.compose.foundation:foundation:1.0.0-alpha02, androidx.compose.foundation:foundation-layout:1.0.0-alpha02 und androidx.compose.foundation:foundation-text:1.0.0-alpha02 wurden veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.

Fehlerkorrekturen

  • TestUiDispatcher ist als experimentell gekennzeichnet (Iae99d, b/161247083).
  • Es wurde ManualFrameClock.hasAwaiters hinzugefügt, um zu prüfen, ob ein Frame von dieser Uhr erwartet wird. runWithManualClock ersetzt runBlocking 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")
        }
    }
    

    (I0a85b, b/161247083)

Version 1.0.0-alpha01

26. August 2020

androidx.compose.foundation:foundation:1.0.0-alpha01, androidx.compose.foundation:foundation-layout:1.0.0-alpha01 und androidx.compose.foundation:foundation-text:1.0.0-alpha01 wurden veröffentlicht. Version 1.0.0-alpha01 enthält diese Commits.

Version 0.1.0-dev

Version 0.1.0-dev17

19. August 2020

androidx.compose.foundation:foundation:0.1.0-dev17, androidx.compose.foundation:foundation-layout:0.1.0-dev17 und androidx.compose.foundation:foundation-text:0.1.0-dev17 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 vorherigen Methoden Arrangement.Vertical#arrange und Arrangement.Horizontal#arrange wurden eingestellt und das Schreiben benutzerdefinierter Arrangements wird in Zukunft nicht mehr unterstützt. (I6733d, b/161985975)
  • „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 Platzes 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 von mergeAllDescendants-Semantiken definieren. Standardmäßig wird der übergeordnete Wert verwendet, sofern vorhanden. Andernfalls wird der untergeordnete Wert verwendet. (Iaf6c4, b/161979921)
  • PlacementScope.placeAbsolute() wurde in PlacementScope.place() umbenannt und das vorherige PlacementScope.place() in PlacementScope.placeRelative(). Daher wird die Position in Kontexten, in denen von rechts nach links geschrieben wird, mit der PlacementScope.place()-Methode nicht mehr automatisch gespiegelt. Verwenden Sie stattdessen PlacementScope.placeRelative(). (I873ac, b/162916675)
  • Die veraltete Komponente „FilledTextField“ wurde entfernt. Verwende 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 jetzt zugunsten expliziter Aufrufe von remember { mutableStateOf(...) } eingestellt. Dies reduziert die API-Oberfläche insgesamt und die Anzahl der Konzepte für die Statusverwaltung. Außerdem entspricht es dem Muster by mutableStateOf() für die Delegierung von Klassenattributen. (Ia5727)
  • RRect wurde in RoundRect umbenannt, damit es besser zum Zusammensetzen von Benennungsmustern passt. Erstellung ähnlicher Funktionskonstruktoren zu RRect und verworfene RRect-Funktionskonstruktoren (I5d325)
  • „onChildPositioned“ und „OnChildPositionedModifier“ wurden entfernt. Entwickler sollten stattdessen „onPositioned“ und „OnPositionedModifier“ im untergeordneten Layout verwenden. (I4522e, b/162109766)
  • IntSize ist jetzt eine Inline-Klasse (I2bf42).
  • Berühren Sie den leeren Bereich zum Bearbeiten und halten Sie ihn gedrückt. (Ib1e5b)
  • Die schwebende Symbolleiste 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 Benutzeroberfläche verschieben (I47fa6)
  • Es wurden LazyColumnForIndexed/LazyRowForIndexed hinzugefügt, Versionen von LazyColumnFor/LazyRowFor, die sowohl Index als auch Element im itemCallback bereitstellen. Dies ist nützlich, wenn Sie zusätzlich zu einem aktuellen Element einen aktuellen Index kennen müssen. (I65ff3)
  • „Modifier.determineProgress“ wurde in „Modifier.progressSemantics“ umbenannt (I9c0b4)
  • „LazyColumnItems“ wurde in „LazyColumnFor“ umbenannt. „LazyRowItems“ wurde in „LazyRowFor“ umbenannt (I84f84)
  • Fügen Sie aus Gründen der Best Practice Markierungen/Anmerkungen hinzu. (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 und onZoomStarted 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)
  • Die zuvor verworfene AdapterList wurde entfernt. Verwenden Sie stattdessen LazyColumnItems (I12b9b).
  • Modifier.drawBackground wurde in Modifier.background umbenannt (I13677)
  • Die alte ConstraintLayout-DSL wurde entfernt. ConstraintSet2 wurde in ConstraintSet umbenannt. (If58d1, b/162450908)
  • 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 und Column sind jetzt Inline-Funktionen, wodurch der Overhead bei der Verwendung erheblich reduziert wird. (I75c10)

Fehlerkorrekturen

  • Allgemeine API-Fehler behoben (I077bc)
    1. Nicht verwendete OffsetBase-Schnittstelle entfernen
    2. Richten Sie die Offset- und IntOffset-Klassen so aus, dass sie eine einheitliche API-Oberfläche haben.
    3. IntOffset.Origin in IntOffset.Zero umbennen, um mit der Offset API übereinzustimmen
    4. Die nativeCanvas-Methode wurde aus der Canvas-Benutzeroberfläche entfernt, damit Nutzer ihre eigenen Canvas-Instanzen erstellen können.
    5. 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.
    6. ClipOp-Enum-Typen in Pascal-Case umbenannt
    7. Die Filterqualitätsenumer wurden in Pascal-Schriftart umbenannt.
    8. StrokeJoin-Enums wurden in Pascal Case umbenannt
    9. Die PointMode-Enum-Typen wurden in Pascal Case umbenannt.
    10. PaintingStyle-Enums wurden in Pascal Case umbenannt
    11. Die Aufzählungen vom Typ „PathFillType“ wurden in Pascal-Schreibweise umbenannt.
    12. StrokeCap-Enumerierungen in Pascal-Case umbenannt
    13. Die Implementierung von DrawCache wurde aktualisiert, sodass keine lateinit-Parameter mehr verwendet werden.
    14. DrawScope wurde aktualisiert, sodass für die internen Parameter „fillPaint“ und „strokePaint“ nicht mehr die lazy Delegation verwendet wird.
    15. Die Bildkomposition wurde aktualisiert, um die Nutzung von Box zu vermeiden und den Overhead zu reduzieren.
    16. Die Klasse „Outline“ wurde um Anmerkungen vom Typ „@Immutable“ ergänzt.
    17. PathNode wurde aktualisiert, um @Immutable-Anmerkungen für jede Pfadanweisung zu haben.
    18. Die Vektor-Unterkomposition wurde aktualisiert, um redundante bedingte Gleichheitsprüfungen zu entfernen, da diese bereits von „compose“ verarbeitet werden.
    19. Die Konstruktormethoden für Rect-Begleiter wurden zugunsten von Funktionskonstruktoren eingestellt.
    20. Aktualisierte Pinselklassen und Funktionskonstruktoren mit @Immutable- und @Stable-APIs
    21. VertexMode-Enum auf PascalCase umgestellt
    22. Die DrawScope-Methode „selectPaint“ wurde aktualisiert, um Strichparameter für die Farbe bedingt zu überschreiben, wenn sie sich geändert haben.
    23. Wir haben die Größe aktualisiert, um eine destruktive API hinzuzufügen, „UnspecificSize“ in „Nicht angegeben“ 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 stattdessen SemanticsNodeInteraction.performGesture. (Id9b62)

  • SemanticsNodeInteraction.getBoundsInRoot() wurde in SemanticsNodeInteraction.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. „Then“ (Dann) hat ein stärkeres Signal für die Reihenfolge, während gleichzeitig die Eingabe von Modifier.padding().background() + anotherModifier verhindert wird, wodurch die Kette unterbrochen wird und schwerer zu lesen ist (Iedd58, b/161529964).

  • isFocused() und isNotFocused() 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“ für das untergeordnete Element. (I87f95, b/162109766)

  • AndroidComposeTestRule wurde in „createAndroidComposeRule“ umbenannt. (I70aaf)

  • Bedienungshilfenaktion zum Abrufen von TextLayoutResult hinzufügen (I9d6e6)

Version 0.1.0-dev15

22. Juli 2020

androidx.compose.foundation:foundation:0.1.0-dev15, androidx.compose.foundation:foundation-layout:0.1.0-dev15 und androidx.compose.foundation:foundation-text:0.1.0-dev15 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:

Abhängigkeiten aktualisieren

  • Wenn Sie die 0.1.0-dev15-Version von Compose verwenden möchten, müssen Sie Ihre Abhängigkeiten gemäß den neuen Code-Snippets aktualisieren, die oben unter Abhängigkeiten angeben gezeigt werden.

API-Änderungen

  • Ähnlich wie 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“, um das Spalten-/Zeilenverhalten und die Parameter zu integrieren, oder verwenden Sie „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 das Scrollen 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 ContentScale-Standardparameter für das zusammensetzbare Bild wurde von Inside to Fit geändert. Dies wurde vorgenommen, um ein Verhalten zum Hochskalieren des zugrunde liegenden Malers zu erreichen, wenn das Layout größer als die eigentliche Größe des Malers ist, während das Seitenverhältnis beibehalten wird. Dieses Verhalten entspricht besser den Erwartungen, 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)
  • Verwenden Sie in den APIs der obersten Ebene AnimationSpec anstelle von AnimationBuilder, um das Konzept der Spezifikation für statische Animationen zu verdeutlichen. – Verbessern Sie die Übergangs-DSL, indem Sie die Lambda-Anforderung zum Erstellen von AnimationSpecs wie Tween, Spring entfernen. Stattdessen werden die Parameter des Konstruktors 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 zustandsloser 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, um einen Long-Wert zu verwenden, um 2 Gleitkommawerte zu verpacken, um Breite und Höhe als Gleitkommazahlen darzustellen. (Ic0191)
  • Um die Anzahl der Klassen zu reduzieren, die zur Darstellung von Positionierungsinformationen verwendet werden, sollten Sie stattdessen die Klasse „Offset“ verwenden. Dies bietet die Vorteile einer Inline-Klasse, da sie einen Long-Wert verwenden kann, um 2 Gleitkommawerte zu verpacken, um x- und y-Offsets darzustellen, die als Gleitkommazahlen dargestellt werden. (I3ad98)
  • Modifikator „zoomable“ für die Funktion „Zum Heranzoomen zusammenziehen und auseinanderziehen“ hinzugefügt (Id5d63)
  • Ein/Aus-Schaltfläche wird nicht mehr unterstützt. Verwenden Sie stattdessen Modifier.toggleable (I35220, b/157642842).
  • „MutuallyExclusiveSetItem“ wurde eingestellt. Verwenden Sie stattdessen „Modifier.selectable“. (I02b47, b/157642842)
  • TestTag 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 beim Hinzufügen von zusammensetzbaren Funktionen 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 in ContentDrawScope wurde 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)
  • Zusammenstellende 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)
  • HorizontalScroller und VerticalScroller stellen ihre Scrollposition nicht mit dem gespeicherten Instanzstatus wieder her. (Ia0fae, b/155075048)
  • FocusManagerAmbient wurde entfernt. Verwenden Sie FocusModifier.requestFocus, um den Fokus zu erhalten. (IC4826)
  • Das Tabellenlayout wurde vorübergehend entfernt. 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 Nutzer 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)

  • Update der TextField API – onFocus- und onBlur-Callbacks wurden zu einem einzelnen onFocusChange(Boolean)-Callback mit dem Parameter (I66cd3) zusammengeführt.

  • Umbenennung von ScaleFit in ContentScale. ContentScale wurde von UI-graphics in das UI-Core-Modul verschoben und befindet sich nun im selben Modul wie die Ausrichtung API. „FillMaxDimension“ in „Zuschneiden“ umbenannt „FillMinDimension“ 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ügt dem Text einen Farbparameter hinzu. Dadurch kann die Farbe des Textstils überschrieben werden, ohne dass diese manuell mit dem in einem Design bereitgestellten Stil zusammengeführt werden müssen. (I41a66)

  • DrawModifier API verbessern:

    • Der Empfä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 verfügt über die Methode „drawContent()“ (Ibaced, b/152919067).
  • „ColoredRect“ wurde eingestellt. Verwende stattdessen Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)

  • Das 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( ... }, 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 in PaintBox(Painter) umbenannt Erstellung eines Vektor-Kompositionselements, das sich wie das Bild-Kompositionselement verhält, jedoch mit einem VectorAsset anstelle eines ImageAsset (I9af9a, b/149030271)

  • Es wurde eine Bildkomposition erstellt, die nicht nur die Größe und das Layout verwaltet, sondern auch ein bestimmtes Bild-Asset auf dem Bildschirm anzeigt. Diese Komponente unterstützt auch das Zeichnen beliebiger Painter-Instanzen unter Berücksichtigung ihrer ursprünglichen 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.BitmapBitmap.asImageAsset() erstellt, um eine Instanz eines ImageAssets 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)

  • Icon, IconButton und IconToggleButton wurden hinzugefügt, um AppBarIcon zu entfernen. Sie können vorhandene Verwendungen von AppBarIcon direkt durch IconButton ersetzen. Diese haben dann das richtige Touch-Ziel. Informationen zur Verwendung findest du in den Beispielen und in den Symbolen für die bereitgestellten Material-Symbole, die du direkt mit diesen Komponenten verwenden kannst. (I96849)

  • 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 Bildlaufleisten/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 in DrawBorder umbenennen (I8ffcc)

  • Die Box-Komponente wurde hinzugefügt, um Layout- und Zeichenfunktionen zu kombinieren. (I6e2a7)

  • Scroller zeigen jetzt natives Bewegungsverhalten beim Ziehen von Android-Geräten. (I922af, b/147493715)

  • DrawBorder durch Rahmenmodifikator ersetzt (Id335a)

  • „Modifier.tag“ wurde in „Modifier.layoutId“ umbenannt, um Verwechslungen mit „Modifier.testTag“ zu vermeiden. (I995f0)

  • Der Parameter "percent" beim Erstellen von ConstraintLayout-Richtlinien wurde in "fraction" umbenannt. (Ida2db)

  • Unterstützung für Ränder von ConstraintLayout-Grenzen hinzugefügt (I47ffe)

  • Die Unterstützung für die RTL-Ausrichtung in ConstraintLayout wurde verbessert. Nicht erkannte RTL-APIs wurden hinzugefügt. (I3b1c7)

  • Ein neues DSL für ConstraintLayout wurde hinzugefügt. Weitere Informationen finden Sie in den Beispielen. (Icaa9a)

  • Die 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 verworfenen Spalten RowAlign und ColumnAlign in Row und Column 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-Element „CenterAlignmentLine“ wurde entfernt. (I60107)

  • Der Layout-Modifikator „defaultMinSizeConstraints“ wurde hinzugefügt. Damit werden Größenbeschränkungen für das umgebrochene Layout nur dann festgelegt, 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)

  • Standardparameterwerte für den Offset-Modifikator wurden hinzugefügt. (I37f06)

  • Modifikator für symmetrisches Padding hinzugefügt. (I39840)

  • Der eingestellte Layout-AspectRatio-Modifikator wurde entfernt. (I65a74)

  • Die eingestellten LayoutAlign-Modifikatoren wurden entfernt. (I10877)

  • Es wurde ein Fehler in den Modifikatoren für Breite und Höhe behoben, der dazu führte, dass das umschlossene Layout ohne Einschränkungen der entgegengesetzten Achse gemessen wurde. (I210b8, b/154797971)

  • Den Parametern „verticalGravity“ und „horizontalGravity“ wurden die Optionen „Zeile“ und „Spalte“ hinzugefügt. (I7dc5a)

  • „wrapContentWidth“ und „wrapContentHeight“ wurden aktualisiert, damit eine vertikale oder horizontale Ausrichtung erwartet wird. Der Gravitationsmodifikator wurde aktualisiert, um eine vertikale oder horizontale Ausrichtung zuzulassen. Zeilen, Spalten und Stapel wurden aktualisiert, um benutzerdefinierte fortlaufende Ausrichtungen zu unterstützen. (Ib0728)

  • Die Ausrichtung kann mit beliebigen Werten instanziiert werden. 1D-Ausrichtungen wurden hinzugefügt. (Ia0c05)

  • EdgeInsets wurde in „InnerPadding“ umbenannt. Der Parameter „innerPadding“ von Material Buttons wurde in „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 wurde eingestellt (If32ac)

  • 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, sodass der verfügbare Platz nicht mehr ausgefüllt wird (I2b14f).

  • „AspectRatio“-Komposit wurde zugunsten des Modifiers entfernt. Die veralteten FlexColumn- und FlexRow-Kompositionen sowie der Spacing-Modifikator wurden entfernt (Iec8a7).

  • Der LayoutInflexible-Modifikator für Zeile und Spalte 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 FocusdetailState wurden zugunsten von FocusState2 eingestellt (I46919, b/160822875, b/160922136).
  • runOnIdleCompose in runOnIdle umbenannt (I83607)
  • Mehrere Test-APIs wurden umbenannt, um die Intuitivität zu verbessern. Alle APIs vom Typ „findXYZ“ wurden in „onNodeXYZ“ umbenannt. Alle doXYZ APIs wurden umbenannt, um XYZ auszuführen. (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)
  • Experimentelle LayoutNode-API erstellt (I4f2e9)
  • Die Version 1 der Sperre für die Scrollausrichtung wurde in Compose implementiert. (I1ce7a, b/150289741)
  • Pop-ups, Dialogfelder und Menüs übernehmen jetzt das kontextbezogene MaterialTheme (Ia3665, b/156527485)
  • Der Parameter „Layoutrichtung“ wurde aus dem Messblock der Funktion „Layout()“ entfernt. Die Layoutrichtung ist jedoch innerhalb des Callbacks über das Messungsbereichsobjekt verfügbar (Ic7d9d).
  • Add AbsoluteArrangement – ermöglicht die Anordnung der untergeordneten Elemente innerhalb der Zeile ohne automatische Spiegelung in RTL (I3a1df)
  • Die Anmerkung „@Untracked“ wurde eingestellt. Ersetzen Sie das durch @ComposableContract(tracked=false) (Id211e).
  • Vor dieser Änderung hat das Compiler-Plug-in Aufrufe an Konstruktoren innerhalb einer @Composable-Funktion nicht triviale abgefangen, wenn ein (I5205a, b/158123804) vorhanden war.
  • Fügen Sie viewModel() hinzu, mit dem Sie ein ViewModel erstellen oder ein bereits erstelltes 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 Floatwerten 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. Vollständige Px-Klasse gelöscht (I3ff33)

  • Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem für Pixelparameter nur Dp und primitive Typen verwendet werden (I086f4).

  • Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem für Pixelparameter nur Dp und primitive Typen verwendet werden (Id3434).

  • Die Verwendung der Px-Klasse in verschiedenen zusammengesetzten Klassen wurde im Rahmen der umfangreichen Refaktorisierung 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)

  • Ausrichtungs-API wurde aktualisiert und 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 zusammensetzbare Funktionen für CoreText und CoreTextField (Ib7d47).

  • Das Modul „ui-text“ wurde in „ui-text-core“ umbenannt (I57dec).

  • Die zusammensetzbaren Funktionen „ui-framework/CoreText“ und „CoreTextField“ wurden zu „ui-text-compose“ verschoben. Sie können ui-text-compose in Ihr Projekt aufnehmen. (I32042)

  • runOnIdleCompose und runOnUiThread 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. Aufrufer müssen Importe hinzufügen, um by state { ... } oder by 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 wurde in MeasureResult umbenannt. (Id8c68)

  • Veraltete zusammensetzbare Funktion aus dem Center. 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 wurde in LayoutWeight umbenannt. Der Parameter „tight“ wurde in „fill“ umbenannt. (If4738)

  • DrawVector wurde von einer normalen zusammensetzbaren Funktion geändert und gibt nun einen ModifierdrawVector() zurück, mit dem der Vektor als Hintergrund für ein Layout gezeichnet wird. (I7b8e0)

  • Ersetzen Sie die zusammensetzbare Funktion „Clip“ durch den Modifikator „drawClip()“. „DawClipToBounds“ ist ein praktischer Modifikator, den Sie verwenden können, wenn Sie nur mit einer Rechteckform an die Ebenengrenzen fixieren müssen. (If28eb)

  • Die composable Funktion „DrawShadow“ wurde durch den Modifikator „drawShadow()“ ersetzt. Schatten werden jetzt als Teil von „LayerModifier“ gezeichnet. (I0317a)

  • androidx.compose.ViewComposer wurde in 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 oder setViewContent. Compose.disposeComposition wurde eingestellt. Verwenden Sie stattdessen die Methode dispose auf dem von setContent zurückgegebenen Composition. 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)

  • Eingestellte Zusammensetzbare Funktion. Er kann entweder durch den LayoutAlign-Modifikator oder durch das Stack-Kompositelement (Ib237f) ersetzt werden.

  • Die Layoutrichtung wird vom übergeordneten Layoutknoten auf die untergeordneten Elemente übertragen. 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 Schnittstelle 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 umstrukturiert, um das Feld für den Animationswert abstrakt zu machen, damit Unterklassen die Aktualisierung des Werts 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 Ausrichtungszeile fehlt, wird „AlignLine.Unspecific“ zurückgegeben. (I896c5, b/158134875)

  • Ein Fehler in ConstraintLayout, der bei Neuzusammensetzungen zu Abstürzen führte, wurde behoben. (Ibee5a, b/158164341)

  • Die nachgestellte Lambda API mit Einschränkungen wurde geändert. Jetzt hat es anstelle von zwei Parametern einen Empfängerbereich, der zusätzlich zu den Einschränkungen und „layoutDirection“ die Eigenschaften „minWidth“, „maxWidth“, „minHeight“ und „maxHeight“ in dp bereitstellt (I91b9a, b/149979702).

  • LayoutModifier2 in LayoutModifier umbenannt (Id29f3)

  • Die Funktionen für intrinsische Messungen in Layout und LayoutModifier2 verfügen jetzt über einen IntrinsicMeasureScope-Empfänger, der nun eine intrinsische Abfrage-API mit implizit übernommener Layout-Richtung bereitstellt. (Id9945)

  • LayoutDirectionAmbient wird nicht mehr unterstützt. Um die durch die Sprache definierte Layoutrichtung zu lesen, verwenden Sie „languageLayoutDirection“ in ConfigurationAmbient (I851b1).

  • „positionInParent“ und „boundsInParent“ für „LayoutCoordinates“ hinzugefügt (Icacdd, b/152735784)

  • Die zusammensetzbare Funktion „ParentData“ wurde eingestellt. Sie sollten entweder einen Modifikator erstellen, der die ParentDataModifier-Schnittstelle implementiert, oder den LayoutTag-Modifikator verwenden, wenn Sie 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 auf true aktualisiert. Dadurch wird die Strategie zur Codegenerierung für das Editor-Plug-in geändert. 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 wurde hinzugefügt (I48f36)

  • Verschieben Sie das Symbolleisten-Menü an die gewünschte Stelle, um die Optionen "Kopieren", "Ausschneiden" und "Einfügen" korrekt anzuzeigen. (Id3955)

  • Fügen Sie FloatingToolbar für die TextField-Auswahl hinzu. (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 (I8132c) geändert.

  • API-Änderung: AnnotatedString(builder: Builder) wird in annotatedString(builder: Builder) umbenannt. (Ia6377)

  • API-Änderung: AnnotatedString.Item wird in AnnotatedString.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 Benutzeroberfläche zum Schreiben verwenden, sollte jetzt androidx.activity.ComponentActivity (oder AppCompatActivity) erweitern. „setContent“ für „android.app.Activity“ wurde 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)