Grundlagen verfassen

Schreiben Sie Jetpack Compose-Anwendungen mit gebrauchsfertigen Bausteinen und erweitern Sie die Grundlage für den Aufbau Ihrer eigenen Designsysteme.
Letzte Aktualisierung Stabile Version Releasekandidat Beta-Ausgabe Alpha-Release
26. Juni 2024 1.6.8 - 1.7.0-beta04 -

Gebäude

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

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

GruppeBeschreibung
compose.animation:Animationen in den Jetpack Compose-Anwendungen erstellen, um die User Experience zu bereichern
compose.compiler@Composable-Funktionen transformieren und Optimierungen mit einem Kotlin-Compiler-Plug-in aktivieren.
compose.foundationSchreiben Sie Jetpack Compose-Anwendungen mit gebrauchsfertigen Bausteinen und erweitern Sie die Grundlage für den Aufbau Ihrer eigenen Designsysteme.
compose.materialJetpack Compose-UIs mit einsatzbereiten Material Design-Komponenten erstellen Dies ist der übergeordnete Einstiegspunkt von Compose. Hier werden Komponenten bereitgestellt, die den unter www.material.io beschriebenen Komponenten entsprechen.
compose.material3 einfügenJetpack Compose-UIs mit Material Design 3 Components erstellen, der nächsten Entwicklung des Material Design Material 3 enthält aktualisierte Designs und Komponenten sowie Funktionen zur Personalisierung von Material You wie dynamische Farben. Das Produkt wurde so entwickelt, dass es zum visuellen Stil und zur System-UI von Android 12 passt.
compose.runtimeGrundlegende Bausteine des Programmiermodells und der Statusverwaltung von Compose sowie die zentrale Laufzeit für das Compose-Compiler-Plug-in.
compose.uiGrundlegende Komponenten der Benutzeroberfläche zum Schreiben von E-Mails, die für die Interaktion mit dem Gerät erforderlich sind, darunter Layout, Zeichnen und Eingabe

Abhängigkeiten deklarieren

Wenn Sie eine Abhängigkeit von Compose hinzufügen möchten, müssen Sie Ihrem Projekt das Maven-Repository von Google hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.

Fügen Sie der Datei build.gradle für Ihre Anwendung oder Ihr Modul die Abhängigkeiten für die Artefakte hinzu, die Sie benötigen:

Groovig

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.14"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.14"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.

Feedback

Dein Feedback hilft uns, Jetpack zu verbessern. Teilen Sie uns mit, wenn Sie neue Ausgaben entdecken oder Verbesserungsvorschläge für diese Bibliothek haben. Bitte sieh dir die vorhandenen Probleme in dieser Bibliothek an, bevor du eine neue erstellst. Sie können einem vorhandenen Problem Ihre Stimme hinzufügen, indem Sie auf die Sternschaltfläche klicken.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung.

Version 1.7

Version 1.7.0-beta04

26. Juni 2024

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

Fehlerkorrekturen

  • Abstürze bei sehr großen Textzeilen vermeiden (z. B. 10.000 Zeichen) (8157ab)
  • Die Messung von sehr großem Text, die im neuen BasicTextField zu Abstürzen führte, wurde korrigiert (6b7575).
  • Setzt eine Verhaltensänderung bei der Zeilen-/Spaltenmessung zurück, durch die in bestimmten Szenarien die Textnutzung beeinträchtigt wird (69e8ba).

Version 1.7.0-beta03

12. Juni 2024

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

Version 1.7.0-beta02

29. Mai 2024

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

API-Änderungen

  • Fügt eine experimentelle API zum Konfigurieren des Prefetch-Verhaltens von LazyGrids hinzu, ähnlich der vorhandenen experimentellen API für LazyLists. Dazu gehört auch die Unterstützung für den Vorabruf von Elementen in verschachtelten LazyGrids. Ähnlich wie bei LazyListPrefetchStrategy werden die ersten beiden verschachtelten Elemente jedes Rasters standardmäßig vorab abgerufen. Dies kann jedoch über die 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 Eigenschaft ist jetzt ein boolescher Wert und wird immer durch Textfelder angegeben. (I8acd8)
  • Standardwerte für basicMarquee wurden in das Objekt MarqueeDefaults verschoben. (I12ff6)
  • Der Parameter basicMarquee delayMillis wurde in repeatDelayMillis umbenannt. (I12ff6)
  • Update API zum Gestalten der Links: TextLinkStyles wurde in TextStyle verschoben und TextDefaults aus Material entfernt (I5477b)

Fehlerkorrekturen

  • LayoutCoordinates.introducesFrameOfReference wurde in LayoutCoordinates.introducesMotionFrameOfReference umbenannt, um den Zweck besser widerzuspiegeln. Die zugehörige Funktion wurde umbenannt, um Koordinaten basierend auf dieser Markierung zu berechnen. (I3a330)
  • „Standard“ wurde aus den MarqueeDefaults-Properties entfernt. (I1d8a0)
  • "Laufrahmen" wurde aus MarqueeDefaults Properties entfernt. (Iad4f4)
  • TextLinkStyles wurde aus der Klasse TextStyle entfernt. Stattdessen ist TextLinkStyles Teil des LinkAnntation-Konstruktors und der AnnotatedString.fromHtml-Methode (I90b2b).
  • Es wurde ein Fehler behoben, bei dem der Pager beim Sprung auf eine Grenze raschte, während er sich bereits an der Grenze befunden hatte. (I9f373, b/339171222)
  • BTF2 verfügt jetzt über korrekte Mausauswahlgesten. (Ibe8c6)

Externer Beitrag

  • Erneut senden „Inhaltstyp für die Zeitberechnung anhand des Prefetch-Inhalts erstellen/messen, um die Genauigkeit zu verbessern“ (Iea622)
  • Inhaltstyp für die Zeitberechnung zum Erstellen/Messen auf Basis des Prefetches erstellen, um die Genauigkeit zu verbessern (Ibccb1)
  • WindowInsetsPadding-Modifikatoren aus gemeinsamem Quellsatz (I070b2) verfügbar machen

Version 1.7.0-beta01

14. Mai 2024

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

API-Änderungen

  • Die Eigenschaft KeyboardOptions.shouldShowKeyboardOnFocus wurde aus Gründen der Binärkompatibilität wieder als veraltet markiert. (I15cfe)
  • Modifier.anchoredDraggable kehrt jetzt Ziehdeltas jetzt standardmäßig für Komponenten mit horizontaler Ausrichtung um, wenn sie in einem RTL-Layout verwendet werden. (I3c6d9)
  • AnnotatedString.hasEqualsAnnotations ist jetzt hasEqualAnnotations. (I685c0)
  • Die API zum Erhalten von Material-Links im Text wurde aktualisiert. Insbesondere wurden die Methoden aus dem TextDefaults zum Erstellen von themenbezogenen LinkAnnotations und zum Parsen von HTML mit themenbezogenen Links entfernt. Stattdessen wurde eine TextLinkStyles-Klasse hinzugefügt, mit der die Links als Parameter für die zusammensetzbare Textfunktion gestaltet werden können. (I31b93)
  • onDragStarted und onDragStopped wurden durch Callbacks ohne Sperrung ersetzt. (I59de8)

Fehlerkorrekturen

  • Ein Fehler wurde behoben, bei dem Pager abstürzte, wenn contentPadding größer war als die eingehenden Einschränkungen. Pager erzwingt jetzt negative Werte, die von PageSize in 0 zurückgegeben werden. (Iba5d8, b/314008560)

Version 1.7.0-alpha08

1. Mai 2024

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

Neue Funktionen

  • Für BasicTextField und SelectionContainer wurde ein Kontextmenü mit der rechten Maustaste hinzugefügt, das Elemente zum Ausschneiden, Kopieren, Einfügen und zum Auswählen aller Aktionen enthält. (If8c93, Ia2b49, I6f268)

API-Änderungen

  • LazyLayout Prefetch-Anfragen können jetzt als dringend gekennzeichnet werden. Wir erwarten also, dass dieses Element im nächsten Frame benötigt wird, und möchten das Frame-Budget ignorieren, um im Voraus mehr Arbeit erledigen zu können (Id513f).
  • isPositionedByParentWithDirectManipulation wurde 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. Um die Position nur mit solchen abzufragen, die einen Bezugsrahmen beinhalten, verwenden Sie positionInLocalFrameOfReference(...). Oder positionInLocalLookaheadFrameOfReference von einem LookaheadScope. (Ifc5f7)
  • onClicked wurde in LinkInteractionListener in onClick umbenannt (Iaa35c)
  • Aktionslambda für getScrollViewportLength gemäß Feedback des API-Council ändern. (Ibc74a)
  • APIs zur Delegierung der Handschrifteingabe mit Eingabestiften wurden umbenannt. (Ica45f, b/327271923)
  • Benennen Sie TextInclusionStrategy.isInside in isIncluded um. Legen Sie fest, dass der Rückgabetyp Paragraph/MultiParagraph#getRangeForRect() nicht Nullwerte zulässig ist. (I51f26)

Fehlerkorrekturen

  • „Alles auswählen“ wurde allen Textkontextmenüs in SelectionContainer hinzugefügt. (Ib750e, b/240143283)
  • Das Erfassen langer Screenshots für scrollbare Container mit reverseScrolling=true wurde korrigiert. (I7c59c)
  • Es wurde ein Problem behoben, bei dem sich die currentValue von AnchoredDraggableState änderte, wenn sie sich den Grenzen des Bundesstaates näherten. (Iea30b, b/333846848)

Externer Beitrag

  • PrefetchExecutor wurde umbenannt in PrefetchScheduler, um die Verantwortungsbereiche besser wiederzugeben. (Ib9154)
  • Unterstützung für den Vorabruf von Elementen in verschachtelten LazyLists wurde hinzugefügt (z.B. ein LazyColumn, das verschachtelte LazyRows rendert). Durch diese Änderung wird erwartet, dass Frame-Einbrüche beim Scrollen für diese LazyLists reduziert werden. 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 wurde veröffentlicht. Version 1.7.0-alpha07 enthält diese Commits.

Neue Funktionen

  • Es wurde ein TextDefaults-Objekt hinzugefügt, das Methoden zum Erstellen 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 Modifier.animateItemPlacement()-Modifikator hinzuzufügen, um Animationen für die Platzierung (Neuanordnung) zu unterstützen. Wir haben diesen Modifikator eingestellt und einen neuen nicht experimentellen Modifikator namens Modifier.animateItem() eingeführt, mit dem alle drei Animationstypen unterstützt werden: Erscheinungsbild (Einblenden), Verschwinden (Ausblenden) und Neuanordnung. (Ib7d12, b/330510929)
  • Die Unterstützung für Animationen für das Erscheinungsbild und das Verschwinden von Elementen wurde in LazyVerticalStaggeredGrid und LazyHorizontalStaggeredGrid hinzugefügt. Bisher war es möglich, den Modifier.animateItemPlacement()-Modifikator hinzuzufügen, um Animationen für die Platzierung (Neuanordnung) zu unterstützen. Wir haben diesen Modifikator eingestellt und einen neuen nicht experimentellen Modifikator namens Modifier.animateItem() eingeführt, mit dem alle drei Animationstypen unterstützt werden: Erscheinungsbild (Einblenden), Verschwinden (Ausblenden) und Neuanordnung. (I69bc9, b/330511290)

API-Änderungen

  • Fügt ContextMenuColors und die zugehörigen LocalContextMenuTheme ProvidableCompositionLocal hinzu. Die Farben des Kontextmenüs für Textfelder und auswählbarer Text können geändert werden, indem die Komposition lokal bereitgestellt wird. (Ifa154)
  • Die Stiloption für Textlinks wurde neben der normalen Gestaltung auch gedrückt, wenn der Mauszeiger darauf bewegt wurde und der Text hervorgehoben wurde. (I5f864, b/139312671)
  • Stelle ViewConfiguration.HandwritingGestureLineMargin für handschriftliche Gesten vor. Unterstützung der Handschrift-Geste für BasicTextField. (Ie6e13, b/325660505)
  • DelegatableNode.scrollIntoView wurde für Version 1.7 entfernt, da wir keine Zeit hatten, die Stabilisierung der übrigen API-Oberfläche abzuschließen. Diese Funktion wird in 1.8 wieder eingeführt (I6cf61, b/333421581, b/332900232).
  • Bei der Abfrage von Layoutkoordinaten können Sie jetzt das Argument excludeDirectManipulationOffset verwenden, um den Versatz von übergeordneten Layouts auszuschließen, bei denen die untergeordneten Layouts mithilfe von Placeable.PlacementScope.withDirectManipulationPlacement platziert wurden. Ebenso kann ein Layout, bei dem sich die Position seiner untergeordneten Elemente häufig ändert, diese nun mithilfe von withDirectManipulationPlacement platzieren, wie z. B. „Scrollen“, das standardmäßig implementiert ist. Auf diese Weise sind die auf approachLayout basierenden Animationen intuitiver. Sie haben jetzt die Möglichkeit zu unterscheiden, welcher Offset animiert werden soll und was direkt angewendet werden soll, wenn es um die Animation des Ansatzes geht. (I60ec7)
  • Stelle requestScrollToItem fü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. Dies ändert das vorhandene Verhalten in keiner Weise, es sei denn, requestScrollToItem wird aufgerufen. (I63983)
  • Stell requestScrollToPage als Pager vor. Für jeden Measure-Pass kann der Client nun durch Aufrufen von requestScrollToPage die Pflege des Index basierend auf dem Schlüssel deaktivieren. Dies ändert das vorhandene Verhalten in keiner Weise, es sei denn, requestScrollToPage wird aufgerufen. (IC4213)
  • requestScrollToItem“ wurde für LazyGrids eingeführt. Für jeden Measure-Pass kann der Client nun durch Aufrufen von requestScrollToItem die Pflege des Index basierend auf dem Schlüssel deaktivieren. Dies ändert das vorhandene Verhalten in keiner Weise, es sei denn, requestScrollToItem wird aufgerufen. (I0a7a0)
  • ClickableText ist als veraltet markiert. Um dem Text Links hinzuzufügen, erstellen Sie ein AnnotatedString mit einer LinkAnnotation, die Ihrem Link entspricht, und übergeben Sie dieses AnnotatedString an die zusammensetzbare Text-Funktion (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 Linkinteraktions-Listener für die parseAsHtml-Methode hinzugefügt. Wenn der HTML-getaggte String mit <a>-Tags geparst wird, erstellt die Methode für jedes dieser Tags ein LinkAnnotation.Url und übergibt die Stilobjekte und den Link-Interaktions-Listener an jede Annotation. (I7c977)
  • LinkAnnotation verwendet jetzt die zustandsbasierten Stilargumente und einen LinkInteractionListener. Fügen Sie diese Annotation zum AnnotatedString hinzu, um einen Hyperlink zu erhalten. Durch die Übergabe von focusedState und/oder hoveredState können Sie die visuelle Konfiguration für Links definieren, die hervorgehoben werden und/oder wenn der Mauszeiger darauf bewegt wird. (I81ce4, b/139312671)
  • Die Funktions-Flag für lange Screenshots wurde entfernt. (I28648, b/329128246)
  • LazyColumn rendert fixierte Überschriften in langen Screenshots jetzt korrekt. (I8d239, b/329296635)
  • Die Mehrheit der verbleibenden experimentellen APIs, die mit der neuen BasicTextField eingeführt wurden, wurde stabilisiert. (I714e2)
  • Der Parameter textObfuscationCharacter wurde zu BasicSecureTextField hinzugefügt. Dieser steuert, welches Zeichen bei der Verschleierung des Inhalts verwendet werden soll. (I0588b)
  • 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) umfassen. (I40579)
  • Stell LocalBringIntoViewSpec vor, ein plattformabhängiges Scrollverhalten im Fokus, das auf der Ebene mit dem Modus für scrollbare Modifikatoren angewendet wird. (I27aa5, b/317453911)
  • TextFieldCharSequence wurde entfernt. TextFieldBuffer.originalValues wird durch TextFieldBuffer.originalText und TextFieldBuffer.originalSelection ersetzt. (I2c7d6)
  • Für ImeOptions.hintLocales können keine Nullwerte mehr eingegeben werden. 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)
  • targetValue von AnchoredDraggableState berücksichtigt jetzt keine Positionsgrenzwerte mehr. Er hat jetzt einen impliziten Schwellenwert von 50%, was bedeutet, dass sich targetValue am Mittelpunkt zwischen zwei Ankern ändert. (I82c2c)

Externer Beitrag

  • Zwei Scroll-APIs wurden umbenannt (I56a75).

Version 1.7.0-alpha06

3. April 2024

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

Neue Funktionen

  • Die Unterstützung für Animationen für das Erscheinungsbild und das Verschwinden von Elementen wurde in LazyColumn und LazyRow hinzugefügt. Bisher war es möglich, den Modifier.animateItemPlacement()-Modifikator hinzuzufügen, um Animationen für die Platzierung (Neuanordnung) zu unterstützen. Wir haben diesen Modifikator eingestellt und einen neuen nicht experimentellen Modifikator namens Modifier.animateItem() eingeführt, mit dem alle drei Animationstypen unterstützt werden: Erscheinungsbild (Einblenden), Verschwinden (Ausblenden) und Neuanordnung. (I2d7f7, b/150812265)
  • Clients von LazyColumn/LazyRow können die Verwaltung eines Index auf Grundlage des Schlüssels für die bevorstehende Messungsdurchführung jetzt deaktivieren, indem sie 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. Zum Beispiel können Sie noch keine Aufzählungslisten anzeigen. (I84d3d)
  • Implementierung der experimentellen Unterstützung für lange Screenshots in Compose-Scrollcontainern mithilfe der offiziellen Android API (ScrollCaptureCallback). Diese Funktion ist experimentell und verarbeitet derzeit möglicherweise nicht alle Fälle richtig. Aus diesem Grund ist sie derzeit standardmäßig deaktiviert. Legen Sie zum Aktivieren das Flag ComposeFeatureFlag_LongScreenshotsEnabled auf „true“ fest. Dieses Flag wird vor der Betaversion 1.7 entfernt. (I2b055, b/329296471)
  • Führen Sie die neue GraphicsLayer API ein, um mehr Flexibilität bei der Platzierung und das Rendering von GraphicsLayer-Instanzen zu bieten und intrinsische Renderingfunktionen zu unterstützen, ohne sich mit Composable-Implementierungen koordinieren zu müssen, um GraphicsLayer-Modifikatorinstanzen anzugeben.

API-Änderungen

  • Alle KeyboardOptions-Parameter haben jetzt standardmäßig einen nicht angegebenen Wert. Methode KeyboardOptions.merge wurde hinzugefügt.
  • KeyboardOptions.autoCorrect wurde in autoCorrectEnabled umbenannt und dafür gesorgt, dass Nullwerte zulässig sind, wobei null bedeutet, 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)
  • InputTransformation.transformInput-Parameter neu organisiert. „originalValue: TextFieldCharSequence“ wurde entfernt. Stattdessen trägt TextFieldBuffer diesen Wert jetzt 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 zum Delegieren von Handschriften mit Eingabestiften unterstützen die Handschrifteingabe in „falschen“ Texteingabefeldern. (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, wobei die gleichen Standardwerte für BasicSecureTextField beibehalten wurden. 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 Zusammensetzungswerte direkt aus dem Zustandsobjekt 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 das Ergebnis von ClipboardManager.getClip, wenn es null ist oder nicht, um festzustellen, ob die Zwischenablage einen aktuellen Clip enthält. (I50498)
  • ClipboardManager.setClip akzeptiert jetzt null, um die Zwischenablage zu leeren. (I7d2e9)
  • ReceiveContentListener wird in eine Funktionsschnittstelle konvertiert. Außerdem wird die Modifier.receiveContent-Überlastung, die eine Lambda-Funktion annimmt, entfernt, da ReceiveContentListener jetzt eine Funktionsschnittstelle ist.
  • Modifier.receiveContent wurde in Modifier.contentReceiver umbenannt. (I1e6af)
  • TransferableContent.consumeEach wurde in TransferableContent.consume umbenannt. (I1e462)
  • rememberTextFieldState ist auf eine stabile API umgestellt. (I37999)

Fehlerkorrekturen

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

Version 1.7.0-alpha05

20. März 2024

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

API-Änderungen

  • Die lokale Testkomposition LocalTextLinkStyle für das Gestalten von Hyperlinks wurde entfernt. (Iebfa7)
  • Die experimentelle Überschreibung von BasicText mit dem Argument onLinkClicked wurde entfernt. In Zukunft wird eine Ersatz-API für die Unterstützung von Hyperlinks folgen. (I107d5)
  • Codepoints-bezogene Methoden und Eigenschaften unter TextFieldState und TextFieldBuffer wurden entfernt. Außerdem wurden die inChars-Suffixe aus den verbleibenden APIs zur Auswahl und Zusammensetzung entfernt. (Ief7ce)
  • Der currentValue von AnchoredDraggable wird jetzt aktualisiert, wenn er durch einen Ankerpunkt bewegt 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 für das Schreiben von Low-Level-IME-Tests und anderen Low-Level-IME-Anwendungsfällen. PlatformTextInputTestOverride wurde verworfen. (I862ed, b/322680547)
  • restrictedConstraints() in zwei Methoden aufteilen: fitPrioritizingWidth() 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 Handschriftfunktion mit Eingabestift auf Geräten ab Android U. (I002e4)
  • hintLocales wurde zu KeyboardOptions hinzugefügt, damit TextFields IMEs mit bestimmten Sprachen als Hinweis auf eine bevorzugte Sprache angeben kann. (Id18c2)
  • Die experimentellen BasicTextField2- und BasicSecureTextField-Überlastungen, für die die Parameter value: String und onValueChange: () -> String erforderlich waren, 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 wird die semantische Aktion GetScrollViewportLength hinzugefügt, damit Informationen zu den Komponenten, nach denen in der Zusammensetzung gescrollt wird, an das A11y-System weitergeleitet werden können. Diese CL wendet auch die Verwendung dieser Property in scrollbaren Foundation-Listen an. (Ic5fa2)
  • BasicTextField2 wurde in BasicTextField umbenannt. (IE5713)
  • FocusRequester.createRefs ist jetzt stabil (I4d92c, b/261436820).
  • Einführung von DelegatableNode.scrollIntoView(), damit Modifikatorknoten scrollIntoView-Anfragen direkt senden können. (I2b3b7, b/299939840)
  • DelegatableNode.requireView() wurde eingeführt, damit Modifikatorknoten das aktuelle Android-View abrufen können, ohne eine lokale Zusammensetzung zu lesen. (I40768)
  • Einführung von kontextbezogenen Layoutinformationen in den Zeilenbereich des Kontextflusses und den Spaltenbereich des Kontextflusses, einschließlich Linienindex, Position und Beschränkungen für maximale Breite und Höhe, um in einer bestimmten Position zu bleiben. Elemente, die die maximale Breite/Höhe überschreiten, wandern möglicherweise in die nächste Zeile oder werden aufgrund der Überlaufeinstellungen weggelassen. (Id13f8, b/292114798)

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, bei dem das Umschalten der enabled- oder readOnly-Attribute von TextField unter bestimmten Bedingungen zu einem Absturz führte. (Iae17b)

Version 1.7.0-alpha03

21. Februar 2024

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

API-Änderungen

  • DelegatableNode.requireLayoutCoordinates() wurde eingeführt, um den aktuellen LayoutCoordinates einer Modifier.Node abzurufen, ohne onPlaced überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Ia8657)
  • DelegatableNode.currentLayoutCoordinates wurde eingeführt, um den aktuellen LayoutCoordinates einer 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 zugehörige APIs unter dem Paket androidx.compose.foundation.text2 werden nach androidx.compose.foundation.text verschoben. (I9f635)
  • BasicTextField2 akzeptiert keinen CodepointTransformation-Parameter mehr. Verwende BasicSecureTextField oder OutputTransformation. (Id34ff)
  • Es wurde eine Methode hinzugefügt, mit der nur die Annotationen von zwei AnnotatedStrings verglichen werden können. (I32659)
  • Jetzt neu: ContextualFlowRow und erweiterte 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 dynamischer +N-Schaltflächen für die Anzeige weiterer Schaltflächen und FlowRow und FlowColumn ideal für eine kleine Anzahl von Artikeln, also weniger als 100 Elemente, geeignet ist. Wichtig: Wenn Sie das bestehende Verhalten in FlowRow oder FlowColumn beibehalten möchten, bei dem alle Elemente unabhängig davon, ob sie zum Maximum der Querachse passen, zusammengehören, setzen Sie overflow während der Initialisierung auf FlowRowOverflow.Visible oder FlowColumnOverflow.Visible. Sehen Sie sich die Beispiele für diese neuen Funktionen in ContextualFlowRowSample und FlowRowSample an. (Ib9135, b/293577082)

Fehlerkorrekturen

  • Für die Cursoranimation werden keine Frames mehr angefordert, die sich im Ein- oder Aus-Zustand befinden. (Ia2253)
  • Die eingestellten Kopierkonstruktoren von KeyboardOptions kopieren jetzt alle Attribute korrekt. (If12de)

Version 1.7.0-alpha02

7. Februar 2024

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

API-Änderungen

  • HorizontalPager, VerticalPager und PagerState werden auf die stabile Version hochgestuft. (I67660, b/316966909)
  • Es wurde eine lokale Komposition vom Typ LocalTextLinkStyle hinzugefügt, mit der sich der Stil der Links in „Text“ in der App ändern lässt. Wenn du in der App ein eigenes Design verwendest, solltest du diese lokale Komposition entsprechend deinem Design festlegen. Wenn Sie das Material-Design verwenden, ist die Farbe des Links standardmäßig auf die Primärfarbe des Materials festgelegt. (I7eb10)
  • Der receiveContent-Modifikator wurde eingeführt, der Entwicklern die Möglichkeit bietet, in Jetpack Compose aussagekräftige Inhalte zu empfangen.
  • receiveContent lässt sich in BasicTextField2 einbinden, um Rich-Text-Inhalte zu akzeptieren, die über die Softwaretastatur oder die Einfügefunktion in der Zwischenablage bereitgestellt werden. (I81b72)
  • Im Rahmen dieser Änderung ersetzen wir SnapFlingBehavior im Pager-Modus durch TargetedFlingBehavior, um weitere Anwendungsfälle freizuschalten und mehr Flexibilität zu bieten. (I762ea)
  • Mit dieser Änderung machen wir Snapping APIs stabil. Außerdem bereinigen wir einen Teil des Testcodes und fügen dem Snapping weitere Beispiele hinzu. (Id8da9)
  • Führe TargetedFlingBehavior ein. Dieses FlingBehavior-Element ermöglicht die Weitergabe von Informationen zum Status der laufenden Animation und zum Ziel-Scroll-Offset. (I6a207)

Fehlerkorrekturen

  • BasicTextField2 behält den Cursor bei der Eingabe jetzt im Blick, wenn er aus dem sichtbaren Bereich gescrollt wurde oder aufgrund der Eingabe aus dem sichtbaren Bereich verschoben wird. (Ieb856, b/237190748)

Externer Beitrag

  • Fügt eine experimentelle API zum Konfigurieren des Prefetch-Verhaltens von LazyLists hinzu. (I022a4)

Version 1.7.0-alpha01

24. Januar 2024

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

Neue Funktionen

  • Indication API neu hinzugefügt: IndicationNodeFactory. Dies führt zu leistungsfähigeren Indication-Implementierungen im Vergleich zur vorherigen (jetzt verworfenen) rememberUpdatedInstance API. Informationen zur Migration findest du unter developer.android.com.
  • clickable / combinedClickable / selectable / toggleable akzeptiert jetzt einen MutableInteractionSource-Parameter, für den Nullwerte zulässig sind. Wenn der Wert null ist und die angegebene Indication ein IndicationNodeFactory ist, kann die Indication nur bei Bedarf verzögert erstellt werden, wodurch die Leistung verbessert wird. Wenn du nicht aufhebst und MutableInteractionSource verwendest, 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 einer Abklinganimation ermöglicht, wenn sich der Anker auf einen der Anker bezieht. Die Änderung umfasst auch die Umbenennung der vorhandenen animationSpec in snapAnimationSpec, um die Anwendungsfälle der einzelnen Spezifikationen besser verständlich zu machen.
  • BasicTextField2 ist für experimentelle Zwecke verfügbar. Sie sollte in etwa gleichwertig mit BasicTextField sein und das Verhalten sollte produktionsreif sein. Die API ist vorerst jedoch noch experimentell. Vor der Stabilisierung wird es in BasicTextField umbenannt und in dasselbe Paket verschoben.
  • Der erste Entwurf der OutputTransformation API für BasicTextField2 wurde 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. Wir würden uns jedoch über Feedback zur API-Nutzungsfreundlichkeit für Ihre Anwendungsfälle freuen. (aosp/2708848)
  • LinkAnnotation wurde eingeführt, mit dem Links und anklickbare Elemente in Text eingefügt werden können. Die Linkfunktion ist noch nicht vollständig. Weitere API-Änderungen sind geplant.
  • Der receiveContent-Modifikator wurde eingeführt, der Entwicklern die Möglichkeit bietet, in Jetpack Compose aussagekräftige Inhalte zu empfangen.
  • receiveContent lässt sich in BasicTextField2 einbinden, um Rich-Media-Inhalte zu akzeptieren, die über die Softwaretastatur oder das Einfügen aus der Zwischenablage bereitgestellt werden.
  • Mit KeyboardOptions.shouldShowKeyboardOnFocus kannst du das Standardverhalten BasicTextField bei der Anforderung einer fokussierten Tastaturtastatur deaktivieren.
  • TextInputService und LocalTextInputService wurden verworfen. Verwende stattdessen PlatformTextInputModifierNode für die direkte Einbindung in Plattform-IME-APIs. (aosp/2862698)
  • Indication#rememberUpdatedInstance wurde verworfen. Sie hat eine unvermeidliche Leistungseinbußen und verhindert weitere Optimierungen. Stattdessen sollten Sie die neue IndicationNodeFactory API verwenden.

