Benutzeroberfläche erstellen
androidx.compose.ui
androidx.compose.ui.geometry
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(API-Referenzdokumente für alle Compose-Pakete ansehen)
Letzte Aktualisierung | Stabile Version | Release Candidate | Beta-Ausgabe | Alphaversion |
---|---|---|---|---|
11. Dezember 2024 | 1.7.6 | - | - | 1.8.0-alpha07 |
Struktur
Compose ist eine Kombination aus sieben Maven-Gruppen-IDs in androidx
. Jede Gruppe enthält eine gezielte Teilmenge von Funktionen, für die jeweils eigene Release-Notes gelten.
In dieser Tabelle werden die Gruppen und Links zu den einzelnen Versionshinweisen erläutert.
Gruppe | Beschreibung |
---|---|
compose.animation | Sie können Animationen in ihren Jetpack Compose-Anwendungen erstellen, um die Nutzerfreundlichkeit zu verbessern. |
compose.compiler | @Composable-Funktionen transformieren und Optimierungen mit einem Kotlin-Compiler-Plug-in aktivieren |
compose.foundation | Erstellen Sie Jetpack Compose-Anwendungen mit vorgefertigten Bausteinen und erweitern Sie das Fundament, um eigene Designsystemelemente zu erstellen. |
compose.material | Erstellen Sie Jetpack Compose-UIs mit vorgefertigten Material Design-Komponenten. Dies ist der übergeordnete Einstiegspunkt von Compose. Er wurde entwickelt, um Komponenten bereitzustellen, die denen auf www.material.io entsprechen. |
compose.material3 | Erstellen Sie Jetpack Compose-UIs mit Material Design 3-Komponenten, der nächsten Weiterentwicklung von Material Design. Material 3 umfasst aktualisierte Themen und Komponenten sowie Personalisierungsfunktionen von Material You wie dynamische Farben. Es wurde so konzipiert, dass es zum neuen visuellen Stil und zur System-UI von Android 12 passt. |
compose.runtime | Grundlegende Bausteine des Programmiermodells und der Statusverwaltung von Compose sowie die Kernlaufzeit, auf die das Compose-Compiler-Plug-in ausgerichtet ist. |
compose.ui | Grundlegende Komponenten der Compose-Benutzeroberfläche, die für die Interaktion mit dem Gerät erforderlich sind, einschließlich Layout, Zeichnen und Eingabe. |
Abhängigkeiten deklarieren
Wenn Sie eine Abhängigkeit von Compose hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.
Fügen Sie der Datei build.gradle
für Ihre App oder Ihr Modul die Abhängigkeiten für die erforderlichen Artefakte hinzu:
Groovy
dependencies { implementation "androidx.compose.ui:ui:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.7.5") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Ihr Feedback hilft uns, Jetpack zu verbessern. Bitte teilen Sie uns mit, wenn Sie neue Probleme feststellen oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können einem vorhandenen Problem Ihre Stimme geben, indem Sie auf die Schaltfläche mit dem Stern klicken.
Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.
Version 1.8
Version 1.8.0-alpha07
11. Dezember 2024
androidx.compose.ui:ui-*:1.8.0-alpha07
wird veröffentlicht. Version 1.8.0-alpha07 enthält diese Commits.
API-Änderungen
- Inhaber von
LayoutNode
für Tools freigegeben. (I26f7f) - Wird in der
LocalAutofillHighlightColor
-Komposition lokal ein Farbtyp verwendet? (I0e05b) - Die eingestellte
UrlAnnotation
und ihre Methoden sollten weiterhin als experimentell gekennzeichnet bleiben. (Ic0021)
Fehlerkorrekturen
- Behoben:
IndexOutOfBoundsException
stürzte ab, wennLinkAnnotation
in derBasicText
oder im Text-Element verwendet wurde (be7605, b/374115892) - Ein Problem wurde behoben, durch das die Indikatorlinie bei ausgefüllten Textfeldern mit benutzerdefinierter Form nicht zugeschnitten wurde. (I4f87f, b/380704151)
- Fehlende Hintergründe bei langen Screenshots wurden behoben. (I4d57a)
- Diese Bibliothek verwendet jetzt JSpecify-Null-Anmerkungen, die sich auf den Typ beziehen. Kotlin-Entwickler sollten die folgenden Compilerargumente verwenden, um die korrekte Verwendung zu erzwingen:
-Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode
(Idfef8, b/326456246) - Unterstützung für Compose für Wide Gamut- und HDR-Farben unter Android Q und höher aktualisiert. (Icd8be, b/379135036)
- Wenn Ressourcenschriften nicht geladen werden können, wird jetzt automatisch auf die Standardschrift zurückgegriffen. Bisher wurde eine Ausnahme im Messwert geworfen. (Ib6a49)
- Behebung des Problems, dass der Fokus verloren geht, wenn
AndroidView
getrennt und wieder verbunden wird. (I53446) requestFocus()
aus Aktion „Außerhalb des Layouts“ akzeptieren (Ia8461)
Externer Beitrag
BringIntoViewResponderModifierNode
wurde zur Benutzeroberfläche hinzugefügt. Dies bietet eine neue Möglichkeit, die Funktion „In den Blick bringen“ zu implementieren und auf Plattformebene zu implementieren. (Ia6dd8)
Version 1.8.0-alpha06
13. November 2024
androidx.compose.ui:ui-*:1.8.0-alpha06
wird veröffentlicht. Version 1.8.0-alpha06 enthält diese Commits.
API-Änderungen
- Fügt den
stylusHoverIcon
-Modifikator hinzu. (Iff20a, b/331289114) - Der Autofill-Manager wird zu einer Benutzeroberfläche. (I84914, b/376080755)
- Fügen Sie sowohl
focusRequester
als auchFocusTargetModifierNode
requestFocus(FocusDirection)
hinzu, um den Fokus auf eine bestimmte Richtung zu legen. (I5d9ec, b/245755256) FocusProperties.enter
undFocusProperties.exit
wurden durchonEnter
undonExit
ersetzt. Dabei wird statt desFocusDirection
-Parameters ein Empfängerbereich verwendet. (I6e667)- Unterstützung für die automatische Vervollständigung in der Textsymbolleiste (Ie6a4c)
- API-Änderungen zu
Modifier.focusRestorer()
(I99c03):- Parametername in „fallback“ geändert
- Parameter ist jetzt ein
FocusRequester
und kein Lambda - Der Parameter ist jetzt nicht mehr NULL und „Default“ ist der Standardwert.
- Die Anmerkung
@Experimental
wird aus der Benutzeroberfläche des Autofill-Managers entfernt. Die Funktion ist noch nicht fertiggestellt, soll aber in dieser Version eingeführt werden. Wir möchten jedoch keine @Expemiental API (Id8398) einführen. LocalHapticFeedback
bietet jetzt eine standardmäßigeHapticFeedback
-Implementierung, wenn die Vibrations-API angibt, dass Haptik unterstützt wird. Folgende Werte wurden zuHapticFeedbackType
hinzugefügt:Confirm
,ContextClick
,GestureEnd
,GestureThresholdActivate
,Reject
,SegmentFrequentTick
,SegmentTick
,ToggleOn
,ToggleOff
undVirtualKey
. Bei Wear Compose-Komponenten, die lang angeklickt werden können, wieButton
,IconButton
,TextButton
undCard
, wird jetzt die haptische RückmeldungLONG_PRESS
ausgeführt, wenn ein Handler für langes Drücken angegeben wurde. (I5083d)- Entfernt
OverscrollConfiguration
undLocalOverscrollConfiguration
und fügtrememberPlatformOverscrollFactory
hinzu, um eine Instanz der Standard-Overscroll-Implementierung zu erstellen oder die Parameter anzupassen. Wenn Sie das Überscrollen deaktivieren möchten, verwenden Sie anstelle vonLocalOverscrollConfiguration provides null
LocalOverscrollFactory provides null
. Wenn Sie die Farbe oder den Abstand des Glühens ändern möchten, verwenden Sie anstelle vonLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
. (Ie71f9, b/255554340, b/234451516) - Die experimentelle
GlobalAssertions
API wurde entfernt. Sie wurde ursprünglich für die Durchführung von Barrierefreiheitstests entwickelt. Verwenden Sie stattdessenenableAccessibilityChecks()
. (I59322)
Version 1.8.0-alpha05
30. Oktober 2024
androidx.compose.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, 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. (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) - Es wird eine neue
AutofillManager
-Benutzeroberfläche eingeführt, mit der sich der Autofill-Vorgang für Nutzer optimieren lässt, sowie einisSemanticAutofillEnabled
-Flag, mit dem diese neue Version von Autofill aktiviert werden kann. (I9d484) - 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, 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)
- Ein Problem wurde 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 (z.B. Dialogfeld und Hauptinhalt) behoben (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
- Es werden
DelegatableNode#onDensityChange
- undDelegatableNode#onLayoutDirectionChange
-Callbacks hinzugefügt, um den Knotenstatus bei Änderungen zu aktualisieren (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 Rückschritten 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 für einen einzelnen Zeiger vergrößern lassen. (Iccf02, b/335339283) - Hier wird
WindowInfo#containerSize
hinzugefügt, um die Größe des Inhaltscontainers des aktuellen Fensters anzugeben. Diese 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
- Die Verarbeitung von Absätzen in
AnnotatedString
wurde aktualisiert. Bisher konnten Sie nur nicht überlappende Absätze erstellen. MitAnnotatedString
können jetzt vollständig überlappende Absätze zusammengeführt und verschachtelte Absätze erstellt werden. In diesem Fall wird der äußere Absatz an den Grenzen des inneren Absatzes aufgeteilt und der Stil des inneren Absatzes 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, bei dem bestimmte generischen Umriss-Clips 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 generischer Umrissclip angegeben wurde.
- Behobene Ausnahme, die geworfen wurde, wenn die IME in einer externen Ansicht aktiv war und die Aktion „Weiter“ verwendet wurde, um den Fokus auf die
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, 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 zugeschnitten werden (e8e2f, b/363027803)
- Fehlerbehebung, wenn sich der Fokus der Suche zwischen „Schreiben“ und einer Ansicht bewegt (58377, b/350534714)
Externer Beitrag
- Für
AlignmentLines
Map
werden jetzt die konkreten TypenVerticalAlignmentLine
oderHorizontalAlignmentLine
akzeptiert. (I02912) - Neue gängige
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.6
11. Dezember 2024
androidx.compose.ui:ui-*:1.7.6
wird veröffentlicht. Version 1.7.6 enthält diese Commits.
Fehlerkorrekturen
- Bisher wurde bei einem Schlüsselereignis ein Fehler ausgegeben, wenn für das Fokussystem ausstehende Ungültigstellungen vorhanden waren. Stattdessen wird jetzt ein Fehler protokolliert (I7ea0, b/346370327).
- Die experimentelle Anmerkung für
SemanticsPropertyReceiver.invisibleToUser()
wurde entfernt. Diese Funktion wird in Version 1.8 eingestellt und durchSemanticsPropertyReceiver.hideFromAccessibility()
ersetzt. (I448f0, b/376479686) - Ein Problem wurde behoben, durch das
TextField
bei Verwendung der POBox-japanischen Tastatur auf bestimmten älteren Sony-Geräten nicht richtig funktionierte. (I94e0e, b/373743376) - Ein Problem mit der Barrierefreiheit wurde behoben, bei dem der Inline-Inhalt von
BasicText
vonTalkBack
nicht vorgelesen wurde. (I67bcb, b/376479686)
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.
- Ein Absturz beim Einfügen von
LinkAnnotation
mit einer Breite von null wurde behoben. (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
wird 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.
- Behobene Ausnahme, die geworfen wurde, wenn die IME in einer externen Ansicht aktiv war und die Aktion „Weiter“ verwendet wurde, um den Fokus auf die
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
- Die Leistung von Informationen zu Knoten für Barrierefreiheit und Semantikereignissen wurde durch das Entfernen ausführlicher Tracing-Informationen verbessert. (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 Screenreadern wurde behoben, bei dem
LiveRegion
-Ansagen zu Schaltflächen nicht gemacht 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
- Für das ui:ui-Modul ist jetzt mindestens die Version 1.7.0-rc01 von foundation:foundation erforderlich. 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
- Bei den
SemanticsNodeInteraction
-FunktionenperformTextReplacement
,performTextInput
undperformTextClearance
, die sich auf die Texteingabe beziehen, werden jetzt Assertion-Fehler ausgegeben, wenn sie auf schreibgeschützteTextFields
aufgerufen werden. (I4ae8f)
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, durch den
TextField
beim Wechseln der Softwaretastatur die Eingabe über die neue Tastatur erst akzeptierte, wenn der Fokus verloren und wiedergewonnen wurde. - Ein Problem wurde behoben, durch das beim Rendern mit
SurfaceView
-Inhalten beim Versuch, Ebeneninhalte beizubehalten, unbeabsichtigte Nebenwirkungen auftraten.
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 das Software-Rendering für die
GraphicsLayer
API. (35ddd8) - Behebung eines Absturzes bei der Logik zur Ebenenspeicherung. (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
wird 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
wird 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 die KlasseTextLinkStyles
hinzugefügt, mit der die Links als Parameter für das Text-Element formatiert werden können. (I31b93)
Fehlerkorrekturen
- Es wurden weitere Anwendungsfälle behoben, bei denen während von Ereignissen dynamisch Modifikatoren für die Eingabe des Mauszeigers hinzugefügt wurden 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 leistungsstärkere Formanimationen sorgt. (Id1629, b/326070216) isPositionedByParentWithDirectManipulation
wurde inintroducesFrameOfReference
umbenannt. Hinweis: Jetzt hat es den umgekehrten Effekt. Das bedeutet, dass die meistenLayoutCoordinates
standardmäßig einen Referenzrahmen einführen und die Eigenschaft nur dann auf „false“ gesetzt wird, wenn sie direkt manipuliert wird. Wenn Sie die Position nur mit Elementen abfragen möchten, die einen Bezugspunkt einführen, verwenden SiepositionInLocalFrameOfReference(...)
. OderpositionInLocalLookaheadFrameOfReference
von einemLookaheadScope
. (Ifc5f7)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 ist für alle MethodenMouseButton.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. Wenn du dem Text Links hinzufügen möchtest, erstelle eineAnnotatedString
mit einerLinkAnnotation
, die deinem Link entspricht, und übergebe dieseAnnotatedString
an das Text-Element. (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) - Das Feature-Flag für lange Screenshots wurde entfernt. (I28648, b/329128246)
LazyColumn
rendert jetzt fixierte Überschriften in langen Screenshots korrekt. (I8d239, b/329296635)- Die
NestedScroll
-Quellen „Ziehen“ und „Wischen“ werden durchUserInput
undSideEffect
ersetzt, um der erweiterten Definition dieser Quellen Rechnung zu tragen. Dazu gehören jetzt auch Animationen (Nebeneffekt) sowie Mausrad und Tastatur (UserInput
). (I40579) ApproachLayoutModifierNode
undModifier.approachLayout
sind jetzt stabil. Die altenisMeasurementApproachComplete()
undisPlacementApproachComplete()
wurden 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-Design-Designvorlagen verwenden, verwenden Sie dasTextDefaults
-Objekt, um die Anmerkung mit Material-Design-Designvorlagen zu erstellen (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. Beim Parsen des HTML-getaggten Strings mit<a>
-Tags erstellt die Methode für jedes solche Tag einLinkAnnotation.Url
und übergibt die Stilobjekte und den Link-Interaktions-Listener an jede Anmerkung. (I7c977) LinkAnnotation
akzeptiert jetzt die zustandsbasierten Stilargumente und einLinkInteractionListener
. Fügen Sie diese Anmerkung demAnnotatedString
hinzu, um einen Hyperlink zu erhalten. Wenn SiefocusedState
und/oderhoveredState
übergeben, können Sie das visuelle Elementconfiguration
für Links definieren, wenn sie den Fokus haben und/oder der Mauszeiger darauf ruht. (I81ce4, b/139312671)ImeOptions.hintLocales
ist nicht mehr optional. Wenn Sie eine leere Liste mit Sprachen ü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
- Die Methode
parseAsHtml
für formatierte Strings wurde hinzugefügt. Damit können Sie einen mit HTML-Tags markierten String inAnnotatedString
konvertieren. Beachten Sie, dass nicht alle Tags unterstützt werden. Aufzählungslisten können beispielsweise noch nicht angezeigt werden. (I84d3d, 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 oder 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)- Bei der
BasicTextField(state)
-Variante undBasicSecureTextField
wird jetztKeyboardActionHandler
anstelle vonKeyboardActions
verwendet, um Aktionen der 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 zum Aufzeichnen von Zeichenbefehlen in einer Anzeigeliste sowie zusätzlicher Properties, 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
zur Unterstützung beim 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 API-Definition
GraphicsLayer
„expected/actual“ (erwartet/tatsächlich) wurde hinzugefügt, um das Aufzeichnen und Wiedergeben 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 bei 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
wird 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 bisherige Verhalten inFlowRow
oderFlowColumn
beibehalten möchten, bei dem alle Elemente unabhängig davon zusammengesetzt werden, ob sie in die maximale Breite der Querachse passen, legen Sie bei der Initialisierungoverflow
aufFlowRowOverflow.Visible
oderFlowColumnOverflow.Visible
fest. UnterContextualFlowRowSample
undFlowRowSample
finden Sie Beispiele für diese neuen Funktionen in der Praxis. (Ib9135, b/293577082) - Fügen Sie die
maxTextLength
-Semantikeigenschaft hinzu, die für Textfelder festgelegt werden sollte, die die maximal zulässige Anzahl von Zeichen herausfiltern. (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. Entwickler sollten dieinspectableProperties()
-Methode fürModifierNodeElement
implementieren, wenn sie Modifikatoreigenschaften für Tools freigeben möchten. (Ib3236) - Neuer Konstruktor für
PopupProperties
, der die vollständige Kontrolle überWindowManager.LayoutParams
-Flags ermöglicht. (Ibb33e, b/312485503) - Einführung von
DelegatableNode.requireLayoutCoordinates()
als Möglichkeit, die aktuelleLayoutCoordinates
einesModifier.Node
abzurufen, ohneonPlaced
überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Ia8657) - Einführung von
DelegatableNode.currentLayoutCoordinates
als Möglichkeit, die aktuelleLayoutCoordinates
einesModifier.Node
abzurufen, ohneonPlaced
überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Iaebaa) 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 Binärkompatibilitätsproblem mit
SemanticsPropertyReceiver.performImeAction
wurde behoben. (I65865, b/322269946) - Der
PopupProperties
-Konstruktor, der einenusePlatformDefaultWidth
-Parameter annimmt, 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 SemantikeigenschaftisOpaque
. (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 Korrektur kann bei Problemen jederzeit deaktiviert werden, indem SieVelocityTrackerAddPointsFix
auf „false“ (falsch) setzen. (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
wird 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 ist. 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
wird 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
wird 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 die Einheitlichkeit vonmaximumFlingVelocity
zu verdeutlichen. (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. Dieses Lambda gibt eine gültigeDragAndDropTarget
zurück, wenn Sie an einer Drag-and-drop-Sitzung interessiert sind. Andere Lambdas zur Verarbeitung von Drag-Ereignissen wurden durch diese 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. Bei den restlichen Test-APIs werden deaktivierte Knoten standardmäßig herausgefiltert. (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 datenklassenbasierten Instanzen, um diese Slots zu erstellen. Dies ist eine gravierende Änderung. In der Demo und im Beispielcode finden Sie Beispiele zur Verwendung der neuen API. (Ia8943)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 Ereignis vom Typ „Runter“ 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 Microbenchmarks ohne diese 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) - Einführung eines speziellen
Unspecified
-Werts für die FelderTextAlign
,TextDirection
,Hyphens
undLineBreak
desParagraphTextStyle
als Ersatz fürnull
. Da es sich bei diesen Klassen um Inline-Klassen handelt, vermeiden wir durch das Ersetzen von „nullable“ durch „unspecified“ die Boxierung von primitiven Typen. 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 coroutines zur Cacheverwaltung. (Ie8dd9)AndroidViewBinding
entfernt jetzt synchronFragment
-Instanzen, die durch das Einfügen einesFragmentContainerView
in Ihr Layout als Teil desonRelease
vergrößert wurden. Dazu wirdcommitNow
(anstelle der bisher verwendetencommit
) verwendet. So werden Probleme mit der Methode von Live Edit behoben, bei der die Komposition bei Änderungen ersetzt wurde. (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, um Zuweisungen zu vermeiden. (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 Parsing 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
zur Definition vonPreviewScreenSizes
hinzufügen (Ib61d3)
Verhaltensänderungen
- In Compose wird jetzt eine nicht lineare Schriftskalierung verwendet, um die Lesbarkeit und Barrierefreiheit zu verbessern. Wenn die Schriftgröße in den Systemeinstellungen über 100% liegt, wird kleiner Text normal vergrößert, bereits großer Text jedoch nur geringfügig. Außerdem werden in SP definierte Zeilenhöhen automatisch angepasst, damit sie proportional zur beabsichtigten Höhe im Maßstab 100% bleiben. Weitere Informationen finden Sie in den Best Practices für die Schriftgröße. (I11518)
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 Geschwindigkeit von Wischaktionen in Ansichtskomponenten wie
ScrollView
undRecyclerView
ist aufViewConfiguration.ScaledMaximumFlingVelocity
begrenzt. Compose enthält jetzt eine eigene Version vonmaximumFlingVelocity
, die jetzt aufDraggable
angewendet wird. (Ibf974) - 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
wird 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 Komposition kann durch Aufrufen vonsetContent
wieder aktiviert werden. (Ib7f31) ReusableComposition
-Benutzeroberfläche zum Verwalten des Lebenszyklus und zur Wiederverwendung von Unterkompositionen hinzufügen (I812d1, b/252846775)Modifier.focusGroup
wurde zu stabilen APIs hochgestuft. (I7ffa3)- androidx-Anmerkungen wurden verschiedenen Grafik-APIs 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, in der gültige Wear-Geräte aufgeführt werden, 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, in denen die Tastatur angezeigt und der Text bearbeitet werden kann, wenn
readOnly
= „wahr“ ist, wurden korrigiert. Außerdem wurde behoben, dass die Tastatur nicht angezeigt wurde, wennreadOnly
während der Fokussierung von „wahr“ zu „falsch“ geändert wurde. (I34a19, b/246909589) - Die Anwendung globaler Behauptungen in UI-Tests wurde erweitert. (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 Dienstsuchschnittstelle hinzugefügt, die von Implementatoren von Zusammensetzungen implementiert werden kann. Sie ermöglicht eine Implementierung von Zusammensetzungen, die Dienstsuchanfragen an eine andere Zusammensetzung 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 keine experimentellen Funktionen mehr.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 so lange verschoben, bis die Ansicht angehängt ist, anstatt ausgeführt zu werden, wenn die Komposition angewendet wird, in der dieAndroidView
eingeführt wird. 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
wird 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 Vorschaudurchlauf können Kinder vonLazyList
unabhängig von der Realität animiert werden, die im Vorschaudurchlauf zu sehen ist.
Verhaltensänderung: „includeFontPadding“ ist in Compose jetzt standardmäßig auf „false“ gesetzt.
includeFontPadding
ist jetzt standardmäßig in der compose-Funktion 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
)
/* … */
)
)
Sie können includeFontPadding
für Ihren gesamten Text aktivieren, indem Sie Ihre Material-Stile konfigurieren. 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
- Unterstützung von
InputConnection#requestCursorUpdates
(I0c69b) FocusRequester.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 Speicherzuweisungen. (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 Begrenzungsrahmen für Zeichen 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)- Unterstützung für die Auswahl per Maus hinzugefügt. Bei der Auswahl per Berührung wird die Auswahl um ein Wort erweitert und um ein Zeichen verkleinert. (Ic0c6c, b/180639271)
- Bei
Paragraph
-Methoden, die bei nicht gültigen Offset-Werten bisherAssertionError
zurückgegeben haben, wird jetzt wie beiMultiParagraph
IllegalArgumentException
zurückgegeben. (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 koreanischer Eingaben manchmal fälschlicherweise vorherige Befehle angewendet, was zu verlorenen Zeichen geführt hat.
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
- Problemumgehung für Abstürze beim Zugriff auf die API für die Bedienungshilfen-Scrollfunktion über den Hintergrund-Thread hinzugefügt
- 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 der Text bearbeitet werden kann, wenn
readOnly
= „wahr“ ist, wurden korrigiert. Außerdem wurde behoben, dass die Tastatur nicht angezeigt wurde, wennreadOnly
während der Fokussierung von „wahr“ zu „falsch“ geändert wurde. (I34a19, b/246909589)
Version 1.5.0
9. August 2023
androidx.compose.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
wird veröffentlicht. Version 1.5.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Ein Absturz, der beim Einfügen von
SubcomposeLayout
inmovableContentOf()
auftrat, wurde behoben.
Version 1.5.0-beta03
28. Juni 2023
androidx.compose.ui:ui-*:1.5.0-beta03
wird veröffentlicht. Version 1.5.0-beta03 enthält diese Commits.
Fehlerkorrekturen
- Die Schnittstelle „FocusTargetModifierNode“ wurde hinzugefügt, mit der ein benutzerdefiniertes FocusTarget 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
- Die
asComposePaint
API wurde hinzugefügt, umtoComposePaint
zu ersetzen, da das zurückgegebene Objekt die ursprünglicheandroid.graphics.Paint
umschließt (I22b4c)
Version 1.5.0-beta01
24. Mai 2023
androidx.compose.ui:ui-*:1.5.0-beta01
wird veröffentlicht. Version 1.5.0-beta01 enthält diese Commits.
API-Änderungen
- Zuweisungen bei der Neuzusammensetzung, Farbanimationen und
AndroidComposeView
(Ib2bfa) entfernt - Es wird die Hilfsfunktion
CacheDrawModifierNode()
hinzugefügt, um die Delegierung zu ermöglichen (Icf8f9) - Die Property
isLookingAhead
ist jetzt unterMeasureScope
verfügbar. Damit können Sie sich die Ergebnisse der Vorschau ansehen und bei Bedarf den Hauptausweis beeinflussen. (Ibf4c3) - Neue semantische Eigenschaft
traversalIndex
, eine Gleitkommazahl, mit der Knoten bei derTalkBack
-Durchquerung neu angeordnet werden (niedrigere Werte kommen zuerst). (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- und Drehtransformationen anzuwenden. (I23434, b/233772232) - Die Methode von
ColorProducer
heißtproduce
. (I78bde) toFrameworkColorSpace
intoAndroidColorSpace
(I4f547) umbenennen- 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 hat jedoch gezeigt, dass Entwickler diese Konfigurationsoption benötigen. Daher wird die Einstellung des Felds aufgehoben (I98e96, b/277703184).- Öffentliche
TextRange.constrain
-Methode hinzugefügt. (I97912) UrlAnnotation
s inAnnotatedString
s können jetzt über Bedienungshilfen wieTalkBack
geöffnet werden. (If4d82, b/253292081)- Die semantische Aktion
InsertTextAtCursor
wurde für Textfelder hinzugefügt. (I11ed5) - 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ügen Sie
BasicText
die Parameterbrush
undalpha
hinzu, um den Textpinsel effizient zu animieren oder festzulegen. - Definition von boxfreien Lambda-Typen für Float, Double, Long, Int und Short in :ui:ui-unit (I6f18d, b/246961787)
Fehlerkorrekturen
- Mehrere Zuordnungen beim Tracking der Mauszeigergeschwindigkeit entfernt (I26bae)
- Weniger Zuweisungen bei der Layout- und Zeiger-Eingabeverwaltung (I5333a)
- Optimierung der Vektorspeichernutzung und des Renderings erster Frames (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
wird 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 Rückspulvorgänge zu unterstützen. So können häufige Pfadmanipulationen schneller wiederverwendet werden. (I7b797)
- 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 hat jedoch gezeigt, dass Entwickler diese Konfigurationsoption benötigen. Daher wird die Einstellung des Felds aufgehoben (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 angehaltenen Aktivitäten verknüpft sind, bei Datenänderungen weiterhin neu zusammengesetzt werden, aber die Animationen oder andere Aufrufer vonwithFrameNanos
blockiert werden. (Id9e7f, b/240975572) - Ändert
motionEventSpy
in „stabil“. (Ic5ec4, b/261560988) - Öffentliche
TextRange.constrain
-Methode hinzugefügt. (I97912) PlatformTextStyle.includeFontPadding
ist 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
wird 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 semantische Aktion
InsertTextAtCursor
wurde für Textfelder hinzugefügt. (I11ed5) - Bei textbezogenen Testaktionen (z.B.
performTextInput
) wird der Fokus jetzt direkt über die semantische Aktion angefordert, anstatt auf das Feld zu klicken. (I6ed05)
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 Maßregelrichtlinie 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
- Ein Problem wurde behoben, bei dem
AndroidView
bei Verwendung mit bestimmten Modifikatoren möglicherweise nicht richtig 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 bei 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).
- Ein Fehler im Fokussystem wurde behoben, der beim Lesen von
focusProperties
zu einem Absturz führte. (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 anhand 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) - 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) - Es wurde eine experimentelle
TextMotion
zuTextStyle
hinzugefügt, um Text entweder alsStatic(default)
oder als animiert zu definieren. Verwenden SieTextMotion.Animated
, wenn Text durch eine Animation skaliert, verschoben oder gedreht werden soll. (I24dd7)
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. So können Ansichtsinstanzen wiederverwendet werden, wenn ihr Knoten in der Komposition 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
- Die
SetText
-Semantikaktion vonBasicTextField
aktualisiert den Textbuffer jetzt mit demselben Codepfad wie IME-Aktualisierungen und die Testfunktionen (z.B.performTextReplacement
). - Für die Texttestfunktionen
performTextClearance
,performTextReplacement
undperformTextSelection
wird jetztSemanticsActions
verwendet. (I0807d, b/269633168, b/269624358)
Version 1.4.0-beta02
22. Februar 2023
androidx.compose.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 stattdessen direkt vonModifierNodeElement
aus. (I2256b) - Es wurde ein neuer
Modifier.Node.onReset()
-Callback hinzugefügt, mit dem Sie den lokalen Status zurücksetzen können, um den Fall zu behandeln, in demLayout
wiederverwendet wird (z. B. als Element vonLazyColumn
).FocusTargetModifierNode
wurde korrigiert, damit der Fokusstatus richtig zurückgesetzt wird. (I65495, b/265201972) - Den Methoden
DrawScope.drawText
,Paragraph.paint
undMultiParagraph.paint
wurde der ParameterBlendMode
hinzugefügt, um beim Zeichnen von Text auf Canvas verschiedene Überblendungsalgorithmen zu unterstützen. (I57508)
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()
umbenannt (I4667a)waitUntilNodeCount
,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
- Es wurden neue experimentelle Überladungen für die Funktionen
runComposeUiTest
undcreate*ComposeRule
eingeführt, dieCoroutineContext
-Parameter akzeptieren. Der Kontext wird für die Testkomposition und alleLaunchedEffect
- undrememberCoroutineScope()
-Aufrufe in der Komposition verwendet. (I10614, b/265177763) - Neue API zum Erfassen der Geschwindigkeit in einer Dimension hinzufügen (If5a82)
FocusRequester
ist jetzt als@Stable
gekennzeichnet. (I580ee)- Entfernen Sie eine experimentelle Anmerkung aus dem
DialogProperties
-Konstruktor, der einenusePlatformDefaultWidth
-Parameter annimmt. (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 sind jetzt stabil. (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 anhand 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) - Es wurde eine experimentelle
TextMotion
zuTextStyle
hinzugefügt, um Text entweder alsStatic(default)
oder als animiert zu definieren. Verwenden SieTextMotion.Animated
, wenn Text durch eine Animation skaliert, verschoben oder gedreht werden soll. (I24dd7)
API-Änderungen
- Das Argument
maxSize: IntSize
indrawText
wurde durchsize: Size
ersetzt, um mit anderenDrawScope
-Funktionen übereinzustimmen.size
ist standardmäßig aufSize.Unspecified
festgelegt. Das bisherige Standardverhalten sollte dadurch nicht geändert werden. (Icd27d) - Der nicht mehr unterstützte 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 Schriftartdeskriptoren 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
. Diese sind erst ab API 29 verfügbar. (Ida4ab) - Die Ansicht des
rememberNestedScrollConnection
-Parameters wurde von der Stammansicht in die Hostansicht geändert. (Ia5200) - Eine Modifier API zum Abfragen von Informationen zum Scrollen von Vorfahren hinzugefügt. (I2ba9d, b/203141462)
- Wird in
Clickable
verwendet, um die Interaktionen mit dem Drücken richtig zu verzögern, wenn Touch-Gesten zu Scrollereignissen werden könnten. - Bei Verwendung in einem
Scrollable ViewGroup
wurden beiClickables
keine korrekten Verzögerungen für Wellen erzeugt. Dieses Problem wurde behoben. - In Ausklappern und Seiten wurde die Verzögerung von Betätigungen angepasst, damit Touch-Gesten nicht zu Scrollereignissen führen.
CompositingStrategy.Always
inOffscreen
umbenannt, um anzugeben, dass diegraphicsLayer
immer in einen Zwischenspeicher gerendert wird (I47dc1)- Layoutüberlastung bei 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 zur Anwendung von Snapshots werden jetzt gesendet, nachdem die Änderungen auf der
Recomposer
angewendet wurden. (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 verwendet werden. (I169c5)
Abhängigkeitsupdates
- Compose UI und Compose Material sind jetzt von Lifecycle 2.5.1 abhängig. (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) - Fügen Sie
ToolingState
hinzu, damit Tools interne Status von Composable ändern können (Ie6614) - Tools wurden überarbeitet, um die Unterstützung für neu hinzugefügte Animationen zu verbessern (I8677b)
- Dem Material- und Material3-Text wurden die Parameter
minLines
,TextField
undOutlinedTextField
hinzugefügt, mit denen die minimale Hö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 desAwaitPointerEventScope
ausgeführt, sodass Ereignisse zwischen den Iterationen nicht verloren gehen können. forEachGesture()
wurde zugunsten vonawaitEachGesture()
eingestellt, da beiforEachGesture()
Ereignisse zwischen den Touch-Gesten verloren gehen können. (Iffc3f, b/251260206)- 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 als experimentelles Attribut zuTextStyle
undSpanStyle
hinzugefügt, um umrandeten Text zeichnen zu können. (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
- Aktualisierung auf Profobuf 3.21.8, wodurch eine Sicherheitswarnung in
protobuf-javalite:3.19.4
(CVE-2022-3171) vermieden wird (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 maximal unterstützte Erhöhung in Dialogen und Pop-ups wurde auf 8 dp reduziert. Dies führt zu einer Verhaltensänderung bei einigen benutzerdefinierten Designsystemen. Begründung in den Release Notes von beta01
- Viele kleinere, nicht bahnbrechende 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) - Behobener
LazyColumn
-Speicherleck:onModifierLocalsUpdated
wurde nicht mit dem Standardwert aufgerufen, wenn Modifikatoren wiederverwendet wurden (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
durchconstraints: Constraints
ersetzt, um Mindestbreite-Einschränkungen 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) - Sie können jetzt
FocusRequester.Cancel
verwenden, um einen Fokuswechsel abzubrechen.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)
Zusammenfassung der Änderungen
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.
Wir empfehlen Ihnen, mit Vorsicht auf diese Version umzustellen. 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 Erhöhung 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 betrifft sowohl Materialdialoge als auch benutzerdefinierte UI-Dialoge und Pop-ups. 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 ein eigenes Dialogfeld oder Pop-up mit der gewünschten Höhe erstellen. 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
- Behoben wurde ein Problem, 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) - Die Schriftartenkonstruktoren wurden zurück in die ursprüngliche Kotlin-Datei verschoben, um die Binärkompatibilität beizubehalten. 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 parsen 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 hinzugefügt, um die
LayoutCoordinates
in derPlacementScope
abzurufen. 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 Semantics-ID stattdessen inLayoutInfo.semanticsId
verschoben. (Iac808, b/203559524)- Für Ressourcenschriften können jetzt Schriftvarianteneinstellungen festgelegt werden (API 26 und höher). (I900dd, b/143703328)
- Unterstützung für variable Schriftarten in
DeviceFontFamilyNameFont
(Ic1279, b/143703328) - 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 sich diese Änderung auf Sie auswirkt, 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
in SDK 33 und höher 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 Komposition ganz einfach zu erstellen und zu merken. (I8d66e)Rect
,RoundRect
undMutableRect
unterstützen jetzt die Kotlin-in
-Syntax für den Aufruf der Funktioncontains
. (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 wurdeEditCommand
hinzugefügt, um Probleme bei der Textbearbeitung 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) - Fügen Sie
mapTree
zuSlotTree.kt
hinzu. 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) - Behebung des durch
AnnotatedString.toUpperCase
verursachten Null-Pointer-Fehlers bei vorhandenen Anmerkungen. (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
- Verbessertes Verhalten bei Verwendung einer physischen Tastatur oder TV-Fernbedienung
- Das fokusgesteuerte Scrollen von Lazy-Listen funktioniert jetzt mit der neuen
Neue APIs für:
- Fenstereinsätze
- Grundlegende Primitive für gestengesteuerte, endlose und Layout-Animationen
GraphicsLayer
-Funktionen, einschließlichRenderEffect
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-rc02.
Version 1.2.0-rc02
22. Juni 2022
androidx.compose.ui:ui-*:1.2.0-rc02
wird 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 Compose-Bibliotheken werden jetzt mit den Standardschnittstellenmethoden von JDK 8 erstellt (I5bcf1)
KeyInjectionScope
bietet jetzt höhere Funktionen, mit denen Tastendrücke eingefügt werden können, während andere Tasten gedrückt oder aktiviert sind. 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 Maus- und Tastatur-Injectionsmuster, z. B. das Klicken auf eine Maustaste, während eine Metataste gedrückt wird. (I4c8da, b/229831515)- Es wurde eine experimentelle Unterstützung für das Einschleusen von wichtigen Ereignissen hinzugefügt. Verwenden Sie
performKeyInput
, um Tastenereignisse zu senden, oder senden Sie sie während einer multimodalen Eingabegeste mitperformMultiModalInput
über diekey
-Property vonMultiModalInjectionScope
. Eine Dokumentation der API 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) - Die Suche nach Bedienungshilfen-Strings löst nicht das Laden der Schriftart aus. 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 die 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
- Wiederverwendung von Funktionen in anderen Vorabversionen (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 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. Wenn Sie eine Zielanmerkung auf Dateiebene verwenden, geht der Compiler davon aus, dass alle kombinierbaren Funktionen in der Datei auf den zugehörigen Anwender ausgerichtet sind. 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
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 wird damit die Ausrichtung der Linie im durchTextStyle(lineHeight)
bereitgestellten Bereich definiert.So ist es beispielsweise möglich, ein Verhalten zu erzielen, das dem über
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
definierten Verhalten von Preisvergleichsportalen ähnelt.trimFirstLineTop
- undtrimLastLineBottom
-Konfigurationen funktionieren nur dann richtig, wennincludeFontPadding
auf „falsch“ gesetzt ist. (I97332, b/181155707)Die Funktionen
PlatformParagraphStyle.lerp
undPlatformSpanStyle.lerp
wurden in Funktionen der obersten Ebene geändert (I9a268)
Fehlerkorrekturen
PointerInputChange::copy
In der Dokumentation wird jetzt korrekt angegeben, dass es sich um eine flache 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 bei der Zeilenhöhe (aosp/2058653) besser integrieren undTextField
-Ausbrüche 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, damit sie in Zukunft weiterentwickelt und für eine bessere Internationalisierung genutzt werden können. (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 Interoperabilität für verschachtelte Scrollfunktionen zwischen „Compose“ und „View“ in der Richtung „Compose“ > „View“. Das bedeutet, dass ein übergeordnetes Element in Compose verschachtelte Scroll-Deltas von einer verschachtelten Scrollansicht 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 in API 21–28 bisher nur die Gewichte 400 und 700 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)- Aktivieren Sie die verschachtelte Scroll-Interoperabilität zwischen View und Compose für zusammenarbeitende View-Klassen. Das bedeutet, dass Compose jetzt Scroll-Deltas an ein (mitarbeitendes) Ansichtsübergeordnetes Element senden kann. (I5d1ac, b/174348612)
FontFamily.Resolver
wurde aktualisiert, um die systemweite Bedienungshilfe „Fettdruck“ 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 optional systeminstallierte Schriftarten in Schriftart-Fallback-Ketten abzurufen. (I30468, b/219754572) - Unter „TextStyle/ParagraphStyle“ wurde eine vorübergehende Konfiguration für die Kompatibilität mit
includeFontPadding
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) - Fügen Sie die
GoogleFont.Provider.isAvailableOnDevice
-Erweiterung hinzu, um Hilfe bei der Fehlerbehebung zu erhalten. (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 nachgeordneten Parametern von
Modifier.graphicsLayer
aktualisiert, um die API-Kompatibilität zu verbessern (I3f864, b/160665122)Standardimplementierungen für Schatten-/Umgebungsfarbe in
GraphicsLayerScope
hinzugefügt, um API-Änderungen ohne Unterbrechungen zu ermöglichenRSB-Terminen eine Uhrzeit 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 lässt sich die Zuständigkeit der Modifikatoren besser trennen. (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önnen verwendet werden, um Composable-Methoden oder andere Annotationsklassen zu annotieren, die dann als indirekt mit der angegebenen @Preview-Anmerkung versehen gelten. (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 beim Erstellen von Animationen unterstützt. (I5a4fc, b/161675988)
- Lokale
BeyondBoundsLayout
-Anpassung hinzugefügt (If8b51, b/184670295) - Text: „includeFontPadding“ ist jetzt standardmäßig deaktiviert. Die Probleme mit dem Zuschneiden aufgrund von
includeFontPadding=false
wurden behoben und bei hohen Scripts sollte es nicht mehr zu Zuschneidungen kommen. (I31c84, b/171394808)
Fehlerkorrekturen
ComposeContentTestRule.setContent
löst jetzt eineIllegalStateException
aus, wenn Sie versuchen, Inhalte festzulegen, obwohl bereits Inhalte 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)
- Verbesserung der RSB-Scroll-Beispiele. (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 bei der Kompilierung feststellen, wann eine zusammensetzbare Funktion auf einen Anwender angewendet wird, für den sie nicht vorgesehen ist.In den meisten Fällen können die Anmerkungen vom Compose-Compiler-Plug-in abgeleitet werden. Die direkte Verwendung dieser Anmerkungen sollte daher selten vorkommen. Dazu gehören das Erstellen und Verwenden benutzerdefinierter Applier, abstrakter zusammensetzbarer Funktionen (z. B. Schnittstellenmethoden), Felder oder globaler Variablen, die zusammensetzbare Lambdas sind (lokale Variablen und Parameter werden abgeleitet), oder die Verwendung von
ComposeNode
oder einer ähnlichen zusammensetzbaren Funktion.Bei benutzerdefinierten Anwendern müssen die zusammensetzbaren Funktionen, die
ComposeNode
oderReusableComposeNode
aufrufen, 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 mitComposableTargetMarker
gekennzeichnete zusammensetzbare Anmerkung entspricht einerComposbleTarget
mit dem voll qualifizierten Namen der Attributklasse als Anwenderparameter. Ein Beispiel für die Verwendung vonComposableTargetMarker
finden Sie unteranroidx.compose.ui.UiComposable
. (I38f11)Font(resId, ...)
berücksichtigt jetzt die „loadingStrategy“ der stabilen 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
- Die bereitgestellten
FontFamily.Resolver
werden an Unterkompositionen wie Popup übergeben. - Die bereitgestellten
Font.ResourceLoader
werden an Unterkompositionen wie Popup ü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, das eine kombinierbare Lambda-Funktion in eine Lambda-Funktion umwandelt, 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 Status vorübergehend beibehalten. Wenn ein neuer Aufruf an die Lambda-Funktion in die Zusammensetzung eintritt, werden der Status 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 endgültig entfernt. (Ib4850)FontFamilyResolver
ist jetzt überLocalFontFamilyResolver.current
verfügbarEs wurden
createFontFamilyResolver(context)
undcreateFontFamilyResolver(context, coroutineScope)
hinzugefügt, um neue Schriftfamilien-Resolver außerhalb der Verwendung in Compose zu erstellen.Für „Absatz“ und „Mehrere Absätze“ wird jetzt
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
enthält jetzt den für dieses Layout verwendeten Resolver.TextLayoutResult.layoutInput.resourceLoader
wird nicht mehr verwendet und ist daher eingestellt. (Id5a45, b/174162090)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
lässt sich der globale coroutine-Kontext festlegen, der für das Laden asynchroner Schriftarten verwendet wird. (I87fe8, b/174162090)AndroidFont
wurde hinzugefügt, eine neue Low-Level-API für die Bereitstellung neuer Arten von Schriftressourcenbeschreibungen unter Android. Beispielsweise können Sie Schriftarten aus einem app-spezifischen Backend laden, optional vorinstallierte Schriftarten auf dem Gerät suchen oder eine Schriftart aus einer Ressource laden, die nicht von den aktuellen Schriftartenfabriken bereitgestellt wird.Die
Font.ResourceLoaded
API wurde um die Unterstützung für optionales und asynchrones Laden von Schriftarten erweitert. Es wird nicht empfohlen, dass Anwendungsentwickler diese API direkt verwenden. Informationen zum Hinzufügen neuer Schriftarten finden Sie 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 Konstruktor von
Typeface(FontFamily)
wird nicht mehr unterstützt. Bisher wurde diese Funktion zum Vorladen von Schriftarten verwendet, was bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern kann. Bei herunterladbaren Schriftarten kann dieser Aufruf 10 Sekunden lang blockiert werden. Verwenden Sie stattdessenFontFamilyResolver.preload
.fontResource(FontFamily): Typeface
wurde eingestellt. Bisher wurde diese Funktion verwendet, um Schriftarten vorab zu laden. Das kann bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern. Verwenden Sie stattdessenFontFamilyResolver.preload
(If8e7c, b/174162090).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)AndroidComposeTestRule.AndroidComposeStatement
wurde eingestellt. Diese Funktion sollte nicht in der öffentlichen API enthalten sein und hat Ihnen ohnehin nichts gebracht. (Ibc46b)Intern generierte kt-Klasse wurde umbenannt (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 für
FontFamily.Resolver
die lokale Komposition verwendet - Desktop-
FontLoader
wird 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 umgekehrt. 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 zur Liste der Geräte für die Vorabversion hinzugefügt (I93232)
Abhängigkeitsupdates
- Jetzt hängt es von Kotlin
1.6.10
ab.
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, der durch den Inhalt der Zwischenablage beim Lesen aus der Zwischenablage auf Android-Geräten verursacht wurde, wurde behoben. (I06020, b/197769306)
- RTL in
LazyVerticalGrid
korrigiert (aosp/1931080, b/207510535)
Version 1.1.0
9. Februar 2022
androidx.compose.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 Touch-Zielbereichen
- Im Vergleich zu Compose 1.0 wird der Layoutbereich von Materialkomponenten erweitert, um die Richtlinien für Bedienungshilfen von Material Design für die Größe von Touch-Zielelementen einzuhalten. So wird beispielsweise der Berührungszielbereich einer Schaltfläche auf eine Mindestgröße von 48 x 48 dp erweitert, auch wenn Sie die Größe der Schaltfläche kleiner festlegen. Dadurch wird das Verhalten von Compose-Material mit dem von Material Design-Komponenten abgeglichen, was für ein einheitliches Verhalten sorgt, wenn Sie Ansichten und Compose kombinieren. Durch diese Änderung werden auch die Mindestanforderungen an die Barrierefreiheit von Touch-Zielen erfüllt, wenn Sie Ihre Benutzeroberfläche mit Compose Material-Komponenten erstellen.
- Stabile Unterstützung für den Navigationsstreifen
- Eine Reihe zuvor experimenteller APIs wird in stabile APIs überführt
- Unterstützung für neuere Kotlin-Versionen
Version 1.1.0-rc03
26. Januar 2022
androidx.compose.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
-Überladungen hinzu, die Schlüssel zum Vergleichen auf Gleichheit akzeptieren und für die Optimierungen übersprungen werden können. (Ice799, b/205851704) ComposeNotIdleException
erstreckt sich jetzt vonException
statt 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 Eingabemethode ändert. (I25f2e)
Version 1.1.0-beta03
17. November 2021
androidx.compose.ui:ui-*:1.1.0-beta03
wird veröffentlicht. Version 1.1.0-beta03 enthält diese Commits.
API-Änderungen
- Der neue Modifikator „Modifier.onPlaced“ wurde hinzugefügt, um die Platzierungsänderung zu beobachten. 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 einschleusen 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
- Modifikator.pointerHoverIcon (I95f01) 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 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)
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). - Es wurde eine überlastungsfreie Überladung für das Layout hinzugefügt, die die Effizienz verbessert (Ib0d9a)
InternalCompilerApi
wurde aus Composer-Methoden entfernt, die modulübergreifend aufgerufen werden müssen (I1aa0b)SemanticsNodeInteraction.performSemanticsAction
gibt jetzt denSemanticsNodeInteraction
zurück, über den 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 das Zeitlimit für das lange Drücken erhalten. (I76ca6)viewConfiguration: ViewConfiguration
wurde zuInjectionScope
hinzugefügt, damit die Eingabeinjektion in Tests anhand von Faktoren wie dem Zeitlimit für das lange Drücken oder dem Touch-Slop angepasst werden kann.- Die Standarddauer für das lange Drücken und das 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)
- „dismissOnOutsideClick“ wurde zu „PopupProperties“ hinzugefügt und ersetzt „dismissOnClickOutside“, das eingestellt wurde. Die neue Property empfängt die Klickposition und die Ankergrenzen, sodass Sie genauer steuern können, ob onDismissRequest aufgerufen werden soll oder nicht. Das kann beispielsweise nützlich sein, um das Schließen des Ankers bei Berührungen des Ankers zu verhindern.
- „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 der Lambda-Funktion 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 eingestellt und durchRecomposer.currentState
ersetzt, um den 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 löschen oder den Bereich entsorgen 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. Das kann sich auf die Ergebnisse von Tests auswirken, bei denen Eingabegesten wie ein bestimmter Wisch 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)
- PointerEventChange enthält jetzt experimentelle bisherige Zeiger. (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. Es werden jetzt mehr Eingabevariablen akzeptiert und es werden Änderungen an der Eingabe vorgeschlagen, wenn ein Wisch nicht 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 einPointerEventType
, 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)
performGesture
undGestureScope
wurden eingestellt und durchperformTouchInput
undTouchInjectionScope
ersetzt. (Ia5f3f, b/190493367)touchBoundsInRoot
wurdeSemanticsNode
hinzugefügt. Dieser enthält die Mindestgröße des Berührungszielbereichs, damit Entwickler sicherstellen können, dass Berührungsziele die Mindestanforderungen an die Barrierefreiheit erfüllen. (I2e14b, b/197751214)- 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. Bei der neuen Implementierung wird das Ereignis „move“ weiterhin gesendet, aber die Ereigniszeit wird in diesem speziellen Szenario nicht vorverlegt. - Wenn ein „Hoch“-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 „Hoch“-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 in
TouchInjectionScope
eine neue MethodecurrentPosition(pointerId: Int)
eingeführt, um die aktuelle Position des angegebenen 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
wird 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 der Desktop-Ansicht von Google Compose hinzugefügt 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 Weichzeichnereffekte 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 Shape-Parameter 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 Zeit für eingeschleuste Ereignisse in
performGesture
wird auf die aktuelle Zeit 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
wird 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 zur Unterstützung des Zeichnens eines beliebigen Pinsels innerhalb eines Painters, ähnlich wie bei ColorPainter
Die Brush API wurde um einen Parameter für die intrinsische Größe ergänzt, 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. Das ist nützlich für Pixel-Art, die beim Skalieren für pixelbasierte Kunst gepixelt werden soll. BitmapPainter und Bild-Composable wurden aktualisiert, sodass auch ein optionaler FilterQuality-Parameter verwendet wird (Ie4fb0, b/180311607)
Die Methode
GestureScope.advanceEventTime
wurde hinzugefügt, um den Zeitpunkt von Ereignissen bei einer Geste besser steuern zu können (Ibf3e2)
Fehlerkorrekturen
- Damit die Verknüpfung von Draw-Modifizierern besser unterstützt wird, 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. Wenn Modifier.paint nach dem Zeichnen des Inhalts des angegebenen Malers drawContent aufruft, ist das Verhalten des Modifier-Musters konsistenter. (Ibb2a7, b/178201337, b/186213275) - Dialoge folgen jetzt dem Größenverhalten der Plattform. 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
wird 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
wird 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.
Abhängigkeitsupdates
- Aktualisiert, um von Kotlin
1.5.30
abhängig zu sein
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.
Abhängigkeitsupdates
- 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 findest du im offiziellen Compose-Release-Blog.
Bekannte Probleme
Wenn Sie Android Studio Bumblebee Canary 4 oder AGP
7.1.0-alpha04
/7.1.0-alpha05
verwenden, kann der folgende Absturz auftreten:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Erhöhen Sie in der
build.gradle
-Datei vorübergehend die minSdkVersion auf mindestens 24, um das Problem zu beheben. Dieses Problem wird in der nächsten Version von Android Studio Bumblebee und AGP7.1
behoben. (b/194289155)
Version 1.0.0-rc02
14. Juli 2021
androidx.compose.ui:ui-*:1.0.0-rc02
wird veröffentlicht. Version 1.0.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Dialoge folgen jetzt dem Größenverhalten der Plattform. 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
wurden entfernt (I227d7, b/170154986, b/186567354, b/168510304) - Canvas unterstützt jetzt den Parameter „contentDescription“ für 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)
Verhaltensänderungen
- 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 zuandroidx.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 eine 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
- Wichtige Konstanten sind derzeit @ExperimentalComposeUiApi. Der Code, der die Konstanten verwendet, kann private Konstanten vor der Stabilisierung deklarieren. (Ia5d48)
- Compose-Tests können jetzt mit Robolectric ausgeführt werden. Bisher wurden folgende Einschränkungen festgestellt:
- 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 wurde keine Schriftart geladen, sodass Text falsch gemessen wird. 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. Er entspricht daher im GrundeComposeTestRule.mainClock.advanceTimeUntil {}
. In Zukunft werden voraussichtlich weitere Einschränkungen erkannt. (I284fa)
- Da es keine native Bitmap gibt, führt
Profilregeln hinzugefügt
In dieser Version werden den folgenden Compose-Modulen (I14ed6) Profilregeln hinzugefügt:
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Was sind Profilregeln?
Profilregeln für eine Bibliothek werden in einer Textdatei
baseline-prof.txt
im Verzeichnissrc/main
oder einem ähnlichen Verzeichnis angegeben. Die Datei enthält eine Regel pro Zeile. Eine Regel ist in diesem Fall ein Muster, das mit Methoden oder Klassen in der Bibliothek abgeglichen wird. Die Syntax dieser Regeln ist ein Superset des visuell lesbaren ART-Profilformats, das bei der Verwendung vonadb shell profman --dump-classes-and-methods ...
verwendet wird. Diese Regeln können auf eine von zwei Arten formuliert werden, um entweder auf Methoden oder Klassen ausgerichtet zu sein.Eine Methodenregel hat das folgende Muster:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Eine Klassenregel hat das folgende Muster:
<CLASS_DESCRIPTOR>
Hier ist
<FLAGS>
eines oder mehrere der ZeichenH
,S
undP
, um anzugeben, ob diese Methode als „Hot“, „Startup“ oder „Post Startup“ gekennzeichnet werden soll.<CLASS_DESCRIPTOR>
ist der Deskriptor für die Klasse, zu der die Zielmethode gehört. Die Klasseandroidx.compose.runtime.SlotTable
hätte beispielsweise den DeskriptorLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
ist die Signatur der Methode und enthält den Namen, die Parametertypen und die Rückgabetypen der Methode. Beispiel: Die Methodefun isPlaced(): Boolean
vonLayoutNode
hat die SignaturisPlaced()Z
.Diese Muster können Platzhalter (
**
,*
und?
) enthalten, damit eine einzelne Regel mehrere Methoden oder Klassen umfassen kann.
Welchen Zweck haben die Regeln?
Eine Methode mit dem Flag
H
ist eine „heiße“ Methode und sollte vorab kompiliert werden.Eine Methode mit dem Flag
S
wird beim Start aufgerufen und sollte vorab kompiliert werden, um die Kosten für die Kompilierung und Interpretation der Methode beim Start zu vermeiden.Eine Methode mit dem Flag
P
wird nach dem Start aufgerufen.Eine Klasse, die in dieser Datei vorhanden ist, wird beim Start verwendet und sollte im Heap vorab zugewiesen werden, um die Kosten für das Laden der Klasse zu vermeiden.
So funktioniert's
- Diese Regeln können in Bibliotheken definiert werden und werden in AAR-Artefakten verpackt. Wenn dann eine App erstellt wird, die diese Artefakte enthält, werden diese Regeln zusammengeführt und die zusammengeführten Regeln werden verwendet, um ein kompaktes binäres ART-Profil zu erstellen, das für die App spezifisch ist. ART kann dieses Profil dann nutzen, wenn die App auf Geräten installiert wird, um einen bestimmten Teil der Anwendung vorab zu kompilieren und so die Leistung der Anwendung zu verbessern, insbesondere beim ersten Ausführen. Hinweis: Dies hat keine Auswirkungen auf debuggbare Anwendungen.
Version 1.0.0-beta08
2. Juni 2021
androidx.compose.ui:ui-*:1.0.0-beta08
wird 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 Enum- in eine Inline-Klasse geändert (If5058)- Die Properties „ContentDescription“ und „Text-Semantik“ sind keine einzelnen Werte mehr, sondern Listen. So können sie zusammengeführt werden, anstatt zusammengefügt zu werden. Außerdem wurden bessere Test-APIs zur Nutzung dieser Änderungen bereitgestellt (Ica6bf, b/184825850).
Modifier.focusModifier()
wurde verworfen und durchModifier.focusTarget()
(I6c860) ersetzt.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 umgewandelt. (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)
- Jetzt werden die Positionsänderungen von
detectDragGesures
,detectVerticalGestures
unddetectHorizontalGestures
automatisch verarbeitet. Es ist nicht mehr erforderlich, in den onDrag-Callbacks change.consumePositionChange aufzurufen (I42fc4, b/185096350, b/187320697) - Ein Fehler bei Layout-Modifizierern, die Ausrichtungslinien bereitstellen, wurde behoben. Ein Fehler wurde behoben, durch den das übergeordnete Element nicht neu vermessen wurde, wenn sich die Ausrichtungslinien der untergeordneten Elemente änderten. (I4401f, b/174315652)
Modifier.onGloballyPositioned()
wurde geändert, sodass die Koordinaten dieses Modifiers in der Modifikatorkette und nicht die Layoutkoordinaten nach dem Anwenden aller Modifikatoren erfasst werden. Das bedeutet, dass jetzt die Reihenfolge der Modifikatoren darüber entscheidet, welche Koordinaten erfasst werden. (Ieb67d, b/177926591)
Version 1.0.0-beta07
18. Mai 2021
androidx.compose.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 die Einstellung 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 KeyEventType-Enum wurde durch eine Inline-Klasse ersetzt. (Id670a, b/187055290)
- Die
FocusDirection
-Enumeration wird durch eine Inline-Klasse ersetzt. (Ib6d03, b/187055290, b/184086802) - Es ist jetzt möglich, den Status „SubcomposeLayout“ zu hoisten. So können Sie die Inhalte vorab in eine erforderliche Slotting-ID zusammenstellen, wodurch die nächste Maßnahme schneller abgeschlossen wird. Wenn wir nämlich versuchen, die nächste Subcomposit mit der angegebenen Slotting-ID zu erstellen, ist keine Zusammenstellung mehr erforderlich. (I42580, b/184940225)
- Auswahl-Handle für Clips 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)- Die APIs „CollectionInfo“ und „CollectionItemInfo“ für Bedienungshilfen wurden hinzugefügt, mit denen Sammlungen und ihre Elemente für Bedienungshilfen gekennzeichnet werden können (Id54ef, b/180479017)
- Es wurde die Taste
SemanticsActions.ScrollToIndex
hinzugefügt, um in einer Liste mit indexierten Elementen zum Element mit einem bestimmten Index zu scrollen, und die TasteSemanticsProperties.IndexForKey
, um den Index eines Elements in einer Liste mit Schlüsselelementen abzurufen. Beide Aktionen werden von LazyList implementiert.- Es wurde
SemanticsNodeInteraction.performScrollToIndex
hinzugefügt, mit dem eine Liste zum angegebenen Index scrollt, undSemanticsNodeInteraction.performScrollToKey
, mit dem eine Liste zum Element mit dem angegebenen Schlüssel scrollt. (I4fe63, b/178483889, b/161584524)
- Es wurde
- „ownerViewId“ zu „GraphicLayerInfo“ hinzugefügt (I19f62)
- 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)- Unterstützung für das Speichern von AnnotatedString in
TextFieldValue.Saver
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
wird 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
-Benutzeroberfläche wird eingestellt. 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 kann nicht für APIs zum Erstellen von Text verwendet werden. Die Funktion ist jetzt veraltet 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 korrekt Fragmente, die überFragmentContainerView
aufgebläht wurden, wenn dieAndroidViewBinding
aus der Kompositionshierarchie 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)
- Optionale Parameter
startX
/endX
undstartY
/endY
wurden den FunktionenswipeUp
/swipeDown
/swipeLeft
/swipeRight
inGestureScope
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
LocalSoftwareKeyboardController
-Komposition API 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)
- Folgende
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)- Korrektur für fehlerhafte
rememberSaveable { mutableStateOf(0) }
-Zeichen bei Verwendung in einem Ziel von navigation-compose. (I1312b, b/180042685, b/180701630) - Neue lokale
LocalSoftwareKeyboardController
-Komposition API hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I658b6, b/168778053) - Seltene 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 für die Größenanpassung an intrinsische Werte 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.
- Verwenden Sie stattdessen
interactionSource = remember { MutableInteractionSource() }
, uminteractionState = remember { InteractionState() }
an Komponenten wieButton
undModifier.clickable()
zu übergeben. - Anstatt
Interaction.Pressed in interactionState
sollten Sie stattdessen die Erweiterungsfunktionen von InteractionSource verwenden, z. B. InteractionSource.collectIsPressedAsState(). - Bei komplexen Anwendungsfällen können Sie mit „InteractionSource.interactions“ den Stream der Interaktionen beobachten. Weitere Informationen finden Sie in der Dokumentation und in den Beispielen zu „InteractionSource“.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- 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)
- Für „Placeable“ ist jetzt „measuredSize“ verfügbar, das die Größe darstellt, auf die das untergeordnete Layout tatsächlich gemessen wurde. Diese Größe entspricht möglicherweise nicht den Messbeschränkungen. (Ib2729, b/172560206, b/172338608)
- Mit dem Modifikator „selectionGroup“ können mehrere Tabs oder Radiobuttons aus Gründen der Barrierefreiheit gekennzeichnet werden (Ie5c29)
Die
defaultFactory
fürcompositionLocalOf
undstaticCompositionLocalOf
ist jetzt erforderlich und nicht mehr optional.Durch diese Änderung wird ein potenzieller Typfehler für nicht null-wertige Typen behoben, für die keine Standard-Factory angegeben wurde. Bisher wurde in diesem Fall eine Nullreferenz für einen nicht nullwertigen Typ zurückgegeben.
Für Typen mit zulässigen Nullwerten können Sie
{ null }
als Standard-Factory angeben.Wir empfehlen nicht, lokale Variablen mit nicht nullwertigen Typen zu verwenden, es sei denn, ein sinnvoller Standardwert kann angegeben werden. Wenn kein sinnvoller Standardwert vorhanden ist, sollte das
defaultFactory
-Lambda eine Ausnahme auslösen. Wenn jedoch eine Ausnahme ausgelöst wird, haben die Nutzer der lokalen Variablen eine implizite Abhängigkeit von der Bereitstellung, die vom Typsystem nicht erzwungen wird. (Ifbd2a)Veraltete Methoden aus UI-Modulen wurden entfernt (I646f6)
Größenmodifikatoren wurden umbenannt. „Modifier.width/height/size“ wurden in „requiredWidth/requiredHeight/requiredSize“ umbenannt. Modifier.preferredWidth/preferredHeight/preferredSize wurden in width/height/size umbenannt. (I5b414)
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)
Die Ausrichtung wurde in das Foundation-Paket verschoben. VelocityTracker 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. AnimatedFloat wurde entfernt. (Icde52, b/177457083)
„Anbieter“ wurde in „CompositionLocalProvider“ umbenannt.
- Der Konstruktor für Kompositionen akzeptiert keinen Schlüsselparameter mehr und wurde eingestellt.
- „currentCompositeKeyHash“ wurde in eine zusammensetzbare Property auf oberster Ebene statt in eine zusammensetzbare Funktion auf oberster Ebene umgewandelt.
- „CompositionData“ und „CompositionGroup“ wurden in den Namespace „androidx.compose.runtime.tooling“ verschoben.
- ComposableLambda ist jetzt eine Schnittstelle anstelle einer konkreten Klasse und hat keine Typparameter mehr.
- ComposableLambdaN wurde zu einer Schnittstelle anstelle einer konkreten Klasse und hat keine Typparameter mehr.
- Die Funktion „snapshotFlow“ wurde in den Namespace „androidx.compose.runtime“ verschoben.
- Die Zusammenführungsmethode von SnapshotMutationPolicy ist nicht mehr experimentell
- Die Funktion „clearRoots“ 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 aufgehoben. Das sollte für die meisten Nutzer kein Problem darstellen.
- (I99b7d, b/177245490)
ComponentActivity.setContent()
wurde aus „compose:ui“ entfernt. Verwenden Sie die vonandroidx.activity:activity-compose:1.3.0-alpha01
.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 Parametertyp nicht geändert hat, führt dies nicht zu einem Fehler in Ihrem Code. Achten Sie darauf, dass Sie entweder benannte Parameter verwenden oder die Reihenfolge manuell aktualisieren. Andernfalls funktioniert Ihr Code nicht wie zuvor. - Der Parameter
secondaryVariant
wurde zudarkColors()
hinzugefügt. Diese Farbe entspricht in der Regel der Farbesecondary
im dunklen Design, wird aber hinzugefügt, um für Einheitlichkeit und weitere Anpassungen zu sorgen. - ElevationDefaults und animateElevation() wurden aus der öffentlichen API entfernt, da sie nicht häufig verwendet wurden.
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
- API zum Verwenden von AnimatedVectorDrawable-Ressourcen in Compose hinzugefügt. Mithilfe von „animatedVectorResource“ eine
<animated-vector>
-XML-Datei als „AnimatedImageVector“ laden und mit „painterFor“ animieren (I8ea91) - Es wurde eine neue lokale API für die Zusammensetzung von LocalSoftwareKeyboardController hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I658b6, b/168778053)
Version 1.0.0-alpha12
10. Februar 2021
androidx.compose.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“ in „CompositionContext“ umbenannt (I53fcb)
- „Bounds“ wurde in „DpRect“ (I4b32a) umbenannt.
- Testaktualisierung: „hasText()“ prüft sowohl Eingaben als auch Labels, Hinweise und Platzhaltertexte im Textfeld (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 in das Modul androidx.activity:activity-compose zu androidx.activity.compose.setContent verschoben. (Icf416)
- Destrukturierungs- und copy()-Methoden wurden aus mehreren Klassen entfernt, in denen sie nur selten verwendet wurden. (I26702, b/178659281)
- 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“ wird nicht mehr unterstützt. Verwenden Sie stattdessen „fontResource“. „imageResource“, „loadImageResource“, „vectorResource“ und „loadVectorResource“ wurden eingestellt. Verwenden Sie stattdessen „painterResource“. (I6b809)
- Aus Leistungsgründen werden für die ScrollAxisRange-Semantik jetzt Lambdas verwendet, die Floats zurückgeben, anstatt direkte Float-Werte. (If4a35, b/178657186)
- Die Semantic EditableText wurde hinzugefügt, um den bearbeitbaren Eingabetext des Textfelds für die Barrierefreiheit zu kennzeichnen, und die entsprechenden Testmethoden, um die Semantik zu prüfen (I8e07a)
- 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 enger an die API-Richtlinien 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 wir zuvor
state { 0 }
-Kompositen entfernt und die Verwendung vonremember { mutableStateOf(0) }
empfohlen haben, werden wirsavedInstanceState { 0 }
-Kompositen entfernen. Verwenden Sie stattdessenrememberSaveable { mutableStateOf(0) }
. Dieser wird automatisch gespeichert und wiederhergestellt, wenn der im MutableState verwendete Typ im Bundle gespeichert werden kann. Wenn Sie zuvor ein benutzerdefiniertes Speicherobjekt übergeben haben, müssen Sie jetzt eine neue Überladung von „rememberSaveable“ mit dem ParameterstateSaver
verwenden. Die Verwendung sieht dann so aus:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004) - Passwortsemantik für Barrierefreiheit hinzugefügt (I231ce)
- ProgressBarRangeInfo.Indeterminate wurde hinzugefügt, um nicht befristete Fortschrittsanzeigen für die Barrierefreiheit zu kennzeichnen (I6fe05)
- Die Dienstprogramme
emptyContent()
und(@Composable () -> Unit).orEmpty()
wurden eingestellt, da sie keine positiven Auswirkungen auf die Leistung mehr haben und keinen Mehrwert bieten (I0484d) snapshotFlow
undwithMutableSnapshot
sind nicht mehr experimentell (I6a45f)- Recomposers können jetzt geschlossen werden. Geschlossene Rekompositionen werden fortgesetzt, bis die untergeordneten coroutines der Komposition abgeschlossen sind. Recomposer.shutDown in „cancel“ umbenannt, um einen Kontrast zu „close“ herzustellen. (Ib6d76)
- UiSavedStateRegistry wurde in SaveableStateRegistry umbenannt, AmbientUiSavedStateRegistry in AmbientSaveableStateRegistry und beide wurden 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 umbenannt (I6dcac)
- Viele seit langem eingestellte APIs im ui-Paket wurden gelöscht. (I2f2dc)
- Das Artefakt „compose:runtime-dispatch“ wird jetzt eingestellt. MonotonicFrameClock finden Sie jetzt unter compose:runtime und AndroidUiDispatcher unter compose:ui. (Ib5c36)
- Outline.*-Klassen sind keine Datenklassen mehr (I4879e, b/178001427)
view.captureToImage()
wurde 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
-Kooroutinen-Kontextelements, das in endlosen Animationen angewendet wird. Standardmäßig ist keine Richtlinie installiert, es sei denn, Sie führen Tests mitComposeTestRule
aus. (I50ec4, b/151940543) - „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. Dadurch werden die Anwendungsfälle für „onSizeChanged()“ und „onGloballyPositioned()“ vollständiger (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)
- rememberSavedInstanceState() wurde in rememberSaveable() umbenannt und in das Paket androidx.compose.runtime.saveable verschoben. (I1366e, b/177338004)
- CoreText und CoreTextField aus der öffentlichen API entfernt
- Eingestellte Überladung von SelectionContainer 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 Host-Lebenszyklus 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 RTL-Richtung zu unterstützen. AbsoluteRounderCornerShape und AbsoluteCutCornerShape wurden für Fälle eingeführt, in denen keine automatische Spiegelung gewünscht ist. (I61040, b/152756983)
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
- In Ansichtshierarchien platzierte ComposeViews, die Kinder einer anderen Komposition sind, enthalten jetzt untergeordnete Kompositionen ihrer Vorfahren (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 in „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)
- PopupPositionProvider verwendet jetzt fensterrelative Koordinaten anstelle von globalen Koordinaten. parentGlobalBounds in anchorBounds umbenannt und windowGlobalBounds in windowSize: IntSize geändert (I2994a)
- „Duration“ (Dauer) und „Uptime“ (Laufzeit) werden durch „Long milliseconds“ ersetzt. Dadurch wird die Abhängigkeit der Zeigereingabe von diesen Klassen aufgehoben. (Ia33b2, b/175142755, b/177420019)
- 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 den Stamm der Vektorgrafik angewendet werden. (Id9d53, b/177210509)
- „toolType“ zu „PointerInputChange“ hinzugefügt, um Geräte zu unterscheiden (Iac787, b/175142755)
- AmbientWindowManager 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 die Funktion noch ändern kann. (I2d898, b/177000821)
- SemanticsPropertyReceiver.hidden wurde in invisibleToUser umbenannt und mit @ExperimentalComposeUiApi gekennzeichnet. „AccessibilityRangeInfo“ wurde in „ProgressBarRangeInfo“ umbenannt. „stateDescriptionRange“ wurde in „progressBarRangeInfo“ umbenannt. „AccessibilityScrollState“ wurde in „ScrollAxisRange“ umbenannt. „horizontalAccessibilityScrollState“ wurde in „horizontalScrollAxisRange“ umbenannt. „verticalAccessibilityScrollState“ wurde in „verticalScrollAxisRange“ umbenannt. (Id3148)
- „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 aktualisierte GraphicsLayerScope-Implementierung unterstützt die Umwandlung von dp in Rohpixel. (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
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
- VisualTransformation in eine funktionale Oberfläche geändert (I3bba4)
- Parametertyp für Funktionsreferenz hinzugefügt (I5e1bd)
- Transformierte Begrenzungen zu InspectorNode hinzufügen (Ice42f)
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)
Einführung von
ComposeContentTestRule
, dasComposeTestRule
erweitert undsetContent
definiert, das ausComposeTestRule
entfernt wurde. Es wurde eine FabrikmethodecreateEmptyComposeRule()
hinzugefügt, die eineComposeTestRule
zurückgibt und keine Aktivität für Sie startet. Verwenden Sie diese Option, wenn Sie die Aktivität während des Tests starten möchten, z. B. mitActivityScenario.launch
(I9d782, b/174472899).„animateAsState“ heißt jetzt „animateFooAsState“, wobei „Foo“ der Typ der animierten Variablen ist, z. B. „Float“, „Dp“ oder „Offset“ (Ie7e25)
Dem Bild und dem Symbol wurde der Parameter „Inhaltsbeschreibung“ hinzugefügt. Sie wird verwendet, um eine Beschreibung für die Bedienungshilfen bereitzustellen (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. Diese Änderung betrifft jedoch nur die API. Die Textbearbeitung mit mehreren Stilen ist noch nicht implementiert.
initial
wurde aus den Parametern des Konstruktors von EditingBuffer entfernt. (I326d5)
invalidate und compositionReference() werden jetzt zugunsten von currentRecomposeScope bzw. rememberCompositionReference eingestellt. (I583a8)
AnnotatedString wird jetzt von kotlin.CharSequence abgeleitet. Daher sind „length“ und „subSequence“ jetzt Instanzfunktionen und Erweiterungsfunktionen wurden entfernt. (Iaf429)
RememberObserver ersetzt CompositionLifecycleObserver und CompositionLifecycleObserver wird nicht mehr unterstützt.
RememberObserver
ist ein Ersatz fürCompositionLifecycleObserver
mit geänderter Semantik und umbenannten Methoden. Für Objekte, die nur einmal gespeichert werden, kann die Umstellung auf die neue API automatisch erfolgen. Dies ist und bleibt die empfohlene Vorgehensweise. Wenn ein Verweis jedoch in einer Komposition mehrmals gespeichert wurde, wirdonRemembered
für jeden Verweis aufgerufen, währendonEnter
nur einmal aufgerufen wird.onEnter
wurde mehrmals aufgerufen, wenn das Objekt in Unterkompositionen verwendet wurde, z. B.WithConstraints
undScaffold
. Dadurch war die Garantie für einen einzelnenonEnter
-Aufruf nicht zuverlässig und wurde fürRememberObserver
entfernt.RememberObserver
fügtonAbandoned
hinzu, das aufgerufen wird, wenn dieRememberObserver
-Instanz vom Callback zurückgegeben wird, der anremember
übergeben wurde, aber nicht im Kompositionstatus gespeichert wurde. Daher wirdonRemembered
nie aufgerufen. Das kann passieren, wenn eine Ausnahme die Zusammenstellung vor dem Abschluss beendet oder die Zusammenstellung verworfen wird, weil der Status, für den eine Zusammenstellung erstellt wurde, nicht mehr aktuell ist oder anderweitig nicht mehr benötigt wird. Wenn die Instanz vonRememberObserver
gemäß der Empfehlung oben mit einer einzelnen Referenz eine externe Ressource erfasst, geben sowohlonForgotten
als auchonAbandoned
an, dass die Ressource nicht mehr benötigt wird. Wenn das Objekt die inonRemembered
gestartete Arbeit oder zugewiesenen Ressourcen erfasst, kannonAbandoned
ignoriert werden, da es nicht aufgerufen wird, wennonRemembered
aufgerufen wird. (I02c36)Arithmetische Operationen zwischen zwei oder mehr Texteinheiten wurden eingestellt. Die Funktionen „TextUnit.Sp“ und „TextUnit.Em“ wurden eingestellt. Verwenden Sie stattdessen 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)
-Factorymethode für LazyColumn/LazyRow/LazyVerticalGriditems(items: List)
unditemsIndexed(items: List)
sind jetzt Erweiterungsfunktionen und müssen bei Verwendung manuell importiert werden. Neue Erweiterungsüberladungen für Arrays:items(items: Array)
unditemsIndexed(Array)
(I803fc, b/175562574)Verwenden Sie stattdessen „ImeAction.None“ statt „ImeAction.NoAction“.
- Verwenden Sie ImeAction.Default anstelle von ImeAction.Unspecified (Ie1bcc).
TestCoroutineDispatcher bei Tests nutzen (I532b6)
TextInputService.onStateUpdated in updateState umbenannt (Id4853)
Der auf TransitionDefinition basierende Übergang 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 verhaltensbedingte Unterbrechung, die sich auf den Anwendungscode auswirken kann, da Knoten erst nach der Anwendung 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
- EditCommand sind keine Datenklassen mehr
- Die Funktion „EditOperation.process“ wurde in „applyTo“ umbenannt.
- InputEventListener wurde in InputEventCallback umbenannt
- (I0a366)
- Die nicht verwendeten Funktionen „PxSquared“, „PxCubed“ und „PxInverse“ wurden entfernt. Size.center() wurde in eine Property geändert. (I973f7)
- Im ui-test-Modul kann jetzt die Erstellung von Recomposern für zu testende UIs konfiguriert werden (Ibebd8)
- 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() 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 entsorgt 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 Komposition von [Abstract]ComposeViews zu konfigurieren. Das Standardverhalten ist „Dispose on window detach“ (Beim Fenstertrennen entsorgen). (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() sind veraltet. Verwenden Sie stattdessen „Modifier.focusModifier()“ und „Modifier.focusReference()“. (I75a48, b/175160751, b/175160532, b/175077829)
Einführung von SelectionRegistrar.notifySelectableChange, um SelectionManager über Updates für auswählbare Elemente zu benachrichtigen. (I6ff30, b/173215242)
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 in eine 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 des aktuellen Status bereit, mit dem sich die Aktivität des Tools und der zugehörigen Effekte beobachten lässt. (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 Zerfallanimationen
- (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)
- Die APIs zum Pausieren der Eingabe per Eingabestift wurden umbenannt: HandlePointerInputScope in AwaitPointerEventScope und handlePointerInput() in awaitPointerEventScope(). (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 Mauseingabe 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) wurde intern (Id724a)
Die
Applier
-Oberfläche wurde geändert, um das Erstellen von Bäumen von unten nach oben statt von oben nach unten zu vereinfachen.Die Methode
insert()
wurde ininsertTopDown()
umbenannt.Die neue Methode
insertBottomUp()
wurde hinzugefügt.Ein Anwender fügt dem bearbeiteten Baum Knoten entweder mit
insertTopDown()
oderinsertBottomUp()
ein, je nachdem, welche Leistung besser ist.Einige Bäume, z. B.
LayoutNode
undView
, lassen sich viel effizienter von unten nach oben als von oben nach unten erstellen. Vor dieser Änderung war für die Bottom-Up-Implementierung ein Stapel von Einfügungen erforderlich, der in jeden Applier kopiert werden musste, der für die Leistung eine Bottom-Up-Konstruktion benötigte. Durch diese Ä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 die Verwendung in Bildkompositionen oder Painter-Modifizierer abzurufen. (I2c703, b/173818471)
„Modifier.clearAndSetSemantics“ wurde hinzugefügt, um die Semantik von Nachkommen zu löschen und neue festzulegen. (I277ca)
ContentDrawScope wurde in das ui-graphics-Modul verschoben, um es mit DrawScope zusammenzuführen. (Iee043, b/173832789)
Einführung der PathEffect-Grafik-API, um verschiedenen Konturformen unterschiedliche Muster zuzuweisen. NativePathEffect wird nicht mehr unterstützt. Verwenden Sie stattdessen die erwartete/tatsächliche Implementierung von PathEffect. (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 sind sie im Modul „Schreiben“ enthalten.
„CompositionData“ und „CompositionGroup“ wurden als Ersatz für die UI-Tooling API hinzugefügt, um Kompositionsinformationen zu extrahieren. Diese sind öffentlich, aber nicht für die Verwendung außerhalb der UI-Tooling API vorgesehen, da sie die Rohdaten enthalten, die von der UI-Tooling API interpretiert werden (I31a9c).
ShaderBrush wurde neu strukturiert, um eine Shaderinstanz zu erstellen, wenn Informationen zur Größe der Zeichenumgebung verfügbar sind. Dies ist nützlich, um Farbverläufe zu definieren, die bei der Zusammensetzung die gesamten Zeichengrenzen eines Composeables einnehmen, ohne dass benutzerdefinierte DrawModifier-Implementierungen implementiert werden müssen.
Die APIs für Gradientenfunktionskonstruktoren wurden zugunsten von Fabrikmethoden für ein Gradientenobjekt verworfen. (I511fc, b/173066799)
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)
- Modifier.drawLayer in Modifier.graphicsLayer umbenannt. Die zugehörigen Klassen wurden gemäß API-Feedback ebenfalls in GraphicsLayer umbenannt. (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
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 prüfen, ob das Hostfenster den Fokus hat, und WindowFocusObserver, der einen Rückruf onWindowFocusChanged bereitstellt. (I53b2a, b/170932874)
- Die TransformOrigin API wurde um eine Destrukturierungssyntax erweitert, 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 Übereinstimmung mit den Compose-Richtlinien zu prüfen.
Außerdem wurden einige APIs, die
children
als Namen für das abschließende Lambda verwendet haben, gemäß der Lint-Prüfung und den Anleitungen zucontent
migriert. (Iec48e) - 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()
-Überladung 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, um seine Logik in die Methode „placeable.placeWithLayer()“ von LayoutModifier zu migrieren (I15e9f, b/173030831) - Wir haben Ambients mit dem Suffix
Ambient
eingestellt und durch neue Properties mit dem Präfix „Ambient“ ersetzt, gemäß den anderen Richtlinien für Ambients und die Compose API. (I33440) androidx.compose.ui.text.Typeface
wurde zuandroidx.compose.ui.text.font.Typeface
(Ic2b81) verschoben- Das semantische Argument „mergeAllDescendants“ wurde in „mergeDescendants“ umbenannt. (Ib6250)
- Neue API für den Zeiger-Eingabe-Inaktivitäts-Detektor für Zieh-Gesten, einschließlich Ausrichtungssperre. (Icef25)
- VectorAsset in ImageVector umbenannt VectorAsset in Builder verschoben und umbenannt, um gemäß den 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 eingestellte 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 Multitouch-Gesten-Detektor, einschließlich Hilfsfunktionen zum Erkennen von Drehen, Zoomen und Schwenken (Ic459d)
- Einführung der APIs „SweepGradientShader“ und „SweepGradientBrush“. (Ia22c1)
- Die Zeitsteuerung in Tests (TestAnimationClock und ihre Verwendung) ist jetzt experimentell (I6ef86, b/171378521)
Fügen Sie coroutine-basierte Scrolling-APIs hinzu:
Es wurden LazyListState.snapToItem und LazyListState.smoothScrollBy sowie APIs der unteren Ebene für die Scrollsteuerung hinzugefügt. Diese APIs bieten eine Sperroberfläche zum Steuern des Scrollens, die wartet, bis das Scrollen abgeschlossen ist, bevor sie zurückgegeben wird. (Ie5642)
Modifier.focusable muss in der Foundation hinzugefügt werden. Mit diesem Attribut können Sie einer Komponente ein fokussierbares Verhalten mit korrekter Semantik und Barrierefreiheit hinzufügen. (I41eb9, b/152525426, b/162865824)
Standardimplementierungen von Methoden und Eigenschaften in AnimationClockTestRule bereitstellen, die an die
clock
delegiert werden können (I7ea3d, b/173399709)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 Sprachausgabemodul (I54cc6)
Neue APIs zum Ausführen von Animationen in coroutines (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-Schriftart-Wrapper hinzugefügt. Sie können eine Android-Schriftart über die
typeface
-Funktion (typeface(Typeface.DEFAULT)
) laden. Außerdem wurdetypefaceFromFontFamily()
intypeface()
(I52ab7) umbenannt. - Es wurde eine Lint-Prüfung hinzugefügt, um zu prüfen, ob Modifier-Factory-Funktionen als Erweiterungen von Modifier definiert sind, damit sie nahtlos miteinander verknüpft werden können. (I07981)
- Altes UI-Testmodul und seine Stubs entfernen (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)
- Stilinformationen an den Knoten „Barrierefreiheit“ übergeben. (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 nicht einheitliche Skalierung durchzuführen und die Quellgrenzen so zu dehnen, dass das Ziel vollständig ausgefüllt wird.
- Es wurden Operatormethoden hinzugefügt, um Skalierungsfaktor-Parameter mit Größenparametern zu berechnen.
- (Ic96a6, b/172291582)
- Die Fabriken „BiasAlignment“ und „BiasAbsoluteAlignment“ zum Erstellen von Ausrichtungen wurden hinzugefügt. (Iac836, b/169406772)
- Entwicklern die Möglichkeit geben, den Fokus zwangsweise aufzuheben (I90372)
- Ein Fehler wurde behoben, durch den die Höhe für Ansichten in Compose nicht dargestellt wurde. (If7782)
- Die onDrawBehind API wurde im ContentDrawScope erstellt, um der Benennungskonvention von Modifier.drawBehind zu entsprechen. (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 Lerp-Methode für Größeparameter wurde aktualisiert, um eine nicht nullwertige Größe zurückzugeben und unnötigen Boxing zu vermeiden. (Ib0044)
- TestMonotonicFrameClock zum Testen von Code hinzugefügt, der die MonotonicFrameClock von Compose verwendet, um mithilfe von runBlockingTest von kotlinx-coroutines-test auf Kompositionskadereignisse zu warten (I4402f)
- 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 grundlegende, neutrale 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 einfacher angeben 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 Aktualisierung der Konfiguration neu zusammengesetzt werden. (I6387c, b/167352819)
- Der Recomposer benötigt jetzt bei der Erstellung einen CoroutineContext (Ic4610)
- Summe der
zIndex
-Werte, wenn mehrereModifier.zIndex()
angewendet werden. 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
wird 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)
- VectorPainter wird zugunsten von rememberVectorPainter eingestellt, um besser zu verdeutlichen, dass die composable API intern „remember“ nutzt, um Daten in Kompositionen zu speichern. (Ifda43)
- Die Modifier.drawWithCache API wurde aktualisiert, um ContentDrawScope anstelle von DrawScope als Empfängerbereich anzugeben. So können Implementierungen Zeichnungsbefehle 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-Griffs korrigieren (I6e1e0)
- DrawScope und ContentDrawScope wurden in Schnittstellen anstelle von abstrakten Klassen umgestellt.
- CanvasDrawScope-Implementierung von DrawScope erstellt
- Implementierungen von DrawScope wurden überarbeitet, um stattdessen CanvasScope zu verwenden
- DrawContext zum Umschließen von Abhängigkeiten für DrawScope erstellt
- Verworfene Methoden in DrawScope entfernt (I56f5e)
- Wichtige Änderung: Der Rückgabewert von
PointerInputFilter.onPointerEvent(...)
wurde entfernt, da in Zeigerereignissen nur Verbrauchsdaten geändert werden sollten. 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 „AlignmentLine“ wurde ausgeblendet. (I9da1a, b/170612900, b/170611568)
- Möglichkeit hinzufügen, 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, wie in der Dokumentation beschrieben.
- 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)
- Die IME-Option „KeyboardCapitalization“ 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) - „Box“ wurde zu einer Inline-Funktion. (Ibce0c, b/155056091)
Externer Beitrag
- Unterstützung verschiedener Sprachen für
AnnotatedString.capitalize
undAnnotatedString.decapitalize
(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)
- Verschieben Sie „Langes Drücken“ in „Text“. (Iff2bc)
- Experimenteller Modifikator „Modifier.pointerInput“, der die Eingabe unterbricht (Ia77d2)
- Es wurden Bedienungshilfen-Aktionen 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 entfernen Sie den Rückgabetyp
List<PointerInputChange>
ausPointerInputFilter.onPointerEvent(...)
. (Id067e)Deaktivierung der Textauswahl und Demo (Ie7e97)
onGloballyPositioned in eine Inlinefunktion umgewandelt (I15830)
OnPositionedModifier wurde in OnGloballyPositionedModifier umbenannt und onPositioned() in onGloballyPositioned(). (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 wurde entfernt
- Entfernt: Size.truncDiv (Ief44d, b/169790720)
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. Die neue Methode „hasInvalidations()“ wurde für die Composition-Klasse hinzugefügt. Die Methode „hasPendingChanges()“ aus dem Recomposer wurde in „hasInvalidations()“ umbenannt (Ib2f32, b/168293643, b/167972292, b/165028371)
- Die Parameter für „Größe.Unspezifiziert“ wurden auf „Float.NaN“ statt „Float.POSITIVE_INFINITY“ aktualisiert. Die Painter-Implementierungen wurden aktualisiert, um auch „Size.Unspecified“ und nicht endliche Größen zu prüfen. (I95a7e)
- Die Reihenfolge der place()-Aufrufe in benutzerdefinierten Layouts bestimmt jetzt die Zeichnungsreihenfolge für die untergeordneten Elemente (Ibc9f6)
- Unterstützung der Umwandlung von AnnotatedString in SpannableString für Barrierefreiheit. (Ief907)
- Es wurden Stubs für Android-Klassen auf älteren Plattformen hinzugefügt, um nach Möglichkeit die Verwendung von Reflection zu vermeiden. (Ia1790)
- Fehler behoben: Wenn die Softwaretastatur die App zum Übersetzen veranlasste, wurden die Koordinaten der Eingabe des Cursors falsch. (Ic4cec, b/163077821)
Version 1.0.0-alpha04
1. Oktober 2020
androidx.compose.ui:ui-*:1.0.0-alpha04
wird 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 zu einem privaten Dienst. (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
- Viele Grafik-APIs wurden aktualisiert.
- Die APIs für Skalierungs- und Drehtransformationen wurden aktualisiert, sodass jetzt ein einzelner Offset-Parameter für die Drehpunktkoordinate verwendet wird, anstatt separater Gleitkommaparameter für die X-/Y-Koordinaten in DrawScope und DrawTransform.
- Die Methoden „Rect.expandToInclude“ und „Rect.join“ wurden entfernt.
- Die Dokumentation zu Radius wurde aktualisiert. Neben „elliptisch“ wird jetzt auch „oval“ verwendet.
- Es wurde eine Dokumentation hinzugefügt, in der darauf hingewiesen wird, dass der öffentliche Konstruktor für die Inline-Klasse „Radius“ nicht direkt aufgerufen werden darf, sondern dass Radius-Objekte stattdessen über ihre Funktionskonstruktoren instanziiert werden sollten.
- RoundRect APIs zum Abfragen von „topRight“, „bottomRight“ und „bottomCenter“ wurden entfernt.
- Rect.shift wurde zugunsten von Rect.translate eingestellt
- Die APIs „RoundRect.grow“ und „Rect.shrink“ wurden entfernt.
- RoundRect.outerRect wurde in Rect.boundingRect umbenannt
- Die Methoden „RoundRect.middleRect“, „tallMiddleRect“, „wideMiddleRect“ und „Rect.isStadium“ wurden entfernt.
- RoundRect.longestSide in RoundRect.maxDimension umbenannt
- RoundRect.shortestSide wurde in RoundRect.minDimension umbenannt
- RoundRect.center wurde zu einer Eigenschaft anstelle einer Funktion geändert
- Der Konstruktor für RoundRect wurde aktualisiert, sodass Radiuseigenschaften anstelle einzelner Parameter für X‑/Y‑Radiuswerte verwendet werden.
- Entfernte APIs für die Größe, bei denen davon ausgegangen wurde, dass es sich um ein Rechteck mit dem Ursprung bei 0,0 handelt
- Radius-API zum Löschen von Elementen hinzugefügt
- Verschiedene Erweiterungsfunktionen für RoundRect wurden zu Eigenschaften migriert.
- (I8f5c7, b/168762961)
- 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.
- Die DrawScope APIs wurden um Transformationsmethoden mit Bereichsbeschränkung ergänzt, um anzugeben, dass die Transformation nur innerhalb des Callbacks angewendet und nach dem Aufruf des Callbacks entfernt wird.
- Die Dokumentation zu „clipPath“ wurde aktualisiert, um statt „rounded-rectangle“ auf „path“ zu verweisen.
- In der Dokumentation wurde der Abstand für den rechten Parameter in „clipPath“ korrigiert.
- DrawScope.drawCanvas in drawIntoCanvas umbenannt und Größeparameter entfernt
- Die Parameter „dx“ und „dy“ in der Einblendmethode wurden in „horizontal“ und „vertical“ umbenannt.
- Überladung für „inset“ hinzugefügt, die allen vier Rändern denselben Wert zuweist
- Die Dokumentation zur Inset-Methode, in der angegeben wurde, dass der Inset auf alle vier Seiten angewendet wird, wurde entfernt.
- Aktualisierte Dokumentation für die Klasse „Rect“
- Kommentare zu Rect-Parametern wurden an den KDoc-Stil angepasst
- Entfernt: Rect.join und Rect.expandToInclude
- Überladung für Rect.translate(offset) erstellt und Rect.shift eingestellt
- (If086a, b/167737376)
- rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled und textInputServiceFactory mit @VisibleForTesting annotiert, zu einer internen API gemacht und ihre Kdoc ausgeblendet (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
wird veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.
API-Änderungen
- Entfernen Sie die semantischen Aktionen „Vor-“ und „Zurückscrollen“. Es wurden Schritte zu „AccessibilityRangeInfo“ hinzugefügt. (Ia47b0)
onInvalidate()
wurde ausOwner
entfernt.OwnedLayer
kümmert sich um die Ungültigmachung. (Ica72b, b/162061312)Operatormethoden in der Size API, die Offset-Parameter verwenden, 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 eingestellt 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)
- „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 veralteten Companion-Methoden für Rect wurden zugunsten von Funktionskonstruktoren entfernt.
Es wurden Tests hinzugefügt, um Methoden in Rect.kt zu überprüfen (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 vectormath-Pakets 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 Compose-Compiler-Plug-ins funktionieren.
Diese Änderung führt nicht zu einer fehlerhaften Änderung auf Quellebene, da sich nur Compiler-APIs geändert haben, für die eine explizite Aktivierung erforderlich ist. (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
wird 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. Verwende nach MöglichkeitAndroidView
, um Ansichten in Compose zu senden. Das direkte Zusammenstellen 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
wird eingestellt 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“ ist jetzt eine 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 wird die Position in Kontexten, in denen von rechts nach links geschrieben wird, mit derPlacementScope.place()
-Methode nicht mehr automatisch gespiegelt. Verwenden Sie stattdessenPlacementScope.placeRelative()
. (I873ac, b/162916675)In AlertDialog wird jetzt FlowRow für Schaltflächen verwendet (I00ec1, b/161809319, b/143682374)
Einige Test-Dienstprogramme wurden nicht mehr öffentlich zugänglich gemacht, da sie nicht an der richtigen Stelle 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)
Nicht mehr unterstützte FrameManager-Aufrufe wurden entfernt.
Interne Compose APIs wurden geändert, um den Overhead beim Verfolgen von Statusobjekten wie
mutableStateof()
zu reduzieren (I80ba6)VerticalScroller und HorizontalScroller wurden entfernt. Verwenden Sie stattdessen ScrollableColumn/Row. Modifier.drawBackground wurde entfernt. Modifier.background verwenden (I73b0d, b/163019183)
Der Absturz, der beim Verwenden von etwas, das den Status speichert, innerhalb der For-Schleife auftrat, wurde behoben. Da derselbe Schlüssel in savedInstanceState() jetzt zulässig ist, wurde die API von UiSavedStateRegistry an diese neue Anforderung angepasst (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
Die
state { ... }
-Komponente wird zugunsten expliziter Aufrufe vonremember { mutableStateOf(...) }
eingestellt. Dadurch wird die API-Oberfläche insgesamt und die Anzahl der Konzepte für die Zustandsverwaltung reduziert. Außerdem entspricht dies demby mutableStateOf()
-Muster für die Delegation von Klasseneigenschaften. (Ia5727)RRect in RoundRect umbenannt, um besser zu den Benennungsmustern von Compose zu passen. Ähnliche Funktionskonstruktoren wie RRect erstellt und RRect-Funktionskonstruktoren eingestellt (I5d325)
Version 0.1.0-dev16
5. August 2020
androidx.compose.ui:ui-*:0.1.0-dev16
wird 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 wurde hinzugefügt, um Layoutressourcen auf Grundlage von ViewBinding zu inflaten und zu erstellen. (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 „trimPath“-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 Sie MotionEvents empfangen und mit Compose interagieren können, als ob Sie eine Android-Ansicht implementieren würden. (Ieb08c)
- Der nicht mehr unterstützte Tag-Modifikator wurde entfernt. Verwenden Sie stattdessen „layoutId“. (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)
- Es wurde eine neue AndroidView API 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 wurden von Android über Compose und wieder zurück nach Android übergeben. (I14be8, b/158034713)
- dropdownPopup wurde entfernt. (I00430)
- Feste Pop-up-Position auf Displays mit Aussparung (Idd7dd)
- Aktion für Bedienungshilfen hinzufügen, um TextLayoutResult abzurufen (I9d6e6)
- Der RemeasurementModifier wurde hinzugefügt. Damit kann das Layout synchron neu vermessen 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ügen Sie einige Markierungen/Anmerkungen hinzu, um Best Practices zu berücksichtigen. (I66b20)
- Mehr Zeilen-APIs in TextLayoutResult verfügbar machen (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
- Allgemeine API-Fehler behoben (I077bc)
- Nicht verwendete OffsetBase-Schnittstelle entfernen
- Align Offset and IntOffset classes to have a consistent API surface
- IntOffset.Origin in IntOffset.Zero umbennen, um mit der Offset API übereinzustimmen
- Die nativeCanvas-Methode wurde aus der Canvas-Benutzeroberfläche entfernt, damit Nutzer ihre eigenen Canvas-Instanzen erstellen können.
- Die Stub-Klasse „EmptyCanvas“ wurde erstellt, um „DrawScope“ zu einem nicht nullwertigen Parameter anstelle eines lateinit-Parameters umzuwandeln und dafür zu sorgen, dass das Feld nicht null sein darf.
- ClipOp-Enum-Typen in Pascal-Case umbenannt
- Die Filterqualitätsenumer wurden in Pascal-Schriftart umbenannt.
- Die StrokeJoin-Enume wurden in Pascal Case umbenannt.
- Die PointMode-Enum-Typen wurden in Pascal Case umbenannt.
- Die Enum-Typen „PaintingStyle“ wurden in Pascal Case umbenannt.
- Die Aufzählungen vom Typ „PathFillType“ wurden in Pascal-Schriftart umbenannt.
- StrokeCap-Enumerierungen in Pascal Case umbenannt
- Die Implementierung von DrawCache wurde aktualisiert, sodass keine lateinit-Parameter mehr verwendet werden.
- DrawScope wurde aktualisiert, sodass für die internen Parameter „fillPaint“ und „strokePaint“ nicht mehr die lazy Delegation verwendet wird.
- Die Bildkomposition wurde aktualisiert, um die Nutzung von Box zu vermeiden und den Overhead zu reduzieren.
- Die „Outline“-Klasse wurde um @Immutable-Anmerkungen ergänzt.
- PathNode wurde aktualisiert, um @Immutable-Anmerkungen für jede Pfadanweisung zu haben.
- Die Vektor-Unterkomposition wurde aktualisiert, um redundante bedingte Gleichheitsprüfungen zu entfernen, da diese bereits von „compose“ verarbeitet werden.
- Die Methoden des Rect-Begleiterkonstruktors wurden zugunsten von Funktionskonstruktoren eingestellt.
- Aktualisierte Pinselklassen und Funktionskonstruktoren mit @Immutable- und @Stable-APIs
- Die VertexMode-Enumeration wurde in PascalCase geändert.
- Die DrawScope-Methode „selectPaint“ wurde aktualisiert, um Strichparameter der Farbe bedingt zu überschreiben, wenn sie sich geändert haben.
- Die Funktion „Size“ wurde aktualisiert, um die Destrukturierungs-API hinzuzufügen. Außerdem wurde „UnspecifiedSize“ in „Unspecified“ umbenannt und nicht verwendete Methoden entfernt.
- Die BlendMode API für das Komponieren wurde aktualisiert, um die BlendModes des Android-Frameworks und die PorterDuff-Modi je nach API-Ebene korrekt abzugleichen. Die BlendMode#isSupported API wurde eingeführt, um vor der Verwendung zu prüfen, ob die BlendMode auf dem Gerät unterstützt wird. (I0ef42)
- „LazyItemScope“ wurde für den Parameter „itemContent“ von Lazy-Listen hinzugefügt. Es bietet Modifikatoren, um die maximale Größe des übergeordneten Elements zu füllen. Dies löst den Anwendungsfall, wenn das Element den Darstellungsbereich füllen soll und die normale Funktion Modifier.fillMaxSize() nicht funktioniert, da das Element mit unendlichen Einschränkungen gemessen wird. (Ibd3b2, b/162248854)
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
wird 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 oben unter Abhängigkeiten deklarieren aktualisieren.
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 Properties mit Einzelwertsemantik wird jetzt ein Aufrufstil verwendet.
„semantics { hidden = true }“ wird jetzt beispielsweise so geschrieben:
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412) - Modifikator.focus wurde hinzugefügt und ersetzt den Fokus-Modifikator. (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 und ersetzt „FocusDetailedState“ (I0a3ba, b/160822595)
- Es wurde die Annotation „ExperimentalFocus“ hinzugefügt, eine @OptIn-Annotation 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 (I84bdf) verwenden
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, um mit einem Long-Wert zwei Gleitkommawerte zu verpacken, die X- und Y-Achsenabweichungen als Gleitkommawerte darstellen. (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. Die Px-Klasse wurde vollständig gelöscht (I3ff33).
Die Verwendung der Px-Klasse in verschiedenen zusammengesetzten Klassen wurde im Rahmen der umfangreichen Refaktorisierung ersetzt, um nur noch Dp und primitive Typen für Pixelparameter zu verwenden (I086f4)
Die Verwendung der Px-Klasse in verschiedenen Compose-Klassen wurde im Rahmen der umfangreichen Refactoring-Bemühungen durch Dp- und primitive Typen für Pixelparameter ersetzt (Id3434)
Die Verwendung der Px-Klasse in verschiedenen zusammengesetzten Klassen wurde im Rahmen der umfangreichen Refaktorisierung ersetzt, sodass nur noch Dp- und primitive Typen für Pixelparameter verwendet werden (I97a5a)
TestTag ist jetzt 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 veraltete LayoutTag() wurde entfernt. Verwenden Sie stattdessen Modifier.tag(). Modifier.matchParent() wurde eingestellt. Verwenden Sie stattdessen Modifier.matchParentSize(). (If8044)
Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen der umfangreichen Refaktorisierung ersetzt, um nur noch Dp- und primitive Typen für Pixelparameter zu verwenden (I57bff)
Modifier.semantics wurde nicht mehr als veraltet eingestuft, um die Verwendung für allgemeine Komponenten zu ermöglichen. (I4cfdc)
CanvasScope-Implementierungen wurden konsolidiert. Es gibt jetzt nur noch DrawScope und ContentDrawScope. DrawScope wurde aktualisiert, um die Density-Oberfläche zu implementieren und LayoutDirection bereitzustellen. Die DrawScope-Unterklasse wurde aus ContentDrawScope entfernt. Painter und PainterModifier wurden aktualisiert, damit sie keine RTL-Eigenschaft mehr selbst verwalten, da DrawScope diese bereits ohne manuelle Angabe bereitstellt (I1798e)
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 API für DrawLayer-Modifikatoren wurde geändert: „outlineShape“ wurde in „shape“ umbenannt und hat den Standardwert „RectangleShape“. Außerdem ist der Wert jetzt nicht mehr optional. „clipToOutline“ wurde in „clip“ umbenannt. „clipToBounds“ wurde entfernt, da es mit „RectangleShape“ dasselbe wie „clip == true“ bedeutet (I7ef11, b/155075735)
Compose APIs der höheren Ebene, die einen Canvas bereitstellen, wurden aktualisiert, um stattdessen CanvasScope bereitzustellen. So müssen Nutzer keine eigenen Paint-Objekte mehr verwalten. Nutzer, die weiterhin Zugriff auf ein Canvas benötigen, können die Erweiterungsmethode „drawCanvas“ verwenden. Diese bietet einen Rückruf, um Zeichenbefehle für das zugrunde liegende Canvas auszugeben. (I80afd)
Die API für die abschließende Lambda-Funktion „WithConstraints“ wurde geändert. Anstelle von zwei Parametern hat es jetzt einen Empfängerbereich, der zusätzlich zu „constraints“ und „layoutDirection“ die Eigenschaften „minWidth“, „maxWidth“, „minHeight“ und „maxHeight“ in Dp bietet (I91b9a, b/149979702)
LayoutModifier2 in LayoutModifier umbenannt (Id29f3)
Die nicht mehr unterstützte LayoutModifier-Benutzeroberflä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)
Layout- und LayoutModifier-Unterelemente können mit einer anderen Layoutrichtung gemessen werden. (Ibd731)
Die neue Funktion „Modifier.zIndex()“ steuert die Zeichnungsreihenfolge der untergeordneten Elemente im selben übergeordneten Layout. Die Property „elevation“ von „DrawLayerModifier“ wurde in „shadowElevation“ umbenannt und steuert nicht mehr die Zeichnungsreihenfolge. Die Reihenfolge der Parameter für „DrawShadow“ wurde geändert: „elevation“ ist jetzt der erste und „shape“ der zweite Parameter mit dem Standardwert „RectangleShape“. (I20150, b/152417501)
„onSizeChange“ und „onPositionChange“ in „Owner“ entfernt (I5c718)
„Constraints2“ wurde hinzugefügt, eine Kopie von „Constraints“, die nur Int-Werte für Einschränkungen und keine IntPx-Werte unterstützt. IntPx wird entfernt und alle Ganzzahleinschränkungen werden wie bei Android als Pixel angenommen.
- Außerdem wurde „IntSize“ hinzugefügt, das IntPxSize ersetzen wird. (I4b43a)
Ausrichtung kann jetzt 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“ in „ContentScale“ umbenannt
- ContentScale wurde aus dem Modul „ui-graphics“ in das Modul „ui-core“ verschoben, damit es sich im selben Modul wie die Alignment API befindet.
- „FillMaxDimension“ in „Zuschneiden“ umbenannt
- „FillMinDimension“ wurde in „Fit“ umbenannt.
- „An Innenseite anpassen“ in „An Innenseite anpassen (besser)“ 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)
Verbesserungen an der DrawModifier API:
- Der Empfängerbereich für draw() wurde zu ContentDrawScope geändert.
- Alle Parameter für „draw()“ entfernt
- DrawScope hat dieselbe Oberfläche wie das bisherige CanvasScope
- ContentDrawScope hat die Methode „drawContent()“ (Ibaced, b/152919067)
„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 (If32ac) wurde eingestellt.
Der Modifikator-Plus-Operator wurde durch Funktionen der werkseitigen Erweiterung 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 composable-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. Modus für die Layoutrichtung 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 Eigenschaft „position“ ist bei Layout-Modifizierern, Drehungen oder Skalierungen nicht sinnvoll. Stattdessen sollten Entwickler „parentCoordinates“ und „childToLocal()“ verwenden, um die Transformation von einer Layoutkoordinate in eine andere zu berechnen.
Bei „LayoutCoordinates“ wird für die Größe die Property „IntPxSize“ anstelle von „PxSize“ verwendet. Für Layouts werden Ganzzahlpixelgrößen verwendet. Daher sollten für alle Layoutgrößen Ganzzahlen und keine Gleitkommawerte verwendet werden. (I9367b)
Verbesserungen an der API-Oberfläche von Einschränkungen (I0fd15)
CanvasScope API erstellt, die ein Canvas-Objekt umschließt, um eine zustandslose, deklarative API-Oberfläche für die Zeichnung bereitzustellen Transformationen sind auf ihren eigenen Empfängerbereich beschränkt und die Informationen zur Größe beziehen sich ebenfalls auf die entsprechenden Einblendungsgrenzen. Der Verbraucher muss kein eigenes Paint-Statusobjekt zum Konfigurieren von Zeichenvorgängen verwalten.
- CanvasScopeSample hinzugefügt und die Demo-App um eine deklarative Grafikdemo (Ifd86d) erweitert
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)
Einführung eines zusätzlichen optionalen Rechteckparameters für ImagePainter, um einen Teil des zugrunde liegenden ImageAssets zu zeichnen (I0ea9e)
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 aus Gründen der Einheitlichkeit zu einer Erweiterungsmethode verschoben (Ibaca6).
Die PixelMap API wurde erstellt, um Pixelinformationen aus einem ImageAsset abzufragen. (I69ad6)
toFrameworkRect/toFrameworkRectF in toAndroidRect/toAndroidRectF umbenannt, um der Benennungskonvention für Objektkonvertierungen zwischen Compose und den Android-Framework-APIs zu entsprechen, auf denen sie basieren. Außerdem wurden die Dokumente zu diesen APIs aktualisiert (I86337).
Die VectorPainter API wurde hinzugefügt, um die vorhandene Subkomposition API für Vektorgrafiken zu ersetzen. Das Ergebnis der Unterkomposition ist ein VectorPainter-Objekt anstelle eines DrawModifier-Objekts. Die bisherigen DrawVector-Kompositionen wurden zugunsten von VectorPainter eingestellt.
Die Image(Painter) API wurde in PaintBox(Painter) umbenannt. Es wurde ein Vektor-Komposit erstellt, das sich wie das Bild-Komposit verhält, jedoch 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 des Textfelds hat eine blinkende Animation (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)
Der Plusoperator für den (Text-/Absatz-/Abschnitts-)Stil wurde hinzugefügt, der an die Funktion „merge()“ weitergeleitet wird. (Ia1add)
FontWeight.lerp springt nicht mehr. Es ist immer noch eine Datenklasse. (I521c2)
Der Konstruktor von „FontWeight“ ist jetzt öffentlich und keine Datenklasse mehr. (Id6b1f)
getLineStart, getLineEnd, getEllipsisOffset und getEllipsisCount zu TextLayoutResult hinzufügen (Ibc801)
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 gehört, dass die Funktion nur für vertikale Channels verfügbar ist und nicht alle Änderungen an untergeordneten Channels berücksichtigt. (Ib351b)
Dem Feld „Box“ die Parameter „Abstand“, „Rahmen“, „Form“ und „Hintergrund“ hinzufügen (I05027, b/148147281)
Fehlerkorrekturen
- Der Rückruf „onFocusChange“ in Textfeldern wurde in „onFocusChanged“ umbenannt (Ida4a1)
- VerticalScroller und HoriziontalScroller wurden eingestellt. Verwenden Sie ScrollableColumn und ScrollableRow für integrierte Funktionen mit Spalten-/Zeilenverhalten und -Parametern oder Modifier.verticalScroll und Modifier.horizontalScroll für Ihr eigenes Element. Ebenso wurde „ScrollerPosition“ zugunsten von „ScrollState“ eingestellt (I400ce, b/157225838, b/149460415, b/154105299)
runOnIdleCompose
inrunOnIdle
umbenannt (I83607)- Mehrere Test-APIs wurden umbenannt, um sie intuitiver zu gestalten. Alle APIs vom Typ „findXYZ“ wurden in „onNodeXYZ“ umbenannt. Alle APIs vom Typ „doXYZ“ wurden in „performXYZ“ umbenannt. (I7f164)
- Die Compose-Benutzeroberfläche kann jetzt in ViewGroups erstellt werden, ohne dass eine neue Komposition erforderlich ist. Ein Beispiel finden Sie in ViewInteropDemo. (I9ab0b, b/160455080)
- sortWith und removeRange 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 Painter-Implementierungen müssen die Zeichnungsinhalte anhand der angegebenen Größe des DrawScope skaliert werden, in das sie gezeichnet werden.
Ein Problem wurde behoben, durch das die Cache-Bitmap von VectorPainter auf die Standardgröße statt auf die angegebene Größe für das Zeichnen festgelegt 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. Ersetzen Sie den Code durch @ComposableContract(tracked=false) (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, durch das die Weitergabe der Eingaben des Touch-Cursors zu einem Absturz führte, wenn PointerInputFilters während der Weitergabe über eine Unterkomposition 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 untergeordnete Komposition entfernt wurden. Dieser Fehler wurde jetzt behoben. (Iab398, b/157998762)
Die Radius-Klasse wurde in eine Inline-Klasse umgestellt. Die Methoden zum Erstellen von Zusatzelementen 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)
Das Recompose-Komposit ist nicht mehr nützlich. 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. Durch diese Änderung wird der Body einer zusammensetzbaren Funktion jetzt transformiert und der Aufrufort bleibt (meistens) unverändert.
Das bedeutet, dass der Großteil der Logik, die mit der Compose-Laufzeit kommuniziert, am Anfang des Funktionsblocks statt am Aufrufort ausgeführt wird.
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 kombinierbaren Funktionen geändert. Eine kompostierbare Funktion, die einen einzelnen Parameter akzeptiert, wird in eine Funktion umgewandelt, die drei Parameter akzeptiert. Die zusätzlichen Parameter sind der Komponist, eine Ganzzahl „Schlüssel“ und eine Bitmasken-Ganzzahl, die zum Übertragen von Metadaten über Aufrufe verwendet wird.
Mit Compose werden jetzt auch Standardargumente in eine kombinierbare Funktion umgewandelt. 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.
Dabei wurden einige Optimierungen vorgenommen: 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. Dadurch wird die Größe der Steckplatztabelle reduziert und die Laufzeit wird weniger belastet. 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 bahnbrechenden Änderungen betreffen APIs, auf die der Compiler direkt ausgerichtet ist. Die normale Verwendung von Compose 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 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)
Für „Button“, „FloatingActionButton“ und „Clickable“ gibt es jetzt eine separate
enabled
-Paramter. Einige der Parameter für die Schaltfläche wurden umbenannt oder neu angeordnet. (I54b5a)ButtonStyle wurde durch separate Funktionen ersetzt und die Textüberladung (String) entfernt. Nutzungsinformationen finden Sie in den aktualisierten Beispielen. (If63ab, b/146478620, b/146482131)
Funktionsgefährdende Änderungen an der Ambients API Weitere Informationen finden Sie im Log und in der
Ambient<T>
-Dokumentation (I4c7ee, b/143769776).Das Verhalten der Standardtextrichtung wird jetzt von der Layoutrichtung bestimmt. Wenn die Layoutrichtung „RTL“ ist, ist die Standardtextrichtung auch „RTL“. Bisher war es „TextDirection.ContentOrLtr/Rtl“ (I4e803).
Fehlerbehebung: Wenn Schriftstärke und Schriftstil in einem AnnotatedString verschachtelt sind, wird der Text nicht korrekt 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).