Benutzeroberfläche erstellen
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(Siehe API-Referenzdokumente für alle Erstellungspakete)
Letzte Aktualisierung | Stabile Version | Release Candidate | Beta-Ausgabe | Alphaversion |
---|---|---|---|---|
30. Oktober 2024 | 1.7.5 | - | - | 1.8.0-alpha05 |
Struktur
Compose ist eine Kombination aus sieben Maven-Gruppen-IDs in androidx
. Jede Gruppe enthält eine gezielte Teilmenge von Funktionen, für die jeweils eigene Release-Notes gelten.
In dieser Tabelle werden die Gruppen und Links zu den einzelnen Versionshinweisen erläutert.
Gruppe | Beschreibung |
---|---|
compose.animation | Sie können Animationen in ihren Jetpack Compose-Anwendungen erstellen, um die Nutzerfreundlichkeit zu verbessern. |
compose.compiler | @Composable-Funktionen transformieren und Optimierungen mit einem Kotlin-Compiler-Plug-in aktivieren |
compose.foundation | Erstellen Sie Jetpack Compose-Anwendungen mit vorgefertigten Bausteinen und erweitern Sie die Grundlage, um eigene Designsystem-Elemente zu erstellen. |
compose.material | Jetpack Compose-UIs mit einsatzbereiten Material Design-Komponenten erstellen Dies ist der übergeordnete Einstiegspunkt von Compose. Er wurde entwickelt, um Komponenten bereitzustellen, die denen auf www.material.io entsprechen. |
compose.material3 | Erstellen Sie Jetpack Compose-UIs mit Material Design 3-Komponenten, der nächsten Weiterentwicklung von Material Design. Material 3 umfasst aktualisierte Themen und Komponenten sowie Personalisierungsfunktionen von Material You wie dynamische Farben. Es wurde so konzipiert, dass es zum neuen visuellen Stil und zur System-UI von Android 12 passt. |
compose.runtime | Grundlegende Bausteine des Programmiermodells und der Statusverwaltung von Compose sowie die Kernlaufzeit, auf die das Compose-Compiler-Plug-in ausgerichtet ist. |
compose.ui | Grundlegende Komponenten der Compose-Benutzeroberfläche, die für die Interaktion mit dem Gerät erforderlich sind, einschließlich Layout, Zeichnen und Eingabe. |
Abhängigkeiten deklarieren
Wenn Sie eine Abhängigkeit von Compose hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.
Fügen Sie der Datei build.gradle
für Ihre App oder Ihr Modul die Abhängigkeiten für die erforderlichen Artefakte hinzu:
Cool
dependencies { implementation "androidx.compose.ui:ui:1.7.1" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.7.1") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Ihr Feedback hilft uns, Jetpack zu verbessern. Bitte teilen Sie uns mit, wenn Sie neue Probleme feststellen oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können einem vorhandenen Problem Ihre Stimme geben, indem Sie auf die Schaltfläche mit dem Stern klicken.
Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung.
Version 1.8
Version 1.8.0-alpha05
30. Oktober 2024
androidx.compose.ui:ui-*:1.8.0-alpha05
wird veröffentlicht. Version 1.8.0-alpha05 enthält diese Commits.
Neue Funktionen
In dieser Version ist die Funktion „Autofill“ hinter einem Feature-Flag verfügbar. Wir arbeiten an der Leistungsoptimierung und freuen uns über frühzeitiges Feedback zu den APIs. Die APIs werden sich voraussichtlich vor der Veröffentlichung als stabil erweisen.
- Wenn Sie Autofill aktivieren möchten, setzen Sie
ComposeUiFlags.isSemanticAutofillEnabled
inonCreate
auf „wahr“ und verwenden Sie den neuesten Compose-Snapshot. - Diese Version von Autofill unterstützt das manuelle Speichern von Anmeldedaten, die Funktion „Sicheres Passwort vorschlagen“ und die Navigation. Außerdem wird die automatische Eingabe unterstützt, wenn ein Feld, das automatisch ausgefüllt werden kann, den Fokus erhält oder wenn die automatische Eingabe über die Textsymbolleiste bei Textkomponenten ausgelöst wird. Die Komponente wird hervorgehoben, um anzuzeigen, dass die automatische Vervollständigung abgeschlossen ist.
API-Änderungen
- Ändern Sie die Autofill-Oberfläche so, dass sie der Struktur
expect
/actual
entspricht. (I22dce) - Einführung von
CompositionLocal
, mit dem sich der Farbton der Hervorhebung für die erfolgreiche Autofill-Füllung ändern lässt. (I32092) - Die
Modifier.onRectChanged
API wurde hinzugefügt. Mit dieser API können Sie die verhältnismäßige Position und Größe einesLayoutNode
zum Stamm/Fenster/Bildschirm abonnieren. Die API löst viele Anwendungsfälle im Vergleich zum vorhandenenonGloballyPositioned
-Modifikator, allerdings mit viel geringerem Aufwand. Die API verfügt über Funktionen, mit denen der Callback gemäß den Anforderungen des jeweiligen Anwendungsfalls entprallen und gedrosselt werden kann. (Id28c7, b/372765423, b/372757007, b/372994338) - Der Autofill-Manager wurde um die
commit()
- undcancel()
-APIs erweitert, mit denen Nutzer neu eingegebene Anmeldedaten speichern können. (I2da00) - Einführung einer neuen
AutofillManager
-Benutzeroberfläche, mit der sich der Autofill-Vorgang für Nutzer optimieren lässt, und einesisSemanticAutofillEnabled
-Flags zum Aktivieren dieser neuen Version von Autofill. (I9d484) - Es wurde die
Modifier.onRectChanged
API hinzugefügt. Diese API ermöglicht das Abonnieren der relativen Stamm-/Fenster-/Bildschirmposition und Größe vonLayoutNode
. Die API löst viele Anwendungsfälle, für die auch der vorhandeneonGloballyPositioned
-Modifikator verwendet wird. Sie ist jedoch mit viel weniger Overhead verbunden und bietet Funktionen zum Entfernen von Verzögerungen und zum Drosseln des Callbacks je nach Anwendungsfall. (I3c8fa) - Fügen Sie semantische Eigenschaften und Datentypen für eine erweiterte Autofill-Unterstützung hinzu. (I52c7d)
- Alle Methoden im
AnnotatedString
-Builder sind jetzt nicht mehr experimentell (Ia89c8, b/261561823)
Fehlerkorrekturen
- In die Compose-Funktion eingebettete Ansichten können jetzt Drehrad-Ereignisse empfangen, wenn sie den Fokus haben (I4d53a, b/320510084)
- Es wurde ein Problem behoben, bei dem verschiedene Ressourcentypen bei Konfigurationsänderungen nicht aktualisiert wurden (Ia9b99, b/352336694).
- Ein Problem wurde behoben, durch das
TextField
auf bestimmten älteren Sony-Geräten nicht richtig funktionierte, wenn die japanische POBox-Tastatur verwendet wurde. (Ia9b99, b/373743376) - Problem behoben, bei dem Dialogfelder unten auf dem Bildschirm statt zentriert angezeigt wurden (Ia2ec, b/373093006)
- Bei der Targeting API 35 und höher wird
decorFitsSystemWindows
für Dialogfelder nicht mehr erzwungen. (Ibc94, b/364492593) - Absturz beim Verschieben von Ebenen zwischen Fenstern behoben (z.B. Dialogfeld und Hauptinhalt) (I675ba, b/330955281)
Version 1.8.0-alpha04
16. Oktober 2024
androidx.compose.ui:ui-*:1.8.0-alpha04
wird veröffentlicht. Version 1.8.0-alpha04 enthält diese Commits.
API-Änderungen
- Fügt
DelegatableNode#onDensityChange
- undDelegatableNode#onLayoutDirectionChange
-Callbacks hinzu, um das Aktualisieren des Knotenstatus zu ermöglichen, wenn sich diese ändern (I04f3e, b/340662451). - Hier wird
WindowInfo#containerSize
hinzugefügt, um die Größe des Inhaltscontainers des aktuellen Fensters anzugeben. Diese kann mitLocalWindowInfo
abgerufen werden. (Idc38c, b/369334429, b/360343819) - Es wurde ein Fehler behoben, bei dem verschachtelte scrollbare Elemente während eines laufenden Wischvorgangs aus dem Knotenbaum entfernt wurden. Diese Knoten brechen jetzt den Wisch ab und senden das
onPostFling
-Ereignis mit der verbleibenden Geschwindigkeit korrekt. Außerdem führen wir das FlagNewNestedScrollFlingDispatchingEnabled
ein, um das Verhalten bei Regressionen zu steuern. Das Flag wird vor der Betaphase entfernt. (I05c37, b/371168883) - Einführung von
PointerInputModifierNode#touchBoundsExpansion
, mit dem sich die Touch-Grenzen eines Eingabemodifikators mit einem einzelnen Zeiger vergrößern lassen. (Iccf02, b/335339283) - Fügt
WindowInfo#containerSize
hinzu, um die Größe des Inhaltscontainers des aktuellen Fensters anzugeben. Dies kann mitLocalWindowInfo
abgerufen werden. (I27767, b/369334429, b/360343819) - Entfernen Sie
readOnly
ausTextFields
, um die Version an die stabile Foundation-Version anzupinnen. (I3aaba) - Für
Paragraph
undParagraphIntrinsics
wird jetzt eine Liste aller Anmerkungen verwendet, die auf dieAnnotatedString
angewendet wurden. Bisher gab es nur eine Liste vonSpanStyles
(I12f80).
Fehlerkorrekturen
- Aktualisierung der Behandlung von Absätzen in
AnnotatedString
. Vorher konnten Sie nur Absätze erstellen, die sich nicht überschneiden.AnnotatedString
ermöglicht jetzt vollständig überlappende Absätze, die zusammengefügt werden, und verschachtelte Absätze. In diesem Fall wird der äußere Absatz an den Grenzen des inneren Absatzes aufgeteilt und der Stil des inneren Absatzes wird mit dem Stil des äußeren Absatzes zusammengeführt (Ic9554). - Behebung eines Absturzes in
AnnotatedString
bei einerLinkAnnotation
mit einer Länge von null. (89aac6)
Version 1.8.0-alpha03
2. Oktober 2024
androidx.compose.ui:ui-*:1.8.0-alpha03
wird veröffentlicht. Version 1.8.0-alpha03 enthält diese Commits.
API-Änderungen
- Aktualisierung der Kotlin-Version auf 1.9 (I1a14c)
- Es wurde eine neue semantische Rolle namens „Karussell“ eingeführt, um das Listenverhalten in Pagern für A11Y-Dienste zu emulieren. (Id354b, b/354109776, b/239672673)
- Benennen Sie
invisibleToUser()
inhideFromAccessibility
um. Die Funktion bleibt gleich. Weitere Informationen finden Sie in der Dokumentation. (Ib43a3)
Fehlerkorrekturen
- Aktualisierung der Dokumente für den Modifikator
SensitiveContent
(Ib0442) - Ein Problem wurde behoben, durch das bestimmte allgemeine Umrissclips in Kombination mit Höhenschatten bei einigen Android-Versionen ignoriert wurden.
- Ein Problem wurde behoben, bei dem bei bestimmten Android-Versionen leere Clips angewendet wurden, wenn ein generisch geformter Clip angegeben wurde.
- Ein Fehler wurde behoben, der ausgelöst wurde, wenn der IME in einer externen Ansicht aktiv ist und die Aktion "Weiter" verwendet wurde, um den Fokus auf
ComposeView
zu setzen. Das Verhalten vonclearFocus()
entspricht dem Verhalten von Ansichten bei API < 28, bei demclearFocus()
dazu führen kann, dass die Standardansicht hervorgehoben wird. - Ein Problem wurde behoben, durch das Elemente in
LazyList
an nicht verbundenen Knoten platziert wurden. Dazu wurde die Verwaltung der Unterkomposition für verschiedene Layoutdurchläufe getrennt. - Ein Problem, bei dem die Softwaretastatur flackerte, wenn der Fokus von einer
TextField
zu einerEditText
oder einem anderen ansichtsbasierten Editor wechselte, wurde behoben. - Verschachtelte Scrollknoten senden jetzt
onPostFling
-Ereignisse richtig, nachdem sie getrennt wurden. - Allgemeine Leistungsverbesserungen
Version 1.8.0-alpha02
18. September 2024
androidx.compose.ui:ui-*:1.8.0-alpha02
wird veröffentlicht. Version 1.8.0-alpha02 enthält diese Commits.
API-Änderungen
TextOverflow.StartEllipsis
undTextOverflow.MiddleEllipsis
sind jetzt verfügbar. Damit können Sie Auslassungspunkte am Anfang oder in der Mitte der Zeile des Texts mit einer Zeile platzieren. (I38913, b/185418980)
Fehlerkorrekturen
- Fehler im Dialogfeld
dismissOnClickoutside
beheben (39a3d, b/364508685) - Schatten von Dialoginhalten dürfen nicht abgeschnitten werden (e8e2f, b/363027803)
- Fehler behoben, der beim Wechsel zwischen „Schreiben“ und „Ansicht“ bei der Fokussuche aufgetreten ist (58377, b/350534714)
Externer Beitrag
- Für
AlignmentLines
Map
werden jetzt die konkreten TypenVerticalAlignmentLine
oderHorizontalAlignmentLine
akzeptiert. (I02912) - Neue allgemeine
ByteArray.decodeToImageBitmap(): ImageBitmap
-Methode. (I83c21)
Version 1.8.0-alpha01
4. September 2024
androidx.compose.ui:ui-*:1.8.0-alpha01
wird veröffentlicht. Version 1.8.0-alpha01 enthält diese Commits.
Version 1.7
Version 1.7.5
30. Oktober 2024
androidx.compose.ui:ui-*:1.7.5
wird veröffentlicht. Version 1.7.5 enthält diese Commits.
Fehlerkorrekturen
- Probleme behoben, bei denen Höhen und Ausschnitte mit benutzerdefinierten Umrissen nicht richtig gerendert wurden.
- Behebt einen Textabsturz, der mit einem
LinkAnnotation
mit Nullbreite auftritt. (Ic1e2e) - Behebung eines Fehlers bei der Ansage in
Talkback
der Schaltfläche, wenn sie als anklickbarer Text-Composeable erstellt wurde. (I1f588)
Version 1.7.4
16. Oktober 2024
androidx.compose.ui:ui-*:1.7.4
wurde veröffentlicht. Version 1.7.4 enthält diese Commits.
Version 1.7.3
2. Oktober 2024
androidx.compose.ui:ui-*:1.7.3
wird veröffentlicht. Version 1.7.3 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem die Angabe eines generischen Umriss-Clips bei bestimmten Android-Versionen zu einer leeren Clip-Begrenzung führte.
- Ein Fehler wurde behoben, der ausgelöst wurde, wenn der IME in einer externen Ansicht aktiv ist und die Aktion "Weiter" verwendet wurde, um den Fokus auf
ComposeView
zu setzen. Das Verhalten vonclearFocus()
entspricht dem Ansichtsverhalten bei der API < 28, bei derclearFocus()
dazu führen kann, dass die Standardansicht fokussiert wird. - Ein Problem wurde behoben, bei dem eine falsche
placeOrder
für die Vorschau-Ungültigmachung verwendet wurde. Dadurch wurde auch ein Grenzfall behoben, bei dem die Vorschau-Platzierung übersprungen wurde.
Version 1.7.2
18. September 2024
androidx.compose.ui:ui-*:1.7.2
wird veröffentlicht. Version 1.7.2 enthält diese Commits.
Fehlerkorrekturen
- Verbesserte Leistung der Knoteninformationen und Semantikereignisse für Bedienungshilfen durch Entfernen des ausführlichen Tracings. (I89156, b/362530618)
ComposeView
stürzt nicht mehr ab, wenn eine außergewöhnlich große Messgröße übergeben wird (da5db, b/347036173)- Ein Problem mit dem Screenreader als Bedienungshilfe wurde behoben, bei dem keine
LiveRegion
-Ankündigungen für Schaltflächen angezeigt wurden. (f66fa7, b/348590026)
Version 1.7.1
10. September 2024
- An Android-Artefakten gibt es keine Änderungen.
-desktop
Artefakte wurden entfernt und-jvmStubs
und-linuxx64Stubs
Artefakte hinzugefügt. Keines dieser Ziele ist zur Verwendung vorgesehen. Sie dienen als Platzhalter für die Arbeit mit Jetbrains Compose.
Version 1.7.0
4. September 2024
androidx.compose.ui:ui-*:1.7.0
wird veröffentlicht.
Wichtige Änderungen seit Version 1.6.0
Wichtige Änderungen in Version 1.7.0 werden in diesem Blogpost beschrieben.
Version 1.7.0-rc01
21. August 2024
androidx.compose.ui:ui-*:1.7.0-rc01
wird veröffentlicht. Version 1.7.0-rc01 enthält diese Commits.
Wichtige Änderungen
- Das ui:ui-Modul erzwingt jetzt die Anforderung einer Mindestversion von „foundation:foundation“ auf mindestens 1.7.0-rc01. Dies soll eine Verhaltensinkompatibilität zwischen UI und Foundation in Bezug auf
NestedScrollSource
-Änderungen beheben, die zu Beginn von 1.7.0-alpha01 aufgetreten sind.
Version 1.7.0-beta07
7. August 2024
androidx.compose.ui:ui-*:1.7.0-beta07
wird veröffentlicht. Version 1.7.0-beta07 enthält diese Commits.
Fehlerkorrekturen
- Die
SemanticsNodeInteraction
-FunktionenperformTextReplacement
,performTextInput
undperformTextClearance
im Zusammenhang mit Texteingabe geben jetzt Assertion-Fehler aus, wenn sie im schreibgeschütztenTextFields
aufgerufen werden. (I4ae8f)
Version 1.7.0-beta06
24. Juli 2024
androidx.compose.ui:ui-*:1.7.0-beta06
wird veröffentlicht. Version 1.7.0-beta06 enthält diese Commits.
Version 1.7.0-beta05
10. Juli 2024
androidx.compose.ui:ui-*:1.7.0-beta05
wird veröffentlicht. Version 1.7.0-beta05 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem
TextField
bei einem Wechsel der Softwaretastatur erst dann Eingaben über die neue Tastatur annahm, wenn der Fokus verloren ging und wieder wiederhergestellt wurde. - Es wurde ein Problem behoben, bei dem Versuche, Ebeneninhalte zu speichern, beim Rendern mit
SurfaceView
-Inhalten unbeabsichtigte Nebeneffekte verursachten.
Version 1.7.0-beta04
26. Juni 2024
androidx.compose.ui:ui-*:1.7.0-beta04
wird veröffentlicht. Version 1.7.0-beta04 enthält diese Commits.
Fehlerkorrekturen
- Vermeidung von Abstürzen beim Messen sehr langer Textzeilen (z. B. 10.000 Zeichen) (8157ab)
- Deaktivieren Sie die Unterstützung für Software-Rendering für die
GraphicsLayer
API. (35ddd8) - Behebung eines Absturzes in der Ebenenpersistenzlogik. (70b13e)
- Die Optimierung der Wiederverwendung von Ebenenobjekten wurde rückgängig gemacht, da sie zu Problemen beim Rendern führte. (70b13e)
Version 1.7.0-beta03
12. Juni 2024
androidx.compose.ui:ui-*: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.ui:ui-*:1.7.0-beta02
wird veröffentlicht. Version 1.7.0-beta02 enthält diese Commits.
API-Änderungen
SemanticsProperties.Editable
wurde inIsEditable
umbenannt undSemanticsPropertyReceiver.editable
in den WertisEditable
. Die Property ist jetzt ein boolescher Wert und wird immer über Textfelder angegeben. (I8acd8)- Parameter für Benchmarks für Barrierefreiheit umbenennen (I3d440)
- Aktualisierte API für das Stilisieren von Links:
TextLinkStyles
ist jetzt Teil des KonstruktorsLinkAnnotation
und der MethodeAnnotatedString.fromHtml
(I90b2b). Außerdem wurde dasTextDefaults
aus dem Material entfernt (I5477b).
Fehlerkorrekturen
LayoutCoordinates.introducesFrameOfReference
inLayoutCoordinates.introducesMotionFrameOfReference
umbenannt, um den Zweck besser zu verdeutlichen. Die zugehörige Funktion wurde umbenannt, um Koordinaten anhand dieses Flags zu berechnen. (I3a330)
Version 1.7.0-beta01
14. Mai 2024
androidx.compose.ui:ui-*:1.7.0-beta01
wurde veröffentlicht. Version 1.7.0-beta01 enthält diese Commits.
API-Änderungen
performCustomAccessibilityActionLabelled
wurde inperformCustomAccessibilityActionWithLabel
undperformCustomAccessibilityActionWhere
inperformCustomAccessibilityActionWithLabelMatching
umbenannt. (I5387f)AnnotatedString.hasEqualsAnnotations
heißt jetzthasEqualAnnotations
(I685c0)- Die API zum Abrufen von Material-Links im Text wurde aktualisiert. Insbesondere wurden die Methoden aus der
TextDefaults
zum Erstellen von themenbezogenenLinkAnnotations
und zum Parsen von HTML mit themenbezogenen Links entfernt. Stattdessen wurde eineTextLinkStyles
-Klasse hinzugefügt, mit der die Links als Parameter für die zusammensetzbare Textfunktion gestaltet werden können. (I31b93)
Fehlerkorrekturen
- Fehlerkorrekturen für zusätzliche Anwendungsfälle beim dynamischen Hinzufügen von Zeigereingabemodifikatoren während der Ereignisse 63e1504
Version 1.7.0-alpha08
1. Mai 2024
androidx.compose.ui:ui-*:1.7.0-alpha08
wird veröffentlicht. Version 1.7.0-alpha08 enthält diese Commits.
API-Änderungen
- Unterstützung für veränderliche Formimplementierungen hinzugefügt.
Shape#createOutline
wird jetzt in Grafikebenen beobachtet. Wenn Sie Statuswerte darin lesen, werden bei einer Statusänderung Ungültigkeiten verursacht, was für eine bessere Leistung bei Formanimationen sorgt. (Id1629, b/326070216) isPositionedByParentWithDirectManipulation
wurde inintroducesFrameOfReference
umbenannt. Beachten Sie, dass dies jetzt den umgekehrten Effekt hat. Das bedeutet, dass die meistenLayoutCoordinates
standardmäßig einen Referenzrahmen einführen und das Attribut nur bei direkter Bearbeitung den Wert „false“ hat. Wenn Sie die Position nur mit Elementen abfragen möchten, die einen Bezugspunkt einführen, verwenden SiepositionInLocalFrameOfReference(...)
. OderpositionInLocalLookaheadFrameOfReference
von einemLookaheadScope
. (Ifc5f7)LookaheadScope
APIs wurden stabil gemacht (I21507)- Aktionslambda für
getScrollViewportLength
gemäß Feedback des API-Rates ändern (Ibc74a) - Die
GraphicsLayer
-Outline-APIs wurden aktualisiert, sodass sie jetzt Float-Parameter statt Int-Parameter verwenden.UnsetOffset/UnsetSize IntSize
-Sentinel-Werte wurden durch bereits vorhandene „Unspezifiziert“-Konstanten für floatbasierte Inline-Klassen für „Offset“ und „Size“ ersetzt (I2fb03, b/333863462) - Bei der Eingabe von Mausklicks während von Tests akzeptieren
MouseInjectionScope.click()
,MouseInjectionScope.doubleClick()
,MouseInjectionScope.tripleClick()
undMouseInjectionScope.longClick()
jetzt einenbutton: MouseButton
-Parameter, um sie universeller einsetzbar zu machen. Der Standardwert für alle Methoden istMouseButton.Primary
. (I31a23, b/190493367, b/261439695) onClicked
wurde inonClick
innerhalb vonLinkInteractionListener
umbenannt. (Iaa35c)- Benennen Sie
TextInclusionStrategy.isInside
inisIncluded
um. Der Rückgabetyp vonParagraph/MultiParagraph#getRangeForRect()
darf keine Nullwerte enthalten. (I51f26)
Fehlerkorrekturen
- Problem beim Erstellen langer Screenshots für scrollende Container mit
reverseScrolling=true
behoben (I7c59c)
Externer Beitrag
- Unterstützung für das Vorabladen von Elementen in verschachtelten
LazyLists
hinzugefügt (z.B. eineLazyColumn
, die verschachtelteLazyRows
rendert). Durch diese Änderung werden bei diesenLazyLists
voraussichtlich weniger Frame-Drops beim Scrollen auftreten. Standardmäßig werden die ersten beiden verschachtelten Elemente vorab abgerufen. Dieses Verhalten kann jedoch mit den neuenLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
- undLazyListPrefetchStrategy#onNestedPrefetch
-APIs gesteuert werden. (I51952)
Version 1.7.0-alpha07
17. April 2024
androidx.compose.ui:ui-*:1.7.0-alpha07
wird veröffentlicht. Version 1.7.0-alpha07 enthält diese Commits.
API-Änderungen
ClickableText
wurde verworfen. Um dem Text Links hinzuzufügen, erstellen Sie einAnnotatedString
mit einemLinkAnnotation
, das Ihrem Link entspricht, und übergeben Sie diesesAnnotatedString
an die zusammensetzbare Textfunktion. (I34d4b, b/323346994)- Einführung von
ViewConfiguration.HandwritingGestureLineMargin
für Handschriftgesten Unterstützung derJoinOrSplit
-Geste fürBasicTextField
(Ie6e13, b/325660505) FocusProperties.enter
undFocusProperties.exit
sind keine experimentellen Funktionen mehr.FocusDirection.Enter
undFocusDirection.Exit
sind keine experimentellen Funktionen mehr.FocusRequester.Cancel
ist nicht mehr experimentell (I461a1, b/261564106)- Wenn Sie Layoutkoordinaten abfragen, können Sie jetzt das Argument
excludeDirectManipulationOffset
verwenden, um den Versatz auszuschließen, der von übergeordneten Layouts festgelegt wurde, die ihre untergeordneten Elemente mitPlaceable.PlacementScope.withDirectManipulationPlacement
platziert haben. Ebenso können die Elemente in einem Layout, bei dem sich die Position der untergeordneten Elemente häufig ändert, jetzt mitwithDirectManipulationPlacement
platziert werden (z. B. Scroll, standardmäßig implementiert). Dadurch sindapproachLayout
-basierte Animationen intuitiver, da Sie jetzt unterscheiden können, welcher Offset animiert werden soll und was direkt angewendet werden soll, wenn Sie sich für die Animation entscheiden. (I60ec7) - Die Funktions-Flag für lange Screenshots wurde entfernt. (I28648, b/329128246)
LazyColumn
rendert fixierte Überschriften in langen Screenshots jetzt korrekt. (I8d239, b/329296635)NestedScroll
-Quellen „Ziehen und Ziehen“ werden durchUserInput
undSideEffect
ersetzt, um die erweiterte Definition dieser Quellen zu ermöglichen, die jetzt Animationen (Seiteneffekt) sowie Mausrad und Tastatur (UserInput
) umfassen. (I40579)ApproachLayoutModifierNode
undModifier.approachLayout
sind jetzt stabil. Das alteisMeasurementApproachComplete()
bzw.isPlacementApproachComplete()
wird durch die neuenisMeasurementApproachInProgress()
undisPlacementApproachInProgress()
ersetzt.- Die Einstellung „
intermediateLayout
“ wurde entfernt. (I3e91c) - Benenne
GraphicsLayer#buildLayer
in „record“ um, um die Methoden „begin/endRecording“ von APIs zu spiegeln, die von der Displayliste unterstützt werden, z. B.RenderNode
und „Picture“. rememberGraphicsLayer
wurde aktualisiert, umrememberObserver
zu nutzen. (I312c1, b/288494724, b/330758155)UrlAnnotation
wurde verworfen. Verwenden Sie stattdessenLinkAnnotation.Url
. Wenn Sie Material-Designs verwenden, erstellen Sie mit einemTextDefaults
-Objekt die Anmerkung mit angewendeten Material-Designs (I8d180, b/323346545).- Für Textlinks gibt es jetzt neben dem normalen Stil auch einen Stil für den gedrückten Zustand, den Hover-Zustand und den Fokus-Zustand (I5f864, b/139312671)
String.parseAsHtml
wurde inAnnotatedString.Companion.fromHtml
umbenannt. (I43dcd)- Stilargumente (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) und ein Link-Interaktions-Listener wurden der MethodeparseAsHtml
hinzugefügt. Wenn der HTML-getaggte String mit<a>
-Tags geparst wird, erstellt die Methode für jedes dieser Tags einLinkAnnotation.Url
und übergibt die Stilobjekte und den Link-Interaktions-Listener an jede Annotation. (I7c977) LinkAnnotation
verwendet jetzt die zustandsbasierten Stilargumente und einenLinkInteractionListener
. Fügen Sie diese Anmerkung demAnnotatedString
hinzu, um einen Hyperlink zu erhalten. Wenn SiefocusedState
und/oderhoveredState
übergeben, können Sie das visuelle Elementconfiguration
für Links definieren, wenn sie den Fokus haben und/oder der Mauszeiger darauf ruht. (I81ce4, b/139312671)- Für
ImeOptions.hintLocales
können keine Nullwerte mehr eingegeben werden. Wenn Sie eine leere Gebietsschemaliste übergeben möchten, verwenden SieLocaleList.Empty
. (Ic5bc4)
Fehlerkorrekturen
- Es werden fehlerhafte/beschädigte Verlaufsereignisdaten fehlerfrei verarbeitet (fehlerhafte Offset-Daten werden ignoriert).
- Behebt unerwartete Zeigerereignisse, wenn ein Zeigereingabe-Modifikator während eines aktiven Zeigereingabe-Ereignisstreams dynamisch vor einem anderen Zeigereingabe-Modifikator hinzugefügt wird (z. B. zwischen einem Hover-Ereignis und einem Hover-Ende [Maus/Stift]).
Version 1.7.0-alpha06
3. April 2024
androidx.compose.ui:ui-*:1.7.0-alpha06
wird veröffentlicht. Version 1.7.0-alpha06 enthält diese Commits.
Neue Funktionen
- Es wurde die
parseAsHtml
-Methode für Strings mit benutzerdefinierten Stilen hinzugefügt: Sie ermöglicht das Konvertieren eines mit HTML-Tags markierten Strings inAnnotatedString
. Beachten Sie, dass nicht alle Tags unterstützt werden. Aufzählungslisten können beispielsweise noch nicht angezeigt werden. (I84d3d, I30626, b/139326648) - Es wurde eine experimentelle Unterstützung für lange Screenshots in Scroll-Containern für die Nachrichtenerstellung mithilfe der offiziellen Android API (
ScrollCaptureCallback
) implementiert. Diese Funktion ist experimentell und wird derzeit möglicherweise nicht in allen Fällen korrekt verarbeitet. Aus diesem Grund ist die Funktion derzeit standardmäßig deaktiviert. Wenn Sie die Funktion aktivieren möchten, setzen Sie das FlagComposeFeatureFlag_LongScreenshotsEnabled
auf „true“. (I2b055, b/329296471)
API-Änderungen
fun ClipEntry.getMetadata()
wird inval ClipEntry.clipMetadata
geändert. (I50155)- Die Funktionen
ClipboardManager.getClipMetadata
undClipboardManager.hasClip
wurden entfernt. VerwendeclipEntry.getMetadata()
, um die Metadaten des aktuellen Clipeintrags zu lesen. Prüfen Sie auch, ob das Ergebnis vonClipboardManager.getClip
null ist, um zu sehen, ob sich in der Zwischenablage ein aktueller Clip befindet. (I50498) - Sie können jetzt
GraphicsLayer
-Objekte anplaceable.placeWithLayer()
-Funktionen übergeben (I1b22f) - Für
ClipboardManager.setClip
wird jetzt „null“ akzeptiert, um die Zwischenablage zu leeren. (I7d2e9) - Es wurden Ressourcen-IDs hinzugefügt, um Ansichten auszublenden, die als Implementierungsdetails im Build-Tool verwendet werden (I99531)
- Die
GraphicsLayer#toImageBitmap
-Sperrungsmethode wurde hinzugefügt, um das Rendern des Inhalts einer Bitmap in eineGraphicsLayer
zu unterstützen. Dies ist ein hardwaregestützter Renderingvorgang auf API-Level 22 und höher, der von über 99% aller Android-Geräte unterstützt wird. Unter Android API-Level 21 wird auf Software-Rendering zurückgegriffen. (I9e114) - Hilfsmethode zum Konvertieren einer Android-
RectF
inComposeRect
(I39925, b/325660505) - Alle
KeyboardOptions
-Parameter haben jetzt standardmäßig keinen Wert. Die MethodeKeyboardOptions.merge
wurde hinzugefügt. KeyboardOptions.autoCorrect
inautoCorrectEnabled
umbenannt und als „nullable“ (mit Nullwert zulässig) gekennzeichnet. „Null“ gibt an, dass kein Wert angegeben wurde. (Ia8ba0, b/295951492)- Die Variante „
BasicTextField(state)
“ und „BasicSecureTextField
“ verwenden jetztKeyboardActionHandler
anstelle vonKeyboardActions
, um Aktionen über die Softwaretastatur zu verarbeiten. (I58dda)
Version 1.7.0-alpha05
20. März 2024
androidx.compose.ui:ui-*:1.7.0-alpha05
wird veröffentlicht. Version 1.7.0-alpha05 enthält diese Commits.
Neue Funktionen
- Einführung der neuen
GraphicsLayer
API zur Aufzeichnung von Zeichenbefehlen in einer Anzeigeliste sowie zusätzlicher Attribute, die sich auf das Rendern der Anzeigeliste auswirken. So können Sie eine komplexe Szene in kleinere Teile unterteilen, die unabhängig voneinander aktualisiert werden können, ohne die gesamte Szene neu erstellen zu müssen. Transformationen an einerGraphicsLayer
können ohne erneutes Aufzeichnen der Anzeigeliste vorgenommen werden. Im Gegensatz zuModifier.graphicsLayer
ermöglichtGraphicsLayer
das Rendern von zusammensetzbaren Inhalten an anderer Stelle und ist nützlich bei animierten Anwendungsfällen, bei denen Inhalte in verschiedenen Szenen gerendert werden sollen.
API-Änderungen
GraphicsLayer.draw(Canvas)
ist keine öffentliche API mehr. Verwenden Sie stattdessen die ErweiterungsfunktionDrawScope.drawLayer(GraphicsLayer)
, um die Ebene zu zeichnen. (I7a7c0)restrictedConstraints()
in zwei Methoden aufteilen:fitPrioritizingWidth()
undfitPrioritizingHeight()
(I6d7fd)- Einführung des
HardwareCanvas
-Stubs für die Verwendung mit Android L (I1c3b5, b/288494724) - Aktualisieren Sie das Compose-Framework, um eine lokale
GraphicsContext
-Komposition bereitzustellen, und aktualisieren Sie die Implementierungen von Owner,DelegateableNode
unddrawWithCache
-Modifizierer, um Zugriff auf dieGraphicsContext
für den befristeten Zugriff bereitzustellen, derGraphicsLayer
-Instanzen automatisch beseitigt, wenn Modifizierer entfernt werden. (I64a2f, b/288494724) - Einführung von
InterceptPlatformTextInput
für das Schreiben von Low-Level-IME-Tests und anderen Low-Level-IME-Anwendungsfällen.PlatformTextInputTestOverride
wurde eingestellt. (I862ed, b/322680547) - Die Erweiterungsfunktion „
GraphicsLayer.setOutline(Outline)
“ wurde hinzugefügt. (Ib81f4) - Einführung des
GraphicsContext
-Funktionskonstruktors zum Erstellen einer Fabrik zum Erstellen vonGraphicsLayer
-Instanzen (Ib98d6, b/288494724) - Die
GraphicsLayer
API wurde freigegeben, um Entwicklern mehr Flexibilität beim Erfassen von Zeichenbefehlen zu bieten, die an anderer Stelle verwendet werden können. Außerdem können auf das Endergebnis verschiedene visuelle Effekte angewendet werden. (I80245, b/288494724) - Einführung von
Paragraph#getRangeForRect
, das einen Textbereich zurückgibt, der von einem bestimmten Rechteck abgedeckt wird. (Iee516, b/325660505) - Die experimentelle Überschreibung von
BasicText
durch das ArgumentonLinkClicked
wurde entfernt. Eine Ersatz-API für die Unterstützung von Hyperlinks wird in Zukunft folgen. (I107d5)
Fehlerkorrekturen
- Die erwartete/tatsächliche API-Definition
GraphicsLayer
wurde hinzugefügt, um die Erfassung und Wiedergabe von Zeichenbefehlen mit optionalen visuellen Effekten und Transformationen zu unterstützen. Einführung derGraphicsContext
-Oberfläche zur Verwaltung von Grafikabhängigkeiten, einschließlich Erstellung und Verwaltung vonGraphicsLayer
-Instanzen. (I4a8d6, b/288494724) - Ein Interoperabilitätsproblem mit der 1D-Fokussuche wurde behoben, bei dem der Fokus in einer
ComposeView
hängen blieb, die in andere Ansichten eingebettet war. (I08fd4)
Externer Beitrag
LocalLifecycleOwner
wurde von der Compose-Benutzeroberfläche zulifecycle-runtime-compose
verschoben, damit die Compose-basierten Hilfs-APIs auch außerhalb der Compose-Benutzeroberfläche verwendet werden können. Vielen Dank an Jake Wharton für den Beitrag. (I6c41b, b/328263448)- Stellen Sie für alle schiefwinkligen Ausrichtungsuntertypen konsistent Schieberegler für die Voreingenommenheit bereit. (I69f0f, b/328088992)
Version 1.7.0-alpha04
6. März 2024
androidx.compose.ui:ui-*:1.7.0-alpha04
wurde veröffentlicht. Version 1.7.0-alpha04 enthält diese Commits.
API-Änderungen
- Unterstützung der Eingabe per Eingabestift für BasicTextField2 auf Geräten ab Android U (I002e4)
- In dieser CL fügen wir die semantische Aktion
GetScrollViewportLength
hinzu, damit wir Informationen zu den Komponenten, die in Compose gescrollt werden, an das A11Y-System weiterleiten können. Diese CL gilt auch für die Verwendung dieser Property in scrollbaren Foundation-Listen. (Ic5fa2) FocusRequester.createRefs
ist jetzt stabil (I4d92c, b/261436820).- Einführung von
DelegatableNode.requireView()
, damit Modifikatorknoten die aktuelle Android-View
abrufen können, ohne eine Komposition lokal zu lesen. (I40768) - Neue API
Path.reverse()
zum Umkehren der Richtung eines Pfads (I36348) hintLocales
wurde zuKeyboardOptions
hinzugefügt, damitTextFields
IMEs mit bestimmten Gebietsschemata Hinweise zur Voreinstellung einer bevorzugten Sprache geben kann.- Stellen Sie die
platformLocale
-Eigenschaft vonLocale
bereit, die das zugrunde liegende Plattformobjekt zurückgibt, z.B.java.util.Locale
. (I921c6)
Version 1.7.0-alpha03
21. Februar 2024
androidx.compose.ui:ui-*:1.7.0-alpha03
wird veröffentlicht. Version 1.7.0-alpha03 enthält diese Commits.
API-Änderungen
- Es gibt jetzt
ContextualFlowRow
und erweiterteFlowRow
/Column
mit MaxLines und Overflow. Wir freuen uns, Ihnen Verbesserungen an den experimentellenFlowRow
undFlowColumn
vorstellen zu können. Sie unterstützen jetzt die Optionen „maxLines“ und „overflow“. Außerdem gibt es die neuenContextualFlowRow
undContextualFlowColumn
. Dieses Update wurde entwickelt, um leistungsoptimierte Komponenten bereitzustellen.ContextualFlow*
eignet sich hervorragend für eine große Anzahl von Elementen, wobei eine kleinemaxLines
-Konfiguration und dynamische Schaltflächen vom Typ „Mehr anzeigen +N“ verwendet werden.FlowRow
undFlowColumn
eignen sich hervorragend für eine kleine Anzahl von Elementen (weniger als 100 Elemente). Wichtig: Wenn Sie das bestehende Verhalten inFlowRow
oderFlowColumn
beibehalten möchten, bei dem alle Elemente unabhängig davon, ob sie zur Maximalgröße der Querachse passen, zusammengehören, setzen Sieoverflow
während der Initialisierung aufFlowRowOverflow.Visible
oderFlowColumnOverflow.Visible
. UnterContextualFlowRowSample
undFlowRowSample
finden Sie Beispiele für diese neuen Funktionen in der Praxis. (Ib9135, b/293577082) - Fügen Sie das Semantikattribut
maxTextLength
hinzu, das für Textfelder festgelegt werden soll, mit denen die maximal zulässige Anzahl von Zeichen gefiltert werden soll. (I24d9f, b/170648072) - Der
Modifier.inspectable
-Wrapper wurde eingestellt. Diese API führt zu mehr Ungültigstellungen des Modifiers als nötig. Daher wird ihre Verwendung nicht mehr empfohlen. Entwicklern wird empfohlen, dieinspectableProperties()
-Methode aufModifierNodeElement
zu implementieren, wenn sie Tools Modifikatoreigenschaften zur Verfügung stellen möchten. (Ib3236) - Neuer Konstruktor für
PopupProperties
, der vollständige Kontrolle überWindowManager.LayoutParams
-Flags ermöglicht. (Ibb33e, b/312485503) DelegatableNode.requireLayoutCoordinates()
wurde eingeführt, um den aktuellenLayoutCoordinates
einerModifier.Node
abzurufen, ohneonPlaced
überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Ia8657)- Einführung von
DelegatableNode.currentLayoutCoordinates
als Möglichkeit, die aktuelleLayoutCoordinates
einesModifier.Node
abzurufen, ohneonPlaced
überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Iaebaa) BasicTextField2
und die zugehörigen APIs im Paketandroidx.compose.foundation.text2
werden zuandroidx.compose.foundation.text
verschoben. (I9f635)- Es wurde eine neue
ApproachLayoutModifierNode
API hinzugefügt, mit der benutzerdefinierte Annäherungslogik in einem expliziten Modifier-Knoten erstellt werden kann. Außerdem wurde eine neue experimentelleDeferredTargetAnimation
API für Animationen hinzugefügt, deren Ziel bei der Instanziierung unbekannt ist. (I60745) - Neue
Path
APIs, mit denen die Richtung eines Pfads abgefragt und Konturen aus einemPath
extrahiert werden können. (I63d04) PathHitTest
undPath.contains(Offset)
wurden hinzugefügt, um zu prüfen, ob einePath
einen bestimmten Punkt enthält. (I3b218)- Die
TextLayoutResult
stellt jetzt die MethodegetLineBaseline(lineIndex)
bereit. So können Sie zusätzlich zu den vorhandenen praktischen EigenschaftenfirstBaseline
undlastBaseline
die Baseline einer beliebigen Textzeile lesen. (Ide4e8, b/237428541) - Es wurde eine Methode hinzugefügt, mit der nur die Anmerkungen von zwei
AnnotatedStrings
verglichen werden können. (I32659)
Fehlerkorrekturen
- Ein Problem mit der Abwärtskompatibilität von
SemanticsPropertyReceiver.performImeAction
undSemanticsActions.PerformImeAction
wurde behoben. (Id0528, b/322269946)
Version 1.7.0-alpha02
7. Februar 2024
androidx.compose.ui:ui-*:1.7.0-alpha02
wird veröffentlicht. Version 1.7.0-alpha02 enthält diese Commits.
API-Änderungen
- Ein Problem mit der Binärkompatibilität von
SemanticsPropertyReceiver.performImeAction
wurde behoben. (I65865, b/322269946) - Der
PopupProperties
-Konstruktor, der einenusePlatformDefaultWidth
-Parameter verwendet, ist nicht mehr experimentell. (I8f8d2) - Es wurde eine Überladung von
ComposeTestRule.waitUntil
hinzugefügt, die eine Stringbeschreibung der Bedingung annimmt, die in die Zeitüberschreitungsmeldung aufgenommen werden soll. (I9413e) - Neue Semantics API
unset()
zum Entfernen von Semantics-Properties, die in derselben Modifikatorkette hinzugefügt wurden. Neue Semantik-PropertyisOpaque
. (I8c583, b/317966058, b/246056649) originalEventPosition
wurde aus der Kopiermethode in der öffentlichen API vonPointerInputChange
entfernt. (I7bead)
Fehlerkorrekturen
- Ein A11Y-Fehler wurde behoben, durch den Elemente, die keine Tabs oder Optionsfelder sind, angeklickt werden konnten, wenn sie ausgewählt waren. (I2181c)
VelocityTracker
enthält jetzt die Korrektur, durch die Punkte standardmäßig hinzugefügt werden. Die Fehlerbehebung kann immer noch deaktiviert werden, indem duVelocityTrackerAddPointsFix
auf „false“ setzt, wenn Probleme auftreten. (Ib3877, b/269487059)- Behebung der Abwärtsinkompatibilität von Binärdateien in
TextStyle
undParagraphStyle
(I179f0, b/320819734)
Externer Beitrag
- Neuer
DialogProperties
-Konstruktor ohne plattformspezifische Parameter hinzugefügt. (I45829) - Neuer
PopupProperties
-Konstruktor ohne plattformspezifische Parameter hinzugefügt. (I9a038)
Version 1.7.0-alpha01
24. Januar 2024
androidx.compose.ui:ui-*:1.7.0-alpha01
wird veröffentlicht. Version 1.7.0-alpha01 enthält diese Commits.
API-Änderungen
ClipboardManager
wurde umClipEntry
undClipMetadata
erweitert, um beliebige Inhalte wie Bilder zu unterstützen.- Fügen Sie
ui-test
dieDeviceConfigurationOverride
API hinzu, um das Verhalten der zu testenden Inhalte lokal zu überschreiben, z. B. um eine verfügbare Größe, Sprache, Layoutrichtung, Schriftgröße oder ein Thema anzugeben.
Version 1.6
Version 1.6.8
12. Juni 2024
androidx.compose.ui:ui-*:1.6.8
wurde veröffentlicht. Version 1.6.8 enthält diese Commits.
Fehlerkorrekturen
- Inkonsistenzen bei der Schriftskalierung wurden behoben, wenn die Schriftskalierung kleiner als die niedrigste definierte Tabelle war. In diesem Fall wird jetzt zwischen der linearen 1:1-Skala und der niedrigsten definierten Tabelle interpoliert, sodass die Schriftgröße mit zunehmender Skala monoton ansteigt. (Icbae3)
Version 1.6.7
1. Mai 2024
androidx.compose.ui:ui-*:1.6.7
wird veröffentlicht. Version 1.6.7 enthält diese Commits.
Version 1.6.6
17. April 2024
androidx.compose.ui:ui-*:1.6.6
wurde veröffentlicht. Version 1.6.6 enthält diese Commits.
Fehlerkorrekturen
- Ein seltener Absturz von
BasicTextField
wurde behoben.
Version 1.6.5
3. April 2024
androidx.compose.ui:ui-*:1.6.5
wird veröffentlicht. Version 1.6.5 enthält diese Commits.
Version 1.6.4
20. März 2024
androidx.compose.ui:ui-*:1.6.4
wird veröffentlicht. Version 1.6.4 enthält diese Commits.
Version 1.6.3
6. März 2024
androidx.compose.ui:ui-*:1.6.3
wurde veröffentlicht. Version 1.6.3 enthält diese Commits.
Version 1.6.2
21. Februar 2024
androidx.compose.ui:ui-*:1.6.2
wird veröffentlicht. Version 1.6.2 enthält diese Commits.
Version 1.6.1
Am 7. Februar 2024 wird androidx.compose.ui:ui-*:1.6.1
veröffentlicht. Version 1.6.1 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem mit der Abwärtskompatibilität von
SemanticsPropertyReceiver.performImeAction
undSemanticsActions.PerformImeAction
wurde behoben. (Ie0bb2, b/322269946) - Bei Layouts wird jetzt ein Fehler ausgegeben, wenn eine unnormal große Größe zurückgegeben wird. Diese Art von Fehler tritt normalerweise auf, wenn für die Messung direkt Höchstgrenzwerte verwendet werden, ohne nach
Constraints.Infinity
zu suchen. Mit dieser Prüfung können Entwickler Probleme mit dem Layout mit der falschen Größe finden, anstatt in einem Layout, das es enthält. (I339a9)
Version 1.6.0
24. Januar 2024
androidx.compose.ui:ui-*:1.6.0
wird veröffentlicht. Version 1.6.0 enthält diese Commits.
Version 1.6.0-rc01
10. Januar 2024
androidx.compose.ui:ui-*:1.6.0-rc01
wird veröffentlicht. Version 1.6.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Die Implementierung von Vektorgrafiken wurde optimiert, um die Leistung zu verbessern, indem zusätzliche Neuzusammensetzungen minimiert werden.
Version 1.6.0-beta03
13. Dezember 2023
androidx.compose.ui:ui-*:1.6.0-beta03
wird veröffentlicht. Version 1.6.0-beta03 enthält diese Commits.
Neue Funktionen
- Es ist jetzt möglich, eine
LayoutCoordinates
zu lösen, ohne dass der Knoten gelöst wird. Achten Sie im Layout Inspector für das Verfassen darauf (If693).
Fehlerkorrekturen
PlatformImeOptions
ist jetzt eine konkrete Klasse anstelle einer Schnittstelle. (If40a4)- Behebung von zusätzlichen Downstream-Neuzusammensetzungen, die dadurch verursacht wurden, dass
LocalSoftwareKeyboardController
undLocalTextInputService
jedes Mal neue Werte zugewiesen wurden, wenn eine Wurzel neu zusammengesetzt wurde. (I42190, b/310510985)
Version 1.6.0-beta02
29. November 2023
androidx.compose.ui:ui-*:1.6.0-beta02
wird veröffentlicht. Version 1.6.0-beta02 enthält diese Commits.
Version 1.6.0-beta01
15. November 2023
androidx.compose.ui:ui-*:1.6.0-beta01
wird veröffentlicht. Version 1.6.0-beta01 enthält diese Commits.
API-Änderungen
- Der
DragAndDropTarget
-Modifikator nimmt jetzt die empfangeneDragAndDropTarget
explizit auf und hat ein Lambda, um eine Drag-and-drop-Sitzung zu aktivieren. Es gibt jetzt zwei Standardfunktionen für eineDragAndDropModifierNode
. Eine für den Empfang von Übertragungen und eine für die Übertragung von Daten (I69481) maximumFlingVelocity
wird jetzt als Float dargestellt. Die Dokumentation wurde aktualisiert, um klarere Angaben zur EinheitmaximumFlingVelocity
zu machen. (I8adc7)onDragAndDropStart
in derDragAndDropModifierNode
-Fabrik wurde inacceptDragAndDropTransfer
umbenannt.Der ModifikatoracceptsDragAndDropTransfer
wurde dem ModifikatordragAndDropTarget
hinzugefügt, um Änderungen aus einer Drag-and-drop-Sitzung zu akzeptieren. Diese Lambda-Funktion gibt einen gültigenDragAndDropTarget
zurück, wenn sie an einer Drag-and-drop-Sitzung interessiert ist. Andere Lambdas zur Verarbeitung von Drag-Ereignissen wurden durch diese ersetzt. Außerdem wurde eineDragAndDropTarget
-Factory-Funktion hinzugefügt, um Drag-and-drop-Sitzungen zu empfangen (Iebf3a).DragAndDropInfo
wurde als Typ entfernt.DragAndDropModifierNode.drag
nimmt jetzt Parameter fürtransferData
, die Größe der Dekoration und die Drag-DekorationDrawScope
lambda an.DragAndDropTarget
hat Methoden für bestimmte Drag-and-drop-Ereignisse anstelle einer einzelnen abstrakten Methode.onDragAndDropEvent
in der Standardfunktion für eineDragAndDropModifierNode
wurde inonDragAndDropStart
umbenannt, um besser zu verdeutlichen, dass die angegebeneDragAndDropTarget
nur für eine bestimmte Drag-and-drop-Sitzung gültig ist.Die
DragAndDropEventType
wurde entfernt (I645b1)PlatformTextInputModifierNode.runTextInputSession
wurde inestablishTextInputSession
umbenannt. (I03cd0)Die Namen der API für befahrbare Knoten wurden verbessert, um sie verständlicher zu machen. (Ia4474)
Ersetzen Sie
OriginalText
durchTextSubstitution
. (Ifa5a8)PlatformTextInputModifierNode.textInputSession
wurde inrunTextInputSession
umbenannt. (Ie9c6b)Die untergeordneten Elemente von
SubcomposeLayout
(und Layouts wieLazyColumn
, die darauf basieren) werden zur späteren Wiederverwendung beibehalten und gelten als deaktiviert. Es wurde eine neueassertIsDeactivated()
-Test-API eingeführt, um solche Knoten zu testen. Die restlichen Test-APIs filtern deaktivierte Knoten standardmäßig heraus. (I2ef84, b/187188981)FocusDirection.In
undFocusDirection.Out
wurden entfernt. Verwenden Sie stattdessenFocusDirection.Enter
undFocusDirection.Exit
. (I2f660)Material
SwipeToReveal
APIs (für Karten und Chips) nutzen jetzt eine slotbasierte API (wie von Compose empfohlen) anstelle von data class-basierten Instanzen, um diese Slots zu erstellen. Dies ist eine gravierende Änderung. In der Demo und im Beispielcode finden Sie Beispiele zur Verwendung der neuen API. (Ia8943)Der Konstruktor von
FontStyle(int)
wurde verworfen. Verwenden Sie stattdessenFontStyle.Normal
oderFontStyle.Italic
. (I66610)Die
FontScalable
-Schnittstelle wurde inFontScaling
(Ie804a) umbenannt.
Fehlerkorrekturen
- Wenn kein Texteditor den Fokus hat, wird die Softwaretastatur nicht mehr über
SoftwareKeyboardController.show()
angezeigt. (I2165a, b/301477279) - Hardwaretaste-Ereignisse vom Typ „Hoch“ für Tasten, die in derselben Eingabeansicht kein „Nieder“-Ereignis erhalten haben, werden jetzt ignoriert. (Ib37b4, b/305518328)
- Unterstützung für den Renderer für den Farbverlauf „Sweep Gradient“ in
ArcLine
hinzufügen (I4d5bb) - Implementieren Sie „equals“ und „hashcode“ für
PageSize.Fixed
. (Ie3ede, b/300134276) - Behebung eines Binärkompatibilitätsproblems bei der Änderung des Fensterabstands (Iee695)
- Entfernen Sie die Material Core-Ebene für Material3-Chips/-Schaltflächen, da die Mikrobenchmarks ohne sie eine bessere Leistung zeigen. (I55555)
TestDispatcher
s, die alseffectContext
an Compose-Tests übergeben werden, werden jetzt zum Erstellen der Test- und Frame-Uhren verwendet. (Ia7178)
Version 1.6.0-alpha08
18. Oktober 2023
androidx.compose.ui:ui-*:1.6.0-alpha08
wird veröffentlicht. Version 1.6.0-alpha08 enthält diese Commits.
API-Änderungen
- Bei
Modifier.dragAndDrawSource
wurde das LambdaonDrawDragShadow
indrawDragDecoration
umbenannt und beiDragAndDropInfo
wurde der Größeparameter indragDecorationSize
umbenannt. (Id0e30, b/303904810) - Verwenden Sie
SemanticsNodeInteraction.isDisplayed()
undSemanticsNodeInteraction.isNotDisplayed()
, um zu prüfen, ob ein übereinstimmender Knoten sichtbar ist, ohne eine Behauptung dazu aufzustellen. (I2c196, b/302100809) - Es wurde ein spezieller
Unspecified
-Wert für die FelderTextAlign
,TextDirection
,Hyphens
undLineBreak
vonParagraphTextStyle
eingeführt, umnull
zu ersetzen. Da es sich bei diesen Klassen um Inline-Klassen handelt, vermeiden wir das Boxing primitiver Typen, indem wir die Option "Nullwerte zulässig" durch "Unangegeben" ersetzen. Konstruktoren, Getter und andere Methoden inTextStyle
und im Absatzstil wurden aktualisiert, damit die genannten Parameter als Nicht-Null-Typen akzeptiert werden. (I4197e, b/299490814) - Fügen Sie eine
GoogleFont
-Überladung zum Lesen einerGoogleFont
aus XML hinzu. (If8f59) LoremIpsum
PreviewParameterProvider
wurde zu einem offenen Kurs. (I41bf5, b/266918816, b/300116360)
Fehlerkorrekturen
FontFamilyResolver
verwendet jetztDispatchers.Main
für Cache-Verwaltungskoroutinen. (Ie8dd9)AndroidViewBinding
entfernt jetzt synchronFragment
-Instanzen, die durch Einbeziehung einesFragmentContainerView
in dein Layout in das Layout vononRelease
mithilfe voncommitNow
(anstelle des zuvor verwendetencommit
) aufgebläht wurden. Dadurch werden Probleme mit der Methode der Live-Bearbeitung behoben, bei der die Komposition bei Änderungen ersetzt wird. (I58fbf)
Version 1.6.0-alpha07
4. Oktober 2023
androidx.compose.ui:ui-*:1.6.0-alpha07
wird veröffentlicht. Version 1.6.0-alpha07 enthält diese Commits.
API-Änderungen
- Einführung von
PlatformTextInputMethodTestOverride
zum Schreiben von Tests für benutzerdefinierte Texteditoren. (Id159b) - Es werden die Modifikatoren
dragAndDropSource
zum Starten von Drag-and-drop-Sitzungen unddragAndDropTarget
zum Empfangen von Drag-and-drop-Sitzungen hinzugefügt. (Ib7828, b/286038936) - Die Sammlungen
ColorList
undColorSet
wurden hinzugefügt, bei denen Zuweisungen vermieden werden. (I744bd) - Das temporäre Flag
DisableNonLinearFontScalingInCompose
wurde hinzugefügt, um die nicht lineare Schriftskalierung zu deaktivieren. Legen Sie in Ihren TestsDisableNonLinearFontScalingInCompose = true
fest, wenn Sie Zeit für die Bereinigung benötigen. Dieses Flag wird in Compose 1.6.0-beta01 entfernt. (Ic9486)
Fehlerkorrekturen
- Optimiertes Parsen von XML-Vektor-Drawables. (Ibb015)
Version 1.6.0-alpha06
20. September 2023
androidx.compose.ui:ui-*:1.6.0-alpha06
wird veröffentlicht. Version 1.6.0-alpha06 enthält diese Commits.
API-Änderungen
- Weitere Optimierungen der Materialsymbole. (I3e08d)
- Es wurde die Möglichkeit hinzugefügt, den Modifikatorbaum nach oben und unten zu durchsuchen, um ähnliche Knoten zu finden. (I2d234)
- Dem
focusRestorer()
-Modifikator wurde deronRestoreFailed()
-Callback hinzugefügt (Ie1d43) - androidx-Anmerkungen wurden verschiedenen Grafik-APIs hinzugefügt, um
ColorInt
,FloatRange
,IntRange
,Size
und mehr anzugeben. (Id65c8, b/290950582) showSystemUi=true
zurPreviewScreenSizes
-Definition hinzufügen (Ib61d3)
Ä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 in den Best Practices für die Schriftskalierung. (I11518)
Version 1.6.0-alpha05
6. September 2023
androidx.compose.ui:ui-*:1.6.0-alpha05
wird veröffentlicht. Version 1.6.0-alpha05 enthält diese Commits.
API-Änderungen
- Aktivieren Sie die Inhaltserfassung in
AndroidComposeViewAccessibilityDelegateCompat
. (Ib2969) - Die Wischgeschwindigkeit in Ansichtskomponenten wie
ScrollView
undRecyclerView
ist aufViewConfiguration.ScaledMaximumFlingVelocity
begrenzt. Compose enthält jetzt eine eigene Version vonmaximumFlingVelocity
, die jetzt aufDraggable
angewendet wird. (Ibf974) - Es wird ein initiales Scaffolding hinzugefügt, um Plattform-Drag-and-drop-APIs zu unterstützen. (If84ce)
deviceId
zuRotaryScrollEvent
hinzufügen (Iba3bf)- Die
ui-tooling
Devices API wurde um neuere Geräte erweitert (Ib25b4)
Version 1.6.0-alpha04
23. August 2023
androidx.compose.ui:ui-*:1.6.0-alpha04
wurde veröffentlicht. Version 1.6.0-alpha04 enthält diese Commits.
API-Änderungen
- Es wurde eine Methode hinzugefügt, mit der
ReusableComposition
deaktiviert werden kann. Dabei werden Beobachtungen entfernt, die Knoten bleiben jedoch erhalten. Die deaktivierte Zusammensetzung kann durch Aufrufen vonsetContent
wieder aktiviert werden. (Ib7f31) ReusableComposition
-Schnittstelle zur Verwaltung des Lebenszyklus und der Wiederverwendung von Unterzusammensetzungen hinzugefügt. (I812d1, b/252846775)Modifier.focusGroup
wurde zu stabilen APIs hochgestuft. (I7ffa3)- Verschiedene Grafik-APIs wurden androidx-Anmerkungen hinzugefügt, um
ColorInt
,FloatRange
,IntRange
,Size
und mehr anzugeben. (I70487, b/290950582) - Die
ColorFilter
API wurde um konkrete Unterklassentypen ergänzt, um die Prüfbarkeit von Parametern zu verbessern. (I5fe29) - Einführung der Wear-Tooling-Vorschaubibliothek zur Auflistung gültiger Wear-Geräte, die für UI-Vorschauen verwendet werden können (Ib036e)
- Die
FontScalable
-Oberfläche wurde erstellt, um die Schriftskalierung der Density-Oberfläche zu steuern. (I2cf3f)
Version 1.6.0-alpha03
9. August 2023
androidx.compose.ui:ui-*:1.6.0-alpha03
wird veröffentlicht. Version 1.6.0-alpha03 enthält diese Commits.
API-Änderungen
- Neuer Typ von Ein-/Ausblendungsübergang, bei dem die Inhalte während der Ein-/Ausblendungsanimation anhand der Größe des animierten Containers skaliert werden.
LookaheadScope
Die Funktionen und die Benutzeroberfläche von „Komposable Fun“ sind jetzt stabil. (Ifb2ce) - Unterstützung für die Konfiguration von
privateImeOptions
hinzugefügt (Idb772)
Fehlerkorrekturen
PopupPositionProvider.calculatePosition
aktualisiert jetzt automatisch die Position des Pop-ups, wenn sich der in der Berechnung gelesene Status ändert. (I676a1, b/292257547)- Textfelder, die die Tastatur anzeigen und bearbeitbar sind, wenn
readOnly
auf „true“ gesetzt ist, wurden korrigiert. Außerdem wurde behoben, dass die Tastatur nicht angezeigt wurde, wennreadOnly
während der Fokussierung von „wahr“ zu „falsch“ geändert wurde. (I34a19, b/246909589) - Erweiterte Anwendung globaler Behauptungen in UI-Tests. (I1f90d)
Version 1.6.0-alpha02
26. Juli 2023
androidx.compose.ui:ui-*:1.6.0-alpha02
wird veröffentlicht. Version 1.6.0-alpha02 enthält diese Commits.
API-Änderungen
- Es wurde eine Schnittstelle für die Dienstsuche hinzugefügt, die von Implementierern von Kompositionen implementiert werden kann. Diese ermöglicht eine Implementierung von Kompositionen, die die Suche an einen anderen Kompositionsdelegatdienst auf die ursprüngliche Komposition delegiert. Diese Funktion sollte nicht direkt aufgerufen werden. Sie dient dazu, experimentelle APIs in der Laufzeit zu erstellen, die in verpackten Versionen des Composers wie dem UI-Modul zu finden sind. (I296b9)
- Die
PlatformTextInput*
API wurde komplett neu gestaltet. (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardController
undLocalSoftwareKeyboardController
sind nicht mehr experimentell.LocalSoftwareKeyboardController
ist jetzt auch eine richtigeCompositionLocal
. (I4c364)LookaheadLayout
undLookaheadLayoutScope
wurden vor einigen Releases eingestellt und werden jetzt entfernt. Die Ersatz-APIs sindLookaheadScope
, die mit jedem Layout funktionieren. (I12ac3)SemanticsNodeInteraction.requestFocus
wurde hinzugefügt, um den Fokus in Tests einfacher und leichter anfordern zu können. (Ie8722)- Es wurden experimentelle APIs zum Registrieren globaler Behauptungen hinzugefügt, die in Zukunft von Test-Frameworks verwendet werden können. (I12d77)
Fehlerkorrekturen
- Der erste Aufruf des
update
-Callbacks vonAndroidView
wird jetzt zurückgestellt, bis die Ansicht angehängt wird. Er wird nicht ausgeführt, wenn die Komposition angewendet wird, die dasAndroidView
einführt. Dadurch wird ein Fehler behoben, bei dem derupdate
-Callback nicht ungültig gemacht wurde, wenn ein gelesener Status sofort durch einen Effekt geändert wurde. (Ie9438, b/291094055)
Version 1.6.0-alpha01
21. Juni 2023
androidx.compose.ui:ui-*:1.6.0-alpha01
wurde veröffentlicht. Version 1.6.0-alpha01 enthält diese Commits.
Neue Funktionen
- Lookahead wird in
LazyList
unterstützt. So kannLazyList
im lookahead-Pass alle Animationen (z. B. die Animation für das Platzieren von Elementen,AnimatedVisibility
usw.) überspringen und die Größe und Position des lookahead-Elements für alle untergeordneten Elemente berechnen. Nach dem Lookahead-Pass können untergeordnete Elemente vonLazyList
unabhängig voneinander animiert werden, wie im Lookahead-Pass dargestellt.
Verhaltensänderung: „includeFontPadding“ ist in „Compose“ jetzt standardmäßig auf „false“ gesetzt
includeFontPadding
ist jetzt standardmäßig in der Funktion „Schreiben“ auf „falsch“ (21d806) gesetzt.
includeFontPadding
ist ein älteres Attribut, mit dem festgelegt wird, ob über der ersten und der letzten Zeile des Texts ein zusätzlicher Abstand hinzugefügt werden soll, um Zeichen aufzunehmen, die über oder unter den Textgrundlinien liegen.
Wenn Sie diese Version von „Compose“ aktualisieren, wird die Darstellung aller Texte in der Benutzeroberfläche geändert, da das zusätzliche Padding über der ersten und letzten Zeile jedes angezeigten Textes entfernt wird.
Je nach Ihren UI-Anforderungen und den verwendeten Schriftschnitt-Messwerten sollten die Änderungen minimal sein. Es kann jedoch zu Problemen kommen, z. B.: - Fehlerhafte Screenshot-Tests. Beheben Sie bei Bedarf die Probleme mit der Benutzeroberfläche und generieren Sie die Golden Images neu. – Der Text ist leicht falsch ausgerichtet. Entfernen Sie alle benutzerdefinierten negativen Ränder oder fügen Sie bei Bedarf Ränder hinzu.
Du kannst includeFontPadding
aktivieren, indem du für jeden Text PlatformTextStyle
verwendest:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
Du kannst includeFontPadding
für alle deine Texte aktivieren, indem du deine Material-Stile konfigurierst. Die Parameternamen unterscheiden sich zwischen M2 und M3.
val Typography = Typography(
body1 = TextStyle(
fontFamily = /* … */,
fontSize = /* … */,
platformStyle = PlatformTextStyle(
includeFontPadding = false
)
/* … */
)
)
MaterialTheme(
typography = Typography,
/* … */
)
Weitere Informationen zu Compose includeFontPadding
finden Sie in der Entwicklerdokumentation und in diesem Blogpost.
Wenn Sie Probleme oder Fehler im Zusammenhang mit dieser Änderung feststellen, melden Sie sie über den Issue Tracker.
API-Änderungen
InputConnection#requestCursorUpdates
(I0c69b) unterstützenFocusRequester.saveFocusedChild
undFocusRequester.restoreFocusedChild
hinzugefügt (Ic557e, b/272302679, b/275157318)- Fügen Sie den Typ
ResourceResolutionException
hinzu, um Throwables zu verpacken, die beim Versuch, Bitmap-Assets zu laden, geworfen werden, mit einer Beschreibung des Asset-Pfads, der nicht geladen werden konnte. (I19f44, b/230166331, b/278424788) - Optimierte Zugänglichkeit für Leistung und Speicherzuweisung. (Iede48)
- Es wurden semantische Eigenschaften und Aktionen hinzugefügt, um die Textübersetzung zu unterstützen. (I4a6bc)
- Neues Attribut in
IntrinsincMeasureScope
und seinen Implementierungen (z.B.MeasureScope
), das angibt, ob der aktuelle Messdurchlauf ein Vorschaudurchlauf ist. (I7a812) - Die
DrawScope
API wurde aktualisiert, um das Rendern auf eine andere Leinwand mit alternativer Dichte/Layoutrichtung und Größe umzuleiten. DrawContext
wurde aktualisiert, um die Konfiguration der Dichte und Layoutrichtung zu unterstützen und den Canvas konfigurierbar zu machen. (Ie1f9b, b/225408150)Paragraph#fillBoundingBoxes
wurde hinzugefügt, um Zeichenbegrenzungsrahmen zu berechnen. (If30ee)- Es wurden einige gängige
MultiPreviews
(Ia5a27) hinzugefügt.
Fehlerkorrekturen
- Die
FocusTargetModifierNode
-Benutzeroberfläche wurde hinzugefügt, mit der benutzerdefinierteFocusTarget
erstellt werden können. (I9790e) - Die
fallback*
-Parameter imTextMeasurer
-Konstruktor wurden indefault*
umbenannt. (I940a5) SemanticsPropertyReceiver.performImeAction
wurde inonImeAction
undSemanticsActions.PerformImeAction
inOnImeAction
umbenannt. (I8e841)- Es wurde das Rad hinzugefügt, um beim verschachtelten Scrollen (insbesondere in
NestedScrollConnection
) zwischen dem Scrollen und dem Ziehen mit der Maus zu unterscheiden. (Ie57e4) - Die
asComposePaint
API wurde hinzugefügt, umtoComposePaint
zu ersetzen, da das zurückgegebene Objekt die ursprünglicheandroid.graphics.Paint
umschließt (I22b4c) SemanticsProperties.imeAction
wird eingestellt und durch einen neuen Parameter fürSemanticsActions.performImeAction
ersetzt. (I4a587)- Die Auswahl per Maus wird jetzt unterstützt. Bei der Auswahl per Berührung wird die Auswahl um ein Wort erweitert und um ein Zeichen verkleinert. (IC0c6c, b/180639271)
Paragraph
-Methoden, die bisherAssertionError
für Offsets außerhalb des gültigen Bereichs ausgelöst haben, geben jetztIllegalArgumentException
wieMultiParagraph
aus. (I549d3, b/243338896)
Version 1.5
Version 1.5.4
18. Oktober 2023
androidx.compose.ui:ui-*:1.5.4
wird veröffentlicht. Version 1.5.4 enthält diese Commits.
Version 1.5.3
4. Oktober 2023
androidx.compose.ui:ui-*:1.5.3
wird veröffentlicht. Version 1.5.3 enthält diese Commits.
Fehlerkorrekturen
- (b/301209788)
TextField
hat beim Fokussieren und Eingeben von koreanischer Eingabe gelegentlich falsche Befehle angewendet, wodurch Zeichen verloren gingen.
Version 1.5.2
27. September 2023
androidx.compose.ui:ui-*:1.5.2
wird veröffentlicht. Version 1.5.2 enthält diese Commits.
Fehlerkorrekturen
- Es wurde eine Problemumgehung für Abstürze hinzugefügt, bei denen über den Hintergrundthread auf die Accessibility Scroll API zugegriffen wurde.
- Korrektur von nicht verbundenen Knoten, die dem Semantikbaum hinzugefügt wurden.
Version 1.5.1
6. September 2023
androidx.compose.ui:ui-*:1.5.1
wird veröffentlicht. Version 1.5.1 enthält diese Commits.
Fehlerkorrekturen
- Textfelder, in denen die Tastatur angezeigt und die Textfelder bearbeitet werden können, wenn
readOnly
= „wahr“ ist, wurden korrigiert. Außerdem wurde behoben, dass die Tastatur nicht angezeigt wurde, wennreadOnly
während der Fokussierung von „wahr“ zu „falsch“ geändert wurde. (I34a19, b/246909589)
Version 1.5.0
9. August 2023
androidx.compose.ui:ui-*:1.5.0
wird veröffentlicht. Version 1.5.0 enthält diese Commits.
Version 1.5.0-rc01
26. Juli 2023
androidx.compose.ui:ui-*:1.5.0-rc01
wurde veröffentlicht. Version 1.5.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Ein Absturz behoben, der bei der Verwendung von
SubcomposeLayout
inmovableContentOf()
auftrat, wurde behoben.
Version 1.5.0-beta03
28. Juni 2023
androidx.compose.ui:ui-*:1.5.0-beta03
wurde veröffentlicht. Version 1.5.0-beta03 enthält diese Commits.
Fehlerkorrekturen
- Die Schnittstelle „FocusTargetModifierNode“ wurde hinzugefügt, mit der ein benutzerdefiniertes Fokusziel erstellt werden kann. (Ifb1d6)
- Ein Problem mit Dialog- und Pop-up-Kompositen wurde behoben, das dazu führen konnte, dass das untergeordnete Fenster bei
usePlatformDefaultWidth=true
nicht wie erwartet skaliert wurde. (I112ee)
Version 1.5.0-beta02
7. Juni 2023
androidx.compose.ui:ui-*:1.5.0-beta02
wird veröffentlicht. Version 1.5.0-beta02 enthält diese Commits.
API-Änderungen
- Die
asComposePaint
API wurde hinzugefügt, um die Nutzung einerandroid.graphics.Paint
-Instanz in Compose zu ermöglichen.
Fehlerkorrekturen
- Es wurde die
asComposePaint
API hinzugefügt, umtoComposePaint
zu ersetzen, da das zurückgegebene Objekt das ursprünglicheandroid.graphics.Paint
umschließt (I22b4c).
Version 1.5.0-beta01
24. Mai 2023
androidx.compose.ui:ui-*:1.5.0-beta01
wurde veröffentlicht. Version 1.5.0-beta01 enthält diese Commits.
API-Änderungen
- Zuweisungen bei der Neuzusammensetzung, Farbanimationen und
AndroidComposeView
(Ib2bfa) entfernt - Fügt Hilfsfunktionen wie
CacheDrawModifierNode()
hinzu, um das Delegieren zu ermöglichen (Icf8f9) - Einführung der
isLookingAhead
-Property, die überMeasureScope
zugänglich ist, um Lookahead-Ergebnisse zu beobachten und gegebenenfalls den Hauptpass zu beeinflussen. (Ibf4c3) - Neue Semantikeigenschaft
traversalIndex
, eine Gleitkommazahl zur Neuanordnung von Knoten beimTalkBack
-Durchlauf (niedrigere Werte stehen davor). (I9a81b, b/186443263) - Die Eigenschaft „Semantik“
isContainer
inisTraversalGroup
umbenannt (I121f6) ColorProducer
hat jetzt einoperator fun invoke
anstelle einesproduce
(I4a9a2)- Fügen Sie die
Path
Transform API hinzu, um Pfadobjekten Verschiebungs-/Skalierungs-/Drehtransformationen anzuwenden. (I23434, b/233772232) - Die Methode von
ColorProducer
heißtproduce
. (I78bde) toFrameworkColorSpace
intoAndroidColorSpace
umbenennen (I4f547)- Benennen Sie
ColorLambda
inColorProducer
um. (I73b1a) - APIs zur Konvertierung zwischen Android- und Compose-Farbraumtypen eingeführt. (Ie7db4, b/279979665)
BasicText
hat jetzt einen Farbparameter, mit dem sich Textfarben effizient animieren oder festlegen lassen. (Iffd88, b/246961787)TextRange.constrain
wurde inTextRange.coerceIn
umbenannt. (I31be2)- Optimierte
TextStyle.merge(...)
mit vollständiger Parameterliste hinzugefügt. (Iad234, b/246961787) - Viele Text-APIs wurden stabilisiert, darunter
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
undMultiParagraph.paint(Brush)
. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPadding
wurde reaktiviert. Ursprünglich wollten wir das Feld entfernen. Das Feedback zeigt jedoch, dass Entwickler diese Konfigurationsoption benötigen. Daher wird die Einstellung aus dem Feld entfernt (I98e96, b/277703184)- Öffentliche Methode
TextRange.constrain
wurde hinzugefügt. (I97912) UrlAnnotation
-Werte inAnnotatedString
Sek. können jetzt über Bedienungshilfen wieTalkBack
geöffnet werden. (If4d82, b/253292081)- Die Semantikaktion
InsertTextAtCursor
für Textfelder wurde hinzugefügt. (I11ed5) - Der Konstruktor von
LineHeightStyle.Alignment(topRatio)
wird zur stabilen API hochgestuft. (I79c32, b/261565383) TextMeasurer
und zugehörige APIs sind nicht mehr experimentell. (I74647, b/261581753)- Die semantische Aktion
PerformImeAction
wurde hinzugefügt, um die IME-Aktion auf Texteditorknoten aufzurufen. (Ic606f, b/269633506) PlatformTextInput
APIs sind für Android nicht mehr experimentell. (I668eb)- Der Name des Wertparameters für
Enum.valueOf
wurde geändert (Ia9b89) - Mehr geworfene Ausnahmen von enum valueOf (I818fe)
- Einführung einer neuen Low-Level-
PlatformTextInputAdapter
API zum Erstellen benutzerdefinierter Texteingabeimplementierungen, die direkt mit Plattform-APIs kommunizieren. (I58df4) - Den Methoden
DrawScope.drawText
,Paragraph.paint
undMultiParagraph.paint
wurde der ParameterBlendMode
hinzugefügt, um beim Zeichnen von Text auf Canvas verschiedene Überblendungsalgorithmen zu unterstützen. (I57508) - Benennen Sie
Font.MaximumAsyncTimeout
inFont.MaximumAsyncTimeoutMillis
um. Nur umbenennen. (I07af5) - Aktualisierte DPI-Werte von
@Preview
Referenzgeräten (Id6151, b/254528382) - Füge
BasicText
die Parameterbrush
undalpha
hinzu, um den Textpinsel effizient zu animieren oder festzulegen. - Definition von boxfreien Lambdatypen für Float, Double, Long, Int und Short in :ui:ui-unit (I6f18d, b/246961787)
Fehlerkorrekturen
- Mehrere Zuweisungen bei der Zeiger-Geschwindigkeitsverfolgung wurden entfernt (I26bae).
- Weniger Zuweisungen bei der Layout- und Zeiger-Eingabeverwaltung (I5333a)
- Speichernutzung für Vektorgrafiken und Rendering der ersten Frames optimieren (I2f3c6)
- Zuweisungen beim Zeichnen von Linien und Punkten mit Canvas entfernt (I9f535)
- Dokumente für
AndroidFont.fontVariationSettings
(I7d9e2) hinzufügen
Externer Beitrag
- Verbesserte Leistung und reduzierte Zuweisungen in Vector APIs (I906cb)
Version 1.5.0-alpha04
10. Mai 2023
androidx.compose.ui:ui-*:1.5.0-alpha04
wurde veröffentlicht. Version 1.5.0-alpha04 enthält diese Commits.
Neue Funktionen
Modifier.Node
Verbesserungen bei der Delegierung Es wurde eine erweiterte Möglichkeit hinzugefügt, von einerDelegatingNode
-Instanz an andereModifier.Node
-Instanzen zu delegieren. Dazu können Sie die APIsdelegate
undundelegate
verwenden. Vor dieser Änderung musste jede API vom delegierenden Knoten explizit an den delegierten Knoten delegiert werden. Nach dieser Änderung werden Knotenschnittstellen implizit delegiert, es sei denn, dieDelegatingNode
überschreibt sie explizit. (67352bc)
API-Änderungen
NestedScrollModifierNode
ist eineNestedScroll Modifier.Node
, die delegiert werden kann. (I69513)- Dem
AndroidViewBinding
-Kompositelement wurden die ParameteronReset
undonRelease
hinzugefügt, um dasAndroidView
-Kompositelement zu spiegeln und die Wiederverwendung von Ansichten mitViewBinding
zu ermöglichen. (I00b1e, b/276802519) - Die Compose Path API wurde aktualisiert, um Zurückspulen zu unterstützen. So werden Anwendungsfälle mit häufigen Pfadänderungen und einer schnelleren Wiederverwendung unterstützt. (I7b797)
- Optimierte
TextStyle.merge(...)
mit vollständiger Parameterliste hinzugefügt. (Iad234, b/246961787) - Viele Text-APIs wie
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
undMultiParagraph.paint(Brush)
wurden stabilisiert. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPadding
wurde reaktiviert. Ursprünglich wollten wir das Feld entfernen. Das Feedback hat jedoch gezeigt, dass Entwickler diese Konfigurationsoption benötigen. Daher wird die Einstellung aus dem Feld entfernt (I98e96, b/277703184)
Fehlerkorrekturen
- Behobene Regression, durch die die Tastatur für Textfelder in Dialogfeldern, die nicht mit dem
Dialog
-Komposit erstellt wurden, nicht angezeigt wurde. (I82551, b/262140644)
Version 1.5.0-alpha03
19. April 2023
androidx.compose.ui:ui-*:1.5.0-alpha03
wird veröffentlicht. Version 1.5.0-alpha03 enthält diese Commits.
Neue Funktionen
- Neues Standardverhalten für
SubcomposeLayout
inLookaheadScope
:SubcomposeLayouts
ohne bedingte Slots (z.B.TabRow
,Scaffold
,BoxWithConstraints
) funktionieren jetzt gut mit Vorschauanimationen.
API-Änderungen
- Mit der neuen Standard-
intermediateMeasurePolicy
, die die Messrichtlinie aus dem Lookahead-Pass wiederverwendet, könnenSubcomposeLayout
-Untertypen ohne nutzerabhängige Slots wieScaffold
,TabRow
undBoxWithConstraints
standardmäßig mit Lookahead verwendet werden. (Id84c8) - Der für ein Android-Fenster erstellte Recomposer blockiert jetzt nur Aufrufe an
withFrameNanos
, anstatt die gesamte Zusammenstellung, wenn er eineON_STOP
-Benachrichtigung erhält. Das bedeutet, dass Fenster, die mit beendeten Aktivitäten verknüpft sind, bei Datenänderungen weiterhin neu zusammengesetzt werden, aber die Animationen oder ein anderer Aufrufer vonwithFrameNanos
werden blockiert. (Id9e7f, b/240975572) - Ändert
motionEventSpy
in „stabil“. (Ic5ec4, b/261560988) - Öffentliche
TextRange.constrain
-Methode hinzugefügt. (I97912) PlatformTextStyle.includeFontPadding
wird nicht mehr eingestellt, damit Entwickler diese API zur Kompatibilität verwenden können, um die EinstellungincludeFontPadding
auf „falsch“ umzustellen und zu testen. (I98e96, b/277703184)
Version 1.5.0-alpha02
5. April 2023
androidx.compose.ui:ui-*:1.5.0-alpha02
wurde veröffentlicht. Version 1.5.0-alpha02 enthält diese Commits.
API-Änderungen
- Neue
SubcomposeLayout
API mit einer zusätzlichen Richtlinie für Zwischenmesswerte zur Verarbeitung der Mess-/Layoutlogik bei lookahead-basierten Animationen. (I017d3) - PointerInput ist jetzt träge und verwendet Modifier.Node für eine bessere Leistung. Weitere Informationen zu dieser geringfügigen Verhaltensänderung (15dab9)
- Experimentelle APIs werden mit wichtigen Ereignissen in stabile APIs umgewandelt. (I9c7d8, b/261566839, b/261567368)
- Die experimentellen APIs werden in
PointerInputChange
in stabile APIs geändert. (I1b543, b/261560988, b/261565762, b/261565749) - Es wird eine Möglichkeit hinzugefügt, eine
SuspendingPointerInputModifierNode
für komplexereModifier.Node
-Implementierungen zu instanziieren. (Ic4933) UrlAnnotation
s inAnnotatedString
s können jetzt über Bedienungshilfen wieTalkBack
geöffnet werden. (If4d82, b/253292081)- Es wurde eine API hinzugefügt, mit der Hardwaretasten abgefangen werden, bevor sie an die Soft-Tastatur gesendet werden (I4f4c6, b/186800395)
- 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)
Fehlerkorrekturen
- Für Texttestaktionen müssen jetzt Textfelder aktiviert sein. (Iab328)
Version 1.5.0-alpha01
22. März 2023
androidx.compose.ui:ui-*:1.5.0-alpha01
wird veröffentlicht. Version 1.5.0-alpha01 enthält diese Commits.
API-Änderungen
- Für Modifier.intermediateLayout ist jetzt kein expliziter LookaheadScope mehr erforderlich. Der Messblock in „intermediateLayout“ hat „IntermediateMeasureScope“ als Empfänger, was praktische CoroutineScope-, LookaheadScope- und MeasureScope-Funktionen bietet.(Ibe2e5)
- „LookaheadLayout“ wurde durch „LookaheadScope“ ersetzt, das kein Layout mehr ist. So können untergeordnete Inhalte in einem LookaheadScope direkt über die MeasurePolicy des übergeordneten Elements gesteuert werden. (Ibe2e5)
Modifier.Node#coroutineScope
wird hinzugefügt, damit Modifier.Nodes Koroutinen starten können. (I76ef9)- Erlaube Modifier.Nodes, CompositionLocals zu lesen, indem du die Schnittstelle CompositionLocalConsumerModifierNode implementierst. (Ib44df)
- Weitergabe der Klasse „@Deprecated“ an das Attribut. (I882d1)
Version 1.4
Version 1.4.3
3. Mai 2023
androidx.compose.ui:ui-*:1.4.3
wird veröffentlicht. Version 1.4.3 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem
AndroidView
bei Verwendung mit bestimmten Modifikatoren nicht korrekt dargestellt wurde. (I4dc77, b/274797771) - Ein Fehler in der 2D-Suche, der sich auf
DropDown
-Menüs ausgewirkt hat, wurde behoben (b/276811828) - Ein Fehler in benutzerdefinierten Eigenschaften für den Fokusein-/-austritt wurde behoben, bei dem der Block „enter/exit“ (Ein-/Austritt) nur beim ersten Aufruf der Lambda-Funktion ausgeführt wurde (b/277234245).
- Eine Regression im Fokussystem, die beim Lesen von
focusProperties
zu einem Absturz geführt hat, wurde behoben. (b/271324781, b/274897776)
Version 1.4.2
19. April 2023
androidx.compose.ui:ui-*:1.4.2
wird veröffentlicht. Version 1.4.2 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem
AndroidView
seine Modifikatoren nicht richtig wiederverwendet hat, was zu unerwartetem Verhalten und Abstürzen führen konnte. (Ib67ee, b/275919849) - Behebung einer Regression, bei der die Tastatur in Textfeldern in Dialogen, die nicht mit dem
Dialog
-Kompositelement erstellt wurden, nicht angezeigt wurde (I82551, b/262140644)
Version 1.4.1
5. April 2023
androidx.compose.ui:ui-*:1.4.1
wird veröffentlicht. Version 1.4.1 enthält diese Commits.
Fehlerkorrekturen
- Behebung eines Problems mit
ParentDataModifier
, das sich nicht aufAndroidView
auswirkt (b/274797771)
Version 1.4.0
22. März 2023
androidx.compose.ui:ui-*:1.4.0
wird veröffentlicht. Version 1.4.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.3.0
- Es wurde eine neue
PinnableContainer
API hinzugefügt, mit der Elemente in Lazy-Listen angepinnt werden können, damit sie nicht entfernt werden, wenn sie nicht mehr sichtbar sind. AufModifier.focusable()
wird dieser Mechanismus beispielsweise verwendet, um das aktuell fokussierte Element anzupinnen. (Ib8881, b/259274257, b/195049010) - Das Fokussystem wurde mit den neuen experimentellen
Modifier.Node
APIs neu geschrieben. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Die
IsContainer
-Semantik-Property wurde auf Oberflächen hinzugefügt. Diese Property wird bei einer späteren Änderung verwendet, bei der die Durchlaufreihenfolge basierend auf der semantischen Bedeutung von Elementen wie Oberflächen bestimmt wird. (I63379) - Es wurde eine neue Rolle für die Barrierefreiheit hinzugefügt:
DropdownList
. So lässt sich das Verhalten vonTalkBack
beim Fokussieren vonandroid.widget.Spinner
nachahmen. (I177e5, b/236159001) - Du kannst jetzt
PlatformTextStyle(emojiSupportMatch)
verwenden, um die Verarbeitung der Emoji-Unterstützung für einen einzelnen Absatz zu deaktivieren. (Ia7100, b/139326806) - Bei Android Compose UI-Tests werden jetzt Layoutdurchläufe für jeden Frame ausgeführt, wenn Frames ausgeführt werden, um in den Inaktivitätsstatus zu gelangen (z.B. über
waitForIdle
). Dies kann sich auf Tests auswirken, die für einzelne Frames von Layoutanimationen gelten. (I8ea08, b/222093277) - Die experimentelle Funktion
TextMotion
wurde zuTextStyle
hinzugefügt, um für Text entwederStatic(default)
oder Animiert zu definieren. Verwenden SieTextMotion.Animated
, wenn Text durch eine Animation skaliert, verschoben oder gedreht werden soll. (I24dd7)
Version 1.4.0-rc01
8. März 2023
androidx.compose.ui:ui-*:1.4.0-rc01
wird veröffentlicht. Version 1.4.0-rc01 enthält diese Commits.
API-Änderungen
- Es wurde eine Überladung der zusammensetzbaren Funktion
AndroidView
hinzugefügt, die den ParameteronReset
akzeptiert. Damit können View-Instanzen wiederverwendet werden, wenn ihr Knoten in der Zusammensetzung verworfen und auf kompatible Weise wiederverwendet wird. Das ist besonders nützlich fürLazyRows
undLazyColumns
von Aufrufen. (I3f10d, b/230099236) - Einführung einer neuen Low-Level-
PlatformTextInputAdapter
API zum Erstellen benutzerdefinierter Texteingabeimplementierungen, die direkt mit Plattform-APIs kommunizieren. (I58df4)
Fehlerkorrekturen
- Mit der Semantikaktion
SetText
vonBasicTextField
wird der Textpuffer jetzt mit demselben Codepfad wie IME-Updates und die Testfunktionen (z.B.performTextReplacement
) aktualisiert. - Für die Texttestfunktionen
performTextClearance
,performTextReplacement
undperformTextSelection
wird jetztSemanticsActions
verwendet. (I0807d, b/269633168, b/269624358)
Version 1.4.0-beta02
22. Februar 2023
androidx.compose.ui:ui-*:1.4.0-beta02
wird veröffentlicht. Version 1.4.0-beta02 enthält diese Commits.
API-Änderungen
- Die
modifierElementOf()
API wurde entfernt. Bitte verlängern Sie es stattdessen direkt vonModifierNodeElement
. (I2256b) - Es wurde ein neuer
Modifier.Node.onReset()
-Callback hinzugefügt, mit dem Sie den lokalen Status zurücksetzen können, um den Fall richtig zu behandeln, wennLayout
wiederverwendet wird (z. B. als Element vonLazyColumn
).FocusTargetModifierNode
wurde korrigiert, damit der Fokusstatus richtig zurückgesetzt wird. (I65495, b/265201972) - Den Methoden
DrawScope.drawText
,Paragraph.paint
undMultiParagraph.paint
wurde der ParameterBlendMode
hinzugefügt, um beim Zeichnen von Text auf Canvas verschiedene Überblendungsalgorithmen zu unterstützen. (I57508)
Fehlerkorrekturen
- Der Algorithmus für die Reihenfolge der Fokussierung bei der Barrierefreiheit wurde verbessert. So werden beispielsweise obere/untere Balken häufiger zuerst/zuletzt gelesen (74e9c5)
Version 1.4.0-beta01
8. Februar 2023
androidx.compose.ui:ui-*:1.4.0-beta01
wird veröffentlicht. Version 1.4.0-beta01 enthält diese Commits.
API-Änderungen
PinnableContainer.PinnedHandle.unpin()
wurde inrelease()
(I4667a) umbenanntwaitUntilNodeCount
,waitUntilAtLeastOneExists
,waitUntilExactlyOneExists
undwaitUntilDoesNotExist
wurden als experimentelle API zuComposeTestRule
hinzugefügt. Damit kann diewaitUntil
API jeden Matcher und jede Anzahl von Knoten akzeptieren. Weitere Informationen finden Sie unterComposeTestRule
. (Ifa1b9, b/226934294)- Benennen Sie
Font.MaximumAsyncTimeout
inFont.MaximumAsyncTimeoutMillis
um. (I07af5) GoogleFont.Provider.AllFontsListUri
wurde entfernt und stattdessen im ktdoc-Dokument verlinkt. (I16f29)
Fehlerkorrekturen
- Dokumente für
AndroidFont.fontVariationSettings
(I7d9e2) hinzufügen
Version 1.4.0-alpha05
25. Januar 2023
androidx.compose.ui:ui-*:1.4.0-alpha05
wird veröffentlicht. Version 1.4.0-alpha05 enthält diese Commits.
API-Änderungen
- Einführung neuer experimenteller Überlastungen für die
runComposeUiTest
- undcreate*ComposeRule
-Funktionen, dieCoroutineContext
-Parameter akzeptieren. Der Kontext wird für die Testkomposition und alleLaunchedEffect
- undrememberCoroutineScope()
-Aufrufe in der Komposition verwendet. (I10614, b/265177763) - Neue API zum Erfassen der Geschwindigkeit in einer Dimension hinzufügen (If5a82)
FocusRequester
ist jetzt als@Stable
gekennzeichnet. (I580ee)- Entfernen Sie eine experimentelle Annotation aus dem
DialogProperties
-Konstruktor, die einenusePlatformDefaultWidth
-Parameter verwendet. (Ic4048) - Funktion zum Berechnen der Position und Tangente in einem bestimmten Abstand auf einem Pfad hinzugefügt – mit
PathMeasure.getPosition()
undPathMeasure.getTangent()
(I3b47c) - Am
PlatformParagraphStyle
wurde ein versehentlich freigegebener öffentlicher Setter entfernt. (I07f47) - Weitere Informationen zu Typ/Nullbarkeit von Inline-/veralteten ausgeblendeten Funktionen (I24f91)
- Fügen Sie
AnnotatedString.hasStringAnnotations
hinzu, um nach Anmerkungen mit null Zuordnungen zu suchen. (I94dfe, b/246960758) - Es wurde eine neue Überladung für die Funktion
TextMeasurer.measure
hinzugefügt, die einenString
als Text annimmt. (I47b2d, b/242705342) - Die APIs
LineBreak
undHyphens
in TextStyle wurden auf die stabile Version umgestellt. (Ic1e1d)
Externer Beitrag
notifyFocusedRect
-Methoden inTextInputSession
undTextInputService
werden nicht noch einmal eingestellt. (I23a04, b/262648050)
Version 1.4.0-alpha04
11. Januar 2023
androidx.compose.ui:ui-*:1.4.0-alpha04
wird veröffentlicht. Version 1.4.0-alpha04 enthält diese Commits.
Neue Funktionen
- Es wurde eine neue
PinnableContainer
API hinzugefügt, mit der Elemente in Lazy-Listen angepinnt werden können, damit sie nicht entfernt werden, wenn sie nicht mehr sichtbar sind. AufModifier.focusable()
wird dieser Mechanismus beispielsweise verwendet, um das aktuell fokussierte Element anzupinnen. (Ib8881, b/259274257, b/195049010) - Das Fokussystem wurde mit den neuen experimentellen
Modifier.Node
APIs neu geschrieben. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589) - Die
IsContainer
-Semantik-Property wurde auf Oberflächen hinzugefügt. Diese Property wird bei einer späteren Änderung verwendet, bei der die Durchlaufreihenfolge basierend auf der semantischen Bedeutung von Elementen wie Oberflächen bestimmt wird. (I63379) - Neue Rolle für Bedienungshilfen
DropdownList
hinzugefügt. So lässt sich das Verhalten vonTalkBack's
beim Fokussieren vonandroid.widget.Spinner
nachahmen. (I177e5, b/236159001) - Sie können jetzt
PlatformTextStyle(emojiSupportMatch)
verwenden, um die Verarbeitung von Emojis für einen einzelnen Absatz optional zu deaktivieren. (Ia7100, b/139326806) - Bei Android Compose UI-Tests werden jetzt Layoutdurchläufe für jeden Frame ausgeführt, wenn Frames ausgeführt werden, um in den Inaktivitätsstatus zu gelangen (z.B. über
waitForIdle
). Dies kann sich auf Tests auswirken, die für einzelne Frames von Layoutanimationen gelten. (I8ea08, b/222093277) - Die experimentelle
TextMotion
wurde zuTextStyle
hinzugefügt, um Text entweder alsStatic(default)
oder als animiert zu definieren. Verwenden SieTextMotion.Animated
, wenn Text durch eine Animation skaliert, verschoben oder gedreht werden soll. (I24dd7)
API-Änderungen
- Das Argument
maxSize: IntSize
indrawText
wurde durchsize: Size
ersetzt, um mit anderenDrawScope
-Funktionen übereinzustimmen.size
ist standardmäßig aufSize.Unspecified
gesetzt. Das sollte das vorherige Standardverhalten nicht ändern. (Icd27d) - Der veraltete experimentelle Schriftarten-Konstruktor wurde entfernt. (I8a724, b/261435386)
- Die Datenklasse „ui tooling“
Group
hat jetzt ein FeldisInline
, das angibt, ob die Gruppe für einen Aufruf einer inline-komposierbaren Funktion bestimmt ist. WennisInline
true
ist, handelt es sich um einen Aufruf einer inline zusammensetzbaren Funktion. Der Wert kann jedoch für Aufrufe von inline-kombinierbaren Funktionen aus Modulen falsch sein, die mit einer Version des Compose-Compiler-Plug-ins kompiliert wurden, die die Informationen zur Inlinefunktion nicht generiert. (Idb846) - Eine Reihe zuvor experimenteller APIs wurde in stabile APIs umgewandelt.
- Die Rotary Scroll Event API ist jetzt stabil (I42ad3, b/261561229)
FontVariation
Die API ist jetzt stabil (I8779f, b/241016309)- Alle
Font()
-Konstruktoren sind jetzt in der stabilen API verfügbar (I5948b, b/261435386) DeviceFontFamilyName
ist jetzt stabil (I8b640, b/261435386)- Der
AndroidFont
-Konstruktor mitvariationSettings
ist jetzt eine stabile API und kann zum Erstellen neuer Arten von Schriftdeskriptoren verwendet werden. (I5adcc, b/261565807) - Die
createFontFamilyResolver
API ist jetzt stabil. So können nicht abgefangene Ausnahmen beim asynchronen Laden von Schriftarten abgefangen werden. (Ibb481, b/261435386) - Die
Font.loadingStrategy
API ist jetzt stabil. (I5937c, b/261435386) - Die
GoogleFont
API ist jetzt stabil. (IC90b0, b/261435386) TextUnit(float, TextUnitType)
ist jetzt eine stabile API. (I90c84, b/261561612)pluralStringResource
ist jetzt eine stabile API. (I09849, b/261439703)
Version 1.4.0-alpha03
7. Dezember 2022
androidx.compose.ui:ui-*:1.4.0-alpha03
wird veröffentlicht. Version 1.4.0-alpha03 enthält diese Commits.
API-Änderungen
ExperimentalComposeUiApi
wird ausPointerIcon
(I23af8) entfernt- Einführung von Aktionen zur Barrierefreiheit von Seiten:
PageUp
,PageDown
,PageLeft
,PageRight
. Beachten Sie, dass diese erst ab API 29 verfügbar sind. (Ida4ab) - Die Ansicht des
rememberNestedScrollConnection
-Parameters wurde von der Stammansicht in die Hostansicht geändert. (Ia5200) - Es wurde eine Modifier API hinzugefügt, um die Scroll-Informationen von Ancestors abzufragen. (I2ba9d, b/203141462)
- Wird in
Clickable
verwendet, um die Interaktionen mit dem Drücken richtig zu verzögern, wenn Touch-Gesten zu Scrollereignissen werden könnten. - Bei Verwendung in einem
Scrollable ViewGroup
wurden beiClickables
keine korrekten Verzögerungen für Wellen erzeugt. Dieses Problem wurde behoben. - Leisten und Tabellen wurden aktualisiert, um das Drücken korrekt zu verzögern, falls Gesten zu Scroll-Ereignissen werden können.
CompositingStrategy.Always
inOffscreen
umbenannt, um anzugeben, dass diegraphicsLayer
immer in einen Zwischenspeicher gerendert wird (I47dc1)- Layoutüberlastung mit mehreren Inhaltsbereichen ist jetzt stabil (I10566, b/248294649).
- Die experimentellen APIs
PerfettoTrace.record {}
undPerfettoTraceRule
wurden hinzugefügt, um Perfetto-Traces (auch als System-Traces bezeichnet) im Rahmen eines Tests zu erfassen und das Testverhalten und die Leistung zu prüfen. (I3ba16) - In UI-Tests mit einer Compose-Regel werden Fortsetzungen, die während
withFrameNanos
-Callbacks fortgesetzt wurden, erst gesendet, nachdem alle Frame-Callbacks ausgeführt wurden. Das entspricht dem Verhalten von compose bei normalem Ausführen. Tests, die auf dem alten Verhalten basieren, können jedoch fehlschlagen. Dies sollte sich nur auf Code auswirken, derwithFrameNanos
oderwithFrameMillis
direkt aufruft und Logik außerhalb des Callbacks hat, die an diese Funktionen übergeben wird und möglicherweise in die Callbacks verschoben werden muss. Beispiele finden Sie in den Änderungen am Animationstest in dieser CL. - Dem Konstruktor und der Fabrikfunktion von
TestMonotonicFrameClock
wurde der optionale ParameteronPerformTraversals: (Long) -> Unit
hinzugefügt, um Code nachwithFrameNanos
-Callbacks auszuführen, aber bevor die coroutines der Aufrufer fortgesetzt werden. (Idb413, b/254115946, b/222093277, b/255802670) - EmojiCompat wurde zum Verfassen hinzugefügt (Ibf6f9, b/139326806)
@Preview
hat einen neuen Hintergrundparameter für die Unterstützung dynamischer Farben erhalten (I9f512)
Fehlerkorrekturen
- Benachrichtigungen zum Anwenden von Snapshots werden jetzt gesendet, nachdem
Recomposer
die Änderungen angewendet hat. (Iad6c0, b/222093277) - In
captureToImage
wurden Änderungen vorgenommen, damit Screenshots von mehreren Fenstern aufgenommen werden können. Dies ist nützlich für Screenshot-Tests, bei denen Pop-ups zum Erstellen von Pop-ups verwendet werden. (I169c5)
Aktualisierung der Abhängigkeiten
- Die Erstellung der Benutzeroberfläche und das Zusammenstellen von Material hängen jetzt vom Lifecycle 2.5.1 ab. (I05ab0, b/258038814)
Version 1.4.0-alpha02
9. November 2022
androidx.compose.ui:ui-*:1.4.0-alpha02
wird veröffentlicht. Version 1.4.0-alpha02 enthält diese Commits.
API-Änderungen
GraphicsLayerScope
wurde aktualisiert, um die aktuelle Größe desgraphicsLayer
zu sehen. Das ist hilfreich, umgraphicsLayer
-Transformationen als Funktion der Größe des Composeable zu berechnen. (If8c43,b/181387080)- Einführung von
CompositingStrategy
, um festzulegen, wann eine Offscreen-Kompositionsebene für das Rendern vongraphicsLayer
-Inhalten verwendet werden soll. Bei „Automatisch“ wird das Standardverhalten beibehalten, bei dem intern eine Ebene verwendet wird, wenn Alpha angewendet wird, oder eineRenderEffect/Overscroll
. „Always“ führt immer einen Offscreen-Puffer ein, währendModulateAlpha
keinen Offscreen-Puffer verwendet, sondern stattdessen jede der aufgezeichneten Zeichenanweisungen innerhalb dergraphicsLayer
moduliert. Bei der Verwendung vonModulateAlpha
wird weiterhin ein Offscreen-Puffer für die Verwendung vonRenderEffect/Overscroll
verwendet (I25e82, b/256382834) invalidateSubtree()
wurdeModifier.Node
hinzugefügt, um ganze Hierarchien für Layout und Zeichnung zu entwerten. (I4bd90)rememberNestedScrollInteropConnection
zu „Stable“ hochstufen. Es ist jetzt möglich, eine Stammansicht anrememberNestedScrollInteropConnection
zu übergeben. So kann die benutzerdefinierte Ansicht besser auf Scrolleinschränkungen reagieren, insbesondere in nicht standardmäßigen Ansichten (z.B.ModalBottomSheetDialog
). (I9e107)- Die
ObserverNode
-Schnittstelle wurde hinzugefügt. Sie kann vonModifier.Node
-Implementierungen verwendet werden, die benachrichtigt werden müssen, wenn sich ein zuvor gelesener Wert geändert hat (I5728b, b/247716483) Paint
hat einen neuen Konstruktor erhalten, der ein nativesandroid.graphics.Paint
akzeptiert. Außerdem wurde die ErweiterungsfunktiontoComposePaint()
hinzugefügt, mit der ein vorhandenes natives Paint-Objekt in Compose Paint umgewandelt wird. (Ica91b)- Fügen Sie eine neue
FontFamily.Resolver.resolveAsTypeface
für die Verwendung auf Android-Geräten hinzu. (I8950b) ToolingState
hinzufügen, damit Tools den internen Status von Composable ändern können (Ie6614)- Tools wurden überarbeitet, um die Unterstützung für neu hinzugefügte Animationen zu verbessern (I8677b)
- Der Parameter
minLines
wurde zu material und material3 Text,TextField
undOutlinedTextField
hinzugefügt, mit dem die Mindesthöhe der Komponente in Bezug auf die Anzahl der Zeilen festgelegt werden kann (I4af1d).
Version 1.4.0-alpha01
24. Oktober 2022
androidx.compose.ui:ui-*:1.4.0-alpha01
wird veröffentlicht. Version 1.4.0-alpha01 enthält diese Commits.
API-Änderungen
- Die neue Methode
awaitEachGesture()
für Gestenerkennung wurde hinzugefügt. Die Funktionsweise ähnelt der vonforEachGesture()
, aber die Schleife über die Touch-Gesten wird vollständig innerhalb vonAwaitPointerEventScope
ausgeführt, sodass Ereignisse zwischen den Iterationen nicht verloren gehen können. forEachGesture()
wurde zugunsten vonawaitEachGesture()
eingestellt, da beiforEachGesture()
Ereignisse zwischen den Touch-Gesten verloren gehen können. (Iffc3f, b/251260206)- Das Recycling von Objekten zur Barrierefreiheit in androidx wird eingestellt. Wir haben festgestellt, dass die Leistungsänderungen selbst bei den ältesten unterstützten Versionen vernachlässigbar sind. (I0a961)
DrawStyle
wurde zuTextStyle
undSpanStyle
als experimentelles Attribut hinzugefügt, um das Zeichnen von umrandetem Text zu ermöglichen. (If24b8, b/155421273)AnnotatedString.Builder
implementiert jetztkotlin.text.Appendable
. (I1a061, b/231030444)AnnotatedString.Builder
hat jetzt eineappend(AnnotatedString, start: Int, end: Int)
-Methode, mit der ein Teilstring einerAnnotatedString
und die sich überschneidenden Stile angehängt werden können.- Den Malfunktionen
Paragraph
undMultiParagraph
wurde der ParameterDrawStyle
hinzugefügt, mit dem umrandeter Text gezeichnet werden kann. (Ic8102, b/155421273)
Externer Beitrag
- Vielen Dank an
vighnesh
, dass er Fernseher zur Vorschau hinzugefügt hat (Ie15cd)
Version 1.3
Version 1.3.3
11. Januar 2023
androidx.compose.ui:ui-*:1.3.3
wird veröffentlicht. Version 1.3.3 enthält diese Commits.
Fehlerkorrekturen
- Behebung eines Absturzes, der unter Android 9 manchmal auftritt, wenn die Aktivität den Status der Schreibansicht speichert. (I0b755, b/260322832)
Version 1.3.2
7. Dezember 2022
androidx.compose.ui:ui-*:1.3.2
wird veröffentlicht. Version 1.3.2 enthält diese Commits.
Fehlerkorrekturen
- Aktualisiert auf die Verwendung von Profobuf 3.21.8, wodurch eine Sicherheitswarnung in
protobuf-javalite:3.19.4
vermieden wird (CVE-2022-3171) (b/255545055)
Version 1.3.1
9. November 2022
androidx.compose.ui:ui-*:1.3.1
wird veröffentlicht. Version 1.3.1 enthält diese Commits.
Version 1.3.0
24. Oktober 2022
androidx.compose.ui:ui-*:1.3.0
wird veröffentlicht. Version 1.3.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.2.0
- Neue experimentelle API-Suite
LookaheadLayout
(ermöglicht bisher nicht mögliche Animationsverhalten) - Neue experimentelle API-Suite
Modifier.Node
(leistungsstärkere Alternative zuModifier.composed
) - Verbesserte Unterstützung für Fenstereinzüge.
- Unterstützung für die Fokussierung von D-Pads und Hardwaretastaturen in LazyLists.
- Die maximale unterstützte Höhe in Dialogfeldern und Pop-ups wurde auf 8 dp reduziert (funktionsgefährdende Änderung bei einigen benutzerdefinierten Designsystemen – Begründung in den Versionshinweisen von Beta01).
- Viele geringfügige, abwärtskompatible API-Verbesserungen
- Viele Fehlerkorrekturen und Leistungsverbesserungen
Version 1.3.0-rc01
5. Oktober 2022
androidx.compose.ui:ui-*:1.3.0-rc01
wird veröffentlicht. Version 1.3.0-rc01 enthält diese Commits.
API-Änderungen
- Die experimentelle API „Hyphens“ wurde hinzugefügt, um die automatische Silbentrennung in Text zu unterstützen (Iaa869)
Fehlerkorrekturen
- Bei
DeviceFontFamilyName
-Schriftarten werden die Varianteneinstellungenwght
undital
standardmäßig nicht konfiguriert. Stattdessen werden die Plattformeinstellungen für geladeneTypeface
verwendet. (Ia7a6d, b/246989332) LazyColumn
-Speicherleck behoben:onModifierLocalsUpdated
wurde bei der Wiederverwendung von Modifikatoren nicht mit dem Standardwert aufgerufen (b/230168389).
Version 1.3.0-beta03
21. September 2022
androidx.compose.ui:ui-*:1.3.0-beta03
wird veröffentlicht. Version 1.3.0-beta03 enthält diese Commits.
API-Änderungen
- Optionen zum Anpassen der Zeilenumbrüche in Text hinzufügen (I86907)
- Das Argument
size:IntSize
wurde in der MethodeTextMeasurer.measure
mitconstraints: Constraints
geändert, um Einschränkungen für die minimale Breite zu unterstützen. (I37530, b/242707525)
Fehlerkorrekturen
- Die
BackHandler
API von AndroidX Activity funktioniert jetzt in einemDialog
-Komposit. (I35342)
Version 1.3.0-beta02
7. September 2022
androidx.compose.ui:ui-*:1.3.0-beta02
wird veröffentlicht. Version 1.3.0-beta02 enthält diese Commits.
API-Änderungen
- Es wurde eine experimentelle Überladung für das Layout hinzugefügt, die eine Liste mehrerer zusammensetzbarer Inhaltslambdas akzeptiert. So können Messwerte, die in verschiedene Inhaltslambdas eingefügt werden, unterschiedlich behandelt werden (Ic1b4e).
Änderungen an experimentellen Focus APIs:
FocusDirection.In
undFocusDirection.Out
werden nicht mehr unterstützt und durchFocusDirection.Enter
undFocusDirection.Exit
ersetzt. (Ia4262, b/183746982)- Es wurden zwei neue Fokuseigenschaften „enter“ und „exit“ hinzugefügt, um ein benutzerdefiniertes Verhalten für
FocusManager.moveFocus(Enter)
undFocusManager.moveFocus(Exit)
anzugeben. (I5f3f9, b/183746982) - Mit
FocusRequester.Cancel
können Sie jetzt einen Fokuswechsel abbrechen.FocusRequester.Cancel
kann in allen folgenden Fokuseigenschaften verwendet werden: oben, unten, links, rechts, nächster, vorheriger, Anfang, Ende, Eingabe und Beenden. (Ib300f)
Version 1.3.0-beta01
24. August 2022
androidx.compose.ui:ui-*:1.3.0-beta01
wird veröffentlicht. Version 1.3.0-beta01 enthält diese Commits.
Modifier-Knoten neu strukturieren
Die Schicht, die Modifier/Modifier.Element
-Instanzen verarbeitet und ihr Verhalten auf LayoutNodes
koordiniert, wurde grundlegend überarbeitet. Diese Refaktorisierung hatte keine Auswirkungen auf die öffentliche API der vielen Modifikatoren in Compose und kann als reine Implementierungsänderung betrachtet werden. Dennoch ist diese Änderung aus verschiedenen Gründen wichtig. (Ie4313)
Änderungsübersicht
Die hinzugefügten experimentellen Modifier.Node
APIs bieten eine Abstraktion, die es ermöglicht, den Status einer Instanz beizubehalten, der über den Lebenszyklus des Layoutknotens beibehalten wird und pro Layoutknoten und pro Verwendung der entsprechenden Modifier.Element
zugewiesen wird, die ihn erstellt hat.
Diese Abstraktion bietet einen alternativen Mechanismus zum Erstellen zustandsorientierter Modifikatoren, ohne sich auf die Mechanismen der Modifier.composed
API zu verlassen.
Risiko
Diese Änderung ist streng binärkompatibel mit früheren Releases und soll im Hinblick auf das beobachtbare Verhalten so weit wie möglich abwärtskompatibel sein. Es gibt jedoch nur wenige Compose-Subsysteme, die von dieser Refaktorisierung nicht betroffen waren. Es ist wahrscheinlich, dass sich das Verhalten auf eine Weise geändert hat, die nicht von unseren Tests abgedeckt wurde und noch nicht gefunden und behoben wurde.
Führen Sie ein Upgrade auf diese Version daher mit Vorsicht durch. Wenn Sie der Meinung sind, dass dadurch etwas nicht mehr funktioniert, teilen Sie uns dies bitte mit.
Experimentelle APIs
Es wurden verschiedene experimentelle APIs hinzugefügt, die sich alle auf das neue Konzept eines „Modifier Nodes“ beziehen. Modifier.Node werden durch Folgendes erstellt:
fun modifierElementOf(…): Modifier
abstract class ModifierNodeElement
abstract class Modifier.Node
abstract class DelegatingNode
interface LayoutModifierNode
interface DrawModifierNode
interface SemanticsNode
interface PointerInputNode
interface ModifierLocalNode
interface ParentDataModifierNode
interface LayoutAwareModifierNode
interface GlobalPositionAwareModifierNode
interface IntermediateLayoutModifierNode
Verhaltensverändernde Änderung
Die maximal unterstützte Höhe in Dialogfeldern und Pop-ups wurde auf 8 dp reduziert.
Die maximal unterstützte Erhöhung für Dialogfelder und Pop-ups für die Nachrichtenerstellung wurde von 30 dp auf 8 dp reduziert. Diese Änderung wirkt sich sowohl auf Material als auch auf benutzerdefinierte Dialogfelder und Pop-ups der Benutzeroberfläche aus. Mit dieser Änderung soll ein Bedienungshilfenfehler in Android-Versionen unterhalb von S behoben und dafür gesorgt werden, dass Bedienungshilfen in diesen Fenstern mit den Inhalten im Dialogfeld oder Pop-up interagieren können.
Sie sind nur dann von dieser Änderung betroffen, wenn Sie ein benutzerdefiniertes Dialogfeld oder Pop-up erstellen, dessen Höhe über 8 dp liegt. Sie können die Höhe des Dialogfelds oder Pop-ups senken. Wenn Sie dieses neue Verhalten deaktivieren möchten, können Sie Ihr eigenes Dialogfeld oder Pop-up mit der gewünschten Höhe festlegen. Dies wird nicht empfohlen, da die Barrierefreiheit dadurch beeinträchtigt werden kann. Der Entwickler muss dafür sorgen, dass der untere Teil des Dialogfelds oder Pop-ups für Dienste zur Barrierefreiheit interaktiv und lesbar ist.
API-Änderungen
- Ein Problem wurde behoben, bei dem
painterResource
bei Konfigurationsänderungen nicht aktualisiert wurde (I58e73, b/228862715) - Für
rememberTextMeasurer
können die ParameterFontFamily.Resolver
,Density
oderLayoutDirection
nicht mehr verwendet werden. Verwenden Sie den KonstruktorTextMeasurer
, um benutzerdefinierte Werte für diese Parameter anzugeben. (Ia1da3) - Die Eigenschaft
DialogProperties.decorFitsSystemWindows
wurde hinzugefügt, damit DialogfelderWindowInsets
unterstützen können. (I57742, b/229378542) - Schriftkonstruktoren wurden zurück in die ursprüngliche Kotlin-Datei verschoben, um die Binärkompatibilität aufrechtzuerhalten. Keine Änderung gegenüber dem letzten stabilen Release. (Ieb2f3)
- Unnötiger Operator aus mehreren Definitionen für „gleich“ entfernt – hat keine Auswirkungen. (I6c309)
FontVariation.Setting
ist eine versiegelte Schnittstelle, die zukünftige APIs zur Leistungsbegrenzung ermöglicht. (I11021, b/143703328)- Fügen Sie
CompositionGroup.findParameters
zuSlotTree.kt
hinzu. So können Tools Parameter für eineCompositionGroup
abrufen, ohne die gesamte Steckplatztabelle analysieren zu müssen. (I124fe)
Version 1.3.0-alpha03
10. August 2022
androidx.compose.ui:ui-*:1.3.0-alpha03
wird veröffentlicht. Version 1.3.0-alpha03 enthält diese Commits.
API-Änderungen
LayoutCoordinates.findRootCoordinates()
ist jetzt öffentlich (I7fa37, b/204723384)- Es wurde eine experimentelle API zum Abrufen von
LayoutCoordinates
inPlacementScope
hinzugefügt. So wissen Entwickler, wo sich das aktuelle Layout befindet, um untergeordnete Elemente relativ zu seiner Position zu platzieren. (I5482b, b/238632578) LayoutCoordinates.transformFrom
wurde hinzugefügt, um die Matrixtransformation von einerLayoutCoordinates
in eine andere zu erhalten. (Ic5ab1, b/238632578)SemanticsModifier.id
wurde eingestellt und die Semantik-ID wurde nachLayoutInfo.semanticsId
verschoben. (Iac808, b/203559524)- 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) - Schriftkonfiguratoren akzeptieren jetzt eine Liste von
FontVariation.Setting
für die Konfiguration variabler Schriftarten auf Geräten der O-Serie und höher. (I11a9d, b/143703328) FontVariation
API zum Definieren und Verwenden variabler Schriftarten hinzufügen (I3c40c, b/143703328)- Der Konstruktor von
LineHeightStyle.Alignment
ist jetzt öffentlich (experimentell) (I4bbbe, b/235876330) - „Absatz“ ist jetzt „erwartet|tatsächlich“ und für Android und Computer definiert. (Id387e, b/239962983)
- Der Abschnitt „Interface“ ist jetzt der Abschnitt „Interface Paragarph“. Es gibt keinen Anwendungsfall für die Unterklasse „Absatz“. Wenn Sie von dieser Änderung betroffen sind, wenden Sie sich bitte an uns. (If5247, b/239962983)
- Die experimentelle Anmerkung wurde aus
PlatformTextStyle
undLineHeightStyle
entfernt. (I64bef) TextInputService.show|hideSoftwareKeyboard
einstellen Verwenden Sie stattdessenSoftwareKeyboardController
im App-Code undTextInputSession
im IME-Verwaltungscode. (I14e4c, b/183448615)- Neue API für vorhandene Animationstypen hinzufügen (I26179)
Fehlerkorrekturen
@RequiresPermission
wurde APIs hinzugefügt, für die die BerechtigungPOST_NOTIFICATIONS
ab SDK 33 gewährt werden muss. (Ie542e, b/238790278)
Version 1.3.0-alpha02
27. Juli 2022
androidx.compose.ui:ui-*:1.3.0-alpha02
wird veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.
API-Änderungen
- Es wurde eine neue Property
PointerInputChange#pressure
hinzugefügt, um den Druck abzurufen. (I45a5e, b/205164819) rememberTextMeasurer
wurde hinzugefügt, umTextMeasurer
-Instanzen in der Zusammensetzung einfach zu erstellen und zu speichern. (I8d66e)Rect
,RoundRect
undMutableRect
unterstützen jetzt die Kotlin-Syntaxin
zum Aufrufen dercontains
-Funktion. (Ie42b0, b/238642990)- Entfernen Sie unnötige Funktionen aus
KeyInjectionScope
, da sie mit einfacheren Teilen der API problemlos implementiert werden können. Zu den entfernten Funktionen gehörenpressKeys
,keysDown
undkeysUp
. (I81d77) - Die Namen von Konstanten und Parametern in
KeyInjectionScope
wurden um das Suffix „Millis“ ergänzt, wenn die Einheiten dieser Konstanten und Parameter Millisekunden sind. (Iabef5) - Die
toStringForLog()
-Methode wurde zuEditCommand
hinzugefügt, um Probleme beim Bearbeiten von Text zu beheben. (I53354, b/228862731) - Es wurde eine
drawText
-Erweiterungsfunktion fürDrawScope
hinzugefügt, um Text mit mehreren Stilen auf Composeables und Modifikatoren zu zeichnen, die auf einemDrawScope
wieCanvas
unddrawBehind
ausgeführt werden. (I16a62, b/190787898) - Einführung einer neuen experimentellen API namens
TextMeasurer
, die die Berechnung beliebiger Textlayouts ermöglicht, die unabhängig von der Compose-Laufzeit identische Ergebnisse wieBasicText
liefern. (I17101) mapTree
zuSlotTree.kt
hinzufügen. So können Tools dieSlotTree
prüfen, ohne vorher eine Kopie im Arbeitsspeicher zu erstellen, wie es bei asTree der Fall ist. Für den Layout-Inspektor bedeutet das eine Leistungssteigerung um etwa das Zehnfache. (I5e113)- Die Vorschau für das Erstellen von Inhalten wird jetzt in binären Ausgabedateien gespeichert, damit Entwickler
MultiPreview
-Anmerkungen aus Bibliotheken schreiben und wiederverwenden können. (I85699, b/233511976)
Fehlerkorrekturen
- Wenn
InputEventChange
-Ereignisse demVelocity
-Tracker hinzugefügt werden, werden jetzt Deltas anstelle von Positionen berücksichtigt. So wird sichergestellt, dass die Geschwindigkeit in allen Fällen korrekt berechnet wird, auch wenn sich das Zielelement bewegt (Icea9d, b/216582726, b/223440806, b/227709803) - Durch
AnnotatedString.toUpperCase
verursachte NPE korrigieren, wenn Anmerkungen vorhanden sind. (I0aca2, b/210899140)
Version 1.3.0-alpha01
29. Juni 2022
androidx.compose.ui:ui-*:1.3.0-alpha01
wird veröffentlicht. Version 1.3.0-alpha01 enthält diese Commits.
API-Änderungen
- Neue
LookaheadLayout
, die einen Vorlauf vor dem tatsächlichen Mess-/Layout unterstützt. So kann das Layout bei Änderungen vorab berechnet werden. Gleichzeitig kann das Mess-/Layout nach dem Vorschauzeitraum die vorab berechnete Größe/Position verwenden, um die Größe und Positionen in Richtung des Ziels zu animieren.SubcomposeLayouts
werden noch nicht unterstützt, aber in einer kommenden Version. (I477f5) - Fügen Sie der Pinselvariante von
TextStyle
undSpanStyle
einen optionalen Alphaparameter hinzu, um die Deckkraft der gesamtenText
zu ändern. (Ic2fac, b/234117635) - Der Anmerkungstyp
UrlAnnotation
und die zugehörigen Methoden wurden eingeführt, um die Unterstützung vonTalkBack
-Links inAnnotatedString
s zu ermöglichen. (I1c754, b/231495122) - Verschieben von Dienstfunktionen in die Laufzeit (I4f729)
Fehlerkorrekturen
TextLayoutResult.getLineForOffset
wird nicht geworfen. (Idc5d6, b/235876324)
Externer Beitrag
- Neue API
WindowInfo.keyboardModifiers
hinzugefügt, um den Status innerhalb von kombinierbaren Funktionen oder über snapshotFlow zu beobachten (Icdb8a)
Version 1.2
Version 1.2.1
10. August 2022
androidx.compose.ui:ui-*:1.2.1
wird veröffentlicht. Version 1.2.1 enthält diese Commits.
Fehlerkorrekturen
- Der Nullzeiger im Inspector wurde behoben (b/237987764).
- Behobene Ausnahme bei der Klassenüberprüfung im Inspector (b/235526153)
Version 1.2.0
27. Juli 2022
androidx.compose.ui:ui-*:1.2.0
wird veröffentlicht. Version 1.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.1.0
Verbesserungen beim Fokuswechsel:
- Das fokusgesteuerte Scrollen von Lazy-Listen funktioniert jetzt mit der neuen
BeyondBoundsLayout
-Core-API - Neue APIs zur Verhaltensanpassung in
FocusOrder
undFocusProperties
- Verbesserte Funktionsweise bei Verwendung der physischen Tastatur oder der Fernbedienung des Fernsehers
- Das fokusgesteuerte Scrollen von Lazy-Listen funktioniert jetzt mit der neuen
Neue APIs für:
- Fenstereinlagen
- Grundlegende Primitive für gestengesteuerte, endlose und Layout-Animationen
GraphicsLayer
Funktionen, darunterRenderEffect
Viele Fehlerkorrekturen und Leistungsverbesserungen
Version 1.2.0-rc03
29. Juni 2022
androidx.compose.ui:ui-*:1.2.0-rc03
wird 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.ui:ui-*:1.2.0-rc02
wurde veröffentlicht. Version 1.2.0-rc02 enthält diese Commits.
Version 1.2.0-rc01
15. Juni 2022
androidx.compose.ui:ui-*:1.2.0-rc01
wird veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.
API-Änderungen
- Schnittstellen in Erstellungsbibliotheken werden jetzt mit jdk8-Standardschnittstellenmethoden erstellt (I5bcf1).
- Wir haben
KeyInjectionScope
Funktionen für übergeordnete Elemente zum Einfügen von Tastendrucken hinzugefügt, während andere Tasten gedrückt gehalten oder aktiviert werden. Dazu gehörenwithKeysDown
,withKeysToggled
usw. Außerdem wurden Eigenschaften hinzugefügt, mit denen geprüft werden kann, ob ein bestimmter Metaschlüssel gedrückt ist, z. B.isCtrlDown
, um zu prüfen, ob einer der Steuertasten gedrückt ist. Weitere Informationen zu den einzelnen Funktionen finden Sie unterKeyInjectionScope
. (I9f6cd, b/229831515) - Es wurde eine experimentelle
OverscrollEffect
eingeführt, die neben denModifier.scrollable
-Überladungen, die sie akzeptieren, benutzerdefinierte Überblendungseffekte ermöglicht. - Die experimentelle
LocalOverScrollConfiguration
wurde ausfoundation.gesture
in das Foundation-Paket verschoben und inLocalOverscrollConfiguration
umbenannt (If19fb, b/204650733) runComposeUiTestWithoutActivity {}
inrunEmptyComposeUiTest {}
umbenennen, damit sie mitcreateEmptyComposeRule()
(I6fed7) übereinstimmt
Version 1.2.0-beta03
1. Juni 2022
androidx.compose.ui:ui-*:1.2.0-beta03
wird veröffentlicht. Version 1.2.0-beta03 enthält diese Commits.
API-Änderungen
pressKeyTimes
sowieisCapsLockOn
und Freunde wurden zuKeyInjectionScope
hinzugefügt. Außerdem unterstützt die API jetzt kombinierte Einschleusungsmuster mit Maus und Tastatur, beispielsweise das Klicken auf eine Maustaste bei gedrückter Metataste. (I4c8da, b/229831515)- Zusätzliche experimentelle Unterstützung für das Einfügen von Schlüsselereignissen. Verwenden Sie
performKeyInput
, um Schlüsselereignisse zu senden, oder senden Sie sie während einer multimodalen Eingabegeste mitperformMultiModalInput
über die Eigenschaftkey
vonMultiModalInjectionScope
. Informationen zur API-Dokumentation finden Sie unterKeyInjectionScope
. (Ic5000, b/229831515) - Fügen Sie eine neue
GoogleFont.Provider.AllFontsListUri
hinzu, um die kanonische Internetquelle der von Android unterstützten Google-Schriftarten abzurufen. - Verbesserte Fehlermeldungen, die ausgegeben werden, wenn Google Fonts im Editor nicht geladen werden kann. (I0416c)
Fehlerkorrekturen
- Wenn Velocity Tracker
InputEventChange
-Ereignisse hinzugefügt werden, werden jetzt Deltas anstelle von Positionen berücksichtigt. So wird sichergestellt, dass die Geschwindigkeit in allen Fällen korrekt berechnet wird, auch wenn sich das Zielelement bewegt (I51ec3, b/216582726, b/223440806, b/227709803) - Die Einstellung
Show Layout Bounds
wird jetzt sofort auf Composeables angewendet, nachdem sie über die Schnelleinstellungskachele aktiviert wurde, ohne dass die Aktivität verlassen und wieder betreten werden muss. (I843d5, b/225937688) - Bei der String-Suche nach Bedienungshilfen wird kein Laden der Schriftart ausgelöst. Bisher wurde versucht, Schriftarten für
StyleSpans
zu laden, was zu Abstürzen führte, wennFontFamily.Resolver
überschrieben wurde. (I4609d) - Wenn Sie die Rückwärtslöschtaste drücken, während sich der Cursor am Ende eines Textfelds befindet, kommt es nicht mehr zu einem Absturz.
- Für
DeleteSurroundingTextCommand
undDeleteSurroundingTextInCodePointsCommand
müssen ihre Konstruktorargumente jetzt nicht negativ sein. (Ica8e6, b/199919707)
Version 1.2.0-beta02
18. Mai 2022
androidx.compose.ui:ui-*:1.2.0-beta02
wird veröffentlicht. Version 1.2.0-beta02 enthält diese Commits.
API-Änderungen
- Funktionen in anderen Vorschautypen wiederverwenden (I19f39)
Fehlerkorrekturen
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
wurde inDisposeOnDetachedFromWindowOrReleasedFromPool
umbenannt, um besser zu verdeutlichen, dass es um die Häufigkeit von Entsorgungen geht, nicht nur um die Häufigkeit, in der sie nicht stattfinden. (If15ca)
Version 1.2.0-beta01
11. Mai 2022
androidx.compose.ui:ui-*:1.2.0-beta01
wird veröffentlicht. Version 1.2.0-beta01 enthält diese Commits.
Neue Funktionen
- Dies ist die erste Betaversion von Version 1.2.
API-Änderungen
- Es wurde eine experimentelle
BeyondBoundsInterval
hinzugefügt, die von benutzerdefinierten Implementierungen vonLazyList
verwendet werden kann, wenn Elemente außerhalb des sichtbaren Bereichs angeordnet werden (Ifabfb, b/184670295) - Schlüsselversionen von
Modifier.composed
sind jetzt als stabile API verfügbar (Ie65e4, b/229988420) - Die
rememberNestedScrollConnection
API wurde vereinfacht, sodass die aktuellen Ansichtsinformationen mithilfe von Komposition-Locals abgerufen werden (I67ca7) - Die Anmerkung
@ComposableTarget
und mit@ComposableTargetMarker
gekennzeichnete Anmerkungen können jetzt mit dem Präfix@file
auf Dateiebene verwendet werden. Bei Verwendung einer Zielannotation auf Dateiebene geht der Compiler davon aus, dass alle zusammensetzbaren Funktionen in der Datei auf den zugehörigen Applier ausgerichtet sein sollen. Wenn Sie beispielsweise@file:UiComposable
verwenden, wird damit angegeben, dass alle@Composable
-Funktionen auf den Compose UI-Applier ausgerichtet sind. Eine Funktion, die auf einen anderen Applier ausgerichtet werden soll, muss die Zielmarkierungsanmerkung für den gewünschten Applier explizit angeben. (I40804) Einführung einer neuen experimentellen, plattformunabhängigen Test-API:
interface ComposeUiTest
undfun runComposeUiTest(block: ComposeUiTest.() -> Unit)
, mit denen Compose-UI-Tests ohneTestRule
ausgeführt werden können. Wenn Sie einen Test ohneComposeTestRule
ausführen möchten, übergeben Sie den Test als Lambda anrunComposeUiTest
und verwenden Sie die Methoden und Mitglieder im EmpfängerbereichComposeUiTest
, die mit denen inComposeContentTestRule
identisch sind.Die Android-spezifischen
interface AndroidComposeUiTest
undfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
werden hinzugefügt, um Zugriff auf die zugrunde liegende Aktivität zu gewähren, ähnlich wie beiAndroidComposeTestRule
. Für noch mehr Kontrolle können Sie eineclass AndroidComposeUiTestEnvironment
selbst instanziieren.Die Desktop-Implementierung ist die
class DesktopComposeUiTest
. Derzeit werden jedoch keine desktopspezifischen Ausführungsfunktionen angeboten.So können Sie einen Test von
ComposeTestRule
zuComposeUiTest
migrieren (Android-Beispiel). Von:@RunWith(AndroidJUnit4::class) class MyTest { @get:Rule val rule = createComposeRule() @Test fun test() { rule.setContent { Text("Hello Compose!") } rule.onNodeWithText("Hello Compose!").assertExists() } }
Sie haben folgende Optionen:
@RunWith(AndroidJUnit4::class) class MyTest { @Test @OptIn(ExperimentalTestApi::class) fun test() = runComposeUiTest { setContent { Text("Hello Compose!") } onNodeWithText("Hello Compose!").assertExists() } }
Derzeit sind
ComposeContentTestRule
undComposeTestRule
keine Erweiterungen vonComposeUiTest
. Das bedeutet, dass Erweiterungsfunktionen fürComposeUiTest
noch nicht über dieTestRule
-Benutzeroberfläche aufgerufen werden können. WennComposeUiTest
zur stabilen API wird, werdenComposeContentTestRule
undComposeTestRule
so geändert, dass sie vonComposeUiTest
ausgehen. (Ib4e90)LineHeightBehavior
wird inLineHeightStyle
umbenannt.LineVerticalAlignment
wird inLineHeightStyle.Alignment
umbenannt.Umbenennen
LineHeightTrim
wird inLineHeightStyle.Trim
umbenanntStandardkonstruktorwerte aus
LineHeightStyle
werden entfernt (I582bf, b/181155707).Brush
wurde zuTextStyle
undSpanStyle
hinzugefügt, um Text mit Farbverlauf zeichnen zu können. (I53869, b/187839528)Die Attribute
trimFirstLineTop
undtrimLastLineBottom
vonLineHeightBehavior
wurden in ein einzelnes Enum geändert:LineHeightTrim
.LineHeightTrim
hat vier Status, die durch zwei Boolesche Werte definiert sind:FirstLineTop
,LastLineBottom
, „Beide“ und „Keiner“ (Ifc6a5, b/181155707)LineHeightBehavior
wurde zuTextStyle
undParagraphStyle
hinzugefügt. MitLineHeightBehavior
wird festgelegt, ob die Zeilenhöhe auf den Anfang der ersten Zeile und auf das Ende der letzten Zeile angewendet wird. Außerdem definiert er die Ausrichtung der Linie in dem durchTextStyle(lineHeight)
vorgegebenen Feld.So ist es beispielsweise möglich, ein Verhalten zu erzielen, das dem über
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
definierten Verhalten von Preisvergleichsportalen ähnelt.trimFirstLineTop
- undtrimLastLineBottom
-Konfigurationen funktionieren nur dann richtig, wennincludeFontPadding
auf „falsch“ gesetzt ist. (I97332, b/181155707)Die Funktionen
PlatformParagraphStyle.lerp
undPlatformSpanStyle.lerp
wurden in Funktionen der obersten Ebene geändert (I9a268).
Fehlerkorrekturen
- In der
PointerInputChange::copy
-Dokumentation wird jetzt korrekt angegeben, dass es sich um eine oberflächliche Kopie handelt. (I182f5) - Unterstützung von Auslassungspunkten, wenn die Höhe begrenzt ist und nicht alle Textzeilen passen (Ie528c, b/168720622)
- Standardmäßig aktiviert:
includeFontPadding
. Sie könnenincludeFontPadding
mit dem AttributTextStyle.platformTextStyle
deaktivieren. In naher Zukunft werden wir das Standardverhalten ändern. Bis dahin können wir jedoch Verbesserungen an der Zeilenhöhe (aosp/2058653) besser integrieren undTextField
-Clipping-Probleme beheben. (I01423, b/171394808)
Externer Beitrag
MouseInjectionScope.scroll(delta = someDelta)
wird jetzt auf Android-Geräten umgekehrt, wenn vertikal gescrollt wird. Wenn someDelta positiv ist, wird nach unten gescrollt. (Ifb697, b/224992993)
Version 1.2.0-alpha08
20. April 2022
androidx.compose.ui:ui-*:1.2.0-alpha08
wird veröffentlicht. Version 1.2.0-alpha08 enthält diese Commits.
API-Änderungen
- Die
pluralStringResource
-Funktionen wurden als experimentell gekennzeichnet, um die zukünftige Internationalisierung für die Weiterentwicklung zu ermöglichen. (If24e4) - Für „Absatz“ und „Mehrere Absätze“ kann jetzt der Parameter „Einschränkungen“ verwendet werden. Wenn Sie
Constraints.maxHeight
übergeben, geschieht derzeit nichts. In Zukunft können Sie damit jedoch einige Berechnungen durchführen, z. B. eine elliptische Form basierend auf der Höhe. (I6afee, b/168720622) - Für
SubcomposeSlotReusePolicy.getSlotsToRetain()
wird jetzt eine benutzerdefinierte Klasse vom Typ „MutableSet“ akzeptiert, in der keine neuen Elemente hinzugefügt werden können. (Icd314) - „PointerIcon“ ist jetzt eine
@Stable
-Schnittstelle (I9dafe) - Der teilweise Verbrauch (nach unten ODER Position) wurde in
PointerInputChange
eingestellt. Mitconsume()
können Sie die Änderung vollständig übernehmen. MitisConsumed
kannst du feststellen, ob jemand anderes die Änderung bereits verwendet hat. PointerInputChange::copy()
erstellt jetzt immer eine flache Kopie. Das bedeutet, dass Kopien vonPointerInputChange
verbraucht werden, sobald eine der Kopien verbraucht wurde. Wenn Sie eine nicht gebundenePointerInputChange
erstellen möchten, verwenden Sie stattdessen den Konstruktor. (Ie6be4, b/225669674)- Aktivieren Sie die verschachtelte Scroll-Interoperabilität zwischen „Compose“ und „View“ in der Richtung „Compose“ > „View“. Das bedeutet, dass ein übergeordneter Editor auch verschachtelte Scroll-Deltas aus einer verschachtelten Scroll-Ansicht empfangen kann. (If7949, b/174348612)
- Neue
SemanticsProperty testTagsAsResourceId
, mit der Compose an UIAutomator-Tests angepasst werden kann, die für das View-System entwickelt wurden. (I39c20) - Wenn Sie
FontFamily.SansSerif
verwenden, werden alle verfügbaren Schriftschnitte für Systemschriften auf Android-Geräten angezeigt. In API 21–28 werden dann intern Fallback-Schriftnamen wie „sans-serif-medium“ verwendet. Dies ist eine Verhaltensänderung, da bisher nur die Gewichtungen 400 und 700 von API 21 bis 28 unterstützt wurden. (I380fe, b/156048036, b/226441992) - Bei Absätzen und mehreren Absätzen wurden Positionsargumente vor die optionalen Argumente verschoben. (Idafaa)
AndroidFont
nimmt jetzt typefaceLoader als Konstruktorparameter an. (I2c971)
Version 1.2.0-alpha07
6. April 2022
androidx.compose.ui:ui-*:1.2.0-alpha07
wird veröffentlicht. Version 1.2.0-alpha07 enthält diese Commits.
API-Änderungen
- Die neue Funktion
Snapshot.withoutReadObservation { ... }
wurde hinzugefügt. So können Nutzer das übergebene Lambda ausführen, ohne die Änderungen der Statuswerte zu abonnieren, die in diesem Block gelesen werden. Diese Funktion kann in Anwendungsfällen nützlich sein, in denen Sie von den snapshotbasierten threadsicheren Schreib-/Lesevorgänge profitieren möchten, den Wert aber lesen möchten, ohne unnötige Neuzusammensetzungen oder Neumessungen zu verursachen. (I9f365, b/214054486) - Mit der Erweiterungseigenschaft
consumeWindowInsets
vonComposeView
können Entwickler die Nutzung von AndroidWindowInsets
deaktivieren. So können separateComposeViews
in der Hierarchie jeweilsWindowInsets
anwenden, ohne sich gegenseitig zu stören. (I0ef08, b/220943142) KeyboardType.Decimal
wurde als Alternative zuKeyboard.Number
hinzugefügt, um das Dezimaltrennzeichen speziell in die Eingabemethode einzuschließen. (Iec4c8, b/209835363)PointerEventType.Scroll
undPointerEvent.scrollDelta
sind jetzt stabile APIs (I574c5, b/225669674)- Hiermit wird die Interoperabilität zwischen „View“ und „Compose“ für zusammengehörige View-Klassen aktiviert. Das bedeutet, dass das Editor-Tool jetzt Scroll-Deltas an ein übergeordnetes Element der übergeordneten Datenansicht (mitwirkend) senden kann. (I5d1ac, b/174348612)
FontFamily.Resolver
wurde aktualisiert, um die systemweite Einstellung für fett formatierten Text zu integrieren (I6c1e7)Font(AssetManager, String, ...)
wurde verworfen und durchFont(String, AssetManager, ...)
ersetzt. Dies ist eine experimentelle API. (I1c7a4)- Fügen Sie den neuen Schriftart-Beschreibungsblock
Font(DeviceFontFamilyName)
hinzu, um bei Schriftart-Fallback-Ketten optional systeminstallierte Schriftarten abzurufen. (I30468, b/219754572) - Es wurde eine temporäre Kompatibilitätskonfiguration für
includeFontPadding
in TextStyle/ParagraphStyle hinzugefügt.includeFontPadding
kann überTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
geändert werden. Dies ist eine vorübergehende Konfigurationsoption, um die Migration zu aktivieren. Sie wird entfernt. (If47be, b/171394808) GoogleFont.Provider.isAvailableOnDevice
-Erweiterung für Hilfe bei der Fehlerbehebung hinzufügen. (I64e31)GoogleFont.Provider
-Konstruktor für die Verwendung mit@ArrayRes
hinzufügen (Ic5ee1, b/225984280)Compose GoogleFont
heißt jetztFont(GoogleFont)
. Die API bleibt ansonsten stabil. (I125f2)
Fehlerkorrekturen
- Dem Material/Scaffold wurde eine Lint-Prüfung hinzugefügt, um sicherzustellen, dass das innere Padding verwendet wird (Ifb111)
Version 1.2.0-alpha06
23. März 2022
androidx.compose.ui:ui-*:1.2.0-alpha06
wird veröffentlicht. Version 1.2.0-alpha06 enthält diese Commits.
API-Änderungen
- Die
RequestFocus
-Semantikaktion wurde hinzugefügt, um den Fokus auf das fokussierbare Ziel zu setzen. (I17b71) - Das Parsen von Vektorgrafiken wurde aktualisiert, um die automatische Spiegelung zu unterstützen, mit der der Inhalt einer
VectorPainter
gedreht wird, wenn die aktuelle Layoutrichtung „Rechts nach links“ ist. (I79cd9, b/185760237) Die Schatten-/Umgebungsfarben wurden zu nachgestellten Parametern von
Modifier.graphicsLayer
geändert, um die API-Kompatibilität zu verbessern (I3f864, b/160665122)Standardimplementierungen für Schatten-/Umgebungsfarbe in
GraphicsLayerScope
hinzugefügt, um abwärtskompatible API-Änderungen zu ermöglichenVeranstaltungszeit zu RSB-Veranstaltungen hinzugefügt (Ief8ae)
FocusOrder
wurde jetzt inFocusProperties
zusammengeführt undfocusProperties()
bietet jetzt alle Funktionen vonfocusOrder()
.FocusOrder
undfocusOrder()
wurden eingestellt.focusOrder()
, das einfocusRequester
akzeptiert, sollte durch einenfocusRequester()
-Modifikator in Kombination mitfocusProperties()
ersetzt werden. So können die Modifikatoren besser voneinander getrennt werden. (I601b7)Wenn Sie sowohl
RecyclerView
als auchCompose
aktualisieren, wird die Scrollleistung von RecyclerViews mit Compose-Ansichten als untergeordnete Elemente jetzt deutlich verbessert.ViewCompositionStrategy.Default
hinzufügen, um die integrierte Standardstrategie abzurufenFügen Sie
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
hinzu. Dies ist die neue Standardstrategie, die das Pooling von Containern wie RecyclerView korrekt verarbeitet. (If7282)Es wurde die Unterstützung für Anmerkungsklassen mit @Preview hinzugefügt, als erster Schritt zur Einführung der Funktion „Mehrere Vorschaubilder“. Solche Anmerkungen könnten verwendet werden, um zusammensetzbare Methoden oder andere Anmerkungsklassen zu annotieren, die dann als indirekt mit der gegebenen @Preview annotiert angesehen werden könnten. (I12eff)
Referenzgeräte wurden der Geräteliste für @Preview (I071c9) hinzugefügt
Fehlerkorrekturen
- Die APIs für Vektorgrafiken wurden aktualisiert, um die richtige Anmerkung „@VectorComposable“ anstelle von „@UiComposable“ zu verwenden (I942bc)
- Querverweis aus
AnnotatedString.Builder.withStyle
(If84d5) entfernen
Externer Beitrag
- compose-ui:
GraphicsLayerScope
-PropertiesambientShadowColor
undspotShadowColor
hinzufügen (I1ba1a, b/160665122) - Mehrere Ressourcen werden jetzt über die
pluralStringResource
-Funktionen unterstützt. (Ib2f23, b/191375123)
Version 1.2.0-alpha05
9. März 2022
androidx.compose.ui:ui-*:1.2.0-alpha05
wird veröffentlicht. Version 1.2.0-alpha05 enthält diese Commits.
API-Änderungen
- Für
TextToolbar
werden jetzt Lambda-Argumente anstelle vonActionCallback
verwendet. (Ib2eb9, b/197950089) - Die Nullbarkeit in „core“ und „appcompat“ wurde an Tiramisu DP2 (I0cbb7) angepasst.
- Die gemessene Benutzeroberfläche enthält jetzt die Property „parentData“ (I3313f).
Modifier.onPlaced
und dieOnPlacedModifier
-Benutzeroberfläche sind jetzt stabil. (Ib5482)- Super! Die Einstellung „Animator duration scale“ (Animationsdauerskala) in den Entwickleroptionen wird jetzt bei der Erstellung von Animationen unterstützt. (I5a4fc, b/161675988)
- Lokale
BeyondBoundsLayout
-Anpassung hinzugefügt (If8b51, b/184670295) - Text: includeFontPadding ist jetzt standardmäßig deaktiviert. Die Clipping-Probleme infolge von
includeFontPadding=false
werden verarbeitet und bei hohen Skripts sollte kein Begrenzung auftreten. (I31c84, b/171394808)
Fehlerkorrekturen
ComposeContentTestRule.setContent
löst jetzt eineIllegalStateException
aus, wenn Sie versuchen, Inhalte festzulegen, die bereits vorhanden sind. (I888a5, b/199631334)- Ein Absturz, der durch den Inhalt der Zwischenablage beim Lesen aus der Zwischenablage auf Android-Geräten verursacht wurde, wurde behoben. (I06020, b/197769306)
- Verbessern Sie die Scrollproben für das RSB. (I6a596)
Externer Beitrag
- Aktualisiert auf Kotlinx-Coroutines 1.6.0 (I3366d)
Version 1.2.0-alpha04
23. Februar 2022
androidx.compose.ui:ui-*:1.2.0-alpha04
wird veröffentlicht. Version 1.2.0-alpha04 enthält diese Commits.
API-Änderungen
Die Funktionen
ComposableTarget
,ComposableTargetMarker
undComposableOpenTarget
wurden hinzugefügt. Damit können Sie zur Kompilierungszeit Berichte dazu erhalten, wann eine zusammensetzbare Funktion auf einen Anwender angewendet wird, für den sie nicht vorgesehen ist.In den meisten Fällen können die Annotationen vom Compose-Compiler-Plug-in abgeleitet werden. Die direkte Verwendung dieser Annotationen sollte daher selten sein. 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 Anwendern müssen die zusammensetzbaren Funktionen, die
ComposeNode
oderReusableComposeNode
aufrufen, eineComposableTarget
-Anmerkung für die Funktion und alle zusammensetzbaren Lambda-Parametertypen hinzufügen. Es wird jedoch empfohlen, eine Anmerkung zu erstellen, die mitComposableTargetMarker
gekennzeichnet ist, und dann die gekennzeichnete Anmerkung anstelle vonComposableTarget
direkt zu verwenden. Eine zusammensetzbare Annotation mit der KennzeichnungComposableTargetMarker
entspricht einerComposbleTarget
, bei der der vollständig qualifizierte Name der Attributklasse als Anwendungsparameter verwendet wird. Ein Beispiel für die Verwendung vonComposableTargetMarker
finden Sie unteranroidx.compose.ui.UiComposable
. (I38f11)Font(resId, ...)
übernimmt „loadStrategy“ für die stabile API. (Ief3d2)FontLoadingStrategy
ist jetzt eine stabile API. (I1ee35, b/174162090)Unterstützung des asynchronen Ladens von Schriftarten in Text (I77057, b/214587005)
Bridge API zum Konvertieren benutzerdefinierter
Font.ResourceLoader
inFontFamily.Resolver
hinzufügen (Ia0060)
Fehlerkorrekturen
- Vorausgesetzt,
FontFamily.Resolver
werden an Unterkompositionen wie Popup übergeben. - Die angegebenen
Font.ResourceLoader
werden an Unterkomponenten wie Pop-up übergeben. (I48fa5)
Version 1.2.0-alpha03
9. Februar 2022
androidx.compose.ui:ui-*:1.2.0-alpha03
wird veröffentlicht. Version 1.2.0-alpha03 enthält diese Commits.
API-Änderungen
- Die
notifyFocusedRect
-Methoden inTextInputSession
undTextInputService
sind jetzt veraltet und werden nicht mehr aufgerufen. Verwenden Sie stattdessenBringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874) - Einführung der
destroyDisplayListData
-Methode in derRenderNode
-Stub-Klasse (I1e659, b/216660268) - Es wurde eine neue API hinzugefügt, mit der Sie die untergeordneten Elemente von
SubcomposeLayout
, die Sie vorab zusammengestellt haben, vorab messen können. (I857ea) Es wurde
movableContentOf
hinzugefügt, mit dem eine kombinierbare Lambda-Funktion in eine Lambda-Funktion umgewandelt wird, die ihren Status und die entsprechenden Knoten an jeden neuen Ort verschiebt, an dem sie aufgerufen wird. Wenn der vorherige Aufruf die Zusammensetzung verlässt, wird der Zustand vorübergehend beibehalten. Wenn ein neuer Aufruf der Lambda-Funktion in die Zusammensetzung eintritt, werden der Zustand und die zugehörigen Knoten an den Speicherort des neuen Aufrufs verschoben. Wenn kein neuer Aufruf hinzugefügt wird, wird der Status dauerhaft entfernt und Beobachter werden benachrichtigt.Wenn ein
movableContentOf
-Lambda in derselben Komposition mehrmals aufgerufen wird, werden für jeden Aufruf ein neuer Status und neue Knoten erstellt. Wenn Aufrufe die Komposition verlassen und neue Aufrufe eingehen, wird der Status in der Reihenfolge, in der sie aufgerufen werden, von den ersten ausgehenden Aufrufen zu den eingehenden Aufrufen verschoben. Alle Status, die nicht durch neue Aufrufe beansprucht werden, werden dauerhaft entfernt. (Ib4850)FontFamilyResolver
ist jetzt überLocalFontFamilyResolver.current
verfügbarcreateFontFamilyResolver(context)
undcreateFontFamilyResolver(context, coroutineScope)
wurden hinzugefügt, um neue FontFamily-Resolver außerhalb des Editors zu erstellen.Für „Absatz“ und „Mehrere Absätze“ wird jetzt
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
enthält jetzt den für dieses Layout verwendeten Resolver.TextLayoutResult.layoutInput.resourceLoader
wurde eingestellt, da er nicht mehr verwendet wird. (Id5a45, b/174162090)Unterstützung für asynchrones und optionales Laden von Schriftarten mit Fallback-Verhalten Dieser Pfad wird von „Text“ und „Textfeld“ verwendet und über „FontFamilyResolver“ freigegeben.
Unterstützung für das Vorabladen von Schriftarten über
FontFamilyResolver.preload
Mit
FontFamilyResolver.setAsyncLoadContext
kann der globale Koroutinekontext festgelegt werden, der zum Laden asynchroner Schriftarten verwendet wird. (I87fe8, 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, optionales Auffinden vorinstallierter 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 um die Unterstützung für optionales und asynchrones Laden von Schriftarten erweitert. Es wird nicht empfohlen, dass Anwendungsentwickler diese API direkt verwenden. Informationen zum Hinzufügen neuer Schriftarten finden Sie unterAndroidFont
.Mit der Erweiterungsfunktion
Font.AndroidResourceLoader
kann eineFont.ResourceLoader
außerhalb einer Komposition erstellt werden.Dem Parameter
loadingStrategy
für ressourcenbasierte Schriftarten wurde ein Parameter hinzugefügt, um das asynchrone Laden zu ermöglichen, wenn die ressourcenbasierte Schriftart auf herunterladbare Schriftarten-XML verweist. (Ie5aea, b/174162090)Der
Typeface(FontFamily)
-Konstruktor wurde verworfen. Bisher wurde diese Funktion verwendet, um Schriftarten vorab zu laden. Das kann bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern. Bei herunterladbaren Schriftarten kann dieser Aufruf 10 Sekunden lang blockiert werden. Verwenden Sie stattdessenFontFamilyResolver.preload
.fontResource(FontFamily): Typeface
wurde eingestellt. Dies wurde früher zum Vorabladen von Schriftarten verwendet, was bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern kann. Verwenden Sie stattdessenFontFamilyResolver.preload
(If8e7c, b/174162090).Der
SubcomposeLayoutState
-Konstruktor, dermaxSlotsToRetainForReuse
akzeptiert, wurde eingestellt. Stattdessen gibt es einen neuen Konstruktor, derSubcomposeSlotReusePolicy
akzeptiert. Diese neue Schnittstelle ermöglicht eine detailliertere Steuerung der Slots, die für die spätere Wiederverwendung beibehalten werden sollen. (I52c4d)Die HSV- und HSL-Funktionen in
Color
werden als nicht experimentelle API bereitgestellt. Der Oklab-Farbraum ist jetzt eine öffentliche API. (I08fb6, b/180731008)Das
AndroidComposeTestRule.AndroidComposeStatement
wurde verworfen, da es nicht für die öffentliche API vorgesehen war und für Sie nichts bewirkt hat. (Ibc46b)Intern generierte kt-Klassenbenennung (Ia0b9e, b/174162090)
FontLoadingStrategy.values
(I42a9d, b/174162090) entferntDer globale Schrift-Lademechanismus heißt jetzt
FontFamilyResolver
. (I4f773, b/174162090)Neues System zum Laden von Schriftarten für Computer verwenden (I9ce5c, b/174162090)
FontFamily.Resolver.resolve
gibtState<Any>
zurück (I4406c, b/174162090)
Fehlerkorrekturen
- Textfelder werden jetzt über der Tastatur angezeigt, wenn sie den Fokus haben und die Tastatur angezeigt wird, wenn der Modus für die Eingabehilfe
ADJUST_PAN
ist. (I8eaeb, b/190539358, b/192043120) - Auf dem Computer wird die lokale Zusammensetzung für „
FontFamily.Resolver
“ verwendet FontLoader
wurde für Computer eingestellt- Neue
createFontFamilyResolver
-Fabrik auf dem Computer (I6bbbb, b/174162090) - Der Eingabetyp der Soft-Tastatur flackert nicht mehr, wenn der Fokus zwischen Textfeldern wechselt. (I1bf50, b/187746439)
Version 1.2.0-alpha02
26. Januar 2022
androidx.compose.ui:ui-*:1.2.0-alpha02
wird veröffentlicht. Version 1.2.0-alpha02 enthält diese Commits.
API-Änderungen
Modifier.onRotaryScrollEvent()
undModifier.onPreRotaryScrollEvent()
für Wear-Geräte mit einer drehbaren seitlichen Taste hinzugefügt (I18bf5, b/210748686)- Experimentelle
View.createLifecycleAwareRecomposer
-Erweiterung (I0cde6) hinzufügen
Externer Beitrag
PointerEvent.scrollDelta.y
ist jetzt auf Android-Geräten invertiert. Wenn das Mausrad nach rechts geneigt wird, wird jetzt „1“ statt „-1“ zurückgegeben. (Ia9811)
Version 1.2.0-alpha01
12. Januar 2022
androidx.compose.ui:ui-*:1.2.0-alpha01
wird veröffentlicht. Version 1.2.0-alpha01 enthält diese Commits.
API-Änderungen
FontFamily.canLoadSynchronously
wurde eingestellt. Dieses Attribut hat keine semantische Bedeutung. (Ica5ef)- Dem Feld
CompositionData
wurde ein Identitätsfeld hinzugefügt, um im Layout-Inspektor invariante IDs zu generieren. (Ic116e) - Wear OS-Geräte-IDs wurden der Liste der Vorschaugeräte hinzugefügt (I93232).
Abhängigkeitsupdates
- Jetzt abhängig von Kotlin-
1.6.10
.
Version 1.1
Version 1.1.1
23. Februar 2022
androidx.compose.ui:ui-*:1.1.1
wird veröffentlicht. Version 1.1.1 enthält diese Commits.
Fehlerkorrekturen
- Fehler bei
NullPointerException
unterandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
beheben (aosp/1947059, b/206677462) - Ein Absturz wurde behoben, der beim Lesen aus der Zwischenablage unter Android durch Inhalte in der Zwischenablage verursacht wurde. (I06020, b/197769306)
- RTL in
LazyVerticalGrid
korrigiert (aosp/1931080, b/207510535)
Version 1.1.0
9. Februar 2022
androidx.compose.ui:ui-*:1.1.0
wird 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
- Im Vergleich zu Compose 1.0 wird der Layoutbereich von Materialkomponenten erweitert, um die Richtlinien für Bedienungshilfen von Material Design für die Größe von Touch-Zielelementen einzuhalten. So wird beispielsweise der Berührungszielbereich einer Schaltfläche auf eine Mindestgröße von 48 x 48 dp erweitert, auch wenn Sie die Größe der Schaltfläche kleiner festlegen. Dadurch wird das Kompositionsmaterial auf das gleiche Verhalten der Material Design-Komponenten abgestimmt, was ein einheitliches Verhalten ermöglicht, wenn du „View“ und „Compose“ mischst. Durch diese Änderung werden auch die Mindestanforderungen an die Barrierefreiheit von Touch-Zielen erfüllt, wenn Sie Ihre Benutzeroberfläche mit Compose Material-Komponenten erstellen.
- Stabile Unterstützung für den Navigationsstreifen
- Eine Reihe zuvor experimenteller APIs wird in stabile APIs überführt
- Unterstützung für neuere Kotlin-Versionen
Version 1.1.0-rc03
26. Januar 2022
androidx.compose.ui:ui-*:1.1.0-rc03
wird 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.ui:ui-*:1.1.0-rc01
wird veröffentlicht. Version 1.1.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Ein Fehler wurde behoben, durch den die Bildlaufaktionen für die Barrierefreiheit fehlten (I7cbfb)
SemanticsNodeInteraction.captureToImage()
funktioniert jetzt auch, wennHardwareRenderer.isDrawingEnabled()
=false
ist. Dazu muss es für die Dauer des Anrufs aktiviert werden (Idf3d0).
Version 1.1.0-beta04
1. Dezember 2021
androidx.compose.ui:ui-*:1.1.0-beta04
wird veröffentlicht. Version 1.1.0-beta04 enthält diese Commits.
Neue Funktionen
- Aktualisiert für die Kompatibilität mit Kotlin
1.6.0
API-Änderungen
- Bereinigung der Nullbarkeit in
androidx.core.view
(I7078a, b/204917439) - Es wurden experimentelle APIs hinzugefügt, mit denen Nutzer PointerInputchange als Ganzes nutzen oder prüfen können, ob sie verwendet wurde. (I2e59d)
- Unterstützung für Mausrad-Ereignisse in der UI-Ebene (Ia14eb, b/198214718)
- Fügen Sie experimentelle
Modifier.composed
-Überlastungen hinzu, die Schlüssel für den Vergleich auf Gleichheit akzeptieren und zum Überspringen von Optimierungen berechtigt sind. (Ice799, b/205851704) ComposeNotIdleException
geht jetzt vonException
aus und nicht direkt vonThrowable
. Das bedeutet, dass Catch-Sätze, die zuvorException
abgefangen haben, jetzt möglicherweiseComposeNotIdleException
abfangen. (I9c217)
Fehlerkorrekturen
- Text-Ziehpunkte bewegen sich nicht mehr, wenn sich die Sichtbarkeit der IME ändert. (I25f2e)
Version 1.1.0-beta03
17. November 2021
androidx.compose.ui:ui-*:1.1.0-beta03
wurde veröffentlicht. Version 1.1.0-beta03 enthält diese Commits.
API-Änderungen
- Der neue Modifikator „Modifier.onPlaced“ wurde hinzugefügt, um die Platzierung zu erfassen. Basierend auf der beobachteten Placement-Änderung können daher weitere Änderungen am Offset des untergeordneten Modifiers vorgenommen werden. (I558fd)
InjectionScope.flush()
undInjectionScope.dispose()
wurden entfernt. Das Ausgeben aller Ereignisse und das Entfernen des Gültigkeitsbereichs erfolgt jetzt wie zuvor am Ende der aufgerufenen Methode „perform*Input()“. (I2bed8)MultiModalInjectionScope.Touch
undMultiModalInjectionScope.Mouse
wurden entfernt. Wenn Sie Touch- und Mausereignisse für multimodale Touch-Gesten einfügen möchten, können Sie jetztMultiModalInjectionScope.touch()
undMultiModalInjectionScope.mouse()
verwenden. Beide akzeptieren ein Lambda, das den Empfängerbereich dieser Modalität hat. (Idde18)
Fehlerkorrekturen
- Der Standardwert für
durationMillis
inTouchInjectionScope.swipeWithVelocity
wird jetzt so berechnet, dass das Wischen möglich ist. (I19deb)
Version 1.1.0-beta02
3. November 2021
androidx.compose.ui:ui-*:1.1.0-beta02
wird veröffentlicht. Version 1.1.0-beta02 enthält diese Commits.
API-Änderungen
- Die experimentelle BringIntoView API wurde hinzugefügt. Damit können Sie eine Anfrage an die Eltern senden, damit sie scrollen, um einen Artikel in den Blick zu bekommen (Ib918d, b/195353459)
- Neue Animations-APIs für die Unterstützung von Tools. Insbesondere ermöglichen sie es, mithilfe von Tools die Animationen und ihre Konfigurationen in Übergängen zu prüfen. (I4116e)
Externer Beitrag
- Modifier.pointerHoverIcon (I95f01) wurde hinzugefügt.
Version 1.1.0-beta01
27. Oktober 2021
androidx.compose.ui:ui-*:1.1.0-beta01
wird veröffentlicht. Version 1.1.0-beta01 enthält diese Commits.
API-Änderungen
- Es wurde eine experimentelle
BringIntoView
API hinzugefügt, mit der Sie eine Anfrage an Eltern senden können, damit sie scrollen, um einen Artikel sichtbar zu machen (Ib918d, b/195353459) - Neue Animations-APIs für die Unterstützung von Tools. Insbesondere ermöglichen sie es, mithilfe von Tools die Animationen und ihre Konfigurationen in Übergängen zu prüfen. (I4116e)
Version 1.1.0-alpha06
13. Oktober 2021
androidx.compose.ui:ui-*:1.1.0-alpha06
wird veröffentlicht. Version 1.1.0-alpha06 enthält diese Commits.
API-Änderungen
- Entfernen Sie
ExperimentalComposeUiApi
ausViewRootForInspector
undLayoutInfo.ownerViewId
(I5c2e3) - Eine Überlastung ohne Kinder für Layout wurde mit verbesserter Effizienz hinzugefügt (Ib0d9a).
InternalCompilerApi
wurde aus Composer-Methoden entfernt, die modulübergreifend aufgerufen werden müssen (I1aa0b)SemanticsNodeInteraction.performSemanticsAction
gibt jetzt denSemanticsNodeInteraction
-Wert zurück, auf dem die Funktion aufgerufen wurde. (I9e5db)- LocalInputModeManager CompositionLocal hinzugefügt, um den Touch- oder Nicht-Touch-Modus zu erkennen. (I6a83c, b/175899786)
viewConfiguration: ViewConfiguration
wurde zuLayoutInfo
hinzugefügt, damit Nutzer den richtigen Wert für Dinge wie eine Zeitüberschreitung beim langen Drücken erhalten. (I76ca6)viewConfiguration: ViewConfiguration
wurde zuInjectionScope
hinzugefügt, damit Tests die Einschleusung der Eingabe anhand von Faktoren wie Zeitlimits durch langes Drücken oder Touch-Slop anpassen können.- Die Standarddauer für langes Drücken und Doppeltippen wurde sowohl für die Touch- als auch die Mauseingabe geändert. Sie basiert jetzt auf den Werten in
InjectionScope.viewConfiguration
.
- Implementierung von „ExposedDropdownMenu“ basierend auf „ExposedDropdownMenuBox“ mit „TextField“ und „DropdownMenu“ (If60b2)
- „closeOnOutsideClick“ wurde zu PopupProperties hinzugefügt, wodurch die eingestellte Funktion „ „ „distOnOutsideClick“ ersetzt" ersetzt wurde. Die neue Property empfängt die Klickposition und die Ankergrenzen, sodass Sie genauer festlegen können, ob onDismissRequest aufgerufen werden soll oder nicht. So lässt sich beispielsweise verhindern, dass der Anker bei Berührungen geschlossen wird.
- „updateAndroidWindowManagerFlags“ wurde zu „PopupProperties“ hinzugefügt und bietet eine Low-Level-Steuerung der Flags, die vom Pop-up an den Android WindowManager übergeben werden. Der Parameter der Lambda-Funktion sind die Flags, die aus den PopupProperties-Werten berechnet werden und zu WindowManager-Flags führen, z.B. „focusable“. Das Ergebnis des Lambdas sind die endgültigen Flags, die an den Android WindowManager übergeben werden. Standardmäßig bleiben die aus den Parametern berechneten Flags durch updateAndroidWindowManagerFlags unverändert. Diese API sollte mit Vorsicht verwendet werden und nur in Fällen, in denen das Pop-up sehr spezifische Verhaltensanforderungen hat. (I6e9f9)
Recomposer.state
wurde verworfen und durchRecomposer.currentState
ersetzt, um seinen Typ in einen StateFlow zu ändern (Ic2ab3, b/197773820).flush()
unddispose()
wurden zuInjectionScope
hinzugefügt. Verwenden Sie sie, wenn Sie alle in der Warteschlange befindlichen Ereignisse sofort leeren bzw. den Bereich entfernen möchten. (Ifb73a)- Es wurde
performScrollToNode(matcher: SemanticsMatcher)
hinzugefügt, mit dem ein scrollbarer Container zu den Inhalten scrollt, die mit dem angegebenen Matcher übereinstimmen. (Ic1cb8) InjectionScope
unterstützt jetztDensity
. So können Sie inperformTouchInput
und anderen Tools ganz einfach zwischen Pixeln (px) und Pixeldichte (dp) konvertieren. (I8fe1f)
Fehlerkorrekturen
- AndroidView überträgt jetzt LocalLifecycleOwner und LocalSavedStateRegistryOwner über ViewTreeLifecycleOwner und ViewTreeSavedStateRegistryOwner an seine Ansicht. (I38f96, b/179708470)
- Problem behoben, bei dem das WearOS-SwipeToDismissBox manchmal Wischbewegungen nicht verarbeitete. (I9387e)
- Die Standardzeit zwischen den eingeschleusten Eingabeereignissen wurde von 10 ms auf 16 ms geändert. Dies kann sich auf das Ergebnis von Tests auswirken, bei denen Eingabegesten wie ein bestimmtes Wischen ausgeführt werden. (I829fd)
Version 1.1.0-alpha05
29. September 2021
androidx.compose.ui:ui-*:1.1.0-alpha05
wird veröffentlicht. Version 1.1.0-alpha05 enthält diese Commits.
API-Änderungen
- Unterstützung für die Kommunikation zwischen Modifikatoren hinzugefügt (Id5467, b/198826874)
- Es wurden experimentelle historische Hinweise zu PointerEventChange hinzugefügt. (Ic1fd8, b/197553056, b/199921305)
density: Density
undlayoutDirection: LayoutDirection
wurden zuLayoutInfo
hinzugefügt. So können Nutzer vonLayoutInfo
die inLayoutInfo
angezeigten Dimensionen und Positionen richtig interpretieren. (I002f1)- Es wurde experimentelle Unterstützung für das Einschleusen von Mausereignissen hinzugefügt. Verwenden Sie
performMouseInput
, um Mausereignisse zu senden, oder senden Sie Mausereignisse über dieMouse
-Eigenschaft vonMultiModalInjectionScope
während einer multimodalen Eingabegeste mitperformMultiModalInput
. Eine Dokumentation der verfügbaren API finden Sie unterMouseInjectionScope
. (Iaa4a8, b/190493367)
Fehlerkorrekturen
- Die Unterstützung für die Barrierefreiheit bei scrollbaren Elementen (sowohl lazy als auch non-lazy) wurde korrigiert (I6cdb0)
TouchInjectionScope.swipeWithVelocity
wurde verbessert. Sie akzeptiert jetzt mehr Eingabevariablen und schlägt Änderungen an der Eingabe vor, wenn kein Swipe-Element erstellt werden kann (I40fbe, b/182477143).
Version 1.1.0-alpha04
15. September 2021
androidx.compose.ui:ui-*:1.1.0-alpha04
wird veröffentlicht. Version 1.1.0-alpha04 enthält diese Commits.
API-Änderungen
PointerEvent
hat jetzt einePointerEventType
, um Hover-Ereignisse zu unterstützen. (I091fa)- Untergeordneten Elementen erlauben, die Eingabe des Mauszeigers außerhalb der Grenzen des übergeordneten Elements zu akzeptieren. Eltern können diese Aufrufe mit der Property „PointerInputScope.alwaysInterceptChildEvents“ abfangen (I9eae3, b/192479655)
- Verworfene
performGesture
undGestureScope
, die durchperformTouchInput
undTouchInjectionScope
ersetzt wurden. (Ia5f3f, b/190493367) touchBoundsInRoot
wurde zuSemanticsNode
hinzugefügt. Es enthält die Mindestgröße für Berührungszielbereiche, damit Entwickler dafür sorgen können, dass Berührungszielbereiche die Mindestwerte für die Barrierefreiheit erreichen. (I2e14b, b/197751214)- Implementierung von „inspectable“ noch einmal durchführen (I927bc, b/191017532)
- Parametername von „inspectable“ in „composed“ geändert (I3a482, b/191017532)
Einführung von
performTouchInput
undTouchInjectionScope
als Ersatz fürperformTouchInput
undTouchInjectionScope
, was den Weg für andere Eingabemethoden wie die Maus ebnete.TouchInjectionScope
hat dieselben Methoden wieGestureScope
, mit Ausnahme vonmovePointerTo
undmovePointerBy
, die inupdatePointerTo
undupdatePointerBy
umbenannt wurden. Alle anderen Methoden sind gleich.Das Verhalten von
TouchInjectionScope
ist fast identisch mitGestureScope
, mit zwei kleinen Unterschieden:- Wenn ein „down“-Ereignis gesendet wurde, während die Mauszeiger bewegt wurden, ohne dass ein „move“-Ereignis gesendet wurde (d. h.
updatePointerTo()
wurde verwendet, aber nichtmove()
, und dann wirddown()
aufgerufen), wurde bei der vorherigen Implementierung die Ereigniszeit vorangestellt und ein „move“-Ereignis gesendet, bevor das „down“-Ereignis gesendet wurde. Die neue Implementierung sendet weiterhin das Verschiebungsereignis, verlängert jedoch in diesem speziellen Szenario nicht die Ereigniszeit. - Wenn ein „Weiter“-Ereignis gesendet wurde, während die Mauszeiger bewegt wurden, ohne dass ein „Bewegen“-Ereignis gesendet wurde (ähnlich wie oben), wurde bei der vorherigen Implementierung die Ereigniszeit vorangestellt und ein „Bewegen“-Ereignis gesendet, bevor das „Weiter“-Ereignis gesendet wurde. Bei der neuen Implementierung ist das nicht der Fall: Die neuen Positionen der Zeiger werden nur über das Ereignis „up“ widergespiegelt.
Schließlich wird mit
TouchInjectionScope
die neue MethodecurrentPosition(pointerId: Int)
eingeführt, um die aktuelle Position des gegebenen Zeigers abzurufen. (If1191, b/190493367)- Wenn ein „down“-Ereignis gesendet wurde, während die Mauszeiger bewegt wurden, ohne dass ein „move“-Ereignis gesendet wurde (d. h.
Fehlerkorrekturen
- Zulassen, dass sich die Grenzen des Berührungszielbereichs über den Clipbereich hinaus erstrecken, um ein Mindestmaß für den Berührungszielbereich festzulegen. (I43e10, b/171509422)
- Auf Android 12-Geräten wird jetzt die Funktion „Stretch Overscroll“ unterstützt. (Iccf3c, b/171682480)
Version 1.1.0-alpha03
1. September 2021
androidx.compose.ui:ui-*:1.1.0-alpha03
wurde veröffentlicht. Version 1.1.0-alpha03 enthält diese Commits.
Neue Funktionen
- Compose
1.1.0-alpha03
wurde so aktualisiert, dass es von Kotlin1.5.30
abhängt. (I74545)
API-Änderungen
Modifier.inspectable
zum Umschließen anderer Modifikatoren hinzugefügt. (I1909b, b/191017532)- Die
BlurredEdgeTreatment
API wurde hinzugefügt, um Anwendungsfälle für das Unkenntlichmachen mithilfe gängiger Kombinationen von Clip-Flags und TileModes zu vereinfachen. Bei den meisten Anwendungsfällen werden entweder unscharfe Inhalte außerhalb der ursprünglichen Inhaltsgrenzen gerendert und Bereiche außerhalb dieser Grenzen mit transparentem Schwarz verwischt oder Inhalte an den Inhaltsgrenzen zugeschnitten, wobei der nächstgelegene Rand für Weichzeichnerkerne verwendet wird, die über die Inhaltsgrenzen hinausgehen. (I6b4b7, b/166927547) - Unterstützung für RenderEffect in Compose-Desktop Der Offset-Effekt und der Weichzeichner wurden eingeführt, um einem Teil der Kompositionshierarchie einfach Weichzeichnereffekte hinzuzufügen. (I0f6aa, b/166927547)
- Die RenderEffect API wurde eingeführt, die optional für eine
Modifier.graphicsLayer
konfiguriert werden kann, um den Inhalt der Ebene selbst zu ändern. So können Sie den Inhalt eines Composeables und untergeordneter Composeables innerhalb einer Kompositionshierarchie unkenntlich machen. (I47c4d, b/166927547) - AwaitPointerEventScope hat jetzt die Methoden „withTimeout()“ und „withTimeoutOrNull()“ (I507f0, b/179239764, b/182397793)
- In ViewConfiguration wurde eine Mindestgröße für den Berührungszielbereich hinzugefügt, die für die Semantik und die Eingabe per Mauszeiger verwendet wird, um die Barrierefreiheit zu verbessern. (Ie861c)
- Unterstützung für TileMode.Decal hinzugefügt, die sich zum Definieren des Randverhaltens für Weichzeichner-basierte Rendereffekte eignet (I7e8ed, b/166927547)
performScrollToIndex
,performScrollToKey
,hasScrollToIndexAction
undhasScrollToKeyAction
sind jetzt stabile APIs (I142ae, b/178483889)- Testmethode zum Abrufen der zugeschnittenen Begrenzungen hinzugefügt (I6b28e)
Fehlerkorrekturen
- Die Methode "isBounded" wurde aus BlurredEdgeTreatment entfernt. Stattdessen wird jetzt explizit geprüft, ob der Formparameter null ist. (I85d68)
Version 1.1.0-alpha02
18. August 2021
androidx.compose.ui:ui-*:1.1.0-alpha02
wird veröffentlicht. Version 1.1.0-alpha02 enthält diese Commits.
API-Änderungen
- PointerEvent unterstützt jetzt das Lesen des Maustaste- und Tastaturmodiferstatus. (I6310c, b/180075467)
- Für eingeblendete Touch-Gesten wird jetzt die Zeit der MainTestClock als „Source of Truth“ verwendet. Die aktuelle Uhrzeit für eingeschleuste Ereignisse in
performGesture
wird mit der aktuellen Uhrzeit der MainTestClock initialisiert. (Ifb364, b/192064452) DpRect(DpOffset, DpSize)
-Konstruktor hinzugefügt (I2cf16, b/194219828)- Die DpSize-Klasse wurde hinzugefügt (I7abb1, b/194219828)
Fehlerkorrekturen
- Das XML-Parsing für Vektorgrafiken wurde aktualisiert, um ColorStateLists als Stammeigenschaften für die Farbtonung von VectorDrawables zu unterstützen. (I86915, b/195668138)
Version 1.1.0-alpha01
4. August 2021
androidx.compose.ui:ui-*:1.1.0-alpha01
wurde veröffentlicht. Version 1.1.0-alpha01 enthält diese Commits.
API-Änderungen
- Für
RelocationRequester.bringIntoView
kann jetzt ein Rechteck als Parameter verwendet werden, um einen Teil eines Composeables sichtbar zu machen (Ice2c5, b/194330245) AnimatedImageVector
und die zugehörigen APIs befinden sich jetzt im neuen Modulandroidx.compose.animation:animation-graphics
. (I60873)- Es wurde ein experimenteller Modifikator hinzugefügt, um Umsiedlungsanfragen zu verarbeiten. (I65a97, b/178211874)
Einführung der BrushPainter API, um das Zeichnen einer beliebigen Pinsel in einem Painter zu unterstützen, ähnlich wie ColorPainter
Die Brush API wurde aktualisiert, sodass jetzt ein intrinsischer Größenparameter vorhanden ist, der in BrushPainter abgefragt wird (Ia2752, b/189466433).
Die Methode „DrawScope#drawImage“ wurde aktualisiert. Sie verwendet jetzt Quell- und Ziel-Rechtecke, um einen optionalen Parameter „FilterQuality“ zu verwenden. Dies ist nützlich für Pixelkunst, die verpixelt werden soll, wenn sie für pixelbasierte Grafiken verkleinert wird. BitmapPainter und Bild-Composable wurden aktualisiert, sodass auch ein optionaler FilterQuality-Parameter verwendet wird (Ie4fb0, b/180311607)
Die Methode
GestureScope.advanceEventTime
wurde hinzugefügt, um mehr Kontrolle über das Timing von Ereignissen in einer Geste zu geben (Ibf3e2).
Fehlerkorrekturen
- Damit die Verkettung von Draw-Modifikatoren besser unterstützt werden kann, muss die Modifier.paint-Implementierung "drawsContent" aufrufen.
Bisher wurde erwartet, dass Modifier.paint ein Endknoten in der Kette der Modifikatoren ist. Dadurch wird jedoch verhindert, dass es in einem zusammensetzbaren Container (z. B. einem Box) konfiguriert oder zusätzliche Verzierungen wie
Modifier.paint().border()
hinzugefügt werden. Durch den Aufruf von „drawContent“ nach dem Zeichnen des Inhalts des jeweiligen Malers durch Modifier.paint wird eine bessere Konsistenz des Verhaltens mit dem Modifikatormuster erreicht. (Ibb2a7, b/178201337, b/186213275) - Dialogfelder folgen jetzt dem Verhalten bei der Plattformgröße. Legen Sie
usePlatformDefaultWidth
auf „false“ fest, um dieses Verhalten zu überschreiben. (Iffaed, b/192682388) InfiniteAnimationPolicy
wurde zu :compose:ui verschoben (I5eb09, b/160602714)- Das Scrollen über semantische Aktionen für Lazy-Listen und reguläre Scrollkomponenten ist jetzt animiert (Id9066, b/190742024)
Version 1.0
Version 1.0.5
3. November 2021
androidx.compose.ui:ui-*:1.0.5
wurde veröffentlicht. Version 1.0.5 enthält diese Commits.
Fehlerkorrekturen
- Ein Absturz beim Tracking von „derivedStateOf“-Instanzen wurde behoben. (aosp/1792247)
Version 1.0.4
13. Oktober 2021
androidx.compose.ui:ui-*:1.0.4
wurde veröffentlicht. Version 1.0.4 enthält diese Commits.
Abhängigkeitsupdates
- Aktualisiert, um von Kotlin
1.5.31
abhängig zu sein
Version 1.0.3
29. September 2021
androidx.compose.ui:ui-*:1.0.3
wird 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.ui:ui-*:1.0.2
wird veröffentlicht. Version 1.0.2 enthält diese Commits.
Aktualisiert, um die Compose 1.0.2
-Version zu unterstützen. „Compose 1.0.2
“ ist weiterhin mit Kotlin 1.5.21
kompatibel.
Version 1.0.1
4. August 2021
androidx.compose.ui:ui-*:1.0.1
wird veröffentlicht. Version 1.0.1 enthält diese Commits.
Aktualisierung der Abhängigkeiten
- Aktualisiert auf Kotlin
1.5.21
.
Version 1.0.0
28. Juli 2021
androidx.compose.ui:ui-*:1.0.0
wird veröffentlicht. Version 1.0.0 enthält diese Commits.
Wichtige Funktionen von 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
build.gradle
-Datei vorübergehend die minSdkVersion auf mindestens 24, um das Problem zu beheben. Dieses Problem wird in der nächsten Version von Android Studio Bumblebee und AGP7.1
behoben. (b/194289155)
Version 1.0.0-rc02
14. Juli 2021
androidx.compose.ui:ui-*:1.0.0-rc02
wird veröffentlicht. Version 1.0.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Dialogfelder folgen jetzt dem Verhalten bei der Plattformgröße. Legen Sie
usePlatformDefaultWidth
auf „false“ fest, um dieses Verhalten zu überschreiben. (Iffaed, b/192682388)
Version 1.0.0-rc01
1. Juli 2021
androidx.compose.ui:ui-*:1.0.0-rc01
wird veröffentlicht. Version 1.0.0-rc01 enthält diese Commits.
Neue Funktionen
- UI-Tooling-Modul in
ui-tooling
undui-tooling-preview
aufteilen (Iefa28, b/190649014)
API-Änderungen
- Die eingestellten experimentellen
FocusManager#moveFocusIn
undFocusManager#moveFocusOut
(I227d7, b/170154986, b/186567354, b/168510304) wurden entfernt. - Canvas unterstützt jetzt den Parameter „contentDescription“ für die Barrierefreiheit. (Ib547c)
useDefaultMaxWidth
inPopupProperties
wurde inusePlatformDefaultWidth
umbenannt. (I05710)- Dialogfelder können jetzt die gesamte Bildschirmbreite nutzen. (I83929, b/190810877)
- Es wurde experimentelle Unterstützung für HSV- und HSL-Farbdarstellungen hinzugefügt. (Id7cf8, b/180731008)
Änderungen im Verhalten
- Compose
@Preview
bietet jetzt eineLocalActivityResultRegistryOwner
, mit der Sie eine Vorschau von Composables mit APIs wierememberLauncherForActivityResult()
anzeigen können, die davon abhängen, dass dieser Inhaber vorhanden ist. (Ib13d1, b/185693006) - Compose
@Preview
bietet jetzt eineLocalOnBackPressedDispatcherOwner
, mit der Sie eine Vorschau von Composables mit APIs wieBackHandler
anzeigen können, die davon abhängen, dass dieser Inhaber vorhanden ist. (Ia1c05, b/185693006)
Fehlerkorrekturen
InfiniteAnimationPolicy
wurde nachandroidx.compose.ui:ui
verschoben (I5eb09, b/160602714)- „AnimatedImageVector“ wurde vorübergehend entfernt, um die Modulstruktur zu ändern. (I41906, b/160602714)
Version 1.0.0-beta09
16. Juni 2021
androidx.compose.ui:ui-*:1.0.0-beta09
wird veröffentlicht. Version 1.0.0-beta09 enthält diese Commits.
API-Änderungen
- Enum „Role“ und „LiveRegionMode“ in Inline-Klassen mit privatem Konstruktor ändern (Id1890)
- KeyboardCapitalization wird in eine Inline-Klasse umgewandelt. (Id5a1c)
- Ändern Sie „HapticFeedbackType“ in „Inline-Klasse“. (I255ec)
- Modifier.pointerInteropFilter ist @ExperimentalComposeUiApi. (Iede6c)
- TextAlign, FontSynthesis und TextDirection sind jetzt Inline-Klassen. (I212fe)
- TextOverflow wird in eine Inline-Klasse geändert. (I433af)
- FontStyle ist jetzt eine Inline-Klasse. (I9e48b)
Fehlerkorrekturen
- Die wichtigsten Konstanten sind derzeit @ExperimentalComposeUiApi. Bei der Codeaufnahme können private Konstanten vor der Stabilisierung deklariert werden. (Ia5d48)
- Compose-Tests können jetzt mit Robolectric ausgeführt werden. Bisher wurden folgende Einschränkungen ermittelt:
- Da es keine native Bitmap gibt, führt
ImageBitmap()
zu einer NullPointerException. - Da es keine Zeichnung gibt, wartet
captureToImage()
auf unbestimmte Zeit auf den nächsten Zeichendurchlauf (d.h. es kommt zu einer Deadlock-Situation). - Es ist keine Schriftart geladen, daher wird jeglicher Text falsch gemessen. Alle Zeichen haben eine feste Höhe von etwa 20 Pixeln und eine Breite von 1 Pixel.
- Bei
ComposeTestRule.waitUntil {}
wird der Hauptthread während des Wartens nicht ausgeführt. Daher ist er im Grunde mitComposeTestRule.mainClock.advanceTimeUntil {}
identisch. In Zukunft werden voraussichtlich weitere Einschränkungen erkannt. (I284fa)
- Da es keine native Bitmap gibt, führt
Profilregeln 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.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Was sind Profilregeln?
Profilregeln für eine Bibliothek werden in einer Textdatei
baseline-prof.txt
im Verzeichnissrc/main
oder einem ähnlichen Verzeichnis angegeben. Die Datei enthält eine Regel pro Zeile. Eine Regel ist in diesem Fall ein Muster, das mit Methoden oder Klassen in der Bibliothek abgeglichen wird. Die Syntax dieser Regeln ist ein Superset des visuell lesbaren ART-Profilformats, das bei der Verwendung vonadb shell profman --dump-classes-and-methods ...
verwendet wird. Diese Regeln können auf eine von zwei Arten auf Methoden oder Klassen ausgerichtet werden.Eine Methodenregel hat das folgende Muster:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Eine Klassenregel hat das folgende Muster:
<CLASS_DESCRIPTOR>
Hier ist
<FLAGS>
eines oder mehrere der ZeichenH
,S
undP
, um anzugeben, ob diese Methode als „Hot“, „Startup“ oder „Post Startup“ gekennzeichnet werden soll.<CLASS_DESCRIPTOR>
ist der Deskriptor für die Klasse, zu der die Zielmethode gehört. Die Klasseandroidx.compose.runtime.SlotTable
hätte beispielsweise den DeskriptorLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
ist die Signatur der Methode und enthält den Namen, die Parametertypen und die Rückgabetypen der Methode. Beispiel: Die Methodefun isPlaced(): Boolean
vonLayoutNode
hat die SignaturisPlaced()Z
.Diese Muster können Platzhalter (
**
,*
und?
) enthalten, damit eine einzelne Regel mehrere Methoden oder Klassen umfassen kann.
Welchen Zweck haben die Regeln?
Eine Methode mit dem Flag
H
ist eine „heiße“ Methode und sollte vorab kompiliert werden.Eine Methode mit dem Flag
S
wird beim Start aufgerufen und sollte vorab kompiliert werden, um die Kosten für die Kompilierung und Interpretation der Methode beim Start zu vermeiden.Eine Methode mit dem Flag
P
wird nach dem Start aufgerufen.Eine 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
- Diese Regeln können in Bibliotheken definiert werden und werden in AAR-Artefakten verpackt. Wenn dann eine App erstellt wird, die diese Artefakte enthält, werden diese Regeln zusammengeführt und die zusammengeführten Regeln werden verwendet, um ein kompaktes binäres ART-Profil zu erstellen, das für die App spezifisch ist. ART kann dieses Profil dann nutzen, wenn die App auf Geräten installiert wird, um einen bestimmten Teil der Anwendung vorab zu kompilieren und so die Leistung der Anwendung zu verbessern, insbesondere beim ersten Ausführen. Hinweis: Dies hat keine Auswirkungen auf debuggbare Anwendungen.
Version 1.0.0-beta08
2. Juni 2021
androidx.compose.ui:ui-*:1.0.0-beta08
wurde veröffentlicht. Version 1.0.0-beta08 enthält diese Commits.
API-Änderungen
- Die
NestedScrollSource
-Enumeration wird durch eine Inline-Klasse ersetzt. (Ie321b, b/187055290) FocusManager.clearFocus(forcedClear = true)
wird inFocusManager.clearFocus(force = true)
(Ia0c41) umbenannt.- Die Verwendung von Enums wurde in Inline-Klassen umgestellt, um Probleme mit umfassenden Wenn-Beschreibungen zu vermeiden, wenn neue Enum-Werte hinzugefügt werden. (I2b5eb)
- Entfernen Sie
@ExperimentalComposeUiApi
ausPopupProperties
. (I01fa6) PointerType
wurde von einer Aufzählung in eine Inline-Klasse geändert (If5058)- „ContentDescription“ und „Text Semantik“ sind keine einzelnen Werte, sondern Listen. So können sie zusammengeführt werden, anstatt zusammengefügt zu werden. Außerdem wurden bessere Test-APIs zur Nutzung dieser Änderungen bereitgestellt (Ica6bf, b/184825850).
Modifier.focusModifier()
wurde verworfen und durchModifier.focusTarget()
(I6c860) ersetzt.Modifier.onSizeChanged()
undModifier.onGloballyPositioned()
sind keine Inline-Funktionen mehr (I727f6, b/186109675).- Die
KeyboardType
-Enumeration wird durch eine Inline-Klasse ersetzt. (I73045, b/187055290) FocusState
-Enum durch eineFocusState
-Schnittstelle ersetzt (Iccc1a, b/187055290)- Das ImeAction-Enum wird durch eine Inline-Klasse ersetzt. (I18be5, b/187055290)
PlaceholderVerticalAlign
wird in eine Inline-Klasse konvertiert. (If6290)- TextUnitType ist jetzt eine Inline-Klasse. (I4cba9)
AnnotatedString.withAnnotation
-Funktionen heißen jetzt ExperimentalTextApi anstelle von ExperimentalComposeApi. (I0cd0a)- Der TextUnit-Konstruktor mit TextUnitType ist jetzt ExperimentalTextApi anstelle von ExperimentalComposeApi.
Fehlerkorrekturen
- Behebung des Fehlers, der in Beta 07 aufgetreten ist und durch den LazyColumn-/LazyRow-Elemente nach dem Scrollen teilweise angezeigt wurden (I8c9ac, b/188566058)
- Die Positionsänderung wird jetzt für
detectDragGesures
,detectVerticalGestures
unddetectHorizontalGestures
automatisch übernommen, sodass man change.consumePositionChange in den onDrag-Callbacks nicht aufrufen muss (I42fc4, b/185096350, b/187320697). - Ein Fehler bei Layout-Modifizierern, die Ausrichtungslinien bereitstellen, wurde behoben. Ein Fehler, der dazu führte, dass das übergeordnete Element nicht erneut gemessen wurde, als sich die Ausrichtungslinien der untergeordneten Elemente änderten, wurde behoben. (I4401f, b/174315652)
Modifier.onGloballyPositioned()
wurde geändert, sodass die Koordinaten dieses Modifiers in der Modifikatorkette erfasst werden, nicht die Layoutkoordinaten nach Anwendung aller Modifikatoren. Das bedeutet, dass jetzt die Reihenfolge der Modifikatoren darüber entscheidet, welche Koordinaten erfasst werden. (Ieb67d, b/177926591)
Version 1.0.0-beta07
18. Mai 2021
androidx.compose.ui:ui-*:1.0.0-beta07
wird veröffentlicht. Version 1.0.0-beta07 enthält diese Commits.
API-Änderungen
ViewRootForInspector
-Oberfläche für die Verwendung im Inspector hinzugefügt (Ib70df)SubcomposeLayoutState
unterstützt jetzt das Festlegen der Anzahl der wiederverwendbaren Slots. Das Layout hält bis zu dieser Anzahl von Slots aktiv, anstatt sie zu entsorgen, damit sie beim nächsten Mal wiederverwendet werden können, wenn wir einen neuen benötigen (Ieb981)- Das Enum „KeyEventType“ wurde durch eine Inline-Klasse ersetzt. (Id670a, b/187055290)
- Die
FocusDirection
-Enumeration wird durch eine Inline-Klasse ersetzt. (Ib6d03, b/187055290, b/184086802) - Bietet die Möglichkeit, den SubcomposeLayout-Zustand zu heben, mit der Sie den Inhalt in eine erforderliche Slot-ID vorsetzen können, wodurch der nächste Messwert schneller übergeben wird, da beim nächsten Mal keine Zusammensetzung mit der angegebenen SlotId versucht wird. (I42580, b/184940225)
- Ziehpunkt für Clip-Auswahl hinzugefügt (Iff80d, b/183408447)
- Nicht verwendete APIs im Zusammenhang mit der LayoutInspector-Unterstützung wurden entfernt. (I2ac78)
Fehlerkorrekturen
- Bei LazyColumn/Row bleiben jetzt bis zu zwei zuvor sichtbare Elemente aktiv (nicht entsorgt), auch wenn sie bereits ausgeblendet wurden. So können die aktiven Unterkompositionen von der Komponente wiederverwendet werden, wenn ein neues Element erstellt werden muss, was die Scrollleistung verbessert. (Ie5555)
TextGeomerticTransform
undTextDecoration
amAnnotatedString
werden unverändert angewendet. (I61900, b/184760917)
Version 1.0.0-beta06
5. Mai 2021
androidx.compose.ui:ui-*:1.0.0-beta06
wird veröffentlicht. Version 1.0.0-beta06 enthält diese Commits.
API-Änderungen
- Konflikt mit Navigationsgeste beheben (I1145e)
@ComposeCompilerApi
nicht mehr@RequiresOptIn
(Iab690)- Es wurden die Bedienungshilfen-APIs „CollectionInfo“ und „CollectionItemInfo“ hinzugefügt, mit denen Sammlungen und ihre Elemente für Bedienungshilfen gekennzeichnet werden können (Id54ef, b/180479017)
- Es wurde die Taste
SemanticsActions.ScrollToIndex
hinzugefügt, um in einer Liste mit indexierten Elementen zum Element mit einem bestimmten Index zu scrollen, und die TasteSemanticsProperties.IndexForKey
, um den Index eines Elements in einer Liste mit Schlüsselelementen abzurufen. Beide Aktionen werden von LazyList implementiert.- Es wurde
SemanticsNodeInteraction.performScrollToIndex
hinzugefügt, mit dem eine Liste zum angegebenen Index scrollt, undSemanticsNodeInteraction.performScrollToKey
, mit dem eine Liste zum Element mit dem angegebenen Schlüssel scrollt. (I4fe63, b/178483889, b/161584524)
- Es wurde
- "ownerViewId" wurde zu GraphicLayerInfo (I19f62) hinzugefügt.
- Es wurden Überladungen für Font() hinzugefügt, um Schriftarten aus Assets, Dateien und Dateibeschreibungen zu laden (I5d382)
- Die Bedienungshilfen-API
error
wurde hinzugefügt, mit der ein Knoten mit ungültiger Eingabe markiert werden kann (I12997, b/180584804, b/182142737) Font()
Überladungen zum Laden von Schriftarten aus Assets, Dateien und Dateideskriptoren hinzugefügt (I43007)- Die Speicherung von AnnotatedString wird unter
TextFieldValue.Saver
unterstützt. Die DienstfunktionenaddTtsAnnotation
und withAnnotation wurden zuAnnotatedString.Builder
hinzugefügt (I8cbdc, b/178446304) - TextUnit-Konstruktorfunktion
TextUnit(value: Float, type: TextUnitType)
hinzugefügt (I7ecce, b/178446304)
Version 1.0.0-beta05
21. April 2021
androidx.compose.ui:ui-*:1.0.0-beta05
wurde veröffentlicht. Version 1.0.0-beta05 enthält diese Commits.
API-Änderungen
- Die experimentellen Messwerte
FocusManager.moveFocus(In)
undFocusManager.moveFocus(Out)
wurden hinzugefügt (Ic5534, b/183746743) - Experimentelle
performTextInputSelection
API hinzugefügt (I2dcbb, b/178510628) - Die
InputEventCallback
-Oberfläche wurde verworfen. Die Benutzeroberfläche konnte in keiner öffentlichen API verwendet werden und wurde auch nicht im Code verwendet. (I34a02, b/184003208) - Eingestellte
TextLayoutResult/createTextLayoutResult
-Funktion. Es handelt sich um eine nicht verwendete öffentliche Funktion, die zum Testen hinzugefügt wurde. Die Funktion ist für APIs zum Erstellen von Text nicht geeignet. Die Funktion wurde verworfen und wird später entfernt. (I80413)
Fehlerkorrekturen
- Die Bedienungshilfen für das Scrollen mit
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
undaccessibilityActionScrollDown
wurden korrigiert. Anstatt bis zum Ende des scrollbaren Elements zu scrollen, wird jetzt ein Bildschirm in die angegebene Richtung gescrollt. (Ieccb0) - Die AndroidManifest-Dateien aus „ui-test-manifest“ und „ui-tooling-data“ sind jetzt mit Android 12 kompatibel (I6f9de, b/184718994)
Version 1.0.0-beta04
7. April 2021
androidx.compose.ui:ui-*:1.0.0-beta04
wird veröffentlicht. Version 1.0.0-beta04 enthält diese Commits.
API-Änderungen
- Benennen Sie
hideSoftwareKeyboard
undshowSoftwareKeyboard
aufSoftwareKeyboardController
inhide()
undshow()
um.- Die vollständige CompositionLocal-Oberfläche für LocalSoftwareKeyboardController bereitstellen, damit sie festgelegt werden kann (besonders nützlich in Tests) (I579a6)
- Die LiveRegion Accessibility API wurde hinzugefügt. Wenn der Knoten als Live-Bereich gekennzeichnet ist, werden die Nutzer von den Bedienungshilfen automatisch über Änderungen benachrichtigt (Idcf6f, b/172590946)
- TextOverflow.Visible wurde eingeführt. (Ic8f89)
Fehlerkorrekturen
- Das Problem wurde behoben, bei dem Elemente von
LazyColumn
/LazyRow
an den Rändern nach einem schnellen Wischen falsch positioniert wurden (Ie4d13, b/183877420) AndroidViewBinding
entfernt jetzt ordnungsgemäß Fragmente, die überFragmentContainerView
aufgebläht wurden, wennAndroidViewBinding
aus der Zusammensetzungshierarchie entfernt wird. (Ib0248, b/179915946)AndroidViewBinding
verschachtelt jetzt korrekt Fragmente, die überFragmentContainerView
aufgebläht wurden, wenn sichComposeView
in einemFragment
befindet. Dadurch wurden Probleme beim Speichern und Wiederherstellen des Zustands dieser Fragmente behoben. (I70eb0, b/179915946)- Compose ViewBinding hängt jetzt von Fragment
1.3.2
ab und zeigt nach Konfigurationsänderungen jetzt konsistent Fragmente an, die überFragmentContainerView
aufgebläht wurden. (I0743d, b/179915946)
Version 1.0.0-beta03
24. März 2021
androidx.compose.ui:ui-*:1.0.0-beta03
wird veröffentlicht. Version 1.0.0-beta03 enthält diese Commits.
API-Änderungen
- Verschobene Prüfung auf ViewTree-Abhängigkeiten von ComposeView (I8dbbf, b/182466548)
- Den Funktionen
swipeUp
/swipeDown
/swipeLeft
/swipeRight
inGestureScope
wurden optionalestartX
/endX
- undstartY
/endY
-Parameter hinzugefügt. (I49e2d, b/182063305)
Version 1.0.0-beta02
10. März 2021
androidx.compose.ui:ui-*:1.0.0-beta02
wird veröffentlicht. Version 1.0.0-beta02 enthält diese Commits.
API-Änderungen
- Neue lokale
LocalSoftwareKeyboardController
-Komposition API 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) - Die folgenden
SemanticsMatcher
s wurden entfernt:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(If16bd)
- Die folgende
SemanticsMatchers
wurde als @ExperimentalTestApi gekennzeichnet:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(Ia600c)
- Die folgenden
SemanticsMatcher
s wurden hinzugefügt:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(I2f502)
Fehlerkorrekturen
- Einschränkungen für die öffentliche Nutzung experimenteller APIs erzwingen (I6aa29, b/174531520)
androidx.compose.ui:ui
hängt nicht mehr von AppCompat oder Fragment ab. Wenn Sie in Ihrer Anwendung eine ComposeView und Fragmente und/oder AppCompat verwenden, müssen Sie AppCompat 1.3 oder höher bzw. Fragment 1.3 oder höher verwenden. Diese Versionen sind erforderlich, um die Lebenszyklus- und gespeicherten Statuseigentümer für ComposeView korrekt festzulegen. (I1d6fa, b/161814404)- Behebung des Problems, dass
rememberSaveable { mutableStateOf(0) }
nicht funktionierte, wenn es in einem Ziel von navigation-compose verwendet wurde. (I1312b, b/180042685, b/180701630) - Neue lokale API zur
LocalSoftwareKeyboardController
-Kompositionierung hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I658b6, b/168778053) - Gelegentliche NoSuchElementException in
ComposeRootRegistry
'stearDownRegistry()
(Iddce1) behoben
Version 1.0.0-beta01
24. Februar 2021
androidx.compose.ui:ui-*:1.0.0-beta01
wird veröffentlicht. Version 1.0.0-beta01 enthält diese Commits.
Dies ist die erste Version von Compose 1.0.0 Beta.
API-Änderungen
- Der Rückruf „onStart“ wurde
detectDragGestures
hinzugefügt (I67269, b/179995594) - Modifikatoren zur Größenanpassung für intrinsische Elemente sind nicht mehr experimentell. (I15744)
- MeasureBlocks wurde in MeasurePolicy umbenannt und hat eine ansprechende Benutzeroberfläche erhalten. Layout-APIs wurden aktualisiert / vereinfacht, um MeasurePolicy zu verwenden. (Icab48, b/167662468, b/156751158)
InteractionState
wurde durch[Mutable]InteractionSource
ersetzt- Oberflächen sind für das Senden / Erfassen von Interaktionsereignissen verantwortlich.
- Anstatt
interactionState = remember { InteractionState() }
an Komponenten wieButton
undModifier.clickable()
zu übergeben, verwenden SieinteractionSource = remember { MutableInteractionSource() }
. - Anstatt
Interaction.Pressed in interactionState
sollten Sie stattdessen die Erweiterungsfunktionen von InteractionSource verwenden, z. B. InteractionSource.collectIsPressedAsState(). - Bei komplexen Anwendungsfällen können Sie mit „InteractionSource.interactions“ den Stream der Interaktionen beobachten. Weitere Informationen finden Sie in der Dokumentation und in den Beispielen zu „InteractionSource“.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- AccessibilityManager-Schnittstelle und LocalAccessibilityManager in CompositionLocals hinzufügen (I53520)
- Die veralteten LayoutCoordinates-Methoden wurden entfernt. Verwenden Sie für „positionInParent“ und „boundsInParent“ eine Funktion anstelle der Eigenschaft. (I580ed, b/169874631, b/175142755)
- Aliasse wurden durch die zugrunde liegenden Typen ersetzt:
ColorStop
heißt jetztPair<Float, Color>
SpanStyleRange
ist jetzt „AnnotatedString.Range“ ParagraphStyleRange
heißt jetztAnnotatedString.Range<ParagraphStyle>
StringAnnotation
heißt jetztAnnotatedString.Range<String>
- (I8dd1a)
- Neue TextInputSession für Eingabesitzungen von Textkomponenten auf niedriger Ebene 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. Diese Größe entspricht möglicherweise nicht den Messbeschränkungen. (Ib2729, b/172560206, b/172338608)
- Mit dem Modifikator „selectionGroup“ können mehrere Tabs oder Radiobuttons aus Gründen der Barrierefreiheit gekennzeichnet werden (Ie5c29)
defaultFactory
fürcompositionLocalOf
undstaticCompositionLocalOf
ist jetzt erforderlich statt optional.Durch diese Änderung wird ein potenzieller Typfehler für nicht null-wertige Typen behoben, für die keine Standard-Factory angegeben wurde. Bisher wurde dadurch eine Nullreferenz für einen Typ bereitgestellt, der keine Nullwerte zulässt.
Für Typen mit zulässigen Nullwerten können Sie
{ null }
als Standard-Factory angeben.Wir empfehlen nicht, lokale Variablen mit nicht nullwertigen Typen zu verwenden, es sei denn, ein sinnvoller Standardwert kann angegeben werden. Wenn kein sinnvoller Standardwert vorhanden ist, sollte die
defaultFactory
-Lambda-Funktion eine Ausnahme auslösen. Wenn jedoch eine Ausnahme ausgelöst wird, haben die Nutzer der lokalen Variablen eine implizite Abhängigkeit von der Bereitstellung, die vom Typsystem nicht erzwungen wird. (Ifbd2a)Verworfene Methoden aus UI-Modulen wurden entfernt (I646f6)
Größenmodifikatoren wurden umbenannt. „modifier.width/height/size“ wurde in requiredWidth/requiredHeight/requiredSize umbenannt. Modifier.preferredWidth/preferredHeight/preferredSize wurden in width/height/size umbenannt. (I5b414)
Modifier.tapGestureFilter
wurde entfernt. Verwenden Sie stattdessenModifier.pointerInput { detectTapGestures(...) }
. (I266ed, b/175294473)Der teilweise Verbrauch wurde aus dem Eingabesystem für den Cursor entfernt. Die empfohlene Methode zur Koordination der teilweisen Nutzung ist Modifier.nestedScroll. (Ie9c9b)
„Ausrichtung“ wurde in das Foundation-Paket verschoben. VelocirtTracker wurde von ui.gesture zu ui.input.pointer verschoben. (Iff4a8, b/175294473)
„imageResource“ und „vectorResource“ sind jetzt Erweiterungsfunktionen für die Companion-Assets „ImageBitmap“ und „ImageVector“.
load{Image,Vector,Font}Resource
Funktionen wurden gelöscht. (I89130)AnimationClockObservable und die untergeordneten Klassen wurden entfernt. AnimierteFloat-Anzeige wurde entfernt. (Icde52, b/177457083)
„Anbieter“ wurde in „CompositionLocalProvider“ umbenannt.
- Der Kompositionskonstruktor akzeptiert keinen Schlüsselparameter mehr und wurde eingestellt.
- „currentCompositeKeyHash“ wurde in eine zusammensetzbare Property auf oberster Ebene statt in eine zusammensetzbare Funktion auf oberster Ebene umgewandelt.
- CompositionData und CompositionGroup wurden in den Namespace „androidx.compose.runtime.tooling“ verschoben
- ComposableLambda wurde zu einer Schnittstelle anstelle einer konkreten Klasse gemacht und hat keine Typparameter mehr.
- ComposableLambdaN wurde anstelle einer konkreten Klasse zu einer Schnittstelle gemacht und verfügt nicht mehr über Typparameter.
- Die Funktion „snapshotFlow“ wurde in den Namespace „androidx.compose.runtime“ verschoben.
- Die Zusammenführungsmethode von SnapshotMutationPolicy ist nicht mehr experimentell
- Die Funktion „clearRoots“ auf oberster Ebene mit dem Attribut „@TestOnly“ wurde entfernt. Das ist nicht mehr erforderlich.
- Die Funktionen „keySourceInfoOf“ und „resetSourceInfo“ wurden entfernt. Sie werden nicht mehr benötigt.
- Composer.collectKeySourceInformation wurde entfernt. Das ist nicht mehr erforderlich.
- Die Methoden „isJoinedKey“, „joinedKeyLeft“ und „joinedKeyRight“ wurden entfernt. Sie werden nicht mehr benötigt.
- Verschiedene APIs der obersten Ebene wurden in verschiedene Dateien verschoben und neu angeordnet. Aufgrund der Dateiklassensemantik von Kotlin wird dadurch die Binärkompatibilität, aber nicht die Quellkompatibilität beeinträchtigt. Das sollte für die meisten Nutzer kein Problem darstellen.
- (I99b7d, b/177245490)
ComponentActivity.setContent()
wurde aus „compose:ui“ entfernt. Du kannst die vonandroidx.activity:activity-compose:1.3.0-alpha01
verwenden.viewModel()
undLocalViewModelStoreOwner
wurden aus compose:ui entfernt. Verwenden Sie die vonandroidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01
(I6f36b).Modifier.scrollable wurde überarbeitet. Jetzt wird die Scrollable-Schnittstelle anstelle der ScrollableController-Klasse verwendet (I4f5a5, b/174485541, b/175294473)
Die Unterstützung von benutzerdefinierten Ereignissen für PointerInputModifier wurde entfernt (I02707, b/175294473)
SnapshotStateObserver ist nicht mehr experimentell (Id2e6a).
Einige zuvor eingestellte APIs wurden gelöscht (Ice5da, b/178633932)
longPressGestureFilter und doubleClickGestureFilter wurden entfernt. Verwenden Sie Modifier.pointerInput mit Hilfsfunktionen wie detectTapGestures (I2fedf, b/175294473).
Die String.format API wurde entfernt und die Verwendung in verschiedenen toString-Methoden wurde umgestaltet, damit String.format nicht intern verwendet wird. (Id1290)
Entfernte dp-Behauptungen (I798d2)
androidx.compose.runtime:runtime-dispatch wurde entfernt (I55feb)
Bei Textaktionen wird der Fokus jetzt automatisch geprüft (I13777, b/179648629).
runBlockingWithManualClock
(I15cdc, b/179664814) entferntDie Scrollposition in Modifier.verticalScroll()/horizontalScroll() wird jetzt mit Ganzzahlen dargestellt (I81298)
FlingConfig wurde in FlingBehavior umbenannt und ermöglicht jetzt die Anpassung der Schwebeanimation anstelle von vordefinierten Abklingzeiten. (I02b86, b/175294473)
Es wurde eine Hilfsfunktion hinzugefügt, mit der dieselbe Aktion für alle ImeAction-Callbacks festgelegt werden kann (I63447, b/179226323)
Der Rückruf von SoftwareKeyboardController wurde aus allen Textfeldern entfernt und wird bald durch eine neue API ersetzt. (Iae869, b/168778053)
FontSpan und FontWeigthStyleSpan werden nicht mehr verwendet und entfernt. (Ie5b56, b/177423444)
Die folgenden Änderungen wurden an der Material API vorgenommen:
- Der Top/BottomAppBar-Parameter „contentPadding“ wurde hinzugefügt, um das Standardabstand anzupassen.
- Die Parameter in BackdropScaffold wurden neu angeordnet, um den API-Richtlinien zu folgen, dass erforderliche Parameter vor optionalen Parametern stehen müssen.
- Der Parameter
icon
in BottomNavigationItem wurde nachselected
undonClick
verschoben. - Der Parameter
alwaysShowLabels
in BottomNavigationItem wurde inalwaysShowLabel
umbenannt. bodyContent
-Parameter in einigen Komponenten wurden incontent
umbenannt.- Die Parameter in
ButtonDefaults.buttonColors()
wurden neu angeordnet. Da sich der Typ der Parameter nicht geändert hat, verursacht dies keinen Fehler in Ihrem Code. Stellen Sie sicher, dass Sie entweder benannte Parameter verwenden oder die Reihenfolge manuell aktualisieren. Andernfalls funktioniert der Code nicht wie zuvor. - Der Parameter
secondaryVariant
wurde zudarkColors()
hinzugefügt. Diese Farbe entspricht in der Regel der Farbe vonsecondary
im dunklen Design, wird aber hinzugefügt, um für Einheitlichkeit und weitere Anpassungen zu sorgen. - ElevationDefaults und animateElevation() wurden von der öffentlichen API-Oberfläche entfernt, da sie im Allgemeinen nicht verwendet wurden bzw. nicht hilfreich waren.
onValueChangeEnd
inSlider
wurde inonValueChangeFinished
umbenannt und als „nullable“ gekennzeichnet.- Der Parameter
text
inSnackbar
wurde aus Gründen der Einheitlichkeit incontent
umbenannt. - Dem Parameter
DropdownMenuItem
wurde der ParametercontentPadding
hinzugefügt, um das Standardabstand anzupassen. Außerdem wurdecontent
zu einer Erweiterung vonRowScope
. ModalDrawerLayout
wurde inModalDrawer
umbenannt.BottomDrawerLayout
wurde inBottomDrawer
umbenannt.- (I1cc66)
Fehlerkorrekturen
- Es wurde eine API zur Verwendung von animateVectorDrawable-Ressourcen in Compose hinzugefügt. Mithilfe von „animatedVectorResource“ eine
<animated-vector>
-XML-Datei als „AnimatedImageVector“ laden und mit „painterFor“ animieren (I8ea91) - Neue lokale API für die Zusammensetzung von LocalSoftwareKeyboardController hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I658b6, b/168778053)
Version 1.0.0-alpha12
10. Februar 2021
androidx.compose.ui:ui-*:1.0.0-alpha12
wird veröffentlicht. Version 1.0.0-alpha12 enthält diese Commits.
API-Änderungen
- Die Unterstützung für ViewGroups wurde aus UiApplier entfernt. Die veralteten emitView-Kompositionen wurden entfernt. (Ifb214)
- Für Modifier.pointerInput sind jetzt Schlüssel zum Speichern erforderlich, um anzugeben, wann die Coroutine zur Erkennung der Eingabe per Mauszeiger für neue Abhängigkeiten neu gestartet werden soll. (I849cd)
- CompositionReference wurde in CompositionContext (I53fcb) umbenannt
- „Bounds“ wurde in „DpRect“ umbenannt (I4b32a).
- Test-Update: hasText() sucht im Textfeld sowohl nach Eingabe- als auch Label-/Hinweisen/Platzhaltern (Iab803)
- Die Komponente „viewModel()“ und „LocalViewModelStoreOwner“ wurden zu androidx.lifecycle.viewmodel.compose verschoben. Sie müssen jetzt eine separate Abhängigkeit hinzufügen: androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01, um sie zu verwenden. (I7a374)
- Nullwertige Aktion in AccessibilityAction zulassen, Aktionslabel in AccessibilityAction und CustomAccessibilityAction von CharSequence in String ändern (I0dc82)
- Um die Namenskonventionen besser an ImageBitmap und ImageVector anzupassen, wurde ImagePainter in BitmapPainter umbenannt, um Parallelität zu VectorPainter herzustellen. (Iba381, b/174565889)
- Bessere APIs für den Test von Substrings, bei denen der Substring jetzt als Argument verwendet wird (Icbe78)
- Es wurde eine
Modifier.focusOrder()
hinzugefügt, die einen FocusRequester akzeptiert, ohne eine benutzerdefinierte Fokusreihenfolge für ein Lambda anzugeben. Das ist nützlich, wenn wir für ein composable nur eine Referenz, aber keine benutzerdefinierte Fokusreihenfolge angeben müssen (I4f52a, b/179180978). - „ComponentActivity.setContent“ wurde nach androidx.activity.compose.setContent im Modul androidx.activity:activity-compose verschoben. (Icf416)
- Die Destrukturierungs- und copy()-Methoden wurden aus mehreren Klassen entfernt, in denen sie nur selten verwendet wurden. (I26702, b/178659281)
- Pop-ups sind jetzt plattformspezifisch. „AndroidPopupProperties“ wurde in „PopupProperties“ umbenannt und
isFocusable
wurde inPopupProperties
zu einemfocusable
-Parameter verschoben (Ieeea5) - Dialogfeld wurde plattformspezifisch. AndroidDialogProperties wurde in DialogProperties umbenannt. (I4ef69, b/179138130)
- LayoutNode wurde intern (I8a7b1, b/175103944)
- Constraints.enforce wurde durch Constraints.constrain ersetzt. (I8b8ea)
- „loadFontResource“ wurde eingestellt. Verwenden Sie stattdessen „fontResource“. „imageResource“, „loadImageResource“, „vectorResource“ und „loadVectorResource“ wurden eingestellt. Verwenden Sie stattdessen painterResource. (I6b809)
- Aus Leistungsgründen werden für die ScrollAxisRange-Semantik jetzt Lambdas verwendet, die Floats zurückgeben, anstatt direkte Float-Werte. (If4a35, b/178657186)
- Es wurde eine EditableText-Semantik hinzugefügt, um bearbeitbaren Eingabetext des Textfelds für Barrierefreiheit zu markieren, und entsprechende Testmethoden zur Prüfung der Semantik (I8e07a).
- OwnerLayer/OwnerScope/OwnerSnapshotObserver wurden intern (I4ffaf, b/175103944)
- „toIntPx()“ wurde in „roundToPx()“ umbenannt. (I9b7e4, b/173502290)
- IntBounds wurde in IntRect umbenannt und die API wurde verbessert. (I1f6ff)
- Die Snapshot API wurde aktualisiert, um sie an die API-Richtlinie anzupassen und interne Implementierungsklassen von der öffentlichen API auszublenden. (Id9e32)
- Es wurden Aktionen zum Maximieren und Minimieren hinzugefügt. „expand“ und „halfExpand“ in „ModalBottomSheetState“ hinzugefügt (Ib5064)
- Modifier.dragGestureFilter wurde eingestellt. Verwenden Sie stattdessen
Modifier.pointerInput { detectDragGestures (...)}
. Alternativ können Sie Modifier.draggable für das Ziehen entlang einer Achse verwenden (I0ba93, b/175294473) - Die Namen der Bildschirmschoner wurden umbenannt, damit sie mit der Umbenennung von „Ambient“ in „CompositionLocal“ übereinstimmen. Ambients hießen früher AmbientFoo, jetzt heißen sie CompositionLocals. (I2d55d)
- Das verworfene BaseTextField wurde entfernt. Verwenden Sie stattdessen „BasicTextField“. (I71368)
- Die Auswahl wurde in die Foundation verschoben. (I7892b)
- Ähnlich wie zuvor entfernte die zusammensetzbare Funktion
state { 0 }
und jetzt die Verwendung wieremember { mutableStateOf(0) }
, entfernen wir die zusammensetzbare FunktionsavedInstanceState { 0 }
. Verwenden Sie stattdessenrememberSaveable { mutableStateOf(0) }
. Dieser wird automatisch gespeichert und wiederhergestellt, wenn der im MutableState verwendete Typ im Bundle gespeichert werden kann. Wenn Sie zuvor ein benutzerdefiniertes Speicherobjekt übergeben haben, müssen Sie jetzt eine neue Überladung von „rememberSaveable“ mit dem ParameterstateSaver
verwenden. Die Verwendung sieht dann so aus:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004) - Passwortsemantik für Barrierefreiheit hinzugefügt (I231ce)
- ProgressBarRangeInfo.Indeterminate wurde hinzugefügt, um nicht befristete Fortschrittsanzeigen für die Barrierefreiheit zu kennzeichnen (I6fe05)
- Die Dienstprogramme
emptyContent()
und(@Composable () -> Unit).orEmpty()
wurden eingestellt, da sie sich nicht mehr positiv auf die Leistung auswirken (I0484d) snapshotFlow
undwithMutableSnapshot
sind nicht mehr experimentell (I6a45f)- Recomposeren können jetzt geschlossen werden. Geschlossene Rekompositionen werden fortgesetzt, bis die untergeordneten coroutines der Komposition abgeschlossen sind. Recomposer.shutDown wurde umbenannt, um den Vorgang abzubrechen und einen Kontrast mit dem Schließen zu bilden. (Ib6d76)
- UiSavedStateRegistry wurde in SaveableStateRegistry, AmbientUiSavedStateRegistry in AmbientSaveableStateRegistry umbenannt und beide in das Paket androidx.compose.runtime.saveable verschoben. (I30224)
- Das Artefakt „androidx:compose:runtime:runtime-saved-instance-state“ wurde in „androidx:compose:runtime:runtime-saveable“ (I6dcac) umbenannt
- Viele seit langem eingestellte APIs im ui-Paket wurden gelöscht. (I2f2dc)
- Das Artefakt „compose:runtime-dispatch“ wird jetzt eingestellt. MonotonicFrameClock finden Sie jetzt unter compose:runtime und AndroidUiDispatcher unter compose:ui. (Ib5c36)
- Outline.*-Klassen sind keine Datenklassen mehr (I4879e, b/178001427)
view.captureToImage()
ohne Ersatz entfernt. (I7fcd2)- Einführung der ColorMatrix API zum Ändern der RGB-Werte von Quellinhalten. Die ColorFilter API wurde zu einer Schnittstelle umgestaltet und der Implementierung von PathEffect angepasst. (Ica1e8)
- Fügen Sie der createOutline-Funktion von Shape den Parameter „layoutDirection“ hinzu. So lassen sich layoutorientierte Formen erstellen. (I57c20, b/152756983)
- onImeActionPerformed ist eingestellt. Verwenden Sie stattdessen KeyboardActions. (If0bbd, b/179071523)
- Einführung eines
InfiniteAnimationPolicy
-Kontextelements für Tasks, das bei endlosen Animationen angewendet wird. Standardmäßig ist keine Richtlinie installiert, es sei denn, Sie führen Tests mitComposeTestRule
aus. (I50ec4, b/151940543) - canDrag wurde aus Modifier.scrollable entfernt. (Id66e7, b/175294473)
- „LayoutCoordinates.parentCoordinates“ in „LayoutCoordinates.parentLayoutCoordinates“ umbenannt, um eine neue „parentCoordinates“-Property zu ermöglichen. Die Eigenschaft „parentCoordinates“ bietet jetzt die Layout-Koordinaten des übergeordneten Modifiers. Dies ermöglicht umfassendere Anwendungsfälle für onSizeChanged() und onGloballyPositioned() (Idfbfd, b/177926591).
- Die Funktionen „tapGestureFilter“, „doubleTapGestureFilter“, „longPressGestureFilter“ und „pressIndicaitonGestureFilter“ wurden eingestellt. Verwenden Sie stattdessen Modifier.clickable oder Modifier.pointerInput mit der Funktion „detectTapGestures“. (I6baf9, b/175294473)
- Die Funktion „unregisterProvider“ von SaveableStateRegistry wurde entfernt. Stattdessen gibt „registerProvider()“ jetzt das Objekt „SaveableStateRegistry.Entry“ zurück, mit dem Sie die Registrierung aufheben können (Ic4274, b/178583739)
- memorySavedInstanceState() wurde in „memorySaveable()“ umbenannt und in das Paket „androidx.compose.runtime.saveable“ verschoben. (I1366e, b/177338004)
- CoreText und CoreTextField aus der öffentlichen API entfernt
- Veraltete Auswahlcontainer-Überlastung entfernt
- (I99c19)
- Tests, bei denen Compose in Hierarchien verwendet wird, die direkt dem WindowManager hinzugefügt oder daraus entfernt werden, sind jetzt stabiler. (Ie81ed, b/175765614)
- Recomposer.current() wurde entfernt. [Abstrakt]ComposeView verwendet jetzt standardmäßig verzögert erstellte, fensterweite Recomposer, die vom ViewTreeLifecycleOwner für das Fenster gesteuert werden. Recomposition und mitFrameNanos-basierte Animations-Ticks werden pausiert, während der Lebenszyklus des Hosts angehalten ist. (I38e11)
- „Recomposer.runningRecomposers“ bietet jetzt einen globalen StateFlow mit schreibgeschützten RecomposerInfos, um den laufenden Kompositionsstatus im Prozess zu beobachten. Diese API ist Recomposer.current() vorzuziehen, das jetzt eingestellt wird. (If8ebe)
- Saver, listSaver(), mapSaver(), autoSaver wurden von androidx.compose.runtime.savedinstancestate zu androidx.compose.runtime.saveable verschoben (I77fe6)
- EditCommands akzeptieren AnnotatedString. Diese Änderung betrifft jedoch nur die API. Die Textbearbeitung mit mehreren Stilen ist noch nicht implementiert. (I4c3ea)
- „Uptime“ und „Dauer“ wurden entfernt. (Ib9bf4, b/177420019)
- CompositionData.asTree() und zugehörige APIs wurden in ein separates UI-Tooling-Datenmodul verschoben und als experimentell gekennzeichnet (Ic95b8)
- Die Parameter „left“ (links) und „right“ (rechts) von „RounderCornerShape“, „CutCornerShape“ und „CornerBasedShape“ wurden in „start“ (Anfang) und „end“ (Ende) umbenannt, um die automatische Spiegelung der Form in Richtung „rtl“ zu unterstützen. AbsoluteRounderCornerShape und AbsoluteCutCornerShape wurden für Fälle eingeführt, in denen keine automatische Spiegelung gewünscht ist. (I61040, b/152756983)
Die API, auf die das Compose-Compiler-Plug-in ausgerichtet ist, wurde so umgestellt, dass anstelle einer konkreten Klasse eine Schnittstelle verwendet wird. Auf der Benutzeroberfläche wird auch kein Typparameter mehr verwendet.
Dies ist eine interne Änderung, die sich nicht auf die Kompatibilität des Quellcodes auswirken sollte, aber eine funktionsgefährdende Änderung des Binärcodes ist. (I3b922, b/169406779)
Entfernen der versehentlich öffentlichen Funktion „StringBuilder.deleteAt“ (Id6ed9)
Fehlerkorrekturen
- ComposeViews in Ansichtshierarchien, die untergeordnete Elemente einer anderen Komposition sind, hosten jetzt untergeordnete Zusammensetzungen ihrer Ancestors (I92883).
- Die imageFromResource-API von compose wurde aktualisiert, um den Cache für drawable-Ressourcen beim Laden von ImageBitmap-Objekten wiederzuverwenden. (If3627, b/178751994)
Version 1.0.0-alpha11
28. Januar 2021
androidx.compose.ui:ui-*:1.0.0-alpha11
wird veröffentlicht. Version 1.0.0-alpha11 enthält diese Commits.
API-Änderungen
- WithConstraints wurde als BoxWithConstraints überarbeitet und zu "foundation.layout" verschoben. (I9420b, b/173387208)
- Key.DPadUp wird nicht mehr unterstützt. Verwenden Sie stattdessen Key.DirectionUp. (Iab335, b/177954892)
- Die Benutzeroberfläche für Rechteinhaber ist ab sofort nur noch intern verfügbar. (If8e35)
- Die API „FocusManager.moveFocus()“ wurde hinzugefügt, um den Fokus programmatisch zu verschieben. (I045cb, b/177681839)
- Ändert PopupPositionProvider so, dass fensterbezogene Koordinaten und keine globalen Koordinaten verwendet werden. parentGlobalBounds in anchorBounds umbenannt und windowGlobalBounds in windowSize: IntSize geändert (I2994a)
- „Duration“ und „Uptime“ werden durch „Long milliseconds“ ersetzt. Dadurch wird die Abhängigkeit der Zeigereingabe von diesen Klassen aufgehoben. (Ia33b2, b/175142755, b/177420019)
- AmbientSavedStateRegistryOwner wurde ähnlich wie die bereits vorhandenen AmbientLifecycleOwner und AmbientViewModelStoreOwner hinzugefügt (I9a3e8, b/176756365)
- Die API für Vektorgrafiken wurde aktualisiert, um das Parsen von Tönungen zu unterstützen, die auf die Wurzel der Vektorgrafik angewendet werden. (Id9d53, b/177210509)
- „toolType“ zu „PointerInputChange“ hinzugefügt, um Geräte zu unterscheiden (Iac787, b/175142755)
- AmbientWindowManager wurde in AmbientWindowInfo umbenannt (I2686a, b/177084714, b/177084983).
- Die Methoden für globale Koordinaten wurden eingestellt und neue Methoden für fensterbasierte Koordinaten eingeführt. (Iee284)
- Hinzugefügt wurde Modifier.toolingGraphicsLayer, das einen Grafikebenen-Modifikator hinzufügt, wenn die Prüfung aktiviert ist. (I315df)
- FocusRequester.createRefs ist jetzt als experimentell gekennzeichnet, da sich dies noch ändern kann. (I2d898, b/177000821)
- SemanticsPropertyReceiver.hidden wurde in invisibleToUser umbenannt und mit @ExperimentalComposeUiApi gekennzeichnet. „AccessibilityRangeInfo“ wurde in „ProgressBarRangeInfo“ umbenannt. „stateDescriptionRange“ wurde in „progressBarRangeInfo“ umbenannt. „AccessibilityScrollState“ wurde in „ScrollAxisRange“ umbenannt. „horizontalAccessibilityScrollState“ wurde in „horizontalScrollAxisRange“ umbenannt. „verticalAccessibilityScrollState“ wurde in „verticalScrollAxisRange“ umbenannt. (Id3148)
- „PointerInputData“ wurde entfernt und „PointerInputChange“ so geändert, dass es alle Felder von „PointerInputData“ enthält. PointerInputEvent und PointerInputEventData wurden intern gemacht, da sie in keiner öffentlichen API verwendet werden. (Ifff97, b/175142755)
- Die Implementierungsdichte von GraphicsLayerScope wurde aktualisiert, um die Konvertierung von dp in Rohpixel zu unterstützen. (Ied528, b/176819695)
- Die Matrix-API wurde aktualisiert, um der Zeilensortierung zu folgen und Indexkonstanten bereitzustellen, die bei der Umwandlung zwischen verschiedenen Matrixdarstellungen helfen, um die Framework-Umwandlungslogik zwischen SkMatrix und Matrix4 intern anzupassen. (I432e6)
- Die experimentellen Methoden „monotonicFrameAnimationClockOf“ wurden entfernt (Ib753f, b/170708374)
- String.fintPrecedingBreak und String.fingFollowingBreak in InternalTextApi verschieben (I657c4)
- androidx.compose.ui.util.isSurrogatePair wurde aus der öffentlichen API entfernt. (Ia9494)
- TransformedText.transformedText in TransformedText.text umbenannt
- „TransformedText“ ist keine Datenklasse mehr (Ie672a)
data class
wurde aus den folgenden Kursen entfernt:- InlineTextContent
- LocaleList (I605c7)
- Die folgenden Klassen sind keine Datenklassen mehr:
- AnnotatedString
- ParagraphStyle
- Span-Stil
- TextStyle
- Schriftstärke
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutErgebnis
- TextLayoutInput (Iaff99)
- VisualTransformation wurde zu einer funktionalen Schnittstelle geändert (I3bba4)
- Parametertyp für Funktionsreferenz hinzugefügt (I5e1bd)
- Transformierte Grenzen zu InspectorNode (Ice42f) hinzufügen
Fehlerkorrekturen
- onCommit, onDispose und onActive wurden zugunsten der SideEffect- und DisposableEffect-APIs eingestellt (If760e)
Änderungen an den Standardfunktionen für „Schrift“/„Schriftfamilie“/„Schriftschnitt“
- Es wurden Standardfunktionen hinzugefügt, die mit einem Großbuchstaben beginnen.
- Bisherige Standardfunktionen mit Kleinbuchstaben im ersten Buchstaben wurden eingestellt
- Neue Factory-Funktionen geben die Schriftfamilie anstelle von Unterklassen zurück
- Die Konstruktoren der Unterklassen wurden ausgeblendet, sodass sie nur über Fabrikfunktionen erstellt werden können.
- Font.asFontFamily wurde in Font.toFontFamily umbenannt (I42aa7).
ComposeContentTestRule
wurde eingeführt, dasComposeTestRule
erweitert undsetContent
definiert, das ausComposeTestRule
entfernt wurde. Es wurde eine FabrikmethodecreateEmptyComposeRule()
hinzugefügt, die eineComposeTestRule
zurückgibt und keine Aktivität für Sie startet. Verwenden Sie diese Option, wenn Sie Ihre Aktivität während des Tests starten möchten, z. B. mitActivityScenario.launch
(I9d782, b/174472899).„animateAsState“ heißt jetzt „animateFooAsState“, wobei „Foo“ der Typ der animierten Variablen ist, z. B. „Float“, „Dp“ oder „Offset“ (Ie7e25)
Dem Bild und dem Symbol wurde der Parameter „Inhaltsbeschreibung“ hinzugefügt. Sie wird verwendet, um Bedienungshilfen zu beschreiben (I2ac4c).
Entfernen Sie „displaySize“, da diese Option vermieden werden sollte. Normalerweise ist es besser, die Größe von onRoot() oder zumindest die Fenstergröße zu verwenden. (I62db4)
OnSizeChanged gab die Größe des Inhalts des Layouts an. Stattdessen wird jetzt die Größe an der Position innerhalb der Modifikatorkette angegeben. (I36b78, b/177562900)
Die emit() API und alle Überladungen wurden eingestellt und in ComposeNode umbenannt. Die APIs sind identisch, haben nur einen anderen Namen, um den Namenskonventionen von Compose zu entsprechen (I4137b).
Für „TextFieldValue“ ist „AnnotatedString“ zulässig. Dies ist jedoch nur eine API-Änderung und die Textbearbeitung mit mehreren Stilen ist noch nicht implementiert.
initial
wurde aus den Parametern des Konstruktors von 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 wurden entfernt. (Iaf429)
RememberObserver ersetzt CompositionLifecycleObserver und CompositionLifecycleObserver wird nicht mehr unterstützt.
RememberObserver
ersetztCompositionLifecycleObserver
mit geänderter Semantik und umbenannten Methoden. Für Objekte, die nur einmal gespeichert werden, kann die Umstellung auf die neue API automatisch erfolgen. Dies ist und bleibt die empfohlene Vorgehensweise. Wenn ein Verweis jedoch in einer Komposition mehrmals gespeichert wurde, wirdonRemembered
für jeden Verweis aufgerufen, währendonEnter
nur einmal aufgerufen wird.onEnter
wurde mehrmals aufgerufen, wenn das Objekt in Unterzusammensetzungen wieWithConstraints
undScaffold
verwendet wurde, wodurch der einzelneonEnter
-Aufruf garantiert unzuverlässig war und fürRememberObserver
entfernt wurde.RememberObserver
fügtonAbandoned
hinzu. Dieser wird aufgerufen, wenn dieRememberObserver
-Instanz von dem anremember
übergebenen Callback zurückgegeben wird, aber im Zusammensetzungsstatus nicht gespeichert wurde. Daher wirdonRemembered
niemals aufgerufen. Dies kann auftreten, wenn eine Ausnahme die Komposition vor Fertigstellung beendet oder die Komposition verworfen wird, weil der Status, für den eine Komposition erzeugt wurde, nicht mehr aktuell ist oder aus anderen Gründen nicht mehr benötigt wird. Wenn die Instanz vonRememberObserver
gemäß der Empfehlung oben mit einer einzelnen Referenz eine externe Ressource erfasst, geben sowohlonForgotten
als auchonAbandoned
an, dass die Ressource nicht mehr benötigt wird. Wenn das Objekt die inonRemembered
gestartete Arbeit oder zugewiesenen Ressourcen erfasst, kannonAbandoned
ignoriert werden, da es nicht aufgerufen wird, wennonRemembered
aufgerufen wird. (I02c36)Arithmetische Operationen zwischen zwei oder mehr Texteinheiten wurden eingestellt. Die veralteten TextUnit.Sp- und TextUnit.Em-Funktionen haben Vorrang vor den Erweiterungsfunktionen wie Int.sp und Int.em. (I48369)
Ressourcen in Bibliotheken, für die keine explizit deklarierten öffentlichen Ressourcen angegeben sind (z. B. über public.xml), sind jetzt standardmäßig privat. (Ia1dcc, b/170882230)
ScrollableColumn/Row wurden eingestellt. Die Verwendung von ScrollableColumn ist bei großen scrollbaren Inhalten weniger effizient als LazyColumn, da mit LazyColumn nur sichtbare Elemente erstellt, gemessen und gezeichnet werden können. Um zu verhindern, dass Nutzer diese ineffiziente Methode verwenden, haben wir uns entschieden, ScrollableColumn und ScrollableRow einzustellen und stattdessen die Verwendung von LazyColumn und LazyRow zu empfehlen. Nutzer können weiterhin entscheiden, dass sie das Lazy-Verhalten nicht benötigen, und die Modifikatoren direkt verwenden, z. B. so: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
Neue
items(count: Int)
-Factory-Methode für den Bereich von LazyColumn/LazyRow/LazyVerticalGrid.items(items: List)
unditemsIndexed(items: List)
sind jetzt Erweiterungsfunktionen und müssen bei Verwendung manuell importiert werden. Neue Erweiterungsüberladungen für Arrays:items(items: Array)
unditemsIndexed(Array)
(I803fc, b/175562574)Verwenden Sie stattdessen „ImeAction.None“ statt „ImeAction.NoAction“.
- Verwende „ImeAction.Default“ anstelle von „ImeAction.Unspecific“ (Ie1bcc).
TestCoroutineDispatcher bei Tests nutzen (I532b6)
TextInputService.onStateUpdated wurde in updateState (Id4853) umbenannt.
Die auf TransitionDefinition basierende Transition wurde eingestellt (I0ac57)
„TextUnitType.Inherit“ wurde entfernt. Verwenden Sie stattdessen „TextUnitType.Unspecified“. (I9ff64)
Version 1.0.0-alpha10
13. Januar 2021
androidx.compose.ui:ui-*:1.0.0-alpha10
wird veröffentlicht. Version 1.0.0-alpha10 enthält diese Commits.
funktionsgefährdende Änderung
Durch die Umstrukturierung der internen Compiler-API können Änderungen an den Knoten, die durch die Komposition generiert wurden, in der Phase „Änderungen anwenden“ der Komposition gebündelt werden, nachdem alle
@Composable
-Funktionen abgeschlossen sind.Dies ist eine funktionsgefährdende Änderung, die sich auf den Anwendungscode auswirken kann, da Knoten erst nach dem Anwenden der Änderungen über interne und experimentelle APIs verfügbar sind. Das lässt sich in der Regel dadurch umgehen, dass Code mit solchen Abhängigkeiten in einem
SideEffect
-kompositiven Element umgeben wird, um die Ausführung des Codes so lange zu verschieben, bis die Knoten erstellt und initialisiert wurden. (I018da)
API-Änderungen
- Modifier.focusOrder() wurde hinzugefügt, mit dem eine benutzerdefinierte Fokusreihenfolge angegeben werden kann (I90cf5, b/175899543, b/170155556, b/170155429)
- Entfernen des veralteten „focusObserver“; stattdessen „onFocusChanged“ oder „onFocusEvent“ verwenden (I3ecb9, b/175156387)
- Änderungen an der EditOperations API
- „EditOperation“ in „EditCommand“ umbenannt
- Befehlssuffix für konkrete Implementierungen von EditOperation hinzugefügt
- EditCommands sind keine Datenklassen mehr
- Die Funktion „EditOperation.process“ wurde in „applyTo“ umbenannt.
- InputEventListener in InputEventCallback umbenannt
- (I0a366)
- Die nicht verwendeten Funktionen „PxSquared“, „PxCubed“ und „PxInverse“ wurden entfernt. "Size.center()" wurde zu einer Eigenschaft geändert. (I973f7)
- Im ui-test-Modul kann jetzt die Erstellung von Recomposers für zu testende UIs (Ibebd8) konfiguriert werden.
- Velocity wurde um Komponententeile und mathematische Operationen erweitert. (Ib0447)
@ExperimentalTesting
wurde in@ExperimentalTestApi
umbenannt, um mit ähnlichen experimentellen API-Hinweisen übereinzustimmen (Ia4502, b/171464963).- „Color.useOrElse()“ wurde in „Color.takeOrElse()“ umbenannt (Ifdcf5)
- Die nicht verwendeten Klassen „DpInverse“, „DpSquared“ und „DpCubed“ wurden entfernt. (I4d62b)
- Constraints#satisfiedBy wurde in isSatisfiedBy umbenannt. (I9cf5c)
- Fügen Sie einen Rückruf hinzu, um den Eigentümer zu benachrichtigen, wenn sich die Grenzen des Layoutknotens ändern. (I72fd1)
- „isSpecified“, „isUnspecified“ und „useOrElse“ wurden für Inline-Klassen mit einer Unspecified-Konstante hinzugefügt. (I93f7b, b/174310811)
[Abstract]ComposeView APIs erweitern, um das Recycling von Compose-basierten Ansichten zu ermöglichen, indem die Zusammensetzung verworfen und später neu erstellt wird. APIs zum Installieren und Entdecken von Recomposern auf Fensterebene und CompositionReferences zum Erstellen von untergeordneten Kompositionen hinzufügen
Fügen Sie „ViewCompositionStrategy“ hinzu, um die Strategie zur Entsorgung der Zusammensetzung von [Abstract]ComposeViews zu konfigurieren. Das Standardverhalten ist die Entsorgung beim Entfernen des Fensters. (I860ab)
Die öffentliche API „Any.identityHashCode()“ wurde entfernt (I025d7)
Die API „toStringAsFixed“ wurde entfernt. Stattdessen wird jetzt direkt „String.format“ verwendet. (Iaba6b)
„Toggle“ zu „foundation Strings.kt“ hinzufügen (I4a5b7, b/172366489)
nativeClass wurde in das UI-Modul verschoben und intern gemacht. Die Verwendung von „nativeClass“ in „equals“-Implementierungen wurde aktualisiert. Stattdessen wird jetzt „is MyClass“ verwendet. (I4f734)
Modifier.focus() und Modifier.focusRequester() wurden eingestellt. Verwenden Sie stattdessen „Modifier.focusModifier()“ und „Modifier.focusReference()“. (I75a48, b/175160751, b/175160532, b/175077829)
Einführung von SelectionRegistrar.notifySelectableChange, um SelectionManager über Updates für auswählbare Elemente zu benachrichtigen. (I6ff30, b/173215242)
Das Attribut „Outline.bounds“ wurde eingeführt, um den Begrenzungs-Rechteck für verschiedene Umrissimplementierungen abzurufen. (I16e74, b/175093504)
TestUiDispatcher wurde eingestellt. Verwenden Sie stattdessen Dispatchers.Main (Ic171f, b/175385255).
„ImeOptions“ und „KeyboardOptions“ sind keine Datenklassen mehr (I3c898, b/168684531)
Änderungen an der VisualTransformation API
- OffsetMap in OffsetMapping umbenannt
- OffsetMapping.identityOffsetMap in OffsetMapping.Identity umbenannt
- PasswordTransformation ist keine Datenklasse mehr
- OffsetMapping wurde in eigene Datei verschoben
- (I0bdf3)
„Position“ in „DpOffset“ umbenannt und „getDistance()“ entfernt (Ib2dfd)
fun Dp.isFinite() in val Dp.isFinite geändert (I50e00)
Fehlerkorrekturen
- Recomposer stellt jetzt einen Stream seines aktuellen Zustands bereit, mit dem sich seine Aktivität und die Aktivität der zugehörigen Effekte beobachten lassen. (Ifb2b9)
- Der native keyEvent kann jetzt über „keyEvent.nativeKeyEvent“ aufgerufen werden (I87c57, b/173086397)
animate()
wurde durchanimateAsState()
ersetzt, dasState<T>
stattT
zurückgibt. Dies ermöglicht eine bessere Leistung, da der Gültigkeitsbereich der Daten auf den Bereich eingegrenzt werden kann, in dem der Statuswert gelesen wird. (Ib179e)- Fügen Sie die Semantics-Rollen-API und die Rolle als Parameter zum anklickbaren, auswählbaren und umschaltbaren SemanticsModifier hinzu. Wir haben Modifier.progressSemantics geändert, damit es auch für den Schieberegler verwendet werden kann. (I216cd)
- Neue coroutine-basierte API
Animatable
, die für gegenseitige Ausschließlichkeit der Animationen sorgt.- Neue DecayAnimationSpec zur Unterstützung mehrdimensionaler Abklinganimationen
- (I820f2, b/168014930)
Version 1.0.0-alpha09
16. Dezember 2020
androidx.compose.ui:ui-*:1.0.0-alpha09
wird veröffentlicht. Version 1.0.0-alpha09 enthält diese Commits.
API-Änderungen
- Die Einstellung „Alt“ für KeyEvent wurde eingestellt und entfernt. Verwenden Sie stattdessen „KeyEvent.isAltPressed“. (Idd695)
- Modifier.keyInputFilter und Modifier.previewKeyInputFilter wurden eingestellt. Verwenden Sie stattdessen Modifier.onKeyEvent und Modifier.onPreviewKeyEvent. (Idbf1b, b/175156384)
- Modifier.focusObserver wurde eingestellt. Verwenden Sie stattdessen Modifier.onFocusChanged oder Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
- Zum Anhalten von Zeigereingabe-APIs wurde HandlePointerInputScope in AwaitPointerEventScope und handlePointerInput() in awaitPointerEventScope() umbenannt. (Idf0a1, b/175142755)
- Die Autofill API ist jetzt eine experimentelle API und muss aktiviert werden (I0a1ec)
- Destrukturierungsdeklarationen zum Erstellen von FocuSRequester-Instanzen hinzufügen (I35d84, b/174817008)
- „accessibilityLabel“ wurde in „contentDescription“ umbenannt. „accessibilityValue“ wurde in „stateDescription“ umbenannt. (I250f2)
- Benutzerdefinierte Ereignisse wurden aus der API zum Pausieren der Eingabe per Maus entfernt (Ia54d5, b/175142755)
- Es wurden mehrere neue Funktionen in SelectionRegistrar eingeführt und „onPositionChange“ in „notifyPositionChange“ umbenannt. (Ifbaf7)
- Weitere Mitglieder von LayoutNode, die wir als intern gekennzeichnet haben (I443c6)
- LayoutInfo wurde für Tools und Tests eingeführt (I9b190)
- Von AndroidOwner intern gemacht (Ibcad0, b/170296980)
- Anmerkung zu ExperimentalPointerInput entfernt (Ia7a24)
- Verschachteltes Scrollsystem hinzugefügt. Weitere Informationen finden Sie unter Modifier.nestedScroll (I36e15, b/162408885).
- subcomposeInto(LayoutNode) intern gemacht (Id724a)
Die Schnittstelle
Applier
wurde geändert, um das Erstellen von Baumstrukturen mit dem Bottom-up-Ansatz anstatt von oben nach unten zu vereinfachen.Die Methode
insert()
wurde ininsertTopDown()
umbenannt.Die neue Methode
insertBottomUp()
wurde hinzugefügt.Ein Anwender fügt dem bearbeiteten Baum Knoten entweder mit
insertTopDown()
oderinsertBottomUp()
ein, je nachdem, welche Leistung besser ist.Einige Bäume, z. B.
LayoutNode
undView
, lassen sich viel effizienter von unten nach oben als von oben nach unten erstellen. Vor dieser Änderung war für die Bottom-Up-Implementierung ein Stapel von Einfügungen erforderlich, der in jeden Applier kopiert werden musste, der für die Leistung eine Bottom-Up-Konstruktion benötigte. Mit dieser Änderung wirdApplier
überinsertBottomUp()
überschrieben, um einen Baum von unten nach oben zu erstellen, undinsertTopDown()
, um den Baum von oben nach unten zu erstellen. (Icbdc2)Den AndroidDialogProperties wurden die Eigenschaften „dismissOnBackPress“ und „dismissOnClickOutside“ hinzugefügt. Damit lässt sich konfigurieren, wann das Lambda-Objekt „onDismissRequest“ des Dialogs aufgerufen wird. (If5e17)
Die painterResource API wurde hinzugefügt, um das undurchsichtige Laden von Painter-Objekten aus Raster-Asset-Formaten (z. B. PNGs) oder VectorDrawables zu ermöglichen. Nutzer müssen den Asset-Typ nicht mehr im Voraus bestimmen. Sie können diese Methode aufrufen, um ein Painter-Objekt für Bildkompositionen oder Painter-Modifikatoren abzurufen. (I2c703, b/173818471)
Modifier.clearAndSetSemantics wurde hinzugefügt, um die Semantik der Nachfolgerelemente zu löschen und neue festzulegen. (I277ca)
ContentDrawScope wurde in das UI-Grafikmodul verschoben, um es mit DrawScope zusammenzuführen. (Iee043, b/173832789)
Einführung der PathEffect-Grafik-API, um verschiedenen Linienformen unterschiedliche Muster zuzuweisen. Die Verwendung von NativePathEffect zugunsten der erwarteten/tatsächlichen Implementierung von PathEffect wurde eingestellt. (I5e976, b/171072166)
Compose-Unterstützung für IdlingResource-Schnittstellen hinzugefügt, eine von Compose unterstützte Variante der Inaktivitätsressourcen von Espresso. Sie können über die ComposeTestRule (I433f3) registriert und wieder abgemeldet werden.
Globale Registrierung/Deregistrierung von ComposeIdlingResource und globale Registrierung/Deregistrierung von Uhren in ComposeIdlingResource entfernt (I32660)
Fehlerkorrekturen
- Lambdas in Offset-Modifizierern geben jetzt IntOffset statt Float zurück. (Ic9ee5, b/174137212, b/174146755)
SlotTable, SlotReader und SlotWriter wurden aus der öffentlichen API entfernt. Diese wurden zuvor als „InternalComposeAPI“ gekennzeichnet. Jetzt gehören sie in das Schreiben-Modul.
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 vorgesehen, da sie die Rohdaten enthalten, die von der UI-Tooling API interpretiert werden (I31a9c).
ShaderBrush wurde neu strukturiert, um eine Shaderinstanz zu erstellen, wenn Informationen zur Größe der Zeichenumgebung verfügbar sind. Dies ist nützlich, um Farbverläufe zu definieren, die bei der Zusammensetzung die gesamten Zeichengrenzen eines Composeables einnehmen, ohne dass benutzerdefinierte DrawModifier-Implementierungen implementiert werden müssen.
Die APIs für Gradientenfunktionskonstruktoren wurden zugunsten von Fabrikmethoden für ein Gradientenobjekt verworfen. (I511fc, b/173066799)
Die Funktionen „LazyColumnFor“, „LazyRowFor“, „LazyColumnForIndexed“ und „LazyRowForIndexed“ werden eingestellt. Verwenden Sie stattdessen LazyColumn und LazyRow (I5b48c).
Verworfen: BuildCompat.isAtLeastR (Idb37e)
Die werkseitige Funktion „buildAnnotatedString“ wurde hinzugefügt, um einen AnnotatedString zu erstellen. Die Funktion „annotatedString.builder“ wurde eingestellt. (Idfe0b)
Erweiterungsmethoden für Float und Double zum Umwandeln von Werten in Radianten wurden entfernt. Die Funktion wurde in die Implementierung von PathParser verschoben, da sie nur dort verwendet wurde (I25f52).
Version 1.0.0-alpha08
2. Dezember 2020
androidx.compose.ui:ui-*:1.0.0-alpha08
wird veröffentlicht. Version 1.0.0-alpha08 enthält diese Commits.
API-Änderungen
- Semantische Aktion „Schließen“ hinzufügen (I2b706)
- Die DrawModifier APIs wurden aus dem Paket androidx.compose.ui in das Paket androidx.compose.ui.draw verschoben. Die Datei „DrawModifierDeprecated.kt“ wurde erstellt, um Aliasse und Hilfsmethoden für die Migration von den eingestellten zu den aktuellen APIs zu enthalten. (Id6044, b/173834241)
- Umbenennung von Modifier.drawLayer in Modifier.graphicsLayer Änderungen der zugehörigen Klassen in GraphicsLayer gemäß API-Feedback (I0bd29, b/173834241)
- Die neuen Methoden „placeable.placeWithLayer()“ und „placeable.placeRelativeWithLayer()“ wurden hinzugefügt. Mithilfe dieser Methoden können benutzerdefinierte Layouts und Layoutmodifikatoren ein untergeordnetes Element platzieren und dabei eine Grafikebene für die Zeichnung einfügen. So können wir zuerst die Neuzeichnungen optimieren, sodass wir beim Verschieben eines untergeordneten Elements nicht dessen Inhalt neu zeichnen müssen. Außerdem können wir Zeichentransformationen für ein untergeordnetes Element anwenden (Ibd8f6, b/170296989, b/171493718, b/173030831)
<T>
wurde aus der Deklaration von „SubcomposeLayout“ entfernt. Sie können es jetzt ohne Angabe eines Typs verwenden. (Ib60c8)- Die APIs „Modifier.scale“ und „Modifier.rotate“ wurden für drawLayer hinzugefügt.
Modifier.drawOpacity
wurde inModifier.alpha
umbenanntModifier.drawShadow
wurde inModifier.shadow
umbenannt (I264ca, b/173208140)
- Die Felder „Uptime“ und „Position“ von „PointerInputData“ sind jetzt nicht mehr optional. (ID468a)
- MaterialTheme setzt jetzt die richtigen Farben für Auswahl-Handle und Auswahlhintergrund. In nicht-Material-Apps können die Farben für die Auswahl manuell mithilfe von „AmbientTextSelectionColors“ angepasst werden. (I1e6f4, b/139320372, b/139320907)
- 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)
- Die TransformOrigin API wurde mit einer destruktiven Syntax aktualisiert, um
pivotFractionX
undpivotFractionY
alscomponent1
undcomponent2
zurückzugeben (If43c4, b/173586560) - Es wurde eine Lint-Prüfung für die Benennung und Position von zusammensetzbaren Lambda-Parametern hinzugefügt, um die Konsistenz mit den Richtlinien für das Schreiben zu prüfen.
Außerdem wurden einige APIs, die
children
als Namen für das abschließende Lambda verwendet haben, gemäß der Lint-Prüfung und den Anleitungen zucontent
migriert. (Iec48e) - Es wurde eine API hinzugefügt, mit der geprüft wird, ob beim Senden eines Tastenevents die Modifikatortasten Alt, Strg, Meta oder Umschalt gedrückt wurden. (I50ed9)
- Neue
Modifier.drawLayer()
-Überlastung hinzugefügt. Es wird ein Lambda-Block für einen neuen GraphicsLayerScope verwendet, in dem Sie die Ebenenparameter so definieren, dass die Neuzusammensetzung und das Neulayout bei einem Statuswechsel übersprungen werden. DrawLayerModifier ist jetzt intern für die Migration seiner Logik in die Methode "placeable.placeWithLayer()" von LayoutModifier (I15e9f, b/173030831). - Wir haben Ambients mit dem Suffix
Ambient
eingestellt und durch neue Properties mit dem Präfix „Ambient“ ersetzt, gemäß den Richtlinien für Ambients und die Compose API. (I33440) androidx.compose.ui.text.Typeface
wurde nachandroidx.compose.ui.text.font.Typeface
verschoben (Ic2b81)- Das semantische Argument „mergeAllDescendants“ wurde in „mergeDescendants“ umbenannt. (Ib6250)
- Neue Drag-Gesten-Erkennung, die die Zeigereingabe-API anhält, einschließlich Ausrichtungssperre. (Icef25)
- VectorAsset in ImageVector umbenannt VectorAsset in Builder verschoben und umbenannt, um gemäß den API-Richtlinien eine innere Klasse von ImageVector zu sein Typealias von VectorAssetBuilder hinzugefügt, um eine Verknüpfung mit ImageVector.Builder herzustellen. (Icfdc8)
- ImageAsset und zugehörige Methoden wurden in ImageBitmap umbenannt. (Ia2d99)
- ZIndex-Parameter für „place()“ des PlacementScope hinzufügen, damit „Modifier.zIndex()“ jetzt als LayoutModifier funktioniert und jedes benutzerdefinierte Layout Z-Index-Werte für seine untergeordneten Elemente direkt im Placement-Block festlegen kann (I711f7, b/171493718)
- Eigenschaften für die grundlegende Semantik in die Benutzeroberfläche verschoben (I6f05c)
- Die Funktionen „place(Offset)“ und „placeRelative(Offset)“ werden eingestellt. Verwenden Sie stattdessen Überladungen mit int-Offset (I4c5e7).
- Bisher verworfene APIs wurden entfernt: Modifier.onPositioned wurde entfernt. Verwenden Sie stattdessen Modifier.onGloballyPositioned. Modifier.onDraw wurde entfernt. Verwenden Sie stattdessen Modifier.onDrawBehind. Modifier.plus wurde entfernt. Verwenden Sie stattdessen Modifier.then. „Color.Unset“ wurde entfernt. Verwenden Sie stattdessen „Color.Unspecified“. Die Klasse „PxBounds“ wurde entfernt. Verwenden Sie stattdessen „Rect“. (Ie9d02, b/172562222)
- Die Benutzeroberfläche für die Ausrichtung wurde aktualisiert und funktioniert jetzt. (I46a07, b/172311734)
- Mit der neuen Eingabemethode für den schwebenden Cursor wurden ein Gestensensor für Tippen, Doppeltippen, langes Drücken und eine Druckanzeige hinzugefügt. Außerdem wurden einige Dienstprogramme hinzugefügt, mit denen Entwickler ihre eigenen Gestenerkennungen leichter erstellen können. (I00807)
id
wurde fürLayoutIdParentData
inlayoutId
umbenannt.Measurable.id
wurde inMeasurable.layoutId
umbenannt. (Iadbcb, b/172449643)- Neuer Multi-Touch-Gestendetektor mit Hilfsfunktionen zum Erkennen von Drehung, Zoomen und Schwenken. (IC459d)
- Einführung der APIs „SweepGradientShader“ und „SweepGradientBrush“. (Ia22c1)
- Die Zeitsteuerung in Tests (TestAnimationClock und ihre Nutzung) ist jetzt experimentell (I6ef86, b/171378521).
Fügen Sie koroutinebasierte Scroll-APIs hinzu:
Es wurden LazyListState.snapToItem und LazyListState.smoothScrollBy sowie APIs der unteren Ebene für die Scrollsteuerung hinzugefügt. Diese APIs bieten eine Sperroberfläche zum Steuern des Scrollens, die wartet, bis das Scrollen abgeschlossen ist, bevor sie zurückgegeben wird. (Ie5642)
Für „Modifier.focusable“ ist ein zusätzliches Fundament erforderlich. Mit diesem Attribut können Sie einer Komponente ein fokussierbares Verhalten mit korrekter Semantik und Barrierefreiheit hinzufügen. (I41eb9, b/152525426, b/162865824)
Stellt Standardimplementierungen von Methoden und Eigenschaften in AnimationClockTestRule bereit, die an die zugehörige
clock
(I7ea3d, b/173399709) delegiert werden können.AndroidComposeTestRule kann jetzt benutzerdefinierte Aktivitätsauslöser akzeptieren (Ib8288, b/153623653, b/154135019)
TextLayoutResult.getLineVisibleEnd wurde eingestellt. Als Ersatz gibt es jetzt den neuen Parameter „visibleEnd“ für TextLayoutResult.getLineEnd. (I73282)
Aktualisierte TextFieldValue API
- TextFieldValue.composition wurde schreibgeschützt
- Ausnahme für ungültigen Auswahlbereich entfernt (I4a675, b/172239032)
Unterstützung von TtsAnnotation für die Sprachausgabe (I54cc6)
Neue APIs zum Ausführen von Animationen in Koroutinen (Ied662)
Fehlerkorrekturen
- Der Ausrichtungsparameter von „Box“ wurde in „contentAlignment“ umbenannt. (I2c957)
- Die Modifikatoren „offsetPx“ wurden in „offset“ umbenannt. Stattdessen werden jetzt Lambda-Parameter anstelle von „State“ verwendet. (Ic3021, b/173594846)
- Dem TextInputService#onStateUpdated-Parameter wurde der Parameter „resetInput“ hinzugefügt (I3e8f5, b/172239032, b/171860947)
- Es wurde eine Lint-Prüfung für Modifikatorparameter in zusammensetzbaren Funktionen hinzugefügt. Bei dieser Lint-Prüfung wird die Benennung, der Rückgabetyp, der Standardwert und die Reihenfolge des Parameters auf Übereinstimmung mit den Compose-Richtlinien geprüft. (If493b)
- Vorübergehend wurde die Option hinzugefügt, die TestAnimationClock von der MonotonicFrameClock steuern zu lassen (I1403b, b/173402197)
- Android-Schriftarten-Wrapper hinzugefügt. Sie können eine Android-Schriftart über die
typeface
-Funktion (typeface(Typeface.DEFAULT)
) laden. Außerdem wurdetypefaceFromFontFamily()
intypeface()
(I52ab7) umbenannt. - Es wurde eine Lint-Prüfung hinzugefügt, um zu prüfen, ob Modifier-Factory-Funktionen als Erweiterungen von Modifier definiert sind, damit sie nahtlos miteinander verknüpft werden können. (I07981)
- Entfernen Sie das alte UI-Test-Modul und die zugehörigen Stubs (I3a7cb).
- Der Recomposer akzeptiert keinen EmbeddingContext mehr. Die erforderlichen Planungsabhängigkeiten werden aus dem effectCoroutineContext abgerufen. FrameManager wurde eingestellt. Plattformintegrationen sollten ihre eigene globale Snapshot-Verarbeitung initialisieren. (I02369)
- Übergeben Sie Stilinformationen an den Barrierefreiheitsknoten. (If5e8d)
- TextUnit.Inherit wurde in TextUnit.Unspecified umbenannt, um für Einheitlichkeit mit anderen Einheiten zu sorgen. (Ifce19)
Compose-Benutzeroberfläche, Version 1.0.0-alpha07
11. November 2020
androidx.compose.ui:ui-*:1.0.0-alpha07
wird veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.
API-Änderungen
- Die Inline-Klasse „ScaleFactor“ wurde eingeführt, um Skalierungsfaktoren für die horizontale und vertikale Achse unabhängig voneinander darzustellen und so Anwendungsfälle mit nicht einheitlicher Skalierung zu unterstützen.
- Der ContentScale-Klasse wurde die Methode „computeScaleFactor“ hinzugefügt.
- ContentScale.FillBounds wurde hinzugefügt, um eine uneinheitliche Skalierung durchzuführen und die src-Grenzen so zu erweitern, dass das Ziel vollständig belegt wird.
- Es wurden Operatormethoden hinzugefügt, um Skalierungsfaktor-Parameter mit Größenparametern zu berechnen.
- (Ic96a6, b/172291582)
- Die Faktoren BiasAlignment und BiasAbsoluteAlignment zum Erstellen von Ausrichtungen wurden hinzugefügt. (Iac836, b/169406772)
- Entwicklern die Möglichkeit geben, den Fokus zu löschen. (I90372)
- Ein Fehler, der dazu führte, dass für Views in „Compose“ keine Höhenangaben gezeichnet wurden, wurde behoben. (If7782)
- "onDrawBehind" wurde in ContentDrawScope erstellt, um die Namenskonvention mit "Modifier.drawBehind" zu erfüllen. (I4fc3a, b/171955269)
- Unterstützung für die Kameradistanz hinzufügen, um die 3D-Transformationen „rotationX“/„rotationY“ in Ebenen-APIs zu ergänzen. (I40213, b/171492100)
- SelectionContainer ohne Rückruf hinzugefügt (Ibfadb)
- Die Anmerkung „ExperimentalSubcomposeLayoutApi“ wurde entfernt. SubcomposeLayout kann jetzt ohne Hinzufügen von @OptIn verwendet werden (I708ad)
- „FirstBaseline“ und „LastBaseline“ wurden in das Paket „androidx.compose.ui.layout“ verschoben (Ied2e7).
- Die Deckkraft wurde aus dem Modifikator „drawShadow()“ entfernt, da er verwirrend war. (I82c62, b/171624638)
- MeasureResult wurde aus MeasureScope verschoben. (Ibf96d, b/171184002)
- Mehrere layoutbezogene Symbole wurden von androidx.compose.ui zu androidx.compose.layout.ui verschoben. (I0fa98, b/170475424)
- Die Einstellung „FocusState2“ wurde entfernt (I686cb, b/168686446)
- „ZIndexModifier“ ist jetzt intern (I1808b, b/171493718)
- Der Rückgabetyp der LOP-Methode für Größenparameter wurde aktualisiert, um eine Größe ungleich null zurückzugeben, um unnötiges Boxing zu vermeiden. (Ib0044)
- TestMonotonicFrameClock wurde hinzugefügt, um Code zu testen, der auf Kompositions-Frame-Ereignissen von Composer basiert und auf der Verwendung von runBlockingTest von kotlinx-coroutines-test (I4402f) erfolgt.
- GestureScope.localToGlobal entfernt (I15299, b/171462785)
onAllNodesWithSubstring
-Finder hinzugefügt (I81dd7, b/171462889)- Das Modul androidx.ui.test wurde eingestellt. Bitte migrieren Sie zu androidx.compose.ui.test und androidx.compose.ui.test.junit4 (I452e8).
Fehlerkorrekturen
- „captureToBitmap“ wurde in „captureToImage“ umbenannt. (I86385)
- 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)
- TextFields so aktualisieren, dass sie Tastaturoptionen akzeptieren (Ida7f3)
- KeyboardOptions in ImeOptions umbenennen (I82f36)
- KeyboardType und ImeAction wurden in KeyboardOptions verschoben (I910ce)
- „provideDefault“ wurde als Alternative zum Bereitstellen von Umgebungen hinzugefügt. Damit können Umgebungswerte angegeben werden, die nur festgelegt werden, wenn noch kein Umgebungswert vorhanden ist. (Id6635, b/171024925)
- BaseTextField wurde eingestellt. Verwenden Sie stattdessen „BasicTextField“. (I896eb)
- Einführung des Moduls „ui-test-junit4“ (Ib91f8)
relativePaddingFrom
wurde inpaddingFrom
umbenannt. Der ModifikatorpaddingFromBaseline
wurde hinzugefügt, um die Abstände von den Layoutgrenzen zu den Textgrundlinien leichter festlegen zu können. (I0440a, b/170633813)- „LaunchedTask“ wurde in „LaunchedEffect“ umbenannt, um für Einheitlichkeit mit den APIs „SideEffect“ und „DisposableEffect“ zu sorgen. „LaunchedEffect“ ohne Subjektparameter ist nicht zulässig, um Best Practices zu fördern. (Ifd3d4)
- Es wurden kompostierbare Ressourcen eingeführt, die bei der Konfigurationsaktualisierung neu zusammengesetzt werden. (I6387c, b/167352819)
- Der Recomposer benötigt jetzt bei der Erstellung einen CoroutineContext (Ic4610)
zIndex
-Werte addieren, wenn mehrereModifier.zIndex()
angewendet wurden. Bisher wurde immer die erste Option ausgewählt. (Ic514c, b/170623936)- Änderungen an der internen SlotTable-Implementierung, die sich nicht auf die öffentliche API auswirken sollten. (If9828)
- Die Option „Autokorrektur der Tastatur“ wurde hinzugefügt (I57b8d)
- androidx.ui.test wurde in androidx.compose.ui.test verschoben (I9ffdb)
- KeyboardOptions.toImeOptions wurde aus der öffentlichen API entfernt. (Ic2e45)
Externer Beitrag
- Veröffentlichung des internen Artefakts androidx.compose.ui:ui-text-android (Ib93fa) deaktiviert
Version 1.0.0-alpha06
28. Oktober 2020
androidx.compose.ui:ui-*:1.0.0-alpha06
wurde veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.
API-Änderungen
- „Recomposer“ ist jetzt eine „CompositionReference“ und ein gültiges übergeordnetes Kompositionsereignis. Der explizite Recomposer ist jetzt an weniger Stellen erforderlich. (I4036f)
- Stellen Sie VectorPainter durch die Nutzung von „memoryVectorPainter“ aus. So lässt sich besser erkennen, dass die zusammensetzbare API intern „remember“ nutzt, um Daten über mehrere Kompositionen hinweg beizubehalten. (Ifda43)
- Die Modifier.drawWithCache API wurde aktualisiert, um ContentDrawScope anstelle von DrawScope als Empfängerbereich bereitzustellen. So können Implementierungen Zeichenbefehle neu anordnen. Das ist nützlich für Anwendungsfälle wie das Mischen oder Färben, bei denen Inhaltspixel zuerst gerendert werden müssen, damit der entsprechende Algorithmus für den Mischmodus richtig angewendet werden kann. (Ie7ec8)
- SimpleContainer in PopupTestUtils.kt verschieben (I78c57)
- „ConsumedData“ ist keine Datenklasse mehr. Weitere Informationen finden Sie unter https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f).
- Position des Rtl-Ziehpunkts fixieren. (I6e1e0)
- DrawScope und ContentDrawScope wurden in Schnittstellen anstelle von abstrakten Klassen umgestellt.
- Die CanvasDrawScope-Implementierung von DrawScope wurde erstellt.
- Implementierungen von DrawScope wurden überarbeitet, um stattdessen CanvasScope zu verwenden
- Wir haben DrawContext erstellt, um Abhängigkeiten für DrawScope
- Eingestellte Methoden aus DrawScope wurden entfernt (I56f5e).
- Wichtige Änderung: Der Rückgabewert wurde aus
PointerInputFilter.onPointerEvent(...)
entfernt, da der einzige Wert, der in Zeigerereignissen geändert werden sollte, Verbrauchsdaten sind. Anstatt Daten vonPointerInputFilter.onPointerEvent(...)
zurückzugeben, können Sie jetzt einfach die Verbrauchsdaten der übergebenen PointerEvents ändern. (I6acd0) - MeasureScope und IntrinsicMeasureScope wurden zu Schnittstellen. (I1a087, b/170461665)
- Die Zusammenführungsfunktion für "AlignLine" wurde ausgeblendet. (I9da1a, b/170612900, b/170611568)
- Es ist jetzt möglich, Prüftool-Informationen in zusammengesetzten Modifikatoren anzugeben (Idee08, b/163494569)
- Die Option „Alle auswählen“ wurde dem Auswahlmenü hinzugefügt (Ief02b)
- DrawTransform.rotate wurde aktualisiert, damit der Standarddrehpunktparameter „center“ (Mitte) verwendet wird, um der Dokumentation zu entsprechen.
- DrawScope.rotateRad wurde aktualisiert, damit ein Offset für den Drehpunkt verwendet wird, um mit anderen Transformationsmethoden übereinzustimmen.
- Die verworfene Überladung von DrawScope.rotateRad, bei der für die x- und y-Koordinate des Drehpunkts Gleitkommazahlen verwendet wurden.
- (Iffcbb, b/170434992)
Fehlerkorrekturen
- API-Lint-Prüfung für fehlende Getter-Matching-Builder ist für androidx aktiviert (I4bbea, b/138602561)
- Fügen Sie einen Test hinzu. (I6b8ae)
- Übergänge in ComposeTestRule aktivieren; Option zum Aktivieren des blinkenden Cursors aus ComposeTestRule entfernen. (If0de3)
- IME-Option für die Großschreibung der Tastatur wurde hinzugefügt (I8ac38)
- CoreTextField (I72e6d) hat jetzt eine Option für eine Tastatur mit einer Zeile.
- SimpleContainer in PopupTestUtils.kt verschieben (I65c3e)
- Die Radius API wurde in „CornerRadius“ umbenannt, um besser auszudrücken, wie sie in Compose verwendet wird. Die Dokumentation wurde aktualisiert, um anzugeben, dass negative Eckradien auf null begrenzt werden. (I130c7, b/168762961)
- Die Android-Interoperabilität wurde verbessert, indem weiterhin MotionEvents an untergeordnete Android-Views gesendet werden, die für alle Aktionen außer
ACTION_DOWN
für onTouchEvent „falsch“ zurückgeben (I94c5a, b/170320973) - Für Box wurde eine Inline-Funktion erstellt. (Ibce0c, b/155056091)
Externer Beitrag
- Verschiedene Sprachen für
AnnotatedString.capitalize
undAnnotatedString.decapitalize
unterstützen (I4aa7f)
Version 1.0.0-alpha05
14. Oktober 2020
androidx.compose.ui:ui-*:1.0.0-alpha05
wird veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.
API-Änderungen
- DSL zum Angeben von Prüferinformationen hinzufügen (Ic9a22)
- Langes Drücken in Text verschieben. (Iff2bc)
- Experimenteller Modifikator „Modifier.pointerInput“, der die Eingabe unterbricht (Ia77d2)
- Bedienungshilfen zum Kopieren/Einfügen/Ausschneiden hinzugefügt (I6db4f)
- Der öffentliche Konstruktor für AndroidOwner wurde entfernt (Iacaef)
- Pop-ups und Dialogfelder übernehmen jetzt FLAG_SECURE vom übergeordneten Fenster. Außerdem wurde die Option hinzugefügt, dies explizit zu konfigurieren (I64966, b/143778148, b/143778149)
Verbrauchsdaten können jetzt geändert werden. Außerdem geben Aufrufe von Erweiterungsfunktionen, die eine Datenaufnahme auslösen, jetzt keine neue PointerInputChange mehr zurück, sondern verändern stattdessen die bereitgestellte PointerInputChange.
Dies ist der erste Schritt in einem zweistufigen Prozess, um PointerEvent-Daten veränderbar zu machen, sodass andere Zeigerdaten nicht durch Nutzercode bearbeitet werden können. Im zweiten Schritt wird der Rückgabetyp
List<PointerInputChange>
ausPointerInputFilter.onPointerEvent(...)
entfernt. (Id067e)Deaktivierung der Textauswahl und Demo (Ie7e97)
Über „onGloballyPositioned“ eine Inline-Funktion erstellt (I15830)
„OnPositionedModifier“ wird in „OnGloballyPositionedModifier“ und „onPositioned()“ in „onGloballyPositioned()“ umbenannt. (I587e8, b/169083903).
Dem Attribut „Owner“ wurde das Attribut „hasPendingMeasureOrLayout“ hinzugefügt, das angibt, ob für den Eigentümer noch Layoutarbeiten anstehen. (I3d9f8, b/169038599)
API zum programmatischen Aufheben des Fokus hinzugefügt (Ie1dc2, b/161487952)
PointerInputFilter.onPointerInput(...)
wurde entfernt. Stattdessen solltePointerInputFilter.onPointerEvent(...)
verwendet werden. (I6f04a)Änderungen an der Größe
- Size.getFlipped wurde entfernt
- Size.rem entfernt
- Size.truncDiv (Ief44d, b/169790720) entfernt
Im Rahmen der Standardisierung von Grenzwertwerten für Inline-Klassen wurde „Color.Unset“ in „Color.Unspecified“ umbenannt, um für Einheitlichkeit mit anderen Inline-Klassen zu sorgen (I97611, b/169797763)
TextOverflow.None wurde eingeführt. Wenn „overflow“ den Wert „None“ hat, wird der Text nicht mehr von „Text“ verarbeitet und seine tatsächliche Größe wird an „LayoutNode“ gemeldet. (I175c9, b/158830170)
Der Parameter „scope“ in AnnotatedString.Builder.addStringAnnotation wurde in „tag“ umbenannt, um für API-Konsistenz zu sorgen. (I7c8cb)
Fehlerkorrekturen
- Die Scrollleistung von LazyColumn/Row wird verbessert, da bei jedem Scrollen weniger Arbeit in der Teilkomposition erforderlich ist. Für die Composition-Klasse wurde die neue Methode hasInvalidations() hinzugefügt. Die Methode "hasPendingChanges()" von Recomposer wurde in hasUngültigeations() umbenannt (Ib2f32, b/168293643, b/167972292, b/165028371).
- Die Parameter für „Größe.Unspezifiziert“ wurden auf „Float.NaN“ statt „Float.POSITIVE_INFINITY“ aktualisiert. Painter-Implementierungen wurden aktualisiert, um die Werte auf „Size.Nicht angegeben“ sowie auf nicht endliche Größen zu prüfen. (I95a7e)
- Die Reihenfolge der place()-Aufrufe in benutzerdefinierten Layouts bestimmt jetzt die Zeichnungsreihenfolge für die untergeordneten Elemente (Ibc9f6)
- Unterstützung der Konvertierung von AnnotatedString in SpannableString für bessere Zugänglichkeit. (Ief907)
- Es wurden Stubs für Android-Klassen auf älteren Plattformen hinzugefügt, um nach Möglichkeit die Verwendung von Reflection zu vermeiden. (Ia1790)
- Fehlerkorrektur: Wenn die angezeigte Softwaretastatur die App zum Übersetzen führte, wurden die Koordinaten der Zeigereingabe falsch. (Ic4cec, b/163077821)
Version 1.0.0-alpha04
1. Oktober 2020
androidx.compose.ui:ui-*:1.0.0-alpha04
wurde veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.
API-Änderungen
- „OwnerScope“ wurde hinzugefügt, um die Erfassung von Layout- und Zeichenbereichen zu ermöglichen, sobald sie nicht mehr gültig sind. (Ic4cf8)
- „OnRemeasuredModifier“ und „onSizeChanged()“ wurden hinzugefügt, um einen Rückruf zu erhalten, wenn das Inhaltslayout neu gemessen wurde bzw. sich die Größe geändert hat. (I657cf, b/154108792)
- Aktion für langes Tippen hinzufügen (I6281b, b/156468846)
- FocusManager wurde auf „Privat“ gesetzt. (I7872f)
Die Implementierung wurde aktualisiert, um eine spezielle DrawCacheModifier-Implementierung zu erstellen, anstatt optionale Properties zu DrawModifier hinzuzufügen.
Aktualisierte Dokumentation für verschiedene Methoden (Ibd166)
TextRange inline einfügen, um das Erstellen von Objekten zu vermeiden (Id034b)
PlacementScope#parentWidth und PlacementScope#parentLayoutDirection können nicht mehr aus dem Placement-Block eines benutzerdefinierten Layouts gelesen werden. (Icc1ae, b/168295623)
Fügen Sie den semantischen Properties die Property „AccessibilityScrollState“ hinzu. (Ifeda9)
Einführung von Modifier.drawWithCache zur Unterstützung des Erstellens eines Zeichenobjekts, das Abhängigkeiten, die von Informationen zur Größe/zum Status abhängen, bedingt neu erstellt (I376dc)
ParagraphConstraints wurde entfernt. Die Breite wird jetzt direkt an den Absatz übergeben. (Ica712)
Fehlerkorrekturen
- Aktualisierung vieler Grafik-APIs
- Die APIs für Skalierungs- und Drehtransformationen wurden aktualisiert, sodass jetzt ein einzelner Offset-Parameter für die Drehpunktkoordinate verwendet wird, anstatt separater Gleitkommaparameter für die X-/Y-Koordinaten in DrawScope und DrawTransform.
- Die Methoden „Rect.expandToInclude“ und „Rect.join“ wurden entfernt.
- Die Dokumentation zu Radius wurde aktualisiert. Neben „elliptisch“ wird jetzt auch „oval“ verwendet.
- Es wurde eine Dokumentation hinzugefügt, in der 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 zum Abfragen von „topRight“, „bottomRight“ und „bottomCenter“ wurden entfernt.
- Rect.shift wurde zugunsten von Rect.translate eingestellt
- Die APIs „RoundRect.grow“ und „Rect.shrink“ wurden entfernt.
- RoundRect.outerRect wurde in Rect.boundingRect umbenannt
- Die Methoden „RoundRect.middleRect“, „tallMiddleRect“, „wideMiddleRect“ und „Rect.isStadium“ wurden entfernt.
- RoundRect.longestSide in RoundRect.maxDimension umbenannt
- RoundRect.shortestSide wurde in RoundRect.minDimension umbenannt
- RoundRect.center wurde zu einer Eigenschaft anstelle einer Funktion geändert
- Der Konstruktor für RoundRect wurde aktualisiert, sodass Radiuseigenschaften anstelle einzelner Parameter für X‑/Y‑Radiuswerte verwendet werden.
- Entfernte APIs für die Größe, bei denen davon ausgegangen wurde, dass es sich um ein Rechteck mit dem Ursprung bei 0,0 handelt
- Zerstörungs-API zu Radius hinzugefügt
- Migration verschiedener RoundRect-Erweiterungsfunktionen zu Eigenschaften
- (I8f5c7, b/168762961)
- foundation.Box wurde eingestellt. Verwenden Sie stattdessen foundation.layout.Box. (Ie5950, b/167680279)
- „Stack“ wurde in „Box“ umbenannt. Das bisher vorhandene Box wird zugunsten des neuen Box in compose.foundation.layout eingestellt. Das neue Feld stapelt die untergeordneten Elemente übereinander, wenn es mehrere davon hat. Das unterscheidet es vom vorherigen Feld, das sich ähnlich wie eine Spalte verhielt. (I94893, b/167680279)
- Die Parameter für die Box-Dekoration wurden eingestellt. Wenn Sie Verzierungen oder Ränder für das Feld haben möchten, verwenden Sie stattdessen Modifikatoren (Modifier.background, Modifier.border, Modifier.padding). (Ibae92, b/167680279)
- Viele Grafik-APIs wurden aktualisiert.
- DrawScope APIs wurden mit Bereichstransformationsmethoden aktualisiert, um anzuzeigen, dass die Transformation nur innerhalb des Callbacks angewendet und nach dem Aufrufen des Callbacks entfernt wird.
- Die „clipPath“-Dokumentation wurde aktualisiert, sodass sie auf „Path“ statt auf „abgerundetes Rechteck“ verweist.
- In der Dokumentation wurde der Abstand für den rechten Parameter in „clipPath“ korrigiert.
- DrawScope.drawCanvas in drawIntoCanvas umbenannt und Größeparameter entfernt
- Die Parameter „dx“ und „dy“ in der Einblendmethode wurden in „horizontal“ und „vertical“ umbenannt.
- Überladung für „inset“ hinzugefügt, die allen vier Rändern denselben Wert zuweist
- Die Dokumentation zur Inset-Methode, in der angegeben wurde, dass der Inset auf alle vier Seiten angewendet wird, wurde entfernt.
- Aktualisierte Dokumentation für die Klasse „Rect“
- Kommentare zu Rect-Parametern wurden an den kdoc-Stil angepasst.
- Entfernt: Rect.join und Rect.expandToInclude
- Überlastung für Rect.translate(offset) erstellt und Rect.shift verworfen
- (If086a, b/167737376)
- Annotierte „rootAnimationClockFactory“, „transitsEnabled“, „blinkingCursorEnabled“ und „textInputServiceFactory“ mit @VisibleForTesting, machen sie zu einer internen API und verbergen ihre kdoc-Dateien (I554eb, b/168308412).
- Entfernen Sie den SelectionContainer aus der oberen Position, um die Standardauswahl zu deaktivieren und unerwartetes Verhalten zu vermeiden. Stattdessen kann ein SelectionContainer verwendet werden, um den Inhalt zu umschließen, der auswählbar sein soll. (I8dfe0, b/158459594)
Version 1.0.0-alpha03
16. September 2020
androidx.compose.ui:ui-*:1.0.0-alpha03
wurde veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.
API-Änderungen
- Semantikaktionen zum Vor- und Zurückscrollen wurden entfernt. In „AccessibilityRangeInfo“ wurden Schritte hinzugefügt. (Ia47b0)
onInvalidate()
wurde ausOwner
entfernt:OwnedLayer
-Ziehpunkte Entwertung. (Ica72b, b/162061312)Operatormethoden für die Size API, die Offset-Parameter nutzen, wurden entfernt. Das Ergebnis dieser Vorgänge ist unklar und die Art des Ergebnisses ist für diese unerwartet. Beispiel: Sollte „Größe – Offset“ einen Offset oder ein Größenergebnis mit der Differenz zurückgeben?
Außerdem wurden verworfene Methoden aus der Size-Klasse entfernt. (Iec902, b/166514214)
Fehlerkorrekturen
- Behebung eines Fehlers, durch den Elemente von LazyColumn manchmal falsch dargestellt wurden, was in bestimmten Fällen zu Abstürzen führte. (Ibcf17, b/163066980, b/165921895)
- DpConstraints und APIs, die sie verwenden, wurden eingestellt. (I90cdb, b/167389835)
createAndroidComposeRule
undAndroidInputDispatcher
wurden vonandroidx.ui.test.android
nachandroidx.ui.test
verschoben (Idef08, b/164060572)- Die Verwendung von „gravity“ wurde in Layout-APIs einheitlich in „align“ oder „alignment“ umbenannt. (I2421a, b/164077038)
- OnNode und andere globale Methoden wurden zu ComposeTestRule hinzugefügt, da die aktuellen globalen Methoden nicht mehr unterstützt werden. (Ieae36)
Version 1.0.0-alpha02
2. September 2020
androidx.compose.ui:ui-*:1.0.0-alpha02
wird veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.
API-Änderungen
- remove callback to notify Owner when layoutnode bounds change. (If654e, b/166106882)
- Es wurde die Unterstützung für filltype-Parameter für Vektorgrafikpfade hinzugefügt, um Ausschnitte von Formen gemäß den Pfadfüllungsregeln „evenOdd“ oder „NonZero“ zu unterstützen. (I43dd2)
- Uptime und Velocity sind jetzt Inline-Klassen (I48f4a)
- Die Dauer ist jetzt eine Inline-Klasse (I565eb).
- Fügen Sie einen Rückruf hinzu, um den Eigentümer zu benachrichtigen, wenn sich die Grenzen des Layoutknotens ändern. (IC40b3)
Behobenes Problem: Beim Erstellen eines Rechtecks mit der Rect-Funktion mit Offset und Radius wurde das Rechteck in der Reihenfolge „links, rechts, oben, unten“ statt „links, oben, rechts, unten“ erstellt.
Die eingestellten Companion-Methoden von Rect wurden zugunsten von Funktionskonstruktoren entfernt.
Es wurden Tests zur Überprüfung von Methoden in Rect.kt hinzugefügt (I08460, b/165822356).
Fehlerkorrekturen
- MutableRect wurde hinzugefügt, ein Rechteck, das geändert werden kann. (I71bd2, b/160140398)
- Matrix4 wurde durch Matrix ersetzt. Alle anderen Teile des Pakets „vectormath“ wurden entfernt. (Ibd665, b/160140398)
Die Aufrufkonvention für kombinierbare Funktionen hat sich geändert. Dies ist eine funktionsgefährdende Änderung. Alle Bibliotheken müssen neu kompiliert werden, damit sie mit dieser Version des Compiler-Plug-ins funktionieren.
Diese Änderung führt nicht zu einer funktionsgefährdenden Änderung auf Quellebene, da die einzigen geänderten APIs Compiler-APIs sind, die explizit aktiviert werden. (I7afd2, b/158123185)
Ein Absturz wurde behoben, der auftreten konnte, wenn der PointerInputFilter beim Senden an einen PointerInputFilter synchron entfernt wurde. (I58f25)
Version 1.0.0-alpha01
26. August 2020
androidx.compose.ui:ui-*:1.0.0-alpha01
wurde 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.ui:ui-*:0.1.0-dev17
wird veröffentlicht. Version 0.1.0-dev17 enthält diese Commits.
API-Änderungen
emitView
wurde eingestellt. Verwenden Sie stattdessen nach MöglichkeitAndroidView
, um Ansichten in Compose zu senden. Das direkte Erstellen von Ansichten und Ansichtsgruppen wird in Zukunft nicht mehr unterstützt, es sei denn, sie sind Blätter im Kompositionbaum. In diesem Fall kann dies mit AndroidView erreicht werden. (I29b1e, b/163871221)FocusState2
wurde verworfen und durchFocusState
ersetzt (Ia8b79, b/160822876, b/160923332).- Die veralteten AndroidView-Überladungen wurden entfernt. (I946b9, b/163802393)
- Bei benutzerdefinierten Emits kann jetzt angegeben werden, dass einer oder mehrere ihrer Setter unabhängig vom Emit übersprungen und neu zusammengesetzt werden können. (Ibbd13)
Vektorklassen sind keine Datenklassen mehr, da dieselbe Objektinstanz für die Komposition verwendet wird.
Für VectorPainter wurde das Flag „mutableStateOf“ hinzugefügt, um den Inhalt des Vektors bedingt neu zu zeichnen, wenn sich dieser ändert.
Die VectorComponent-Instanz wurde überarbeitet, um Teil von VectorPainter zu sein, da sie in verschiedenen Kompositionen wiederverwendet wird.
Die Namensfelder von „GroupComponent“ und „PathComponent“ wurden so aktualisiert, dass sie veränderbar sind (Ieae45, b/151378808)
onChildPositioned
undOnChildPositionedModifier
wurden entfernt. Entwickler sollten stattdessenonPositioned
undOnPositionedModifier
im untergeordneten Layout verwenden. (I4522e, b/162109766)„Offset“ ist zu einer Inline-Klasse geworden (Iaec70)
Dem SelectionContainer wurde ein Parameter für die Modifizierung hinzugefügt (I4aada, b/161487952)
Der verworfene FocusModifier wurde entfernt (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)
mergePolicy
Lambda zuSemanticsPropertyKey
hinzugefügt So können Sie eine benutzerdefinierte Richtlinie für die Zusammenführung von mergeAllDescendants-Semantiken definieren. Standardmäßig wird der übergeordnete Wert verwendet, sofern vorhanden. Andernfalls wird der untergeordnete Wert verwendet. (Iaf6c4, b/161979921)Einschränkungen sind jetzt Inline-Klasse (I88736)
Der FocusManager wurde hinzugefügt, um die gängige Fokuslogik aus AndroidComposeView zu entfernen (I528ef, b/161487952, b/162206799)
Die Namen von PointerEventPass wurden für die Alphaversion aktualisiert. (Ifda6f)
IntOffset ist jetzt eine Inline-Klasse (Iac0bf)
IntSize ist jetzt eine Inline-Klasse (I2bf42).
PlacementScope.placeAbsolute()
wurde inPlacementScope.place()
umbenannt und das vorherigePlacementScope.place()
inPlacementScope.placeRelative()
. Daher spiegelt die MethodePlacementScope.place()
die Position in Rechts-nach-links-Kontexten nicht mehr automatisch wider. Verwenden Sie stattdessenPlacementScope.placeRelative()
. (I873ac, b/162916675)In AlertDialog wird jetzt FlowRow für Schaltflächen verwendet (I00ec1, b/161809319, b/143682374)
Einige Testdienstprogramme wurden nicht öffentlich gemacht, da sie nicht dort sind, wo sie zugehörig sind. Wird in Zukunft veröffentlicht. (I32ab1)
Die Organisation des Code für die Eingabe von Zeigerwerten wurde überarbeitet. (Ie3f45)
„PxBounds“ wurde zugunsten von „Rect“ eingestellt. Alle Verwendungen von PxBounds wurden durch „rect“ ersetzt und entsprechende Anmerkungen zur Einstellung/Ersetzung wurden hinzugefügt, um die Migration zu erleichtern. (I37038, b/162627058)
Die verworfene Funktion „KeyEvent2“ wurde entfernt. Verwenden Sie stattdessen „KeyEvent“. (Ied2d0, b/162097587)
KeyEvent hat eine Unicode-Eigenschaft, mit der das Unicode-Zeichen abgerufen werden kann, das durch die Kombination aus dem angegebenen Schlüssel und dem Metaschlüsselstatus generiert wird (If3afc).
Das benutzerdefinierte Ereignis „DelayUp“ und die zugehörigen Klassen sind jetzt eine API, die du aktivieren musst, da sie sehr wahrscheinlich geändert wird. (I56d6f)
Zwei PointerEventPasses wurden entfernt, die nicht mehr benötigt werden. (I3dd9d)
Fügen Sie Paragraph.paint die Parameter „color“, „shadow“ und „TextDecoration“ hinzu. Diese Funktion ist nützlich, um unnötige Neuerstellung von Absätzen zu vermeiden. (I81689)
Fehlerkorrekturen
- onFocusChanged-Callbacks aus TextField entfernt. Verwenden Sie stattdessen Modifier.focusObserver. (I51089, b/161297615)
- Modifier.drawBorder wurde eingestellt. Verwenden Sie stattdessen Modifier.Border. Die Datenklasse „Border“ wurde durch „BorderStroke“ ersetzt (I4257d, b/158160576)
Veraltete FrameManager-Aufrufe wurden entfernt.
Interne APIs zur Zusammensetzung wurden geändert, um den Aufwand für das Tracking von Statusobjekten wie
mutableStateof()
(I80ba6) zu reduzieren.VerticalScroller und HorizontalScroller wurden entfernt. Verwenden Sie stattdessen ScrollableColumn/Row. Modifier.drawBackground wurde entfernt. Modifier.background (I73b0d, b/163019183) verwenden
Der Absturz, der beim Verwenden von etwas, das den Status speichert, innerhalb der For-Schleife auftrat, wurde behoben. Da nun derselbe Schlüssel in „SavedInstanceState()“ verwendet wird, ist die API von UiSavedStateRegistry an diese neue Anforderung angepasst (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561).
Die
state { ... }
-Komponente wird jetzt zugunsten expliziter Aufrufe vonremember { mutableStateOf(...) }
eingestellt. Dadurch wird die API-Oberfläche insgesamt und die Anzahl der Konzepte für die Zustandsverwaltung reduziert. Außerdem entspricht dies demby mutableStateOf()
-Muster für die Delegation von Klasseneigenschaften. (Ia5727)RRect wurde in RoundRect umbenannt, damit es besser zum Zusammensetzen von Benennungsmustern passt. Erstellung ähnlicher Funktionskonstruktoren zu RRect und verworfene RRect-Funktionskonstruktoren (I5d325)
Version 0.1.0-dev16
5. August 2020
androidx.compose.ui:ui-*:0.1.0-dev16
wurde veröffentlicht. Version 0.1.0-dev16 enthält diese Commits.
API-Änderungen
- OnChildPositioned wurde eingestellt. Verwenden Sie stattdessen „OnPositioned“ auf dem untergeordneten Element. (I87f95, b/162109766)
- „setViewContent“ wurde eingestellt. Verwende stattdessen „setContent“. (I7e497, b/160335130)
- Die AndroidViewBinding API zum Aufblasen und Erstellen von Layoutressourcen auf der Grundlage von ViewBinding wurde hinzugefügt. (I081c6)
- KeyEvent2 wird durch KeyEvent ersetzt (I2d770, b/162097585)
- Unterstützung für Alt-Hardwareschlüssel (I9036b) hinzugefügt
- FocusManager wurde eingestellt. Verwenden Sie stattdessen Modifier.focus(), Modifier.focusObserver() und Modifier.focusRequester() . (I74ae4, b/162211322)
- "loadVectorResource" unterstützt "trimmPath"-Attribute (I808fe).
- Dialogfeld in die Benutzeroberfläche verschieben (I47fa6)
- Zwei PointerEventPasses wurden entfernt, die nicht mehr benötigt werden. (I33ca7)
- Der PointerInteropModifier wurde implementiert, mit dem MotionEvents empfangen und mit Compose interagiert werden kann, als wäre es eine Android-Ansicht. (Ieb08c)
- Der eingestellte Tag-Modifikator wurde entfernt. Verwenden Sie stattdessen die Layout-ID. (Idaa05, b/162023919)
- Die APIs für die Unterstützung von rechts nach links wurden aktualisiert. Die Variable „LayoutDirectionAmbient“ wurde hinzugefügt. Mit ihr kann die Layoutrichtung gelesen und geändert werden. Modifier.rtl und Modifier.ltr wurden entfernt. (I080b3)
- Unterstützung für das Kürzen von Pfaden in Vektorgrafiken (Ie16c9, b/158188351)
- „Modifier.layout()“ wurde hinzugefügt, mit dem sich ein benutzerdefinierter Layout-Modifikator ganz einfach erstellen lässt (I73b69, b/161355194)
- Eine neue AndroidView API wurde hinzugefügt und die vorhandenen wurden eingestellt. (I5bcfd)
- Modifier.plus wurde eingestellt. Verwenden Sie stattdessen "Modifier.then". „Dann“ ist ein stärkeres Signal für die Reihenfolge und verhindert gleichzeitig das Eintippen von
Modifier.padding().background() + anotherModifier
, was die Abfolge unterbricht und die Lesbarkeit erschwert (Iedd58, b/161529964) - Fügen Sie [Abstract]ComposeView-Unterklassen hinzu, um Compose-Inhalte in einer Ansichtshierarchie zu hosten. (I46357)
Row
undColumn
sind jetzt Inline-Funktionen, wodurch der Overhead bei der Verwendung erheblich reduziert wird. (I75c10)- SubcomposeLayout wird hinzugefügt. Es ist ein Low-Level-Primitive, mit dem die untergeordneten Elemente während der Messung zusammengestellt werden können, wenn einige Werte erst später während der Messung für die Zusammensetzung der Unterstruktur verwendet werden sollen. Beispielsweise wird „WithConstraints“ nicht mit „SubcomposeLayout“ implementiert. (I25cc8)
SemanticsNode.positionInRoot
wurde hinzugefügt, um die Position eines SemanticsNode relativ zur Wurzel der Compose-Hierarchie abzurufen (Icdf26, b/161336532)- MotionEvents wurde von Android in Compose und zurück an Android übergeben. (I14be8, b/158034713)
- „Drop-down-Pop-up“ wurde entfernt. (I00430)
- Feste Pop-up-Position auf Displays mit Aussparung (Idd7dd)
- Eingabehilfeaktion hinzufügen, um TextLayoutResult abzurufen (I9d6e6)
- RemeasurementModifier wurde hinzugefügt. Damit kann das Layout synchron neu gemessen werden. Im Allgemeinen ist das nicht erforderlich, da das Neumessen und Neulayout automatisch erfolgt. Wir verwenden es jedoch in LazyColumnItems während des Scrollens. (I5f331, b/160791058)
- Entfernen Sie getLineEllipsisOffset/getLineEllipsisCount. Verwenden Sie stattdessen getLineVisibleEnd/getLineEnd/isLineEllipsized. (I85aa2)
- Füge als Best Practice einige Markierungen/Anmerkungen hinzu. (I66b20)
- Mehr Zeilen-APIs in TextLayoutResult freigeben (I79bd2)
- Integrierte Vektorkonverter zur Umwandlung von integrierten Einheiten sind jetzt über „Foo.VectorConverter“ zugänglich, z. B. „Dp.VectorConverter“, „Color.VectorConverter“ und „Float.VectorConverter“ (I3e273)
Fehlerkorrekturen
- Umfassende API-Fehlerkorrekturen (I077bc)
- Nicht verwendete OffsetBase-Schnittstelle entfernen
- Align Offset and IntOffset classes to have a consistent API surface
- IntOffset.Origin in IntOffset.Zero umbennen, um mit der Offset API übereinzustimmen
- Die nativeCanvas-Methode wurde aus der Canvas-Benutzeroberfläche entfernt, damit Nutzer ihre eigenen Canvas-Instanzen erstellen können.
- Die Stub-Klasse „EmptyCanvas“ wurde erstellt, um „DrawScope“ zu einem nicht nullwertigen Parameter anstelle eines lateinit-Parameters umzuwandeln und dafür zu sorgen, dass das Feld nicht null sein darf.
- ClipOp-Enums wurden in Pascal Case umbenannt
- FilterQuality-Enums wurden in Pascal Case umbenannt
- Die StrokeJoin-Enume wurden in Pascal Case umbenannt.
- Die PointMode-Enum-Typen wurden in Pascal Case umbenannt.
- Die Enum-Typen „PaintingStyle“ wurden in Pascal Case umbenannt.
- Die Aufzählungen vom Typ „PathFillType“ wurden in Pascal-Schreibweise umbenannt.
- StrokeCap-Enumerierungen in Pascal-Case umbenannt
- Die Implementierung von DrawCache wurde aktualisiert, sodass keine lateinit-Parameter mehr verwendet werden.
- DrawScope wurde so aktualisiert, dass für die internen Parameter „fillPaint“ und „strokePaint“ kein Lazy Deleg mehr mehr verwendet wird.
- Die Bildkomposition wurde aktualisiert, um die Nutzung von Box zu vermeiden und den Overhead zu reduzieren.
- Die Klasse „Outline“ wurde um Anmerkungen vom Typ „@Immutable“ ergänzt.
- PathNode wurde aktualisiert, um @Immutable-Anmerkungen für jede Pfadanweisung zu haben.
- Die Vektor-Unterkomposition wurde aktualisiert, um redundante bedingte Gleichheitsprüfungen zu entfernen, da diese bereits von „compose“ verarbeitet werden.
- Die Konstruktormethoden für Rect-Begleiter wurden zugunsten von Funktionskonstruktoren eingestellt.
- Aktualisierte Pinselklassen und Funktionskonstruktoren mit @Immutable- und @Stable-APIs
- VertexMode-Enum wurde auf PascalCase aktualisiert
- Die DrawScope-Methode „selectPaint“ wurde aktualisiert, um Strichparameter für die Farbe bedingt zu überschreiben, wenn sie sich geändert haben.
- Wir haben die Größe aktualisiert, um eine destruktive API hinzuzufügen, „UnspecificSize“ in „Nicht angegeben“ umbenannt und nicht verwendete Methoden entfernt
- Die Compose BlendMode API wurde aktualisiert, um die BlendModes des Android-Frameworks und die PorterDuff-Modi je nach API-Ebene korrekt abzugleichen. Die BlendMode#isSupported API kann als Funktionsabfrage verwendet werden, mit der ermittelt werden kann, ob BlendMode auf dem Gerät unterstützt wird, bevor sie verwendet wird. (I0ef42)
- LazyItemScope wurde für den Parameter „itemContent“ von Lazy-Listen hinzugefügt. Sie stellt Modifikatoren zum Füllen der übergeordneten maximalen Größe bereit. 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)
SemanticsNodeInteraction.performPartialGesture
wurde entfernt. Verwenden Sie stattdessenSemanticsNodeInteraction.performGesture
. (Id9b62)LazyColumnItems
wurde inLazyColumnFor
umbenannt.LazyRowItems
wurde inLazyRowFor
umbenannt (I84f84).foundation.shape.corner
-Paket wurde auffoundation.share
zusammengeführt (I46491, b/161887429)AndroidComposeTestRule
wurde increateAndroidComposeRule
umbenannt. (I70aaf)TextLayoutResult
wurden weitere APIs hinzugefügt. (Id7e04)- „Material“
FilledTextField
wurde in „TextField
“ umbenannt und „Grundlegend“TextField
in „BaseTextField
“, damit die einfachste gewünschte API leicht zu finden und zu verwenden ist (Ia6242, b/155482676) - "Modifier.drawBackground" wurde in "Modifier.background" umbenannt (I13677).
Version 0.1.0-dev15
22. Juli 2020
androidx.compose.ui:ui-*:0.1.0-dev15
wurde veröffentlicht. Version 0.1.0-dev15 enthält diese Commits.
Aktualisierung von Abhängigkeiten
- Wenn Sie die
0.1.0-dev15
-Version von Compose verwenden möchten, müssen Sie Ihre Abhängigkeiten gemäß den neuen Code-Snippets aktualisieren, die oben unter Abhängigkeiten angeben gezeigt werden.
API-Änderungen
- FocusModifier wurde zugunsten von Modifier.focus, Modifier.focusRequester und Modifier.focusObserver eingestellt. „FocusState“ und „FocusDetailedState“ werden zugunsten von „FocusState2“ eingestellt (I46919, b/160822875, b/160922136)
- Es wurde ein Modifikator hinzugefügt, um den Fokusstatus zu beobachten. (I05866, b/160924455, b/160923326)
- Es wurde ein Modifikator hinzugefügt, um Fokusänderungen anzufordern (I8dd73, b/161182057, b/160924778)
- Passen Sie das Symbolleistenmenü so an, dass die Optionen „Kopieren“, „Ausschneiden“ und „Einfügen“ richtig angezeigt werden. (Id3955)
- Für Einzelwert-Semantikeigenschaften wird jetzt ein Aufrufstil verwendet.
„semantics { hidden = true }“ wird jetzt beispielsweise so geschrieben:
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412) - Modifier.focus wurde hinzugefügt und ersetzt FocusModifier. (Ib852a, b/160924778)
- FloatingToolbar für die Textfeldauswahl hinzufügen (Ie8b07)
- Es wurde eine experimentelle API-Anmerkung für die API zur Eingabe von Schlüsseln hinzugefügt (I53c0a).
- Es wurde eine experimentelle API-Anmerkung für alle Focus-bezogenen APIs hinzugefügt (I53b24, b/160903352)
- FocusState2 wurde hinzugefügt, der FocusdetailState ersetzt (I0a3ba, b/160822595).
- ExperimentalFocus wurde hinzugefügt, eine @OptIn-Anmerkung für die Focus API. (I1544b, b/160820961)
- Die Einheitsklasse „IntBounds“ wurde hinzugefügt. Sie stellt Ganzzahlgrenzen in Pixeln aus dem Layout dar. Die API von PopupPositionProvider wurde entsprechend aktualisiert. (I0d8d0, b/159596546)
- Für Applier ist jetzt eine clear()-Methode zum Entfernen von Kompositionen erforderlich (Ibe697)
- KeyEvent wurde eingestellt und durch KeyEvent2 ersetzt (I68730)
- Für die Testung von Suchern wurde das neue optionale Flag „useUnmergedTree“ hinzugefügt. (I2ce48)
- LayoutNode ist jetzt eine experimentelle API (I4f2e9)
Es wurden verschiedenen Inline-Klassentypen Kopiermethoden hinzugefügt, darunter:
- Offset
- Größe
- Radius
- Bewegung
TransformOrigin
Die Companion-Objektmethode „Size.copy“ wurde zugunsten der Instanzkopiemethode eingestellt (Ife290, b/159905651)
Pop-ups, Dialogfelder und Menüs übernehmen jetzt das kontextbezogene MaterialTheme (Ia3665, b/156527485)
„TextDirection“ in „ResolvedTextDirection“ umbenannt (I3ff38)
Der Parameter „Layoutrichtung“ wurde aus dem Messblock der Funktion „Layout()“ entfernt. Die Layoutrichtung ist jedoch im Callback über das Objekt „Measure Scope“ (Ic7d9d) verfügbar.
Refaktoriere SelectionHandles für die Wiederverwendung. (I420e0)
„Anklickbar“ wurde entfernt. Modifier.clickable verwenden (I84bdf)
TestTag und Semantics wurden gelöscht. Verwenden Sie stattdessen Modifier.testTag und Modifier.semantics (I15ff0, b/158841414).
Vor dieser Änderung hat das Compose-Compiler-Plug-in Aufrufe an Konstruktoren innerhalb einer @Composable-Funktion nicht trivial abgefangen, wenn ein (I5205a, b/158123804)
„Modifier.tag“ wurde in „Modifier.layoutId“ umbenannt, um Verwechslungen mit „Modifier.testTag“ zu vermeiden. (I995f0)
Die Ganzzahlpositionen der Ausrichtungslinie, die von Placeable#get(AlignmentLine) zurückgegeben werden, sind jetzt nicht mehr null. Wenn die abgefragte Ausrichtungslinie fehlt, wird „AlignmentLine.Unspecified“ zurückgegeben. (I896c5, b/158134875)
Dem AndroidView-Komposit wurde ein Modifiziererparameter hinzugefügt. (I48a88, b/158746303)
„Semantics()“ wurde eingestellt. Verwenden Sie stattdessen „Modifier.semantics()“. (I72407, b/158841414)
„viewModel()“-Komposition hinzufügen, mit der ein bereits erstelltes ViewModel erstellt oder abgerufen werden kann, ähnlich wie in einer Aktivität oder einem Fragment (I5fdd1)
IntPx wurde durch Int ersetzt. IntPxPosition wurde durch IntOffset ersetzt. IntPxSize durch IntSize ersetzt (Ib7b44)
Um die Anzahl der Klassen zu reduzieren, die zur Darstellung von Größeninformationen verwendet werden, sollten Sie die Verwendung der Klasse „Size“ anstelle von „PxSize“ standardisieren. Dies bietet die Vorteile einer Inline-Klasse, bei der ein Long-Wert verwendet wird, um zwei Float-Werte für Breite und Höhe zu verpacken. (Ic0191)
Um die Anzahl der Klassen zu reduzieren, die zur Darstellung von Positionierungsinformationen verwendet werden, sollten Sie stattdessen die Klasse „Offset“ verwenden. Dies bietet die Vorteile einer Inline-Klasse, da sie einen Long-Wert verwenden kann, um 2 Gleitkommawerte zu verpacken, um x- und y-Offsets darzustellen, die als Gleitkommazahlen dargestellt werden. (I3ad98)
Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen der umfangreichen Refaktorierung ersetzt, um nur noch Dp- und primitive Typen für Pixelparameter zu verwenden. Px-Klasse vollständig gelöscht (I3ff33)
Die Verwendung der Px-Klasse in verschiedenen zusammengesetzten Klassen wurde im Rahmen der umfangreichen Refaktorisierung ersetzt, um nur noch Dp- und primitive Typen für Pixelparameter zu verwenden (I086f4)
Die Verwendung der Px-Klasse in verschiedenen Compose-Klassen wurde im Rahmen der umfangreichen Refactoring-Bemühungen durch Dp- und primitive Typen für Pixelparameter ersetzt (Id3434)
Die Verwendung der Px-Klasse in verschiedenen zusammengesetzten Klassen wurde im Rahmen der umfangreichen Refaktorisierung ersetzt, sodass nur noch Dp- und primitive Typen für Pixelparameter verwendet werden (I97a5a)
TestTag wurde eingestellt. Verwenden Sie stattdessen „Modifier.testTag“. (If5110, b/157173105)
Die standardmäßige, nicht ausführende Implementierung von ParentDataModifier#modifyParentData wurde entfernt. Sie entsprach der Nichtimplementierung der Schnittstelle. (I0deaa)
Die zuvor eingestellte Option „ScaleFit“ wurde entfernt. Verwenden Sie stattdessen „ContentScale“. (Ifbc5b)
Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen der umfangreichen Refaktorierung ersetzt, um nur noch Dp- und primitive Typen für Pixelparameter zu verwenden (I19d02)
Die Komponente „DropdownMenu“ wurde in „ui-material“ hinzugefügt, eine Material Design-Menüimplementierung. (I9bb3d)
Das verworfene LayoutTag() wurde entfernt. Verwenden Sie stattdessen „Modifier.tag()“. Das eingestellte Modifier.matchParent() wurde entfernt. Verwenden Sie stattdessen Modifier.matchParentSize(). (If8044)
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 als veraltet eingestuft, um die Verwendung für allgemeine Komponenten zu ermöglichen. (I4cfdc)
CanvasScope-Implementierungen wurden konsolidiert. Es gibt jetzt nur noch DrawScope und ContentDrawScope. DrawScope wurde aktualisiert, um die Density-Oberfläche zu implementieren und LayoutDirection bereitzustellen. Die DrawScope-Unterklasse in ContentDrawScope wurde entfernt. Painter und PainterModifier wurden aktualisiert, damit sie keine RTL-Eigenschaft mehr selbst verwalten, da DrawScope diese bereits ohne manuelle Angabe bereitstellt (I1798e)
Mit DoubleTapGestureFilter wird jetzt im gesamten Stammbaum für SingleTapGestureFilter eine eindeutige Zuordnung vorgenommen. (If92b1)
Die Alignment API wurde aktualisiert und die Unterstützung für die absolute Ausrichtung hinzugefügt, die im RTL-Kontext nicht automatisch gespiegelt wird (I38cd3)
Die DrawLayer-Modifikator-API wurde geändert: outlineShape wurde in Form umbenannt, der RectangleShape-Standardwert kann jetzt nicht mehr gelöscht werden und kann nicht mehr null werden. ClipToOutline wurde in Clip umbenannt; „clipToBounds“ wurde entfernt, da dies identisch mit „clip == true“ bei RectangleShape ist (I7ef11, b/155075735).
Zusammenstellende APIs der höheren Ebene, die einen Canvas bereitstellen, wurden aktualisiert, um stattdessen CanvasScope bereitzustellen. So müssen Nutzer keine eigenen Paint-Objekte mehr verwalten. Nutzer, die weiterhin Zugriff auf ein Canvas benötigen, können die Erweiterungsmethode „drawCanvas“ verwenden. Diese bietet einen Rückruf, um Zeichenbefehle für das zugrunde liegende Canvas auszugeben. (I80afd)
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 eingestellte Layout-Modifier-Oberfläche wurde entfernt. (I2a9d6)
Die Funktionen für intrinsische Messungen in „Layout“ und „LayoutModifier2“ haben jetzt einen Empfänger für „IntrinsicMeasureScope“, der die intrinsische Abfrage-API mit implizit weitergegebener Layoutrichtung bereitstellt. (ID9945)
Untergeordnete Layout- und LayoutModifier-Elemente können mit einer anderen Layout-Richtung gemessen werden. (Ibd731)
Neu wurde Modifier.zIndex() hinzugefügt, um die Zeichenreihenfolge der untergeordneten Elemente im selben übergeordneten Layout zu steuern. Die Höheneigenschaft von DrawLayerModifier wurde in shadowElevation umbenannt und steuert die Zeichenreihenfolge nicht mehr. Die Reihenfolge der Parameter für „DrawShadow“ wurde geändert: „elevation“ ist jetzt der erste und „shape“ der zweite Parameter mit der Standardeinstellung „RectangleShape“. (I20150, b/152417501)
"onSizeChange" und "onPositionChange" im Inhaber entfernt. (I5c718)
Es wurde Constraints2 hinzugefügt, eine Kopie von Einschränkungen, die anstelle von IntPx nur Werte vom Typ "Int" unterstützt. IntPx wird entfernt und alle Ganzzahleinschränkungen werden wie bei Android als Pixel angenommen.
- Hinzufügung von "IntSize", das IntPxSize irgendwann ersetzen wird. (I4b43a)
Die Ausrichtung kann mit beliebigen Werten instanziiert werden. 1D-Ausrichtungen wurden hinzugefügt. (Ia0c05)
Für „alignToSiblings“ kann jetzt ein „Gemessen“ anstelle eines „Platzierbaren“ verwendet werden. (I5788d)
-
- ScaleFit wurde in ContentScale umbenannt
- ContentScale wurde von UI-Graphics zum UI-Core-Modul verschoben und befindet sich nun im selben Modul wie die Ausrichtung API.
- „FillMaxDimension“ wurde in „Zuschneiden“ umbenannt.
- „FillMinDimension“ wurde in „Fit“ umbenannt.
- Fit wurde zur besseren Übereinstimmung in Inside umbenannt
- Entsprechungen für ImageView.ScaleType
- Es wurde eine Dokumentation hinzugefügt, aus der hervorgeht, dass die Kombination aus „Zuschneiden“ und „Ausrichtung: Mitte“ dasselbe Ergebnis wie ImageView.ScaleType.CENTER_CROP erzielt und dass „Passen“ in Kombination mit „Ausrichtung: Mitte“ dasselbe Ergebnis wie ImageView.ScaleType.FIT_CENTER erzielt. „Innen“ in Kombination mit „Ausrichtung: Mitte“ erzielt dasselbe Ergebnis wie ImageView.ScaleType.CENTER_INSIDE.
Unterstützung für RTL-Zeichen für Zeichnen-Modifikatoren (I0aaf9)
API zum Aufblasen von Android-Ansichtselementen aus XML veröffentlicht. Weitere Informationen finden Sie in der Demo zu ViewInCompose. (I42916)
DrawModifier API verbessern:
- Der Empfängerbereich für draw() wurde zu ContentDrawScope geändert.
- Alle Parameter für „draw()“ entfernt
- DrawScope hat dieselbe Oberfläche wie das bisherige CanvasScope
- ContentDrawScope hat die Methode „drawContent()“ (Ibaced, b/152919067)
„positionInParent“ und „boundsInParent“ für „LayoutCoordinates“ hinzugefügt (Icacdd, b/152735784)
Bei DrawLayerModifier und drawLayer() sind „clipToBounds“ und „clipToOutline“ jetzt standardmäßig auf „false“ festgelegt. (I0eb8b, b/152810850)
„LayoutResult“ in „MeasureResult“ umbenannt. (Id8c68)
LayoutModifier2 wurde hinzugefügt, eine neue API zum Definieren von Layoutmodifikatoren. LayoutModifier wurde eingestellt (If32ac)
Modifikator plus Operator durch Factory-Erweiterungsfunktionen ersetzt (I225e4)
Die Properties „translationX“ und „translationY“ wurden hinzugefügt, um die Anzeigeliste der Zeichenbefehle für eine bestimmte Ebene zu verschieben. Das ist nützlich, um Inhalte als Reaktion auf Animationen oder Touch-Ereignisse zu verschieben. (I8641c)
Die Parameter „pivotX“ und „pivotY“ wurden zu den Ebenen-APIs hinzugefügt, um die Drehung und Skalierung um einen bestimmten Punkt auf einer Ebene zu unterstützen (Icf7c3)
Fügen Sie „OnPositionedModifier“ und „OnChildPositionedModifier“ hinzu, um die zusammensetzbaren Funktionen „OnPositioned“ und „OnChildPositioned“ zu ersetzen. (I2ec8f)
Der LayerModifier wurde hinzugefügt. Mit diesem Modifikator kann ein RenderNode für ein Layout hinzugefügt werden. Sie können damit Zuschneiden, Deckkraft, Drehung, Skalierung und Schatten festlegen. Damit wird „RepaintBoundary“ ersetzt. (I7100d, b/150774014)
Die Layoutrichtung wird jetzt vom übergeordneten Layoutknoten an die untergeordneten Knoten weitergegeben. Modifikator für Layoutrichtung wurde hinzugefügt. (I3d955)
Stapelkomponente unterstützt die Richtungsvorgabe von rechts nach links (Ic9e00)
Erste Unterstützung für Rtl im Compose-Layout (Ia5519)
Density und DensityScope wurden in einer Benutzeroberfläche zusammengeführt. Anstelle von „AmbientDensity()“ können Sie jetzt „DensityAmbient.current“ verwenden. Statt „withDensity(density)“ einfach „with(density)“ verwenden (I11cb1)
Bei „LayoutCoordinates“ wurde geändert, dass „providedAlignmentLines“ ein Set anstelle einer Map ist und dass „LayoutCoordinates“ den Operator „get()“ zum Abrufen eines Werts implementiert. So können Modifikatoren einen oder mehrere Werte des Sets leichter ändern, ohne für jeden Modifikator eine neue Sammlung erstellen zu müssen. (I0245a)
LayoutCoordinates hat keine Positionseigenschaft mehr. Die Positionseigenschaft ist in Bezug auf LayoutModifier, Rotation oder Skalierung nicht sinnvoll. Stattdessen sollten Entwickler „parentCoordinates“ und „childToLocal()“ verwenden, um die Transformation von einer Layoutkoordinate in eine andere zu berechnen.
Bei „LayoutCoordinates“ wird für die Größe die Property „IntPxSize“ anstelle von „PxSize“ verwendet. Für Layouts werden Ganzzahlpixelgrößen verwendet. Daher sollten für alle Layoutgrößen Ganzzahlen und keine Gleitkommawerte verwendet werden. (I9367b)
Verbesserungen an der API-Oberfläche von Einschränkungen (I0fd15)
CanvasScope API erstellt, die ein Canvas-Objekt umschließt, um eine zustandslose, deklarative API-Oberfläche für die Zeichnung bereitzustellen Transformationen sind auf ihren eigenen Empfängerbereich beschränkt und die Informationen zur Größe beziehen sich ebenfalls auf die entsprechenden Einblendungsgrenzen. Der Nutzer muss zum Konfigurieren von Zeichenvorgängen kein eigenes Paint-Statusobjekt verwalten.
- CanvasScopeSample hinzugefügt und die Demo-App um eine deklarative Grafikdemo (Ifd86d) erweitert
Die nicht verwendete MaskFilter API wurde entfernt, da sie nur eingeschränkt verwendet wird und in den meisten Anwendungsfällen nicht für die Hardwarebeschleunigung optimiert ist (I54f76)
RectangleShape wurde von androidx.ui.foundation.shape.* zu androidx.ui.graphics.* verschoben (Ia74d5, b/154507984)
Alle nullablen Farbverwendungen in der API wurden durch nicht nullable ersetzt und Color.Unset wird anstelle von null verwendet (Iabaa7)
ImagePainter zusätzlichen optionalen rect-Parameter hinzufügen, um das Zeichnen eines Unterabschnitts des zugrunde liegenden ImageAsset (I0ea9e) zu unterstützen
Die Farbe „Nicht festgelegt“ wurde hinzugefügt, um einen nicht festgelegten Wert darzustellen, ohne dass Farben eingekreist werden. (If901a)
Die Erweiterungsmethoden Canvas.rotate und Canvas.scale wurden hinzugefügt, um optionale Drehpunktkoordinaten für Transformationen zu verwenden. Standardmäßig werden sie links oben in der aktuellen Canvas-Übersetzung angezeigt.
Außerdem wurde Canvas.rotateRad als Erweiterungsmethode für Konsistenz verschoben (Ibaca6).
Die PixelMap API wurde erstellt, um Pixelinformationen aus einem ImageAsset abzufragen. (I69ad6)
Umbenannt in „toFrameworkRect/toFrameworkRectF“ in „toAndroidRect/toAndroidRectF“, um der Namenskonvention für Objektkonvertierungen zwischen Compose und den Android-Framework-APIs, auf denen sie basieren, zu entsprechen. Außerdem aktualisierte Dokumente zu diesen APIs (I86337)
Die VectorPainter API wurde hinzugefügt, um die vorhandene Subkomposition API für Vektorgrafiken zu ersetzen. Das Ergebnis der Unterzusammensetzung ist ein VectorPainter-Objekt anstelle eines DrrawModifier. Die bisherigen DrawVector-Kompositionen wurden zugunsten von VectorPainter eingestellt.
Umbenennung der Image(Painter) API in PaintBox(Painter) Erstellung einer zusammensetzbaren Vektor-Datei mit Vektoren, die sich wie die zusammensetzbare Funktion von Bild verhält, außer mit einem VectorAsset anstelle eines ImageAsset (I9af9a, b/149030271)
„Image“ in „ImageAsset“ umbenannt, um den Unterschied zwischen den Bilddaten und dem anstehenden Bild-Komposit besser zu unterscheiden, das zum Erstellen von Layouts und zum Zeichnen von Inhalten verwendet wird. _Body:Erweiterungsmethode für android.graphics.Bitmap, Bitmap.asImageAsset(), erstellt, um eine Instanz eines ImageAssets zu erstellen, die sich für die Kombination traditioneller Android-Anwendungsentwicklung mit dem Compose-Framework eignet (Id5bbd)
TextDirection.Content hinzugefügt (I48f36)
Der Operator „TextDecoration.plus“ (I0ad1a) wurde hinzugefügt.
Force
wurde aus den Enum-Werten von „TextDirectionAlgorithm“ (Icc944) entfernt.TextDirectionAlgorithm in TextDirection umbenannt (I75ce8)
Implementiert „LongPressAndDrag“ für die Textfeldauswahl. (I17919)
„AnnotatedString.getStringAnnotations“ wurde hinzugefügt, um alle Anmerkungen innerhalb des Bereichs zurückzugeben. (I1fa00)
Der Paketname für „Locale“ und „LocaleList“ wurde von androidx.ui.text in androidx.ui.intl geändert (I8132c)
Der Cursor von TextField blinkt (Id10a7).
API-Änderung: „AnnotatedString(builder: Builder)“ wurde in „annotatedString(builder: Builder)“ umbenannt. (Ia6377)
API-Änderung: AnnotatedString.Item wurde in AnnotatedString.Range umbenannt. (I2d44d)
Rename AnnotatedString.Builder.addAnnotationString to addStringAnnotation. (I5059e)
Es ist jetzt möglich, die Softwaretastatur mithilfe von SoftwareKeyboardController auszublenden/einblenden, der über den Rückruf onTextInputStarted gesendet wird (I8dc44, b/151860051)
Zusätzlicher Plus-Operator für (Text/Paragraph/Span)Style, der an die Funktion „merge()“ delegiert. (Ia1add)
FontWeight.lerp rastet nicht mehr ein. Es ist immer noch eine Datenklasse. (I521c2)
Der Konstruktor von „FontWeight“ ist jetzt öffentlich und keine Datenklasse mehr. (Id6b1f)
Fügen Sie getLineStart, getLineEnd, getEllipsisOffset und getEllipsisCount zu TextLayoutResult (Ibc801) hinzu.
Das Modul „ui-text“ wurde in „ui-text-core“ umbenannt (I57dec).
Nicht verwendete Größenklasse entfernt, da im ui-geometry-Modul eine doppelte Größenklasse verwendet wird. (I1b602)
AdapterList wurde hinzugefügt, eine scrollbare Listenkomponente, die nur die sichtbaren Elemente zusammenstellt und anordnet. 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)
Dem Feld „Box“ die Parameter „Abstand“, „Rahmen“, „Form“ und „Hintergrund“ hinzufügen (I05027, b/148147281)
Fehlerkorrekturen
- "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. Ebenso wurde „ScrollerPosition“ zugunsten von „ScrollState“ eingestellt (I400ce, b/157225838, b/149460415, b/154105299)
runOnIdleCompose
inrunOnIdle
umbenannt (I83607)- Mehrere Test-APIs wurden umbenannt, um sie intuitiver zu gestalten. Alle APIs vom Typ „findXYZ“ wurden in „onNodeXYZ“ umbenannt. Alle doXYZ APIs wurden umbenannt, um XYZ auszuführen. (I7f164)
- Die Compose-Benutzeroberfläche kann jetzt in ViewGroups erstellt werden, ohne dass eine neue Komposition erforderlich ist. Ein Beispiel finden Sie unter ViewInteropDemo. (I9ab0b, b/160455080)
- "sortWith" und "removeRange" wurden zu MutableVector hinzugefügt (Icccf7).
- Implementieren Sie Ziehpunkte für die Auswahl, um die Auswahl für das Textfeld zu ändern. (I27032)
- Die Inline-Shader-Klasse, die die NativeShader-Erwartungklasse umhüllte, wurde entfernt. NativeShader wurde in Shader umbenannt. Die gewrappte Shader-Inline-Klasse fügte der API-Oberfläche nichts Wertvolles hinzu und war eine Inline-Klasse. Verwenden Sie daher die NativeShader-Klasse direkt. (I25e4d)
Der PainterModifier wurde überarbeitet, sodass er nicht mehr auf Grundlage der angegebenen Einschränkungen und des ContentScale-Parameters skaliert. Bei Implementierungen von Painter müssen die Zeichnungsinhalte anhand der angegebenen Größe des DrawScope skaliert werden, in das sie gezeichnet werden.
Ein Problem wurde behoben, bei dem die Cache-Bitmap von VectorPainter auf die Standardgröße und nicht auf die angegebene Größe zum Zeichnen angepasst wurde.
ImagePainter wurde aktualisiert, damit der Inhalt skaliert wird, anstatt dass dies vom PainterModifier übernommen wird. (I6ba90)
Top-Level-Funktion „withFrameNanos“ für das Animations-Timing hinzufügen (Ie34c5)
Die Anmerkung „@Untracked“ wurde eingestellt. Durch @ComposableContract(tracked=false) ersetzen (Id211e)
androidx.ui.foundation.TextFieldValue und androidx.ui.input.EditorValue wurden eingestellt. Die Composeables „TextField“, „FilledTextField“ und „CoreTextField“, die diesen Typ verwenden, werden ebenfalls eingestellt. Verwenden Sie stattdessen androidx.ui.input.TextFieldValue (I4066d, b/155211005).
Ein Problem wurde behoben, bei dem die Weiterleitung von Zeigereingaben einen Absturz verursachte, wenn PointerInputFilters beim Verschieben über die Unterzusammensetzung entfernt wurden. Dieser Fehler wurde jetzt behoben. (I1f48b, b/157998762)
Ein Problem wurde behoben, durch das die Weitergabe von Eingaben des Touch-Steuerelements zu einem Absturz führte, wenn PointerInputFilters während der Weitergabe über eine Unterkomposition entfernt wurden. Dieser Fehler wurde jetzt behoben. (Iab398, b/157998762)
Die Radius-Klasse wurde in eine Inline-Klasse umgestellt. Die Methoden zum Erstellen von Zusatzfunktionen wurden entfernt und durch einen Funktionskonstruktor mit Standardparameter ersetzt, damit der Radius entlang der Y-Achse mit dem obligatorischen Radiusparameter der X-Achse übereinstimmt.
DrawScope.drawRoundRect wurde aktualisiert, sodass jetzt ein einzelner Radiusparameter anstelle von zwei separaten Floatwerten für den Radius entlang der X- und Y-Achse verwendet wird (I46d1b)
Die zusammensetzbare Funktion „Neu zusammensetzen“ ist keine nützliche Abstraktion mehr. Die meisten Neuzusammensetzungen sollten aufgrund von MutableState-Zuweisungen erfolgen. Für alles andere wird empfohlen, die Funktion
invalidate
zu verwenden, um eine Neuzusammensetzung des aktuellen Bereichs auszulösen. (Ifc992)Die Verwendung der Px-Klasse in verschiedenen zusammengesetzten Klassen wurde im Rahmen der umfangreichen Refaktorierung ersetzt, um nur noch Dp- und primitive Typen für Pixelparameter zu verwenden (Iede0b)
Ändert die Codegenerierungsstrategie des Compose-Compilers. Vor der Änderung hat der Compose-Compiler Aufrufe in kombinierbare Funktionen umgewandelt. Mit dieser Änderung transformieren wir jetzt den Text einer zusammensetzbaren Funktion und lassen die Aufrufsite (meistens) unverändert.
Das bedeutet, dass die meiste Logik der Kommunikation mit der Compose-Laufzeit am Anfang des Funktionstexts statt auf der Aufrufseite stattfindet.
Diese Änderung sollte für alle Verwendungen von compose quellenkompatibel sein. Die meisten Nutzer von Compose müssen aufgrund dieser Änderung keinen Code aktualisieren.
Um diese Arbeit zu unterstützen, wurde die JVM-Signatur aller zusammensetzbaren Funktionen geändert. Eine zusammensetzbare Funktion, die einen einzelnen Parameter akzeptiert, wird in eine Funktion umgewandelt, die drei Parameter akzeptiert. Die zusätzlichen Parameter sind der Composer, eine "Schlüssel"-Ganzzahl, eine Bitmasken-Ganzzahl zur Weitergabe von Metadaten durch Aufrufe.
„Compose“ wandelt jetzt auch Standardargumente in eine zusammensetzbare Funktion um. Dies geschieht ohne zusätzliche synthetische Standardüberladung der Funktion selbst. Daher führt diese Änderung dazu, dass weniger Funktionen definiert werden.
Bekannte beabsichtigte Verhaltensänderungen, die sich daraus ergeben:
- Einige Anrufe werden übersprungen, die zuvor nicht übersprungen wurden.
- Zusammensetzbare Ausdrücke in Standardargumentausdrücken werden jetzt korrekt abonniert und verarbeitet.
Im Rahmen dieser Arbeit wurden einige Optimierungen vorgenommen: 1. Das Ergebnis von Parametervergleichen wird über den Aufrufgraphen an andere kombinierbare Funktionen weitergegeben. Dies führt zu weniger Vergleichen bei der Laufzeit, reduziert die Größe der Steckplatztabelle und führt dazu, dass zusammensetzbare Funktionen, die zuvor nicht übersprungen wurden, häufiger übersprungen werden. 2 Parameter, die zur Kompilierungszeit als „statisch“ eingestuft werden, werden in der Laufzeit nicht mehr verglichen oder gespeichert. Dadurch wird die Anzahl der Vergleiche und die Größe der Steckplatztabelle reduziert. 3. Die Kontrollflussstruktur des Funktionskörpers wird verwendet, um die Anzahl der generierten Gruppen zu minimieren. Dies reduziert die Größe der Slottabelle und führt zu weniger Arbeit für die Laufzeit. 4. Nicht verwendete Dispatch- und Empfängerparameter für Funktionen werden bei der Bestimmung der Überspringbarkeit der Funktion nicht berücksichtigt, wenn sie nicht im Funktionskörper verwendet werden.
Die meisten funktionsgefährdenden Änderungen betreffen APIs, auf die der Compiler direkt abzielt. Die typische Verwendung des Editors ist davon nicht betroffen: 1. Composer::startExpr wurde entfernt. Composer::endExpr wurde entfernt. Composer::call wurde eingestellt. Die Überladungen von
key
ohne Varargs wurden entfernt. Verwenden Sie ab sofort die Versionvararg
. 5. Die Anmerkung „Pivotal“ wurde eingestellt. Verwenden Sie stattdessenkey
. 6. ScopeUpdateScope::updateScope wurde geändert, sodass jetzt eine Funktion 3 statt einer Funktion 1 erwartet wird. 7. „restartableFunction“ und „restartableFunctionN“ wurden um zusätzliche Parameter zur Kompilierungszeit ergänzt (I60756, b/143464846)Die nicht mehr unterstützten LayoutAlign-Modifizierer wurden entfernt. (I10877)
RepaintBoundary wurde zugunsten von DrawLayerModifier entfernt (I00aa4)
Button, FloatingActionButton und Clickable haben jetzt einen separaten
enabled
-Parameter. Einige der Parameter für die Schaltfläche wurden umbenannt oder neu angeordnet. (I54b5a)Ersetzen von ButtonStyle durch eigene Funktionen und entfernte Textüberlastung (Zeichenfolge). Informationen zur Verwendung finden Sie in den aktualisierten Beispielen. (If63ab, b/146478620, b/146482131)
Funktionsgefährdende Änderungen an der Ambients API Weitere Informationen finden Sie in der Protokoll- und
Ambient<T>
-Dokumentation (I4c7ee, b/143769776).Das Verhalten der Standardtextrichtung wird jetzt von der Layoutrichtung bestimmt. Wenn die Layoutrichtung „RTL“ ist, ist die Standardtextrichtung ebenfalls „RTL“. Bisher: TextDirection.ContentOrLtr/Rtl (I4e803)
Fehlerkorrektur: Wenn Schriftstärke und -stil in einem AnnotatedString verschachtelt sind, wird der Text nicht richtig gerendert. (I77a9d)
Es werden häufig verwendete Parameter zu „Text()“ hinzugefügt. Wenn Sie derzeit einen lokalen Textstil erstellen, um eine kleine Anzahl dieser Parameter zu übergeben, z. B. „Text(style = TextStyle(textAlign = TextAlign.Center))“, können Sie die Parameter jetzt direkt angeben: „Text(textAlign = TextAlign.Center)“ (I82768)
Das Modul „ui-android-text“ wurde in „ui-text-android“ umbenannt (I68cbe).