Fehlerkorrekturen

  • BasicTextField validiert jetzt eine kleine Auswahl von Offset-Zuordnungen vorab, wenn VisualTransformation übergeben wird. So lassen sich häufige Codierungsfehler erkennen, die zu nicht wiederherstellbaren Ausnahmen bei späteren Mess- oder Zeichendurchläufen führen. Durch das Auslösen dieser Fehler während der Komposition ist es wahrscheinlicher, dass Entwickler diese Fehler während der Entwicklung sehen, was dazu beiträgt, Produktionsabstürze zu vermeiden. (I0fd42)
  • VisualTransformation wird nicht ausgelöst, wenn Sie einen ungültigen Index für einen ungültigen Index zurückgeben (b/316401857 ).

Version 1.6

Version 1.6.8

12. Juni 2024

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

Version 1.6.7

1. Mai 2024

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

Version 1.6.6

17. April 2024

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

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, bei dem das Umschalten der enabled- oder readOnly-Attribute von TextField unter bestimmten Bedingungen zu einem Absturz führte. (Iae17b)

Version 1.6.5

3. April 2024

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

Fehlerkorrekturen

  • Schwer zu reproduzierenden Fehlern in Zeile/Spalte werden Fehlerbehebungsprotokolle hinzugefügt: (b/300280216 und b/297974033)

Version 1.6.4

20. März 2024

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

Fehlerkorrekturen

  • Eine Auswahlgeste für langes Drücken und anschließendes Ziehen, die im ersten Frame des Drag aus den Layoutgrenzen des Textes herausbewegt, stürzt nicht mehr ab. (Icdf90, b/325307463)

Version 1.6.3

6. März 2024

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

Version 1.6.2

21. Februar 2024

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

Fehlerkorrekturen

  • Fehler beim Zurücksetzen von „AnimateContentSize“ beheben. (I07051)
  • Ein Problem wurde behoben, bei dem intrinsicHeight Text unter bestimmten Umständen zu viel im Cache gespeichert wurde. (3cd398, b/217910352)

Version 1.6.1

7. Februar 2024

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

Fehlerkorrekturen

  • Die gestaffelte Rastermessung beim Scrollen über das Limit wurde korrigiert. (bffc39)
  • Prüfung auf Layout mit großen Abmessungen hinzufügen. (e74af5)
  • Die Position von 0-Elementen am Anfang des gestaffelten Rasters korrigieren. (785f94)
  • Rufe den onRelease-Callback in der gleichen Reihenfolge wie onforgotten auf. (31ce3b)

Version 1.6.0

24. Januar 2024

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

Wichtige Änderungen seit Version 1.5.0

  • Neuer Modifikator Modifier.anchoredDraggable, der die Möglichkeit freischaltet, zwischen vordefinierten Ankersätzen zu ziehen und zu animieren. Dieser Modifikator soll Modifier.swipeable ersetzen. In der Migrationsanleitung erfahren Sie, wie Sie es verwenden und von Modifier.swipeable migrieren können.
  • Es wurde eine Drag-and-drop-Funktion zwischen Apps und Komponenten hinzugefügt. Weitere Informationen finden Sie unter DragAndDropTarget, Modifier.dragAndDropSource und andere APIs
  • Modifier.draggable2D ist der neue Modifikator, der eine einfache Unterstützung für das Ziehen in 2D ermöglicht. Siehe Beispiel.
  • AndroidExternalSurface und AndroidEmbeddedExternalSurface wurden hinzugefügt, um das Hinzufügen von oberflächengesteuerten Komponenten im Editor zu vereinfachen
  • Verschiedene API-Änderungen und ‐Verbesserungen in Pager und snapFlingBehaviour
  • Verschiedene Fokus-, Text- und Insets-APIs wurden zu stabilen APIs hochgestuft.

Version 1.6.0-rc01

10. Januar 2024

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

API-Änderungen

  • Der Erweiterungskonstruktor DragAndDropTarget() wurde entfernt. Erstellen Sie mit object: DragAndDropTarget {} eine neue Instanz. (I32318)

Version 1.6.0-beta03

13. Dezember 2023

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

Fehlerkorrekturen

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

Version 1.6.0-beta02

29. November 2023

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

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem canScroll nach dem Ändern des Layouts nicht aktualisiert wurde. (I60a86)
  • Fehlerkorrektur für Modifier.animateItemPlacement() und LookaheadScope nach kleinem Scrollen. (I3a2b7)

Version 1.6.0-beta01

15. November 2023

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

API-Änderungen

  • Der DragAndDropTarget-Modifikator übernimmt jetzt explizit die empfangende DragAndDropTarget und hat eine Lambda-Funktion, um eine Drag-and-drop-Sitzung zu aktivieren. Es gibt jetzt zwei Factory-Funktionen für eine DragAndDropModifierNode. einen für den Empfang von Übertragungen und einen für die Datenübertragung (I69481)
  • maximumFlingVelocity wurde so aktualisiert, dass es als Gleitkommazahl dargestellt wird. Die Dokumentation wurde aktualisiert, um klarere Angaben zur Einheit maximumFlingVelocity zu machen. (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 für die Verarbeitung von Drag-Events wurden dadurch ersetzt.

    Eine DragAndDropTarget-Factory-Funktion wurde hinzugefügt, um Daten aus Drag-and-drop-Sitzungen zu empfangen (Iebf3a).

  • Wenn Sie startDragImmediately in AnchoredDraggable freigeben, können Sie steuern, wie Ziehgesten erkannt werden. Es ist sinnvoll, diesen Wert festzulegen, wenn das Widget zu einem Zielanker animiert. Siehe Beispiel. (Ie6d13, b/285139987)

  • Foundation QuickInfo APIs sind jetzt @ExperimentalFoundationApi (I30b0b)

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

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

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

    DragAndDropEventType wurde entfernt (I645b1).

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

  • OriginalText durch TextSubstitution ersetzen. (Ifa5a8)

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

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

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

  • Für den magnifierCenter-Parameter von Modifier.magnifier können Nullwerte zulässig (Nullwerte) verwendet werden. Das Standardverhalten bleibt dabei unverändert. (I6aa66)

  • Material SwipeToReveal APIs (für Karten und Chips) basieren jetzt auf einer Slot-basierten API (wie von Compose empfohlen) anstelle von datenklassenbasierten Instanzen, um diese Slots zu erstellen. Dies ist eine funktionsgefährdende Änderung. In der Demo und im Beispielcode finden Sie Beispiele zur Verwendung der neuen API. (Ia8943)

Fehlerkorrekturen

  • Implementiere Gleichheits- und Hashcode für PageSize.Fixed. (Ie3ede, b/300134276)
  • Es wurde ein Fehler behoben, durch den das BasicText-Layout nicht verkleinert wurde, wenn sich minWidth änderte, und minWidth geringer als die anfängliche Messungseinschränkungen maxWidth (Idb19c) war.
  • Renderer-Unterstützung für „Erledigen“-Gradient in ArcLine wurde hinzugefügt. (I4d5bb)
  • Binär-Kompatibilitätsproblem bei der Änderung von Window Inset beheben (Iee695)
  • Entferne die Materialkernschicht für den Material3-Chip/die Schaltfläche, da die Mikro-Benchmarks auch ohne sie eine bessere Leistung zeigen. (I55555)

Version 1.6.0-alpha08

18. Oktober 2023

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

Neue Funktionen

  • Modifier.draggable2D ist der neue Modifikator, der eine einfache Unterstützung für das Ziehen in 2D ermöglicht. Beispiel (Id95f5, b/214412658)

API-Änderungen

  • Bei Modifier.dragAndDrawSource wurde die Lambda-Funktion onDrawDragShadow in drawDragDecoration umbenannt und bei DragAndDropInfo wurde der Größenparameter in dragDecorationSize umbenannt. (Id0e30, b/303904810)
  • Der Parameter decorationBox von BasicTextField2 wurde in decorator umbenannt. Der Typ wird ebenfalls in eine gleichwertige unterhaltsame TextFieldDecorator-Oberfläche geändert. (I23c1c)

Fehlerkorrekturen

  • Verbesserte Dokumentation zu BasicTextField bezüglich onValueChange-Anforderungen. (I90fc9, b/160257648)

Version 1.6.0-alpha07

4. Oktober 2023

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

API-Änderungen

  • Einführung von PlatformTextInputMethodTestOverride zum Schreiben von Tests für benutzerdefinierte Texteditoren. (ID159b)
  • GraphicsSurface wurde in AndroidExternalSurface umbenannt (I11680)
  • Temporäres Flag DisableNonLinearFontScalingInCompose zum Deaktivieren der nicht linearen Schriftskalierung hinzugefügt. Legen Sie DisableNonLinearFontScalingInCompose = true in Ihren Tests fest, wenn Sie Zeit zum Bereinigen benötigen. Dieses Flag wird in Compose 1.6.0-beta01 entfernt. (IC9486)
  • Die Sammlungen ColorList und ColorSet wurden hinzugefügt, bei denen Zuweisungen vermieden werden. (I744bd)
  • Durch diese Änderung wird shortSnapVelocityThreshold entfernt, das in ein Implementierungsdetail der Implementierung von SnapLayoutInfoProvider umgewandelt wurde. (I65f6d)
  • Fügt den dragAndDropSource-Modifikator zum Starten von Drag-and-drop-Sitzungen und dragAndDropTarget für den Empfang von Drag-and-drop-Sitzungen hinzu (Ib7828, b/286038936).
  • SnapPositionInLayout-Dokumentation und Positionsmethode aktualisieren. Stellen Sie die Positionsmethode in SnapPositionInLayout für Abstände im Inhalt vor. (Id7938, b/300116110)
  • UndoState wurde zu TextFieldState hinzugefügt, mit der vom Nutzer vorgenommene Änderungen rückgängig gemacht/wiederholt werden können. (ICC024)

Fehlerkorrekturen

  • Problem behoben, bei dem basicMarquee nach der Geschwindigkeitsänderung nicht animiert wurde. (Id2e77, b/297974036)

Version 1.6.0-alpha06

20. September 2023

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

Neue Funktionen

  • Neue zusammensetzbare Wrapper für SurfaceView, TextureView: GraphicsSurface() und EmbeddedGraphicsSurface(). Die API ist experimentell und unterliegt Änderungen und Änderungen. (I9ddb2)
  • Modifier.magnifier() ist jetzt eine stabile API. Dazu gehört auch, dass MagnifierStyle zugunsten von Inline-Parametern im Modifikator selbst entfernt wird. (I83bec, b/298381260, b/262367109, b/261438887)

API-Änderungen

  • updateCurrentPage und updateTargetPage wurden in ScrollScope eingeführt. Dies sind die letzten Elemente, die erforderlich sind, um das animierte Scrollen durch PagerState.scroll anzupassen. (I9cad5, b/267744105, b/243786897)
  • Kompaktheitsgrad von SnapFlingBehavior entfernen. Alle Implementierungen von SnapLayoutInfoProvider haben bereits eine Möglichkeit, auf die Dichte zuzugreifen. Möglicherweise wird der Empfängerbereich entfernt, 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 unter Verwendung der Layoutinformationen erfolgen und über die Methode oder das Andocken von Offsets bereitgestellt werden. (If320c)

Änderungen im Verhalten

  • In „Compose“ wird jetzt eine nicht lineare Schriftskalierung verwendet, um die Lesbarkeit und Barrierefreiheit zu verbessern. Ist die Schriftgröße in den Systemeinstellungen höher als 100 %, wird kleiner Text normal vergrößert, aber bereits großer Text vergrößert sich nur geringfügig. Außerdem werden die im SP definierten Zeilenhöhen automatisch so angepasst, dass sie proportional zur geplanten Höhe von 100% bleiben. Weitere Informationen finden Sie unter Best Practices für die Schriftskalierung (I11518).

Fehlerkorrekturen

  • Die Verwendung von rememberSaveable für Kurzinfos wurde entfernt. (Icc131, b/299500338)

Version 1.6.0-alpha05

6. September 2023

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

API-Änderungen

  • Füge Überlastungen für BasicSecureTextField hinzu, die einen unveränderlichen Wert akzeptieren, und einen Callback, um diesen Wert zu ändern, wie bei der aktuellen BasicTextField API. (Ia4882)
  • Fügen Sie Modifier.preferKeepClear() hinzu, um bei API 33 und höher als zusammensetzbar zu kennzeichnen, dass keine unverankerten Fenster zulässig sind. (Ib51d5, b/297260115)
  • Die Bewegungsgeschwindigkeiten in Komponenten der Datenansicht wie ScrollView und RecyclerView sind auf ViewConfiguration.ScaledMaximumFlingVelocity begrenzt. „Compose“ enthält jetzt eine eigene Version von maximumFlingVelocity, die jetzt für Draggable gilt. (Ibf974)
  • Die verworfenen Pager- und PagerState-Überlastungen wurden entfernt. (IEa07e)
  • BasicTooltipBox wurde compose.foundation hinzugefügt und PlainTooltipBox und RichTooltipBox aktualisiert, um TooltipBox mit neuen Zusammensetzbaren PlainTooltip und RichTooltip zu verwenden. (I79e1d)

Version 1.6.0-alpha04

23. August 2023

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

API-Änderungen

  • ReusableComposition-Schnittstelle zur Verwaltung des Lebenszyklus und der Wiederverwendung von Unterzusammensetzungen hinzugefügt. (I812d1, b/252846775)
  • Modifier.focusGroup wurde zu stabilen APIs hochgestuft. (I7ffa3)
  • Füge Überlastungen für BasicTextField2 hinzu, die einen unveränderlichen Wert akzeptieren, und einen Callback, um diesen Wert zu ändern, wie bei der aktuellen BasicTextField API. (I3f2b8)
  • GridItemSpan::currentLineSpan ist jetzt eine stabile API. (ICC29c)
  • Canvas, der contentDescription akzeptiert, ist jetzt eine stabile API. (Ib3d29)
  • viewportSize wurde in ScrollState eingeführt. Damit lässt sich die Größe von viewPort der Komponente ermitteln, die nach dem Messen ScrollState verwendet. (I8b85a, b/283102682)
  • Es wurde ein Problem behoben, durch das der Vorabruf in Pager nicht mit dem Verhalten in Views übereinstimmte. (I93352, b/289088847)
  • Modifier.consumeWindowInsets(PaddingValues) ist jetzt stabil.
    • Die Deprecated Modifier.consumedWindowInsets API wurde entfernt. Verwende stattdessen Modifier.consumeWindowInsets. (Id72bb)

Version 1.6.0-alpha03

9. August 2023

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

API-Änderungen

  • Die Überlastung von LazyLayout wurde hinzugefügt und akzeptiert als Lambda LazyLayoutItemProvider statt eines einfachen Objekts wie zuvor. Die vorherige Überlastung wurde verworfen. (I42a5a)
  • Unterstützung für die Konfiguration von privateImeOptions hinzugefügt (Idb772)

Fehlerkorrekturen

  • Textfelder, die die Tastatur anzeigen und bearbeitbar sind, wenn readOnly auf „true“ gesetzt ist, wurden korrigiert. Außerdem wurde behoben, dass die Tastatur nicht angezeigt wurde, wenn readOnly im Fokus von "true" zu "false" geändert wurde. (I34a19, b/246909589)

Version 1.6.0-alpha02

26. Juli 2023

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

API-Änderungen

  • Einführung von PagerLayoutInfo mit Informationen, die nach einer Messung 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 zur Angabe zulässiger Eingaben für zusammensetzbare Funktionen (I51109)
  • SemanticsNodeInteraction.requestFocus wurde hinzugefügt, um den Fokus bei Tests bequemer und auffindbarer zu machen. (Ie8722)
  • Komplett überarbeitete PlatformTextInput* API. (I6c93a, b/274661182, b/267235947, b/277380808)
  • SoftwareKeyboardController und LocalSoftwareKeyboardController befinden sich nicht mehr in der Testphase. LocalSoftwareKeyboardController ist jetzt auch ein richtiger CompositionLocal. (I4c364)
  • Modifier.transformable gibt jetzt im canPan-Parameter ein Schwenk-Delta an, um festzulegen, in welche Richtung das Verschieben erfolgen soll. (I692aa, b/266829800)
  • Aktualisiert den Modifikator consumeWindowInsets, um die Basisklasse AbstractComposeView zu erweitern (Iacd74, b/269479941)

Version 1.6.0-alpha01

21. Juni 2023

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

Neue Funktionen

  • Einführung einer neuen AnchoredDraggable API in der Foundation Damit können Komponenten erstellt werden, die zwischen einzelnen Zuständen gezogen werden können, z. B. modale Ansichten am unteren Rand. Diese API ersetzt die Swipeable API von Material. (I4a2ed)

API-Änderungen

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

Fehlerkorrekturen

  • Es wurde eine Lint-Prüfung hinzugefügt, die warnt, wenn Sie eine MutableInteractionSource in der Zusammensetzung erstellen, ohne sie zu speichern, ähnlich wie bei der Lint-Prüfung zum Erstellen eines veränderlichen Zustands / Animatable. (i5daae)
  • Die Auswahl per Maus wird jetzt unterstützt. Die berührungsbasierte Auswahl wird um Wort für Wort erweitert und um Zeichen verkleinert. (IC0c6c, b/180639271)
  • Es wurde eine FocusTargetModifierNode-Oberfläche hinzugefügt, die zum Erstellen einer benutzerdefinierten FocusTarget verwendet werden kann. (I9790e)

Version 1.5

Version 1.5.4

18. Oktober 2023

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

Version 1.5.3

4. Oktober 2023

androidx.compose.foundation:foundation-*:1.5.3 wurde veröffentlicht. An dieser Version wurden keine Änderungen vorgenommen.

Version 1.5.2

27. September 2023

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

Fehlerkorrekturen

  • Es wurde ein Fehler im Text behoben, der unter bestimmten Umständen zu Abstürzen führte, wenn die Semantik ungültig wurde.

Version 1.5.1

6. September 2023

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

Fehlerkorrekturen

  • Textfelder, die die Tastatur anzeigen und bearbeitbar sind, wenn readOnly auf „true“ gesetzt ist, wurden korrigiert. Außerdem wurde behoben, dass die Tastatur nicht angezeigt wurde, wenn readOnly im Fokus von "true" zu "false" geändert wurde. (I34a19, b/246909589)

Version 1.5.0

9. August 2023

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

Wichtige Änderungen seit Version 1.4.0

  • Viele grundlegende Modifikatoren, darunter Modifier.clickable,Modifier.draggable, Modifier.scrollable und Layoutmodifikatoren, wurden zur Modifier.Node API migriert, um den Aufwand für die erste Zusammensetzung zu reduzieren.
  • Die Pagers-Stabilität wurde verbessert. Viele Fehler wurden behoben.
  • Die pageCount-Parameter befinden sich jetzt in PagerState statt im Pager selbst

Version 1.5.0-rc01

26. Juli 2023

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

Fehlerkorrekturen

  • Es ist eine optionale Prüfung verfügbar, um zu empfehlen, mutableStateOf()-Aufrufe zu den entsprechenden speziellen Typen für Primitive zu migrieren. Die Lint-ID lautet AutoboxingStateCreation. Bisher war diese Prüfung standardmäßig für alle Projekte aktiviert. Wenn Sie diese Warnung im Android Studio-Editor und in den Lint-Ausgaben Ihres Projekts sehen möchten, ändern Sie den Schweregrad von „Informativ“ zu „Warnung“ (oder höher). Deklarieren Sie dazu warning "AutoboxingStateCreation" 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 wurde veröffentlicht. Version 1.5.0-beta03 enthält diese Commits.

Version 1.5.0-beta02

7. Juni 2023

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

Version 1.5.0-beta01

24. Mai 2023

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

API-Änderungen

  • Implementiere PlatformDataProvider, um die Herzfrequenz und die täglichen Schritte anzugeben. Die Schnittstelle SensorGateway wurde aus der öffentlichen API entfernt. (I55b84)

Fehlerkorrekturen

  • Zuweisungen bei Lazy List-/Grids-Messungen usw. reduzieren (Iaf9e2)
  • Reduzierte Zuweisungen beim Anwenden von Snapshots (I65c09)
  • Zuweisungen aus Federanimationen entfernt (Ie9431)
  • Zuweisung von TextLayout entfernt (I0fd11)
  • Mehrere Zuweisungen bei der Zeiger-Geschwindigkeitsverfolgung wurden entfernt (I26bae).

Version 1.5.0-alpha04

10. Mai 2023

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

API-Änderungen

  • Der optimierte TextStyle.merge(...) mit vollständiger Parameterliste wurde hinzugefügt. (Iad234, b/246961787)
  • Stell eine SnapLayoutInfoProvider vor, die 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 ihn auf die Elemente anwenden, um die Animationen für die automatische Positionsänderung oder -neuanordnung zu erreichen. (I4b62d, b/257034719)
  • GridCells.FixedSize auf stabile Version hochstufen. FixedSize definiert eine LazyGrid, bei der jede Zelle die exakte Größe entlang der Querachse hat. Der verbleibende Platz ist dabei durch die Querachsenanordnung verteilt. (I8542f)
  • Einführung des Empfängerbereichs PagerScope für Pager und einer Dienstfunktion für die Berechnung eines bestimmten Seitenversatzes. (If2577)
  • Stell das snapPositionalThreshold-Element vor, wenn du ein Andockverhalten erstellst. Verwenden Sie diesen Parameter, um einen Positionsschwellenwert für das kurze Andocken in Pager anzugeben. (If8f7f)
  • SnapLayoutInfoProvider.calculateSnappingOffsetBounds“ wurde durch „calculateSnappingOffset“ ersetzt. Bei dieser neuen Methode fordern wir einfach den nächsten Offset zum Andocken an. Die Berechnung der Grenzen sollte auf Implementierungsebene durchgeführt werden, da diese je nachdem, wie ein Andocken ausgeführt werden muss, variieren kann. (I923a4)
  • LazyStaggeredGrid APIs wurden auf die stabile Version hochgestuft. (I633a5)
  • pageCount aus Horizontal/VerticalPager entfernen. Diese sollte bei der Erstellung des Bundesstaats angegeben werden. PagerState und rememberPagerState wurden aktualisiert, um die pageCount zu akzeptieren. (Ieb52d, b/266965072)
  • pageCount aus Horizontal/VerticalPager entfernen. Diese sollte bei der Erstellung des Bundesstaats angegeben werden. PagerState und rememberPagerState wurden aktualisiert, um die pageCount zu akzeptieren. (Ifa3cb, b/266965072)
  • Stelle shortSnapVelocityThreshold in Pagers SnapFlingBehavior vor. (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)
  • Ein Problem wurde behoben, bei dem die Tastatur für Textfelder in Dialogfeldern, die nicht mit der zusammensetzbaren Funktion Dialog erstellt wurden, nicht angezeigt wurde. (I82551, b/262140644)

Version 1.5.0-alpha03

19. April 2023

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

In dieser Version wird der neue Text-Rendering-Stack für Compose aktiviert. Der neue Stapel ist leistungsoptimiert und Sie sollten keine sichtbaren Änderungen sehen.

Wenn du Änderungen im gerenderten Text feststellst, kannst du zur Fehlerbehebung NewTextRendering1_5 = false festlegen, um den Verhaltensunterschied zu bestätigen. Mit dieser Einstellung wird eine Neuzusammensetzung erzwungen. Bitte melden Sie alle Verhaltensunterschiede als Fehler.

Das Debug-Flag wird vor der Betaversion 1.5 entfernt.(Iada23, b/246960758)

API-Änderungen

  • FlowColumn/FlowRow inline erstellen. (Idab37)

Version 1.5.0-alpha02

5. April 2023

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

API-Änderungen

  • Zusätzliche Unterstützung für Zellen mit fester Größe in LazyGrid und die Anordnung der Zellen in Querachsen-Anordnung. (I83ed9, b/235121277, b/267942510)
  • In LazyStaggeredGrid werden jetzt Fahrspuren mit fester Größe und die Anordnung von Fahrspuren in Querachsen unterstützt. (I7d519)
  • UrlAnnotation-Werte in AnnotatedString Sek. können jetzt über Bedienungshilfen wie TalkBack geöffnet werden. (If4d82, b/253292081)
  • Die Semantikaktion InsertTextAtCursor für Textfelder wurde hinzugefügt. (I11ed5)
  • Bei textbezogenen Testaktionen (z.B. performTextInput) wird der Fokus jetzt direkt über die semantische Aktion angefordert, anstatt auf das Feld zu klicken. (I6ed05)
  • Unterstützung für den Abstand/die Anordnung von Querachsen mithilfe von verticalArrangement in FlowRow und horizontalArrangement in FlowColumn. Außerdem entfernen wir die verticalAlignment und die horizontalAlignment auf oberster Ebene in FlowRow/FlowColumn. Entwickler können stattdessen Modifier.align verwenden. Dadurch wird Verwechslungen zwischen den Namenskonventionen 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 wurden veröffentlicht. Version 1.5.0-alpha01 enthält diese Commits.

API-Änderungen

  • Text und BasicText wurden refaktoriert, um das neue Modifikatorsystem zu verwenden. Das führt in vielen Fällen zu erheblichen Leistungsverbesserungen. Es sollten keine Änderungen sichtbar sein. (If1d17, b/246961435)
  • Die Semantikaktion PerformImeAction zum Aufrufen der IME-Aktion auf Texteditorknoten wurde hinzugefügt. (Ic606f, b/269633506)

Fehlerkorrekturen

  • Interna von Modifier.hoverable wurden aktualisiert. Der hoverable-Modifikator wird nur dann im Inspector angezeigt, wenn er aktiviert ist. (I82103)

Version 1.4

Version 1.4.3

3. Mai 2023

androidx.compose.foundation:foundation:1.4.3 und androidx.compose.foundation:foundation-layout:1.4.3 werden ohne Änderungen veröffentlicht (nur ein Versionssprung).

Version 1.4.2

19. April 2023

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

Version 1.4.1

5. April 2023

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

Version 1.4.0

22. März 2023

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

Wichtige Änderungen seit Version 1.3.0

  • Emoji-kompatible Integration wurde für Text und TextField sowie für den unteren Absatz (Absatz) hinzugefügt. Wenn „EmojiCompat“ konfiguriert ist, ist es standardmäßig aktiviert.
  • EmojiCompat kann mithilfe von PlatformParagraphStyle für einen bestimmten Text konfiguriert werden.
  • LazyStaggeredGrid(I28252) wurde vollständig unterstützt.
  • Experimentelle onHover wird zu ClickableText hinzugefügt (I6938f)
  • Einführung neuer experimenteller Überlastungen für die runComposeUiTest- und create*ComposeRule-Funktionen, die CoroutineContext-Parameter akzeptieren. Der Kontext wird für die Testzusammensetzung und alle LaunchedEffect- und rememberCoroutineScope()-Aufrufe in der Zusammensetzung verwendet. (I10614, b/265177763)
  • FlowRow und FlowColumn sind jetzt als @ExperimentalFoundationApi verfügbar. Sie ermöglichen ein flexibleres zeilen- und spaltenbasiertes Layout von Komponenten, die zu einer neuen Zeile führen, wenn nicht genügend Platz auf der Hauptachse vorhanden ist. (I3a7b2)
  • Modifier.basicMarquee() ist als experimentelle Funktion für die Anzeige von Inhalten mit einem Laufschriftbild-Effekt verfügbar. (I2df44, b/139321650)

Version 1.4.0-rc01

8. März 2023

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

API-Änderungen

  • Einführung einer neuen Low-Level-PlatformTextInputAdapter-API zum Erstellen benutzerdefinierter Texteingabeimplementierungen, die direkt mit Plattform-APIs kommunizieren. (I58df4)
  • LazyStaggeredGrid wird jetzt für das umgekehrte Layout unterstützt. (I3ef4a)

Fehlerkorrekturen

  • Mit der Semantikaktion SetText von BasicTextField wird der Textpuffer jetzt mit demselben Codepfad wie IME-Updates und die Testfunktionen (z.B. performTextReplacement) aktualisiert.
  • Für 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, damit der Fall bei der Wiederverwendung von Layout korrekt verarbeitet wird (z. B. als Element von LazyColumn). Das Problem FocusTargetModifierNode wurde behoben, damit der fokussierte Zustand korrekt zurückgesetzt wird. (I65495, b/265201972)
  • Der BlendMode-Parameter wurde den Methoden DrawScope.drawText, Paragraph.paint und MultiParagraph.paint hinzugefügt, um beim Zeichnen von Text auf Canvas verschiedene Mischalgorithmen zu unterstützen. (I57508)
  • Die modifierElementOf() API wurde entfernt. Bitte verlängern Sie es stattdessen direkt von ModifierNodeElement. (Ie6d21)

Fehlerkorrekturen

  • Durch das Anpassen von Auswahlziehpunkten kann kein Teilzeichen mehr ausgewählt werden. (Idedd1)
  • Absturzfehler bei Strg + Rücktaste bei leerem TextField (I0427f, b/244185537) behoben

Version 1.4.0-beta01

8. Februar 2023

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

Neue Funktionen

  • Seit Version 1.3 wurde die Emoji-kompatible Integration für Text und TextField sowie für den unteren Abschnitt des Absatzes hinzugefügt. Wenn „EmojiCompat“ konfiguriert ist, ist es standardmäßig aktiviert.
  • EmojiCompat kann mithilfe von PlatformParagraphStyle für einen bestimmten Text konfiguriert werden.

API-Änderungen

  • Es wurde eine allgemeine Implementierung der PinnableContainer API hinzugefügt, die in allen LazyLayouts verwendet wird, um Elemente aufzubewahren, die die Zusammensetzung beenden, aber noch aktiv sein müssen. (If45a4)
  • PinnableContainer.PinnedHandle.unpin() wurde in release() (I4667a) umbenannt

Externer Beitrag

  • mainAxisItemSpacing-Property zu LazyListLayoutInfo, LazyGridLayoutInfo und LazyStaggeredGridItemInfo (I52fad) hinzugefügt

Version 1.4.0-alpha05

25. Januar 2023

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

Neue Funktionen

  • LazyStaggeredGrid (I28252) wurde vollständig unterstützt.
  • Experimentelle onHover wird zu ClickableText hinzugefügt (I6938f)
  • Einführung neuer experimenteller Überlastungen für die runComposeUiTest- und create*ComposeRule-Funktionen, die CoroutineContext-Parameter akzeptieren. Der Kontext wird für die Testzusammensetzung und alle LaunchedEffect- und rememberCoroutineScope()-Aufrufe in der Zusammensetzung verwendet. (I10614, b/265177763)

API-Änderungen

  • Führt die Pre-/Post-APIs von OverscrollEffect in kombinierten applyToScroll- und applyToFling-Funktionen für Decorators zusammen. In den aktualisierten Beispielen in der Dokumentation finden Sie Beispiele zur Implementierung eines Overscroll-Effekts mit der neuen API-Form. (I8a9c4, b/255554340)
  • Mehr Typen/Null-Zulässigkeit von Inline-/eingestellten/verborgenen Funktionen (I24f91)
  • Die APIs LineBreak und Hyphens in TextStyle wurden auf die stabile Version umgestellt. (IC1e1d)

Fehlerkorrekturen

  • Der Cursor in Textfeldern blinkt jetzt auch dann weiter, wenn Animationen deaktiviert sind. (I95e70, b/265177763)
  • Modifier.basicMarquee wird jetzt auch dann animiert, wenn sie in den Systemeinstellungen deaktiviert sind. (I23389, b/262298306, b/265177763)

Externer Beitrag

  • notifyFocusedRect-Methoden in TextInputSession und TextInputService werden nicht mehr verworfen. (I23a04, b/262648050)

Version 1.4.0-alpha04

11. Januar 2023

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

Neue Funktionen

  • FlowRow und FlowColumn sind jetzt als @ExperimentalFoundationApi verfügbar. Sie ermöglichen ein flexibleres zeilen- und spaltenbasiertes Layout von Komponenten, die zu einer neuen Zeile führen, wenn nicht genügend Platz auf der Hauptachse vorhanden ist. (I3a7b2)
  • Modifier.basicMarquee() ist als experimentelle Funktion für die Anzeige von Inhalten mit einem Laufschriftbild-Effekt verfügbar. (I2df44, b/139321650)

API-Änderungen

  • FocusRequesterModifier wird zugunsten von FocusRequesterNode eingestellt (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/2545299340184{/185
  • Der AndroidFont-Konstruktor mit variationSettings ist jetzt eine stabile API und kann zum Erstellen neuer Arten von Schriftdeskriptoren verwendet werden. (I5adcc, b/261565807)
  • Es wurde die PinnableContainer API eingeführt, die von Lazy Listen über eine lokale Komposition übertragen wird, mit der aktuelles Element angepinnt werden kann. Das bedeutet, dass das Element nicht entsorgt wird, wenn es aus der Ansicht weggescrollt wird. Beispielsweise wird mit Modifier.focusable() das aktuell fokussierte Element mit diesem Mechanismus angepinnt. (Ib8881, b/259274257, b/195049010)
  • Die Reaktion von Scrollables auf bringIntoViewRequesters und fokussierbare Elemente wurde umgeschrieben, um die Komplexität dieser Vorgänge besser zu modellieren und mehr Grenzfälle zu bewältigen. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114)
  • Höhere Null-Zulässigkeit für Rückgaben von nicht mehr unterstützten Funktionen (Ibf7b0)
  • Die experimentelle Funktion TextMotion wurde zu TextStyle hinzugefügt, um für Text entweder Static(default) oder Animiert zu definieren. Verwenden Sie TextMotion.Animated, wenn der Text durch Animation skaliert, übersetzt oder gedreht werden soll. (I24dd7)
  • TextFieldFocusModifier hinzufügen, um das Verhalten der Fokusnavigation für die Android-Plattform zu korrigieren (I00303)
  • Das Argument maxSize: IntSize in drawText wurde durch size: Size ersetzt, um es in andere DrawScope-Funktionen einzufügen. size ist standardmäßig auf Size.Unspecified gesetzt. Das sollte das vorherige Standardverhalten nicht ändern. (Icd27d)

Fehlerkorrekturen

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

Bekanntes Problem

  • Beim Aktualisieren von androidx.compose.foundation:1.4.0-alpha03 auf androidx.compose.foundation:1.4.0-alpha04 kann ein java.lang.NoSuchFieldError-Fehler auftreten. Das Problem wurde an dieser Stelle gemeldet. Eine Korrektur wurde gesendet, die mit dem nächsten Update für das Schreiben von Änderungen verfügbar ist. Um das Problem zu umgehen, aktualisieren Sie 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 durch.

Version 1.4.0-alpha03

7. Dezember 2022

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

API-Änderungen

  • Bei UI-Tests mit einer Schreibregel werden Fortsetzungen, die während withFrameNanos-Callbacks fortgesetzt werden, erst abgesendet, nachdem alle Frame-Callbacks ausgeführt wurden. Dies entspricht dem Verhalten des Editors bei normaler Ausführung. Tests, die auf dem alten Verhalten basieren, können jedoch fehlschlagen. Dies sollte nur Code betreffen, der withFrameNanos oder withFrameMillis direkt aufruft und bei dem die Logik außerhalb des Callbacks an die Funktionen übergeben wird, die möglicherweise innerhalb der Callbacks verschoben werden müssen. Beispiele finden Sie in den Änderungen an den Animationstests in dieser Änderungsliste.
  • Ein optionaler onPerformTraversals: (Long) -> Unit-Parameter wurde dem TestMonotonicFrameClock-Konstruktor und der Factory-Funktion hinzugefügt, um Code nach withFrameNanos-Callbacks auszuführen, aber bevor die Koroutinen der Aufrufer fortgesetzt werden. (Idb413, b/254115946, b/222093277, b/255802670)
  • Stell die Bedienungshilfen für Seiten vor: PageUp, PageDown, PageLeft, PageRight. Beachten Sie, dass diese erst ab API 29 verfügbar sind. (Ida4ab)
  • Stell HorizontalPager und VerticalPager vor, eine Möglichkeit, zusammensetzbare Funktionen auf Pager-Formulierungen darzustellen. PagerState wurde eingeführt, um die Pager zu steuern und Informationen zum aktuellen Status des Pagers abzufragen. PageSize wurde eingeführt, eine Methode zur Steuerung der Größe einer Pager-Seite. Damit kann ein Karussell wie Pager erstellt werden. Einführung von PagerSnapDistance, eine Möglichkeit, um zu steuern, wie das Andocken auf das Sprungverhalten von Pager funktioniert. (I01120)
  • Eine Überlastung wurde in SnapFlingBehavior.performFling eingeführt, um besser zu verstehen, wo sich der Flieger niederlassen wird. (I569f6)
  • OverscrollEffect#isEnabled wurde entfernt. Anstatt sich dieses Flag merken und festlegen zu müssen, lösen Sie einfach keine Ereignisse für den Overscroll-Effekt aus, wenn Sie nicht möchten, dass Overscroll angezeigt wird (z. B. wenn ScrollableState#canScrollForward/backward beide den Wert „false“ zurückgeben). (I1a4b0, b/255554340, b/255557085)
  • ScrollableState#canScrollForward und ScrollableState#canScrollBackward wurden hinzugefügt, um abzufragen, ob eine ScrollableState in beide Richtungen scrollen kann (ob die Mindest- oder Höchstgrenze des Bereichs erreicht ist). Der Standardwert ist „true“, um die Abwärtskompatibilität mit vorhandenen Implementierungen von ScrollableState zu gewährleisten. Damit können Nutzer darauf hinweisen, dass noch Platz zum Scrollen ist. Außerdem könnte so vermieden werden, dass Deltas zu ScrollableStates gesendet werden, die keinen Platz zum Scrollen in eine bestimmte Richtung haben, um unnötigen Aufwand zu reduzieren. (Idf1a0, b/255557085)
  • Eine Modifier API wurde hinzugefügt, um die Scroll-Informationen von Ancestors abzufragen. (I2ba9d, b/203141462)
  • Wird in Clickable verwendet, um Interaktionen beim Drücken korrekt zu verzögern, wenn Gesten zu Scroll-Ereignissen werden können.
  • Das Problem, dass Clickables bei Verwendung innerhalb von Scrollable ViewGroup die Ripples nicht korrekt verzögerte, wurde behoben.
  • Leisten und Tabellen wurden aktualisiert, um das Drücken korrekt zu verzögern, falls Gesten zu Scroll-Ereignissen werden können.
  • Aktualisieren Sie die snapStepSize-Benennung, damit sie mit anderen Methoden in SnapLayoutInfoProvider konsistent ist. (Ife67c)
  • EmojiCompat 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. Dieser Fehler ist aufgetreten, wenn die Anzahl der neuen Elemente geringer war als die vorherige. (I0bcac, b/253195989)

Version 1.4.0-alpha02

9. November 2022

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

API-Änderungen

  • awaitFirstDown und waitForUpOrCancellation akzeptieren jetzt PointerEventPass für mehr Flexibilität. (I7579a, b/212091796)
  • beyondBoundCount API von Lazy* APIs wiederherstellen (I12197)
  • Einführung von Parametern in Lazy APIs, um Elemente außerhalb des Darstellungsbereichs zu erstellen und zu platzieren (I69e89, b/172029355)
  • Der Parameter minLines wurde zu BasicText und BasicTextField hinzugefügt. Damit kann die Mindesthöhe dieser zusammensetzbaren Funktionen in Bezug auf die Anzahl der Zeilen festgelegt werden (I24294, b/122476634).

Version 1.4.0-alpha01

24. Oktober 2022

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

API-Änderungen

  • Die neue Methode awaitEachGesture() für Bewegungsdetektoren wurde hinzugefügt. Sie funktioniert ähnlich wie forEachGesture(), aber die Loop-over-Gesten erfolgen vollständig innerhalb von AwaitPointerEventScope, sodass Ereignisse zwischen Iterationen nicht verloren gehen können.
  • forEachGesture() wurde zugunsten von awaitEachGesture() eingestellt, weil dadurch Ereignisse zwischen 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 der IME nach Abschluss der Animation befindet. (I356f1, b/217770337)

Version 1.3

Version 1.3.1

9. November 2022

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

Fehlerkorrekturen

  • Leistungsprobleme in BeyondBoundsLayout beheben (aosp/2255266)
  • ContentInViewModifier liest Layoutkoordinaten nur, wenn sie angehängt werden (aosp/2241316).

Version 1.3.0

24. Oktober 2022

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

Wichtige Änderungen seit Version 1.2.0

  • Es wurden experimentelle Versionen von LazyVerticalStaggeredGrid und LazyHorizontalStaggeredGrid eingeführt.
  • SnapFlingBehavior, rememberSnapFlingBehavior und andere entsprechende APIs wurden als experimentell hinzugefügt.
  • In Modifier.clickable, Modifier.toggleable und Modifier.selectable werden jetzt Wellen angezeigt, wenn du mit der Tastatur oder dem Steuerkreuz auf einer Fernbedienung klickst.

Version 1.3.0-rc01

5. Oktober 2022

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

API-Änderungen

  • Einführung von lowVelocityAnimationSpec, das im Annäherungsschritt verwendet wird, wenn die Fluggeschwindigkeit nicht ausreichend ist, um abzuschwächen. (Iaeb27)
  • Neue experimentelle API-Bindestriche zur Unterstützung der automatischen Bindestrichsetzung in Text hinzugefügt (Iaa869)

Version 1.3.0-beta03

21. September 2022

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

API-Änderungen

  • Optionen zum Anpassen des Zeilenumbruchs im Text hinzufügen. (I86907)
  • BringIntoViewResponder können jetzt bei der Verarbeitung die aktuellen Grenzen einer Anfrage abrufen. (If86a5, b/241591211)
  • Unterstützung für Abstände zwischen Elementen im experimentellen Staggered Grid (I10b82)
  • Einführung des Abstands nach Inhalten in die experimentelle Staggered Grid (I342ea)
  • Das Argument size:IntSize wurde in der Methode TextMeasurer.measure mit constraints: Constraints geändert, um Einschränkungen für die minimale Breite zu unterstützen. (I37530, b/242707525)
  • Modifier.withConsumedWindowInsets() wurde hinzugefügt, um WindowInsets zur Verwendung außerhalb von windowInsetsPadding zu nutzen.
  • MutableWindowInsets wurde hinzugefügt, um das Ändern von WindowInsets ohne Neuzusammensetzung zu ermöglichen. (I7fd28, b/237019262, b/243119659)

Version 1.3.0-beta02

7. September 2022

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

API-Änderungen

  • Erste Version der experimentellen Version von StaggeredGrid (Ia48be)
  • FocusDirection.In 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. SnapLayoutInfoProvider-Methoden wurden auf Dichte übertragen, um die Dp-<->-Px-Konvertierungen für die API-Nutzer zu vereinfachen. (I54a11)
  • Aktualisieren Sie LazyLayoutMeasureScope.measure, um eine Liste der platzierbaren Elemente zurückzugeben. Heben Sie dabei die gewünschte Unveränderlichkeit des zurückgegebenen Werts hervor. (I48b7c)
  • Einführung von SnapLayoutInfoProvider. Damit wird eine LazyListState-Instanz von SnapLayoutInfoProvider erstellt, mit der ein Snap FlingBehavior für LazyLists aktiviert werden kann. (I2dd10)

Fehlerkorrekturen

  • Refaktoriert AwaitPointerEventScope#awaitLongPressOrCancellation, damit es anderen Await-Funktionen entspricht (I646e6)

Version 1.3.0-beta01

24. August 2022

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

API-Änderungen

  • pointerPosition wurde aus OverscrollEffect entfernt: Effekte, für die die Zeigerposition wichtig ist, können stattdessen Modifier.pointerInput { } in der effectModifier verwenden, um die aktuelle Zeigerposition abzurufen. (I9f606, b/241239306)
  • AwaitPointerEventScope#awaitLongPressOrCancellation als zusätzlicher Baustein für eine komplexere Bewegungserkennung sichtbar (I04374, b/181577176)
  • lazyListSnapLayoutInfoProvider wurde eingeführt, um das Andocken in Lazy-Listen zu ermöglichen. (I3ecdf)
  • Einführung von SnapFlingBehavior, einem Fling-Verhalten, das das Andocken von Listen ermöglicht. Geben Sie eine Instanz von SnapLayoutInfoProvider mit Informationen zum Andocklayout an. (Ie754c)

Version 1.3.0-alpha03

10. August 2022

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

API-Änderungen

  • Ressourcenschriftarten unterstützen jetzt das Festlegen von Einstellungen für Schriftvariationen (API 26 und höher). (I900dd, b/143703328)
  • Unterstützung für variable Schriftarten in DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • Die experimentelle Annotation wurde aus PlatformTextStyle und LineHeightStyle entfernt. (I64bef)
  • Textfelder geben jetzt detailliertere Ausnahmen aus, wenn die von VisualTransformation bereitgestellte OffsetMapping ungültige Indexe zurückgibt. (Ie73f9, b/229378536)
  • Führen Sie experimentelle APIs ein, um die Logik des Artikelanbieters für Lazy-Layouts zu teilen. (IC891c)
  • ScrollableDefaults.reverseDirection() ist nicht mehr experimentell. (Iba646)
  • SemanticsModifier.id wurde eingestellt und die Semantik-ID wurde nach LayoutInfo.semanticsId verschoben. (Iac808, b/203559524)
  • checkScrollableContainerConstraints() ist nicht mehr experimentell. (I2c290)
  • Modifier.clipScrollableContainer() ist nicht mehr experimentell. (Ia2b44)
  • TextInputService.show|hideSoftwareKeyboard einstellen. Verwende im App-Code stattdessen SoftwareKeyboardController und im IME-Verwaltungscode TextInputSession. (I14e4c, b/183448615)

Version 1.3.0-alpha02

27. Juli 2022

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

API-Änderungen

  • Die Erweiterungsfunktion drawText wurde für DrawScope hinzugefügt, um eine Möglichkeit zu bieten, Text mit mehreren Stilen für zusammensetzbare Funktionen und Modifikatoren zu zeichnen, die auf einem DrawScope wie Canvas und drawBehind ausgeführt werden. (I16a62, b/190787898)

Fehlerkorrekturen

  • „Softtastatur“ wird jetzt ausgeblendet, wenn ein Textfeld im Fokus deaktiviert ist. (I6e3e4, b/237308379)
  • Beim Hinzufügen von InputEventChange-Ereignissen in Velocity Tracker werden jetzt Deltas anstelle von Positionen berücksichtigt. Dadurch wird garantiert, dass die Geschwindigkeit für alle Fälle korrekt berechnet wird, selbst wenn sich das Zielelement bewegt (Icea9d, b/216582726, b/223440806, b/227709803).
  • Wenn ein Scrollable über ein untergeordnetes Element im Fokus verfügt, wird es nun korrekt gescrollt, damit das fokussierte untergeordnete Element beim Verringern der Größe sichtbar bleibt, auch wenn die Größe animiert ist. (I80867, b/230756508, b/220119990)
  • Ein Absturz wurde behoben, bei dem TextField gelöscht und neu ausgefüllt wurde, während die Auswahl aktiv war. (I1235b, b/208655565, b/214253689)

Version 1.3.0-alpha01

29. Juni 2022

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

API-Änderungen

  • Einführung des Annotationstyps UrlAnnotation und der zugehörigen Methoden zur Unterstützung von TalkBack-Links in AnnotatedStrings. (I1c754, b/231495122)

Fehlerkorrekturen

  • BasicTextField cursorBrush kann jetzt ohne Neustart des Cursor-Timers animiert werden. (I812e6, b/236383522)

Version 1.2

Version 1.2.1

10. August 2022

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

Version 1.2.0

27. Juli 2022

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

Wichtige Änderungen seit Version 1.1.0

  • LazyVerticalGrid 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. Es ist die API, die wir intern für Lazy Listen und Raster verwenden.
  • Die OverscrollEffect API wurde als experimentell eingeführt. Sie können benutzerdefinierte Overscroll-Effekte definieren und benutzerdefinierten scrollbaren Containern eine Standardplattform-1 hinzufügen.
  • Verschachtelte Interoperabilitäts-APIs für das Scrollen wurden eingeführt, um die Interoperabilität zwischen Ansichten und Scrolling-Akteuren zu ermöglichen.
  • Das Scrollen mit Maus und Touchpad wurde allen scrollbaren Containern hinzugefügt.

Version 1.2.0-rc03

29. Juni 2022

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

  • Keine Änderungen seit 1.2.0 bis rc02.

Version 1.2.0-rc02

22. Juni 2022

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

Version 1.2.0-rc01

15. Juni 2022

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

API-Änderungen

  • Es wurde eine experimentelle OverscrollEffect eingeführt, um neben den Modifier.scrollable-Überladungen, die diese Overscroll-Effekte akzeptieren, benutzerdefinierte Overscroll-Effekte zu ermöglichen.
  • Die experimentelle LocalOverScrollConfiguration wurde von foundation.gesture in das Foundation Package verschoben und in LocalOverscrollConfiguration umbenannt (If19fb, b/204650733)
  • Schnittstellen in Erstellungsbibliotheken werden jetzt mit jdk8-Standardschnittstellenmethoden erstellt (I5bcf1).
  • Es wurde eine experimentelle API checkScrollableContainerConstraints() eingeführt, mit der geprüft werden kann, ob scrollbare Container verschachtelt werden. Sie können sie verwenden, wenn Sie ü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 in 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 wurden veröffentlicht. Version 1.2.0-beta03 enthält diese Commits.

API-Änderungen

  • Neue experimentelle IntervalList und MutableIntervalList hinzugefügt. Damit können einige Werte in mehreren Intervallen dargestellt werden. Das ist nützlich, wenn Sie eine eigene DSL ähnlich der von LazyColumn verwenden möchten, bei der Listenelemente über mehrere Element-/Elementaufrufe definiert werden können. (I2d05e, b/228580728)

Fehlerkorrekturen

  • In der Dokumentation zu WindowInsets.ime wurde klargestellt, dass ime-Einsätze ab API 23 gemeldet werden, aber ab API 30 nur animiert sind. (Ia7fc0, b/230756508)
  • Wenn Sie die Vorwärts-Löschtaste drücken, wenn sich der Cursor am Ende eines Textfelds befindet, stürzt dies nicht mehr ab.
  • Für DeleteSurroundingTextCommand und DeleteSurroundingTextInCodePointsCommand müssen ihre Konstruktorargumente jetzt nicht negativ sein. (Ica8e6, b/199919707)

Version 1.2.0-beta02

18. Mai 2022

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

  • Eine herunterladbare Schriftauflösung, bei der die Layoutgröße von Text oder TextField nicht geändert wurde, konnte nicht neu gezeichnet werden, was zu einer veralteten Schriftart führt. Durch diese Fehlerkorrektur wird sichergestellt, dass das Textlayout immer das Neuzeichnen auslöst (b/229727404). (I1d49e, b/229727404)

Version 1.2.0-beta01

11. Mai 2022

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

Neue Funktionen

  • Dies ist die erste Betaversion von Version 1.2.

API-Änderungen

  • Es wurde eine experimentelle BeyondBoundsInterval hinzugefügt, die von benutzerdefinierten Implementierungen von LazyList verwendet werden kann, wenn Elemente über die sichtbaren Grenzen hinaus angeordnet werden (Ifabfb, b/184670295).
  • LineHeightBehavior wird in LineHeightStyle umbenannt.
  • LineVerticalAlignment wird in LineHeightStyle.Alignment umbenannt.
  • LineHeightTrim“ wird umbenannt in „LineHeightStyle.Trim
  • Standardkonstruktorwerte aus LineHeightStyle werden entfernt (I582bf, b/181155707).
  • Es wurden Standardwerte für die optionalen Mitglieder der LazyLayoutItemProvider-Oberfläche hinzugefügt. (Iba8a0)
  • In der LazyLayoutItemProvider API gibt es jetzt eine einfachere zusammensetzbare Funktion, die den Index akzeptiert, statt in einer Factory, die die zusammensetzbare Lambda nach Index zurückgibt. (ID2196)
  • LazyLayoutItemsProvider wurde in LazyLayoutItemProvider (I0638c) umbenannt
  • LazyLayoutItemsProvider.itemsCount wird in itemCount umbenannt (Id409c).
  • Pinsel wurde zu TextStyle und SpanStyle hinzugefügt, um Text mit Farbverlauf zu zeichnen. (I53869, b/187839528)
  • trimFirstLineTop wurden die trimLastLineBottom-Attribute von LineHeightBehavior zu einer einzigen Aufzählung geändert: LineHeightTrim. LineHeightTrim haben Werte aus vier Zuständen, die durch zwei boolesche Werte definiert werden: FirstLineTop, LastLineBottom, Beide und keiner (Ifc6a5, b/181155707)
  • LineHeightBehavior wurde zu TextStyle hinzugefügt und ParagraphStyle. LineHeightBehavior steuert, ob die Zeilenhöhe am oberen und unteren Rand der letzten Zeile angewendet wird. Außerdem definiert er die Ausrichtung der Linie in dem 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.

  • Konfigurationen mit trimFirstLineTop und trimLastLineBottom funktionieren nur dann ordnungsgemäß, wenn includeFontPadding „false“ ist. (I97332, b/181155707)

  • Es wurde ein experimenteller imeNestedScroll()-Modifikator hinzugefügt, damit Entwickler den IME durch Scrollen steuern können. (I60759)

Fehlerkorrekturen

  • Problem bei der Regression behoben, bei dem Textfelder die Tastatur nicht ausblenden, wenn sie im Fokus aus der Komposition entfernt wurden. (I7a410, b/230536793, b/225541817)
  • Auslassungspunkte werden unterstützt, wenn die Höhe begrenzt ist und nicht für alle Textzeilen geeignet ist (Ie528c, b/168720622).
  • BringIntoViewRequester.bringIntoView wird jetzt immer angehalten, bis die Anfrage abgeschlossen ist oder von einer neueren, sich nicht überschneidenden Anfrage unterbrochen wurde. Sich überschneidende Anfragen werden in die Warteschlange gestellt. (I43e7f, b/216790855)
  • Gleichzeitige BringIntoViewRequester.bringIntoView-Aufrufe für vollständig überlappende Rechtecke berücksichtigen jetzt nur die Anfrage des größeren Rechtecks. (I34be7, b/216790855, b/184760918)
  • includeFontPadding ist standardmäßig aktiviert. Es ist möglich, die includeFontPadding mit dem Attribut TextStyle.platformTextStyle zu deaktivieren. In naher Zukunft werden wir das Standardverhalten ändern. Bis dahin können wir jedoch Verbesserungen an der Zeilenhöhe (aosp/2058653) besser integrieren und TextField-Clipping-Probleme beheben. (I01423, b/171394808)
  • Modifier.bringIntoViewRequester verwendet onGloballyPositioned nicht mehr. (I630f5)

Externer Beitrag

  • MouseInjectionScope.scroll(delta = someDelta) wird jetzt unter Android umgekehrt, wenn wir vertikal scrollen. Wenn „someDelta“ positiv ist, wird nach unten gescrollt. (Ifb697, b/224992993)

Version 1.2.0-alpha08

20. April 2022

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

API-Änderungen

  • Alle verfügbaren Schriftstärken für Systemschriftarten unter Android anzeigen, wenn FontFamily.SansSerif verwendet wird. In API 21 bis 28 werden dann intern Fallback-Schriftnamen wie „serif-medium“ verwendet. Dies ist eine Verhaltensänderung, da bisher nur die Gewichtungen 400 und 700 von API 21 bis 28 unterstützt wurden. (I380fe, b/156048036, b/226441992)
  • Absatz und MultiParagraph akzeptieren jetzt Einschränkungen-Parameter. Wenn Constraints.maxHeight übergeben wird, ist dies derzeit nicht möglich, ermöglicht aber zukünftige Berechnungen, z. B. Ellipsen, die auf der Höhe basieren. (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() akzeptiert jetzt eine benutzerdefinierte MutableSet-ähnliche Klasse, mit der keine neuen Elemente hinzugefügt werden können. (ICD314)
  • Der Teilverbrauch (nach unten ODER in der Position) wurde in PointerInputChange eingestellt. Sie können consume() verwenden, um die Änderung vollständig zu übernehmen. Mit isConsumed können Sie feststellen, ob die Änderung bereits von einer anderen Person übernommen wurde.
  • PointerInputChange::copy() erstellt jetzt immer eine oberflächliche Kopie. Das bedeutet, dass Kopien von „PointerInputChange“ genutzt werden, sobald eines der Exemplare genutzt wurde. Wenn Sie eine ungebundene PointerInputChange erstellen möchten, verwenden Sie stattdessen den Konstruktor. (Ie6be4, b/225669674)
  • Es wurde eine neue experimentelle LazyLayout API eingeführt. So können Sie Ihre eigenen Komponenten wie LazyColumn von LazyVerticalGrid erstellen. Die API befindet sich noch in der Anfangsphase und kann in zukünftigen Versionen geändert werden. (Iba2bc, b/166591700)
  • AndroidFont verwendet jetzt typefaceLoader als Konstruktorparameter. (I2c971)
  • WindowInsets“-Companion zeigt jetzt die Sichtbarkeit (ob sie auf dem Bildschirm erscheinen, unabhängig davon, ob sie sich mit dem Fenster kreuzen) und deren Größe an, wenn sie auf dem Gerät verfügbar, aber derzeit nicht aktiv sind. (I65182, b/217770337)

Version 1.2.0-alpha07

6. April 2022

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

API-Änderungen

  • Es wurde eine PinnableParent API hinzugefügt, mit der untergeordnete Elemente von Lazy-Layouts verhindert werden können, dass die aktuell erstellten Elemente entsorgt werden (Ibbdd0, b/184670295).
  • LazyListLayoutInfo und LazyGridLayoutInfo haben jetzt die Felder beforeContentPadding und afterContentPadding (I3b628, b/200920410)
  • KeyboardType.Decimal wurde als Alternative zu Keyboard.Number hinzugefügt, um speziell ein Dezimaltrennzeichen in IME zu verwenden. (Iec4c8, b/209835363)
  • Der neue Schriftartdeskriptor Font(DeviceFontFamilyName) wurde hinzugefügt, um optional vom System installierte Schriftarten während der Schriftart-Fallback-Ketten zu suchen. (I30468, b/219754572)
  • PointerEventType.Scroll 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 für fett formatierten Text zu integrieren (I6c1e7)
  • Mit der Erweiterungseigenschaft consumeWindowInsets von ComposeView können Entwickler die Nutzung von Android-WindowInsets deaktivieren. Dadurch können separate ComposeViews in der Hierarchie jeweils WindowInsets anwenden, ohne sich gegenseitig zu beeinträchtigen. (I0ef08, b/220943142)

Version 1.2.0-alpha06

23. März 2022

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

API-Änderungen

  • Semantikaktion RequestFocus wurde hinzugefügt, um den Fokus auf das fokussierbare Ziel anzufordern. (I17b71)
  • FocusOrder wurde mit FocusProperties zusammengeführt und focusProperties() verfügt jetzt über alle Funktionen von focusOrder(). FocusOrder und focusOrder() wurden verworfen. focusOrder(), der focusRequester akzeptiert, sollte durch einen focusRequester()-Modifikator in Kombination mit focusProperties() ersetzt werden. Dadurch können die Modifikatoren stärker getrennt werden. (I601b7)
  • WindowInsets.asPaddingValues(Density) wurde hinzugefügt, damit Entwickler die Conversion auch ohne Zusammenstellung ausführen können. (I94c35)
  • Das Parsen von Vektor-Drawables wurde aktualisiert, um die automatische Spiegelung zu unterstützen und den Inhalt einer VectorPainter umzudrehen, wenn die aktuelle Layoutrichtung RTL ist. (I79cd9, b/185760237)

Fehlerkorrekturen

  • Mit den Scroll-Modifikatoren (Modifier.verticalScroll(), Modifier.horizontalScroll() und Modifier.scrollable()) wird jetzt gescrollt, damit die fokussierte zusammensetzbare Funktion sichtbar bleibt, wenn die Größe des Scrollbereichs geändert wird und die fokussierte zusammensetzbare Funktion zuvor sichtbar war.
  • Textfelder werden jetzt über der Tastatur angezeigt, wenn sie fokussiert sind und die Tastatur angezeigt wird, wenn sie sich in einem nicht Lazy Scrollable befinden und der Modus für die weiche Eingabe ADJUST_RESIZE ist. (I4a485, b/190539358, b/192043120, b/216842427)

Version 1.2.0-alpha05

9. März 2022

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

API-Änderungen

  • LazyVerticalGrid 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 Clipping-Probleme infolge von includeFontPadding=false werden verarbeitet. Bei hohen Skripts sollte kein Zuschneiden auftreten. (I31c84, b/171394808)
  • Die Measured Interface zeigt jetzt die „parentData“-Property (I3313f) an
  • Einführung des experimentellen Modifier.onFocusedBoundsChanged zur Beobachtung der Grenzen von untergeordneten fokussierbaren Elementen. (I14283, b/220030968, b/190539358, b/192043120, b/216842427)
  • LazyHorizontalGrid wurde hinzugefügt. (I61ae7, b/191238807)
  • Neue LazyVerticalGrid API zum Definieren von Achsengrößen hinzugefügt (I17723)
  • FocusGroup-Modifikator (I64bc0, b/213508274, b/184670295) hinzugefügt

Fehlerkorrekturen

  • WindowInsets.toString() zeigt jetzt die richtigen Werte an. (I1585d)

Externer Beitrag

  • Aktualisiert für die Verwendung der Kotlinx-Koroutinen 1.6.0 (I3366d)

Version 1.2.0-alpha04

23. Februar 2022

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

API-Änderungen

  • BringIntoViewResponders sind nicht mehr erforderlich, um Anfragen manuell an übergeordnete Beitragende weiterzuleiten, sondern müssen sofort das Rechteck zurückgeben, das vom übergeordneten Element angezeigt werden soll. (I8e66a)
  • Asynchrones Laden von Schriftarten in Texten unterstützen (I77057, b/214587005)
  • LazyVerticalGrid unterstützt jetzt line breaking vor Elementen mit einer Spanne, die nicht in die aktuelle Linie passt. (I05c40, b/207462103)
  • excludeFromSystemGestures wurde in systemGesturesExclusion umbenannt (I19526)
  • LazyVerticalGrid unterstützt jetzt umgekehrtesLayout. (I6d7d7, b/215572963, b/211753558)
  • Fügen Sie die Methode WindowInsets.only() hinzu, damit Entwickler nur Dimensionen aus WindowInsets einbeziehen können. (I14c94, b/217768486)
  • ComposableTarget, ComposableTargetMarker und ComposableOpenTarget wurden hinzugefügt, um Berichte zur Kompilierungszeit darüber zu erstellen, wann eine zusammensetzbare Funktion aufgerufen wird, die auf einen nicht vorgesehenen Anwendungsfall ausgerichtet ist.

    In den meisten Fällen können die Annotationen vom Compiler-Plug-in abgeleitet werden. Die direkte Verwendung dieser Annotationen sollte daher selten sein. Zu den Fällen, die nicht abgeleitet werden können, gehören das Erstellen und Verwenden einer benutzerdefinierten Anwendung, abstrakte zusammensetzbare Funktionen (z. B. Schnittstellenmethoden), Felder oder globale Variablen, die zusammensetzbare Lambdas sind (lokale Variablen und Parameter werden abgeleitet) oder die Verwendung von ComposeNode oder einer verwandten zusammensetzbaren Funktion.

    Bei benutzerdefinierten Anwendungen müssen die zusammensetzbaren Funktionen, die ComposeNode oder ReusableComposeNode aufrufen, eine CompoableTarget-Annotation für die Funktion und alle zusammensetzbaren Lambda-Parametertypen hinzufügen. Es wird jedoch empfohlen, eine Annotation zu erstellen, die mit ComposableTargetMarker annotiert ist, und dann die markierte Annotation direkt anstelle von ComposableTarget zu verwenden. Eine zusammensetzbare Annotation mit der Kennzeichnung ComposableTargetMarker entspricht einer ComposbleTarget, bei der der vollständig qualifizierte Name der Attributklasse als Anwendungsparameter verwendet wird. Ein Beispiel für die Verwendung von ComposableTargetMarker finden Sie unter anroidx.compose.ui.UiComposable. (I38f11)

Fehlerkorrekturen

  • Jetzt ist es zulässig, negative Scroll-Offsets an LazyGridState.scrollToItem() und LazyGridState.animateScrollToItem() zu übergeben. (I025c6, b/211753558)
  • Asynchrones Laden von Schriftarten für TextField wird unterstützt. (Icc4bf, b/214587005)

Version 1.2.0-alpha03

9. Februar 2022

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

API-Änderungen

  • notifyFocusedRect-Methoden in TextInputSession und TextInputService wurden verworfen und werden nicht aufgerufen. Verwende stattdessen BringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874)
  • Animationen wurden für Elemente von Lazy Grids mit Modifier.animateItemPlacement() aktiviert. (Ib6621, b/211753218)
  • BringIntoViewRequester leitet jetzt Anfragen an die Android View-Hosting-Anwendung weiter. (Ia7a51)
  • FontFamilyResolver ist jetzt über LocalFontFamilyResolver.current verfügbar
    • createFontFamilyResolver(context) und createFontFamilyResolver(context, coroutineScope) wurden hinzugefügt, um neue FontFamily-Resolver außerhalb des Editors zu erstellen.
    • Absatz und MultiParagraph nehmen jetzt FontFamily.Resolver
    • TextLayoutResult.layoutInput.fontFamilyResolver enthält jetzt den Resolver, der für dieses Layout verwendet wird. TextLayoutResult.layoutInput.resourceLoader wurde eingestellt, da er nicht mehr verwendet wird. (Id5a45, b/174162090)
  • AndroidFont wurde hinzugefügt, eine neue Low-Level-API zur Bereitstellung neuer Typen von Ressourcendeskriptoren für Schriftarten unter Android. Beispiele: Laden von Schriftarten aus einem App-spezifischen Back-End, optionale Suche nach vorinstallierten Schriftarten auf dem Gerät oder Laden einer Schriftart aus einer Ressource, die von den aktuellen Font Factorys nicht bereitgestellt wird.
    • Die Font.ResourceLoaded API wurde erweitert, um das optionale und asynchrone Laden von Schriftarten zu unterstützen. Anwendungsentwickler sollten diese API nicht direkt verwenden. Unter „AndroidFont“ kannst du neue Schriftarten hinzufügen.
    • Die Erweiterungsfunktion Font.AndroidResourceLoader ermöglicht die Konstruktion einer Font.ResourceLoader außerhalb der Zusammensetzung.
    • Der loadingStrategy-Parameter wurde zu ressourcenbasierten Schriftarten hinzugefügt, um ein asynchrones Laden zu ermöglichen, wenn eine Ressourcenschriftart auf herunterladbare Schriftarten-XML verweist. (Ie5aea, b/174162090)
  • Der Typeface(FontFamily)-Konstruktor wurde verworfen. Dies wurde früher zum Vorabladen von Schriftarten verwendet, was bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern kann. Wenn Schriftarten zum Herunterladen heruntergeladen werden, kann dieser Aufruf für 10 Sekunden blockiert werden. Verwenden Sie stattdessen FontFamilyResolver.preload.
    • fontResource(FontFamily): Typeface wurde verworfen. Dies wurde früher zum Vorabladen von Schriftarten verwendet, was bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern kann. Verwenden Sie stattdessen FontFamilyResolver.preload (If8e7c, b/174162090).
  • Du kannst jetzt den Inhaltstyp für die Elemente von LazyVerticalGrid angeben. Für Artikel-/Artikelfunktionen in LazyGridScope werden jetzt solche Parameter akzeptiert. Die Bereitstellung solcher Informationen hilft dabei, die Logik für die Zusammensetzung von Elementen effizienter zu nutzen und nur die Inhalte zwischen Elementen eines ähnlichen Typs wiederzuverwenden. (I7b355, b/215372836)
  • LazyListLayoutInfo und LazyGridLayoutInfo haben jetzt neue Properties: viewportSize, orientation, reverseLayout (Ifc8ed, b/200920410)
  • Sie können jetzt den Inhaltstyp für Elemente von LazyColumn/LazyRow angeben – Funktionen für Elemente/Elemente in LazyListScope akzeptieren jetzt solche Parameter. Die Bereitstellung solcher Informationen hilft dabei, die Logik für die Zusammensetzung von Elementen effizienter zu nutzen und nur die Inhalte zwischen Elementen eines ähnlichen Typs wiederzuverwenden. (I26506)
  • Der SubcomposeLayoutState-Konstruktor, der maxSlotsToRetainForReuse akzeptiert, wurde verworfen. Stattdessen gibt es einen neuen Konstruktor, der SubcomposeSlotReusePolicy akzeptiert – eine neue Benutzeroberfläche, die eine genauere Kontrolle darüber ermöglicht, welche Slots für die zukünftige Wiederverwendung beibehalten werden sollen. (I52c4d)
  • Fügt Modifikatoren für WindowInsets hinzu, sowohl für das Padding als auch für die Größenanpassung. Dadurch kann ein Teil des Inhalts bis zum eingefügten Bereich erweitert werden, ohne dass der Hauptinhalt außerhalb des eingefügten Bereichs liegt. Mit „windowInsetsPadding“ kann beispielsweise der Inhaltsbereich aufgefüllt werden, um Bereiche zu vermeiden, die vollständig oder teilweise abgedeckt sind. (Id0395, b/213942085)

Fehlerkorrekturen

  • Textfelder bleiben jetzt über der Tastatur, wenn sie hervorgehoben und die Tastatur angezeigt wird und der Modus für die weiche Eingabe auf ADJUST_PAN gesetzt ist. (I8eaeb, b/190539358, b/192043120)
  • Auf dem Computer wird die lokale Zusammensetzung für FontFamily.Resolver verwendet
    • FontLoader wurde für Computer eingestellt
    • Neue createFontFamilyResolver-Factory auf dem Computer (I6bbbb, b/174162090)
  • Der Eingabemethode „Softtastatur“ flackert nicht mehr, wenn der Fokus zwischen Textfeldern geändert wird. (I1bf50, b/187746439)
  • Bei Textfeldern ist kein zusätzliches Drücken der Schaltfläche „Zurück“ mehr erforderlich, wenn der Cursorziehpunkt angezeigt wird. (Ideb4b, b/205726883)
  • Das Lupenverhalten bei der Textauswahl wurde an die Plattformlupe angepasst. (Idd918, b/206833278)

Version 1.2.0-alpha02

26. Januar 2022

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

API-Änderungen

  • NonRestartableComposable wurde den Methoden hinzugefügt, die vorhandene Methoden ohne komplexe Logik überladen. Dadurch werden vom Compiler generierte Speicherprüfungen (ist gleich) für alle Parameter reduziert, die in der aufgerufenen inneren Funktion wiederholt werden. (I90490)
  • excludeFromSystemGesture-Modifikatoren für einfachen Zugriff auf setSystemGestureExclusionRects von Android (I46f07) hinzugefügt

Fehlerkorrekturen

  • Das Lupenverhalten bei der Textauswahl wurde an die Plattformlupe angepasst. (Idd918, b/206833278)
  • LazyColumn, LazyRow, Modifier.verticalScroll und andere Container, 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 wurden veröffentlicht. Version 1.2.0-alpha01 enthält diese Commits.

API-Änderungen

  • Der neue Parameter userScrollEnabled wurde LazyColumn, LazyRow und LazyVerticalGrid hinzugefügt, damit Nutzer das Scrollen über Touch-Gesten oder Aktionen für Bedienungshilfen vorübergehend oder dauerhaft deaktivieren können. Das programmatische Scrollen über die Methoden für den Status ist weiterhin zulässig. (I7eae9, b/201150093)
  • Dem Lupenmodifikator wurde der Callback onSizeChanged hinzugefügt. (I6879f)
  • Das Lupen-Widget wird jetzt angezeigt, wenn du Ziehpunkte in einem SelectionContainer ziehst. (I30b38, b/139320979)

Fehlerkorrekturen

  • Fehlerkorrektur: Der Cursorziehpunkt TextField wird nicht ausgeblendet, wenn aus dem sichtbaren Bereich gescrollt wird. (I14552, b/208883748)

Aktualisierung der Abhängigkeiten

  • Jetzt abhängig von Kotlin-1.6.10.

Version 1.1

Version 1.1.1

23. Februar 2022

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

Fehlerkorrekturen

  • Problem mit NullPointerException unter androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList beheben (aosp/1947059, b/206677462)
  • Ein Absturz wurde behoben, der beim Lesen aus der Zwischenablage unter Android durch Inhalte in der Zwischenablage verursacht wurde. (I06020, b/197769306)
  • RTL-Fehler in LazyVerticalGrid behoben (aosp/1931080, b/207510535)

Version 1.1.0

9. Februar 2022

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

Wichtige Änderungen seit Version 1.0.0

  • Stabile Unterstützung für den Overscroll-Effekt von Android 12
  • Verbesserungen bei der Größe von Berührungszielbereichen
  • In Bezug auf Compose 1.0 wird der Layoutbereich von Material-Komponenten so erweitert, dass sie den Richtlinien für Bedienungshilfen von Material für die Größe des Berührungszielbereichs entsprechen. Das Berührungsziel der Schaltfläche wird beispielsweise auf eine Mindestgröße von 48 x 48 dp erweitert, auch wenn Sie die Größe der Schaltfläche entsprechend verringern. Dadurch wird das Material Design auf das gleiche Verhalten wie die Material Design-Komponenten abgestimmt, was ein einheitliches Verhalten ermöglicht, wenn du „View“ und „Compose“ mischst. Durch diese Änderung wird außerdem sichergestellt, dass beim Erstellen der Benutzeroberfläche mit „Material erstellen“-Komponenten die Mindestanforderungen für die Barrierefreiheit auf Berührungszielbereichen erfüllt sind.
  • Stabile Unterstützung für Navigation Rail
  • Umstellung einer Reihe zuvor experimenteller APIs auf stabile Version
  • Support für neuere Versionen von Kotlin

Version 1.1.0-rc03

26. Januar 2022

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

Fehlerkorrekturen

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

Version 1.1.0-rc01

15. Dezember 2021

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

Fehlerkorrekturen

  • Jetzt ist es zulässig, negative Scroll-Offsets an LazyListState.scrollToItem() und LazyListState.animateScrollToItem() zu übergeben. (Iceb90, b/184252837)
  • Es wurde ein Fehler behoben, der zu fehlenden Scroll-Aktionen für Bedienungshilfen führte (I7cbfb)

Version 1.1.0-beta04

1. Dezember 2021

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

Neue Funktionen

  • Aktualisiert, um mit Kotlin-1.6.0 kompatibel zu sein

API-Änderungen

  • Die Null-Zulässigkeit in androidx.core.view(I7078a, b/204917439) wurde bereinigt.
  • Es wurden experimentelle APIs hinzugefügt, die es ermöglichen, PointerInputchange insgesamt zu verbrauchen oder zu prüfen, ob sie verwendet wurde oder nicht. (I2e59d)
  • Hiermit wird ein Lupen-Widget angezeigt, wenn du den Cursor oder die Auswahlpunkte in Textfeldern ziehst. (I5391e, b/203781358)

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das sich die Text-Ziehpunkte nicht bewegen, wenn sich die Sichtbarkeit des IME ändert. (I25f2e)

Version 1.1.0-beta03

17. November 2021

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

API-Änderungen

  • LazyVerticalGrid unterstützt jetzt horizontale Spans. (I7e2fa, b/176758183)
  • Eine experimentelle Funktion zum Animieren der Position von Elementen in Lazy Listen wurde hinzugefügt. In LazyItemScope ist ein neuer Modifikator namens Modifier.animateItemPlacement() verfügbar. Verwendungsbeispiel:

      var list by remember { mutableStateOf(listOf("A", "B", "C")) }
      LazyColumn {
          item {
              Button(onClick = { list = list.shuffled() }) {
                  Text("Shuffle")
              }
          }
          items(list, key = { it }) {
              Text("Item $it", Modifier.animateItemPlacement())
          }
      }
    
    • Wenn Sie über LazyListScope.item oder LazyListScope.items einen Schlüssel angeben, aktiviert dieser Modifikator Animationen zur Neuanordnung der Elemente. Neben der Neuanordnung von Elementen werden auch alle anderen Positionsänderungen, die durch Ereignisse wie Anordnungen oder Ausrichtungsänderungen hervorgerufen werden, animiert. (I59e7b, b/150812265)

Version 1.1.0-beta02

3. November 2021

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

Fehlerkorrekturen

  • Ripples und andere Hinweise werden jetzt nur noch verzögert, wenn sie sich in einem Modifier.scrollable()-Container befinden. Bei einem Ausfall werden sie jetzt nicht mehr immer verzögert. (Ibefe0, b/203141462)
  • Es wurde eine experimentelle BringIntoView API hinzugefügt, mit der Sie eine Anfrage an Eltern senden können, damit diese scrollen, um ein Element sichtbar zu machen (Ib918d, b/195353459).

Externer Beitrag

  • Modifier.pointerHoverIcon hinzugefügt (I95f01)

Version 1.1.0-beta01

27. Oktober 2021

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

Fehlerkorrekturen

  • Es wurde eine experimentelle BringIntoView API hinzugefügt, mit der Sie eine Anfrage an Eltern senden können, damit diese scrollen, um ein Element sichtbar zu machen (Ib918d, b/195353459).

Version 1.1.0-alpha06

13. Oktober 2021

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

API-Änderungen

  • Eine Überlastung ohne Kinder für das Layout wurde mit verbesserter Effizienz hinzugefügt (Ib0d9a).
  • SemanticsNodeInteraction.performSemanticsAction gibt jetzt den SemanticsNodeInteraction-Wert zurück, auf dem die Funktion aufgerufen wurde. (I9e5db)
  • performScrollToNode(matcher: SemanticsMatcher) wurde hinzugefügt, mit dem ein scrollbarer Container zu dem Inhalt scrollt, der vom jeweiligen Matcher abgeglichen wird. (Ic1cb8)

Version 1.1.0-alpha05

29. September 2021

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

API-Änderungen

Fehlerkorrekturen

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

Version 1.1.0-alpha04

15. September 2021

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

API-Änderungen

  • Verworfene performGesture und GestureScope, die durch performTouchInput und TouchInjectionScope ersetzt wurden. (Ia5f3f, b/190493367)
  • touchBoundsInRoot wurde zu SemanticsNode hinzugefügt. Es enthält die Mindestgröße für Berührungszielbereiche, damit Entwickler dafür sorgen können, dass Berührungszielbereiche die Mindestanforderungen für die Barrierefreiheit erfüllen. (I2e14b, b/197751214)

Fehlerkorrekturen

  • Auf Geräten mit Android 12 wird das Overscroll-Format unterstützt. (Iccf3c, b/171682480)

Version 1.1.0-alpha03

1. September 2021

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

Neue Funktionen

  • Die Funktion „Compose“ (1.1.0-alpha03) wurde so aktualisiert, dass sie von „1.5.30“ in Kotlin abhängig ist. (I74545)

API-Änderungen

  • Ein Glow-Effekt für Scrollen wurde hinzugefügt. Eine neue experimentelle OverScrollConfiguration API wurde hinzugefügt, um die Konfiguration des visuellen Overscroll-Effekts zu ermöglichen. Geben Sie null an, um den Overscroll-Effekt zu deaktivieren. (I0c304, b/171682480)
  • AwaitPointerEventScope enthält jetzt withTimeout() und withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
  • Es wurde eine Testmethode zum Abrufen der abgeschnittenen Grenzen hinzugefügt. (I6b28e)
  • ViewConfiguration wurde eine Mindestgröße für Berührungszielbereiche hinzugefügt, die für die Semantik und die Zeigereingabe verwendet werden kann, um die Zugänglichkeit zu gewährleisten. (Ie861c)

Version 1.1.0-alpha02

18. August 2021

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

API-Änderungen

  • DpSize-Versionen für Modifier.size 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 wurden veröffentlicht. Version 1.1.0-alpha01 enthält diese Commits.

API-Änderungen

  • Aktualisierte Methode DrawScope#drawImage, die Quell- und Zielabfragen zur Verarbeitung eines optionalen FilterQuality-Parameters verwendet. Dies ist nützlich für Pixelkunst, die verpixelt werden soll, wenn sie für pixelbasierte Grafiken verkleinert wird. BitmapPainter und zusammensetzbare Funktion für Bilder wurden aktualisiert, um auch einen optionalen FilterQuality-Parameter zu nutzen (Ie4fb0, b/180311607).
  • TextField löscht jetzt die Auswahl, wenn die Schaltfläche „Zurück“ gedrückt wird, was dem Verhalten von Android EditText entspricht. (I3ca16, b/174173645)
  • Cursor-Ziehpunkt hinzufügen. (I07a82, b/173016579)

Fehlerkorrekturen

  • Das Scrollen über Semantikaktionen für Lazy Listen und Komponenten für reguläres Scrollen ist jetzt animiert (Id9066, b/190742024).

Externer Beitrag

  • LazyVerticalGrid akzeptiert jetzt Parameter für die horizontale und vertikale Anordnung. (If9c92)

Version 1.0

Version 1.0.5

3. November 2021

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

Fehlerkorrekturen

  • Ein Absturz-Tracking von RelatedStateOf-Instanzen wurde behoben. (aosp/1792247)

Version 1.0.4

13. Oktober 2021

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

Aktualisierung der Abhängigkeiten

  • Aktualisiert und abhängig von Kotlin 1.5.31

Version 1.0.3

29. September 2021

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

Aktualisierung der Abhängigkeiten

  • Aktualisiert und abhängig von Kotlin 1.5.30

Version 1.0.2

1. September 2021

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

Aktualisiert, um die Compose-Version 1.0.2 zu unterstützen. „Compose 1.0.2“ ist weiterhin mit Kotlin 1.5.21 kompatibel.

Version 1.0.1

4. August 2021

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

Aktualisierung der Abhängigkeiten

  • Aktualisiert und abhängig von Kotlin-1.5.21.

Version 1.0.0

28. Juli 2021

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

Hauptfunktionen von Version 1.0.0

Dies ist die erste stabile Version von Compose. Weitere Informationen finden Sie im offiziellen Compose-Blog.

Bekannte Probleme

  • Wenn du Android Studio Bumblebee Canary 4 oder AGP 7.1.0-alpha04/7.1.0-alpha05 verwendest, kann es zu folgendem Absturz kommen:

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    Erhöhen Sie in der Datei build.gradle vorübergehend Ihre minSdkVersion auf 24 oder höher, um das Problem zu beheben. Dieses Problem wird in der nächsten Version von Android Studio Bumblebee und 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.

  • Das Rahmen-Rendering für allgemeine Formen wurde aktualisiert, um Probleme mit Pfaden zu beheben, die mit festen Abmessungen definiert sind. (aosp/1748871, b/191817116)

Version 1.0.0-rc01

1. Juli 2021

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

API-Änderungen

  • Canvas unterstützt jetzt einen contentDescription-Parameter für Barrierefreiheit. (Ib547c)

Fehlerkorrekturen

  • Bei deaktivierten Schaltflächen, Karten, Kästchen und Modifier.clickable(enabled=false) wird verhindert, dass Klicks an die übergeordnete Organisation weitergeleitet werden. (IC2c3b, b/183908811)

Version 1.0.0-beta09

16. Juni 2021

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

API-Änderungen

  • ManualFrameClock wurde entfernt. Wenn Sie Animationen steuern müssen, verwenden Sie stattdessen composeTestRule.mainClock. (I3c3e8, b/189951065)
  • Enum "Role" und "LiveRegionMode" in Inline-Klassen mit privatem Konstruktor (Id1890) ändern
  • KeyboardCapitalization wird in eine Inline-Klasse konvertiert. (Id5a1c)
  • TextOverflow wurde in eine Inline-Klasse geändert. (I433af)

Fehlerkorrekturen

  • Wenn Sie jetzt eindeutige Schlüssel für LazyColumn/Row-Elemente angeben, wird die Scrollposition basierend auf dem Schlüssel beibehalten. Wenn Sie also Elemente vor dem aktuell sichtbaren Element hinzufügen oder entfernen, wird das Element mit dem jeweiligen Schlüssel als erstes sichtbares Element beibehalten. (Id263f, b/184257857)
  • Die Schlüsselkonstanten sind vorerst @ExperimentalComposeUiApi. Bei der Codeaufnahme können private Konstanten vor der Stabilisierung deklariert werden. (Ia5d48)
  • IdlingStrategy wurde zu AndroidComposeTestRule hinzugefügt. Diese kann zum Testen von Frameworks verwendet werden, um einen alternativen Mechanismus zu installieren, um auf eine Ruhezeit zu warten oder eine Ruheherzigkeit zu erreichen. Verwenden Sie AndroidComposeTestRule.setIdlingStrategyFactory(), bevor der Test beginnt, um Ihre eigene Strategie zu installieren. (I608fa)

Regeln für Profil hinzugefügt

In diesem Release werden den folgenden Erstellungsmodulen (I14ed6) Profilregeln hinzugefügt:

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.foundation
  • androidx.compose.foundation-layout
  • androidx.compose.material
  • androidx.compose.material-ripple
  • androidx.compose.runtime
  • androidx.compose.ui
  • androidx.compose.ui.geometrie
  • androidx.compose.ui.graphics
  • androidx.compose.ui.text
  • androidx.compose.ui.text
  • androidx.compose.ui.unit.
  • androidx.compose.ui.util-

Was sind Profilregeln?

  • Profilregeln für eine Bibliothek werden in der Textdatei baseline-prof.txt im src/main oder einem entsprechenden Verzeichnis angegeben. In der Datei ist eine Regel pro Zeile angegeben, wobei eine Regel in diesem Fall ein Muster für den Abgleich mit Methoden oder Klassen in der Bibliothek ist. Die Syntax für diese Regeln ist eine Obermenge des visuell lesbaren ART-Profilformats, das bei Verwendung 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>
    
  • Und eine Klassenregel hat das folgende Muster:

    <CLASS_DESCRIPTOR>
    
  • Hier steht <FLAGS> für mindestens eines 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 sowie die Parametertypen und Rückgabetypen der Methode. Die Methode fun isPlaced(): Boolean für LayoutNode hat beispielsweise die Signatur isPlaced()Z.

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

Wozu dienen die Regeln?

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

  • Eine Methode mit dem Flag S gibt an, dass es sich um eine Methode handelt, die beim Start aufgerufen und im Voraus kompiliert werden sollte, um die Kosten für die Kompilierung und die Interpretation der Methode beim Start zu vermeiden.

  • Eine Methode mit dem Flag P gibt an, dass es sich um eine Methode handelt, die nach dem Start aufgerufen wird.

  • Eine in dieser Datei vorhandene Klasse gibt an, dass sie beim Start verwendet wird und im Heap zugewiesen werden sollte, um Kosten für das Laden der Klasse zu vermeiden.

So funktioniert's

  • Bibliotheken können diese Regeln definieren, die in AAR-Artefakte gepackt werden. Wenn dann eine App erstellt wird, die diese Artefakte enthält, werden diese Regeln zusammengeführt und die zusammengeführten Regeln werden verwendet, um ein kompaktes binäres ART-Profil zu erstellen, das für die App spezifisch ist. ART kann dieses Profil dann bei der Installation der App auf Geräten nutzen, um im Voraus eine bestimmte Teilmenge der Anwendung zu kompilieren, um die Leistung der Anwendung zu verbessern, insbesondere bei der ersten Ausführung. Dies hat keine Auswirkungen auf Debug-fähige Anwendungen.

Version 1.0.0-beta08

2. Juni 2021

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

API-Änderungen

  • „NestedScrollSource“-Enum wird durch eine Inline-Klasse ersetzt. (Ie321b, b/187055290)
  • Die Verwendung von enum-Werten in Inline-Klassen wurde umgestaltet, um Probleme mit vollständigen Anweisungen zu vermeiden, wenn neue Enum-Werte hinzugefügt werden. (I2b5eb)
  • Fügt ein Timeout für Tipp-/Ein-/Aus-Schaltflächen hinzu, um zu verhindern, dass beim Scrollen/Ziehen eine Welle angezeigt wird (Ia2704, b/168524931).
  • „ContentDescription“ und „Text Semantik“ sind keine einzelnen Werte, sondern Listen. Dies ermöglicht es, sie unverändert zusammenzuführen, anstatt Verkettungen zu verwenden. Außerdem wurden bessere Test-APIs zur Nutzung dieser Änderungen bereitgestellt (Ica6bf, b/184825850).
  • Modifier.focusModifier() wurde verworfen und durch Modifier.focusTarget() (I6c860) ersetzt
  • Die KeyboardType-Enum wird durch eine Inline-Klasse ersetzt. (I73045, b/187055290)
  • FocusState-Enum durch FocusState-Schnittstelle ersetzt (Iccc1a, b/187055290)
  • ImeAction-Enum wird durch eine Inline-Klasse ersetzt. (I18be5, b/187055290)
  • AnnotatedString.withAnnotation-Funktionen heißen jetzt ExperimentalTextApi anstelle von ExperimentalComposeApi. (I0cd0a)
    • Der TextUnit-Konstruktor mit TextUnitType ist jetzt ExperimentalTextApi anstelle von ExperimentalComposeApi.
  • PaddingValues ist jetzt @Stable statt @Immutable (I88c50).

Fehlerkorrekturen

  • Abstürze durch langes Drücken auf den leeren Bereich in nicht leeren Texten wurden behoben. (I33ab5, b/187437299)
  • Symbolleiste nach „SelectAll“ anzeigen (I495d9, b/185919613)
  • Es wurde ein Fehler behoben, durch den scrollbare Container ihre untergeordneten Elemente an der Querachse beschneiden. Mit einer LazyRow mit Kartenelementen war es leicht zu reproduzieren. Jetzt wird der Schatten nicht abgeschnitten. (Icb635, b/186318448)
  • Bei Verwendung von „Modifier.combinedClickable“ (I2298c, b/186223077) blieben die Wellen und andere Hinweise bei einem langen Klick manchmal hängen. Dieses Problem wurde behoben.
  • Die Positionsänderung wird jetzt von detectDragGesures, detectVerticalGestures und detectHorizontalGestures automatisch übernommen, sodass man change.consumePositionChange in den onDrag-Callbacks nicht aufrufen muss (I42fc4, b/185096350, b/187320697).
  • Modifier.onGloballyPositioned() wurde geändert, um die Koordinaten dieses Modifikators in der Modifikatorkette anzugeben, und nicht die Layoutkoordinaten, nachdem alle Modifikatoren angewendet wurden. Das bedeutet, dass sich jetzt die Reihenfolge der Modifikatoren darauf auswirkt, welche Koordinaten im Bericht angezeigt werden. (Ieb67d, b/177926591)

Version 1.0.0-beta07

18. Mai 2021

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

API-Änderungen

  • Die Logik für den Vorabruf des nächsten sichtbaren Elements wird für LazyColumn/Row eingeführt (I8a4bc, b/184940225).
  • Ziehpunkt für Clip-Auswahl hinzugefügt (Iff80d, b/183408447)

Fehlerkorrekturen

  • In LazyColumn/Row bleiben jetzt bis zu zwei zuvor sichtbare Elemente aktiv (nicht entsorgt), auch wenn sie bereits herausgescrollt werden. Dadurch kann die Komponente die aktiven Unterzusammensetzungen wiederverwenden, wenn ein neues Element erstellt werden muss, was das Scrollen verbessert. (IE5555)
  • PaintBackground entfernen. (I38660)
  • Auswahlhintergrund mit DrawScope zeichnen. (I73c61, b/186674472)
  • Eine Beta06-Regression, die sich auf die Zeile/Spalte unter Verwendung von LeerzeichendBy-Anordnungen auf nach Layout gewichtete untergeordnete Elemente auswirkte, wurde behoben. (Ifaf8c, b/187326588)

Version 1.0.0-beta06

5. Mai 2021

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

API-Änderungen

  • Konflikt mit Navigationsbewegung lösen (I1145e)
  • Die Bedienungshilfen „CollectionInfo“ und „CollectionItemInfo“ wurden hinzugefügt, mit denen eine Sammlung und ihre Elemente für Bedienungshilfen markiert werden können (Id54ef, b/180479017).
  • SemanticsActions.ScrollToIndex wurde hinzugefügt, um eine Liste mit indexierten Elementen zu dem Element mit einem bestimmten Index zu scrollen, 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)
  • AnnotatedString speichert die Speicherung in TextFieldValue.Saver. Zusätzliche Dienstfunktionen für addTtsAnnotation und mitAnnotationen zu AnnotatedString.Builder (I8cbdc, b/178446304)
  • PaddingValues(horizontal, vertical) (I05571, b/181336792) wurden Standardwerte für 0.dp hinzugefügt.

Fehlerkorrekturen

  • Bei untergeordneten Zeilen und Spalten mit weight(fill = false) füllen das übergeordnete Element nicht mehr den gesamten verfügbaren Bereich der Hauptachse aus. (Ied94d, b/186012444, b/184355105)

Version 1.0.0-beta05

21. April 2021

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

API-Änderungen

  • Die Oberfläche von FlingBehavior ist jetzt als @Stable gekennzeichnet. Alle Implementierungen müssen der @Stable-Vereinbarung entsprechen. (I93354, b/184830577)

Fehlerkorrekturen

  • Die Scrollaktionen für Bedienungshilfen in ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRight und accessibilityActionScrollDown wurden korrigiert. Anstatt bis zum Ende des scrollbaren Bereichs zu scrollen, wird jetzt um einen Bildschirm in die angegebene Richtung gescrollt. (Ieccb0)
  • Die AndroidManifest-Dateien aus „ui-test-manifest“ und „ui-tooling-data“ sind jetzt mit Android 12 kompatibel (I6f9de, b/184718994).

Version 1.0.0-beta04

7. April 2021

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

API-Änderungen

  • Benennen Sie hideSoftwareKeyboard und showSoftwareKeyboard für SoftwareKeyboardController in hide() bzw. show() um.
    • Vollständige CompositionLocal-Schnittstelle für LocalSoftwareKeyboardController bereitstellen, sodass diese festgelegt werden kann (besonders in Tests nützlich) (I579a6)
  • TextOverflow.Visible wurde eingeführt. (Ic8f89)
  • Öffentliche Instanzen von RowScope, ColumnScope, BoxScope und BoxWithConstraintsScope wurden entfernt. (I4e83e, b/181869067)

Fehlerkorrekturen

  • Das Problem, dass Elemente von LazyColumn/LazyRow, die sich an den Kanten befanden, nach schnellem Wischen falsch positioniert wurden (Ie4d13, b/183877420) wurde behoben.
  • Vor dieser Änderung waren lokale zusammensetzbare Funktionen aufgrund ihrer Parameter überspringbar. Nach dieser Änderung werden keine lokalen zusammensetzbaren Funktionen mehr übersprungen. Diese Änderung erfolgt, da lokale Funktionen häufig Parameter aus dem übergeordneten Element erfassen und dass das Überspringen eine häufige Ursache für Fehler ist.

    Betrachten Sie das folgende Beispiel zusammenzufassen:

    @Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) {
      @Composable fun ShowCount() { Text("Count: $count") }
      ShowCount()
      Button(onClick={ onCountChange(count + 1) }) {
        Text("Increment")
      }
    }
    

    Vor dieser Änderung wurde die Funktion ShowCount immer übersprungen, auch nachdem der 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 wurden veröffentlicht. Version 1.0.0-beta03 enthält diese Commits.

API-Änderungen

  • DefaultMonotonicFrameClock wurde verworfen. Wenn withFrameNanos oder Recomposer.runRecomposeAndApplyChanges ohne MonotonicFrameClock aufgerufen wird, wird jetzt IllegalStateException ausgegeben. (I4eb0d)

Fehlerkorrekturen

  • FlingBehavior.performFling() wird jetzt auch dann aufgerufen, wenn die Geschwindigkeit 0 ist (I0b6e5, b/181237123).

Version 1.0.0-beta02

10. März 2021

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

API-Änderungen

  • In der LazyColumn-Messlogik wurden mehrere kleine Optimierungen hinzugefügt (Ic6889).
  • Neue lokale API zur LocalSoftwareKeyboardController-Kompositionierung hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I5951e, b/168778053)
  • Neue lokale API zur LocalSoftwareKeyboardController-Kompositionierung hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I84472, b/168778053)

Fehlerkorrekturen

  • Einschränkungen für die öffentliche Nutzung experimenteller APIs erzwingen (I6aa29, b/174531520)

Version 1.0.0-beta01

24. Februar 2021

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

Dies ist die erste Version der Betaversion von Compose 1.0.0.

API-Änderungen

  • Der onStart-Callback wurde detectDragGestures hinzugefügt (I67269, b/179995594).
  • Modifikatoren zur Größenanpassung für intrinsische Elemente sind nicht mehr experimentell. (I15744)
  • dp-Assertions entfernt (I798d2)
  • Der SoftwareKeyboardController-Callback wurde aus allen Textfeldern entfernt, der demnächst durch eine neue API ersetzt wird. (Iae869, b/168778053)
  • MeasureBlocks wurde in MeasurePolicy umbenannt, eine unterhaltsame Oberfläche. Die Layout-APIs wurden für die Verwendung von MeasurePolicy aktualisiert oder vereinfacht. (Icab48, b/167662468, b/156751158)
  • InteractionState wurde durch [Mutable]InteractionSource ersetzt.
    • Schnittstellen sind für das Ausgeben und Erfassen von Interaktionsereignissen verantwortlich.
    • Anstatt interactionState = remember { InteractionState() } an Komponenten wie Button und Modifier.clickable() zu übergeben, verwenden Sie interactionSource = remember { MutableInteractionSource() }.
    • Anstelle von Interaction.Pressed in interactionState sollten Sie stattdessen die Erweiterungsfunktionen für InteractionSource verwenden, z. B. InteractionSource.collectIsPressedAsState().
    • Für komplexe Anwendungsfälle können Sie InteractionSource.interactions verwenden, um den Interaktionsstrom zu beobachten. Weitere Informationen finden Sie in der InteractionSource-Dokumentation und den Beispielen.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • Die eingestellten LayoutCoordinates-Methoden wurden entfernt. Verwenden Sie anstelle der Eigenschaft für positionInParent und boundsInParent (I580ed, b/169874631, b/175142755) die Funktion
  • Neue TextInputSession für Eingabesitzungen aus Low-Level-Textkomponenten wie CoreTextField erstellt. (I8817f, b/177662148)
  • „Placeable“ zeigt jetzt „measureSize“ an. Sie stellt die Größe dar, mit der das untergeordnete Layout tatsächlich gemessen wurde. Bei dieser Größe werden die Messbeschränkungen möglicherweise nicht berücksichtigt. (Ib2729, b/172560206, b/172338608)
  • „selectGroup“-Modifikator hinzufügen, mit dem eine Sammlung von Tabs oder Optionsfeldern aus Gründen der Barrierefreiheit markiert werden kann (Ie5c29)
  • LazyListState.animateScrollToItem hinzufügen

    Mit dieser Methode wird geglättet zu einem bestimmten Element in der Liste. (I4bfd7)

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

  • „Modifier.zoomable“ wurde durch „Modifier.transformable“, „smooPanBy“ und „smooRotationBy“ als Funktion ersetzt. (Ifc32b, b/175294473)

  • Der defaultFactory für compositionLocalOf und staticCompositionLocalOf ist jetzt erforderlich statt optional.

    Diese Änderung beseitigt einen potenziellen Typfehler für Typen, die keine Nullwerte zulassen können und für die keine Standard-Factory angegeben wurde. Bisher wurde dadurch eine Nullreferenz für einen Typ bereitgestellt, der keine Nullwerte zulässt.

    Für Typen, für die Nullwerte zulässig sind, sollten Sie { null } als Standardwerkstatt angeben.

    Wir raten davon ab, Local Guides mit Typen zu verwenden, die keine Nullwerte zulassen, es sei denn, es kann ein vernünftiger Standardwert angegeben werden. Wenn kein sinnvoller Standardwert vorhanden ist, sollte die Lambda-Funktion defaultFactory eine Ausnahme auslösen. Das Auslösen einer Ausnahme bedeutet jedoch, dass für lokale Nutzer eine implizite Abhängigkeit besteht, die vom Typsystem nicht erzwungen wird. (Ifbd2a)

  • Indication#createIndication()“ wurde in „Indication#rememberUpdatedIndication(InteractionState)“ geändert und der Parameter InteractionState wird aus „IndicationInstance#drawIndication()“ entfernt. IndicationInstance sollte nur für das Zeichnen visueller Effekte zuständig sein und keine Animationen starten bzw. einen Status als Reaktion auf InteractionState-Änderungen schreiben. Diese Animationen und Zustandsschreibvorgänge sollten stattdessen innerhalb von rememberUpdatedIndication() ausgeführt werden. Der indication-Parameter 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 "Ints" dargestellt (I81298).

  • Die Pakete der Methoden „smooScrollBy“ und „scrollBy“ wurden in androidx.compose.foundation.gestures.* geändert (I3f7c1, b/175294473).

  • FlingConfig wurde in FlingBehavior umbenannt. Sie ermöglicht jetzt die Anpassung von Stoppanimationen anstelle von vordefinierten Decays. (I02b86, b/175294473)

  • Größenmodifikatoren wurden umbenannt. „modifier.width/height/size“ wurde in requiredWidth/requiredHeight/requiredSize umbenannt. „Modifier.preferredWidth/preferredHeight/preferredSize“ wurde in „Breite/Höhe/Größe“ umbenannt. (I5b414)

  • „defaultMinSizeConstraints“ wurde in „defaultMinSize“ umbenannt. (I4aae)

  • Modifier.tapGestenFilter wurde entfernt. Verwende stattdessen Modifier.pointerInput { detectTapGestures(...) }. (I266ed, b/175294473)

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

  • „Ausrichtung“ wurde in das Foundation-Paket verschoben. VelocirtTracker wurde von ui.gesture zu ui.input.pointer verschoben. (Iff4a8, b/175294473)

  • AnimationClockObservable und Unterklassen wurden entfernt. AnimierteFloat-Anzeige wurde entfernt. (Icde52, b/177457083)

  • DrawerState.open() unddrawerState.close() sperren jetzt Funktionen. Mit „memoryCoroutineScope()“ können Sie den Umfang der Zusammensetzung abrufen, um sie aufzurufen (I16f60, b/175294473).

  • „Providers“ wurde in CompositionLocalProvider umbenannt

    • Der Kompositionskonstruktor akzeptiert keinen Schlüsselparameter mehr und wurde eingestellt.
    • currentCompositeKeyHash wurde in eine zusammensetzbare Top-Level-Eigenschaft anstelle einer zusammensetzbaren Top-Level-Funktion umgewandelt.
    • CompositionData und CompositionGroup wurden in den Namespace „androidx.compose.runtime.tooling“ verschoben
    • ComposableLambda wurde zu einer Schnittstelle anstelle einer konkreten Klasse gemacht und verfügt nicht mehr über Typparameter.
    • ComposableLambdaN ist jetzt eine Schnittstelle anstelle einer konkreten Klasse und hat keine Typparameter mehr.
    • Die Funktion „SnapshotFlow“ wurde in den Namespace „androidx.compose.runtime“ verschoben
    • Die Zusammenführungsmethode von SnapshotMutationPolicy ist nicht mehr experimentell
    • Die „clearRoots“-Funktion der obersten Ebene von @TestOnly wurde entfernt. Es ist nicht mehr notwendig.
    • Die Funktionen „keySourceInfoOf“ und „resetSourceInfo“ wurden entfernt. Sie werden nicht mehr benötigt.
    • Composer.collectKeySourceInformation wurde entfernt. Es ist nicht mehr notwendig.
    • Die Methoden „isJoinedKey“, „joinKeyLeft“ und „joinKeyRight“ wurden entfernt. Sie werden nicht mehr benötigt.
    • Verschiedene APIs der obersten Ebene wurden verschoben und in verschiedene Dateien neu organisiert. Aufgrund der Semantik der Dateiklassen von Kotlin wird die Kompatibilität der Binärdateien, aber nicht der Quelldateien beeinträchtigt. Daher sollte es für die meisten Nutzer kein Problem sein.
    • (I99b7d, b/177245490)
  • Modifier.scrollable wurde überarbeitet. Jetzt wird die Scrollable-Schnittstelle anstelle der ScrollableController-Klasse verwendet (I4f5a5, b/174485541, b/175294473).

  • Modifier.draggable akzeptiert jetzt DraggableState anstelle einer einfachen Lambda-Funktion. Du kannst einen Zustand über rememberDraggableState { delta -> } erstellen, um das gleiche Verhalten wie zuvor zu erhalten (Ica70f, b/175294473).

  • Die Modifikatoren requiredWidth(IntrinsicSize) und requiredHeight(IntrinsicSize) wurden für die erforderliche Größenanpassung zu intrinsischen Größen hinzugefügt. (I0a6b4)

  • Die verworfene emptyContent() wurde entfernt. Verwende stattdessen {}. (Idb33f, b/179432510)

  • Einige zuvor eingestellte APIs wurden gelöscht (Ice5da, b/178633932).

Fehlerkorrekturen

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

Version 1.0.0-alpha12

10. Februar 2021

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

API-Änderungen

  • Modifier.pointerInput erfordert jetzt das Speichern von Schlüsseln, um anzugeben, wann die Koroutine zur Erkennung der Zeigereingabe für neue Abhängigkeiten neu gestartet werden soll. (I849cd)
  • Test-Update: hasText() sucht im Textfeld sowohl nach Eingabe- als auch Label-/Hinweisen/Platzhaltern (Iab803)
  • „PaddingValues.Absolute“ wurde hinzugefügt und kann in APIs verwendet werden, die PaddingValues akzeptieren. (Ia5f30)
  • „onImeActionPerformed“ wurde eingestellt. Verwenden Sie stattdessen KeyboardActions (If0bbd, b/179071523).
  • Damit die Namenskonventionen besser mit ImageBitmap und ImageVector übereinstimmen, wurde ImagePainter in BitmapPainter in paralleles VectorPainter umbenannt. (Iba381, b/174565889)
  • Bessere Teilstring-Test-APIs mit Teilstring jetzt als Argument (Icbe78)
  • Ein InfiniteAnimationPolicy-Kontextelement für die Koroutine wurde eingeführt, das in unendlichen Animationen angewendet wird. Standardmäßig ist keine Richtlinie installiert, außer wenn Tests mit ComposeTestRule ausgeführt werden. (I50ec4, b/151940543)
  • Animatable.snapTo und Animatable.stop sind jetzt Stoppfunktionen (If4288)
  • "ComponentActivity.setContent" wurde nach "androidx.activity.compose.setContent" im Modul "androidx.activity:activity-compose" verschoben. (Icf416)
  • Die Methoden zum Löschen und copy() wurden aus mehreren Klassen entfernt, in denen sie selten verwendet wurden. (I26702, b/178659281)
  • Unterstützung für benutzerdefinierte Schlüssel für LazyColumn/LazyRow wurde hinzugefügt. Auf diese Weise können wir die Reihenfolge der Artikel intelligenter handhaben. Das heißt, der Zustand, den Sie in den Blöcken {} gespeichert haben, wird zusammen mit dem Element verschoben, wenn Sie Elemente neu anordnen oder das Element aus der Mitte entfernen.

    LazyColumn {
        items(users, key = { user -> user.id }) { ... }
    }
    
  • Die Änderung von Indication#createInstance wurde zu @Composable geändert und LocalIndication so geändert, dass sie ein Indication-Element enthält, nicht () -> Indication. (I5eeea, b/157150564)

  • Constraints.enforce“ wurde durch „Constraints.constrain“ ersetzt. (I8b8ea)

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

  • Aus Leistungsgründen verwendet die ScrollAxisRange-Semantik jetzt Lambdas, die Gleitkommazahlen zurückgeben, anstelle von direkten Gleitkommawerten. (If4a35, b/178657186)

  • Es wurde eine EditableText-Semantik hinzugefügt, um bearbeitbaren Eingabetext des Textfeldes zur Barrierefreiheit zu markieren, und entsprechende Testmethoden zur Prüfung der Semantik (I8e07a).

  • Modifier.clickable bietet jetzt keine Unterstützung für doppelte und lange Klicks. Verwenden Sie Modifier.combinedClickable, um diese Funktionalität zu erreichen. (Iafad1)

  • toIntPx() wurde inroundToPx() umbenannt. (I9b7e4, b/173502290)

  • IntBounds wurde in IntRect umbenannt und die API wurde verbessert. (I1f6ff)

  • „Modifier.dragGestenFilter“ wurde eingestellt. Verwende stattdessen Modifier.pointerInput { detectDragGestures (...)}. Alternativ können Sie „Modifier.draggable“ für das Ziehen um eine Achse verwenden (I0ba93, b/175294473).

  • Ambients wurden umbenannt, damit sie der Umbenennung von Ambient -> CompositionLocal entsprechen. Ambients hießen früher AmbientFoo, CompositionLocals heißt jetzt LocalFoo. (I2d55d)

  • Auswahl wurde auf Fundament verschoben. (I7892b)

  • Ähnlich wie zuvor entfernte die zusammensetzbare Funktion state { 0 } und jetzt die Verwendung wie remember { mutableStateOf(0) }, entfernen wir die zusammensetzbare Funktion savedInstanceState { 0 }. Sie sollten stattdessen rememberSaveable { mutableStateOf(0) } verwenden. Die Speicherung und Wiederherstellung erfolgen automatisch, wenn der im MutableState verwendete Typ im Bundle gespeichert werden kann. Wenn Sie jetzt ein benutzerdefiniertes Saver-Objekt übergeben haben, müssen Sie eine neue Überladung von „memorySaveable“ mit dem Parameter stateSaver verwenden. Die Nutzung sieht so aus: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)

  • Passwortsemantik für Bedienungshilfen hinzugefügt (I231ce)

  • "ProgressBarRangeInfo.Indeterminate" wurde hinzugefügt, um indeterminate Fortschrittsbalken für Bedienungshilfen zu kennzeichnen (I6fe05).

  • Die Wiedergabedauer in der Animation ist jetzt auf Nanosekunden eingestellt (If776a)

  • @ComposableContract wurde zugunsten von drei weiteren Annotationen eingestellt.

    @ComposableContract(restartable = false) wurde zu @NonRestartableComposable @ComposableContract(readonly = true) wurde zu @ReadOnlyComposable @ComposableContract(preventCapture = true) wurde zu @DisallowComposableCalls @ComposableContract(tracked = true) wurde entfernt. (I60a9d)

  • Die Dienstprogramme emptyContent() und (@Composable () -> Unit).orEmpty() wurden eingestellt, da sie sich nicht mehr positiv auf die Leistung auswirken (I0484d)

  • Recomposeren können jetzt geschlossen werden. Geschlossene Recomposeren setzen die Neuzusammensetzung fort, bis die untergeordneten Koroutinen der Komposition abgeschlossen sind. Recomposer.shutDown wurde umbenannt, um den Vorgang abzubrechen und einen Kontrast mit dem Schließen zu bilden. (Ib6d76)

  • Mit LazyVerticalGrid verbundene APIs sind als experimentell gekennzeichnet (Ia53e3, b/178519862).

  • memorySavedInstanceState() wurde in „memorySaveable()“ umbenannt und in das Paket „androidx.compose.runtime.saveable“ verschoben. (I1366e, b/177338004)

  • RestorableStateHolder wurde in SaveableStateHolder umbenannt und in das Paket „androidx.compose.runtime.saveable“ verschoben. Die innere Methode RestorableStateProvider wurde in SaveableStateProvider umbenannt. Der generische Typ wurde entfernt, sodass Sie „Any“ als Schlüssel übergeben können. Eine experimentelle Anmerkung ist nicht mehr erforderlich. (I0902e, b/174598702)

  • Saver, listSaver(), mapSaver(), autoSaver wurde von androidx.compose.runtime.savedinstancestate nach androidx.compose.runtime.saveable (I77fe6) verschoben

  • Das Artefakt „androidx:compose:runtime:runtime-saved-instance-state“ wurde in „androidx:compose:runtime:runtime-saveable“ (I6dcac) umbenannt

  • Viele veraltete APIs im ui-Paket werden gelöscht. (I2f2dc)

  • Das Artefakt „Compose:runtime-Dispatch“ wurde verworfen. MonotonicFrameClock befindet sich jetzt in Composer:runtime und AndroidUiDispatcher ist in Composer:ui. (Ib5c36)

  • Die Parameter für RounderCornerShape, CutCornerShape und CornerBasedShape wurden von links/rechts in Start/End umbenannt, um die automatische Spiegelung der Form in rtl-Richtung zu unterstützen. AbsoluteRounderCornerShape und AbsoluteCutCornerShape wurden für Fälle eingeführt, in denen die automatische Spiegelung nicht erwünscht ist. (I61040, b/152756983)

  • canDrag wurde aus Modifier.scrollable entfernt. (Id66e7, b/175294473)

  • Die API, auf die das Compiler-Plug-in ausgerichtet ist, wurde so umgestaltet, dass anstelle einer konkreten Klasse eine Schnittstelle verwendet wird. Auf der Benutzeroberfläche wird auch kein Typparameter mehr verwendet.

    Dies ist eine interne Änderung, die sich nicht auf die Kompatibilität des Quellcodes auswirken sollte, aber eine funktionsgefährdende Änderung darstellt. (I3b922, b/169406779)

  • Modifier.scaleTouchFilter wurde entfernt. Verwenden Sie stattdessen Modifier.zoomable. Alternativ können Sie Modifier.pointerInput { detectMultitouchGestures { ... }} (Id5da1, b/175294473) verwenden.

  • Die Funktion „ananibleValue/Float“ wird jetzt nicht mehr unterstützt. Verwenden Sie stattdessen „Animatable“. (I71345, b/177457083)

    • CoreText und CoreTextField wurden aus der öffentlichen API entfernt
    • Veraltete Auswahlcontainer-Überlastung (I99c19) entfernt
  • Verworfene Scrollfunktionen ohne Sperrung entfernen Nach den Änderungen vom letzten Release wurden die Scrollfunktionen ohne Sperrung jetzt vollständig entfernt. Konvertieren Sie sie in die Sperrfunktionen mit denselben Namen. Ein Koroutinebereich kann über rememberCoroutineScope() abgerufen werden. (I3d39c, b/178169563)

  • androidx.compose.foundation.layout.ConstraintLayout wurde zugunsten von androidx.constraintlayout.compose.ConstraintLayout verworfen. Sie müssen eine Abhängigkeit von androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01 hinzufügen. (I87adc)

  • „touchGestenFilter“, „doubleTapUnlockGesteFilter“, „longPress potenziellenFilter“ und „PressIndicaitonTouchFilter“ werden nicht mehr unterstützt. Verwenden Sie stattdessen Modifier.clickable oder Modifier.pointerInput mit der Funktion detectTapGestens. (I6baf9, b/175294473)

  • Recomposer.current() wurde entfernt. [Zusammenfassung]ComposeView verwendet jetzt standardmäßig verzögert erstellte, fensterbezogene Recomposers, die vom ViewTreeLifecycleOwner für das Fenster gesteuert werden. Neuzusammensetzung und mit FrameNanos basierende Animationsticks werden pausiert, während der Hostlebenszyklus gestoppt wird. (I38e11)

  • Recomposer.runningRecomposers bietet jetzt einen globalen StateFlow aus schreibgeschütztem RecomposerInfo zur Beobachtung des aktuellen Kompositionsstatus im Prozess. Ziehen Sie diese API der mittlerweile verworfenen API Recomposer.current() vor. (If8ebe)

Version 1.0.0-alpha11

28. Januar 2021

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

API-Änderungen

  • ScrollBy ohne Sperrung einstellen, ScrollTo entfernen

    Wir empfehlen jetzt, Sperren zu verwenden, um das Scrollen zu steuern und auf das Ende des Scrollens zu warten. Im Rahmen dieser Umstellung werden die nicht gesperrten Versionen dieser Funktionen eingestellt und/oder entfernt. (Ie9ced)

  • Nicht-Sperrung von „smooScrollBy“ einstellen Wir empfehlen jetzt, das Scrollen mithilfe von Sperrfunktionen zu steuern und auf den Abschluss des Scrollens zu warten. Die Versionen dieser Funktionen ohne Sperrung werden im Rahmen dieser Umstellung eingestellt. (I12880)

  • Der Parameter für die Inhaltsbeschreibung wurde dem Bild und dem Symbol hinzugefügt. Sie wird verwendet, um die Bedienungshilfen zu beschreiben (I2ac4c).

  • BasicTextField hat einen neuen Parameter namens "decorationBox" erhalten. Sie können dem Textfeld Gestaltungselemente wie Symbole, Platzhalter, Beschriftungen und Ähnliches hinzufügen und den Trefferzielbereich davon vergrößern. (I16996)

  • canDrag-Parameter wurde aus Modifier.draggable (Ic4bec, b/175294473) entfernt.

  • AnimierteFloat.fling, das FlingConfig annimmt, wurde entfernt. Verwenden Sie stattdessen „animatable.animateDecay“. (I4659b, b/177457083)

  • data class wurde aus den folgenden Klassen entfernt:

    • InlineTextContent
    • Gebietsschemaliste
    • (I605c7)
  • Anklickbar, ein- und auswählbar können jetzt außerhalb der Komposition erstellt werden (I0a130, b/172938345, b/175294473).

  • „ScrollableColumn/Zeile“ wurde eingestellt. Die Verwendung von ScrollableColumn ist im Vergleich zu LazyColumn bei großen scrollbaren Inhalten weniger effizient, da wir mit LazyColumn nur sichtbare Elemente zusammensetzen/messen/zeichnen können. Um zu verhindern, dass Nutzer ineffizient arbeiten, haben wir die Funktionen „ScrollableColumn“ und „ScrollableRow“ eingestellt und stattdessen die Nutzung von LazyColumn und LazyRow hochgestuft. Nutzer können dennoch entscheiden, dass sie kein Lazy-Verhalten benötigen, und die Modifikatoren direkt wie folgt verwenden: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)

  • Neue items(count: Int)-Factory-Methode für den Bereich von LazyColumn/LazyRow/LazyVerticalGrid. items(items: List) 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)

  • Das eingestellte AbsoluteArrangement wurde entfernt. (Iffa96, b/177641870)

  • Der Parameter propagMinConstraints wurde zu Box hinzugefügt, um anzugeben, ob die eingehenden Mindesteinschränkungen an den Boxinhalt übergeben werden sollen oder nicht. Der Standardwert ist „false“. (I0125b, b/152613457)

Fehlerkorrekturen

  • onCommit, onDispose und onActive wurden zugunsten der SideEffect und DisposableEffect APIs eingestellt (If760e)
  • WithConstraints wurde als BoxWithConstraints überarbeitet und zu "foundation.layout" verschoben. (I9420b, b/173387208)
  • Änderungen an den werkseitigen Funktionen für Schriftart/Schriftfamilie/Schriftart

    • Factory-Funktionen hinzugefügt, die mit einem Großbuchstaben beginnen
    • Verworfene vorherige Factory-Funktionen mit Kleinbuchstaben
    • Neue Factory-Funktionen geben die FontFamily anstelle von Unterklassen zurück.
    • Konstruktoren der Unterklassen wurden ausgeblendet, sodass sie nur über Factory-Funktionen erstellt werden können.
    • Font.asFontFamily wurde in Font.toFontFamily umbenannt.
    • (I42aa7)
  • ComposeContentTestRule wurde eingeführt, das ComposeTestRule erweitert und setContent definiert, das aus ComposeTestRule entfernt wurde. Wir haben eine Factory-Methode createEmptyComposeRule() hinzugefügt, die eine ComposeTestRule zurückgibt und keine Aktivität für dich startet. Verwenden Sie diese Option, wenn Sie Ihre Aktivität während des Tests starten möchten, z. B. mit ActivityScenario.launch (I9d782, b/174472899).

  • "animateAsState" ist jetzt "animateFooAsState", wobei "Foo" der Typ der animierten Variablen ist, z. B. Float, Dp, Offset usw. (Ie7e25).

  • Die Dichte ist jetzt der Empfängerbereich für Arrangement-Schnittstellen. (I18aad)

  • TextFieldValue akzeptiert AnnotatedString. Dies ist jedoch nur eine API-Änderung und die Textbearbeitung mit mehreren Stilen ist noch nicht implementiert.

    • initial wurde aus den Konstruktorparametern „EditingBuffer“ entfernt. (I326d5)
  • invalid und summaryReference() wurden zugunsten von currentRecomposeScope bzw. memoryCompositionReference verworfen. (I583a8)

  • AnnotatedString wurde geändert, um von kotlin.CharSequence zu erweitern. Daher sind length und SubSequence jetzt Instanzfunktionen und Erweiterungsfunktionen werden entfernt. (Iaf429)

  • Dauer und Verfügbarkeit werden durch lange Millisekunden ersetzt. Mit diesem Schritt wird die Abhängigkeit der Zeigereingabe von diesen Klassen entfernt. (Ia33b2, b/175142755, b/177420019)

  • SaveObserver ersetzt CompositionLifecycleObserver und CompositionLifecycleObserver wird jetzt eingestellt.

    RememberObserver ersetzt CompositionLifecycleObserver mit geänderter Semantik und umbenannten Methoden. Der Wechsel zur neuen API kann mechanisch für Objekte erfolgen, die nur einmal im Gedächtnis bleiben. Dies ist und ist die empfohlene Vorgehensweise. Wenn jedoch eine Referenz in einer Zusammensetzung mehrmals gespeichert wurde, wird onRemembered für jede Referenz aufgerufen, wobei onEnter nur einmal aufgerufen wird. onEnter wurde mehrmals aufgerufen, wenn das Objekt in Unterzusammensetzungen wie WithConstraints und Scaffold verwendet wurde, wodurch der einzelne onEnter-Aufruf garantiert unzuverlässig war und für RememberObserver entfernt wurde.

    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. Dies kann auftreten, wenn eine Ausnahme die Komposition vor Fertigstellung beendet oder die Komposition verworfen wird, weil der Status, für den eine Komposition erzeugt wurde, nicht mehr aktuell ist oder aus anderen Gründen nicht mehr benötigt wird. Wenn die Instanz von RememberObserver gemäß der Empfehlung oben eine externe Ressource verfolgt, zeigen sowohl onForgotten als auch onAbandoned an, dass die Ressource nicht mehr benötigt wird. Wenn das Objekt die gestartete Arbeit oder in onRemembered zugewiesene Ressourcen verfolgt, kann onAbandoned ignoriert werden, da es nicht aufgerufen wird, wenn onRemembered aufgerufen wird. (I02c36)

  • TransformedText.transformedText wurde in TransformedText.text umbenannt

    • TransformedText ist keine Datenklasse mehr (Ie672a).
  • Die folgenden Klassen sind keine Datenklassen mehr:

    • AnnotatedString
    • Absatzstil
    • Span-Stil
    • TextStyle
    • Schriftstärke
    • Textdekoration
    • TextGeometricTransform
    • Textindex
    • TextLayoutErgebnis
    • TextLayoutInput (Iaff99)
  • Die experimentellen monotonicFrameAnimationClockOf-Methoden wurden entfernt (Ib753f, b/170708374).

  • Die globalen Koordinatenmethoden wurden eingestellt und neue fensterbasierte Koordinatenmethoden eingeführt. (Iee284)

  • Verwende ImeAction.None anstelle von ImeAction.NoAction.

    • Verwende „ImeAction.Default“ anstelle von „ImeAction.Unspecific“ (Ie1bcc).
  • FocusRequester.createRefs ist jetzt als experimentell gekennzeichnet, da sich dies noch ändern kann. (I2d898, b/177000821)

  • SemanticsPropertyReceiver.hidden wurde in „invisibleToUser“ umbenannt und als „@ExperimentalComposeUiApi“ gekennzeichnet. „AccessibilityRangeInfo“ wurde in „ProgressBarRangeInfo“ umbenannt. „stateDescriptionRange“ wurde in „progressBarRangeInfo“ umbenannt. AccessibilityScrollState wurde in ScrollAxisRange umbenannt. horizontalAccessibilityScrollState wurde in horizontalScrollAxisRange umbenannt. verticalAccessibilityScrollState wurde in verticalScrollAxisRange umbenannt. (ID3148)

  • VisualTransformation wurde zu einer funktionalen Schnittstelle geändert (I3bba4)

  • TestCoroutineDispatcher beim Testen nutzen (I532b6)

  • PointerInputData wurde entfernt und PointerInputChange geändert, um alle Felder von PointerInputData bereitzustellen. PointerInputEvent und PointerInputEventData wurden intern gemacht, da sie in keiner öffentlichen API verwendet werden. (Ifff97, b/175142755)

  • TextInputService.onStateUpdated wurde in updateState (Id4853) umbenannt.

  • Entfernen Sie displaySize, da dies vermieden werden sollte. In der Regel ist es besser, die Größe von onRoot() oder mindestens die Fenstergröße zu verwenden. (I62db4)

Version 1.0.0-alpha10

13. Januar 2021

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

API-Änderungen

  • ImeOptions und KeyboardOptions sind keine Datenklasse mehr (I3c898, b/168684531).
  • Änderungen der VisualTransformation API
    • „OffsetMap“ wurde in „OffsetMapping“ umbenannt
    • „OffsetMapping.identityOffsetMap“ wurde in „OffsetMapping.Identity“ umbenannt.
    • PasswordTransformation ist keine Datenklasse mehr
    • OffsetMapping wurde in eigene Datei verschoben
    • (I0bdf3)
  • Änderungen an der EditOperations API
    • EditOperation in EditCommand umbenannt
    • Zusätzliches Befehlssuffix für EditOperation-konkrete Implementierungen
    • EditCommands sind keine Datenklassen mehr
    • Die Funktion „EditOperation.process“ wurde in „applyTo“ umbenannt.
    • InputEventListener wurde in InputEventCallback umbenannt
    • (I0a366)
  • Die Geschwindigkeit wurde so geändert, dass sie Komponenten und mathematische Operationen enthält. (Ib0447)
  • @ExperimentalTesting wurde in @ExperimentalTestApi umbenannt, um mit ähnlichen Annotationen der experimentellen API konsistent zu sein (Ia4502, b/171464963).
  • Zusätzliche experimentelle stickyHeader-Methode für LazyColumn/LazyRow (I0a81d)
  • Ranamed Color.useOrElse() zu Color.takeOrElse() (Ifdcf5)
  • Veralteter TestUiDispatcher. Verwenden Sie stattdessen Dispatchers.Main (Ic171f, b/175385255).
  • Ein/Aus-Schaltfläche zur Grundlage Strings.kt hinzufügen (I4a5b7, b/172366489)
  • NativeClass wurde ins UI-Modul verschoben und intern geändert. Die Verwendung von nativeClass in Gleich-Implementierungen wurde so aktualisiert, dass stattdessen „is MyClass“ verwendet wird. (I4f734)
  • FlowRow und FlowColumn wurden eingestellt. Verwenden Sie stattdessen ein benutzerdefiniertes Layout. (I09027)
  • Modifier.focus() und Modifier.focusRequester() wurden eingestellt. Verwenden Sie stattdessen Modifier.focusModifier() und Modifier.focusReference() . (I75a48, b/175160751, b/175160532, b/175077829)
  • Das Tool „Selectable“.notifySelectableChange wurde eingeführt, um „Selectable“-Updates für „Selectable“ zu benachrichtigen. (I6ff30, b/173215242)
  • fun Dp.isFinite()“ wurde in „val Dp.isFinite“ geändert (I50e00)
  • „Constraints#expectedBy“ wurde in „isSatisfiedBy“ umbenannt. (I9cf5c)
  • Für Inline-Klassen mit einer Konstante „Unspezifikation“ wurden die Attribute „is„angegeben“, „isUnspezifisch“ und „useOrElse“ hinzugefügt. (I93f7b, b/174310811)

Fehlerkorrekturen

  • Neue koroutinebasierte API Animatable, die die gegenseitige Exklusivität der Animationen gewährleistet. Neue DecayAnimationSpec zur Unterstützung mehrdimensionaler Abklinganimationen (I820f2, b/168014930)
  • Unterstützung für deaktivierte und schreibgeschützte Textfelder hinzugefügt (I35279, b/171040474, b/166478534)
  • animate() wird jetzt durch animateAsState() ersetzt, das anstelle von T einen State<T>-Wert zurückgibt. Dies ermöglicht eine bessere Leistung, da der Entwertungsbereich darauf eingegrenzt werden kann, wo der Statuswert gelesen wird. (Ib179e)
  • Fügen Sie die Semantics Role API und die Rolle als Parameter zu anklickbarer, auswählbarer und ein-/ausschaltbarer SemanticsModifier hinzu. Modifier.progressSemantics wurde so geändert, dass der Slider auch darauf zugreifen kann. (I216cd)
  • Auf das native "keyEvent" kann jetzt über "keyEvent.nativeKeyEvent" (I87c57, b/173086397) zugegriffen werden.

Version 1.0.0-alpha09

16. Dezember 2020

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

API-Änderungen

  • Scrollbare Oberfläche hinzufügen

    Dadurch können ScrollState und LazyListState als ein gemeinsamer Typ behandelt werden, sodass benutzerdefiniertes Scrollen für beide Typen implementiert werden kann.

    Dadurch wird auch „smooScrollBy“ zu einer Erweiterungsfunktion in Scrollable verschoben, von der diese Funktion genutzt wird. (I2153b)

  • LazyVerticalGrid wurde hinzugefügt. (I17267, b/162213211)

  • LazyColumnFor, LazyRowFor, LazyColumnForIndexed und LazyRowForIndexed werden eingestellt. Stattdessen LazyColumn und LazyRow verwenden (I5b48c)

  • Zum Anhalten von Zeigereingabe-APIs wurde HandlePointerInputScope in AwaitPointerEventScope und handlePointerInput() in awaitPointerEventScope() umbenannt. (Idf0a1, b/175142755)

  • LazyListState.layoutInfo wurde hinzugefügt, um die Liste der Größen und Offsets der derzeit sichtbaren Elemente anzuzeigen (If8678, b/170472532).

  • Anmerkung ExperimentalPointerInput entfernt (Ia7a24)

  • InteractionState-Unterstützung für Textfelder wurde hinzugefügt. (I61d91)

  • Fügen Sie den Parameter „ReverseLayout“ für „LazyColumn/Row“ hinzu. Wenn true Elemente von unten nach oben bestehen 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. Mithilfe der Anordnung können wir einen Abstand zwischen den Artikeln einfügen und die Anordnung der Artikel festlegen, wenn nicht genügend davon für die gesamte Mindestgröße vorhanden sind. (Icf79a, b/170394300)

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

  • ContentDrawScope wurde für DrawScope in das Modul "ui-graphics" verschoben. (Iee043, b/173832789)

Fehlerkorrekturen

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

    CompositionData und CompositionGroup wurden als Ersatz für die UI-Tooling API hinzugefügt, mit der Zusammensetzungsinformationen extrahiert werden können. Diese sind öffentlich, aber nicht für die Verwendung außerhalb der UI-Tooling API gedacht, da sie die Rohinformationen liefern, die von der UI-Tooling API interpretiert werden (I31a9c).

  • ShaderBrush wurde so überarbeitet, dass eine Shader-Instanz langsam erstellt wird, wenn Größeninformationen der Zeichenumgebung verfügbar sind. Dies ist nützlich, um Gradienten zu definieren, die die vollständigen Zeichengrenzen einer zusammensetzbaren Funktion zum Zeitpunkt der Erstellung einnehmen, ohne dass benutzerdefinierte DrawModifier-Implementierungen implementiert werden müssen.

    APIs für Gradientenfunktionskonstruktoren wurden durch Factory-Methoden für ein Gradient-Objekt ersetzt. (I511fc, b/173066799)

  • „Modifier.focusObserver“ wurde eingestellt. Verwenden Sie stattdessen Modifier.onFocusChanged oder Modifier.onFocusEvent (I30f17, b/168511863, b/168511484).

  • Die Autofill API ist jetzt eine experimentelle API und erfordert eine Zustimmung (I0a1ec).

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

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

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

  • AndroidOwner intern gemacht (Ibcad0, b/170296980)

  • Neue Funktion infiniteRepeatable zum Erstellen einer InfiniteRepeatableSpec (I668e5)

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

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

    Die neue Methode insertBottomUp() wurde hinzugefügt.

    Ein Applier fügt entweder Knoten mit insertTopDown() oder insertBottomUp() in den Baum ein, den er bearbeitet, je nachdem, was besser ist.

    Einige Bäume, z. B. LayoutNode und View, lassen sich viel effizienter als Draufsicht erstellen. Vor dieser Änderung war ein Stack von Einfügungen erforderlich, um Bottom-up-Ansätzen zu entsprechen. Diese mussten dann in alle Anwendungen kopiert werden, für die eine Bottom-up-Konstruktion erforderlich war, um die Leistung zu verbessern. Mit dieser Änderung überschreibt ein Applier insertBottomUp(), um einen Baum von unten nach oben zu erstellen, und insertTopDown(), um ihn von oben nach unten zu erstellen. (Icbdc2)

  • Die PainterResource API wurde hinzugefügt, um das undurchsichtige Laden von Painter-Objekten aus Raster-Asset-Formaten (z. B. PNGs) oder VectorDrawables zu verarbeiten. Nutzer müssen den Asset-Typ nicht mehr im Voraus bestimmen und können diese Methode aufrufen, um ein Painter-Objekt zu erhalten, das in zusammensetzbaren Bildern oder in Painter-Modifikatoren verwendet werden kann. (I2c703, b/173818471)

  • Die Factory-Funktion "buildAnnotatedString" wurde hinzugefügt, um einen AnnotatedString zu erstellen. Die Builder-Funktion annotatedString wurde verworfen. (Idfe0b)

Version 1.0.0-alpha08

2. Dezember 2020

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

API-Änderungen

  • Der Parameter maxLines wurde aus dem CoreTextField entfernt. Wenn Sie die Höhe des Textfelds durch die Anzahl der Zeilen einschränken möchten, verwenden Sie stattdessen BasicTextField. (IEC002)
  • Die await*TouchSlop()-Methoden wurden so geändert, dass der Abwärtspfeil nicht erkannt wird, und sie wurden in *OrCancellation umbenannt. Außerdem ist der 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 zum Schreiben zu prüfen. Außerdem wurden einige APIs gemäß der Lint-Prüfung und der Anleitung mit children als Namen für das nachgestellte Lambda zu content migriert. (Iec48e)
  • foundation:foundation-text APIs wurden nach foundation:foundation verschoben. Die Paketstruktur ist gleich geblieben (Id3eb2).
  • Neuer Multi-Touch-Gestendetektor mit Hilfsfunktionen zum Erkennen von Drehung, Zoomen und Schwenken. (IC459d)
  • Neue Drag-Gesten-Erkennung, die die Zeigereingabe-API anhält, einschließlich Ausrichtungssperre. (Icef25)
  • Umbenennung von VectorAsset in ImageVector Im Rahmen der API Council-Richtlinien wurde VectorAsset in Builder verschoben und in Builder in eine innere Klasse von ImageVector umbenannt. Der Typalias von VectorAssetBuilder wurde hinzugefügt, um zur Kompatibilität mit ImageVector.Builder zu verlinken. (Icfdc8)
  • „ImageAsset“ und zugehörige Methoden wurden in „ImageBitmap“ umbenannt. (Ia2d99)
  • Fundamentsemantikeigenschaften wurden in die Benutzeroberfläche verschoben (I6f05c)
  • Fügen Sie koroutinebasierte Scroll-APIs hinzu:

    Es wurden LazyListState.snapToItem und LazyListState.smoothScrollBy sowie untergeordnete APIs für die Scroll-Steuerung hinzugefügt. Diese APIs bieten eine Schnittstelle zum Anhalten zum Steuern des Scrollens, das erst nach dem Scrollen zurückkehrt. (Beispielsweise 5642)

  • Ein singeLine-Parameter wurde zu BasicTextField, TextField und OutlinedTextField hinzugefügt. Setzen Sie diesen Parameter auf „true“, um das Textfeld zu einer einzigen horizontal scrollbaren Zeile zu machen. (I57004, b/168187755)

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

  • Für „Modifier.focusable“ ist ein zusätzliches Fundament erforderlich. Hiermit können Sie einer Komponente fokussierbares Verhalten mit korrekter Semantik und Barrierefreiheit hinzufügen. (I41eb9, b/152525426, b/162865824)

  • Zuvor verworfene APIs wurden entfernt: Border wurde entfernt. Verwenden Sie stattdessen BorderStroke. "Modifier.drawBorder" wurde entfernt. Verwenden Sie stattdessen "Modifier.bound". Modifier.gravity wurde entfernt. Verwenden Sie stattdessen Modifier.align. Der Stapel wurde entfernt. Verwenden Sie stattdessen Box (I32c2b, b/172470874).

  • AbsoluteArrangement wurde in Arrangement.Absolute umbenannt. (If26f2)

Fehlerkorrekturen

  • DrawModifier APIs wurden vom Paket androidx.compose.ui in das Paket androidx.compose.ui.draw verlegt. Die Datei DrawModifierdeprecation.kt enthält Typaliases/Hilfsmethoden, die die Migration von den verworfenen zu den aktuellen APIs unterstützen. (Id6044, b/173834241)
  • Umbenennung von Modifier.drawLayer in Modifier.graphicsLayer Änderungen der zugehörigen Klassen in GraphicsLayer gemäß dem API-Council-Feedback (I0bd29, b/173834241)
  • <T> wurde aus der SubcomposeLayout-Deklaration entfernt. Sie können sie jetzt verwenden, ohne einen Typ anzugeben. (Ib60c8)
  • Die Verfügbarkeits- und Positionsfelder von PointerInputData können jetzt nicht mehr null sein. (ID468a)
  • MaterialTheme legt jetzt die richtigen Farben für Auswahlziehpunkte und den Auswahlhintergrund fest. Nicht-Material-Apps können manuell „AmbientTextSelectionColors“ verwenden, um die für die Auswahl verwendeten Farben anzupassen. (I1e6f4, b/139320372, b/139320907)
  • Der Ausrichtungsparameter von Box wurde in contentAlignment umbenannt. (I2c957)
  • Die „offsetPx“-Modifikatoren wurden in „offset“ umbenannt. Sie verwenden jetzt Lambda-Parameter anstelle von Status. (IC3021, b/173594846)
  • WindowManager.isWindowFocused wurde hinzugefügt, um zu überprüfen, ob das Host-Fenster im Fokus ist, sowie einen WindowFocusObserver, der einen onWindowFocusChanged-Callback bereitstellt. (I53b2a, b/170932874)
  • Der Parameter "resetInput" wurde zu TextInputService#onStateUpdated hinzugefügt (I3e8f5, b/172239032, b/171860947).
  • Aktualisierte TextFieldValue API
    • TextFieldValue.composition ist schreibgeschützt.
    • Entfernte Ausnahme wegen ungültiger Auswahlbereich (I4a675, b/172239032)
  • Die eingestellten Ambients mit dem Suffix Ambient wurden gemäß den anderen Richtlinien für Ambients und Compose API durch neue Properties mit dem Präfix „Inaktiv“ ersetzt. (I33440)
  • Android-Schriftart-Wrapper hinzugefügt. Sie können eine Android-Schriftart über die typeface-Funktion (typeface(Typeface.DEFAULT)) laden. typefaceFromFontFamily() auch in typeface() (I52ab7) umbenannt
  • Lint-Prüfung wurde hinzugefügt, um zu prüfen, ob Modifier Factorys intern androidx.compose.ui.composed {} verwenden, statt als @Composable gekennzeichnet zu werden. (I3c4bc)
  • Es wurde eine Lint-Prüfung hinzugefügt, um zu prüfen, ob die Modifikator-Factory-Funktionen als Erweiterungen in Modifier definiert sind, damit sie fließend miteinander verkettet werden können. (I07981)
  • Das Semantik-Argument „mergeAllDescendants“ wurde in „mergeDescendants“ umbenannt. (Ib6250)
  • Die Zeitsteuerung in Tests (TestAnimationClock und ihre Nutzung) befindet sich jetzt in der Testphase (I6ef86, b/171378521).
  • Entfernen Sie das alte UI-Test-Modul und die zugehörigen Stubs (I3a7cb).
  • „TextUnit.Inherit“ wurde in „TextUnit.Unspecific“ umbenannt. (Ifce19)
  • Die Benutzeroberfläche für die Ausrichtung wurde aktualisiert und funktionsfähig gemacht. (I46a07, b/172311734)
  • Modul foundation:foundation-text wurde mit foundation:foundation zusammengeführt (Idac0f)
  • „place(Offset)“ und „placeRelative(Offset)“ verwerfen. Verwenden Sie stattdessen Überlastungen mit Ganzzahl-Offsets (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 wurden veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.

API-Änderungen

  • Ähnlich wie bei Modifier.fillMaxSize[Width|Height] unterstützen wir jetzt Brüche in Modifier.fillParentMaxSize[Width|Height] im Bereich von LazyColumn/Row (I797e2, b/166586426).
  • KeyboardOptions.toImeOptions wurde aus der öffentlichen API entfernt. (Ic2e45)
  • Die Grundlagen AmbientTextStyle, ProvideTextStyle und AmbientContentColor wurden eingestellt. Verwenden Sie stattdessen die neuen Versionen, die in der Material-Bibliothek verfügbar sind. Für nicht-Material-Anwendungen sollten Sie stattdessen Ihr eigenes Designsystem erstellen, das spezifische Design-Ambiente enthält, die in Ihren eigenen Komponenten verwendet werden können. (I74acc, b/172067770)
  • Foundation.Text wurde eingestellt und durch material.Text ersetzt. Eine einfache, uneindeutige Text-API, die keine Werte aus einem Design verwendet, finden Sie unter androidx.compose.foundation.BasicText. (If64cb)
  • MaxLines zu Textfeldern hinzugefügt (Ib2a5b)
  • Textfelder aktualisieren, um KeyboardOptions zu akzeptieren (Ida7f3)
  • Es wurden KeyboardOptions zur Verwendung in Textfeldern hinzugefügt (I9ca32).
  • BasicText wurde als vom Design nicht bewertetes API für Text hinzugefügt, parallel zu BasicTextField. (I28268)
  • Die Annotation „ExperimentalLazyDsl“ wurde entfernt. LazyColumn/LazyRow kann jetzt ohne Hinzufügen von @OptIn verwendet werden (Idab7a, b/166584730).
  • „BaseTextField“ wurde eingestellt. Verwenden Sie stattdessen BasicTextField. (I896eb)
  • BasicTextField wurde als Ersatz für CoreTextField und BaseTextField (Id4cea) hinzugefügt.
  • Eingestellte LazyColumnItems/LazyRowItems entfernen (I1d8a8)
  • Die nicht mehr unterstützten Zusammensetzungen für die Größenanpassung an intrinsische Messungen wurden entfernt. (I18537, b/171811496)
  • „relativePaddingFrom“ wurde in „PaddingFrom“ umbenannt. Der Modifikator „PaddingFromBaseline“ wurde hinzugefügt, um die Abstände zwischen Layoutgrenzen und Text-Baselines einfacher festlegen zu können. (I0440a, b/170633813)
  • Der Parameter „matchHeightConstraintsFirst“ wurde dem Seitenverhältnis-Modifikator hinzugefügt, mit dem der Modifikator für Größen-/Höhenbeschränkungen angegeben werden kann, bevor Sie die entsprechenden Breiten ausprobieren. (Ie7c43, b/155290593)
  • Die eingestellten „DpConstraints“ wurden entfernt. (I87884, b/171702471)

Fehlerkorrekturen

  • Einführung der Inline-Klasse ScaleFactor zur Darstellung von Skalierungsfaktoren für die horizontalen und vertikalen Achsen unabhängig voneinander, um uneinheitliche Skalierungsanwendungsfälle zu unterstützen.
    • Die Methode "computeScaleFactor" wurde zu ContentScale hinzugefügt.
    • ContentScale.FillBounds wurde hinzugefügt, um eine uneinheitliche Skalierung auszuführen und die src-Grenzen so zu erweitern, dass das Ziel vollständig belegt wird.
    • Operatormethoden zur Berechnung von ScaleFactor-Parametern mit Größenparametern hinzugefügt.
    • (Ic96a6, b/172291582)
  • ErfassungToBitmap wurde zu SnapshotToImage verschoben. (I86385)
  • Kennzeichnet CoreText als @InternalTextApi. Verwenden Sie stattdessen BasicText. (I6aaeb)
  • KeyboardOptions umbenennen in ImeOptions (I82f36)
  • KeyboardType und ImeAction wurden in KeyboardOptions verschoben (I910ce).
  • CoreTextField wurde als @InternalTextApi gekennzeichnet. Stattdessen BasicTextField verwenden (Ie2469)
  • Die Annotation ExperimentalSubcomposeLayoutApi wurde entfernt. SubcomposeLayout kann jetzt ohne Hinzufügen von @OptIn (I708ad) verwendet werden.
  • Modul ui-test-junit4 (Ib91f8) einführen
  • Die Icon API wurde aktualisiert, um „Color.Nicht angegeben“ als mögliche Färbungsfarbe zu erfassen, mit der das bereitgestellte Asset oder der bereitgestellte Painter ohne ColorFilter dargestellt wird. Zuvor wurde versucht, die Färbung mit Farbe zu ignorieren.Bei einer nicht angegebenen Färbung wurde am Ende eine transparente Färbung verwendet, am Ende wurde überhaupt nichts gerendert. (I049e2, b/171624632)
  • MeasureResult wurde aus MeasureScope verschoben. (Ibf96d, b/171184002)
  • Mehrere Layoutsymbole wurden von androidx.compose.ui nach androidx.compose.layout.ui verschoben. (I0fa98, b/170475424)
  • androidx.ui.test wurde nach androidx.compose.ui.test (I9ffdb) verschoben
  • FirstBaseline und LastBaseline wurden in das Paket „androidx.compose.ui.layout“ (Ied2e7) verschoben.
  • "SelectionContainer" wurde ohne den Callback hinzugefügt (Ibfadb).
  • Fügen Sie Tests für die Positionen von SelectionHandles in AuswahlContainer hinzu. (Ie93db)
  • Auto-Korrektur IME-Option für Tastatur hinzugefügt (I57b8d)

Version 1.0.0-alpha06

28. Oktober 2020

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

API-Änderungen

  • „androidx.compose.foundation.Icon“ wurde nach „androidx.compose.material.Icon“ verschoben. Sie können auch die Bildkomponente / Modifier.paint() mit einem Painter verwenden, wenn Sie die Material-Bibliothek nicht nutzen möchten. (I9f622)
  • InteraktionState wurde zu Modifier.scrollable, ScrollableColumn und LazyColumnFor hinzugefügt (I81566, b/169509805).
  • „alignByBaseline“ wurde „RowScope“ hinzugefügt und „alignWithSiblings“ wurde in „AlignBy“ umbenannt (I06503, b/170628732).
  • Für Box wurde eine Inline-Funktion erstellt. (Ibce0c, b/155056091)
  • CoreTextField wurde um maxLines erweitert (Ibee58, b/143687793).
  • CoreTextField wurde um Softwrap ergänzt. (I21a4b)

Fehlerkorrekturen

  • Sie können VectorPainter durch die Verwendung von „memoryVectorPainter“ einstellen. So lässt sich besser erkennen, dass die zusammensetzbare API intern „remember“ nutzt, um Daten über mehrere Kompositionen hinweg beizubehalten. (Ifda43)
  • Aktivieren Sie Übergänge in ComposeTestRule; entfernen Sie die Option, um den blinkenden Cursor in ComposeTestRule zu aktivieren. (If0de3)
  • Einzeilige Tastaturoption für CoreTextField (I72e6d) hinzugefügt
  • Die Radius API wurde in „CornerRadius“ umbenannt, um die Verwendung in Compose besser zu verdeutlichen. Die Dokumentation wurde aktualisiert, um anzugeben, dass negative Eckenradien auf null gesetzt sind. (I130c7, b/168762961)
  • Zusätzliche Möglichkeit zur Angabe von Inspector-Informationen in einem zusammengesetzten Modifikator (Idee08, b/163494569)
  • IME-Option für die Großschreibung der Tastatur wurde hinzugefügt (I8ac38)
  • Position des Rtl-Ziehpunkts fixieren. (I6e1e0)
  • Wichtige Änderung: Der Rückgabewert wurde aus PointerInputFilter.onPointerEvent(...) entfernt, da der einzige Wert, der in Zeigerereignissen geändert werden kann, Verbrauchsdaten sind. Anstatt Daten von PointerInputFilter.onPointerEvent(...) zurückzugeben, können Sie jetzt einfach die Verbrauchsdaten der übergebenen PointerEvents ändern. (I6acd0)
  • Die Option „SelectAll“ wurde dem Auswahlmenü hinzugefügt (Ief02b).

Version 1.0.0-alpha05

14. Oktober 2020

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

API-Änderungen

  • CoreTextField unterstützt jetzt Cursorfunktionen (Id23aa).
  • Die APIs „contentColor()“ und „currentTextStyle()“ werden verworfen und durch die Umgebungselemente „AmbientContentColor“ und „AmbientTextStyle“ ersetzt. Du kannst auf den aktuellen Wert zugreifen, indem du .current wie bei jeder anderen Umgebungs-Property verwendest. Diese Änderung dient der Einheitlichkeit und um zu vermeiden, dass dasselbe Ziel auf mehreren Wegen erreicht werden kann. Außerdem werden einige Ambient-Eigenschaften umbenannt, um ihren Zweck wie folgt zu beschreiben:

    • ContentColorAmbient -> AmbientContentColor
    • TextStyleAmbient -> AmbientTextStyle
    • IndicationAmbient -> AmbientIndication
    • EmphasisAmbient -> AmbientEmphasisLevels
    • RippleThemeAmbient -> AmbientRippleTheme (I37b6d)

Fehlerkorrekturen

  • Im Rahmen der Standardisierung von Sentinel-Werten für Inline-Klassen wird „Color.Unset“ in „Color.Unspecific“ umbenannt, um eine Konsistenz mit anderen Inline-Klassen zu erreichen (I97611, b/169797763).
  • Bedienungshilfen zum Kopieren/Einfügen/Ausschneiden hinzugefügt (I6db4f)
  • TextOverflow.None wird eingeführt. Wenn overflow auf "None" gesetzt ist, kann Text den Überlauf nicht mehr verarbeiten, und er meldet seine tatsächliche Größe an LayoutNode. (I175c9, b/158830170)
  • Die Parameter "Size.Nicht angegeben" wurden auf "Float.NaN" anstelle von "Float.POSITIVE_INFINITY" aktualisiert. Painter-Implementierungen wurden aktualisiert, um die Werte auf Size.Unspecific sowie auf nicht endliche Größen zu prüfen. (I95a7e)
  • Das Modul zum Erstellen von Paging und die Paging-Integration wurden hinzugefügt (Ib85da).
  • LazyListScope so ändern, dass Werte mit Nullwerten empfangen werden können (I1765b)
  • „OnPositionedModifier“ wird in „OnGloballyPositionedModifier“ und „onPositioned()“ in „onGloballyPositioned()“ umbenannt. (I587e8, b/169083903).
  • Stichproben für LazyColumn/Row (Idc16d) hinzugefügt
  • Fehler bei den Methoden „itemsIndexed“ und „itemIndexed“ behoben, um eine emptyList zuzulassen (I06647)
  • DSL zum Angeben von Inspector-Informationen hinzufügen (Ic9a22)
  • Langes Drücken in Text verschieben. (Iff2bc)
  • Deaktivierung der Textauswahl und Demo (Ie7e97)
  • Unterstützung der Konvertierung von AnnotatedString in SpannableString für bessere Zugänglichkeit. (Ief907)
  • PointerInputFilter.onPointerInput(...) wurde entfernt. Stattdessen 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 Verhalten des neuen Box besteht darin, untergeordnete Elemente übereinander zu stapeln, wenn sie mehrere untergeordnete Elemente hat. Dies unterscheidet sich vom vorherigen Box, das sich ähnlich wie eine Column verhielt. (I94893, b/167680279)
  • Die Parameter „Box decoration“ wurden eingestellt. Wenn Sie Ihre Box mit Verzierungen/Padding versehen möchten, verwenden Sie stattdessen Modifikatoren (Modifier.background, Modifier.Border, Modifier.padding) (Ibae92, b/167680279).
  • Fügen Sie eine neue LazyListState-Klasse hinzu. Dadurch können Sie die Scrollposition der LazyRow- und LazyColumn-Komponenten beobachten und steuern. Instanzen können mit der Methode „rememberLazyListState()“ erstellt und an den Statusparameter der Komponente übergeben werden. Derzeit können das erste sichtbare Element und die Offsets in dieser ersten Version beobachtet werden. (Ic7cb7, b/159307669)
  • Verzögerte Listenposition und Scroll-Offset werden jetzt für die Wiederherstellung von Aktivitäten gespeichert und wiederhergestellt (Ie045f, b/166589058).
  • Semantik für lange Klicks hinzufügen (I6281b, b/156468846)
  • MutatorMutex-Dienstprogramm wurde hinzugefügt, um einen einzelnen Mutator des gemeinsamen Status im Laufe der Zeit beizubehalten und in Konflikt stehende Mutatoren nach Priorität abzubrechen (I3f975).
  • Annotierte „rootAnimationClockFactory“, „transitsEnabled“, „blinkingCursorEnabled“ und „textInputServiceFactory“ mit @VisibleForTesting, machen sie zu einer internen API und verbergen ihre kdoc-Dateien (I554eb, b/168308412).
  • Der Inline-Parameter wurde aus der Texteingabe mit String-Eingabe entfernt. Es wird nicht verwendet, da inlineContent mit AnnotatedString funktionieren muss. (Ief403)
  • Die eingestellten benutzerdefinierten Arrangement APIs wurden entfernt. (Ic576d, b/168297922, b/168297923)
  • Der Parameter unbounded wurde zu wrapContentSize-Modifikatoren hinzugefügt, wodurch das Layoutelement mit unbegrenzten maximalen Beschränkungen gemessen werden kann. (I77951, b/158559319)
  • Statische Importe von Inhalten von Layoutbereichen (z.B. alignWithSiblings in RowScope) wurden verhindert. Verwenden Sie stattdessen die explizite Bereichsalternative: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, b/166760797)

Fehlerkorrekturen

  • Aktualisierung vieler Grafik-APIs
    • APIs zur Transformation von Skalierung und Rotation wurden aktualisiert, sodass ein einzelner Offset-Parameter zur Darstellung der Pivot-Koordinaten anstelle von separaten Gleitkommaparametern für die x/y-Koordinaten in DrawScope und DrawTransform verwendet wird.
    • Entfernung der Methoden Rect.expandToInclude und Rect.join
    • Die Dokumentation für den Radius wurde aktualisiert: „oval zusätzlich zum elliptischen
    • Es wurde eine Dokumentation hinzugefügt, in der angegeben wird, dass der öffentliche Konstruktor für die Inline-Radiusklasse nicht direkt aufgerufen werden soll. Stattdessen sollten Radius-Objekte über ihre Funktionskonstruktoren instanziiert werden.
    • RoundRect-APIs für die Abfrage von topRight,bottomRight, bottomCenter usw. wurden entfernt.
    • Eingestellte Rect.shift-Funktion zugunsten von Rect.translate
    • RoundRect.grow und Rect.shrink APIs entfernt
    • Umbenennung von RoundRect.outerRect in Rect.boundingRect
    • Die Methoden "RoundRect.middleRect/tallMiddleRect/wideMiddleRect" und "Rect.isStadium" wurden entfernt.
    • „RoundRect.longestSide“ wurde in „RoundRect.maxDimension“ umbenannt
    • „RoundRect.shortestSide“ wurde in „RoundRect.minDimension“ umbenannt
    • RoundRect.center ist jetzt eine Eigenschaft anstelle einer Funktion.
    • Der RoundRect-Konstruktor verwendet jetzt Radius-Attribute anstelle einzelner Parameter für x/y-Radiuswerte.
    • Größen-APIs, die von einem Rectangle mit Ursprung bei 0,0 angenommen wurden, wurden entfernt.
    • Zerstörungs-API zu Radius hinzugefügt
    • Migration verschiedener RoundRect-Erweiterungsfunktionen zu Eigenschaften
    • (I8f5c7, b/168762961)
  • Leistungsoptimierungen für LazyColumnFor/LazyRowFor Scrollen, indem keine unnötigen Neuzusammensetzungen bei jedem Scrollen vorgenommen werden (I64f65, b/168293643, b/167972292, b/165028371)
  • Ein Absturz in LazyColumnFor/LazyRowFor nach dem Scrollen und anschließendem Ändern von Elementen wurde behoben und das automatische Scrollen nach dem Entfernen des zuvor sichtbaren Elements implementiert, damit am Ende keine leeren Lücken mehr angezeigt werden (I220ab, b/161480164, b/167855468).
  • Das Verschachteln von scrollbaren Containern wie ScrollableContainer und LazyColumnFor in dieselbe Richtung ist nicht mehr zulässig. Es wurde nie unterstützt und brach den Fliege und die Faulheit bei der Zusammenstellung der Elemente von LazyColumnFor (I6e101).
  • Aktualisierung vieler Grafik-APIs
    • DrawScope APIs wurden mit Bereichstransformationsmethoden aktualisiert, um anzuzeigen, dass die Transformation nur innerhalb des Callbacks angewendet und nach dem Aufrufen des Callbacks entfernt wird.
    • Die ClipPath-Dokumentation wurde aktualisiert, sodass sie auf „Path“ (Pfad) statt auf ein abgerundetes Rechteck verweist.
    • Fester Abstand in der Dokumentation für den rechten Parameter in „clipPath“.
    • DrawScope.drawCanvas wurde indrawIntoCanvas umbenannt und der Größenparameter wurde entfernt.
    • Umbenennung der dx/dy-Parameter in der Inset-Methode in horizontal und vertikal
    • Es wurde eine eingefügte Überlastung hinzugefügt, die für alle vier Grenzen denselben Eingabewert bereitstellt.
    • Die Dokumentation zur Inset-Methode, die darauf hinweist, dass die Inset-Methode auf alle vier Seiten angewendet wird,
    • Dokumentation für die Rect-Klasse aktualisiert
    • Kommentare zu Rect-Parametern wurden an den kdoc-Stil angepasst.
    • Rect.join und Rect.expandToInclude wurden entfernt.
    • Überlastung für Rect.translate(offset) erstellt und Rect.shift verworfen
    • (If086a, b/167737376)
  • AccessibilityScrollState wird den Semantikeigenschaften hinzugefügt. (Ifeda9)
  • Erstellen Sie TextRange inline, um das Erstellen von Objekten zu vermeiden. (Id034b)
  • Absatzbeschränkungen wurden entfernt. Die Breite wird jetzt direkt an den Absatz übergeben. (Ica712)

Version 1.0.0-alpha03

16. September 2020

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

API-Änderungen

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

Fehlerkorrekturen

  • DpConstraints und APIs, die es verwenden, wurden eingestellt. (I90cdb, b/167389835)
  • Die Parameter minWidth und maxWidth von widthIn wurden in min und max umbenannt. Gleiches 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 nicht mehr unterstützt werden. (Ieae36)
  • Größen- und Positionsberechnungen in GestureScope wurden korrigiert, was unter anderem zu ungültigen Wischgesten führte (Iaf358, b/166589947).
  • createAndroidComposeRule 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).
  • ManualFrameClock.hasAwaiters wurde hinzugefügt, um zu sehen, ob von dieser Uhr etwas auf einen Frame wartet. runWithManualClock als Ersatz für runBlocking, wenn Tests ausgeführt werden, die eine manualFrameClock benötigen. TestUiDispatcher.Main ermöglicht einfachen Zugriff auf den Haupt-UI-Dispatcher in deinen Tests.

    Beispiel:

    @Test
    fun myTest() = runWithManualClock { clock ->
        // set some compose content
        withContext(TestUiDispatcher.Main) {
            clock.advanceClock(1000L)
        }
        if (clock.hasAwaiters) {
            println("The clock has awaiters")
        } else {
            println("The clock has no more awaiters")
        }
    }
    

    (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 wurden veröffentlicht. Version 0.1.0-dev17 enthält diese Commits.

API-Änderungen

  • Für Zeilen und Spalten wurde der Abstand nach Anordnung hinzugefügt, um die Positionierung von untergeordneten Layoutelementen mit einem festen Abstand zu ermöglichen. Die ausgerichtete Anordnung wurde ebenfalls hinzugefügt, um zu ermöglichen, untergeordnete Layoutelemente nebeneinander zu positionieren und gemäß einer Ausrichtung in der Zeile/Spalte auszurichten. Die vorherigen Methoden Arrangement.Vertical#arrange und Arrangement.Horizontal#arrange wurden eingestellt und das Schreiben benutzerdefinierter Arrangements wird in Zukunft nicht mehr unterstützt. (I6733d, b/161985975)
  • Der Offset ist jetzt eine Inline-Klasse (Iaec70).
  • onFocusChanged-Callbacks aus TextField entfernt. Verwenden Sie stattdessen Modifier.focusObserver. (I51089, b/161297615)
  • „Modifier.drawBorder“ wurde eingestellt. Verwenden Sie stattdessen Modifier.Border. Die Border-Datenklasse wurde durch BorderStroke ersetzt (I4257d, b/158160576).
  • VerticalScroller und HorizontalScroller wurden entfernt. Verwenden Sie stattdessen „ScrollableColumn/Row“. Modifier.drawBackground wurde entfernt. Modifier.background (I73b0d, b/163019183) verwenden
  • Entfernen Sie die als eingestellten fillMax*-Modifikatoren aus LazyItemScope, da sie das korrekte Hinzufügen solcher Modifikatoren für Elemente erschweren, die keine direkten untergeordneten Elemente von LazyColumnFor sind (Ifa78d).
  • Hinzufügen der LazyColumn/LazyRow-Implementierung als DSL (I93cc6)
  • Einschränkungen sind jetzt Inline-Klasse (I88736)
  • Es wurde die Möglichkeit hinzugefügt, die Größe eines Layouts mithilfe der Modifikatoren "fillMaxWidth", "fillMaxHeight" und "fillMaxSize" auf einen Bruchteil des verfügbaren Platzes anzupassen. (I945bb, b/161562591)

Fehlerkorrekturen

  • Ein Modifikatorparameter wurde zu AuswahlContainer hinzugefügt (I4aada, b/161487952).
  • „MergePolicy“-Lambda wurde zu SemanticsPropertyKey hinzugefügt. Damit kann eine benutzerdefinierte Richtlinie für das Zusammenführen der Semantiken „mergeAllDescendants“ definiert. Die Standardrichtlinie sieht vor, den übergeordneten Wert zu verwenden, falls dieser bereits vorhanden ist, andernfalls den untergeordneten Wert. (Iaf6c4, b/161979921)
  • PlacementScope.placeAbsolute() wurde in PlacementScope.place() umbenannt und die vorherige PlacementScope.place() wurde in PlacementScope.placeRelative() umbenannt. Daher spiegelt die Methode PlacementScope.place() die Position in Rechts-nach-links-Kontexten nicht mehr automatisch wider. Verwenden Sie stattdessen PlacementScope.placeRelative(). (I873ac, b/162916675)
  • Die eingestellte Komponente „FilledTextField“ wurde entfernt. Verwende stattdessen „TextField“, um die Material Design-Implementierung des ausgefüllten Textfelds zu erhalten. (I5e889)
  • Der Parameter backgroundColor wurde zu LinearProgressIndicator hinzugefügt und der interne Rahmen aus CircularProgressIndicator entfernt. Neue ProgressIndicatorConstants.DefaultProgressAnimationSpec wurde hinzugefügt, die bei der Animation des Fortschritts zwischen Werten als standardmäßige AnimationSpec verwendet werden kann (If38b5, b/161809914, b/161804677).
  • Die zusammensetzbare Funktion state { ... } wurde zugunsten expliziter Aufrufe 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 entfernt. Entwickler sollten stattdessen onPositioned und OnPositionedModifier für das untergeordnete Layout verwenden. (I4522e, b/162109766)
  • IntSize ist jetzt eine Inline-Klasse (I2bf42).
  • Drücke lange auf den leeren Bereich, um ihn zu bearbeiten. (Ib1e5b)
  • Blenden Sie die FloatingToolbar nach dem Tippen auf den Text aus. (If4525)
  • FloatingToolbar beim Aktualisieren der Auswahl ausblenden. (I8444c)
  • Heben Sie die Auswahl beim Weichzeichnen auf. (I781a2)

Version 0.1.0-dev16

5. August 2020

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

API-Änderungen

  • LazyItemScope wurde für den Parameter „itemContent“ von Lazy-Listen hinzugefügt. Sie bietet Modifikatoren zum Füllen der maximalen Größe des übergeordneten Elements. Dies löst den Anwendungsfall, in dem das Element den Darstellungsbereich ausfüllen soll und die reguläre Modifier.fillMaxSize()-Methode nicht funktioniert, da das Element mit Grenzen für unendliche Werte gemessen wird. (Ibd3b2, b/162248854)
  • Dialogfeld in Benutzeroberfläche verschieben (I47fa6)
  • Zusätzliche LazyColumnForIndexed/LazyRowForIndexed - Versionen von LazyColumnFor/LazyRowFor, die sowohl einen Index als auch ein Element im itemCallback bereitstellen. Dies ist nützlich, wenn Sie zusätzlich zu einem aktuellen Element einen aktuellen Index kennen müssen. (I65ff3)
  • „Modifier.deternimateProgress“ wurde in „Modifier.progressSemantics“ (I9c0b4) umbenannt
  • LazyColumnItems wurde in LazyColumnFor umbenannt. LazyRowItems wurde in LazyRowFor (I84f84) umbenannt
  • Füge als Best Practice einige Markierungen/Anmerkungen hinzu. (I66b20)
  • Das Paket „Foundation.shape.corner“ wurde mit dem Paket „foundation.share“ flach dargestellt (I46491, b/161887429).
  • сrossaxis-Schwerkraftparameter für LazyRowItems/LazyColumnItems hinzugefügt. LazyRowItems/LazyColumnItems unterstützen jetzt das Verhalten von Wrapping-Inhalten. (Ib39fc)
  • ZoomableState wurde in ZoomableController umbenannt. Benutzerdefinierte Kurven werden für smoothScale unterstützt. Die Funktionen enabled und onZoomStarted wurden hinzugefügt (If8b8f)
  • Material FilledTextField wurde in TextField und grundlegendes TextField in BaseTextField umbenannt, damit die einfachste gewünschte API leicht zu finden und zu verwenden ist (Ia6242, b/155482676).
  • Die zuvor verworfene AdapterList wurde entfernt. Stattdessen LazyColumnItems verwenden (I12b9b)
  • "Modifier.drawBackground" wurde in "Modifier.background" umbenannt (I13677).
  • Das alte ConstraintLayout DSL wurde entfernt. ConstraintSet2 wurde in ConstraintSet umbenannt. (If58d1, b/162450908)
  • Modifier.absoluteOffset() und Modifier.absoluteOffsetPx() wurden hinzugefügt. Im Gegensatz zu Offset-Modifikatoren werden Modifikatoren für den absoluten Offset im Rechts-nach-links-Kontext nicht automatisch gespiegelt (I3aa21).
  • Row und Column sind jetzt Inline-Funktionen, die den Aufwand für ihre Verwendung erheblich reduzieren. (I75c10)

Fehlerkorrekturen

  • Umfassende API-Fehlerkorrekturen (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. Benennen Sie IntOffset.Origin in IntOffset.Zero um, um mit der Offset API konsistent zu sein.
    4. Die nativeCanvas-Methode wurde aus der Canvas-Oberfläche entfernt, damit Nutzer ihre eigenen Canvas-Instanzen erstellen können.
    5. EmptyCanvas-Stub-Klasse erstellt, um DrawScope zu einem Nicht-Null-Parameter anstelle von lateinit zu refaktorieren und sicherzustellen, dass das Feld keine Nullwerte enthält.
    6. ClipOp-Enums wurden in Pascal Case umbenannt
    7. FilterQuality-Enums wurden in Pascal Case umbenannt
    8. StrokeJoin-Enums wurden in Pascal Case umbenannt
    9. PointMode-Enums wurden in Pascal Case umbenannt
    10. PaintingStyle-Enums wurden in Pascal Case umbenannt
    11. PathFillType-Enums wurden in Pascal Case umbenannt
    12. StrokeCap-Enums wurden in Pascal Case umbenannt
    13. Die DrawCache-Implementierung wurde aktualisiert, sodass lateinit-Parameter nicht mehr verwendet werden.
    14. DrawScope wurde so aktualisiert, dass für die internen Parameter "fillPaint" und "strokePaint" kein Lazy Delegierung mehr verwendet wird.
    15. Die Funktion „Bild zusammensetzbar“ wurde aktualisiert, um die Nutzung von Box zu vermeiden und so den Verwaltungsaufwand zu reduzieren.
    16. Outline-Klasse wurde aktualisiert und enthält jetzt @Unveränderliche Annotationen.
    17. PathNode mit @Unveränderlichen Annotationen für jede Pfadanweisung aktualisiert
    18. Die Vektorunterzusammensetzung wurde aktualisiert, um redundante bedingte Prüfungen auf Gleichheit zu entfernen, da diese von der Erstellung bereits verarbeitet werden.
    19. Verworfene Rect-Companion-Konstruktormethoden zugunsten von Funktionskonstruktoren
    20. Aktualisierung der Brush-Klassen und Funktionskonstruktoren mit den APIs @Immutable und @Stable.
    21. VertexMode-Enum wurde auf PascalCase aktualisiert
    22. Die DrawScope selectPaint-Methode wurde aktualisiert, um Strichparameter für die Darstellung bedingt zu überschreiben, wenn sie sich geändert haben.
    23. Wir haben die Größe aktualisiert, um eine destruktive API hinzuzufügen, „Nicht angegeben“ in „Nicht angegeben“ umbenannt und nicht verwendete Methoden entfernt
  • MonotonicFrameAnimationClock wurde hinzugefügt, mit dem Sie eine MonotonicFrameClock als AnimationClockObservable verwenden können, um die Lücke zwischen den neuen auf Koroutinen basierenden Uhren und APIs zu schließen, die noch die alten Callback-basierten Uhren verwenden.

    Das MonotonicFrameClock-Äquivalent zu manualAnimationClock ist jetzt „manualFrameClock“. (I111c7, b/161247083)

  • SemanticsNodeInteraction.performPartialGesture wurde entfernt. Verwenden Sie 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. LayoutDirectionAmbient wurde hinzugefügt, um die Layoutrichtung zu lesen und zu ändern. Modifier.rtl und Modifier.ltr wurden entfernt. (I080b3)

  • Modifier.plus wurde eingestellt. Verwenden Sie stattdessen "Modifier.then". „Then“ (Dann) hat ein stärkeres Signal für die Reihenfolge, während gleichzeitig die Eingabe von Modifier.padding().background() + anotherModifier verhindert wird, wodurch die Kette unterbrochen wird und schwerer zu lesen ist (Iedd58, b/161529964).

  • isFocused() und isNotFocused() SemanticsMatcher wurden hinzugefügt. (I0b760)

  • RemeasurementModifier wurde hinzugefügt. Sie ermöglicht es den Nutzenden, das Layout synchron erneut zu messen. Im Allgemeinen benötigen Sie dies nie, da die Neumessung/das Layout automatisch erfolgt. Wir verwenden sie jedoch in LazyColumnItems beim Scrollen. (I5f331, b/160791058)

  • „isSystemInDarkTheme“ berücksichtigt jetzt immer die systemweite Einstellung für das dunkle Design und ignoriert den Energiesparstatus vor Q gemäß der neuesten Anleitung. (I0c10c)

  • „OnChildPositioned“ wurde eingestellt. Verwenden Sie stattdessen „OnPositioned“ für das untergeordnete Element. (I87f95, b/162109766)

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

  • Bedienungshilfen-Aktion hinzufügen, um TextLayoutResult abzurufen (I9d6e6)

Version 0.1.0-dev15

22. Juli 2020

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

Wenn Sie die 0.1.0-dev15-Version von „Compose“ verwenden möchten, müssen Sie Folgendes tun:

Abhängigkeiten aktualisieren

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

API-Änderungen

  • Ähnlich wie beim neuen Parameter in ScrollableColumn/ScrollableRow LazyColumnItems/LazyRowItems ist jetzt auch der Parameter „contentPadding“ verfügbar, mit dem ein Padding für den Inhalt hinzugefügt werden kann, nachdem er abgeschnitten wurde. Dies ist nur mit einem Modifikatorparameter möglich. Außerdem ist es möglich, nur vor dem ersten und nach dem letzten Element einen Abstand hinzuzufügen. (Ibc24e)
  • "onFocusChange"-Callback in Textfeldern wurde in "onFocusChanged" umbenannt (Ida4a1).
  • VerticalScroller und HoriziontalScroller wurden eingestellt. Verwenden Sie „ScrollableColumn“ und „ScrollableRow“, um das Spalten-/Zeilenverhalten und die Parameter zu integrieren, oder verwenden Sie „Modifier.verticalScroll“ und „Modifier.horizontalScroll“ für Ihr eigenes Element. In ähnlicher Weise wurde ScrollerPosition zugunsten von ScrollState eingestellt. (I400ce, b/157225838, b/149460415, b/154105299)
  • Die APIs Modifier.draggable und Modifier.scrollable wurden überarbeitet. DragDirection wurde zugunsten der Ausrichtung entfernt. Der für das Scrollen erforderliche Status wurde vereinfacht. ScrollableState wurde in ScrollableController umbenannt (Iab63c, b/149460415).
  • Für Einzelwert-Semantikeigenschaften wird jetzt ein Aufrufstil verwendet. Beispiel: Semantik {hidden = true } wird jetzt so geschrieben: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412)
  • Von RoundedCornerShape und CutCornerShape verwendete Eckengrößen können jetzt größer als 50 % sein (Id2340, b/160400213).
  • Der ContentScale-Standardparameter für das zusammensetzbare Bild wurde von Inside to Fit geändert. Dies wurde vorgenommen, um ein Verhalten zum Hochskalieren des zugrunde liegenden Malers zu erreichen, wenn das Layout größer als die eigentliche Größe des Malers ist, während das Seitenverhältnis beibehalten wird. Dieses Verhalten entspricht besser den Erwartungen an die Bereitstellung fester Größen für das Bild, wirkt sich aber nicht auf das Standardverhalten aus, wenn nur die intrinsische Größe zum Berechnen der Größe der zusammensetzbaren Funktion verwendet wird. (I40ae3, b/159838006)
  • Verwenden Sie in den APIs der obersten Ebene AnimationSpec anstelle von AnimationBuilder, um das Konzept der Spezifikation für statische Animationen zu verdeutlichen. – Verbessern Sie die Übergangs-DSL, indem Sie die Lambda-Anforderung zum Erstellen von AnimationSpecs wie Tween, Spring entfernen. Stattdessen nehmen sie Konstruktorparameter direkt. - Verbesserte Benutzerfreundlichkeit von AnimationSpec, die Konstruktoren öffnet, anstatt sich auf Builder zu verlassen (Ica0b4)
  • Anklickbar wurde entfernt. Modifier.clickable verwenden (I84bdf)
  • Zusätzliche LazyRowItems: horizontales Scrollen-Analog zu LazyColumnItems (Ibbcf7)
  • Einführung zustandsloser Animations-APIs auf niedriger Ebene Diese APIs (I63bf7)
  • „androidx.ui.foundation.TextFieldValue“ und „androidx.ui.input.EditorValue“ wurden eingestellt. Zusammensetzbare Funktionen für TextField, FilledTextField und CoreTextField, die diesen Typ verwenden, wurden ebenfalls eingestellt. Verwenden Sie stattdessen androidx.ui.input.TextFieldValue (I4066d, b/155211005).
  • Verwendung von "IntPx" durch "Int." ersetzt. "IntPxPosition" durch "IntOffset" ersetzt. "IntPxSize" wurde durch "IntSize" ersetzt. (Ib7b44)
  • androidx.ui.foundation.shape.RectangleShape entfernt; androidx.ui.graphics.RectangleShape (I94939, b/154507984) verwenden
  • Um die Anzahl der Klassen zur Darstellung von Größeninformationen zu konsolidieren, sollten Sie die Verwendung der Klasse "Size" anstelle von "PxSize" standardisieren. Dies bietet die Vorteile einer Inline-Klasse, um einen Long-Wert zu verwenden, um 2 Gleitkommawerte zu verpacken, um Breite und Höhe als Gleitkommazahlen darzustellen. (IC0191)
  • Um die Anzahl der Klassen zur Darstellung von Positionierungsinformationen zu konsolidieren, sollten Sie die Verwendung der Offset-Klasse anstelle von PxPosition standardisieren. Dies bietet die Vorteile einer Inline-Klasse, um einen Long-Wert zu verwenden, um 2 Gleitkommawerte zu verpacken, um x- und y-Offsets darzustellen, die als Gleitkommazahlen dargestellt werden. (I3ad98)
  • Modifier.zoomable wurde hinzugefügt, um die Zoomfunktion durch Auseinander- und Zusammenziehen der Finger zu vergrößern (Id5d63).
  • Ein/Aus-Schaltfläche wird nicht mehr unterstützt. Verwenden Sie stattdessen Modifier.toggleable (I35220, b/157642842).
  • MutuallyExclusiveSetItem wurde eingestellt. Verwenden Sie stattdessen Modifier.selectable. (I02b47, b/157642842)
  • TestTag wurde eingestellt. Verwenden Sie stattdessen Modifier.testTag. (If5110, b/157173105)
  • Fügt dem Text den Parameter „fontWeight“ hinzu, der zuvor versehentlich nicht hinzugefügt wurde (I56937).
  • Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem für Pixelparameter nur Dp und primitive Typen verwendet werden (I19d02).
  • VerticalScroller stellt jetzt „Column“ (Spalte) jetzt standardmäßig zur Verfügung. HorizontalScroller stellt jetzt Row Out of the Box bereit. (Ieca5d, b/157020670)
  • Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem für Pixelparameter nur Dp und primitive Typen verwendet werden (Iede0b).
  • Modifier.indication wurde dem Foundation-Paket hinzugefügt. Hiermit können Sie Informationen zum Drücken/Ziehen/Sonstiges auf Ihren benutzerdefinierten, interaktiven Elementen einblenden (I8425f, b/155287131).
  • VerticalScroller und HorizontalScroller unterstützen jetzt umgekehrtes Scrollen. isReversed ist auf ScrollerPosition (I953bd) festgelegt.
  • Unterstützung beim Hinzufügen von zusammensetzbaren Funktionen in das Textlayout (I1373c)
  • CanvasScope-Implementierungen wurden konsolidiert, sodass es jetzt nur noch DrawScope und ContentDrawScope gibt. CanvasScope wurde in DrawScope umbenannt. DrawScope wurde aktualisiert, um die Dichte-Oberfläche zu implementieren und die Unterklasse „LayoutDirection“ von „Deleted DrawScope“ in ContentDrawScope zu implementieren. Die Funktionen „Painter“ und „PainterModifier“ werden jetzt nicht mehr selbst beibehalten, da DrawScope diese Eigenschaft bereits zur Verfügung stellt, ohne sie manuell anzugeben (I1798e).
  • Die eingestellte DrawBackground API wurde zugunsten der Erweiterungs-APIs „drawBackground“ im Modifier entfernt. refaktorierte „color“-, „pinsel“- und „colordBackground“-Implementierungen, um Codepfade zu reduzieren und die Notwendigkeit, dass Modifier als Teil der Komposition erstellt werden muss, zu reduzieren. (I0343a)
  • Wir haben die Erstellung von APIs auf höherer Ebene aktualisiert, die einen Canvas zur Verfügung stellen, um stattdessen CanvasScope bereitzustellen. Nutzer müssen dadurch ihre eigenen Paint-Objekte nicht mehr verwalten. Nutzer, die weiterhin Zugriff auf einen Canvas benötigen, können die Erweiterungsmethode „drawCanvas“ verwenden. Sie bietet einen Callback, um Zeichenbefehle mit dem zugrunde liegenden Canvas auszugeben. (I80afd)
  • HorizontalScroller und VerticalScroller stellen ihre Scrollposition nicht mithilfe des gespeicherten Instanzstatus wieder her. (Ia0fae, b/155075048)
  • FocusManagerAmbient wurde entfernt. Verwenden Sie FocusModifier.requestFocus , um den Fokus zu erhalten. (IC4826)
  • Das Tabellenlayout wurde vorübergehend entfernt, bis es mit einer aktualisierten API wieder verfügbar ist. (Id88a7)
  • Es wurde eine CanvasScope API erstellt, die ein Canvas-Objekt umschließt, um eine zustandslose, deklarative API-Oberfläche zum Zeichnen bereitzustellen. Transformationen sind in ihrem eigenen Empfängerbereich enthalten und Größeninformationen gelten auch für entsprechende eingefügte Grenzen. Der Nutzer muss zum Konfigurieren von Zeichenvorgängen kein eigenes Paint-Statusobjekt verwalten.

    CanvasScopeSample wurde hinzugefügt und die Demo-App wurde mit einer deklarativen Grafikdemo aktualisiert (Ifd86d).

  • ColoredRect wurde entfernt. User Box mit dem Modifikator „drawBackground“ stattdessen (I983c7, b/152753731)

  • Anpassung der Cursorfarbe für das Textfeld (I6e33f)

  • Es ist jetzt möglich, die Softwaretastatur mithilfe des Callbacks „onTextInputStarted“ (I8dc44, b/151860051) mit „SoftwareKeyboardController“ ein- und auszublenden.

  • TextFieldValue, der mit TextField verwendet wird, kann jetzt in folgenden Fällen verwendet werden: var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() } (I5c3ce, b/155075724)

  • Fügt häufig verwendete Parameter zu Text() hinzu. Wenn Sie derzeit einen lokalen Textstil erstellen, um eine geringe Anzahl dieser Parameter wie Text(style = TextStyle(textAlign = TextAlign.Center)) zu übergeben, können Sie die Parameter jetzt einfach direkt angeben: Text(textAlign = TextAlign.Center) (I82768)

  • Der Parameter „CoreTextField/TextFieldfocusIdentifier“ wurde durch „FocusNode“ ersetzt, um die Integration in das Fokus-Subsystem zu ermöglichen. (I7ea48)

  • TextField-Update – in der horizontalen Dimension belegt es den gesamten verfügbaren Bereich, der ihm zugewiesen ist (Ib08df, b/154638552).

  • InteractionState und Interaction wurden hinzugefügt, um die Erstellung von Komponenten zu vereinfachen, die auf Änderungen des UI-Status reagieren, z. B. Drücken und Ziehen (Icfe25, b/152525426).

  • RectangleShape wurde von androidx.ui.foundation.shape.* nach androidx.ui.graphics.* verschoben. (Ia74d5, b/154507984)

  • Alle Farbverwendungen, für die Nullwerte zulässig sind, in der API durch eine Funktion ersetzt, die keine Nullwerte zulässt, und Color.Unset anstelle von null verwenden (Iabaa7)

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

  • Umbenennung von ScaleFit in ContentScale. ContentScale wurde von UI-graphics in das UI-Core-Modul verschoben und befindet sich nun im selben Modul wie die Ausrichtung API. FillMaxDimension in „Zuschneiden“ umbenannt „FillMinDimension“ wurde in „FillMinDimension“ umbenannt „FitMinDimension“ wurde in „Fit“ umbenannt „Fit“ wurde in „Innen anpassen“ umbenannt, um die Entsprechungen „ImageView.ScaleType“ besser zu berücksichtigen Es wurde eine Dokumentation hinzugefügt, aus der hervorgeht, dass die Kombination aus „Zuschneiden“ und „Align.Center“ dasselbe Ergebnis erzielt wie „ImageView.ScaleType.CENTER_CROP“ und „Fit“, die mit „Align.Center“ verwendet werden, dasselbe Ergebnis wie „ImageView.ScaleType.FIT_CENTER5“.

  • Entfernt ProvideContentColor, verwende stattdessen ContentColorAmbient direkt mit Providers (Iee942)

  • Fügt dem Text einen Farbparameter hinzu. Dadurch kann die Farbe des Textstils überschrieben werden, ohne dass diese manuell mit dem in einem Design bereitgestellten Stil zusammengeführt werden müssen. (I41a66)

  • DrawModifier API verbessern:

    • Der Empfängerumfang für „draw() ContentDrawScope“ wurde erstellt.
    • Alle Parameter fürdraw() wurden entfernt.
    • DrawScope hat dieselbe Oberfläche wie der frühere CanvasScope.
    • ContentDrawScope verfügt über die Methode „drawContent()“ (Ibaced, b/152919067).
  • „ColoredRect“ wurde eingestellt. Verwende stattdessen Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)

  • Das Shape-Motiving-System wird gemäß der Material Design-Spezifikation aktualisiert. Sie können jetzt kleine, mittlere und große Formen für die meisten Komponenten angeben (Ifb4d1).

  • Modifikator plus Operator durch Factory-Erweiterungsfunktionen ersetzt (I225e4)

  • Ziehbare Elemente wurden in Modifikator (Id9b16, b/151959544) verschoben.

  • Text wurde von androidx.ui.core in das Paket androidx.ui.foundation verschoben. (I87ce5)

  • Parameter enabled zu „Kästchen“, „Wechsel“ und „Ein/Aus-Schaltfläche“ hinzufügen (I41c16)

  • Ripple ist jetzt ein Modifikator. Obwohl Clickable noch nicht konvertiert wurde, wird die Verwendung von Clickable(onClick = { ... }, modifier = ripple()) (Ie5200, b/151331852, b/150060763) empfohlen.

  • Die VectorPainter API wurde hinzugefügt, um die vorhandene Subcomposition API für Vektorgrafiken zu ersetzen. Das Ergebnis der Unterzusammensetzung ist ein VectorPainter-Objekt anstelle eines DrrawModifier. Die früheren DrawVector-Zusammensetzungen wurden zugunsten von VectorPainter eingestellt.

    Die Image(Painter) API wurde in PaintBox(Painter) umbenannt

  • Es wurde ein Bild erstellt, das zusammensetzbar ist, um neben der Darstellung eines bestimmten Bild-Assets auf dem Bildschirm auch Größe und Layout zu verarbeiten. Diese zusammensetzbare Funktion unterstützt auch das Zeichnen einer beliebigen Painter-Instanz unter Berücksichtigung ihrer eigentlichen Größe sowie eine bestimmte feste Größe oder Mindestgröße (Ibcc8f).

  • Button, FloatingActionButton und Clickable haben jetzt einen separaten enabled-Parameter. Einige der Parameter der Schaltfläche wurden umbenannt oder neu angeordnet. (I54b5a)

  • Umbenennung von Image in ImageAsset, um den Unterschied zwischen den Bilddaten und der zukünftigen zusammensetzbaren Funktion für das Layout und die Zeichnungen besser zu unterscheiden

    Es wurde eine Erweiterungsmethode für Bitmap.asImageAsset() (android.graphics.Bitmap) zum Erstellen einer Instanz eines ImageAsset erstellt, die sich für die Kombination der herkömmlichen Android-Anwendungsentwicklung mit dem Framework zum Schreiben von Inhalten eignet. (Id5bbd)

  • Die zusammensetzbare Funktion „DawImage“ wurde entfernt. Verwenden Sie ImagePainter, um ein Bild auf einem vorhandenen Layout zu zeichnen, oder SimpleImage, um ein platzsparendes Bild zu einführen (I595e1, b/149827027).

  • Die Stack-Komponente unterstützt die Schreibrichtung von rechts nach links (Ic9e00).

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

  • Die zusammensetzbare Funktion „DawShape“ wurde entfernt. Verwenden Sie stattdessen den Modifikator „Hintergrund zeichnen“. (I7ceb2)

  • AdapterList wurde hinzugefügt, eine scrollbare Listenkomponente, die nur die sichtbaren Elemente zusammenstellt und einrichtet. Zu den derzeit bekannten Problemen zählt, dass es sich nur um eine vertikale Version handelt und nicht alle Fälle von Änderungen an den untergeordneten Elementen vollständig verarbeitet werden. (Ib351b)

  • Es wurde eine scrollbare Komponente hinzugefügt, die das Erstellen von benutzerdefinierten Scrollern/Listen ermöglicht (I5fd37).

  • Hintergrund wurde in DrawBackground umbenannt und zum Standardspeicher gemacht (Ia0bd3).

  • Abstände, Rahmen, Form und Hintergrundparameter zu Box hinzufügen (I05027, b/148147281)

  • Canvas-Komponente hinzugefügt. Diese zusammensetzbare Funktion nimmt etwas in Anspruch (vom Nutzer bereitgestellt) und ermöglicht Ihnen, mit CanvasScope (I0d622) zu zeichnen.

  • Border-Modifikator in DrawBorder umbenennen (I8ffcc)

  • Es wurde eine Box-Komponente zum Kombinieren gängiger Layout- und Zeichenfunktionen hinzugefügt. (I6e2a7)

  • Scroller zeigen jetzt natives Android-Fingerverhalten. (I922af, b/147493715)

  • DrawBorder durch Rahmenmodifikator ersetzt (Id335a)

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

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

  • Zusätzliche Unterstützung für Ränder von ConstraintLayout-Barrieren. (I47ffe)

  • RTL-Unterstützung in ConstraintLayout wurde korrigiert. Nicht erkannte RTL-APIs wurden hinzugefügt. (I3b1c7)

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

  • Die Annotation @ExperimentalLayout wurde hinzugefügt. ConstraintLayout, FlowRow und FlowColumn sind jetzt damit getaggt, um zu kennzeichnen, dass sich ihre APIs ändern. (I412a8)

  • Modifier.padding(InnerPadding) wurde hinzugefügt (I94985, b/157133803).

  • Die verworfenen Spalten RowAlign und ColumnAlign in Row und Column wurden entfernt. (If60d4, b/155858731)

  • Das verworfene LayoutTag() wurde entfernt. Verwenden Sie stattdessen „Modifier.tag()“. Die eingestellte Funktion „Modifier.matchParent()“ wurde entfernt. Verwenden Sie stattdessen „Modifier.matchParentSize()“. (If8044)

  • Der Layoutmodifikator „offsetPx“ wurde hinzugefügt, um (dynamische) Offsets in Pixel zu definieren. (I5af57)

  • Die zusammensetzbare Funktion „AlignLineOffset“ wurde eingestellt. Verwenden Sie stattdessen den Modifikator relativePaddingFrom(). Die zusammensetzbare Funktion „CenterAlignmentLine“ wurde entfernt. (I60107)

  • Der Layoutmodifikator „defaultMinSizeConstraints“ wurde hinzugefügt, der nur dann Größenbeschränkungen für das umschlossene Layout festlegt, wenn die eingehenden entsprechenden Einschränkungen nicht angegeben sind (0 für Mindesteinschränkungen und unendlich für maximale Einschränkungen). (I311ea, b/150460257)

  • Der Container wurde entfernt. Verwenden Sie stattdessen Box (Ibbc2b, b/151407926).

  • Die nicht mehr unterstützten Layoutbreite-/Höhen-/Größenmodifikatoren wurden entfernt. (Ib0bc1)

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

  • Modifikator für symmetrischen Abstand wurde hinzugefügt. (I39840)

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

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

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

  • Die Parameter verticalGravity und horizontalGravity wurden zu Zeile bzw. Spalte hinzugefügt. (I7dc5a)

  • „wrapContentWidth“ und „wrapContentHeight“ wurden aktualisiert und sind nun mit der vertikalen oder horizontalen Ausrichtung anstelle der Ausrichtung zu erwarten. Der Schwerkraftmodifikator wurde aktualisiert und akzeptiert nun die vertikale oder horizontale Ausrichtung. Zeilen, Spalten und Stapel wurden aktualisiert, um benutzerdefinierte fortlaufende Ausrichtungen zu unterstützen. (Ib0728)

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

  • EdgeInsets wurde in InnerPadding umbenannt. Der Parameter innerPadding von Material Buttons wurde in paddding umbenannt. (I66165)

  • „alignToSiblings“ akzeptiert jetzt „Measured“ anstelle von „Placeable“. (I5788d)

  • Intrinsische Messungen wurden um Modifikatoren für die Größenanpassung ergänzt und die Komponenten, die diesem Zweck dienen, wurden eingestellt. (I8295d)

  • Unterstützung für die Anpassung der Abmessungen untergeordneter Elemente von ConstraintLayout (Idb1a5) wurde hinzugefügt.

  • Die eingestellten zusammensetzbaren Funktionen „Umbrechen“ und „Zentrieren“ wurden entfernt. (I29e23)

  • LayoutModifier2 wurde hinzugefügt, eine neue API zum Definieren von Layoutmodifikatoren. LayoutModifier (If32ac) wurde eingestellt.

  • RowScope- und ColumnScope-Mitglieder sind jetzt außerhalb von Zeile und Spalte zugänglich. (I3a641)

  • Der Container wurde verworfen. Verwenden Sie stattdessen Box. (I675ce, b/151407926)

  • Der LayoutOffset-Modifikator für die Versatz der Layoutposition wurde hinzugefügt (I0b8a3).

  • Erste Unterstützung für Rtl im Compose-Layout (Ia5519)

  • LayoutAlign wurde aktualisiert, sodass der verfügbare Platz nicht mehr ausgefüllt wird (I2b14f).

  • Das zusammensetzbare Seitenverhältnis wurde zugunsten des Modifikators entfernt. Veraltete FlexColumn, FlexRow-zusammensetzbare Funktionen und den Abstandsmodifikator (Iec8a7) wurden gelöscht.

  • Der LayoutInflexible-Modifikator für Zeile und Spalte wurde entfernt (I0d820).

  • Implementieren Sie Ziehpunkte zum Ziehen, um die Auswahl für das Textfeld zu ändern. (I27032)

  • Implementiert „LongPressAndDrag“ für die Textfeldauswahl. (I17919)

Fehlerkorrekturen

  • FocusModifier wird zugunsten von Modifier.focus, Modifier.focusRequester und Modifier.focusObserver eingestellt. FocusState und FocusdetailState wurden zugunsten von FocusState2 eingestellt (I46919, b/160822875, b/160922136).
  • runOnIdleCompose umbenannt in runOnIdle (I83607)
  • Mehrere Test-APIs wurden umbenannt, um die Intuitivität zu verbessern. Alle findenXYZ APIs wurden in onNodeXYZ umbenannt. Alle doXYZ APIs wurden umbenannt, um XYZ auszuführen. (I7f164)
  • Entfernt zuvor verworfenes Modifier.ripple. „Anklickbar“ verwendet jetzt Ripple als Standardanzeige (wenn Sie in Ihrer Anwendung ein MaterialTheme {} festgelegt haben). In den meisten Fällen können Sie also einfach „anklickbar“ verwenden und die Ripple-Anzeige kostenlos erhalten. Wenn Sie den Parameter color / size / bounded für die Verbreitung anpassen müssen, können Sie manuell eine RippleIndication erstellen und als Indication-Parameter an anklickbar übergeben. (I663b2, b/155375067)
  • Veraltete APIs für Größentests wurden entfernt. (Iba0a0)
  • Experimentelle LayoutNode-API erstellt (I4f2e9)
  • Die Version 1 der Sperre für die Scrollausrichtung wurde in Compose implementiert. (I1ce7a, b/150289741)
  • Pop-ups, Dialogfelder und Menüs übernehmen jetzt das kontextbezogene MaterialTheme (Ia3665, b/156527485).
  • Der Layout-Richtungsparameter wurde aus dem Messblock der Layout()-Funktion entfernt. Die Layoutrichtung ist jedoch innerhalb des Callbacks über das Messungsbereichsobjekt verfügbar (Ic7d9d).
  • Add AbsoluteArrangement – ermöglicht die Anordnung der untergeordneten Elemente innerhalb der Zeile ohne automatische Spiegelung in RTL (I3a1df)
  • Die Anmerkung „@Untracked“ wurde eingestellt. Durch @ComposableContract(tracked=false) ersetzen (Id211e)
  • Vor dieser Änderung hat das Compiler-Plug-in Aufrufe an Konstruktoren innerhalb einer @Composable-Funktion nicht trivilegisch abgefangen, wenn ein (I5205a, b/158123804) vorhanden war.
  • Fügen Sie eine zusammensetzbare Funktion viewModel() hinzu, um ViewModel ähnlich wie in Activity oder Fragment (I5fdd1) zu erstellen oder bereits erstellte ViewModel-Modelle zu erstellen.
  • Die Radiusklasse wurde in eine Inline-Klasse geändert. Methoden zur Companion-Erstellung wurden zugunsten des Funktionskonstruktors mit Standardparametern entfernt, sodass der Radius entlang der Y-Achse dem obligatorischen Radiusparameter der X-Achse entspricht.

    DrawScope.drawRoundRect verwendet jetzt einen einzelnen Radius-Parameter anstelle von zwei separaten Gleitkommawerten für den Radius entlang der x- und y-Achse (I46d1b).

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

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

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

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

  • Der Cursor von TextField blinkt (Id10a7).

  • Für Teilgesten muss kein GesteToken mehr weitergegeben werden (Id7ae5).

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

  • „modifier.semantics“ wurde nicht mehr eingestellt, um die Verwendung von übergeordneten Komponenten zu ermöglichen. (I4cfdc)

  • Benennen Sie AnnotatedString.Builder.addAnnotationString in addStringAnnotation um. (I5059e)

  • Ausrichtungs-API wurde aktualisiert und Unterstützung für die absolute Ausrichtung hinzugefügt (die im Rtl-Kontext nicht automatisch gespiegelt wird) (I38cd3).

  • Untergeordnete Layout- und LayoutModifier-Elemente können mit einer anderen Layout-Richtung gemessen werden. (Ibd731)

  • ImagePainter zusätzlichen optionalen rect-Parameter hinzufügen, um das Zeichnen eines Unterabschnitts des zugrunde liegenden ImageAsset (I0ea9e) zu unterstützen

  • Absturz in AdapterList beim Entfernen von Elementen behoben (Ic64b0, b/153195921)

  • Wir haben geändert, wie das erste Layout gemessen wird, das Sie im activity.setContent { }-Block einfügen. Bisher war es erforderlich, den gesamten Bildschirm der Aktivität auszufüllen. Jetzt verhält es sich so, als würden Sie Ihr Layout in einem Stack platzieren: Es kann kleiner als ein Bildschirm sein und wird oben links positioniert. Wenn Sie das bisherige Verhalten verwenden möchten, können Sie Modifier.fillMaxSize() auf Ihr Layout anwenden. (Ie88a7, b/153453714)

  • Das Modul ui-text-compose wurde in ui-text umbenannt. ui-text enthält jetzt zusammensetzbare Funktionen für CoreText und CoreTextField (Ib7d47).

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

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

  • runOnIdleCompose und runOnUiThread sind jetzt globale Funktionen anstelle von Methoden in ComposeTestRule. (Icbe8f)

  • [Mutable]Operatoren von Status-Property-Delegationen wurden in Erweiterungen verschoben, um Optimierungen für Kotlin 1.4-Property-Delegationen zu unterstützen. Aufrufer müssen Importe hinzufügen, um by state { ... } oder by mutableStateOf(...) weiterhin verwenden zu können. (I5312c)

  • „DawLayerModifier“ und „drawLayer()“ sind jetzt standardmäßig von „clipToBounds“ und „clipToOutline“ auf „false“ gesetzt. (I0eb8b, b/152810850)

  • LayoutResult wurde in MeasureResult umbenannt. (Id8c68)

  • Veraltete zusammensetzbare Funktion aus dem Center. Er sollte entweder durch den Modifikator „LayoutSize.Fill + LayoutAlign.Center“ oder durch eine der zusammensetzbaren Funktionen „Box“ oder „Stack“ mit geeigneten Modifikatoren ersetzt werden (Idf5e0).

  • LayoutFlexible wurde in LayoutWeight umbenannt. Zum Ausfüllen muss enger Parameter umbenannt werden. (If4738)

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

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

  • Die zusammensetzbare Funktion „DawShadow“ wurde durch den Modifikator „drawShadow()“ ersetzt. Schatten werden jetzt in LayerModifier gezeichnet. (I0317a)

  • androidx.compose.ViewComposer wurde nach androidx.ui.node.UiComposer androidx.compose.Emittable verschoben. Es war redundant mit ComponentNode. androidx.compose.ViewAdapters wurde entfernt. Sie werden nicht mehr unterstützt. Compose.composeInto wurde eingestellt. Verwende stattdessen setContent oder setViewContent. „Compose.disposeComposition“ wurde eingestellt. Verwenden Sie stattdessen die Methode dispose für die von setContent zurückgegebene Composition. androidx.compose.Compose.subcomposeInto wurde in androidx.ui.core.subcomposeInto verschoben. ComponentNode#emitInsertAt wurde in ComponentNode#insertAt ComponentNode#emitRemoveAt umbenannt in ComponentNode#removeAt ComponentNode#emitMode umbenannt in Component0#moveIdefComponentNode0.Idef.

  • Eingestellte Zusammensetzbare Funktion. Er kann entweder mit dem LayoutAlign-Modifikator oder durch die zusammensetzbare Funktion "Stack" (Ib237f) ersetzt werden.

  • Die Layoutrichtung wird vom übergeordneten Layoutknoten auf die untergeordneten Elemente übertragen. Modifikator für Layoutrichtung wurde hinzugefügt. (I3d955)

  • Benennen Sie Painter.toModifier in Painter.asModifier um, da der neu erstellte Modifier einen Verweis auf den ursprünglichen Painter hat, der von mehreren Modifier-Instanzen gemeinsam genutzt werden kann (I7195b).

  • Unterstützung von rechts nach links im LayoutPadding-Modifikator (I9e8da)

  • Density und DensityScope wurden in einer Schnittstelle zusammengeführt. Anstelle von „AmbientDensity()“ können Sie jetzt „DensityAmbient.current“ verwenden. Anstelle von mitDensity(density) nur mit(density) (I11cb1)

  • ValueHolder-Klasse entfernt. Die Klassen "animateValue" und "animateFloat" wurden umstrukturiert, um das Feld für den Animationswert abzustrahieren, sodass Unterklassen die Wertaktualisierung beobachten können.

    • Es wurden Modellklassen für animateValue, animateFloat usw. hinzugefügt.
    • Es wurde ein neuer Satz einfacher @Composable-API zur Animation zwischen Werten hinzugefügt.
    • (I79530)
  • Nicht abwärtskompatible Änderungen an der Ambients API. Weitere Informationen finden Sie in der Protokoll- und Ambient<T>-Dokumentation (I4c7ee, b/143769776).

  • Die von Placeable#get(AlignmentLine) zurückgegebenen Int-Positionen der Ausrichtungszeile sind jetzt nicht null. Wenn die abgefragte Ausrichtungszeile fehlt, wird „AlignLine.Unspecific“ zurückgegeben. (I896c5, b/158134875)

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

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

  • LayoutModifier2 wurde in LayoutModifier umbenannt. (Id29f3)

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

  • LayoutDirectionAmbient wurde eingestellt. Um die durch die Sprache definierte Layoutrichtung zu lesen, verwenden Sie „localLayoutDirection“ in ConfigurationAmbient (I851b1).

  • PositionInParent und boundsInParent für LayoutCoordinates wurden hinzugefügt. (Icacdd, b/152735784)

  • Die zusammensetzbare Funktion „ParentData“ wurde eingestellt. Sie sollten entweder einen Modifikator erstellen, der die ParentDataModifier-Schnittstelle implementiert, oder den LayoutTag-Modifikator verwenden, wenn Sie lediglich die untergeordneten Layout-Elemente mit einem Tag versehen müssen, damit sie innerhalb des Messwertblocks erkannt werden. (I51368, b/150953183)

  • Fügen Sie „OnPositionedModifier“ und „OnChildPositionedModifier“ hinzu, um die zusammensetzbaren Funktionen „OnPositioned“ und „OnChildPositioned“ zu ersetzen. (I2ec8f)

  • Negativer Abstand in LayoutPadding nicht zulassen Für negative Positions-Offsets sollte stattdessen LayoutOffset verwendet werden. (Ifb5b1)

  • WithConstraints hat den LayoutDirection-Parameter erhalten (I6d6f7)

  • Das Flag ComposeFlags.COMPOSER_PARAM wurde auf true aktualisiert. Dadurch wird die Strategie zur Codegenerierung für das Editor-Plug-in geändert. Auf übergeordneter Ebene werden @Composable-Funktionen mit einem zusätzlichen synthetischen Parameter generiert, der an nachfolgende @Composable-Aufrufe übergeben wird, damit die Laufzeit die Ausführung ordnungsgemäß verwalten kann. Dies ist eine erhebliche funktionsgefährdende Änderung, die jedoch bei jeder genehmigten Verwendung des Editors auf Quellebene die Kompatibilität beibehalten sollte. (I7971c)

  • LayoutCoordinates wurde geändert, um providedAlignmentLines zu einem Set statt zu einer Karte zu machen und durch LayoutCoordinates stattdessen den Operator get() zum Abrufen eines Werts zu implementieren. So können Modifikatoren einen oder mehrere Werte des Satzes leichter ändern, ohne für jeden Modifikator eine neue Sammlung erstellen zu müssen. (I0245a)

  • LayoutCoordinates verfügt nicht mehr über eine Positionseigenschaft. Die Positionseigenschaft ist in Bezug auf LayoutModifier, Rotation oder Skalierung nicht sinnvoll. Stattdessen sollten Entwickler die Umwandlung von LayoutCoordinates in ein anderes mit „parentCoordinates“ und „childToLocal()“ verwenden.

    LayoutCoordinates verwendet IntPxSize für die Größeneigenschaft anstelle von PxSize. Layouts verwenden ganzzahlige Pixelgrößen für Layouts. Daher sollten alle Layoutgrößen Ganzzahlen und keine Gleitkommawerte verwenden. (I9367b)

  • Verbesserungen an der API-Oberfläche von Einschränkungen (I0fd15)

  • TextDirection.Content wurde hinzugefügt (I48f36)

  • Verschieben Sie das Symbolleisten-Menü an die gewünschte Position, um die Optionen zum Kopieren, Ausschneiden und Einfügen richtig anzuzeigen. (ID3955)

  • Fügen Sie FloatingToolbar für die TextField-Auswahl hinzu. (Ie8b07)

  • TextDirectionAlgorithm wurde in TextDirection (I75ce8) umbenannt

  • TextDirection wurde in ResolvedTextDirection umbenannt (I3ff38).

  • HapticFeedback zur Textfeldauswahl hinzufügen. (I58050)

  • Fügen Sie der TextField-Auswahl Methoden zum Kopieren, Ausschneiden und Einfügen hinzu. (Idb70b)

  • TestTag und Semantik wurden gelöscht. Verwenden Sie stattdessen Modifier.testTag und Modifier.semantics (I15ff0, b/158841414).

  • Der Paketname für Locale und LocaleList wurde von androidx.ui.text in androidx.ui.intl (I8132c) geändert.

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

  • API-Änderung: AnnotatedString.Item wurde in AnnotatedString.Range umbenannt. (I2d44d)

  • Symbolleiste für textbezogene Vorgänge hinzufügen. (I49d53)

  • Der neue LifecycleOwnerAmbient ist jetzt verfügbar. Jetzt sollte eine Aktivität, die Sie mit der Benutzeroberfläche zum Schreiben verwenden, androidx.activity.ComponentActivity (oder AppCompatActivity) erweitern. „setContent“ für „android.app.Activity“ wurde eingestellt (Idb25a, b/153141084).

  • Paketname „ui-android-text“ (androidx.text) durch „androidx.ui.text.platform“ ersetzt, um der Androidx-Richtlinie zu entsprechen. (I42711)