Benutzeroberfläche zum Schreiben
androidx.compose.ui
androidx.compose.ui.Laden
androidx.compose.ui.graphics
androidx.compose.ui.platform
androidx.compose.ui.test
(Siehe API-Referenzdokumentation für alle Erstellungspakete)
Letzte Aktualisierung | Stabile Version | Releasekandidat | Beta-Ausgabe | Alpha-Release |
---|---|---|---|---|
26. Juni 2024 | 1.6.8 | - | 1.7.0-beta04 | - |
Gebäude
Compose besteht aus sieben Maven-Gruppen-IDs innerhalb von androidx
. Jede Gruppe umfasst eine bestimmte Teilmenge von Funktionen mit jeweils eigenen Versionshinweisen.
In dieser Tabelle werden die Gruppen und Links zu den einzelnen Versionshinweisen erläutert.
Gruppe | Beschreibung |
---|---|
compose.animation: | Animationen in den Jetpack Compose-Anwendungen erstellen, um die User Experience zu bereichern |
compose.compiler | @Composable-Funktionen transformieren und Optimierungen mit einem Kotlin-Compiler-Plug-in aktivieren. |
compose.foundation | Schreiben Sie Jetpack Compose-Anwendungen mit gebrauchsfertigen Bausteinen und erweitern Sie die Grundlage für den Aufbau Ihrer eigenen Designsysteme. |
compose.material | Jetpack Compose-UIs mit einsatzbereiten Material Design-Komponenten erstellen Dies ist der übergeordnete Einstiegspunkt von Compose. Hier werden Komponenten bereitgestellt, die den unter www.material.io beschriebenen Komponenten entsprechen. |
compose.material3 einfügen | Jetpack Compose-UIs mit Material Design 3 Components erstellen, der nächsten Entwicklung des Material Design Material 3 enthält aktualisierte Designs und Komponenten sowie Funktionen zur Personalisierung von Material You wie dynamische Farben. Das Produkt wurde so entwickelt, dass es zum visuellen Stil und zur System-UI von Android 12 passt. |
compose.runtime | Grundlegende Bausteine des Programmiermodells und der Statusverwaltung von Compose sowie die zentrale Laufzeit für das Compose-Compiler-Plug-in. |
compose.ui | Grundlegende Komponenten der Benutzeroberfläche zum Schreiben von E-Mails, die für die Interaktion mit dem Gerät erforderlich sind, darunter Layout, Zeichnen und Eingabe |
Abhängigkeiten deklarieren
Wenn Sie eine Abhängigkeit von Compose hinzufügen möchten, müssen Sie Ihrem Projekt das Maven-Repository von Google hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.
Fügen Sie der Datei build.gradle
für Ihre Anwendung oder Ihr Modul die Abhängigkeiten für die Artefakte hinzu, die Sie benötigen:
Groovig
dependencies { implementation "androidx.compose.ui:ui:1.6.8" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.14" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.ui:ui:1.6.8") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.14" } kotlinOptions { jvmTarget = "1.8" } }
Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.
Feedback
Dein Feedback hilft uns, Jetpack zu verbessern. Teilen Sie uns mit, wenn Sie neue Ausgaben entdecken oder Verbesserungsvorschläge für diese Bibliothek haben. Bitte sieh dir die vorhandenen Probleme in dieser Bibliothek an, bevor du eine neue erstellst. Sie können einem vorhandenen Problem Ihre Stimme hinzufügen, indem Sie auf die Sternschaltfläche klicken.
Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung.
Version 1.7
Version 1.7.0-beta04
26. Juni 2024
androidx.compose.ui:ui-*:1.7.0-beta04
wurde veröffentlicht. Version 1.7.0-beta04 enthält diese Commits.
Fehlerkorrekturen
- Abstürze bei sehr großen Textzeilen vermeiden (z. B. 10.000 Zeichen) (8157ab)
- Software-Rendering-Unterstützung für die
GraphicsLayer
API deaktivieren (35ddd8) - Behebung eines Absturzes in der Ebenenpersistenzlogik. (70b13e)
- Die Wiederverwendung der Optimierung von Ebenenobjekten wurde rückgängig gemacht, da sie Renderingprobleme verursacht hat. (70b13e)
Version 1.7.0-beta03
12. Juni 2024
androidx.compose.ui:ui-*:1.7.0-beta03
wurde veröffentlicht. Version 1.7.0-beta03 enthält diese Commits.
Version 1.7.0-beta02
29. Mai 2024
androidx.compose.ui:ui-*:1.7.0-beta02
wurde veröffentlicht. Version 1.7.0-beta02 enthält diese Commits.
API-Änderungen
SemanticsProperties.Editable
wurde inIsEditable
umbenannt undSemanticsPropertyReceiver.editable
wird in einen WertisEditable
geändert. Die Eigenschaft ist jetzt ein boolescher Wert und wird immer durch Textfelder angegeben. (I8acd8)- Benchmark-Parameter für Bedienungshilfen umbenennen. (I3d440)
- Die API zum Gestalten von Links wurde aktualisiert:
TextLinkStyles
ist jetzt Teil desLinkAnnotation
-Konstruktors und derAnnotatedString.fromHtml
-Methode (I90b2b). Außerdem wurdeTextDefaults
aus Material entfernt (I5477b).
Fehlerkorrekturen
LayoutCoordinates.introducesFrameOfReference
wurde inLayoutCoordinates.introducesMotionFrameOfReference
umbenannt, um den Zweck besser widerzuspiegeln. Die zugehörige Funktion wurde umbenannt, um Koordinaten basierend auf dieser Markierung zu berechnen. (I3a330)
Version 1.7.0-beta01
14. Mai 2024
androidx.compose.ui:ui-*:1.7.0-beta01
wurde veröffentlicht. Version 1.7.0-beta01 enthält diese Commits.
API-Änderungen
performCustomAccessibilityActionLabelled
wurde inperformCustomAccessibilityActionWithLabel
undperformCustomAccessibilityActionWhere
inperformCustomAccessibilityActionWithLabelMatching
umbenannt. (I5387f)AnnotatedString.hasEqualsAnnotations
ist jetzthasEqualAnnotations
(I685c0)- Die API zum Erhalten von Material-Links im Text wurde aktualisiert. Insbesondere wurden die Methoden aus dem
TextDefaults
zum Erstellen von themenbezogenenLinkAnnotations
und zum Parsen von HTML mit themenbezogenen Links entfernt. Stattdessen wurde eineTextLinkStyles
-Klasse hinzugefügt, mit der die Links als Parameter für die zusammensetzbare Textfunktion gestaltet werden können. (I31b93)
Fehlerkorrekturen
- Fehlerkorrekturen für zusätzliche Anwendungsfälle beim dynamischen Hinzufügen von Zeigereingabemodifikatoren während der Ereignisse 63e1504
Version 1.7.0-alpha08
1. Mai 2024
androidx.compose.ui:ui-*:1.7.0-alpha08
wurde veröffentlicht. Version 1.7.0-alpha08 enthält diese Commits.
API-Änderungen
- Unterstützt Implementierungen änderbarer Formen.
Shape#createOutline
wird jetzt innerhalb von Grafikebenen beobachtet. Das Lesen von Statuswerten im Inneren führt daher zu Entwertungen, wenn sich der Zustand ändert. Dies ermöglicht leistungsstärkere Formanimationen. (Id1629, b/326070216) isPositionedByParentWithDirectManipulation
wurde inintroducesFrameOfReference
umbenannt. Beachten Sie, dass dies jetzt den umgekehrten Effekt hat. Das bedeutet, dass die meistenLayoutCoordinates
standardmäßig einen Referenzrahmen einführen und das Attribut nur bei direkter Bearbeitung den Wert „false“ hat. Um die Position nur mit solchen abzufragen, die einen Bezugsrahmen beinhalten, verwenden SiepositionInLocalFrameOfReference(...)
. OderpositionInLocalLookaheadFrameOfReference
von einemLookaheadScope
. (Ifc5f7)LookaheadScope
APIs sind jetzt stabil (I21507)- Aktionslambda für
getScrollViewportLength
gemäß Feedback des API-Council ändern. (Ibc74a) GraphicsLayer
Outline-APIs wurden aktualisiert, um float-Parameter anstelle von Ganzzahlen zu nutzen.UnsetOffset/UnsetSize IntSize
Sentinel-Werte wurden zugunsten bereits vorhandener nicht angegebener Konstanten für Inline-Klassen mit Gleitkommazahl und Größe entfernt (I2fb03, b/333863462)- Beim Einfügen von Mauseingaben während Tests akzeptieren
MouseInjectionScope.click()
,MouseInjectionScope.doubleClick()
,MouseInjectionScope.tripleClick()
undMouseInjectionScope.longClick()
jetzt einenbutton: MouseButton
-Parameter, um sie allgemein anwendbar zu machen. Der Standardwert für alle Methoden istMouseButton.Primary
. (I31a23, b/190493367, b/261439695) onClicked
wurde inLinkInteractionListener
inonClick
umbenannt. (AA35c)- Benennen Sie
TextInclusionStrategy.isInside
inisIncluded
um. Legen Sie fest, dass der RückgabetypParagraph/MultiParagraph#getRangeForRect()
nicht Nullwerte zulässig ist. (I51f26)
Fehlerkorrekturen
- Das Erfassen langer Screenshots für scrollbare Container mit
reverseScrolling=true
wurde korrigiert. (I7c59c)
Externer Beitrag
- Unterstützung für den Vorabruf von Elementen in verschachtelten
LazyLists
wurde hinzugefügt (z.B. einLazyColumn
, das verschachtelteLazyRows
rendert). Durch diese Änderung wird erwartet, dass Frame-Einbrüche beim Scrollen für dieseLazyLists
reduziert werden. Standardmäßig werden die ersten beiden verschachtelten Elemente vorab abgerufen. Dieses Verhalten kann jedoch über die neuen APIsLazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
undLazyListPrefetchStrategy#onNestedPrefetch
gesteuert werden. (I51952)
Version 1.7.0-alpha07
17. April 2024
androidx.compose.ui:ui-*:1.7.0-alpha07
wurde veröffentlicht. Version 1.7.0-alpha07 enthält diese Commits.
API-Änderungen
ClickableText
ist als veraltet markiert. Um dem Text Links hinzuzufügen, erstellen Sie einAnnotatedString
mit einemLinkAnnotation
, das Ihrem Link entspricht, und übergeben Sie diesesAnnotatedString
an die zusammensetzbare Textfunktion. (I34d4b, b/323346994)- Stelle
ViewConfiguration.HandwritingGestureLineMargin
für handschriftliche Gesten vor. Unterstützung vonJoinOrSplit
-Geste fürBasicTextField
(Ie6e13, b/325660505) FocusProperties.enter
undFocusProperties.exit
befinden sich nicht mehr in der Testphase.FocusDirection.Enter
undFocusDirection.Exit
befinden sich nicht mehr in der Testphase.FocusRequester.Cancel
ist nicht mehr experimentell (I461a1, b/261564106).- Bei der Abfrage von Layoutkoordinaten können Sie jetzt das Argument
excludeDirectManipulationOffset
verwenden, um den Versatz von übergeordneten Layouts auszuschließen, bei denen die untergeordneten Layouts mithilfe vonPlaceable.PlacementScope.withDirectManipulationPlacement
platziert wurden. Ebenso kann ein Layout, bei dem sich die Position seiner untergeordneten Elemente häufig ändert, diese nun mithilfe vonwithDirectManipulationPlacement
platzieren, wie z. B. „Scrollen“, das standardmäßig implementiert ist. Auf diese Weise sind die aufapproachLayout
basierenden Animationen intuitiver. Sie haben jetzt die Möglichkeit zu unterscheiden, welcher Offset animiert werden soll und was direkt angewendet werden soll, wenn es um die Animation des Ansatzes geht. (I60ec7) - Die Funktions-Flag für lange Screenshots wurde entfernt. (I28648, b/329128246)
LazyColumn
rendert fixierte Überschriften in langen Screenshots jetzt korrekt. (I8d239, b/329296635)NestedScroll
-Quellen „Ziehen und Ziehen“ werden durchUserInput
undSideEffect
ersetzt, um die erweiterte Definition dieser Quellen zu ermöglichen, die jetzt Animationen (Seiteneffekt) sowie Mausrad und Tastatur (UserInput
) umfassen. (I40579)ApproachLayoutModifierNode
undModifier.approachLayout
sind jetzt stabil. Das alteisMeasurementApproachComplete()
bzw.isPlacementApproachComplete()
wird durch die neuenisMeasurementApproachInProgress()
undisPlacementApproachInProgress()
ersetzt.- Eingestellter
intermediateLayout
-Modifikator wurde entfernt. (I3e91c) - Benennen Sie
GraphicsLayer#buildLayer
um, damit die Aufzeichnung die „begin“- und „endRecording“-Methoden der in Displaylist unterstützten APIs wieRenderNode
und Picture widerspiegelt. rememberGraphicsLayer
wurde zur Nutzung vonrememberObserver
aktualisiert. (I312c1, b/288494724, b/330758155)UrlAnnotation
wurde verworfen. Verwenden Sie stattdessenLinkAnnotation.Url
. Wenn Sie Material-Designs verwenden, erstellen Sie mit einemTextDefaults
-Objekt die Anmerkung mit angewendeten Material-Designs (I8d180, b/323346545).- Textlinks wurden neben dem normalen Stil auch mit der Gestaltungsoption „gedrückt“ angezeigt (I5f864, b/139312671)
String.parseAsHtml
wurde inAnnotatedString.Companion.fromHtml
umbenannt. (I43dcd)- Stilargumente (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) und ein Linkinteraktions-Listener für dieparseAsHtml
-Methode hinzugefügt. Wenn der HTML-getaggte String mit<a>
-Tags geparst wird, erstellt die Methode für jedes dieser Tags einLinkAnnotation.Url
und übergibt die Stilobjekte und den Link-Interaktions-Listener an jede Annotation. (I7c977) LinkAnnotation
verwendet jetzt die zustandsbasierten Stilargumente und einenLinkInteractionListener
. Fügen Sie diese Annotation zumAnnotatedString
hinzu, um einen Hyperlink zu erhalten. Durch die Übergabe vonfocusedState
und/oderhoveredState
können Sie die visuelleconfiguration
für Links definieren, wenn diese hervorgehoben sind und/oder der Mauszeiger darauf bewegt wird. (I81ce4, b/139312671)- Für
ImeOptions.hintLocales
können keine Nullwerte mehr eingegeben werden. Wenn Sie eine leere Gebietsschemaliste übergeben möchten, verwenden SieLocaleList.Empty
. (Ic5bc4)
Fehlerkorrekturen
- Fehlerhafte/beschädigte historische Eingabeereignisdaten werden ordnungsgemäß verarbeitet (fehlerhafte Offsetdaten werden ignoriert).
- Behebt unerwartete Zeigerereignisse, wenn ein Zeigereingabemodifikator dynamisch vor einem anderen Zeigereingabeereignis-Stream während eines aktiven Zeigereingabeereignisstreams hinzugefügt wird (z. B. zwischen einem Mouseover-Eingabe-Ereignis-Stream und einem Mouseover-Exit [Maus/Eingabestift]).
Version 1.7.0-alpha06
3. April 2024
androidx.compose.ui:ui-*:1.7.0-alpha06
wurde veröffentlicht. Version 1.7.0-alpha06 enthält diese Commits.
Neue Funktionen
- Es wurde die
parseAsHtml
-Methode für Strings mit benutzerdefinierten Stilen hinzugefügt: Sie ermöglicht das Konvertieren eines mit HTML-Tags markierten Strings inAnnotatedString
. Beachten Sie, dass nicht alle Tags unterstützt werden. Zum Beispiel können Sie noch keine Aufzählungslisten anzeigen. (I84d3d, I30626, b/139326648) - Implementierung der experimentellen Unterstützung für lange Screenshots in Compose-Scrollcontainern mithilfe der offiziellen Android API (
ScrollCaptureCallback
). Diese Funktion ist experimentell und verarbeitet derzeit möglicherweise nicht alle Fälle richtig. Aus diesem Grund ist sie derzeit standardmäßig deaktiviert. Legen Sie zum Aktivieren das FlagComposeFeatureFlag_LongScreenshotsEnabled
auf „true“ fest. (I2b055, b/329296471)
API-Änderungen
- „
fun ClipEntry.getMetadata()
“ wird in „val 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 das Ergebnis vonClipboardManager.getClip
, wenn es null ist oder nicht, um festzustellen, ob die Zwischenablage einen aktuellen Clip enthält. (I50498) - Jetzt können Sie
GraphicsLayer
-Objekte anplaceable.placeWithLayer()
-Funktionen übergeben (I1b22f). ClipboardManager.setClip
akzeptiert jetzt null, um die Zwischenablage zu leeren. (I7d2e9)- Es wurden Ressourcen-IDs zum Ausblenden von Ansichten hinzugefügt, die als Implementierungsdetails in Build-Tools verwendet werden (I99531).
- Die Anhalten-Methode
GraphicsLayer#toImageBitmap
wurde hinzugefügt, um das Rendern von Bitmap-Inhalten in einemGraphicsLayer
zu unterstützen. Dies ist ein hardwarebeschleunigter Renderingvorgang auf API-Level 22 und höher (einschließlich), der über 99% aller Android-Geräte unterstützt. Bei Android API-Level 21 wird dabei Software-Rendering verwendet. (I9e114) - Hilfsmethode zum Konvertieren eines Android-
RectF
inComposeRect
(I39925, b/325660505) - Alle
KeyboardOptions
-Parameter haben jetzt standardmäßig einen nicht angegebenen Wert. MethodeKeyboardOptions.merge
wurde hinzugefügt. KeyboardOptions.autoCorrect
wurde inautoCorrectEnabled
umbenannt und dafür gesorgt, dass Nullwerte zulässig sind, wobei null bedeutet, dass kein Wert angegeben wurde. (Ia8ba0, b/295951492)- Die Variante „
BasicTextField(state)
“ und „BasicSecureTextField
“ verwenden jetztKeyboardActionHandler
anstelle vonKeyboardActions
, um Aktionen über die Softwaretastatur zu verarbeiten. (I58dda)
Version 1.7.0-alpha05
20. März 2024
androidx.compose.ui:ui-*:1.7.0-alpha05
wurde veröffentlicht. Version 1.7.0-alpha05 enthält diese Commits.
Neue Funktionen
- Einführung der neuen
GraphicsLayer
API zur Aufzeichnung von Zeichenbefehlen in einer Anzeigeliste sowie zusätzlicher Attribute, die sich auf das Rendern der Anzeigeliste auswirken. Dies bietet eine isolierte Grenze, um eine komplexe Szene in kleinere Teile zu unterteilen, die einzeln nacheinander aktualisiert werden können, ohne die gesamte Szene nachzubilden. Transformationen an einemGraphicsLayer
können durchgeführt werden, ohne die Anzeigeliste neu aufzuzeichnen. Im Gegensatz zuModifier.graphicsLayer
ermöglichtGraphicsLayer
das Rendern von zusammensetzbaren Inhalten an anderer Stelle und ist nützlich in animierten Anwendungsfällen, bei denen davon ausgegangen wird, dass Inhalte in verschiedenen Szenen gerendert werden.
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 zur Nutzung von Android L (I1c3b5, b/288494724) - Aktualisieren Sie das Editor-Framework, um eine lokale
GraphicsContext
-Komposition zusammen mit aktualisierten Inhaber-,DelegateableNode
- unddrawWithCache
-Modifikatorimplementierungen bereitzustellen, um Zugriff auf dasGraphicsContext
für eingeschränkten Zugriff bereitzustellen.GraphicsLayer
-Instanzen werden automatisch bereinigt, wenn Modifikatoren entfernt werden. (I64a2f, b/288494724) - Einführung von
InterceptPlatformTextInput
für das Schreiben von Low-Level-IME-Tests und anderen Low-Level-IME-Anwendungsfällen.PlatformTextInputTestOverride
wurde verworfen. (I862ed, b/322680547) - Die Erweiterungsfunktion „
GraphicsLayer.setOutline(Outline)
“ wurde hinzugefügt. (Ib81f4) - Funktionskonstruktor
GraphicsContext
einführen, um eine Factory zum Erstellen vonGraphicsLayer
-Instanzen zu erstellen (Ib98d6, b/288494724) - Offengelegte
GraphicsLayer
API, um Entwicklern definierte Flexibilität bei der Erfassung von Zeichenbefehlen zu bieten, die zum Zeichnen an anderer Stelle und zum Anwenden verschiedener visueller Effekte auf das Endergebnis verwendet werden können. (I80245, b/288494724) - Führen Sie
Paragraph#getRangeForRect
ein, das einen Textbereich zurückgibt, der von einem bestimmten Rechteckbereich abgedeckt wird. (Iee516, b/325660505) - Die experimentelle Überschreibung von
BasicText
mit dem ArgumentonLinkClicked
wurde entfernt. In Zukunft wird eine Ersatz-API für die Unterstützung von Hyperlinks folgen. (I107d5)
Fehlerkorrekturen
- Die erwartete/tatsächliche API-Definition
GraphicsLayer
wurde hinzugefügt, um die Erfassung und Wiedergabe von Zeichenbefehlen mit optionalen visuellen Effekten und Transformationen zu unterstützen. Einführung derGraphicsContext
-Schnittstelle mit Grafikabhängigkeiten, einschließlich der Erstellung und Verwaltung vonGraphicsLayer
-Instanzen. (I4a8d6, b/288494724) - Ein Interoperabilitätsproblem bei der 1D-Fokussuche wurde behoben, bei dem der Fokus in einem
ComposeView
-Element steckenblieb, das zwischen anderen Ansichten eingebettet war. (I08fd4)
Externer Beitrag
LocalLifecycleOwner
wurde von der Compose-UI zulifecycle-runtime-compose
verschoben, damit die auf dem Compose-Tool basierenden Hilfs-APIs außerhalb der Compose-UI verwendet werden können. Vielen Dank an Jake Wharton für den Beitrag. (I6c41b, b/328263448)- Gleitkommazahlen-Eigenschaften für Verzerrungen werden bei allen Untertypen, die auf Verzerrungen basieren, einheitlich dargestellt. (I69f0f, b/328088992)
Version 1.7.0-alpha04
6. März 2024
androidx.compose.ui:ui-*:1.7.0-alpha04
wurde veröffentlicht. Version 1.7.0-alpha04 enthält diese Commits.
API-Änderungen
- Unterstützung der Handschriftfunktion mit Eingabestift für BasicTextField2 auf Geräten nach Android U. (I002e4)
- In dieser CL wird die semantische Aktion
GetScrollViewportLength
hinzugefügt, damit Informationen zu den Komponenten, nach denen in der Zusammensetzung gescrollt wird, an das A11y-System weitergeleitet werden können. Diese CL wendet auch die Verwendung dieser Property in scrollbaren Foundation-Listen an. (Ic5fa2) FocusRequester.createRefs
ist jetzt stabil (I4d92c, b/261436820).DelegatableNode.requireView()
wurde eingeführt, damit Modifikatorknoten das aktuelle Android-View
abrufen können, ohne eine lokale Zusammensetzung zu lesen. (I40768)- Neue API
Path.reverse()
zum Umkehren der Pfadrichtung (I36348) hintLocales
wurde zuKeyboardOptions
hinzugefügt, damitTextFields
IMEs mit bestimmten Sprachen als Hinweis auf eine bevorzugte Sprache angeben kann.- Machen Sie die
platformLocale
-Property ausLocale
verfügbar, 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
wurde veröffentlicht. Version 1.7.0-alpha03 enthält diese Commits.
API-Änderungen
- Neu:
ContextualFlowRow
und erweiterteFlowRow
/Column
mit MaxLines und Overflow. Neben der Einführung vonContextualFlowRow
undContextualFlowColumn
gibt es jetzt Verbesserungen an den experimentellenFlowRow
undFlowColumn
, die jetzt maxLines und die Überlauf-Unterstützung umfassen. Dieses Update wurde entwickelt, um Komponenten für eine optimale Leistung bereitzustellen, wobeiContextualFlow*
perfekt für eine große Anzahl von Artikeln mit einer kleinenmaxLines
-Konfiguration und dynamischer +N-Schaltflächen für die Anzeige weiterer Schaltflächen undFlowRow
undFlowColumn
ideal für eine kleine Anzahl von Artikeln, also weniger als 100 Elemente, geeignet ist. Wichtig: Wenn Sie das bestehende Verhalten inFlowRow
oderFlowColumn
beibehalten möchten, bei dem alle Elemente unabhängig davon, ob sie zum Maximum der Querachse passen, zusammengehören, setzen Sieoverflow
während der Initialisierung aufFlowRowOverflow.Visible
oderFlowColumnOverflow.Visible
. Sehen Sie sich die Beispiele für diese neuen Funktionen inContextualFlowRowSample
undFlowRowSample
an. (Ib9135, b/293577082) - Fügen Sie das Semantikattribut
maxTextLength
hinzu, das für Textfelder festgelegt werden soll, mit denen die maximal zulässige Anzahl von Zeichen gefiltert werden soll. (I24d9f, b/170648072) - Der
Modifier.inspectable
-Wrapper wurde eingestellt. Diese API führt zu mehr Entwertungen als notwendig, weshalb von ihrer Verwendung abgeraten wird. Entwicklern wird empfohlen, dieinspectableProperties()
-Methode aufModifierNodeElement
zu implementieren, wenn sie Tools Modifikatoreigenschaften zur Verfügung stellen möchten. (Ib3236) - Neuer Konstruktor für
PopupProperties
, der vollständige Kontrolle überWindowManager.LayoutParams
-Flags ermöglicht. (Ibb33e, b/312485503) DelegatableNode.requireLayoutCoordinates()
wurde eingeführt, um den aktuellenLayoutCoordinates
einerModifier.Node
abzurufen, ohneonPlaced
überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Ia8657)DelegatableNode.currentLayoutCoordinates
wurde eingeführt, um den aktuellenLayoutCoordinates
einerModifier.Node
abzurufen, ohneonPlaced
überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Iaebaa)BasicTextField2
und zugehörige APIs unter dem Paketandroidx.compose.foundation.text2
werden nachandroidx.compose.foundation.text
verschoben. (I9f635)- Eine neue
ApproachLayoutModifierNode
API wurde hinzugefügt, um die Erstellung benutzerdefinierter Ansatzlogik in einem expliziten Modifikatorknoten zu unterstützen. Es wurde außerdem eine neue experimentelleDeferredTargetAnimation
API für Animationen hinzugefügt, deren Ziel bei der Instanziierung unbekannt ist. (I60745) - Neue
Path
APIs zum Abfragen der Richtung eines Pfads und zum Extrahieren von Konturen aus einemPath
. (I63d04) PathHitTest
undPath.contains(Offset)
wurden hinzugefügt, um zu prüfen, ob einePath
einen bestimmten Punkt enthält. (I3b218)TextLayoutResult
macht jetzt diegetLineBaseline(lineIndex)
-Methode verfügbar. Dadurch kann zusätzlich zu den vorhandenen Convenience-PropertiesfirstBaseline
undlastBaseline
die Baseline einer beliebigen Textzeile gelesen werden. (Ide4e8, b/237428541)- Es wurde eine Methode hinzugefügt, mit der nur die Annotationen von zwei
AnnotatedStrings
verglichen werden können. (I32659)
Fehlerkorrekturen
- Ein Problem mit der Abwärtskompatibilität mit
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
wurde veröffentlicht. Version 1.7.0-alpha02 enthält diese Commits.
API-Änderungen
- Ein Problem mit der Binärkompatibilität von
SemanticsPropertyReceiver.performImeAction
wurde behoben. (I65865, b/322269946) - Der
PopupProperties
-Konstruktor, der einenusePlatformDefaultWidth
-Parameter verwendet, ist nicht mehr experimentell. (I8f8d2) - Es wurde eine Überlastung von
ComposeTestRule.waitUntil
hinzugefügt, die eine Stringbeschreibung der Bedingung in die Zeitüberschreitungsnachricht einschließt. (I9413e) - Neue Semantik-API
unset()
zum Entfernen von Semantikeigenschaften, die in derselben Modifikatorkette hinzugefügt werden. Neue SemantikeigenschaftisOpaque
. (I8c583, b/317966058, b/246056649) originalEventPosition
wurde aus der Kopiermethode in der öffentlichen API vonPointerInputChange
entfernt. (I7bead)
Fehlerkorrekturen
- Es wurde ein a11y-Fehler behoben, bei dem Nicht-Tabs und Nicht-Optionsschaltflächen anklickbar waren, wenn sie ausgewählt wurden. (I2181c)
- In
VelocityTracker
wird das Problem behoben, dass Punkte jetzt standardmäßig hinzugefügt werden. Die Fehlerbehebung kann immer noch deaktiviert werden, indem duVelocityTrackerAddPointsFix
auf „false“ setzt, wenn Probleme auftreten. (Ib3877, b/269487059) - Das Problem mit der abwärtskompatiblen Binärinkompatibilität in
TextStyle
undParagraphStyle
wurde behoben. (I179f0, b/320819734)
Externer Beitrag
- Ein neuer
DialogProperties
-Konstruktor ohne plattformspezifische Parameter wurde hinzugefügt. (I45829) - Ein neuer
PopupProperties
-Konstruktor ohne plattformspezifische Parameter wurde hinzugefügt. (I9a038)
Version 1.7.0-alpha01
24. Januar 2024
androidx.compose.ui:ui-*:1.7.0-alpha01
wurde 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ügt die
DeviceConfigurationOverride
API zuui-test
hinzu, um das lokale Überschreiben des Verhaltens der zu testenden Inhalte zu ermöglichen, z. B. um eine verfügbare Größe, Sprache, Layoutrichtung, Schriftgröße oder ein Design anzugeben.
Version 1.6
Version 1.6.8
12. Juni 2024
androidx.compose.ui:ui-*:1.6.8
wurde veröffentlicht. Version 1.6.8 enthält diese Commits.
Fehlerkorrekturen
- Inkonsistenzen in der Schriftskalierung, wenn die Schriftgröße unter der untersten definierten Tabelle lag, wurden behoben. In diesem Fall interpolieren wir nun zwischen der linearen 1x-Skala und der untersten definierten Tabelle, sodass die Schriftgröße mit zunehmenden Skalierungen kontinuierlich zunimmt. (Icbae3)
Version 1.6.7
1. Mai 2024
androidx.compose.ui:ui-*:1.6.7
wurde veröffentlicht. Version 1.6.7 enthält diese Commits.
Version 1.6.6
17. April 2024
androidx.compose.ui:ui-*:1.6.6
wurde veröffentlicht. Version 1.6.6 enthält diese Commits.
Fehlerkorrekturen
- Ein seltener
BasicTextField
-Absturz wurde behoben.
Version 1.6.5
3. April 2024
androidx.compose.ui:ui-*:1.6.5
wurde 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
wurde veröffentlicht. Version 1.6.4 enthält diese Commits.
Version 1.6.3
6. März 2024
androidx.compose.ui:ui-*:1.6.3
wurde veröffentlicht. Version 1.6.3 enthält diese Commits.
Version 1.6.2
21. Februar 2024
androidx.compose.ui:ui-*:1.6.2
wurde 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 mit
SemanticsPropertyReceiver.performImeAction
undSemanticsActions.PerformImeAction
wurde behoben. (Ie0bb2, b/322269946) - Bei Layouts tritt jetzt beim Messen ein Fehler auf, wenn eine ungewöhnlich große Größe zurückgegeben wird. Diese Art von Fehler tritt normalerweise auf, wenn für die Messung direkt maximale Grenzwerte angewendet werden, ohne nach
Constraints.Infinity
zu suchen. Die Prüfung hilft Entwicklern, Probleme zu finden, bei denen das Layout die falsche Größe hat und nicht das Layout, in dem es enthalten ist. (I339a9)
Version 1.6.0
24. Januar 2024
androidx.compose.ui:ui-*:1.6.0
wurde 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
wurde veröffentlicht. Version 1.6.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Optimierte Implementierung von Vektorgrafiken zur Verbesserung der Leistung durch Minimierung zusätzlicher Neuzusammensetzungen
Version 1.6.0-beta03
13. Dezember 2023
androidx.compose.ui:ui-*:1.6.0-beta03
wurde veröffentlicht. Version 1.6.0-beta03 enthält diese Commits.
Neue Funktionen
- Ein
LayoutCoordinates
kann jetzt getrennt werden, ohne dass der Knoten getrennt wird. Schützen Sie diese im Compose Layout Inspector (If693)
Fehlerkorrekturen
PlatformImeOptions
ist jetzt eine konkrete Klasse anstelle einer Schnittstelle. (If40a4)- Zusätzliche nachgelagerte Neuzusammensetzungen behoben, die verursacht wurden, weil für
LocalSoftwareKeyboardController
undLocalTextInputService
bei jeder Neuzusammensetzung eines Stamms neue Werte bereitgestellt wurden. (I42190, b/310510985)
Version 1.6.0-beta02
29. November 2023
androidx.compose.ui:ui-*:1.6.0-beta02
wurde 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
wurde veröffentlicht. Version 1.6.0-beta01 enthält diese Commits.
API-Änderungen
- Der
DragAndDropTarget
-Modifikator übernimmt jetzt explizit die empfangendeDragAndDropTarget
und hat eine Lambda-Funktion, um eine Drag-and-drop-Sitzung zu aktivieren. Es gibt jetzt zwei Factory-Funktionen für eineDragAndDropModifierNode
. einen für den Empfang von Übertragungen und einen für die Datenübertragung (I69481) maximumFlingVelocity
wurde so aktualisiert, dass es als Gleitkommazahl dargestellt wird. Die Dokumentation wurde aktualisiert, um klarere Angaben zur EinheitmaximumFlingVelocity
zu machen. (I8adc7)- „
onDragAndDropStart
“ in derDragAndDropModifierNode
-Factory wurde in „acceptDragAndDropTransfer
“ umbenannt.acceptsDragAndDropTransfer
wurde demdragAndDropTarget
-Modifikator hinzugefügt, damit er per Drag-and-drop akzeptiert. Diese Lambda-Funktion gibt einen gültigenDragAndDropTarget
zurück, wenn sie an einer Drag-and-drop-Sitzung interessiert ist. Andere Lambdas zur Verarbeitung von Drag-Events wurden dadurch ersetzt. EineDragAndDropTarget
-Factory-Funktion wurde hinzugefügt, um von Drag-and-drop-Sitzungen zu empfangen (Iebf3a). Der Typ "
DragAndDropModifierNode.drag
" fürDragAndDropInfo
wurde entfernt und akzeptiert jetzt Parameter für die Lambda-Funktion "transferData
", die Dekorationsgröße und die Lambda-Funktion "Ziehen"DrawScope
DragAndDropTarget
bietet Methoden für bestimmte Drag-and-drop-Ereignisse und keine einzelne abstrakte Methode.onDragAndDropEvent
in der Factory-Funktion für eineDragAndDropModifierNode
wurde inonDragAndDropStart
umbenannt, um besser zu kommunizieren, dass die angegebeneDragAndDropTarget
nur für eine bestimmte Drag-and-drop-Sitzung gültig istDragAndDropEventType
wurde entfernt (I645b1).PlatformTextInputModifierNode.runTextInputSession
wurde inestablishTextInputSession
umbenannt. (I03cd0)Verbessert durchsuchbare Knoten-API-Namen, um sie verständlicher zu machen. (Ia4474)
OriginalText
durchTextSubstitution
ersetzen. (Ifa5a8)PlatformTextInputModifierNode.textInputSession
wurde inrunTextInputSession
umbenannt. (Ie9c6b)Die untergeordneten Elemente von
SubcomposeLayout
(sowie darauf basierende Layouts wieLazyColumn
), die zur späteren Wiederverwendung beibehalten werden, gelten als deaktiviert. Zum Testen solcher Knoten wurde eine neueassertIsDeactivated()
-Test-API eingeführt. Die restlichen Test-APIs filtern deaktivierte Knoten standardmäßig heraus. (I2ef84, b/187188981)FocusDirection.In
undFocusDirection.Out
wurden entfernt, verwenden stattdessenFocusDirection.Enter
undFocusDirection.Exit
(I2f660)Material
SwipeToReveal
APIs (für Karten und Chips) basieren jetzt auf einer Slot-basierten API (wie von Compose empfohlen) anstelle von datenklassenbasierten Instanzen, um diese Slots zu erstellen. Dies ist eine funktionsgefährdende Änderung. In der Demo und im Beispielcode finden Sie Beispiele zur Verwendung der neuen API. (Ia8943)Der
FontStyle(int)
-Konstruktor wurde verworfen. Verwenden Sie stattdessenFontStyle.Normal
oderFontStyle.Italic
. (I66610)FontScalable
-Schnittstelle wurde inFontScaling
umbenannt (Ie804a)
Fehlerkorrekturen
SoftwareKeyboardController.show()
zeigt die Softwaretastatur nicht mehr an, wenn kein Texteditor mehr im Fokus ist. (I2165a, b/301477279)- Ereignisse mit Aufwärtstaste auf der Hardware für Tasten, die in derselben Schreibansicht kein Down-Ereignis erhalten haben, werden jetzt ignoriert. (Ib37b4, b/305518328)
- Renderer-Unterstützung für „Erledigen“-Gradient in
ArcLine
wurde hinzugefügt. (I4d5bb) - Implementiere Gleichheits- und Hashcode für
PageSize.Fixed
. (Ie3ede, b/300134276) - Binär-Kompatibilitätsproblem bei der Änderung von Window Inset beheben (Iee695)
- Entferne die Materialkernschicht für den Material3-Chip/die Schaltfläche, da die Mikro-Benchmarks auch ohne sie eine bessere Leistung zeigen. (I55555)
TestDispatcher
-Werte, die alseffectContext
-zu-Compose-Tests übergeben wurden, 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
wurde veröffentlicht. Version 1.6.0-alpha08 enthält diese Commits.
API-Änderungen
- Bei
Modifier.dragAndDrawSource
wurde die Lambda-FunktiononDrawDragShadow
indrawDragDecoration
umbenannt und beiDragAndDropInfo
wurde der Größenparameter indragDecorationSize
umbenannt. (Id0e30, b/303904810) - Führen Sie
SemanticsNodeInteraction.isDisplayed()
undSemanticsNodeInteraction.isNotDisplayed()
ein, um zu prüfen, ob ein übereinstimmender Knoten sichtbar ist oder nicht, ohne auch auf ihn zu beanspruchen. (I2c196, b/302100809) - Es wurde ein spezieller
Unspecified
-Wert für die FelderTextAlign
,TextDirection
,Hyphens
undLineBreak
vonParagraphTextStyle
eingeführt, umnull
zu ersetzen. Da es sich bei diesen Klassen um Inline-Klassen handelt, vermeiden wir das Boxen primitiver Typen, indem wir die Option "Nullwerte zulässig" durch "UnAngegeben" ersetzen. Konstruktoren, Getter und andere Methoden inTextStyle
und Absatzformat wurden aktualisiert, sodass die erwähnten Parameter als Nicht-Null-Typen akzeptiert werden. (I4197e, b/299490814) - Fügen Sie eine
GoogleFont
-Überlastung zum Lesen einerGoogleFont
aus XML hinzu. (If8f59) LoremIpsum
PreviewParameterProvider
wurde als offener Kurs hinzugefügt. (I41bf5, b/266918816, b/300116360)
Fehlerkorrekturen
FontFamilyResolver
verwendet jetztDispatchers.Main
für Cache-Verwaltungskoroutinen. (Ie8dd9)AndroidViewBinding
entfernt jetzt synchronFragment
-Instanzen, die durch Einbeziehung einesFragmentContainerView
in dein Layout in das Layout vononRelease
mithilfe voncommitNow
(anstelle des zuvor verwendetencommit
) aufgebläht wurden. Dadurch werden Probleme mit der Methode der Live-Bearbeitung behoben, bei der die Komposition bei Änderungen ersetzt wird. (I58fbf)
Version 1.6.0-alpha07
4. Oktober 2023
androidx.compose.ui:ui-*:1.6.0-alpha07
wurde veröffentlicht. Version 1.6.0-alpha07 enthält diese Commits.
API-Änderungen
- Einführung von
PlatformTextInputMethodTestOverride
zum Schreiben von Tests für benutzerdefinierte Texteditoren. (ID159b) - Fügt den
dragAndDropSource
-Modifikator zum Starten von Drag-and-drop-Sitzungen unddragAndDropTarget
für den Empfang von Drag-and-drop-Sitzungen hinzu. (Ib7828, b/286038936) - Die Sammlungen
ColorList
undColorSet
wurden hinzugefügt, bei denen Zuweisungen vermieden werden. (I744bd) - Temporäres Flag
DisableNonLinearFontScalingInCompose
zum Deaktivieren der nicht linearen Schriftskalierung hinzugefügt. Legen SieDisableNonLinearFontScalingInCompose = true
in Ihren Tests fest, wenn Sie Zeit zum Bereinigen benötigen. Dieses Flag wird in Compose 1.6.0-beta01 entfernt. (IC9486)
Fehlerkorrekturen
- Optimiertes Parsen von XML-Vektor-Drawables. (Ibb015)
Version 1.6.0-alpha06
20. September 2023
androidx.compose.ui:ui-*:1.6.0-alpha06
wurde veröffentlicht. Version 1.6.0-alpha06 enthält diese Commits.
API-Änderungen
- Zusätzliche Optimierungen für Material-Symbole. (I3e08d)
- Bietet die Möglichkeit, einen Modifikatorbaum nach oben/unten zu durchlaufen, um ähnliche Knoten zu finden. (I2d234)
onRestoreFailed()
-Callback zumfocusRestorer()
-Modifikator hinzugefügt (Ie1d43)- Verschiedene Grafik-APIs wurden androidx-Anmerkungen hinzugefügt, um
ColorInt
,FloatRange
,IntRange
,Size
und mehr anzugeben. (Id65c8, b/290950582) showSystemUi=true
zurPreviewScreenSizes
-Definition hinzufügen (Ib61d3)
Änderungen im Verhalten
- In „Compose“ wird jetzt eine nicht lineare Schriftskalierung verwendet, um die Lesbarkeit und Barrierefreiheit zu verbessern. Ist die Schriftgröße in den Systemeinstellungen höher als 100 %, wird kleiner Text normal vergrößert, aber bereits großer Text vergrößert sich nur geringfügig. Außerdem werden die im SP definierten Zeilenhöhen automatisch so angepasst, dass sie proportional zur geplanten Höhe von 100% bleiben. Weitere Informationen finden Sie unter Best Practices für die Schriftskalierung (I11518).
Version 1.6.0-alpha05
6. September 2023
androidx.compose.ui:ui-*:1.6.0-alpha05
wurde veröffentlicht. Version 1.6.0-alpha05 enthält diese Commits.
API-Änderungen
- Inhaltsaufnahme in
AndroidComposeViewAccessibilityDelegateCompat
aktivieren. (Ib2969) - Die Bewegungsgeschwindigkeiten in Komponenten der Datenansicht wie
ScrollView
undRecyclerView
sind aufViewConfiguration.ScaledMaximumFlingVelocity
begrenzt. „Compose“ enthält jetzt eine eigene Version vonmaximumFlingVelocity
, die jetzt fürDraggable
gilt. (Ibf974) - Fügt ein anfängliches Gerüst hinzu, um Drag-and-drop-APIs auf der Plattform zu unterstützen. (If84ce)
deviceId
zuRotaryScrollEvent
hinzufügen (Iba3bf)- Die
ui-tooling
Devices API wurde aktualisiert, sodass neuere Geräte (Ib25b4) einbezogen werden
Version 1.6.0-alpha04
23. August 2023
androidx.compose.ui:ui-*:1.6.0-alpha04
wurde veröffentlicht. Version 1.6.0-alpha04 enthält diese Commits.
API-Änderungen
- Es wurde eine Methode zum Deaktivieren von
ReusableComposition
hinzugefügt. Dabei werden Beobachtungen entfernt, aber Knoten beibehalten. Die deaktivierte Zusammensetzung kann durch Aufrufen vonsetContent
wieder aktiviert werden. (Ib7f31) ReusableComposition
-Schnittstelle zur Verwaltung des Lebenszyklus und der Wiederverwendung von Unterzusammensetzungen hinzugefügt. (I812d1, b/252846775)Modifier.focusGroup
wurde zu stabilen APIs hochgestuft. (I7ffa3)- Verschiedene Grafik-APIs wurden androidx-Anmerkungen hinzugefügt, um
ColorInt
,FloatRange
,IntRange
,Size
und mehr anzugeben. (I70487, b/290950582) - Die
ColorFilter
API wurde aktualisiert und enthält jetzt konkrete abgeleitete Klassentypen, um die Überprüfbarkeit von Parametern zu verbessern. (I5fe29) - Einführung der Wear-Tooling-Vorschaubibliothek zur Auflistung gültiger Wear-Geräte, die für UI-Vorschauen verwendet werden können (Ib036e)
- Die
FontScalable
-Schnittstelle wurde erstellt, um die Schriftskalierung der Benutzeroberfläche für die Kompaktheitsgrad zu verarbeiten. (I2cf3f)
Version 1.6.0-alpha03
9. August 2023
androidx.compose.ui:ui-*:1.6.0-alpha03
wurde veröffentlicht. Version 1.6.0-alpha03 enthält diese Commits.
API-Änderungen
- Neue Art von Übergang zwischen Ein- und Ausstieg, bei der der Inhalt basierend auf der Größe des Animationscontainers während der Ein- und Ausstiegsanimation skaliert wird.
LookaheadScope
Der zusammensetzbare Spaß und die Benutzeroberfläche 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 Zustand ändert. (I676a1, b/292257547)- Textfelder, die die Tastatur anzeigen und bearbeitbar sind, wenn
readOnly
auf „true“ gesetzt ist, wurden korrigiert. Außerdem wurde behoben, dass die Tastatur nicht angezeigt wurde, wennreadOnly
im Fokus von "true" zu "false" geändert wurde. (I34a19, b/246909589) - Erweiterte Anwendung globaler Assertions bei UI-Tests. (I1f90d)
Version 1.6.0-alpha02
26. Juli 2023
androidx.compose.ui:ui-*:1.6.0-alpha02
wurde veröffentlicht. Version 1.6.0-alpha02 enthält diese Commits.
API-Änderungen
- Es wurde eine Schnittstelle für die Dienstsuche hinzugefügt, die von Implementierern von Kompositionen implementiert werden kann. Diese ermöglicht eine Implementierung von Kompositionen, die die Suche an einen anderen Kompositionsdelegatdienst auf die ursprüngliche Komposition delegiert. Dies sollte nicht als „directy“ bezeichnet werden und wird verwendet, um in der Laufzeit experimentelle APIs zu erstellen, die in verpackten Versionen des Composers zu finden sind, z. B. im UI-Modul. (I296b9)
- Komplett überarbeitete
PlatformTextInput*
API. (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardController
undLocalSoftwareKeyboardController
befinden sich nicht mehr in der Testphase.LocalSoftwareKeyboardController
ist jetzt auch ein richtigerCompositionLocal
. (I4c364)LookaheadLayout
undLookaheadLayoutScope
wurden für einige Releases eingestellt und sind jetzt entfernt. Die Ersatz-APIs sindLookaheadScope
und funktionieren mit jedem Layout. (I12ac3)SemanticsNodeInteraction.requestFocus
wurde hinzugefügt, um den Fokus bei Tests bequemer und auffindbarer zu machen. (Ie8722)- Fügen Sie experimentelle APIs zum Registrieren globaler Assertions hinzu, um sie in Zukunft für Framework-Tests zu verwenden. (I12d77)
Fehlerkorrekturen
- Der erste Aufruf des
update
-Callbacks vonAndroidView
wird jetzt zurückgestellt, bis die Ansicht angehängt wird. Er wird nicht ausgeführt, wenn die Zusammensetzung, mit derAndroidView
angewendet wird, angewendet wird. Dadurch wird ein Fehler behoben, bei dem derupdate
-Callback nicht ungültig wurde, wenn ein gelesener Status sofort durch einen Effekt geändert wurde. (Ie9438, b/291094055)
Version 1.6.0-alpha01
21. Juni 2023
androidx.compose.ui:ui-*:1.6.0-alpha01
wurde veröffentlicht. Version 1.6.0-alpha01 enthält diese Commits.
Neue Funktionen
- Lookahead in
LazyList
wird unterstützt. Dadurch kannLazyList
im Lookahead-Pass alle Animationen (z. B. Animation der Elementplatzierung,AnimatedVisibility
usw.) umgehen und die Lookahead-Größe und -Position für alle untergeordneten Elemente berechnen. Nach dem Lookahead-Pass können untergeordnete Elemente vonLazyList
unabhängig voneinander animiert werden, wie im Lookahead-Pass dargestellt.
Verhaltensänderung: „includeFontPadding“ ist in „Compose“ jetzt standardmäßig auf „false“ gesetzt
includeFontPadding
ist in „Schreiben“ jetzt standardmäßig auf „false“ gesetzt (21d806).
includeFontPadding
ist ein altes Attribut, das steuert, ob oberhalb der ersten und letzten Zeile des Textes ein zusätzlicher Abstand hinzugefügt werden soll, um Zeichen aufzunehmen, die über oder unter den Grundlinien des Textes stehen.
Wenn Sie diese Version von „Compose“ aktualisieren, wird die Darstellung aller Texte in Ihrer Benutzeroberfläche geändert, indem der zusätzliche Abstand oben in der ersten und letzten Zeile jedes angezeigten Texts entfernt wird.
Je nach Ihren UI-Anforderungen und den verwendeten Schriftmesswerten sollten die Änderungen minimal sein. Es können jedoch Probleme wie die folgenden auftreten: – Fehlerhafte Screenshot-Tests. Korrigieren Sie die Benutzeroberfläche, falls erforderlich, und generieren Sie die goldenen Bilder neu. - Der Text ist nicht korrekt ausgerichtet. Entfernen Sie gegebenenfalls benutzerdefinierte Abstände für ausgeschlossene Elemente oder fügen Sie einen zusätzlichen Abstand hinzu.
Sie können includeFontPadding
aktivieren, indem Sie für jeden Text PlatformTextStyle
verwenden:
Text(
text = myText,
style = TextStyle(
lineHeight = 2.5.em,
platformStyle = PlatformTextStyle(
includeFontPadding = true/false
)
/* … */
)
)
Du kannst includeFontPadding
für alle deine Texte aktivieren, indem du deine Material-Stile konfigurierst. Beachten Sie, dass die Parameternamen zwischen M2 und M3 variieren.
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.
Sollten im Zusammenhang mit dieser Änderung Probleme auftreten, melden Sie diese bitte über die Problemverfolgung.
API-Änderungen
InputConnection#requestCursorUpdates
unterstützen (I0c69b)FocusRequester.saveFocusedChild
undFocusRequester.restoreFocusedChild
hinzugefügt (Ic557e, b/272302679, b/275157318)- Füge den Wurfables, die beim Laden von Bitmap-Assets mit einer Beschreibung des Asset-Pfads, der nicht geladen werden konnte, den Typ
ResourceResolutionException
hinzu. (I19f44, b/230166331, b/278424788) - Optimierte Zugänglichkeit für Leistung und Arbeitsspeicherzuweisung (Iede48)
- Semantikeigenschaften und Aktionen zur Unterstützung der Textübersetzung wurden hinzugefügt. (I4a6bc)
- Neue Property in
IntrinsincMeasureScope
und ihren Implementierungen (z.B.MeasureScope
), die angibt, ob die aktuelle Messungskarte eine Lookahead-Karte ist. (I7a812) - Die
DrawScope
API wurde aktualisiert, um die Möglichkeit zu bieten, das Rendering auf einen anderen Canvas mit alternativer Dichte/Layoutrichtung und Größe zu übertragen. DrawContext
wurde aktualisiert, um die Konfiguration von Dichte und Layoutrichtung zu unterstützen und den Canvas konfigurierbar zu machen. (Ie1f9b, b/225408150)Paragraph#fillBoundingBoxes
wurde hinzugefügt, um Zeichenbegrenzungsrahmen zu berechnen. (If30ee)- Ein Satz gemeinsamer
MultiPreviews
(Ia5a27) wurde hinzugefügt.
Fehlerkorrekturen
- Es wurde eine
FocusTargetModifierNode
-Oberfläche hinzugefügt, die zum Erstellen einer benutzerdefiniertenFocusTarget
verwendet werden kann. (I9790e) - Die
fallback*
-Parameter imTextMeasurer
-Konstruktor wurden indefault*
umbenannt. (I940a5) SemanticsPropertyReceiver.performImeAction
wurde inonImeAction
undSemanticsActions.PerformImeAction
inOnImeAction
umbenannt. (I8e841)- Fügt ein Rad hinzu, um das Scrollen mit der Maus von einem Ziehen beim verschachtelten Scrollen (insbesondere in
NestedScrollConnection
) zu unterscheiden (Ie57e4). - Es wurde die
asComposePaint
API hinzugefügt, umtoComposePaint
zu ersetzen, da das zurückgegebene Objekt das ursprünglicheandroid.graphics.Paint
umschließt (I22b4c). SemanticsProperties.imeAction
verwerfen und durch einen neuen Parameter fürSemanticsActions.performImeAction
ersetzen. (I4a587)- Die Auswahl per Maus wird jetzt unterstützt. Die berührungsbasierte Auswahl wird um Wort für Wort erweitert und um Zeichen verkleinert. (IC0c6c, b/180639271)
Paragraph
-Methoden, die bisherAssertionError
für Offsets außerhalb des gültigen Bereichs ausgelöst haben, geben jetztIllegalArgumentException
wieMultiParagraph
aus. (I549d3, b/243338896)
Version 1.5
Version 1.5.4
18. Oktober 2023
androidx.compose.ui:ui-*:1.5.4
wurde veröffentlicht. Version 1.5.4 enthält diese Commits.
Version 1.5.3
4. Oktober 2023
androidx.compose.ui:ui-*:1.5.3
wurde veröffentlicht. Version 1.5.3 enthält diese Commits.
Fehlerkorrekturen
- (b/301209788)
TextField
hat beim Fokussieren und Eingeben von koreanischer Eingabe gelegentlich falsche Befehle angewendet, wodurch Zeichen verloren gingen.
Version 1.5.2
27. September 2023
androidx.compose.ui:ui-*:1.5.2
wurde veröffentlicht. Version 1.5.2 enthält diese Commits.
Fehlerkorrekturen
- Es wurde eine Problemumgehung für Abstürze hinzugefügt, bei denen über einen Hintergrundthread auf die Accessibility Scroll API zugegriffen wurde.
- Das Hinzufügen nicht angehängter Knoten zur Semantikstruktur wurde behoben.
Version 1.5.1
6. September 2023
androidx.compose.ui:ui-*:1.5.1
wurde veröffentlicht. Version 1.5.1 enthält diese Commits.
Fehlerkorrekturen
- Textfelder, die die Tastatur anzeigen und bearbeitbar sind, wenn
readOnly
auf „true“ gesetzt ist, wurden korrigiert. Außerdem wurde behoben, dass die Tastatur nicht angezeigt wurde, wennreadOnly
im Fokus von "true" zu "false" geändert wurde. (I34a19, b/246909589)
Version 1.5.0
9. August 2023
androidx.compose.ui:ui-*:1.5.0
wurde veröffentlicht. Version 1.5.0 enthält diese Commits.
Version 1.5.0-rc01
26. Juli 2023
androidx.compose.ui:ui-*:1.5.0-rc01
wurde veröffentlicht. Version 1.5.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Ein Absturz behoben, der bei der Verwendung von
SubcomposeLayout
inmovableContentOf()
auftrat, wurde behoben.
Version 1.5.0-beta03
28. Juni 2023
androidx.compose.ui:ui-*:1.5.0-beta03
wurde veröffentlicht. Version 1.5.0-beta03 enthält diese Commits.
Fehlerkorrekturen
- Es wurde eine FocusTargetModifierNode-Oberfläche hinzugefügt, mit der ein benutzerdefiniertes FocusTarget erstellt werden kann. (Ifb1d6)
- Es wurde ein Problem mit zusammensetzbaren Funktionen für Dialogfelder und Pop-ups behoben, die dazu führten, dass die Größe des untergeordneten Fensters bei
usePlatformDefaultWidth=true
nicht wie erwartet geändert wurde. (I112ee)
Version 1.5.0-beta02
7. Juni 2023
androidx.compose.ui:ui-*:1.5.0-beta02
wurde 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 zur Verwendung in Compose zu ermöglichen.
Fehlerkorrekturen
- Es wurde die
asComposePaint
API hinzugefügt, umtoComposePaint
zu ersetzen, da das zurückgegebene Objekt das ursprünglicheandroid.graphics.Paint
umschließt (I22b4c).
Version 1.5.0-beta01
24. Mai 2023
androidx.compose.ui:ui-*:1.5.0-beta01
wurde veröffentlicht. Version 1.5.0-beta01 enthält diese Commits.
API-Änderungen
- Zuweisungen bei Neuzusammensetzung, Farbanimationen und
AndroidComposeView
(Ib2bfa) wurden entfernt. - Fügt Hilfsfunktionen wie
CacheDrawModifierNode()
hinzu, um das Delegieren zu ermöglichen (Icf8f9) - Einführung der
isLookingAhead
-Property, die überMeasureScope
zugänglich ist, um Lookahead-Ergebnisse zu beobachten und gegebenenfalls den Hauptpass zu beeinflussen. (Ibf4c3) - Neue Semantikeigenschaft
traversalIndex
, eine Gleitkommazahl zur Neuanordnung von Knoten beimTalkBack
-Durchlauf (niedrigere Werte stehen davor). (I9a81b, b/186443263) - Semantikeigenschaft „
isContainer
“ wird in „isTraversalGroup
“ umbenannt (I121f6) ColorProducer
hat jetzt einenoperator fun invoke
anstelle vonproduce
(I4a9a2)- Fügen Sie die Transformation API
Path
hinzu, um Umwandlungs-, Skalierungs- und Rotationstransformationen auf Pfadobjekte anzuwenden. (I23434, b/233772232) - Die Methode von
ColorProducer
heißtproduce
. (I78bde) toFrameworkColorSpace
intoAndroidColorSpace
umbenennen (I4f547)- Benennen Sie
ColorLambda
inColorProducer
um. (I73b1a) - Einführung von APIs zur Konvertierung zwischen den Farbraumtypen „Android“ und „Compose“ (Ie7db4, b/279979665)
BasicText
wurde ein Farbparameter hinzugefügt, um eine effiziente Animierung oder Festlegung der Textfarbe zu ermöglichen. (Iffd88, b/246961787)TextRange.constrain
wurde inTextRange.coerceIn
umbenannt. (I31be2)- Der optimierte
TextStyle.merge(...)
mit vollständiger Parameterliste wurde hinzugefügt. (Iad234, b/246961787) - Viele Text-APIs wie
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
undMultiParagraph.paint(Brush)
wurden stabilisiert. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPadding
wurde nicht mehr eingestellt. Ursprünglich wollten wir das Feld entfernen. Das Feedback zeigt jedoch, dass Entwickler diese Konfigurationsoption benötigen. Entfernen Sie daher die Einstellung aus dem Feld (I98e96, b/277703184).- Öffentliche Methode
TextRange.constrain
wurde hinzugefügt. (I97912) UrlAnnotation
-Werte inAnnotatedString
Sek. können jetzt über Bedienungshilfen wieTalkBack
geöffnet werden. (If4d82, b/253292081)- Die Semantikaktion
InsertTextAtCursor
für Textfelder wurde hinzugefügt. (I11ed5) - Der
LineHeightStyle.Alignment(topRatio)
-Konstruktor wird zur Stable API hochgestuft. (I79c32, b/261565383) TextMeasurer
und zugehörige APIs sind nicht mehr experimentell. (I74647, b/261581753)- Die Semantikaktion
PerformImeAction
zum Aufrufen der IME-Aktion auf Texteditorknoten wurde hinzugefügt. (Ic606f, b/269633506) PlatformTextInput
APIs sind nicht mehr experimentell für Android. (I668eb)- Name des Wertparameters für
Enum.valueOf
geändert (Ia9b89) - mehr ausgelöste Ausnahmen von enum valueOf (I818fe)
- Einführung einer neuen Low-Level-
PlatformTextInputAdapter
-API zum Erstellen benutzerdefinierter Texteingabeimplementierungen, die direkt mit Plattform-APIs kommunizieren. (I58df4) - Der
BlendMode
-Parameter wurde den MethodenDrawScope.drawText
,Paragraph.paint
undMultiParagraph.paint
hinzugefügt, um beim Zeichnen von Text auf Canvas verschiedene Mischalgorithmen zu unterstützen. (I57508) - Benennen Sie
Font.MaximumAsyncTimeout
inFont.MaximumAsyncTimeoutMillis
um. Nur umbenennen. (I07af5) - Aktualisierte DPI-Werte von
@Preview
Referenzgeräten (Id6151, b/254528382) - Füge
BasicText
die Parameterbrush
undalpha
hinzu, um den Textpinsel effizient zu animieren oder festzulegen. - Definieren Sie kastenfreie Lambda-Typen für Float, Double, Long, Int und Short in :ui:ui-unit (I6f18d, b/246961787).
Fehlerkorrekturen
- Mehrere Zuweisungen bei der Zeiger-Geschwindigkeitsverfolgung wurden entfernt (I26bae).
- Weniger Zuweisungen bei der Verwaltung von Layout- und Zeigereingabe (I5333a)
- Vektorspeichernutzung und Rendering der ersten Frames optimieren (I2f3c6)
- Zuweisungen beim Zeichnen von Linien und Punkten mit Canvas wurden entfernt (I9f535).
- Dokumente für
AndroidFont.fontVariationSettings
(I7d9e2) hinzufügen
Externer Beitrag
- Verbesserte Leistung und geringere Zuweisungen in Vector APIs (I906cb)
Version 1.5.0-alpha04
10. Mai 2023
androidx.compose.ui:ui-*:1.5.0-alpha04
wurde veröffentlicht. Version 1.5.0-alpha04 enthält diese Commits.
Neue Funktionen
Modifier.Node
-Delegationsverbesserungen Es wurde eine verbesserte Möglichkeit zum Delegieren an andereModifier.Node
-Instanzen über eineDelegatingNode
hinzugefügt. Dazu können die APIsdelegate
undundelegate
verwendet werden. Vor dieser Änderung musste jede API des delegierenden Knotens explizit an den delegierten Knoten delegiert werden. Nach dieser Änderung werden Knotenschnittstellen implizit delegiert, es sei denn,DelegatingNode
überschreibt sie explizit. (67352bc)
API-Änderungen
- Stell
NestedScrollModifierNode
vor, einNestedScroll Modifier.Node
, das delegiert werden kann. (I69513) - Der zusammensetzbaren Funktion
AndroidViewBinding
wurden die ParameteronReset
undonRelease
hinzugefügt, was die zusammensetzbare FunktionAndroidView
widerspiegelt und die Unterstützung für die Wiederverwendung von Ansichten mitViewBinding
aktiviert wurde. (I00b1e, b/276802519) - Die Compose Path API wurde aktualisiert, um Zurückspulen zu unterstützen, um Anwendungsfälle mit häufiger Pfadbearbeitung mit schnellerer Wiederverwendung zu unterstützen. (I7b797)
- Der optimierte
TextStyle.merge(...)
mit vollständiger Parameterliste wurde hinzugefügt. (Iad234, b/246961787) - Viele Text-APIs wie
Brush
,DrawStyle
,TextMotion
,DrawScope.drawText
,Paragraph.paint(Brush)
undMultiParagraph.paint(Brush)
wurden stabilisiert. (I2f740, b/261581564, b/261581931, b/261561245) PlatformTextStyle.includeFontPadding
wurde nicht mehr eingestellt. Ursprünglich wollten wir das Feld entfernen. Das Feedback zeigt jedoch, dass Entwickler diese Konfigurationsoption benötigen. Entfernen Sie daher die Einstellung aus dem Feld (I98e96, b/277703184).
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem die Tastatur für Textfelder in Dialogfeldern, die nicht mit der zusammensetzbaren Funktion
Dialog
erstellt wurden, nicht angezeigt wurde. (I82551, b/262140644)
Version 1.5.0-alpha03
19. April 2023
androidx.compose.ui:ui-*:1.5.0-alpha03
wurde veröffentlicht. Version 1.5.0-alpha03 enthält diese Commits.
Neue Funktionen
- Das neue Standardverhalten für
SubcomposeLayout
inLookaheadScope
:SubcomposeLayouts
ohne bedingte Slots (z. B.TabRow
,Scaffold
,BoxWithConstraints
usw.) funktioniert jetzt gut mit Lookahead-Animationen.
API-Änderungen
- Mit der neuen Standard-
intermediateMeasurePolicy
, die die Messungsrichtlinie aus dem Lookahead-Pass wiederverwendet, könnenSubcomposeLayout
-Untertypen ohne bedingte Slots wieScaffold
,TabRow
undBoxWithConstraints
standardmäßig mit Lookaheads verwendet werden. (Id84c8) - Der für ein Android-Fenster erstellte Recomposer blockiert jetzt nur dann
withFrameNanos
-Aufrufe anstelle aller Kompositionen, wenn eineON_STOP
-Benachrichtigung eingeht. Das bedeutet, dass Fenster, die mit beendeten Aktivitäten verknüpft sind, bei Datenänderungen weiterhin neu zusammengesetzt werden, aber die Animationen oder andere Aufrufer vonwithFrameNanos
werden blockiert. (Id9e7f, b/240975572) - Ändert „
motionEventSpy
“ in „Stabil“. (Ic5ec4, b/261560988) - Öffentliche Methode
TextRange.constrain
wurde hinzugefügt. (I97912) PlatformTextStyle.includeFontPadding
wurde nicht mehr verworfen, um Entwickler zu ermutigen, diese Kompatibilitäts-API zu verwenden, um die EinstellungincludeFontPadding
auf „false“ zu ändern und zu testen. (I98e96, b/277703184)
Version 1.5.0-alpha02
5. April 2023
androidx.compose.ui:ui-*:1.5.0-alpha02
wurde veröffentlicht. Version 1.5.0-alpha02 enthält diese Commits.
API-Änderungen
- Neue
SubcomposeLayout
API, die eine zusätzliche Richtlinie für Zwischenwerte zum Verarbeiten von Mess-/Layoutlogik während Lookahead-Animationen verwendet. (I017d3) - PointerInput ist jetzt faul und verwendet Modifier.Node, um die Leistung zu verbessern. Weitere Informationen zur geringfügigen Verhaltensänderung (15 Tage)
- Ändert experimentelle APIs mit Schlüsselereignissen in stabil. (I9c7d8, b/261566839, b/261567368)
- Ändert experimentelle APIs in
PointerInputChange
in stabil. (I1b543, b/261560988, b/261565762, b/261565749) - Fügt eine Möglichkeit zum Instanziieren einer
SuspendingPointerInputModifierNode
für komplexereModifier.Node
-Implementierungen hinzu. (IC4933) UrlAnnotation
-Werte inAnnotatedString
Sek. können jetzt über Bedienungshilfen wieTalkBack
geöffnet werden. (If4d82, b/253292081)- Es wurde eine API hinzugefügt, um Hardwareschlüssel abzufangen, bevor sie an die Bildschirmtastatur gesendet werden (I4f4c6, b/186800395).
- Die Semantikaktion
InsertTextAtCursor
für Textfelder wurde hinzugefügt. (I11ed5) - Bei textbezogenen Testaktionen (z.B.
performTextInput
) wird der Fokus jetzt direkt über die semantische Aktion angefordert, anstatt auf das Feld zu klicken. (I6ed05)
Fehlerkorrekturen
- Für Texttestaktionen müssen jetzt Textfelder aktiviert werden. (Iab328)
Version 1.5.0-alpha01
22. März 2023
androidx.compose.ui:ui-*:1.5.0-alpha01
wurde veröffentlicht. Version 1.5.0-alpha01 enthält diese Commits.
API-Änderungen
- Modifier.intermediateLayout erfordert jetzt kein explizites LookaheadScope. Der Messwertblock in „intermediateLayout“ hat „IntermediateMeasureScope“ als Empfänger und bietet damit das praktische CoroutineScope, LookaheadScope und MeasureScope.(Ibe2e5)
- LookaheadLayout wurde durch LookaheadScope ersetzt, das kein Layout mehr ist. Dadurch können Chid-Inhalte in einem LookaheadScope direkt über die MeasurePolicy des übergeordneten Elements gesteuert werden. (Ibe2e5)
- Fügt
Modifier.Node#coroutineScope
hinzu, damit Modifier.Nodes Koroutinen starten kann. (I76ef9) - Modifier.Nodes zum Lesen von CompositionLocals durch Implementieren der CompositionLocalConsumerModifierNode-Schnittstelle zulassen (Ib44df)
- Weitergabe der Klasse "@Veraltet" an eine Property. (I882d1)
Version 1.4
Version 1.4.3
3. Mai 2023
androidx.compose.ui:ui-*:1.4.3
wurde veröffentlicht. Version 1.4.3 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Problem behoben, bei dem
AndroidView
bei Verwendung mit bestimmten Modifikatoren nicht korrekt dargestellt wurde. (I4dc77, b/274797771) - Ein Fehler in der 2D-Fokussuche wurde behoben, der
DropDown
-Menüs betraf (b/276811828). - Es wurde ein Fehler in den Eingabe-/Exit-Eigenschaften des benutzerdefinierten Fokus behoben, bei dem der Eingabe-/Exit-Block nur beim ersten Aufrufen der Lambda-Funktion ausgeführt wurde (b/277234245).
- Eine Regression im Fokussystem, die beim Lesen von
focusProperties
zu einem Absturz geführt hat, wurde behoben. (b/271324781, b/274897776)
Version 1.4.2
19. April 2023
androidx.compose.ui:ui-*:1.4.2
wurde veröffentlicht. Version 1.4.2 enthält diese Commits.
Fehlerkorrekturen
- Ein Problem wurde behoben, bei dem
AndroidView
seine Modifikatoren nicht korrekt wiederverwendet hat, was möglicherweise zu unerwartetem Verhalten und Abstürzen führte. (Ib67ee, b/275919849) - Problem behoben, bei dem die Tastatur für Textfelder in nicht mit der zusammensetzbaren
Dialog
-Funktion erstellten Dialogfeldern nicht angezeigt wurde (I82551, b/262140644)
Version 1.4.1
5. April 2023
androidx.compose.ui:ui-*:1.4.1
wurde veröffentlicht. Version 1.4.1 enthält diese Commits.
Fehlerkorrekturen
- Behebt ein Problem mit
ParentDataModifier
, dasAndroidView
nicht betrifft (b/274797771)
Version 1.4.0
22. März 2023
androidx.compose.ui:ui-*:1.4.0
wurde 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 Lazy-List-Elemente angepinnt werden können, damit sie nicht verworfen werden, wenn sie außerhalb des gültigen Bereichs gescrollt werden.Modifier.focusable()
verwendet diesen Mechanismus beispielsweise, um das Element anzupinnen, auf dem der Fokus gerade liegt. (Ib8881, b/259274257, b/195049010) - Das Fokussystem wird mithilfe der neuen experimentellen
Modifier.Node
APIs neu geschrieben. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/916/914{/151818) - In der
IsContainer
-Semantikeigenschaft auf Oberflächen hinzugefügt. Diese Eigenschaft wird in einer späteren Änderung verwendet, mit der die Durchquerungsreihenfolge basierend auf der semantischen Bedeutung von Elementen wie Oberflächen festgelegt wird. (I63379) - Die neue Bedienungshilfen-Rolle
DropdownList
wurde hinzugefügt. Damit kann das Verhalten vonTalkBack
beim Fokussieren aufandroid.widget.Spinner
repliziert werden. (I177e5, b/236159001) - Du kannst jetzt
PlatformTextStyle(emojiSupportMatch)
verwenden, um die Verarbeitung der Emoji-Unterstützung für einen einzelnen Absatz zu deaktivieren. (Ia7100, b/139326806) - In Android Compose-UI-Tests werden jetzt Layoutübergänge für jeden Frame ausgeführt, wenn Frames ausgeführt werden, um inaktiv zu werden (z.B. über
waitForIdle
). Dies kann sich auf Tests auswirken, bei denen die Bestätigung einzelner Frames von Layoutanimationen durchgeführt wird. (I8ea08, b/222093277) - Die experimentelle Funktion
TextMotion
wurde zuTextStyle
hinzugefügt, um für Text entwederStatic(default)
oder Animiert zu definieren. Verwenden SieTextMotion.Animated
, wenn der Text durch Animation skaliert, übersetzt oder gedreht werden soll. (I24dd7)
Version 1.4.0-rc01
8. März 2023
androidx.compose.ui:ui-*:1.4.0-rc01
wurde veröffentlicht. Version 1.4.0-rc01 enthält diese Commits.
API-Änderungen
- Es wurde eine Überlastung der zusammensetzbaren Funktion
AndroidView
hinzugefügt, die den ParameteronReset
akzeptiert. Damit können View-Instanzen wiederverwendet werden, wenn ihr Knoten in der Zusammensetzung verworfen und auf kompatible Weise wiederverwendet wird. Dies ist besonders nützlich fürLazyRows
undLazyColumns
der Ansichten. (I3f10d, b/230099236) - Einführung einer neuen Low-Level-
PlatformTextInputAdapter
-API zum Erstellen benutzerdefinierter Texteingabeimplementierungen, die direkt mit Plattform-APIs kommunizieren. (I58df4)
Fehlerkorrekturen
- Mit der Semantikaktion
SetText
vonBasicTextField
wird der Textpuffer jetzt mit demselben Codepfad wie IME-Updates und die Testfunktionen (z.B.performTextReplacement
) aktualisiert. - Für 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
wurde veröffentlicht. Version 1.4.0-beta02 enthält diese Commits.
API-Änderungen
- Die
modifierElementOf()
API wurde entfernt. Bitte verlängern Sie es stattdessen direkt vonModifierNodeElement
. (I2256b) - Es wurde ein neuer
Modifier.Node.onReset()
-Callback hinzugefügt, mit dem du einen lokalen Status zurücksetzen kannst, damit der Fall bei der Wiederverwendung vonLayout
korrekt verarbeitet wird (z. B. als Element vonLazyColumn
). Das ProblemFocusTargetModifierNode
wurde behoben, damit der fokussierte Zustand korrekt zurückgesetzt wird. (I65495, b/265201972) - Der
BlendMode
-Parameter wurde den MethodenDrawScope.drawText
,Paragraph.paint
undMultiParagraph.paint
hinzugefügt, um beim Zeichnen von Text auf Canvas verschiedene Mischalgorithmen zu unterstützen. (I57508)
Fehlerkorrekturen
- Der Algorithmus für die Fokusreihenfolge von Bedienungshilfen wurde verbessert. So werden beispielsweise die oberen/unteren Balken häufiger zuerst bzw. zuletzt vorgelesen (74e9c5).
Version 1.4.0-beta01
8. Februar 2023
androidx.compose.ui:ui-*:1.4.0-beta01
wurde veröffentlicht. Version 1.4.0-beta01 enthält diese Commits.
API-Änderungen
PinnableContainer.PinnedHandle.unpin()
wurde inrelease()
(I4667a) umbenanntwaitUntilNodeCount
,waitUntilAtLeastOneExists
,waitUntilExactlyOneExists
undwaitUntilDoesNotExist
wurden als experimentelle API zuComposeTestRule
hinzugefügt, wodurch diewaitUntil
API so erweitert wird, dass sie alle Matcher und eine beliebige Anzahl von Knoten akzeptiert. Weitere Informationen finden Sie unterComposeTestRule
. (Ifa1b9, b/226934294)- Benennen Sie
Font.MaximumAsyncTimeout
inFont.MaximumAsyncTimeoutMillis
um. (I07af5) GoogleFont.Provider.AllFontsListUri
wurde entfernt und stattdessen in ktdoc verknüpft. (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
wurde veröffentlicht. Version 1.4.0-alpha05 enthält diese Commits.
API-Änderungen
- Einführung neuer experimenteller Überlastungen für die
runComposeUiTest
- undcreate*ComposeRule
-Funktionen, dieCoroutineContext
-Parameter akzeptieren. Der Kontext wird für die Testzusammensetzung und alleLaunchedEffect
- undrememberCoroutineScope()
-Aufrufe in der Zusammensetzung verwendet. (I10614, b/265177763) - Neue API zum Erfassen der eindimensionalen Geschwindigkeit hinzufügen (If5a82)
FocusRequester
ist jetzt als@Stable
gekennzeichnet. (I580ee)- Entfernen Sie eine experimentelle Annotation aus dem
DialogProperties
-Konstruktor, die einenusePlatformDefaultWidth
-Parameter verwendet. (IC4048) - Funktion zur Berechnung von Position und Tangente in einer Entfernung auf einem Pfad mit
PathMeasure.getPosition()
undPathMeasure.getTangent()
(I3b47c) hinzugefügt - Der versehentlich offengelegte öffentliche Setter wurde am
PlatformParagraphStyle
entfernt. (I07f47) - Mehr Typen/Null-Zulässigkeit von Inline-/eingestellten/verborgenen Funktionen (I24f91)
- Fügen Sie
AnnotatedString.hasStringAnnotations
hinzu, um Annotationen ohne Zuweisungen abzufragen. (I94dfe, b/246960758) - Es wurde eine neue Überlastung für die Funktion
TextMeasurer.measure
hinzugefügt, die eineString
als Text annimmt. (I47b2d, b/242705342) - Die APIs
LineBreak
undHyphens
in TextStyle wurden auf die stabile Version umgestellt. (IC1e1d)
Externer Beitrag
notifyFocusedRect
-Methoden inTextInputSession
undTextInputService
werden nicht mehr verworfen. (I23a04, b/262648050)
Version 1.4.0-alpha04
11. Januar 2023
androidx.compose.ui:ui-*:1.4.0-alpha04
wurde veröffentlicht. Version 1.4.0-alpha04 enthält diese Commits.
Neue Funktionen
- Es wurde eine neue
PinnableContainer
API hinzugefügt, mit der Lazy-List-Elemente angepinnt werden können, damit sie nicht verworfen werden, wenn sie außerhalb des gültigen Bereichs gescrollt werden.Modifier.focusable()
verwendet diesen Mechanismus beispielsweise, um das Element anzupinnen, auf dem der Fokus gerade liegt. (Ib8881, b/259274257, b/195049010) - Das Fokussystem wird mithilfe der neuen experimentellen
Modifier.Node
APIs neu geschrieben. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/916/914{/151818) - In der
IsContainer
-Semantikeigenschaft auf Oberflächen hinzugefügt. Diese Eigenschaft wird in einer späteren Änderung verwendet, mit der die Durchquerungsreihenfolge basierend auf der semantischen Bedeutung von Elementen wie Oberflächen festgelegt wird. (I63379) - Die neue Bedienungshilfe-Rolle
DropdownList
wurde hinzugefügt. Damit kann dasTalkBack's
-Verhalten bei der Fokussierung aufandroid.widget.Spinner
repliziert werden. (I177e5, b/236159001) - Du kannst jetzt
PlatformTextStyle(emojiSupportMatch)
verwenden, um die Verarbeitung der Emoji-Unterstützung für einen einzelnen Absatz zu deaktivieren. (Ia7100, b/139326806) - In Android Compose-UI-Tests werden jetzt Layoutübergänge für jeden Frame ausgeführt, wenn Frames ausgeführt werden, um inaktiv zu werden (z.B. über
waitForIdle
). Dies kann sich auf Tests auswirken, bei denen die Bestätigung einzelner Frames von Layoutanimationen durchgeführt wird. (I8ea08, b/222093277) - Die experimentelle Funktion
TextMotion
wurde zuTextStyle
hinzugefügt, um für Text entwederStatic(default)
oder Animiert zu definieren. Verwenden SieTextMotion.Animated
, wenn der Text durch Animation skaliert, übersetzt oder gedreht werden soll. (I24dd7)
API-Änderungen
- Das Argument
maxSize: IntSize
indrawText
wurde durchsize: Size
ersetzt, um es in andereDrawScope
-Funktionen einzufügen.size
ist standardmäßig aufSize.Unspecified
gesetzt. Das sollte das vorherige Standardverhalten nicht ändern. (Icd27d) - Der eingestellte experimentelle Schriftartkonstruktor wurde entfernt. (I8a724, b/261435386)
- Die UI-Tooling-Datenklasse
Group
hat jetzt das FeldisInline
, das angibt, ob die Gruppe für einen Aufruf einer zusammensetzbaren Inline-Funktion vorgesehen ist. WennisInline
auftrue
gesetzt ist, erfolgt der Aufruf an eine zusammensetzbare Inline-Funktion. Der Wert kann jedoch bei Aufrufen von zusammensetzbaren Inline-Funktionen auf „false“ gesetzt sein, die aus Modulen stammen, die mit einer Version des Compiler-Plug-ins kompiliert wurden, das keine Inline-Funktionsinformationen generiert. (Idb846) - Umstellung einer Reihe zuvor experimenteller APIs auf stabile Version
- Rotary Scroll Event API ist jetzt stabil (I42ad3, b/261561229).
FontVariation
API ist jetzt stabil (I8779f, b/241016309)- Alle
Font()
-Konstruktoren sind jetzt stabile API (I5948b, b/261435386). DeviceFontFamilyName
ist jetzt stabil (I8b640, b/261435386).- Der
AndroidFont
-Konstruktor mitvariationSettings
ist jetzt eine stabile API und kann zum Erstellen neuer Arten von Schriftdeskriptoren verwendet werden. (I5adcc, b/261565807) - Die
createFontFamilyResolver
API ist jetzt stabil. Damit lassen sich beim asynchronen Laden von Schriftarten nicht abgefangene Ausnahmen abfangen. (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
wurde veröffentlicht. Version 1.4.0-alpha03 enthält diese Commits.
API-Änderungen
ExperimentalComposeUiApi
wird ausPointerIcon
entfernt (I23af8)- Stell die Bedienungshilfen für Seiten vor:
PageUp
,PageDown
,PageLeft
,PageRight
. Beachten Sie, dass diese erst ab API 29 verfügbar sind. (Ida4ab) - Die
rememberNestedScrollConnection
-Parameteransicht wurde von der Stammansicht auf die Hostansicht aktualisiert. (Ia5200) - Eine Modifier API wurde hinzugefügt, um die Scroll-Informationen von Ancestors abzufragen. (I2ba9d, b/203141462)
- Wird in
Clickable
verwendet, um Interaktionen beim Drücken korrekt zu verzögern, wenn Gesten zu Scroll-Ereignissen werden können. - Das Problem, dass
Clickables
bei Verwendung innerhalb vonScrollable ViewGroup
die Ripples nicht korrekt verzögerte, wurde behoben. - Leisten und Tabellen wurden aktualisiert, um das Drücken korrekt zu verzögern, falls Gesten zu Scroll-Ereignissen werden können.
CompositingStrategy.Always
wurde inOffscreen
umbenannt, um anzugeben, dassgraphicsLayer
immer in einem Zwischenpuffer gerendert wird (I47dc1).- Layoutüberlastung mit mehreren Inhaltsbereichen ist jetzt stabil (I10566, b/248294649).
- Es wurden experimentelle neue APIs
PerfettoTrace.record {}
undPerfettoTraceRule
hinzugefügt, um Perfetto-Traces (auch als System-Traces bezeichnet) im Rahmen eines Tests zu erfassen und so das Testverhalten und die Leistung zu prüfen. (I3ba16) - Bei UI-Tests mit einer Schreibregel werden Fortsetzungen, die während
withFrameNanos
-Callbacks fortgesetzt werden, erst abgesendet, nachdem alle Frame-Callbacks ausgeführt wurden. Dies entspricht dem Verhalten des Editors bei normaler Ausführung. Tests, die auf dem alten Verhalten basieren, können jedoch fehlschlagen. Dies sollte nur Code betreffen, derwithFrameNanos
oderwithFrameMillis
direkt aufruft und bei dem die Logik außerhalb des Callbacks an die Funktionen übergeben wird, die möglicherweise innerhalb der Callbacks verschoben werden müssen. Beispiele finden Sie in den Änderungen am Animationstest in dieser Änderungsliste. - Ein optionaler
onPerformTraversals: (Long) -> Unit
-Parameter wurde demTestMonotonicFrameClock
-Konstruktor und der Factory-Funktion hinzugefügt, um Code nachwithFrameNanos
-Callbacks auszuführen, aber bevor die Koroutinen der Aufrufer fortgesetzt werden. (Idb413, b/254115946, b/222093277, b/255802670) - EmojiCompat wurde zu Compose hinzugefügt (Ibf6f9, b/139326806)
- Neuer Hintergrundparameter für
@Preview
zur Unterstützung dynamischer Farben hinzugefügt (I9f512)
Fehlerkorrekturen
- Benachrichtigungen zum Anwenden von Snapshots werden jetzt gesendet, nachdem
Recomposer
die Änderungen angewendet hat. (Iad6c0, b/222093277) - Es wurden Änderungen in
captureToImage
eingeführt, um die Aufnahme von Screenshots aus mehreren Fenstern zu ermöglichen. Dies ist nützlich für Screenshot-Tests, bei denen Pop-ups zum Erstellen von Pop-ups verwendet werden. (I169c5)
Aktualisierung der Abhängigkeiten
- Die Erstellung der Benutzeroberfläche und das Zusammenstellen von Material hängen jetzt vom Lifecycle 2.5.1 ab. (I05ab0, b/258038814)
Version 1.4.0-alpha02
9. November 2022
androidx.compose.ui:ui-*:1.4.0-alpha02
wurde veröffentlicht. Version 1.4.0-alpha02 enthält diese Commits.
API-Änderungen
GraphicsLayerScope
wurde aktualisiert, um die aktuelle Größe vongraphicsLayer
bereitzustellen. Dies ist nützlich für die Berechnung vongraphicsLayer
-Transformationen als Funktion der zusammensetzbaren Größe. (If8c43,b/181387080)CompositingStrategy
wurde eingeführt, um zu bestimmen, wann eine nicht sichtbare Compositing-Ebene für das Rendern vongraphicsLayer
-Inhalten verwendet werden soll. Mit „Automatisch“ wird das Standardverhalten beibehalten, das bei Anwendung von Alpha oder einerRenderEffect/Overscroll
intern eine Ebene verwendet. Es wird immer ein Offscreen-Zwischenspeicher eingeführt, bei demModulateAlpha
die Verwendung eines Offscreen-Zwischenspeichers verhindert und stattdessen jede der aufgezeichneten Zeichenanweisungen innerhalb desgraphicsLayer
moduliert. Bei der Nutzung vonModulateAlpha
wird fürRenderEffect/Overscroll
-Nutzung weiterhin ein Zwischenspeicher außerhalb des Bildschirms vorhanden (I25e82, b/256382834)invalidateSubtree()
wurdeModifier.Node
hinzugefügt, damit ganze Hierarchien für Layout und Zeichnungen ungültig werden können. (I4bd90)rememberNestedScrollInteropConnection
auf stabile Version hochstufen. Die Möglichkeit wurde eingeführt, eine Stammansicht anrememberNestedScrollInteropConnection
zu übergeben. So kann die benutzerdefinierte Ansicht besser auf Einschränkungen beim Scrollen reagieren, insbesondere in nicht standardmäßigen Ansichten (z.B.ModalBottomSheetDialog
). (I9e107)- Es wurde eine
ObserverNode
-Schnittstelle hinzugefügt, die vonModifier.Node
-Implementierungen verwendet werden kann, die benachrichtigt werden müssen, wenn sich ein zuvor gelesener Wert geändert hat (I5728b, b/247716483). - Wir haben
Paint
einen neuen Konstruktor hinzugefügt, der einen nativenandroid.graphics.Paint
akzeptiert. Außerdem wurde die ErweiterungsfunktiontoComposePaint()
hinzugefügt, die ein vorhandenes natives Paint-Objekt in Compose Paint konvertiert. (Ica91b) - Neue
FontFamily.Resolver.resolveAsTypeface
zur Verwendung unter Android hinzufügen. (I8950b) ToolingState
hinzufügen, damit Tools den internen Status von Composable ändern können (Ie6614)- Refaktorierungstools, um neu hinzugefügte Animationen besser zu unterstützen (I8677b)
- Der Parameter
minLines
wurde zu material und material3 Text,TextField
undOutlinedTextField
hinzugefügt. Damit kann die Mindesthöhe der Komponente in Bezug auf die Anzahl der Zeilen festgelegt werden (I4af1d).
Version 1.4.0-alpha01
24. Oktober 2022
androidx.compose.ui:ui-*:1.4.0-alpha01
wurde veröffentlicht. Version 1.4.0-alpha01 enthält diese Commits.
API-Änderungen
- Die neue Methode
awaitEachGesture()
für Bewegungsdetektoren wurde hinzugefügt. Sie funktioniert ähnlich wieforEachGesture()
, aber die Loop-over-Gesten erfolgen vollständig innerhalb vonAwaitPointerEventScope
, sodass Ereignisse zwischen Iterationen nicht verloren gehen können. forEachGesture()
wurde zugunsten vonawaitEachGesture()
eingestellt, weil dadurch Ereignisse zwischen Gesten verloren gehen können. (Iffc3f, b/251260206)- Das Recycling von Zugänglichkeitsobjekten in Androidx wird eingestellt. Wir haben festgestellt, dass Leistungsänderungen selbst in den ältesten unterstützten Versionen vernachlässigbar sind. (I0a961)
DrawStyle
wurde zuTextStyle
undSpanStyle
als experimentelles Attribut hinzugefügt, um das Zeichnen von umrandetem Text zu ermöglichen. (If24b8, b/155421273)- Mit
AnnotatedString.Builder
wird jetztkotlin.text.Appendable
implementiert. (I1a061, b/231030444) AnnotatedString.Builder
verfügt jetzt über eineappend(AnnotatedString, start: Int, end: Int)
-Methode, um einen Teilstring vonAnnotatedString
und den sich überschneidenden Stilen anzuhängen.- Der Parameter
DrawStyle
wurde den ZeichenfunktionenParagraph
undMultiParagraph
hinzugefügt, die das Zeichnen von umrandetem Text ermöglichen. (IC8102, b/155421273)
Externer Beitrag
- Vielen Dank, dass du
vighnesh
für das Hinzufügen von TV-Geräten zu Vorschauen hinzugefügt hast (Ie15cd)
Version 1.3
Version 1.3.3
11. Januar 2023
androidx.compose.ui:ui-*:1.3.3
wurde veröffentlicht. Version 1.3.3 enthält diese Commits.
Fehlerkorrekturen
- Behebung eines Absturzes, der manchmal unter Android 9 auftrat, wenn in der Aktivität den Status der Schreibansicht gespeichert wurde (I0b755, b/260322832)
Version 1.3.2
7. Dezember 2022
androidx.compose.ui:ui-*:1.3.2
wurde veröffentlicht. Version 1.3.2 enthält diese Commits.
Fehlerkorrekturen
- Aktualisiert zur Verwendung von Profobuf 3.21.8, wodurch eine Sicherheitswarnung in
protobuf-javalite:3.19.4
vermieden wird (CVE-2022-3171) (b/255545055)
Version 1.3.1
9. November 2022
androidx.compose.ui:ui-*:1.3.1
wurde veröffentlicht. Version 1.3.1 enthält diese Commits.
Version 1.3.0
24. Oktober 2022
androidx.compose.ui:ui-*:1.3.0
wurde veröffentlicht. Version 1.3.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.2.0
- Neue experimentelle API-Suite
LookaheadLayout
(die zuvor unmögliche Animationsverhalten ermöglicht) - Neue experimentelle API-Suite
Modifier.Node
(leistungsstarke Alternative zuModifier.composed
) - Verbesserte Unterstützung für Fenstereinblendungen.
- Unterstützung für Steuerkreuze und Hardwaretastatur in LazyLists
- Die maximale unterstützte Höhe in Dialogfeldern und Pop-ups wurde auf 8 dp reduziert (funktionsgefährdende Änderung bei einigen benutzerdefinierten Designsystemen – Begründung in den Versionshinweisen von Beta01).
- Viele geringfügige, abwärtskompatible API-Verbesserungen
- Viele Fehlerkorrekturen und Leistungsverbesserungen
Version 1.3.0-rc01
5. Oktober 2022
androidx.compose.ui:ui-*:1.3.0-rc01
wurde veröffentlicht. Version 1.3.0-rc01 enthält diese Commits.
API-Änderungen
- Neue experimentelle API-Bindestriche zur Unterstützung der automatischen Bindestrichsetzung in Text hinzugefügt (Iaa869)
Fehlerkorrekturen
- Bei
DeviceFontFamilyName
-Schriftarten werden die Varianteneinstellungenwght
undital
nicht standardmäßig konfiguriert. Stattdessen wird die Plattformeinstellung für das geladeneTypeface
verwendet. (Ia7a6d, b/246989332) LazyColumn
-Speicherleck behoben:onModifierLocalsUpdated
wurde bei der Wiederverwendung von Modifikatoren nicht mit dem Standardwert aufgerufen (b/230168389).
Version 1.3.0-beta03
21. September 2022
androidx.compose.ui:ui-*:1.3.0-beta03
wurde veröffentlicht. Version 1.3.0-beta03 enthält diese Commits.
API-Änderungen
- Optionen zum Anpassen des Zeilenumbruchs im Text hinzufügen. (I86907)
- Das Argument
size:IntSize
wurde in der MethodeTextMeasurer.measure
mitconstraints: Constraints
geändert, um Einschränkungen für die minimale Breite zu unterstützen. (I37530, b/242707525)
Fehlerkorrekturen
- Die
BackHandler
API von AndroidX Activity funktioniert jetzt in einer zusammensetzbarenDialog
-Funktion. (I35342)
Version 1.3.0-beta02
7. September 2022
androidx.compose.ui:ui-*:1.3.0-beta02
wurde veröffentlicht. Version 1.3.0-beta02 enthält diese Commits.
API-Änderungen
- Es wurde eine experimentelle Überlastung für das Layout hinzugefügt, die eine Liste mehrerer zusammensetzbarer Inhalts-Lambdas akzeptiert, wodurch bedrohliche Messbare in verschiedene Content-Lambdas unterschiedlich eingefügt werden können (Ic1b4e).
Änderungen an experimentellen Focus APIs:
FocusDirection.In
undFocusDirection.Out
wurden verworfen und durchFocusDirection.Enter
undFocusDirection.Exit
ersetzt. (Ia4262, b/183746982)- Zwei neue Fokuseigenschaften wurden hinzugefügt, um ein benutzerdefiniertes Verhalten für
FocusManager.moveFocus(Enter)
undFocusManager.moveFocus(Exit)
anzugeben. (I5f3f9, b/183746982) - Sie können jetzt mit
FocusRequester.Cancel
eine Fokusbewegung abbrechen.FocusRequester.Cancel
kann in jeder der folgenden Fokuseigenschaften verwendet werden: „Aufwärts“, „Abwärts“, „Links“, „Rechts“, „Weiter“, „Zurück“, „Start“, „Ende“, „Einstieg“ und „Beenden“. (Ib300f)
Version 1.3.0-beta01
24. August 2022
androidx.compose.ui:ui-*:1.3.0-beta01
wurde veröffentlicht. Version 1.3.0-beta01 enthält diese Commits.
Modifikatorknoten-Refaktorierung
Die Ebene, die Modifier/Modifier.Element
-Instanzen verarbeitet und ihr Verhalten auf LayoutNodes
koordiniert, wurde umfassend refaktoriert. Derzeit handelte es sich um eine Refaktorierung, die sich nicht auf die öffentliche API einer der vielen Modifikatoren in Compose ausgewirkt hat und als reine Implementierungsänderung betrachtet werden kann. Trotzdem ist dies aus verschiedenen Gründen eine wichtige Änderung. (IE4313)
Änderungsübersicht
Die hinzugefügten experimentellen Modifier.Node
APIs bieten eine Abstraktion, die es ermöglicht, den Status einer Instanz zu verwalten, der mit dem Lebenszyklus des Layoutknotens beibehalten wird und pro Layoutknoten und pro Nutzung dem entsprechenden Modifier.Element
, der ihn erzeugt hat, zugewiesen wird.
Im Großen und Ganzen bietet diese Abstraktion einen alternativen Mechanismus zur Erstellung zustandsorientierter Modifikatoren, ohne sich auf die Mechanismen der Modifier.composed
API zu verlassen.
Risiko
Diese Änderung ist strikt binär mit früheren Releases kompatibel und soll im Hinblick auf das beobachtbare Verhalten so weit wie möglich und praktisch möglich sein, wenn sie abwärtskompatibel ist. Allerdings gibt es nur wenige Subsysteme für diese Refaktorierung, die nicht umgesetzt wurden. Wahrscheinlich hat sich das Verhalten in einer Weise geändert, die von unseren Tests nicht abgedeckt wurde und noch nicht gefunden und behoben wurde.
Führen Sie ein Upgrade auf diese Version daher mit Vorsicht durch. Wenn Sie der Meinung sind, dass dadurch ein Fehler aufgetreten ist, teilen Sie uns dies bitte mit.
Experimentelle APIs
Es wurden verschiedene experimentelle APIs hinzugefügt, die sich alle auf das neue Konzept eines "Modifikatorknotens" beziehen. Modifier.Nodes werden als Ergebnis von
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
Änderung des Verhaltens
Die maximal unterstützte Höhe in Dialogfeldern und Pop-ups wurde auf 8 dp reduziert.
Die maximal unterstützte Höhe für Dialogfelder und Pop-ups zum Schreiben wurde von 30 dp auf 8 dp reduziert. Diese Änderung betrifft sowohl benutzerdefinierte Dialogfelder als auch benutzerdefinierte Dialogfelder und Pop-ups der Benutzeroberfläche. Mit dieser Änderung soll ein Fehler in Bezug auf die Bedienungshilfen bei Android-Versionen unter S minimiert und sichergestellt werden, dass Bedienungshilfen in diesen Fenstern mit dem Inhalt des Dialogfelds oder Pop-ups interagieren können.
Sie sind nur von dieser Änderung betroffen, wenn Sie eine benutzerdefinierte Dialog- oder Pop-up-Implementierung mit einer Höhe von mehr als 8 dp erstellen. Ziehen Sie in Erwägung, die Höhe Ihres Dialogfelds oder Pop-ups zu verringern. Wenn Sie dieses neue Verhalten deaktivieren möchten, können Sie Ihr eigenes Dialogfeld oder Pop-up mit der gewünschten Höhe festlegen. Dies wird nicht empfohlen, da die Barrierefreiheit beeinträchtigt werden könnte und der Entwickler dafür sorgt, dass der untere Teil des Dialogfelds oder Pop-ups interaktiv und für Bedienungshilfen lesbar ist.
API-Änderungen
- Es wurde ein Problem behoben, bei dem
painterResource
bei Konfigurationsänderungen nicht aktualisiert wurde (I58e73, b/228862715). rememberTextMeasurer
benötigt die ParameterFontFamily.Resolver
,Density
oderLayoutDirection
nicht mehr. Verwenden Sie denTextMeasurer
-Konstruktor, um benutzerdefinierte Werte für diese Parameter bereitzustellen. (Ia1da3)- Das Attribut
DialogProperties.decorFitsSystemWindows
wurde hinzugefügt, damit DialogsWindowInsets
unterstützen können. (I57742, b/229378542) - Schriftkonstruktoren wurden zurück in die ursprüngliche Kotlin-Datei verschoben, um die Binärkompatibilität aufrechtzuerhalten. Keine Veränderung gegenüber dem letzten stabilen Release. (Ieb2f3)
- Der unnötige Operator wurde aus mehreren Gleichheitsdefinitionen entfernt. Dies hat keine Auswirkungen. (I6c309)
FontVariation.Setting
ist eine versiegelte Schnittstelle, die zukünftige Clamping APIs ermöglicht. (I11021, b/143703328)CompositionGroup.findParameters
zuSlotTree.kt
hinzufügen. Dadurch können Tools Parameter für eineCompositionGroup
abrufen, ohne die gesamte Slot-Tabelle analysieren zu müssen. (I124fe)
Version 1.3.0-alpha03
10. August 2022
androidx.compose.ui:ui-*:1.3.0-alpha03
wurde veröffentlicht. Version 1.3.0-alpha03 enthält diese Commits.
API-Änderungen
LayoutCoordinates.findRootCoordinates()
ist jetzt öffentlich (I7fa37, b/204723384).- Es wurde eine experimentelle API zum Abrufen von
LayoutCoordinates
inPlacementScope
hinzugefügt. Dadurch wissen Entwickler, wo das aktuelle Layout untergeordnete Elemente relativ zu seiner Position platzieren soll. (I5482b, b/238632578) LayoutCoordinates.transformFrom
wurde hinzugefügt, um die Matrixtransformation von einemLayoutCoordinates
zum anderen abzurufen. (Ic5ab1, b/238632578)SemanticsModifier.id
wurde eingestellt und die Semantik-ID wurde nachLayoutInfo.semanticsId
verschoben. (Iac808, b/203559524)- Ressourcenschriftarten unterstützen jetzt das Festlegen von Einstellungen für Schriftvariationen (API 26 und höher). (I900dd, b/143703328)
- Unterstützung für variable Schriftarten in
DeviceFontFamilyNameFont
(Ic1279, b/143703328) - Schriftkonstruktoren akzeptieren jetzt eine Liste von
FontVariation.Setting
zum Konfigurieren variabler Schriftarten auf O+ Geräten. (I11a9d, b/143703328) - Fügen Sie die
FontVariation
API zum Definieren und Verwenden von variablen Schriftarten hinzu. (I3c40c, b/143703328) LineHeightStyle.Alignment
-Konstruktor ist jetzt öffentlich (experimentell) (I4bbbe, b/235876330)- Der Absatz wird nun für Android und Computer definiert. (Id387e, b/239962983)
- „Interface Paragraph“ ist jetzt mit einer versiegelten Schnittstelle versehen. Es gibt keinen Anwendungsfall für das Erstellen von abgeleiteten Absätzen. Wir empfehlen Ihnen, sich mit uns in Verbindung zu setzen, falls Sie von dieser Änderung betroffen sind. (If5247, b/239962983)
- Die experimentelle Annotation wurde aus
PlatformTextStyle
undLineHeightStyle
entfernt. (I64bef) TextInputService.show|hideSoftwareKeyboard
einstellen. Verwende im App-Code stattdessenSoftwareKeyboardController
und im IME-VerwaltungscodeTextInputSession
. (I14e4c, b/183448615)- Neue API für vorhandene Animationstypen hinzufügen (I26179)
Fehlerkorrekturen
@RequiresPermission
wurde APIs hinzugefügt, für die die BerechtigungPOST_NOTIFICATIONS
ab SDK 33 erforderlich ist. (Ie542e, b/238790278)
Version 1.3.0-alpha02
27. Juli 2022
androidx.compose.ui:ui-*:1.3.0-alpha02
wurde veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.
API-Änderungen
- Die neue Eigenschaft
PointerInputChange#pressure
wurde hinzugefügt, um die Auslastung abzurufen. (I45a5e, b/205164819) rememberTextMeasurer
wurde hinzugefügt, umTextMeasurer
-Instanzen in der Zusammensetzung einfach zu erstellen und zu speichern. (I8d66e)Rect
,RoundRect
undMutableRect
unterstützen jetzt die Kotlin-Syntaxin
zum Aufrufen dercontains
-Funktion. (Ie42b0, b/238642990)- Entfernen Sie unnötige Funktionen aus
KeyInjectionScope
, da diese mit einfacheren Teilen der API leicht implementiert werden können. Zu den Funktionen, die entfernt wurden, gehörenpressKeys
,keysDown
undkeysUp
. (I81d77) - Konstanten- und Parameternamen in
KeyInjectionScope
um das Suffix „Millis“ ergänzt, wobei die Einheiten dieser Konstanten und Parameter in Millisekunden angegeben wurden. (Iabef5) - Die Methode
toStringForLog()
wurde zuEditCommand
hinzugefügt, um Probleme bei der Textbearbeitung zu beheben. (I53354, b/228862731) - Die Erweiterungsfunktion
drawText
wurde fürDrawScope
hinzugefügt, um eine Möglichkeit zu bieten, Text mit mehreren Stilen für zusammensetzbare Funktionen und Modifikatoren zu zeichnen, die auf einemDrawScope
wieCanvas
unddrawBehind
ausgeführt werden. (I16a62, b/190787898) - Führen Sie eine neue experimentelle API mit dem Namen
TextMeasurer
ein, die die Berechnung eines beliebigen Textlayouts ermöglicht und unabhängig von der Compose-Laufzeit identische Ergebnisse wie fürBasicText
liefert. (I17101) mapTree
zuSlotTree.kt
hinzufügen. Dadurch können Tools dasSlotTree
prüfen, ohne zuerst eine Kopie in den Arbeitsspeicher zu erstellen, wie es bei ATree der Fall ist. Für den Layout Inspector entspricht dies einer Leistungsverbesserung von etwa einem Faktor 10. (I5e113)- Die Funktion „Vorschau anzeigen“ wurde so geändert, dass sie jetzt in binären Ausgabedateien gespeichert wird, damit Entwickler
MultiPreview
-Annotationen aus Bibliotheken schreiben und wiederverwenden können. (I85699, b/233511976)
Fehlerkorrekturen
- Beim Hinzufügen von
InputEventChange
-Ereignissen zumVelocity
-Tracker berücksichtigen wir jetzt Deltas anstelle von Positionen. Dies garantiert, dass die Geschwindigkeit für alle Fälle korrekt berechnet wird, selbst wenn sich das Zielelement bewegt (Icea9d, b/216582726, b/223440806, b/227709803). - Durch
AnnotatedString.toUpperCase
verursachte NPE korrigieren, wenn Anmerkungen vorhanden sind. (I0aca2, b/210899140)
Version 1.3.0-alpha01
29. Juni 2022
androidx.compose.ui:ui-*:1.3.0-alpha01
wurde veröffentlicht. Version 1.3.0-alpha01 enthält diese Commits.
API-Änderungen
- Neue
LookaheadLayout
, die eine Lookahead-Passung vor der tatsächlichen Messung/dem tatsächlichen Layout unterstützt. So kann das Layout bei Änderungen vorab berechnet werden. Gleichzeitig kann der Post-Lookahead-Messwert bzw. das Post-Layout die vorab berechnete Größe/Position verwenden, um die Größe und die Positionen in Richtung des Ziels zu animieren.SubcomposeLayouts
wird noch nicht unterstützt, ist aber in einer künftigen Version geplant. (I477f5) - Fügen Sie dem Pinsel-Flavor
TextStyle
undSpanStyle
einen optionalen Alpha-Parameter hinzu, um die Deckkraft vonText
zu ändern. (Ic2fac, b/234117635) - Einführung des Annotationstyps
UrlAnnotation
und der zugehörigen Methoden zur Unterstützung vonTalkBack
-Links inAnnotatedString
s. (I1c754, b/231495122) - Dienstprogrammfunktionen zur Laufzeit verschieben (I4f729)
Fehlerkorrekturen
TextLayoutResult.getLineForOffset
wirft nicht. (Idc5d6, b/235876324)
Externer Beitrag
- Neue API
WindowInfo.keyboardModifiers
hinzugefügt, um ihren Status in zusammensetzbaren Funktionen oder über einen SnapshotFlow (Icdb8a) zu beobachten
Version 1.2
Version 1.2.1
10. August 2022
androidx.compose.ui:ui-*:1.2.1
wurde veröffentlicht. Version 1.2.1 enthält diese Commits.
Fehlerkorrekturen
- Ein Nullpointer im Inspector wurde korrigiert (b/237987764)
- Ein Fehler bei der Umwandlung der Klasse beim Erinnern im Prüftool wurde behoben (b/235526153).
Version 1.2.0
27. Juli 2022
androidx.compose.ui:ui-*:1.2.0
wurde veröffentlicht. Version 1.2.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.1.0
Verbesserungen beim Fokusdurchlauf:
- Das fokussierte Scrollen von Lazy-Listen funktioniert jetzt mit der neuen
BeyondBoundsLayout
Core API - Neue APIs zur Verhaltensanpassung in
FocusOrder
undFocusProperties
- Verbesserte Funktionsweise bei Verwendung der physischen Tastatur oder der Fernbedienung des Fernsehers
- Das fokussierte Scrollen von Lazy-Listen funktioniert jetzt mit der neuen
Neue APIs für:
- Fenstereinlagen
- Kernprimitive für gestengesteuerte, unendliche Animationen und Layoutanimationen
GraphicsLayer
Funktionen, darunterRenderEffect
Viele Fehlerkorrekturen und Leistungsverbesserungen
Version 1.2.0-rc03
29. Juni 2022
androidx.compose.ui:ui-*:1.2.0-rc03
wurde veröffentlicht. Version 1.2.0-rc03 enthält diese Commits.
- Keine Änderungen seit 1.2.0 bis rc02.
Version 1.2.0-rc02
22. Juni 2022
androidx.compose.ui:ui-*:1.2.0-rc02
wurde veröffentlicht. Version 1.2.0-rc02 enthält diese Commits.
Version 1.2.0-rc01
15. Juni 2022
androidx.compose.ui:ui-*:1.2.0-rc01
wurde veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.
API-Änderungen
- Schnittstellen in Erstellungsbibliotheken werden jetzt mit jdk8-Standardschnittstellenmethoden erstellt (I5bcf1).
- Wir haben
KeyInjectionScope
Funktionen für übergeordnete Elemente zum Einfügen von Tastendrucken hinzugefügt, während andere Tasten gedrückt gehalten oder aktiviert werden. Zu diesen Funktionen gehörenwithKeysDown
,withKeysToggled
usw. Außerdem wurden Eigenschaften hinzugefügt, mit denen geprüft wird, ob eine bestimmte Metataste gedrückt ist, z. B.isCtrlDown
, um zu prüfen, ob eine der Strg-Tasten gedrückt ist. Weitere Informationen zu den einzelnen Funktionen finden Sie unterKeyInjectionScope
. (I9f6cd, b/229831515) - Es wurde eine experimentelle
OverscrollEffect
eingeführt, um neben denModifier.scrollable
-Überladungen, die diese Overscroll-Effekte akzeptieren, benutzerdefinierte Overscroll-Effekte zu ermöglichen. - Die experimentelle
LocalOverScrollConfiguration
wurde vonfoundation.gesture
in das Foundation Package verschoben und inLocalOverscrollConfiguration
umbenannt (If19fb, b/204650733) - Benennen Sie
runComposeUiTestWithoutActivity {}
inrunEmptyComposeUiTest {}
um, damit dies mitcreateEmptyComposeRule()
übereinstimmt (I6fed7).
Version 1.2.0-beta03
1. Juni 2022
androidx.compose.ui:ui-*:1.2.0-beta03
wurde veröffentlicht. Version 1.2.0-beta03 enthält diese Commits.
API-Änderungen
pressKeyTimes
sowieisCapsLockOn
und Freunde zuKeyInjectionScope
wurden hinzugefügt. Darüber hinaus unterstützt die API jetzt kombinierte Einschleusungsmuster mit Maus und Tastatur, beispielsweise das Klicken auf eine Maustaste bei gedrückter Metataste. (I4c8da, b/229831515)- Zusätzliche experimentelle Unterstützung für das Einfügen von Schlüsselereignissen. Verwenden Sie
performKeyInput
, um Schlüsselereignisse zu senden, oder senden Sie sie während einer multimodalen Eingabegeste mitperformMultiModalInput
über die Eigenschaftkey
vonMultiModalInjectionScope
. Die API-Dokumentation finden Sie unterKeyInjectionScope
. (IC5000, b/229831515) - Füge eine neue
GoogleFont.Provider.AllFontsListUri
zum Abrufen der kanonischen Internetquelle der von Android unterstützten Google Fonts hinzu. - Verbessern Sie die Fehlermeldungen, die erneut ausgegeben werden, wenn GoogleFonts im Editor nicht geladen werden kann. (I0416c)
Fehlerkorrekturen
- Beim Hinzufügen von
InputEventChange
-Ereignissen in Velocity Tracker werden jetzt Deltas anstelle von Positionen berücksichtigt. Dadurch wird garantiert, dass die Geschwindigkeit für alle Fälle korrekt berechnet wird, selbst wenn sich das Zielelement bewegt (I51ec3, b/216582726, b/223440806, b/227709803). - Die Einstellung „
Show Layout Bounds
“ wird jetzt sofort nach dem Wechseln von der Kachel „Schnelleinstellungen“ auf zusammensetzbare Funktionen angewendet, ohne dass Sie die Aktivität verlassen und noch einmal eingeben müssen. (I843d5, b/225937688) - Bei der String-Suche nach Bedienungshilfen wird kein Laden der Schriftart ausgelöst. Bisher wurde versucht, Schriftarten für
StyleSpans
zu laden, was zu Abstürzen führte, wennFontFamily.Resolver
überschrieben wurde. (I4609d) - Wenn Sie die Vorwärts-Löschtaste drücken, wenn sich der Cursor am Ende eines Textfelds befindet, stürzt dies nicht mehr ab.
- Für
DeleteSurroundingTextCommand
undDeleteSurroundingTextInCodePointsCommand
müssen ihre Konstruktorargumente jetzt nicht negativ sein. (Ica8e6, b/199919707)
Version 1.2.0-beta02
18. Mai 2022
androidx.compose.ui:ui-*:1.2.0-beta02
wurde veröffentlicht. Version 1.2.0-beta02 enthält diese Commits.
API-Änderungen
- Funktionen in anderen Vorschautypen wiederverwenden (I19f39)
Fehlerkorrekturen
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
wurde inDisposeOnDetachedFromWindowOrReleasedFromPool
umbenannt, um besser widerzuspiegeln, dass Entsorgungen auftreten und nicht nur, wenn sie nicht verfügbar sind. (If15ca)
Version 1.2.0-beta01
11. Mai 2022
androidx.compose.ui:ui-*:1.2.0-beta01
wurde veröffentlicht. Version 1.2.0-beta01 enthält diese Commits.
Neue Funktionen
- Dies ist die erste Betaversion von Version 1.2.
API-Änderungen
- Experimentelle
BeyondBoundsInterval
hinzugefügt, die von benutzerdefinierten Implementierungen vonLazyList
verwendet werden kann, wenn Elemente über die sichtbaren Grenzen hinaus angeordnet werden (Ifabfb, b/184670295) - Schlüsselversionen von
Modifier.composed
sind jetzt stabile API (Ie65e4, b/229988420) - Die
rememberNestedScrollConnection
API wurde vereinfacht, um die aktuellen Ansichtsinformationen mithilfe von Kompositionslokalen abzurufen (I67ca7). - Die Annotation
@ComposableTarget
und die mit@ComposableTargetMarker
gekennzeichneten Annotationen können jetzt im Dateibereich mit dem Präfix@file
verwendet werden. Bei Verwendung einer Zielannotation auf Dateiebene geht der Compiler davon aus, dass alle zusammensetzbaren Funktionen in der Datei auf den zugehörigen Applier ausgerichtet sein sollen. Mit@file:UiComposable
wird beispielsweise deklariert, dass alle@Composable
-Funktionen auf den Anwender der Benutzeroberfläche zum Erstellen ausgerichtet sind. Eine Funktion, die auf einen anderen Applier ausgerichtet ist, muss die Zielmarkierungsannotation für den gewünschten Applier explizit bereitstellen. (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
. Das sind dieselben wie inComposeContentTestRule
.Die Android-spezifischen
interface AndroidComposeUiTest
undfun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)
werden hinzugefügt, um Zugriff auf die zugrunde liegende Aktivität zu ermöglichen, ähnlich wieAndroidComposeTestRule
. Für noch mehr Kontrolle können Sie eineclass AndroidComposeUiTestEnvironment
selbst instanziieren.Die Desktop-Implementierung ist
class DesktopComposeUiTest
, es werden aber derzeit keine Desktop-spezifischen Ausführungsfunktionen angeboten.Das Migrieren eines Tests von einer
ComposeTestRule
zuComposeUiTest
kann so erfolgen (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 stammen
ComposeContentTestRule
undComposeTestRule
nicht vonComposeUiTest
. Das bedeutet, dass Erweiterungsfunktionen unterComposeUiTest
noch nicht auf derTestRule
-Oberfläche aufgerufen werden können. WennComposeUiTest
auf die stabile API umgestellt wird, werdenComposeContentTestRule
undComposeTestRule
geändert und vonComposeUiTest
erweitert. (Ib4e90)LineHeightBehavior
wird inLineHeightStyle
umbenannt.LineVerticalAlignment
wird inLineHeightStyle.Alignment
umbenannt.„
LineHeightTrim
“ wird umbenannt in „LineHeightStyle.Trim
“Standardkonstruktorwerte aus
LineHeightStyle
werden entfernt (I582bf, b/181155707).Brush
wurde zuTextStyle
undSpanStyle
hinzugefügt, um eine Möglichkeit zum Zeichnen von Text mit Farbverlauf zu bieten. (I53869, b/187839528)trimFirstLineTop
wurden dietrimLastLineBottom
-Attribute vonLineHeightBehavior
zu einer einzigen Aufzählung geändert:LineHeightTrim
.LineHeightTrim
haben Werte aus vier Zuständen, die durch zwei boolesche Werte definiert werden:FirstLineTop
,LastLineBottom
, Beide und keiner (Ifc6a5, b/181155707)LineHeightBehavior
wurde zuTextStyle
undParagraphStyle
hinzugefügt. MitLineHeightBehavior
wird festgelegt, ob die Zeilenhöhe am oberen und unteren Rand der letzten Zeile angewendet wird. Außerdem definiert er die Ausrichtung der Linie in dem durchTextStyle(lineHeight)
vorgegebenen Feld.Es ist beispielsweise möglich, ein Verhalten zu erhalten, das dem über
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
definierten Verhalten ähnelt.Konfigurationen mit
trimFirstLineTop
undtrimLastLineBottom
funktionieren nur dann korrekt, wennincludeFontPadding
„false“ ist. (I97332, b/181155707)Die Funktionen
PlatformParagraphStyle.lerp
undPlatformSpanStyle.lerp
wurden in Funktionen der obersten Ebene geändert (I9a268).
Fehlerkorrekturen
- In der
PointerInputChange::copy
-Dokumentation wird jetzt korrekt angegeben, dass es sich um eine oberflächliche Kopie handelt. (I182f5) - Auslassungspunkte werden unterstützt, wenn die Höhe begrenzt ist und nicht für alle Textzeilen geeignet ist (Ie528c, b/168720622).
includeFontPadding
ist standardmäßig aktiviert. Es ist möglich, dieincludeFontPadding
mit dem AttributTextStyle.platformTextStyle
zu deaktivieren. In naher Zukunft werden wir das Standardverhalten ändern. Bis dahin können wir jedoch Verbesserungen an der Zeilenhöhe (aosp/2058653) besser integrieren undTextField
-Clipping-Probleme beheben. (I01423, b/171394808)
Externer Beitrag
MouseInjectionScope.scroll(delta = someDelta)
wird jetzt unter Android umgekehrt, wenn wir vertikal scrollen. Wenn „someDelta“ positiv ist, wird nach unten gescrollt. (Ifb697, b/224992993)
Version 1.2.0-alpha08
20. April 2022
androidx.compose.ui:ui-*:1.2.0-alpha08
wurde veröffentlicht. Version 1.2.0-alpha08 enthält diese Commits.
API-Änderungen
- Die
pluralStringResource
-Funktionen wurden als experimentell gekennzeichnet, um die zukünftige Internationalisierung für die Weiterentwicklung zu ermöglichen. (If24e4) - Absatz und MultiParagraph akzeptieren jetzt Einschränkungen-Parameter. Wenn
Constraints.maxHeight
übergeben wird, ist dies derzeit nicht möglich, ermöglicht aber zukünftige Berechnungen, z. B. Ellipsen, die auf der Höhe basieren. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()
akzeptiert jetzt eine benutzerdefinierte MutableSet-ähnliche Klasse, mit der keine neuen Elemente hinzugefügt werden können. (ICD314)- PointerIcon ist jetzt eine
@Stable
-Schnittstelle (I9dafe). - Der Teilverbrauch (nach unten ODER in der Position) wurde in
PointerInputChange
eingestellt. Sie könnenconsume()
verwenden, um die Änderung vollständig zu übernehmen. MitisConsumed
können Sie feststellen, ob die Änderung bereits von einer anderen Person übernommen wurde. PointerInputChange::copy()
erstellt jetzt immer eine oberflächliche Kopie. Das bedeutet, dass Kopien von „PointerInputChange
“ genutzt werden, sobald eines der Exemplare genutzt wurde. Wenn Sie eine ungebundenePointerInputChange
erstellen möchten, verwenden Sie stattdessen den Konstruktor. (Ie6be4, b/225669674)- Aktivieren Sie die verschachtelte Scroll-Interoperabilität zwischen „Schreiben“ und „Ansehen“ in der Richtung „Schreiben“ > „Ansehen“. Das bedeutet, dass ein übergeordnetes Element des Typs „Schreiben“ verschachtelte Scroll-Deltas aus einer verschachtelten Scroll-Ansicht empfangen kann. (If7949, b/174348612)
- Neue
SemanticsProperty testTagsAsResourceId
, mit der das Schreiben mit UIAutomator-Tests für das View-System übereinstimmt. (I39c20) - Alle verfügbaren Schriftstärken für Systemschriftarten unter Android anzeigen, wenn
FontFamily.SansSerif
verwendet wird. In API 21 bis 28 werden dann intern Fallback-Schriftnamen wie „serif-medium“ verwendet. Dies ist eine Verhaltensänderung, da bisher nur die Gewichtungen 400 und 700 von API 21 bis 28 unterstützt wurden. (I380fe, b/156048036, b/226441992) - Absatz- und Mehrabsatz-Lehrkräfte haben Positionsargumente vor optionalen Argumenten neu angeordnet. (Idafaa)
AndroidFont
verwendet jetzt „typefaceLoader“ als Konstruktorparameter. (I2c971)
Version 1.2.0-alpha07
6. April 2022
androidx.compose.ui:ui-*:1.2.0-alpha07
wurde veröffentlicht. Version 1.2.0-alpha07 enthält diese Commits.
API-Änderungen
- Die neue Funktion
Snapshot.withoutReadObservation { ... }
wurde hinzugefügt. Damit können Nutzer die übergebene Lambda-Funktion ausführen, ohne die Änderungen der Statuswerte zu abonnieren, die während dieses Blocks gelesen werden. Dies kann in Anwendungsfällen nützlich sein, wenn Sie von den Snapshot-basierten Thread-sicheren Schreibvorgängen/Lesevorgängen profitieren möchten, aber den Wert lesen möchten, ohne eine unnötige Neuzusammensetzung oder erneute Messung zu verursachen. (I9f365, b/214054486) - Mit der Erweiterungseigenschaft
consumeWindowInsets
vonComposeView
können Entwickler die Nutzung von AndroidWindowInsets
deaktivieren. Dadurch können separateComposeViews
in der Hierarchie jeweilsWindowInsets
anwenden, ohne sich gegenseitig zu beeinträchtigen. (I0ef08, b/220943142) KeyboardType.Decimal
wurde als Alternative zuKeyboard.Number
hinzugefügt, um speziell ein Dezimaltrennzeichen in IME zu verwenden. (Iec4c8, b/209835363)PointerEventType.Scroll
undPointerEvent.scrollDelta
sind jetzt stabile APIs (I574c5, b/225669674).- Aktiviert die verschachtelte Scroll-Interoperabilität zwischen View und Compose für zusammenarbeitende View-Klassen. Das bedeutet, dass das Editor-Tool jetzt Scroll-Deltas an ein übergeordnetes Element der übergeordneten Datenansicht (mitwirkend) senden kann. (I5d1ac, b/174348612)
FontFamily.Resolver
wurde aktualisiert, um die systemweite Bedienungshilfe für fett formatierten Text zu integrieren (I6c1e7)Font(AssetManager, String, ...)
wurde verworfen und durchFont(String, AssetManager, ...)
ersetzt. Dies ist eine experimentelle API. (I1c7a4)- Fügen Sie den neuen Schriftartdeskriptor
Font(DeviceFontFamilyName)
hinzu, um optional beim Suchen nach vom System installierten Schriftarten während der Fallback-Ketten zu suchen. (I30468, b/219754572) - Es wurde eine temporäre Kompatibilitätskonfiguration für
includeFontPadding
in TextStyle/ParagraphStyle hinzugefügt.includeFontPadding
kann überTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
geändert werden. Dies ist eine temporäre Konfigurationsoption, mit der die Migration aktiviert wird. Sie wird entfernt. (If47be, b/171394808) GoogleFont.Provider.isAvailableOnDevice
-Erweiterung für Hilfe bei der Fehlerbehebung hinzufügen. (I64e31)GoogleFont.Provider
-Konstruktor zur Verwendung mit@ArrayRes
hinzufügen (Ic5ee1, b/225984280)Compose GoogleFont
heißt jetztFont(GoogleFont)
, ansonsten bleibt die API stabil. (I125f2)
Fehlerkorrekturen
- Dem Material/Gerüst wurde eine Lint-Prüfung hinzugefügt, um sicherzustellen, dass der innere Innenrand verwendet wird (Ifb111)
Version 1.2.0-alpha06
23. März 2022
androidx.compose.ui:ui-*:1.2.0-alpha06
wurde veröffentlicht. Version 1.2.0-alpha06 enthält diese Commits.
API-Änderungen
- Semantikaktion
RequestFocus
wurde hinzugefügt, um den Fokus auf das fokussierbare Ziel anzufordern. (I17b71) - Das Parsen von Vektor-Drawables wurde aktualisiert, um die automatische Spiegelung zu unterstützen und den Inhalt einer
VectorPainter
umzudrehen, wenn die aktuelle Layoutrichtung RTL ist. (I79cd9, b/185760237) Schatten-/Umgebungsfarben wurden aus Gründen der API-Kompatibilität auf nachgestellte Parameter von
Modifier.graphicsLayer
aktualisiert (I3f864, b/160665122).Der Schatten-/Umgebungsfarbe in
GraphicsLayerScope
wurden Standardimplementierungen hinzugefügt, um abwärtskompatible API-Änderungen zu gewährleisten.Veranstaltungszeit zu RSB-Veranstaltungen hinzugefügt (Ief8ae)
FocusOrder
wurde mitFocusProperties
zusammengeführt undfocusProperties()
verfügt jetzt über alle Funktionen vonfocusOrder()
.FocusOrder
undfocusOrder()
wurden verworfen.focusOrder()
, derfocusRequester
akzeptiert, sollte durch einenfocusRequester()
-Modifikator in Kombination mitfocusProperties()
ersetzt werden. Dadurch können die Modifikatoren stärker getrennt werden. (I601b7)Das Upgrade von
RecyclerView
undCompose
führt nun zu einer viel besseren Scrollleistung für RecyclerViews mit untergeordneten Erstellungsansichten.ViewCompositionStrategy.Default
als Methode zum Abrufen der integrierten Standardstrategie hinzufügenFügen Sie
ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer
hinzu. Dies ist die neue Standardstrategie, die das Pooling von Containern wie RecyclerView wie vorgesehen verarbeitet. (If7282)Zusätzliche Unterstützung für das Hinzufügen von Anmerkungen zu Anmerkungsklassen mit @Preview als erster Schritt zum Hinzufügen der Multipreview-Funktion. Solche Anmerkungen könnten verwendet werden, um zusammensetzbare Methoden oder andere Anmerkungsklassen zu annotieren, die dann als indirekt mit der gegebenen @Preview annotiert angesehen werden könnten. (I12eff)
Referenzgeräte, die der Geräteliste für @Preview (I071c9) hinzugefügt wurden
Fehlerkorrekturen
- Vektorgrafik-APIs wurden aktualisiert und verwenden nun die korrekte zusammensetzbare Anmerkung @VectorComposable anstelle von @UiComposable (I942bc).
- Crossinline aus
AnnotatedString.Builder.withStyle
entfernen (If84d5)
Externer Beitrag
- Compose-UI: Die Properties
ambientShadowColor
undspotShadowColor
zuGraphicsLayerScope
hinzufügen (I1ba1a, b/160665122) - Pluralformen 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
wurde veröffentlicht. Version 1.2.0-alpha05 enthält diese Commits.
API-Änderungen
TextToolbar
akzeptiert jetzt Lambda-Argumente anstelle vonActionCallback
. (Ib2eb9, b/197950089)- Null-Zulässigkeit in Core und Appcompat aktualisiert, um Tiramisu DP2 zu entsprechen (I0cbb7)
- Die Measured Interface zeigt jetzt die „parentData“-Property (I3313f) an
Modifier.onPlaced
und dieOnPlacedModifier
-Schnittstelle sind jetzt stabil. (Ib5482)- Super! Bei der Erstellung von Animationen wird jetzt in den Entwickleroptionen die Einstellung „Skalierung der Animator-Dauer“ unterstützt. (I5a4fc, b/161675988)
- Lokaler
BeyondBoundsLayout
-Modifikator hinzugefügt (If8b51, b/184670295) - Text: includeFontPadding ist jetzt standardmäßig deaktiviert. Die Clipping-Probleme infolge von
includeFontPadding=false
werden verarbeitet. Bei hohen Skripts sollte kein Zuschneiden auftreten. (I31c84, b/171394808)
Fehlerkorrekturen
ComposeContentTestRule.setContent
gibt jetzt den FehlerIllegalStateException
aus, wenn du versuchst, Inhalte festzulegen, obwohl bereits Inhalte vorhanden sind. (I888a5, b/199631334)- Ein Absturz wurde behoben, der beim Lesen aus der Zwischenablage unter Android durch Inhalte in der Zwischenablage verursacht wurde. (I06020, b/197769306)
- Verbessern Sie die Scrollproben für das RSB. (I6a596)
Externer Beitrag
- Aktualisiert für die Verwendung der Kotlinx-Koroutinen 1.6.0 (I3366d)
Version 1.2.0-alpha04
23. Februar 2022
androidx.compose.ui:ui-*:1.2.0-alpha04
wurde veröffentlicht. Version 1.2.0-alpha04 enthält diese Commits.
API-Änderungen
ComposableTarget
,ComposableTargetMarker
undComposableOpenTarget
wurden hinzugefügt, um Berichte zur Kompilierungszeit darüber zu erstellen, wann eine zusammensetzbare Funktion aufgerufen wird, die auf einen nicht vorgesehenen Anwendungsfall ausgerichtet ist.In den meisten Fällen können die Annotationen vom Compiler-Plug-in abgeleitet werden. Die direkte Verwendung dieser Annotationen sollte daher selten sein. Zu den Fällen, die nicht abgeleitet werden können, gehören das Erstellen und Verwenden einer benutzerdefinierten Anwendung, abstrakte zusammensetzbare Funktionen (z. B. Schnittstellenmethoden), Felder oder globale Variablen, die zusammensetzbare Lambdas sind (lokale Variablen und Parameter werden abgeleitet) oder die Verwendung von
ComposeNode
oder einer verwandten zusammensetzbaren Funktion.Bei benutzerdefinierten Anwendungen müssen die zusammensetzbaren Funktionen, die
ComposeNode
oderReusableComposeNode
aufrufen, eineComposableTarget
-Annotation für die Funktion und alle zusammensetzbaren Lambda-Parametertypen hinzufügen. Es wird jedoch empfohlen, eine Annotation zu erstellen, die mitComposableTargetMarker
annotiert ist, und dann die markierte Annotation direkt anstelle vonComposableTarget
zu verwenden. Eine zusammensetzbare Annotation mit der KennzeichnungComposableTargetMarker
entspricht einerComposbleTarget
, bei der der vollständig qualifizierte Name der Attributklasse als Anwendungsparameter verwendet wird. Ein Beispiel für die Verwendung vonComposableTargetMarker
finden Sie unteranroidx.compose.ui.UiComposable
. (I38f11)Font(resId, ...)
übernimmt LoadingStrategy für die stabile API. (Ief3d2)FontLoadingStrategy
ist jetzt eine stabile API. (I1ee35, b/174162090)Asynchrones Laden von Schriftarten in Texten unterstützen (I77057, b/214587005)
Fügen Sie eine Bridge API zum Konvertieren von benutzerdefiniertem
Font.ResourceLoader
inFontFamily.Resolver
hinzu. (Ia0060)
Fehlerkorrekturen
- Die angegebenen
FontFamily.Resolver
werden an Unterzusammensetzungen wie Pop-ups übergeben. - Die angegebenen
Font.ResourceLoader
werden an Unterzusammensetzungen wie Pop-ups übergeben. (I48fa5)
Version 1.2.0-alpha03
9. Februar 2022
androidx.compose.ui:ui-*:1.2.0-alpha03
wurde veröffentlicht. Version 1.2.0-alpha03 enthält diese Commits.
API-Änderungen
notifyFocusedRect
-Methoden inTextInputSession
undTextInputService
wurden verworfen und werden nicht aufgerufen. Verwende stattdessenBringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874)- Einführung der Methode
destroyDisplayListData
für die Stub-KlasseRenderNode
(I1e659, b/216660268) - Es wurde eine neue API hinzugefügt, mit der untergeordnete Elemente von
SubcomposeLayout
vorab gemessen werden können. (I857ea) movableContentOf
wurde hinzugefügt. Damit wird eine zusammensetzbare Lambda-Funktion in eine Lambda-Funktion konvertiert, die den Status und entsprechende Knoten an jeden neu aufgerufenen Speicherort verschiebt. Wenn der vorherige Aufruf die Zusammensetzung verlässt, wird der Status vorübergehend beibehalten. Wenn ein neuer Aufruf der Lambda-Funktion in die Zusammensetzung eintritt, werden der Zustand und die zugehörigen Knoten an den Speicherort des neuen Aufrufs verschoben. Wenn kein neuer Aufruf hinzugefügt wird, wird der Status dauerhaft entfernt und Beobachter werden benachrichtigt.Wenn ein
movableContentOf
-Lambda mehrmals in derselben Zusammensetzung aufgerufen wird, werden für jeden Aufruf ein neuer Status und neue Knoten erstellt. Wenn Aufrufe die Zusammensetzung verlassen und neue Aufrufe eintreten, wird der Status in der Reihenfolge, in der sie aufgerufen werden, von den ersten auslassenden Aufrufen zu den eingegebenen Aufrufen verschoben. Alle Status, die nicht von neuen Aufrufen beansprucht werden, werden dauerhaft entfernt. (Ib4850)FontFamilyResolver
ist jetzt überLocalFontFamilyResolver.current
verfügbarcreateFontFamilyResolver(context)
undcreateFontFamilyResolver(context, coroutineScope)
wurden hinzugefügt, um neue FontFamily-Resolver außerhalb des Editors zu erstellen.Absatz und MultiParagraph nehmen jetzt
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
enthält jetzt den Resolver, der für dieses Layout verwendet wird.TextLayoutResult.layoutInput.resourceLoader
wurde eingestellt, da er nicht mehr verwendet wird. (Id5a45, b/174162090)Unterstützung für asynchrones und optionales Laden von Schriftarten mit Fallback-Verhalten. Dieser Pfad wird von Text und TextField verwendet und über FontFamilyResolver bereitgestellt.
Vorabladen von Schriftarten über
FontFamilyResolver.preload
wird unterstütztMit
FontFamilyResolver.setAsyncLoadContext
kann der globale Koroutinekontext festgelegt werden, der zum Laden asynchroner Schriftarten verwendet wird. (I87fe8, b/174162090)AndroidFont
wurde hinzugefügt, eine neue Low-Level-API zur Bereitstellung neuer Typen von Ressourcendeskriptoren für Schriftarten unter Android. Beispiele: Laden von Schriftarten aus einem App-spezifischen Back-End, optionale Suche nach vorinstallierten Schriftarten auf dem Gerät oder Laden einer Schriftart aus einer Ressource, die von den aktuellen Font Factorys nicht bereitgestellt wird.Die
Font.ResourceLoaded
API wurde erweitert, um das optionale und asynchrone Laden von Schriftarten zu unterstützen. Anwendungsentwickler sollten diese API nicht direkt verwenden. Informationen zum Hinzufügen neuer Schriftarten finden Sie unterAndroidFont
.Die Erweiterungsfunktion
Font.AndroidResourceLoader
ermöglicht die Konstruktion einerFont.ResourceLoader
außerhalb der Zusammensetzung.Der
loadingStrategy
-Parameter wurde zu ressourcenbasierten Schriftarten hinzugefügt, um ein asynchrones Laden zu ermöglichen, wenn eine Ressourcenschriftart auf herunterladbare Schriftarten-XML verweist. (Ie5aea, b/174162090)Der
Typeface(FontFamily)
-Konstruktor wurde verworfen. Dies wurde früher zum Vorabladen von Schriftarten verwendet, was bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern kann. Wenn Schriftarten zum Herunterladen heruntergeladen werden, kann dieser Aufruf für 10 Sekunden blockiert werden. Verwende stattdessenFontFamilyResolver.preload
.fontResource(FontFamily): Typeface
wurde verworfen. Dies wurde früher zum Vorabladen von Schriftarten verwendet, was bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern kann. Verwenden Sie stattdessenFontFamilyResolver.preload
(If8e7c, b/174162090).Der
SubcomposeLayoutState
-Konstruktor, dermaxSlotsToRetainForReuse
akzeptiert, wurde verworfen. Stattdessen gibt es einen neuen Konstruktor, derSubcomposeSlotReusePolicy
akzeptiert – eine neue Benutzeroberfläche, die eine genauere Kontrolle darüber ermöglicht, welche Slots für die zukünftige Wiederverwendung beibehalten werden sollen. (I52c4d)Stellt die HSV- und HSL-Funktion in
Color
als nicht experimentelle API bereit. Der Oklab-Farbraum ist jetzt eine öffentliche API. (I08fb6, b/180731008)Das
AndroidComposeTestRule.AndroidComposeStatement
wurde verworfen, das nicht für die öffentliche API vorgesehen war und nichts für Sie bewirkt hat. (Ibc46b)Intern generierte KT-Klasse umbenennen (Ia0b9e, b/174162090)
FontLoadingStrategy.values
(I42a9d, b/174162090) entferntDas globale Ladeprogramm für Schriftarten heißt jetzt
FontFamilyResolver
. (I4f773, b/174162090)Verwende ein neues System zum Laden von Schriftarten für den Desktop. (I9ce5c, b/174162090)
FontFamily.Resolver.resolve
gibtState<Any>
(I4406c, b/174162090) zurück
Fehlerkorrekturen
- Textfelder bleiben jetzt über der Tastatur, wenn sie hervorgehoben und die Tastatur angezeigt wird und der Modus für die weiche Eingabe auf
ADJUST_PAN
gesetzt ist. (I8eaeb, b/190539358, b/192043120) - Auf dem Computer wird die lokale Zusammensetzung für „
FontFamily.Resolver
“ verwendet FontLoader
wurde für Computer eingestellt- Neue
createFontFamilyResolver
-Factory auf dem Computer (I6bbbb, b/174162090) - Der Eingabemethode „Softtastatur“ flackert nicht mehr, wenn der Fokus zwischen Textfeldern geändert wird. (I1bf50, b/187746439)
Version 1.2.0-alpha02
26. Januar 2022
androidx.compose.ui:ui-*:1.2.0-alpha02
wurde veröffentlicht. Version 1.2.0-alpha02 enthält diese Commits.
API-Änderungen
Modifier.onRotaryScrollEvent()
undModifier.onPreRotaryScrollEvent()
für Wear-Geräte mit rotierender Seitentaste hinzugefügt (I18bf5, b/210748686)- Experimentelle
View.createLifecycleAwareRecomposer
-Erweiterung hinzufügen (I0cde6)
Externer Beitrag
PointerEvent.scrollDelta.y
ist jetzt unter Android umgekehrt. Wenn wir das Mausrad nach rechts neigen, wird 1 statt -1 zurückgegeben (Ia9811).
Version 1.2.0-alpha01
12. Januar 2022
androidx.compose.ui:ui-*:1.2.0-alpha01
wurde veröffentlicht. Version 1.2.0-alpha01 enthält diese Commits.
API-Änderungen
FontFamily.canLoadSynchronously
wurde verworfen. Diese Eigenschaft hat keine semantische Bedeutung. (Ica5ef)CompositionData
wurde ein Identitätsfeld zum Generieren von Invarianten-IDs im Layout Inspector hinzugefügt. (IC116e)- Wear OS-Geräte-IDs wurden zur Liste der Vorschaugeräte hinzugefügt (I93232).
Aktualisierung der Abhängigkeiten
- Jetzt abhängig von Kotlin-
1.6.10
.
Version 1.1
Version 1.1.1
23. Februar 2022
androidx.compose.ui:ui-*:1.1.1
wurde veröffentlicht. Version 1.1.1 enthält diese Commits.
Fehlerkorrekturen
- Problem mit
NullPointerException
unterandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
beheben (aosp/1947059, b/206677462) - Ein Absturz wurde behoben, der beim Lesen aus der Zwischenablage unter Android durch Inhalte in der Zwischenablage verursacht wurde. (I06020, b/197769306)
- RTL-Fehler in
LazyVerticalGrid
behoben (aosp/1931080, b/207510535)
Version 1.1.0
9. Februar 2022
androidx.compose.ui:ui-*:1.1.0
wurde veröffentlicht. Version 1.1.0 enthält diese Commits.
Wichtige Änderungen seit Version 1.0.0
- Stabile Unterstützung für den Overscroll-Effekt von Android 12
- Verbesserungen bei der Größe von Berührungszielbereichen
- In Bezug auf Compose 1.0 wird der Layoutbereich von Material-Komponenten so erweitert, dass sie den Richtlinien für Bedienungshilfen von Material für die Größe des Berührungszielbereichs entsprechen. Das Berührungsziel der Schaltfläche wird beispielsweise auf eine Mindestgröße von 48 x 48 dp erweitert, auch wenn Sie die Größe der Schaltfläche entsprechend verringern. Dadurch wird das Material Design auf das gleiche Verhalten wie die Material Design-Komponenten abgestimmt, was ein einheitliches Verhalten ermöglicht, wenn du „View“ und „Compose“ mischst. Durch diese Änderung wird außerdem sichergestellt, dass beim Erstellen der Benutzeroberfläche mit „Material erstellen“-Komponenten die Mindestanforderungen für die Barrierefreiheit auf Berührungszielbereichen erfüllt sind.
- Stabile Unterstützung für den Navigationsschienen
- Umstellung einer Reihe zuvor experimenteller APIs auf stabile Version
- Support für neuere Versionen von Kotlin
Version 1.1.0-rc03
26. Januar 2022
androidx.compose.ui:ui-*:1.1.0-rc03
wurde 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
wurde veröffentlicht. Version 1.1.0-rc01 enthält diese Commits.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, der zu fehlenden Scroll-Aktionen für Bedienungshilfen führte (I7cbfb)
SemanticsNodeInteraction.captureToImage()
funktioniert jetzt auch, wennHardwareRenderer.isDrawingEnabled()
den Wertfalse
hat, indem es für die Dauer des Anrufs aktiviert wird (Idf3d0).
Version 1.1.0-beta04
1. Dezember 2021
androidx.compose.ui:ui-*:1.1.0-beta04
wurde veröffentlicht. Version 1.1.0-beta04 enthält diese Commits.
Neue Funktionen
- Aktualisiert, um mit Kotlin-
1.6.0
kompatibel zu sein
API-Änderungen
- Die Null-Zulässigkeit in
androidx.core.view
wurde bereinigt (I7078a, b/204917439). - Es wurden experimentelle APIs hinzugefügt, mit denen Nutzer PointerInputchange als Ganzes verwenden oder prüfen können, ob sie verwendet wurde oder nicht. (I2e59d)
- Unterstützt jetzt Scrollrad-Ereignisse auf der UI-Ebene. (Ia14eb, b/198214718)
- Fügen Sie experimentelle
Modifier.composed
-Überladungen hinzu, die Schlüssel für den Vergleich auf Gleichheit akzeptieren und zum Überspringen von Optimierungen berechtigt sind. (Ice799, b/205851704) ComposeNotIdleException
geht jetzt vonException
und nicht direkt vonThrowable
aus. Dies bedeutet, dass Catch-Klauseln, dieException
abfangen, jetztComposeNotIdleException
s abfangen können, was zuvor nicht der Fall war. (I9c217)
Fehlerkorrekturen
- Ein Problem wurde behoben, durch das sich die Text-Ziehpunkte nicht bewegen, wenn sich die Sichtbarkeit des IME ändert. (I25f2e)
Version 1.1.0-beta03
17. November 2021
androidx.compose.ui:ui-*:1.1.0-beta03
wurde veröffentlicht. Version 1.1.0-beta03 enthält diese Commits.
API-Änderungen
- Der neue Modifikator "Modifier.onPlaced" wurde hinzugefügt, damit die Placement-Änderungen beobachtet werden können. Daher können auf Grundlage der beobachteten Platzierungsänderung weitere Änderungen am Offset des untergeordneten Modifizierers vorgenommen werden. (I558fd)
InjectionScope.flush()
undInjectionScope.dispose()
wurden entfernt. Das Leeren aller Ereignisse und das Löschen des Bereichs erfolgen jetzt wie zuvor am Ende der aufgerufenen Methode perform*Input(). (I2bed8)MultiModalInjectionScope.Touch
undMultiModalInjectionScope.Mouse
wurden entfernt. Zum Einfügen von Berührungs- und Mausereignissen für multimodale Gesten können Sie jetztMultiModalInjectionScope.touch()
undMultiModalInjectionScope.mouse()
verwenden. Beide akzeptieren eine Lambda-Funktion, die den Empfängerbereich dieser Modalität hat. (Idde18)
Fehlerkorrekturen
- Der Standardwert für
durationMillis
inTouchInjectionScope.swipeWithVelocity
wird jetzt so berechnet, dass ein Wischen möglich ist. (I19deb)
Version 1.1.0-beta02
3. November 2021
androidx.compose.ui:ui-*:1.1.0-beta02
wurde veröffentlicht. Version 1.1.0-beta02 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 diese scrollen, um ein Element sichtbar zu machen (Ib918d, b/195353459).
- Neue Animations-APIs zur Unterstützung von Tools Insbesondere ermöglichen sie es Tools, die Animationen und ihre Konfigurationen in „Übergänge“ zu prüfen. (I4116e)
Externer Beitrag
- Modifier.pointerHoverIcon (I95f01) wurde hinzugefügt.
Version 1.1.0-beta01
27. Oktober 2021
androidx.compose.ui:ui-*:1.1.0-beta01
wurde 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 übergeordnete Elemente senden können, damit diese scrollen, um ein Element sichtbar zu machen (Ib918d, b/195353459). - Neue Animations-APIs zur Unterstützung von Tools Insbesondere ermöglichen sie es Tools, die Animationen und ihre Konfigurationen in „Übergänge“ zu prüfen. (I4116e)
Version 1.1.0-alpha06
13. Oktober 2021
androidx.compose.ui:ui-*:1.1.0-alpha06
wurde veröffentlicht. Version 1.1.0-alpha06 enthält diese Commits.
API-Änderungen
- Entfernen Sie
ExperimentalComposeUiApi
ausViewRootForInspector
undLayoutInfo.ownerViewId
(I5c2e3) - Eine Überlastung ohne Kinder für das Layout wurde mit verbesserter Effizienz hinzugefügt (Ib0d9a).
InternalCompilerApi
aus Composer-Methoden entfernt, die modulübergreifend aufgerufen werden müssen (I1aa0b).SemanticsNodeInteraction.performSemanticsAction
gibt jetzt denSemanticsNodeInteraction
-Wert zurück, auf dem die Funktion aufgerufen wurde. (I9e5db)- LocalInputModeManager CompositionLocal wurde hinzugefügt, um TouchMode/NonTouchMode zu erkennen. (I6a83c, b/175899786)
viewConfiguration: ViewConfiguration
wurde zuLayoutInfo
hinzugefügt, damit Nutzer für Dinge wie eine Zeitüberschreitung beim langen Drücken den richtigen Wert sehen. (I76ca6)viewConfiguration: ViewConfiguration
wurde zuInjectionScope
hinzugefügt, damit Tests die Eingabe von Eingaben anhand von Faktoren wie dem Zeitlimit für langes Drücken oder Touch-Slop anpassen können.- Die Standarddauer für langes Drücken und Doppeltippen für Touch- und Mauseingaben wurde so geändert, dass sie auf den Werten in
InjectionScope.viewConfiguration
basiert.
- Implementierung von „ExposedDropdownMenu“ basierend auf „ExposedDropdownMenuBox“ mit TextField und DropdownMenu (If60b2)
- „closeOnOutsideClick“ wurde zu PopupProperties hinzugefügt, wodurch die eingestellte Funktion „ „ „ „distOnOutsideClick“" ersetzt wurde. Die neue Eigenschaft empfängt die Klickposition und die Ankergrenzen und ermöglicht so eine genauere Kontrolle darüber, ob onDismissRequest aufgerufen werden soll oder nicht. So lässt sich beispielsweise verhindern, dass der Anker bei Berührungen geschlossen wird.
- updateAndroidWindowManagerFlags wurde zu PopupProperties hinzugefügt, um eine Low-Level-Steuerung über die Flags zu bieten, die vom Pop-up an Android WindowManager übergeben werden. Der Parameter der Lambda-Funktion sind die Flags, die aus den PopupProperties-Werten berechnet werden, die zu WindowManager-Flags führen, z.B. „fokusable“. Das Ergebnis der Lambda-Funktion sind die endgültigen Flags, die an den Android WindowManager übergeben werden. Standardmäßig lässt updateAndroidWindowManagerFlags die aus Parametern berechneten Flags unverändert. Diese API sollte nur mit Vorsicht verwendet werden, wenn das Pop-up sehr spezifische Anforderungen an das Verhalten stellt. (I6e9f9)
Recomposer.state
wurde verworfen und durchRecomposer.currentState
ersetzt, um seinen Typ in einen StateFlow zu ändern (Ic2ab3, b/197773820).flush()
unddispose()
wurden zuInjectionScope
hinzugefügt. Verwenden Sie sie, wenn Sie alle in der Warteschlange befindlichen Ereignisse sofort leeren bzw. den Bereich entfernen möchten. (Ifb73a)performScrollToNode(matcher: SemanticsMatcher)
wurde hinzugefügt, mit dem ein scrollbarer Container zu dem Inhalt scrollt, der vom jeweiligen Matcher abgeglichen wird. (Ic1cb8)InjectionScope
implementiert jetztDensity
, sodass du inperformTouchInput
und Freunden ganz einfach zwischen „px“ und „dp“ konvertieren kannst. (I8fe1f)
Fehlerkorrekturen
- AndroidView gibt jetzt „LocalLifecycleOwner“ und „LocalSavedStateRegistryOwner“ über „ViewTreeLifecycleOwner“ und „ViewTreeSavedStateRegistryOwner“ weiter. (I38f96, b/179708470)
- Das Problem mit Wear OS SwipeToDismissBox wurde behoben, wenn das Wischen manchmal nicht funktionierte. (I9387e)
- Die Standardzeit zwischen injizierten Eingabeereignissen wurde von 10 ms in 16 ms geändert. Dies kann sich auf das Ergebnis von Tests auswirken, bei denen Eingabegesten wie ein bestimmtes Wischen ausgeführt werden. (I829fd)
Version 1.1.0-alpha05
29. September 2021
androidx.compose.ui:ui-*:1.1.0-alpha05
wurde veröffentlicht. Version 1.1.0-alpha05 enthält diese Commits.
API-Änderungen
- Zusätzliche Unterstützung für die Kommunikation zwischen Modifizierern (Id5467, b/198826874)
- Es wurden experimentelle historische Hinweise zu PointerEventChange hinzugefügt. (Ic1fd8, b/197553056, b/199921305)
density: Density
undlayoutDirection: LayoutDirection
wurden zuLayoutInfo
hinzugefügt. So können Nutzer vonLayoutInfo
die inLayoutInfo
bereitgestellten Dimensionen und Position richtig interpretieren. (I002f1)- Es wurde experimentelle Unterstützung für das Injizieren von Mausereignissen hinzugefügt. Verwenden Sie
performMouseInput
, um Mausereignisse zu senden, oder senden Sie Mausereignisse über das AttributMouse
vonMultiModalInjectionScope
während einer multimodalen Eingabegeste mitperformMultiModalInput
. Die Dokumentation der verfügbaren API finden Sie unterMouseInjectionScope
. (Iaa4a8, b/190493367)
Fehlerkorrekturen
- Die Unterstützung von Bedienungshilfen für Scrollables (sowohl Lazy als auch Lazy) in Bezug auf Scrollen wurde korrigiert (I6cdb0).
TouchInjectionScope.swipeWithVelocity
verbessert. Sie akzeptiert jetzt mehr Eingabevariablen und schlägt Änderungen an der Eingabe vor, wenn kein Wischen erstellt werden kann (I40fbe, b/182477143).
Version 1.1.0-alpha04
15. September 2021
androidx.compose.ui:ui-*:1.1.0-alpha04
wurde veröffentlicht. Version 1.1.0-alpha04 enthält diese Commits.
API-Änderungen
PointerEvent
hat jetzt einePointerEventType
, um Hover-Ereignisse zu unterstützen. (I091fa)- Erlauben Sie untergeordneten Elementen, Zeigereingaben außerhalb der Zeigereingabegrenzen des übergeordneten Elements zu akzeptieren. Übergeordnete Elemente können diese Aufrufe mit der Eigenschaft PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655) abfangen.
- Verworfene
performGesture
undGestureScope
, die durchperformTouchInput
undTouchInjectionScope
ersetzt wurden. (Ia5f3f, b/190493367) touchBoundsInRoot
wurde zuSemanticsNode
hinzugefügt. Es enthält die Mindestgröße für Berührungszielbereiche, damit Entwickler dafür sorgen können, dass Berührungszielbereiche die Mindestanforderungen für die Barrierefreiheit erfüllen. (I2e14b, b/197751214)- Implementierung von Inspectable wiederholen (I927bc, b/191017532)
- Parametername des Inspectable-Tags wurde so geändert, dass es zusammengefügt wird (I3a482, b/191017532)
performTouchInput
undTouchInjectionScope
wurden als Ersatz fürperformTouchInput
undTouchInjectionScope
eingeführt, um den Weg für andere Modalitäten (z. B. die Maus) zu ebnen.TouchInjectionScope
hat dieselben Methoden wieGestureScope
, mit Ausnahme vonmovePointerTo
undmovePointerBy
, die inupdatePointerTo
undupdatePointerBy
umbenannt wurden. Alle anderen Methoden sind gleich.Das Verhalten von
TouchInjectionScope
ist mit zwei kleinen Details fast identisch mitGestureScope
:- Wenn ein Down-Ereignis gesendet wurde, während Zeiger bewegt wurden, ohne ein Move-Ereignis zu senden (mit anderen Worten,
updatePointerTo()
wurde verwendet, aber nichtmove()
und dann wirddown()
aufgerufen), hat die vorherige Implementierung die Ereigniszeit verschoben und ein Bewegungsereignis gesendet, bevor das Down-Ereignis gesendet wurde. Die neue Implementierung sendet weiterhin das Verschiebungsereignis, verlängert jedoch in diesem speziellen Szenario nicht die Ereigniszeit. - Beim Senden eines Aufwärtsereignisses, während Zeiger bewegt wurden, ohne ein Move-Ereignis zu senden (ähnlich wie oben), würde die vorherige Implementierung die Ereigniszeit verschieben und vor dem Senden des Aufwärtsereignisses ein Bewegungsereignis senden. Die neue Implementierung tut dies auch nicht. Die neuen Positionen der Zeiger werden nur durch das Ereignis "up" widergespiegelt.
Schließlich wird mit
TouchInjectionScope
die neue MethodecurrentPosition(pointerId: Int)
eingeführt, um die aktuelle Position des gegebenen Zeigers abzurufen. (If1191, b/190493367)- Wenn ein Down-Ereignis gesendet wurde, während Zeiger bewegt wurden, ohne ein Move-Ereignis zu senden (mit anderen Worten,
Fehlerkorrekturen
- Der Clip darf die Grenzen des Berührungszielbereichs über den Clipbereich hinaus erweitern, um ein Mindestmaß an Berührungsziel zu erreichen. (I43e10, b/171509422)
- Auf Geräten mit Android 12 wird das Overscroll-Format unterstützt. (Iccf3c, b/171682480)
Version 1.1.0-alpha03
1. September 2021
androidx.compose.ui:ui-*:1.1.0-alpha03
wurde veröffentlicht. Version 1.1.0-alpha03 enthält diese Commits.
Neue Funktionen
- Die Funktion „Compose“ (
1.1.0-alpha03
) wurde so aktualisiert, dass sie von „1.5.30
“ in Kotlin abhängig ist. (I74545)
API-Änderungen
Modifier.inspectable
zum Einbinden anderer Modifikatoren hinzugefügt. (I1909b, b/191017532)- Die
BlurredEdgeTreatment
API wurde hinzugefügt, um Anwendungsfälle mit Unkenntlichmachen in häufiger verwendeten Kombinationen von Clip-Flags und Kachelmodi zu vereinfachen. In den meisten Anwendungsfällen werden unkenntlich gemachte Inhalte entweder außerhalb der ursprünglichen Inhaltsgrenzen gerendert und Bereiche außerhalb dieser Grenzen mit transparentem Schwarz unkenntlich gemacht. Oder Sie beschneiden Inhalte auf Inhaltsgrenzen, indem sie den nächstgelegenen Rand für Weichzeichner-Kernel abtasten, die über die Inhaltsgrenzen hinausgehen. (I6b4b7, b/166927547) - Unterstützung für RenderEffect in Compose-Desktop Einführung von OffsetEffect und des Unschärfemodifikators als einfache Möglichkeit, in einem Teil der Kompositionshierarchie visuelle Weichzeichnereffekte einzuführen. (I0f6aa, b/166927547)
- Einführung der RenderEffect API, die optional auf einem
Modifier.graphicsLayer
konfiguriert werden kann, um den Inhalt der Ebene selbst zu ändern. Damit können Inhalte einer zusammensetzbaren und untergeordneten zusammensetzbaren Funktion innerhalb einer Zusammensetzungshierarchie unkenntlich gemacht werden. (I47c4d, b/166927547) - AwaitPointerEventScope enthält jetzt withTimeout() und withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- ViewConfiguration wurde eine Mindestgröße für Berührungszielbereiche hinzugefügt, die für die Semantik und die Zeigereingabe verwendet werden kann, um die Zugänglichkeit zu gewährleisten. (Ie861c)
- TileMode.Decal-Unterstützung hinzufügen, die beim Definieren des Randverhaltens für Weichzeichner-basierte RenderEffects nützlich ist (I7e8ed, b/166927547)
performScrollToIndex
,performScrollToKey
,hasScrollToIndexAction
undhasScrollToKeyAction
sind jetzt stabile API (I142ae, b/178483889)- Es wurde eine Testmethode zum Abrufen der abgeschnittenen Grenzen hinzugefügt. (I6b28e)
Fehlerkorrekturen
- Die Methode "isBounded" wurde aus BlurredEdgeTreatment entfernt. Stattdessen wird jetzt explizit geprüft, ob der Formparameter null ist. (I85d68)
Version 1.1.0-alpha02
18. August 2021
androidx.compose.ui:ui-*:1.1.0-alpha02
wurde veröffentlicht. Version 1.1.0-alpha02 enthält diese Commits.
API-Änderungen
- PointerEvent unterstützt jetzt das Lesen von Mausschaltflächen und Modifizierern. (I6310c, b/180075467)
- Eingefügte Gesten verwenden jetzt die Zeit der MainTestClock als Informationsquelle für die Zeit. Die aktuelle Zeit für eingefügte Ereignisse in
performGesture
wird mit der aktuellen Zeit der MainTestClock initialisiert. (Ifb364, b/192064452) DpRect(DpOffset, DpSize)
-Konstruktor hinzugefügt (I2cf16, b/194219828)- DpSize-Klasse hinzugefügt (I7abb1, b/194219828)
Fehlerkorrekturen
- Die XML-Analyse für Vektorgrafiken wurde aktualisiert, um ColorStateLists als Stammfarbtoneigenschaften in VectorDrawables zu unterstützen. (I86915, b/195668138)
Version 1.1.0-alpha01
4. August 2021
androidx.compose.ui:ui-*:1.1.0-alpha01
wurde veröffentlicht. Version 1.1.0-alpha01 enthält diese Commits.
API-Änderungen
RelocationRequester.bringIntoView
akzeptiert jetzt ein Rechteck als Parameter, mit dem ein Teil einer zusammensetzbaren Funktion sichtbar wird (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 zur Verarbeitung von Anfragen für eine Umzugsadresse hinzugefügt. (I65a97, b/178211874)
Einführung der BrushPainter API, um das Zeichnen einer beliebigen Pinsel in einem Painter zu unterstützen, ähnlich wie ColorPainter
Brush API wurde aktualisiert, sodass jetzt ein Parameter für die Größe vorhanden ist, der in BrushPainter abgefragt wird (Ia2752, b/189466433).
Aktualisierung der Methode DrawScope#drawImage, die Quell- und Zielabfragen zur Verarbeitung eines optionalen FilterQuality-Parameters verwendet. Dies ist nützlich für Pixelkunst, die verpixelt werden soll, wenn sie für pixelbasierte Grafiken verkleinert wird. BitmapPainter und zusammensetzbare Funktion für Bilder wurden aktualisiert, um auch einen optionalen FilterQuality-Parameter zu nutzen (Ie4fb0, b/180311607).
Die Methode
GestureScope.advanceEventTime
wurde hinzugefügt, um mehr Kontrolle über das Timing von Ereignissen in einer Geste zu geben (Ibf3e2).
Fehlerkorrekturen
- Damit die Verkettung von Draw-Modifikatoren besser unterstützt werden kann, muss die Modifier.paint-Implementierung "drawsContent" aufrufen.
Bisher wurde „Modifier.paint“ für einen Blattknoten in der Modifikatorkette erwartet. Dadurch wird jedoch verhindert, dass er in einem zusammensetzbaren Container (z. B. box) konfiguriert wird oder zusätzliche Dekorationen wie
Modifier.paint().border()
darüber hinzugefügt werden. Indem Sie mit Modifier.paintdrawContent aufrufen, nachdem der Inhalt des jeweiligen Malers gezeichnet wurde, haben wir eine bessere Konsistenz des Verhaltens mit dem Modifikatormuster. (Ibb2a7, b/178201337, b/186213275) - Dialogfelder folgen jetzt dem Verhalten bei der Plattformgröße. Setzen Sie
usePlatformDefaultWidth
auf „false“, um dieses Verhalten zu überschreiben. (Iffaed, b/192682388) InfiniteAnimationPolicy
wurde nach :compose:ui (I5eb09, b/160602714) verschoben- Das Scrollen über Semantikaktionen für Lazy Listen und Komponenten für reguläres Scrollen ist jetzt animiert (Id9066, b/190742024).
Version 1.0
Version 1.0.5
3. November 2021
androidx.compose.ui:ui-*:1.0.5
wurde veröffentlicht. Version 1.0.5 enthält diese Commits.
Fehlerkorrekturen
- Ein Absturz-Tracking von RelatedStateOf-Instanzen wurde behoben. (aosp/1792247)
Version 1.0.4
13. Oktober 2021
androidx.compose.ui:ui-*:1.0.4
wurde veröffentlicht. Version 1.0.4 enthält diese Commits.
Aktualisierung der Abhängigkeiten
- Aktualisiert und abhängig von Kotlin
1.5.31
Version 1.0.3
29. September 2021
androidx.compose.ui:ui-*:1.0.3
wurde veröffentlicht. Version 1.0.3 enthält diese Commits.
Aktualisierung der Abhängigkeiten
- Aktualisiert und abhängig von Kotlin
1.5.30
Version 1.0.2
1. September 2021
androidx.compose.ui:ui-*:1.0.2
wurde veröffentlicht. Version 1.0.2 enthält diese Commits.
Aktualisiert, um die Compose-Version 1.0.2
zu unterstützen. „Compose 1.0.2
“ ist weiterhin mit Kotlin 1.5.21
kompatibel.
Version 1.0.1
4. August 2021
androidx.compose.ui:ui-*:1.0.1
wurde veröffentlicht. Version 1.0.1 enthält diese Commits.
Aktualisierung der Abhängigkeiten
- Aktualisiert und abhängig von Kotlin-
1.5.21
.
Version 1.0.0
28. Juli 2021
androidx.compose.ui:ui-*:1.0.0
wurde veröffentlicht. Version 1.0.0 enthält diese Commits.
Hauptfunktionen von Version 1.0.0
Dies ist die erste stabile Version von Compose. Weitere Informationen finden Sie im offiziellen Compose-Blog.
Bekannte Probleme
Wenn du Android Studio Bumblebee Canary 4 oder AGP
7.1.0-alpha04
/7.1.0-alpha05
verwendest, kann es zu folgendem Absturz kommen:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Erhöhen Sie in der Datei
build.gradle
vorübergehend Ihre minSdkVersion auf 24 oder höher, um das Problem zu beheben. Dieses Problem wird in der nächsten Version von Android Studio Bumblebee und AGP7.1
behoben. (b/194289155)
Version 1.0.0-rc02
14. Juli 2021
androidx.compose.ui:ui-*:1.0.0-rc02
wurde veröffentlicht. Version 1.0.0-rc02 enthält diese Commits.
Fehlerkorrekturen
- Dialogfelder folgen jetzt dem Verhalten bei der Plattformgröße. Setzen Sie
usePlatformDefaultWidth
auf „false“, um dieses Verhalten zu überschreiben. (Iffaed, b/192682388)
Version 1.0.0-rc01
1. Juli 2021
androidx.compose.ui:ui-*:1.0.0-rc01
wurde veröffentlicht. Version 1.0.0-rc01 enthält diese Commits.
Neue Funktionen
- UI-Tooling-Modul in
ui-tooling
undui-tooling-preview
aufteilen (Iefa28, b/190649014)
API-Änderungen
- Die eingestellten experimentellen
FocusManager#moveFocusIn
undFocusManager#moveFocusOut
(I227d7, b/170154986, b/186567354, b/168510304) wurden entfernt. - Canvas unterstützt jetzt einen contentDescription-Parameter für Barrierefreiheit. (Ib547c)
useDefaultMaxWidth
inPopupProperties
wurde inusePlatformDefaultWidth
umbenannt. (I05710)- Dialogfelder können jetzt die gesamte Bildschirmbreite nutzen. (I83929, b/190810877)
- Experimentelle Unterstützung für HSV- und HSL-Farbdarstellungen wurde hinzugefügt. (Id7cf8, b/180731008)
Änderungen im Verhalten
- Durch das Erstellen von
@Preview
ist jetzt einLocalActivityResultRegistryOwner
verfügbar, mit dem Sie Composables als Vorschau anzeigen können, die APIs wierememberLauncherForActivityResult()
verwenden, die von diesem Inhaber abhängen. (Ib13d1, b/185693006) - Durch das Erstellen von
@Preview
ist jetzt einLocalOnBackPressedDispatcherOwner
verfügbar, mit dem Sie Composables in der Vorschau anzeigen können, die APIs wieBackHandler
verwenden, die von diesem Inhaber abhängen. (Ia1c05, b/185693006)
Fehlerkorrekturen
InfiniteAnimationPolicy
wurde nachandroidx.compose.ui:ui
verschoben (I5eb09, b/160602714)- AnimierteImageVector 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
wurde veröffentlicht. Version 1.0.0-beta09 enthält diese Commits.
API-Änderungen
- Enum- "Role" und "LiveRegionMode" in Inline-Klassen mit privatem Konstruktor (Id1890) ändern
- KeyboardCapitalization wird in eine Inline-Klasse konvertiert. (Id5a1c)
- Ändern Sie „HapticFeedbackType“ in „Inline-Klasse“. (I255ec)
- Modifier.pointerInteropFilter ist @ExperimentalComposeUiApi. (Iede6c)
- TextAlign, FontSynthesis und TextDirection sind jetzt Inline-Klassen. (I212fe)
- TextOverflow wurde in eine Inline-Klasse geändert. (I433af)
- FontStyle ist jetzt eine Inline-Klasse. (I9e48b)
Fehlerkorrekturen
- Die Schlüsselkonstanten sind vorerst @ExperimentalComposeUiApi. Bei der Codeaufnahme können private Konstanten vor der Stabilisierung deklariert werden. (Ia5d48)
- Compose-Tests können jetzt mit Robolectric ausgeführt werden. Bisher wurden folgende Einschränkungen identifiziert:
- 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 Ziehdurchlauf (d.h., es wird ein Deadlock ausgelöst). - Es ist keine Schriftart geladen, daher wird jeglicher Text falsch gemessen. Alle Zeichen haben eine feste Höhe von etwa 20 Pixel und eine Breite von 1 Pixel.
ComposeTestRule.waitUntil {}
führt den Hauptthread nicht aus, während er im Wartezustand ist. Damit ist er praktisch identisch mitComposeTestRule.mainClock.advanceTimeUntil {}
. Weitere Einschränkungen werden in Zukunft geplant. (I284fa)
- Da es keine native Bitmap gibt, führt
Regeln für Profil hinzugefügt
In diesem Release werden den folgenden Erstellungsmodulen (I14ed6) Profilregeln hinzugefügt:
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometrie
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit.
- androidx.compose.ui.util-
Was sind Profilregeln?
Profilregeln für eine Bibliothek werden in der Textdatei
baseline-prof.txt
imsrc/main
oder einem entsprechenden Verzeichnis angegeben. In der Datei ist eine Regel pro Zeile angegeben, wobei eine Regel in diesem Fall ein Muster für den Abgleich mit Methoden oder Klassen in der Bibliothek ist. Die Syntax für diese Regeln ist eine Obermenge des visuell lesbaren ART-Profilformats, das bei Verwendung vonadb shell profman --dump-classes-and-methods ...
verwendet wird. Für die Ausrichtung auf Methoden oder Klassen gibt es zwei Arten dieser Regeln.Eine Methodenregel hat das folgende Muster:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Und eine Klassenregel hat das folgende Muster:
<CLASS_DESCRIPTOR>
Hier steht
<FLAGS>
für mindestens eines der 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 sowie die Parametertypen und Rückgabetypen der Methode. Die Methodefun isPlaced(): Boolean
fürLayoutNode
hat beispielsweise die SignaturisPlaced()Z
.Diese Muster können Platzhalter (
**
,*
und?
) enthalten, damit eine einzelne Regel mehrere Methoden oder Klassen umfasst.
Wozu dienen die Regeln?
Eine Methode mit dem Flag
H
gibt an, dass diese Methode eine "heiße" Methode ist und im Voraus kompiliert werden sollte.Eine Methode mit dem Flag
S
gibt an, dass es sich um eine Methode handelt, die beim Start aufgerufen und im Voraus kompiliert werden sollte, um die Kosten für die Kompilierung und die Interpretation der Methode beim Start zu vermeiden.Eine Methode mit dem Flag
P
gibt an, dass es sich um eine Methode handelt, die nach dem Start aufgerufen wird.Eine in dieser Datei vorhandene Klasse gibt an, dass sie beim Start verwendet wird und im Heap zugewiesen werden sollte, um Kosten für das Laden der Klasse zu vermeiden.
So funktioniert's
- Bibliotheken können diese Regeln definieren, die in AAR-Artefakte gepackt werden. Wenn dann eine App erstellt wird, die diese Artefakte enthält, werden diese Regeln zusammengeführt und die zusammengeführten Regeln werden verwendet, um ein kompaktes binäres ART-Profil zu erstellen, das für die App spezifisch ist. ART kann dieses Profil dann bei der Installation der App auf Geräten nutzen, um im Voraus eine bestimmte Teilmenge der Anwendung zu kompilieren, um die Leistung der Anwendung zu verbessern, insbesondere bei der ersten Ausführung. Dies hat keine Auswirkungen auf Debug-fähige Anwendungen.
Version 1.0.0-beta08
2. Juni 2021
androidx.compose.ui:ui-*:1.0.0-beta08
wurde veröffentlicht. Version 1.0.0-beta08 enthält diese Commits.
API-Änderungen
NestedScrollSource
-Enum wird durch eine Inline-Klasse ersetzt. (Ie321b, b/187055290)FocusManager.clearFocus(forcedClear = true)
wird inFocusManager.clearFocus(force = true)
umbenannt (Ia0c41).- Die Verwendung von enum-Werten in Inline-Klassen wurde umgestaltet, um Probleme mit vollständigen Anweisungen zu vermeiden, wenn neue Enum-Werte hinzugefügt werden. (I2b5eb)
@ExperimentalComposeUiApi
ausPopupProperties
entfernen. (I01fa6)PointerType
wurde von einer Aufzählung in eine Inline-Klasse geändert (If5058)- „ContentDescription“ und „Text Semantik“ sind keine einzelnen Werte, sondern Listen. Dies ermöglicht es, sie unverändert zusammenzuführen, anstatt Verkettungen zu verwenden. Außerdem wurden bessere Test-APIs zur Nutzung dieser Änderungen bereitgestellt (Ica6bf, b/184825850).
Modifier.focusModifier()
wurde verworfen und durchModifier.focusTarget()
(I6c860) ersetztModifier.onSizeChanged()
undModifier.onGloballyPositioned()
sind keine Inline-Funktionen mehr (I727f6, b/186109675).KeyboardType
-Enum wird durch eine Inline-Klasse ersetzt. (I73045, b/187055290)FocusState
-Enum durchFocusState
-Schnittstelle ersetzt (Iccc1a, b/187055290)- ImeAction-Enum wird durch eine Inline-Klasse ersetzt. (I18be5, b/187055290)
PlaceholderVerticalAlign
wird in eine Inline-Klasse konvertiert. (If6290)- TextUnitType ist jetzt eine Inline-Klasse. (I4cba9)
AnnotatedString.withAnnotation
-Funktionen heißen jetzt ExperimentalTextApi anstelle von ExperimentalComposeApi. (I0cd0a)- Der TextUnit-Konstruktor mit TextUnitType ist jetzt ExperimentalTextApi anstelle von ExperimentalComposeApi.
Fehlerkorrekturen
- Der in Beta07 eingeführte Fehler wurde behoben, bei dem LazyColumn-/Row-Elemente nach dem Scrollen teilweise angezeigt wurden (I8c9ac, b/188566058).
- Die Positionsänderung wird jetzt von
detectDragGesures
,detectVerticalGestures
unddetectHorizontalGestures
automatisch übernommen, sodass man change.consumePositionChange in den onDrag-Callbacks nicht aufrufen muss (I42fc4, b/185096350, b/187320697). - LayoutModifiers mit Ausrichtungslinien wurden korrigiert. Ein Fehler, der dazu führte, dass das übergeordnete Element nicht erneut gemessen wurde, als sich die Ausrichtungslinien der untergeordneten Elemente änderten, wurde behoben. (I4401f, b/174315652)
Modifier.onGloballyPositioned()
wurde geändert, um die Koordinaten dieses Modifikators in der Modifikatorkette anzugeben, und nicht die Layoutkoordinaten, nachdem alle Modifikatoren angewendet wurden. Das bedeutet, dass sich jetzt die Reihenfolge der Modifikatoren darauf auswirkt, welche Koordinaten im Bericht angezeigt werden. (Ieb67d, b/177926591)
Version 1.0.0-beta07
18. Mai 2021
androidx.compose.ui:ui-*:1.0.0-beta07
wurde veröffentlicht. Version 1.0.0-beta07 enthält diese Commits.
API-Änderungen
ViewRootForInspector
-Schnittstelle zur Verwendung im Inspector hinzugefügt (Ib70df)SubcomposeLayoutState
unterstützt jetzt die Festlegung der Anzahl von wiederverwendbaren Slots. Im Layout bleibt diese Anzahl von Slots aktiv. Sie werden nicht entsorgt, damit sie wiederverwendet werden können, wenn ein neuer Slot benötigt wird (Ieb981).- KeyEventType-Enum durch eine Inline-Klasse ersetzt (Id670a, b/187055290)
FocusDirection
-Enum wird durch eine Inline-Klasse ersetzt. (Ib6d03, b/187055290, b/184086802)- Bietet die Möglichkeit, den SubcomposeLayout-Zustand zu heben, mit der Sie den Inhalt in eine erforderliche Slot-ID vorversetzen können, wodurch der nächste Messwert schneller übergeben wird, da beim nächsten Mal keine Zusammensetzung mit der angegebenen SlotId versucht wird. (I42580, b/184940225)
- Ziehpunkt für Clip-Auswahl hinzugefügt (Iff80d, b/183408447)
- Nicht verwendete APIs für die Unterstützung von LayoutInspector wurden entfernt. (I2ac78)
Fehlerkorrekturen
- In LazyColumn/Row bleiben jetzt bis zu zwei zuvor sichtbare Elemente aktiv (nicht entsorgt), auch wenn sie bereits herausgescrollt werden. Dadurch kann die Komponente die aktiven Unterzusammensetzungen wiederverwenden, wenn ein neues Element erstellt werden muss, was das Scrollen verbessert. (IE5555)
TextGeomerticTransform
undTextDecoration
fürAnnotatedString
werden wie angegeben angewendet. (I61900, b/184760917)
Version 1.0.0-beta06
5. Mai 2021
androidx.compose.ui:ui-*:1.0.0-beta06
wurde veröffentlicht. Version 1.0.0-beta06 enthält diese Commits.
API-Änderungen
- Konflikt mit Navigationsbewegung lösen (I1145e)
@ComposeCompilerApi
nicht mehr@RequiresOptIn
(Iab690)- Die Bedienungshilfen „CollectionInfo“ und „CollectionItemInfo“ wurden hinzugefügt, mit denen eine Sammlung und ihre Elemente für Bedienungshilfen markiert werden können (Id54ef, b/180479017).
SemanticsActions.ScrollToIndex
wurde hinzugefügt, um eine Liste mit indexierten Elementen zu dem Element mit einem bestimmten Index zu scrollen, undSemanticsProperties.IndexForKey
, um den Index eines Elements in einer Liste mit verknüpften Elementen abzurufen. Beide Aktionen werden von LazyList implementiert.- Es wurde
SemanticsNodeInteraction.performScrollToIndex
hinzugefügt, das eine Liste zum angegebenen Index scrollt, undSemanticsNodeInteraction.performScrollToKey
, das eine Liste zum Element mit dem angegebenen Schlüssel scrollt. (I4fe63, b/178483889, b/161584524)
- Es wurde
- "ownerViewId" wurde zu GraphicLayerInfo (I19f62) hinzugefügt.
- Es wurde eine Font()-Überladung hinzugefügt, um Schriftarten aus Assets, der Datei und FileDescriptor zu laden (I5d382).
- Die Accessibility API
error
wurde hinzugefügt, mit der ein Knoten markiert werden kann, der eine ungültige Eingabe enthält (I12997, b/180584804, b/182142737). Font()
-Überladungen hinzugefügt, um Schriftarten aus Assets, der Datei und dem FileDescriptor zu laden (I43007)- Die Speicherung von AnnotatedString wird unter
TextFieldValue.Saver
unterstützt.addTtsAnnotation
und mit Annotation-Dienstprogrammfunktionen wurden zuAnnotatedString.Builder
hinzugefügt (I8cbdc, b/178446304). - TextUnit-Konstruktorfunktion
TextUnit(value: Float, type: TextUnitType)
(I7ecce, b/178446304) hinzugefügt
Version 1.0.0-beta05
21. April 2021
androidx.compose.ui:ui-*:1.0.0-beta05
wurde veröffentlicht. Version 1.0.0-beta05 enthält diese Commits.
API-Änderungen
- Experimentelle
FocusManager.moveFocus(In)
undFocusManager.moveFocus(Out)
hinzugefügt (Ic5534, b/183746743) - Experimentelle
performTextInputSelection
API hinzugefügt (I2dcbb, b/178510628) - Die
InputEventCallback
-Oberfläche wurde verworfen. Die Schnittstelle konnte in keiner öffentlichen API verwendet werden und sie wurde auch nicht im Code verwendet. (I34a02, b/184003208) - Eingestellte Funktion
TextLayoutResult/createTextLayoutResult
. Es handelt sich um eine nicht verwendete öffentliche Funktion, die zum Testen hinzugefügt wurde. Die Funktion erfüllt nichts, was für Composer-Text-APIs verwendet werden kann. Die Funktion wurde verworfen und wird später entfernt. (I80413)
Fehlerkorrekturen
- Die Scrollaktionen für Bedienungshilfen in
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
undaccessibilityActionScrollDown
wurden korrigiert. Anstatt bis zum Ende des scrollbaren Bereichs zu scrollen, wird jetzt um einen Bildschirm in die angegebene Richtung gescrollt. (Ieccb0) - Die AndroidManifest-Dateien aus „ui-test-manifest“ und „ui-tooling-data“ sind jetzt mit Android 12 kompatibel (I6f9de, b/184718994).
Version 1.0.0-beta04
7. April 2021
androidx.compose.ui:ui-*:1.0.0-beta04
wurde veröffentlicht. Version 1.0.0-beta04 enthält diese Commits.
API-Änderungen
- Benennen Sie
hideSoftwareKeyboard
undshowSoftwareKeyboard
aufSoftwareKeyboardController
inhide()
bzw.show()
um.- Vollständige CompositionLocal-Schnittstelle für LocalSoftwareKeyboardController bereitstellen, sodass diese festgelegt werden kann (besonders in Tests nützlich) (I579a6)
- Die LiveRegion Accessibility API wurde hinzugefügt. Wenn der Knoten als Live-Region markiert ist, benachrichtigen die Bedienungshilfen den Nutzer automatisch über die Änderungen (Idcf6f, b/172590946).
- TextOverflow.Visible. (Ic8f89)
Fehlerkorrekturen
- Das Problem, dass Elemente von
LazyColumn
/LazyRow
, die sich an den Kanten befanden, nach schnellem Wischen falsch positioniert wurden (Ie4d13, b/183877420) wurde behoben. AndroidViewBinding
entfernt jetzt ordnungsgemäß Fragmente, die überFragmentContainerView
aufgebläht wurden, wennAndroidViewBinding
aus der Zusammensetzungshierarchie entfernt wird. (Ib0248, b/179915946)AndroidViewBinding
verschachtelt jetzt überFragmentContainerView
aufgeblähte Fragmente korrekt, wenn sichComposeView
innerhalb einesFragment
befindet. Dadurch werden Probleme beim Speichern und Wiederherstellen des Zustands dieser Fragmente behoben. (I70eb0, b/179915946)- Die Erstellung von ViewBinding hängt jetzt von Fragment
1.3.2
ab und zeigt jetzt einheitlich Fragmente an, die nach Konfigurationsänderungen überFragmentContainerView
aufgebläht wurden. (I0743d, b/179915946)
Version 1.0.0-beta03
24. März 2021
androidx.compose.ui:ui-*:1.0.0-beta03
wurde veröffentlicht. Version 1.0.0-beta03 enthält diese Commits.
API-Änderungen
- Verzögerte Prüfung auf ViewTree-Abhängigkeiten von ComposeView (I8dbbf, b/182466548)
- Den Funktionen
swipeUp
/swipeDown
/swipeLeft
/swipeRight
inGestureScope
wurden optionalestartX
/endX
- undstartY
/endY
-Parameter hinzugefügt. (I49e2d, b/182063305)
Version 1.0.0-beta02
10. März 2021
androidx.compose.ui:ui-*:1.0.0-beta02
wurde veröffentlicht. Version 1.0.0-beta02 enthält diese Commits.
API-Änderungen
- Neue lokale API zur
LocalSoftwareKeyboardController
-Kompositionierung hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I5951e, b/168778053) - Neue lokale API zur
LocalSoftwareKeyboardController
-Kompositionierung hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I84472, b/168778053) - Die folgenden
SemanticsMatcher
s wurden entfernt:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(If16bd)
- Die folgende
SemanticsMatchers
wurde als @ExperimentalTestApi gekennzeichnet:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(Ia600c)
- Die folgenden
SemanticsMatcher
s wurden hinzugefügt:hasWidth(width, tolerance)
hasHeight(height, tolerance)
hasLeftPosition(left, tolerance)
hasTopPosition(top, tolerance)
hasRightPosition(right, tolerance)
hasBottomPosition(bottom, tolerance)
(I2f502)
Fehlerkorrekturen
- Einschränkungen für die öffentliche Nutzung experimenteller APIs erzwingen (I6aa29, b/174531520)
androidx.compose.ui:ui
ist nicht mehr von AppCompat oder Fragment abhängig. Wenn Sie in Ihrer Anwendung ein ComposeView-Objekt und Fragment und/oder AppCompat verwenden, stellen Sie sicher, dass Sie AppCompat 1.3 und höher bzw. Fragment 1.3 oder höher verwenden. Diese Versionen sind erforderlich, um den Lebenszyklus und die für ComposeView erforderlichen Inhaber von gespeicherten Status korrekt festzulegen. (I1d6fa, b/161814404)- Behebung des fehlerhaften
rememberSaveable { mutableStateOf(0) }
, der innerhalb eines Ziels von navigation-compose verwendet wurde. (I1312b, b/180042685, b/180701630) - Neue lokale API zur
LocalSoftwareKeyboardController
-Kompositionierung hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I658b6, b/168778053) - Die seltene Ausnahme NoSuchElementException in
tearDownRegistry()
vonComposeRootRegistry
(Iddce1) wurde behoben.
Version 1.0.0-beta01
24. Februar 2021
androidx.compose.ui:ui-*:1.0.0-beta01
wurde veröffentlicht. Version 1.0.0-beta01 enthält diese Commits.
Dies ist die erste Version der Betaversion von Compose 1.0.0.
API-Änderungen
- Der onStart-Callback wurde
detectDragGestures
hinzugefügt (I67269, b/179995594). - Modifikatoren zur Größenanpassung für intrinsische Elemente sind nicht mehr experimentell. (I15744)
- MeasureBlocks wurde in MeasurePolicy umbenannt, eine unterhaltsame Oberfläche. Die Layout-APIs wurden für die Verwendung von MeasurePolicy aktualisiert oder vereinfacht. (Icab48, b/167662468, b/156751158)
InteractionState
wurde durch[Mutable]InteractionSource
ersetzt.- Schnittstellen sind für das Ausgeben und Erfassen von Interaktionsereignissen verantwortlich.
- Anstatt
interactionState = remember { InteractionState() }
an Komponenten wieButton
undModifier.clickable()
zu übergeben, verwenden SieinteractionSource = remember { MutableInteractionSource() }
. - Anstelle von
Interaction.Pressed in interactionState
sollten Sie stattdessen die Erweiterungsfunktionen für InteractionSource verwenden, z. B. InteractionSource.collectIsPressedAsState(). - Für komplexe Anwendungsfälle können Sie InteractionSource.interactions verwenden, um den Interaktionsstrom zu beobachten. Weitere Informationen finden Sie in der InteractionSource-Dokumentation und den Beispielen.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- AccessibilityMananger-Oberfläche und LocalAccessibilityMananger in CompositionLocals hinzufügen (I53520)
- Die eingestellten LayoutCoordinates-Methoden wurden entfernt. Verwenden Sie anstelle der Eigenschaft für positionInParent und boundsInParent (I580ed, b/169874631, b/175142755) die Funktion
- Typaliasse, die durch zugrunde liegende Typen ersetzt werden:
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 aus Low-Level-Textkomponenten wie CoreTextField erstellt. (I8817f, b/177662148)
- „Placeable“ zeigt jetzt „measureSize“ an. Sie stellt die Größe dar, mit der das untergeordnete Layout tatsächlich gemessen wurde. Bei dieser Größe werden die Messbeschränkungen möglicherweise nicht berücksichtigt. (Ib2729, b/172560206, b/172338608)
- „selectGroup“-Modifikator hinzufügen, mit dem eine Sammlung von Tabs oder Optionsfeldern aus Gründen der Barrierefreiheit markiert werden kann (Ie5c29)
Der
defaultFactory
fürcompositionLocalOf
undstaticCompositionLocalOf
ist jetzt erforderlich statt optional.Diese Änderung beseitigt einen potenziellen Typfehler für Typen, die keine Nullwerte zulassen können und für die keine Standard-Factory angegeben wurde. Bisher wurde dadurch eine Nullreferenz für einen Typ bereitgestellt, der keine Nullwerte zulässt.
Für Typen, für die Nullwerte zulässig sind, sollten Sie
{ null }
als Standardwerkstatt angeben.Wir raten davon ab, Local Guides mit Typen zu verwenden, die keine Nullwerte zulassen, es sei denn, es kann ein vernünftiger Standardwert angegeben werden. Wenn kein sinnvoller Standardwert vorhanden ist, sollte die Lambda-Funktion
defaultFactory
eine Ausnahme auslösen. Das Auslösen einer Ausnahme bedeutet jedoch, dass für lokale Nutzer eine implizite Abhängigkeit besteht, die vom Typsystem nicht erzwungen wird. (Ifbd2a)Verworfene Methoden aus UI-Modulen wurden entfernt (I646f6)
Größenmodifikatoren wurden umbenannt. „modifier.width/height/size“ wurde in requiredWidth/requiredHeight/requiredSize umbenannt. „Modifier.preferredWidth/preferredHeight/preferredSize“ wurde in „Breite/Höhe/Größe“ umbenannt. (I5b414)
Modifier.tapGestureFilter
wurde entfernt. Verwende stattdessenModifier.pointerInput { detectTapGestures(...) }
. (I266ed, b/175294473)ein teilweiser Verbrauch wurde aus dem Zeiger-Eingabesystem entfernt. Die empfohlene Methode zur Koordination der teilweisen Nutzung ist Modifier.nestedScroll. (Ie9c9b)
„Ausrichtung“ wurde in das Foundation-Paket verschoben. VelocirtTracker wurde von ui.gesture zu ui.input.pointer verschoben. (Iff4a8, b/175294473)
„imageResource“ und „vectorResource“ sind jetzt Erweiterungsfunktionen für ImageBitmap- bzw. ImageVector-Companions.
load{Image,Vector,Font}Resource
Funktionen wurden gelöscht. (I89130)AnimationClockObservable und Unterklassen wurden entfernt. AnimierteFloat-Anzeige wurde entfernt. (Icde52, b/177457083)
„Providers“ wurde in CompositionLocalProvider umbenannt
- Der Kompositionskonstruktor akzeptiert keinen Schlüsselparameter mehr und wurde eingestellt.
- currentCompositeKeyHash wurde in eine zusammensetzbare Top-Level-Eigenschaft anstelle einer zusammensetzbaren Top-Level-Funktion umgewandelt.
- CompositionData und CompositionGroup wurden in den Namespace „androidx.compose.runtime.tooling“ verschoben
- ComposableLambda wurde zu einer Schnittstelle anstelle einer konkreten Klasse gemacht und verfügt nicht mehr über Typparameter.
- ComposableLambdaN ist jetzt eine Schnittstelle anstelle einer konkreten Klasse und hat keine Typparameter mehr.
- Die Funktion „SnapshotFlow“ wurde in den Namespace „androidx.compose.runtime“ verschoben
- Die Zusammenführungsmethode von SnapshotMutationPolicy ist nicht mehr experimentell
- Die @TestOnly-Funktion „clearRoots“ der obersten Ebene wurde entfernt. Es ist nicht mehr notwendig.
- Die Funktionen „keySourceInfoOf“ und „resetSourceInfo“ wurden entfernt. Sie werden nicht mehr benötigt.
- Composer.collectKeySourceInformation wurde entfernt. Es ist nicht mehr notwendig.
- Die Methoden „isJoinedKey“, „joinKeyLeft“ und „joinKeyRight“ wurden entfernt. Sie werden nicht mehr benötigt.
- Verschiedene APIs der obersten Ebene wurden verschoben und in verschiedene Dateien neu organisiert. Aufgrund der Semantik der Dateiklassen von Kotlin wird die Kompatibilität der Binärdateien, aber nicht der Quelldateien beeinträchtigt. Daher sollte es für die meisten Nutzer kein Problem sein.
- (I99b7d, b/177245490)
ComponentActivity.setContent()
wurde aus „Compose:ui“ entfernt. Du kannst die vonandroidx.activity:activity-compose:1.3.0-alpha01
verwenden.viewModel()
undLocalViewModelStoreOwner
wurden aus „Compose:ui“ entfernt. Verwenden Sie die ausandroidx.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).
CustomEvens von PointerInputModifier wurde entfernt (I02707, b/175294473)
SnapshotStateObserver ist nicht mehr experimentell (Id2e6a).
Einige zuvor eingestellte APIs wurden gelöscht (Ice5da, b/178633932).
longPressUnlockGestenFilter und DoubleClickGestenFilter wurden entfernt. Verwenden Sie Modifier.pointerInput mit Hilfsfunktionen, z. B. detectTapGestens (I2fedf, b/175294473).
Die refaktorierte Verwendung der String.format API in verschiedenen toString-Methoden wurde entfernt, um String.format nicht intern zu nutzen. (ID1290)
dp-Assertions entfernt (I798d2)
androidx.compose.runtime:runtime- zwar 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 "Ints" dargestellt (I81298).
FlingConfig wurde in FlingBehavior umbenannt. Sie ermöglicht jetzt die Anpassung von Stoppanimationen anstelle von vordefinierten Decays. (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 SoftwareKeyboardController-Callback wurde aus allen Textfeldern entfernt, der demnächst durch eine neue API ersetzt wird. (Iae869, b/168778053)
FontSpan und FontWeigthStyleSpan werden nicht mehr verwendet und entfernt. (Ie5b56, b/177423444)
Folgende Änderungen an der Material API wurden vorgenommen:
- Der Parameter "contentPadding" wurde zu Top/BottomAppBar hinzugefügt, um das Standard-Padding anzupassen.
- Die Parameter in BackdropScaffold wurden neu angeordnet, um den API-Richtlinien für erforderliche Parameter vor optionalen Parametern zu entsprechen.
- Der Parameter
icon
wurde in BottomNavigationItem hinterselected
undonClick
verschoben. - Der Parameter
alwaysShowLabels
in BottomNavigationItem wurde inalwaysShowLabel
umbenannt. bodyContent
-Parameter in einigen Komponenten incontent
umbenannt.- Parameter in
ButtonDefaults.buttonColors()
neu angeordnet. Bitte beachten Sie, dass dies keinen Fehler in Ihrem Code verursacht, da sich der Typ der Parameter nicht geändert hat. Stellen Sie sicher, dass Sie entweder benannte Parameter verwenden oder die Reihenfolge manuell aktualisieren. Andernfalls funktioniert der Code nicht wie zuvor. - Der Parameter
secondaryVariant
wurde zudarkColors()
hinzugefügt. Diese Farbe hat in der Regel die gleiche Farbe wiesecondary
im dunklen Design, sorgt aber für Einheitlichkeit und eine weitere Anpassung. - ElevationDefaults und animateElevation() wurden von der öffentlichen API-Oberfläche entfernt, da sie im Allgemeinen nicht verwendet wurden bzw. nicht nützlich waren.
onValueChangeEnd
inSlider
wurde inonValueChangeFinished
umbenannt und Nullwerte zulässig.- Der Parameter
text
inSnackbar
wurde aus Konsistenzgründen incontent
umbenannt. - Der Parameter
contentPadding
wurde zuDropdownMenuItem
hinzugefügt, um das Anpassen des Standardabstands zu ermöglichen.content
wurde zu einer Erweiterung vonRowScope
. ModalDrawerLayout
wurde inModalDrawer
umbenannt.BottomDrawerLayout
wurde inBottomDrawer
umbenannt.- (I1cc66)
Fehlerkorrekturen
- Es wurde eine API zur Verwendung von animateVectorDrawable-Ressourcen in Compose hinzugefügt. Verwenden Sie "animatedVectorResource", um eine
<animated-vector>
-XML als animatedImageVector zu laden und mit "painterFor" (I8ea91) zu animieren. - Neue lokale LocalSoftwareKeyboardController-Zusammensetzungs-API hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I658b6, b/168778053)
Version 1.0.0-alpha12
10. Februar 2021
androidx.compose.ui:ui-*:1.0.0-alpha12
wurde veröffentlicht. Version 1.0.0-alpha12 enthält diese Commits.
API-Änderungen
- ViewGroups werden aus UiApplier nicht mehr unterstützt. Die verworfenen zusammensetzbaren Funktionen von emitView wurden entfernt. (Ifb214)
- Modifier.pointerInput erfordert jetzt das Speichern von Schlüsseln, um anzugeben, wann die Koroutine zur Erkennung der Zeigereingabe für neue Abhängigkeiten neu gestartet werden soll. (I849cd)
- CompositionReference wurde in CompositionContext (I53fcb) umbenannt
- „Bounds“ wurde in „DpRect“ umbenannt (I4b32a).
- Test-Update: hasText() sucht im Textfeld sowohl nach Eingabe- als auch Label-/Hinweisen/Platzhaltern (Iab803)
- viewModel() zusammensetzbar und LocalViewModelStoreOwner wurden nach androidx.lifecycle.viewmodel.compose verschoben. Jetzt müssen Sie die separate Abhängigkeit „androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01“ hinzufügen, um sie zu verwenden. (I7a374)
- Aktion, für die Nullwerte zulässig sind, in AccessibilityAction zulassen, Aktionslabel in AccessibilityAction und CustomAccessibilityAction von CharSequence in String ändern (I0dc82)
- Damit die Namenskonventionen besser mit ImageBitmap und ImageVector übereinstimmen, wurde ImagePainter in BitmapPainter in paralleles VectorPainter umbenannt. (Iba381, b/174565889)
- Bessere Teilstring-Test-APIs mit Teilstring jetzt als Argument (Icbe78)
- Ein
Modifier.focusOrder()
wurde hinzugefügt, der einen FocusRequester akzeptiert, ohne eine benutzerdefinierte Fokusreihenfolge (Lambda) anzugeben. Dies ist nützlich, wenn wir nur eine Referenz, aber keine benutzerdefinierte Fokusreihenfolge für eine zusammensetzbare Funktion angeben müssen (I4f52a, b/179180978). - "ComponentActivity.setContent" wurde nach "androidx.activity.compose.setContent" im Modul "androidx.activity:activity-compose" verschoben. (Icf416)
- Die Methoden zum Löschen und copy() wurden aus mehreren Klassen entfernt, in denen sie selten verwendet wurden. (I26702, b/178659281)
- Pop-up wurde zu plattformspezifisch verschoben. AndroidPopupProperties wurde in PopupProperties umbenannt und
isFocusable
wurde inPopupProperties
(Ieeea5) in einenfocusable
-Parameter verschoben. - Dialogfeld wurde zu plattformspezifischen Angaben verschoben. AndroidDialogProperties wurde in DialogProperties umbenannt. (I4ef69, b/179138130)
- LayoutNode intern erstellt (I8a7b1, b/175103944)
- „Constraints.enforce“ wurde durch „Constraints.constrain“ ersetzt. (I8b8ea)
- „loadFontResource“ wurde eingestellt. Verwenden Sie stattdessen „fontResource“. Die Attribute „imageResource“, „loadImageResource“, „vectorResource“ und „loadVectorResource“ wurden eingestellt. Verwenden Sie stattdessen PainterResource. (I6b809)
- Aus Leistungsgründen verwendet die ScrollAxisRange-Semantik jetzt Lambdas, die Gleitkommazahlen zurückgeben, anstelle von direkten Gleitkommawerten. (If4a35, b/178657186)
- Es wurde eine EditableText-Semantik hinzugefügt, um bearbeitbaren Eingabetext des Textfeldes zur Barrierefreiheit zu markieren, und entsprechende Testmethoden zur Prüfung der Semantik (I8e07a).
- InhaberLayer/OwnerScope/OwnerSnapshotObserver intern geändert (I4ffaf, b/175103944)
- toIntPx() wurde inroundToPx() umbenannt. (I9b7e4, b/173502290)
- IntBounds wurde in IntRect umbenannt und die API wurde verbessert. (I1f6ff)
- Die Snapshot API wurde aktualisiert, um sie an die API-Richtlinie anzupassen und interne Implementierungsklassen von der öffentlichen API auszublenden. (Id9e32)
- Semantikaktionen zum Maximieren und Minimieren wurden hinzugefügt. Einblendung und halber Maximierung in ModalBottomSheetState (Ib5064) hinzugefügt
- „Modifier.dragGestenFilter“ wurde eingestellt. Verwende stattdessen
Modifier.pointerInput { detectDragGestures (...)}
. Alternativ können Sie „Modifier.draggable“ für das Ziehen um eine Achse verwenden (I0ba93, b/175294473). - Ambients wurden umbenannt, damit sie der Umbenennung von Ambient -> CompositionLocal entsprechen. Ambients hießen früher AmbientFoo, CompositionLocals heißt jetzt LocalFoo. (I2d55d)
- Das verworfene BaseTextField wurde entfernt. Verwenden Sie stattdessen BasicTextField. (I71368)
- Auswahl wurde auf Fundament verschoben. (I7892b)
- Ähnlich wie zuvor entfernte die zusammensetzbare Funktion
state { 0 }
und jetzt die Verwendung wieremember { mutableStateOf(0) }
, entfernen wir die zusammensetzbare FunktionsavedInstanceState { 0 }
. Sie sollten stattdessenrememberSaveable { mutableStateOf(0) }
verwenden. Die Speicherung und Wiederherstellung erfolgen automatisch, wenn der im MutableState verwendete Typ im Bundle gespeichert werden kann. Wenn Sie bisher ein benutzerdefiniertes Saver-Objekt übergeben haben, müssen Sie eine neue Überlastung von „merkSaveable“ mit dem ParameterstateSaver
verwenden. Die Nutzung sieht so aus:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004) - Passwortsemantik für Bedienungshilfen hinzugefügt (I231ce)
- "ProgressBarRangeInfo.Indeterminate" wurde hinzugefügt, um indeterminate Fortschrittsbalken für Bedienungshilfen zu kennzeichnen (I6fe05).
- Die Dienstprogramme
emptyContent()
und(@Composable () -> Unit).orEmpty()
wurden eingestellt, da sie sich nicht mehr positiv auf die Leistung auswirken (I0484d) snapshotFlow
undwithMutableSnapshot
sind nicht mehr experimentell (I6a45f).- Recomposeren können jetzt geschlossen werden. Geschlossene Recomposeren setzen die Neuzusammensetzung fort, bis die untergeordneten Koroutinen der Komposition abgeschlossen sind. Recomposer.shutDown wurde umbenannt, um den Vorgang abzubrechen und einen Kontrast mit dem Schließen zu bilden. (Ib6d76)
- UiSavedStateRegistry wurde in SaveableStateRegistry, AmbientUiSavedStateRegistry in AmbientSaveableStateRegistry umbenannt und beide in das Paket „androidx.compose.runtime.saveable“ verschoben. (I30224)
- Das Artefakt „androidx:compose:runtime:runtime-saved-instance-state“ wurde in „androidx:compose:runtime:runtime-saveable“ (I6dcac) umbenannt
- Viele veraltete APIs im ui-Paket werden gelöscht. (I2f2dc)
- Das Artefakt „Compose:runtime-Dispatch“ wurde verworfen. MonotonicFrameClock befindet sich jetzt in Composer:runtime und AndroidUiDispatcher ist in Composer:ui. (Ib5c36)
- Outline.*-Klassen sind keine Datenklassen mehr (I4879e, b/178001427).
view.captureToImage()
ohne Ersatz entfernt. (I7fcd2)- Einführung der ColorMatrix API, mit der die RGB-Werte des Quellinhalts geändert werden können. Die Refactored ColorFilter API ist eine Schnittstelle und entspricht der Implementierung von PathEffect. (Ica1e8)
- Fügen Sie den LayoutDirection-Parameter zu createOutline der Form hinzu. Dies ermöglicht das Erstellen von richtungsabhängigen Formen für das Layout. (I57c20, b/152756983)
- „onImeActionPerformed“ wurde eingestellt. Verwenden Sie stattdessen KeyboardActions (If0bbd, b/179071523).
- Ein
InfiniteAnimationPolicy
-Kontextelement für die Koroutine wurde eingeführt, das in unendlichen Animationen angewendet wird. Standardmäßig ist keine Richtlinie installiert, außer wenn Tests mitComposeTestRule
ausgeführt werden. (I50ec4, b/151940543) - canDrag wurde aus Modifier.scrollable entfernt. (Id66e7, b/175294473)
- LayoutCoordinates.parentCoordinates wurde in LayoutCoordinates.parentLayoutCoordinates umbenannt, um die neue „parentCoordinates“-Eigenschaft zu ermöglichen. Die Eigenschaft "parentCoordinates" bietet jetzt die LayoutCoordintes des übergeordneten Modifikators an. Dies ermöglicht umfassendere Anwendungsfälle für onSizeChanged() und onGloballyPositioned() (Idfbfd, b/177926591).
- „touchGestenFilter“, „doubleTapUnlockGesteFilter“, „longPress potenziellenFilter“ und „PressIndicaitonTouchFilter“ werden nicht mehr unterstützt. Verwenden Sie stattdessen Modifier.clickable oder Modifier.pointerInput mit der Funktion detectTapGestens. (I6baf9, b/175294473)
- UnregisterProvider von SaveableStateRegistry wurde entfernt. „RegisterProvider()“ gibt jetzt das Objekt „SaveableStateRegistry.Entry“ zurück, mit dem Sie die Registrierung aufheben können (Ic4274, b/178583739).
- memorySavedInstanceState() wurde in „memorySaveable()“ umbenannt und in das Paket „androidx.compose.runtime.saveable“ verschoben. (I1366e, b/177338004)
- CoreText und CoreTextField wurden aus der öffentlichen API entfernt
- Veraltete Auswahlcontainer-Überlastung entfernt
- (I99c19)
- Tests, in denen „Compose“ in Hierarchien verwendet wird, die direkt dem WindowManager hinzugefügt/entfernt werden, sind jetzt stabiler. (Ie81ed, b/175765614)
- Recomposer.current() wurde entfernt. [Zusammenfassung]ComposeView verwendet jetzt standardmäßig verzögert erstellte, fensterbezogene Recomposers, die vom ViewTreeLifecycleOwner für das Fenster gesteuert werden. Neuzusammensetzung und mit FrameNanos basierende Animationsticks werden pausiert, während der Hostlebenszyklus gestoppt wird. (I38e11)
- Recomposer.runningRecomposers bietet jetzt einen globalen StateFlow aus schreibgeschütztem RecomposerInfo zur Beobachtung des aktuellen Kompositionsstatus im Prozess. Ziehen Sie diese API der mittlerweile verworfenen API Recomposer.current() vor. (If8ebe)
- Saver, listSaver(), mapSaver(), autoSaver wurde von androidx.compose.runtime.savedinstancestate nach androidx.compose.runtime.saveable (I77fe6) verschoben
- EditCommands akzeptieren AnnotatedString. Dies ist jedoch nur eine API-Änderung und die Textbearbeitung mit mehreren Stilen ist noch nicht implementiert. (I4c3ea)
- Verfügbarkeit 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 für RounderCornerShape, CutCornerShape und CornerBasedShape wurden von links/rechts in Start/End umbenannt, um die automatische Spiegelung der Form in rtl-Richtung zu unterstützen. AbsoluteRounderCornerShape und AbsoluteCutCornerShape wurden für Fälle eingeführt, in denen die automatische Spiegelung nicht erwünscht ist. (I61040, b/152756983)
Die API, auf die das Compiler-Plug-in ausgerichtet ist, wurde so umgestaltet, dass anstelle einer konkreten Klasse eine Schnittstelle verwendet wird. Auf der Benutzeroberfläche wird auch kein Typparameter mehr verwendet.
Dies ist eine interne Änderung, die sich nicht auf die Kompatibilität des Quellcodes auswirken sollte, aber eine funktionsgefährdende Änderung darstellt. (I3b922, b/169406779)
Unbeabsichtigte öffentliche Funktion StringBuilder.deleteAt (Id6ed9) entfernen
Fehlerkorrekturen
- ComposeViews in Ansichtshierarchien, die untergeordnete Elemente einer anderen Komposition sind, hosten jetzt untergeordnete Zusammensetzungen ihrer Ancestors (I92883).
- Die imageFromResource API beim Erstellen wurde aktualisiert, damit der Drawable-Cache der Ressource beim Laden von ImageBitmap-Objekten wiederverwendet wird. (If3627, b/178751994)
Version 1.0.0-alpha11
28. Januar 2021
androidx.compose.ui:ui-*:1.0.0-alpha11
wurde veröffentlicht. Version 1.0.0-alpha11 enthält diese Commits.
API-Änderungen
- WithConstraints wurde als BoxWithConstraints überarbeitet und zu "foundation.layout" verschoben. (I9420b, b/173387208)
- Key.DPadUp wurde eingestellt. Verwenden Sie stattdessen „Key.DirectionUp“. (Iab335, b/177954892)
- ab jetzt intern. (If8e35)
- Die API FocusManager.moveFocus() wurde hinzugefügt, um den Fokus programmatisch zu verschieben. (I045cb, b/177681839)
- Ändert PopupPositionProvider so, dass fensterbezogene Koordinaten und keine globalen Koordinaten verwendet werden. Benennt „parentGlobalBounds“ in „anchorBounds“ um und ändert „windowGlobalBounds“ in „windowSize: IntSize“ (I2994a).
- Dauer und Verfügbarkeit werden durch lange Millisekunden ersetzt. Mit diesem Schritt wird die Abhängigkeit der Zeigereingabe von diesen Klassen entfernt. (Ia33b2, b/175142755, b/177420019)
- AmbientSavedStateRegistryOwner wurde auf ähnliche Weise hinzugefügt wie die bereits vorhandenen AmbientLifecycleOwner und AmbientViewModelStoreOwner (I9a3e8, b/176756365).
- Die API für Vektorgrafiken wurde aktualisiert und unterstützt nun das Parsen von Tönungen, die auf die Wurzel von Vektorgrafiken angewendet werden. (Id9d53, b/177210509)
- ToolType wurde zu PointerInputChange zur Unterscheidung von Geräten hinzugefügt (Iac787, b/175142755).
- AmbientWindowManager wurde in AmbientWindowInfo umbenannt (I2686a, b/177084714, b/177084983).
- Die globalen Koordinatenmethoden wurden eingestellt und neue fensterbasierte Koordinatenmethoden eingeführt. (Iee284)
- Modifier.toolingGraphicsLayer wurde hinzugefügt, der beim Einschalten der Prüfung einen Grafikebenen-Modifikator hinzufügt. (I315df)
- FocusRequester.createRefs ist jetzt als experimentell gekennzeichnet, da sich dies noch ändern kann. (I2d898, b/177000821)
- SemanticsPropertyReceiver.hidden wurde in „invisibleToUser“ umbenannt und als „@ExperimentalComposeUiApi“ gekennzeichnet. „AccessibilityRangeInfo“ wurde in „ProgressBarRangeInfo“ umbenannt. „stateDescriptionRange“ wurde in „progressBarRangeInfo“ umbenannt. AccessibilityScrollState wurde in ScrollAxisRange umbenannt. horizontalAccessibilityScrollState wurde in horizontalScrollAxisRange umbenannt. verticalAccessibilityScrollState wurde in verticalScrollAxisRange umbenannt. (ID3148)
- PointerInputData wurde entfernt und PointerInputChange geändert, um alle Felder von PointerInputData bereitzustellen. PointerInputEvent und PointerInputEventData wurden intern gemacht, da sie in keiner öffentlichen API verwendet werden. (Ifff97, b/175142755)
- Die Implementierungsdichte von GraphicsLayerScope wurde aktualisiert, um die Konvertierung von dp in Rohpixel zu unterstützen. (Ied528, b/176819695)
- Die Matrix API wurde aktualisiert, um der Hauptreihenfolge von Zeilen zu folgen und Indexkonstanten bereitzustellen, um die Konvertierung zwischen verschiedenen Matrixdarstellungen zu erleichtern und die Framework-Konvertierungslogik zwischen SkMatrix und Matrix4 intern anzupassen. (I432e6)
- Die experimentellen monotonicFrameAnimationClockOf-Methoden wurden entfernt (Ib753f, b/170708374).
- Verschiebt String.fintPrecedingBreak und String.fingFollowingBreak in InternalTextApi. (I657c4)
- androidx.compose.ui.util.isSurrogatePair wurde aus der öffentlichen API entfernt. (Ia9494)
- TransformedText.transformedText wurde in TransformedText.text umbenannt
- TransformedText ist keine Datenklasse mehr (Ie672a).
data class
wurde aus den folgenden Klassen entfernt:- InlineTextContent
- Gebietsschemaliste (I605c7)
- Die folgenden Klassen sind keine Datenklassen mehr:
- AnnotatedString
- Absatzstil
- Span-Stil
- TextStyle
- Schriftstärke
- Textdekoration
- TextGeometricTransform
- Textindex
- TextLayoutErgebnis
- TextLayoutInput (Iaff99)
- VisualTransformation wurde zu einer funktionalen Schnittstelle geändert (I3bba4)
- Ein Funktionsreferenzparametertyp wurde hinzugefügt (I5e1bd).
- Transformierte Grenzen zu InspectorNode (Ice42f) hinzufügen
Fehlerkorrekturen
- onCommit, onDispose und onActive wurden zugunsten der SideEffect und DisposableEffect APIs eingestellt (If760e)
Änderungen an den werkseitigen Funktionen für Schriftart/Schriftfamilie/Schriftart
- Factory-Funktionen hinzugefügt, die mit einem Großbuchstaben beginnen
- Verworfene vorherige Factory-Funktionen mit Kleinbuchstaben
- Neue Factory-Funktionen geben die FontFamily anstelle von Unterklassen zurück.
- Konstruktoren der Unterklassen wurden ausgeblendet, sodass sie nur über Factory-Funktionen erstellt werden können.
- Font.asFontFamily wurde in Font.toFontFamily umbenannt (I42aa7).
ComposeContentTestRule
wurde eingeführt, dasComposeTestRule
erweitert undsetContent
definiert, das ausComposeTestRule
entfernt wurde. Wir haben eine Factory-MethodecreateEmptyComposeRule()
hinzugefügt, die eineComposeTestRule
zurückgibt und keine Aktivität für dich startet. Verwenden Sie diese Option, wenn Sie Ihre Aktivität während des Tests starten möchten, z. B. mitActivityScenario.launch
(I9d782, b/174472899)."animateAsState" ist jetzt "animateFooAsState", wobei "Foo" der Typ der animierten Variablen ist, z. B. Float, Dp, Offset usw. (Ie7e25).
Der Parameter für die Inhaltsbeschreibung wurde dem Bild und dem Symbol hinzugefügt. Sie wird verwendet, um die Bedienungshilfen zu beschreiben (I2ac4c).
Entfernen Sie displaySize, da dies vermieden werden sollte. In der Regel ist es besser, die Größe von onRoot() oder mindestens die Fenstergröße zu verwenden. (I62db4)
OnSizeChanged meldete die Größe des Layoutinhalts. Sie meldet jetzt die Größe an ihrer Position innerhalb der Modifikatorkette. (I36b78, b/177562900)
Die emit() API und alle Überlastungen wurden verworfen und in ComposeNode umbenannt. Die APIs sind identisch, nur unter einem anderen Namen, um den Namenskonventionen in „Compose“ (I4137b) zu entsprechen.
TextFieldValue akzeptiert AnnotatedString. Dies ist jedoch nur eine API-Änderung und die Textbearbeitung mit mehreren Stilen ist noch nicht implementiert.
initial
wurde aus den Konstruktorparametern „EditingBuffer“ entfernt. (I326d5)
invalid und summaryReference() wurden zugunsten von currentRecomposeScope bzw. memoryCompositionReference verworfen. (I583a8)
AnnotatedString wurde geändert, um von kotlin.CharSequence zu erweitern. Daher sind length und SubSequence jetzt Instanzfunktionen und Erweiterungsfunktionen werden entfernt. (Iaf429)
SaveObserver ersetzt CompositionLifecycleObserver und CompositionLifecycleObserver wird jetzt eingestellt.
RememberObserver
ersetztCompositionLifecycleObserver
mit geänderter Semantik und umbenannten Methoden. Der Wechsel zur neuen API kann mechanisch für Objekte erfolgen, die nur einmal im Gedächtnis bleiben. Dies ist und ist die empfohlene Vorgehensweise. Wenn jedoch eine Referenz in einer Zusammensetzung mehrmals gespeichert wurde, wirdonRemembered
für jede Referenz aufgerufen, wobeionEnter
nur einmal aufgerufen wird.onEnter
wurde mehrmals aufgerufen, wenn das Objekt in Unterzusammensetzungen wieWithConstraints
undScaffold
verwendet wurde, wodurch der einzelneonEnter
-Aufruf garantiert unzuverlässig war und fürRememberObserver
entfernt wurde.RememberObserver
fügtonAbandoned
hinzu. Dieser wird aufgerufen, wenn dieRememberObserver
-Instanz von dem anremember
übergebenen Callback zurückgegeben wird, aber im Zusammensetzungsstatus nicht gespeichert wurde. Daher wirdonRemembered
niemals aufgerufen. Dies kann auftreten, wenn eine Ausnahme die Komposition vor Fertigstellung beendet oder die Komposition verworfen wird, weil der Status, für den eine Komposition erzeugt wurde, nicht mehr aktuell ist oder aus anderen Gründen nicht mehr benötigt wird. Wenn die Instanz vonRememberObserver
gemäß der Empfehlung oben eine externe Ressource verfolgt, zeigen sowohlonForgotten
als auchonAbandoned
an, dass die Ressource nicht mehr benötigt wird. Wenn das Objekt die gestartete Arbeit oder inonRemembered
zugewiesene Ressourcen verfolgt, kannonAbandoned
ignoriert werden, da es nicht aufgerufen wird, wennonRemembered
aufgerufen wird. (I02c36)Verworfene arithmetische Operationen zwischen 2 oder mehr TextUnits. Die veralteten TextUnit.Sp- und TextUnit.Em-Funktionen haben Vorrang vor den Erweiterungsfunktionen wie Int.sp und Int.em. (I48369)
Ressourcen in Bibliotheken ohne explizit deklarierte öffentliche Ressourcen (z. B. über public.xml) sind jetzt standardmäßig privat. (Ia1dcc, b/170882230)
„ScrollableColumn/Zeile“ wurde eingestellt. Die Verwendung von ScrollableColumn ist im Vergleich zu LazyColumn bei großen scrollbaren Inhalten weniger effizient, da wir mit LazyColumn nur sichtbare Elemente zusammensetzen/messen/zeichnen können. Um zu verhindern, dass Nutzer auf die ineffiziente Weise vorgehen, haben wir uns entschieden, ScrollableColumn und ScrollableRow einzustellen und stattdessen LazyColumn und LazyRow zu verwenden. Nutzer können dennoch entscheiden, dass sie kein Lazy-Verhalten benötigen, und die Modifikatoren direkt wie folgt verwenden: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)
Neue
items(count: Int)
-Factory-Methode für den Bereich von LazyColumn/LazyRow/LazyVerticalGrid.items(items: List)
unditemsIndexed(items: List)
sind jetzt Erweiterungsfunktionen, die bei Verwendung manuell importiert werden müssen. Neue Erweiterungsüberlastungen für Arrays:items(items: Array)
unditemsIndexed(Array)
(I803fc, b/175562574)Verwende ImeAction.None anstelle von ImeAction.NoAction.
- Verwende „ImeAction.Default“ anstelle von „ImeAction.Unspecific“ (Ie1bcc).
TestCoroutineDispatcher beim Testen nutzen (I532b6)
TextInputService.onStateUpdated wurde in updateState (Id4853) umbenannt.
Die auf „TransitionDefinition“ basierende Umstellung wurde eingestellt (I0ac57)
TextUnitType.Inherit wird entfernt. Verwenden Sie stattdessen „TextUnitType.Nicht angegeben“. (I9ff64)
Version 1.0.0-alpha10
13. Januar 2021
androidx.compose.ui:ui-*:1.0.0-alpha10
wurde 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 Zusammensetzung generiert wurden, in Batches in die Phase „Änderungen anwenden“ der Zusammensetzung aufgenommen werden, nachdem alle
@Composable
-Funktionen abgeschlossen sind.Dies ist eine funktionsgefährdende Änderung, die sich auf den Anwendungscode auswirken kann, da Knoten erst nach dem Anwenden der Änderungen über interne und experimentelle APIs verfügbar sind. Dies lässt sich normalerweise umgehen, indem Code mit solchen Abhängigkeiten in einer zusammensetzbaren
SideEffect
-Funktion umschlossen 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, um eine benutzerdefinierte Fokusdurchlaufreihenfolge anzugeben (I90cf5, b/175899543, b/170155556, b/170155429).
- Die eingestellte Funktion „fokusObserver“ wurde entfernt. Verwenden Sie stattdessen „onFocusChanged“ oder „onFocusEvent“ (I3ecb9, b/175156387).
- Änderungen an der EditOperations API
- EditOperation in EditCommand umbenannt
- Zusätzliches Befehlssuffix für EditOperation-konkrete Implementierungen
- EditCommands sind keine Datenklassen mehr
- Die Funktion „EditOperation.process“ wurde in „applyTo“ umbenannt.
- InputEventListener wurde in InputEventCallback umbenannt
- (I0a366)
- Nicht verwendete PxSquared, PxCubed und PxInverse wurden entfernt. "Size.center()" wurde zu einer Eigenschaft geändert. (I973f7)
- Im ui-test-Modul kann jetzt die Erstellung von Recomposers für zu testende UIs (Ibebd8) konfiguriert werden.
- Die Geschwindigkeit wurde so geändert, dass sie Komponenten und mathematische Operationen enthält. (Ib0447)
@ExperimentalTesting
wurde in@ExperimentalTestApi
umbenannt, damit sie mit ähnlichen Annotationen der experimentellen API übereinstimmt (Ia4502, b/171464963).- Color.useOrElse() wurde in Color.takeOrElse() umbenannt (Ifdcf5)
- Nicht verwendete Klassen „DpInverse“, „DpSquared“ und „DpCubed“ wurden entfernt. (I4d62b)
- „Constraints#expectedBy“ wurde in „isSatisfiedBy“ umbenannt. (I9cf5c)
- Fügen Sie einen Callback hinzu, um den Inhaber zu benachrichtigen, wenn sich die layoutnode-Grenzen ändern. (I72fd1)
- Für Inline-Klassen mit einer Konstante „Unspezifikation“ wurden die Attribute „is„angegeben“, „isUnspezifisch“ und „useOrElse“ hinzugefügt. (I93f7b, b/174310811)
Erweitern Sie [Zusammenfassung]ComposeView-APIs, um das Recycling von Erstellungsansichten zu ermöglichen. Die Zusammensetzung wird später entsorgt, um sie neu zu erstellen. APIs zum Installieren und Erkennen von fensterbezogenen Recomposers und CompositionReferences zum Erstellen untergeordneter Kompositionen hinzufügen
Fügen Sie ViewCompositionStrategy hinzu, um die Entsorgungsstrategie für die Komposition von [Zusammenfassung]ComposeViews zu konfigurieren. Das Standardverhalten ist die Beseitigung beim Trennen des Fensters. (I860ab)
Öffentliche Any.identityHashCode() API (I025d7) entfernt
toStringAsFixed API wurde zugunsten der direkten Verwendung von String.format entfernt. (Iaba6b)
Ein/Aus-Schaltfläche zur Grundlage Strings.kt hinzufügen (I4a5b7, b/172366489)
NativeClass wurde ins UI-Modul verschoben und intern geändert. Die Verwendung von nativeClass in Gleich-Implementierungen wurde so aktualisiert, dass stattdessen „is MyClass“ verwendet wird. (I4f734)
Modifier.focus() und Modifier.focusRequester() wurden eingestellt. Verwenden Sie stattdessen Modifier.focusModifier() und Modifier.focusReference() . (I75a48, b/175160751, b/175160532, b/175077829)
Das Tool „Selectable“.notifySelectableChange wurde eingeführt, um „Selectable“-Updates für „Selectable“ zu benachrichtigen. (I6ff30, b/173215242)
Die Property Outline.bounds wurde eingeführt, um das Begrenzungsrechteck für verschiedene Outline-Implementierungen abzurufen. (I16e74, b/175093504)
Veralteter TestUiDispatcher. Verwenden Sie stattdessen Dispatchers.Main (Ic171f, b/175385255).
ImeOptions und KeyboardOptions sind keine Datenklasse mehr (I3c898, b/168684531).
Änderungen an der VisualTransformation API
- „OffsetMap“ wurde in „OffsetMapping“ umbenannt
- „OffsetMapping.identityOffsetMap“ wurde in „OffsetMapping.Identity“ umbenannt.
- PasswordTransformation ist keine Datenklasse mehr
- OffsetMapping wurde in eigene Datei verschoben
- (I0bdf3)
"Position" wurde in "DpOffset" umbenannt und getDistance() entfernt (Ib2dfd).
Dp.isFinite() wurde in val Dp.isFinite (I50e00) geändert.
Fehlerkorrekturen
- Recomposer zeigt jetzt einen Ablauf mit seinem aktuellen Status an, sodass die Aktivitäten und die Aktivität der zugehörigen Auswirkungen überwacht werden können. (Ifb2b9)
- Auf das native "keyEvent" kann jetzt über "keyEvent.nativeKeyEvent" (I87c57, b/173086397) zugegriffen werden.
animate()
wird jetzt durchanimateAsState()
ersetzt, das anstelle vonT
einenState<T>
-Wert zurückgibt. Dies ermöglicht eine bessere Leistung, da der Entwertungsbereich darauf eingegrenzt werden kann, wo der Statuswert gelesen wird. (Ib179e)- Fügen Sie die Semantics Role API und die Rolle als Parameter zu anklickbarer, auswählbarer und ein-/ausschaltbarer SemanticsModifier hinzu. Modifier.progressSemantics wurde so geändert, dass der Slider auch darauf zugreifen kann. (I216cd)
- Neue koroutinebasierte API
Animatable
, die die gegenseitige Exklusivität der Animationen gewährleistet.- Neue DecayAnimationSpec zur Unterstützung mehrdimensionaler Abklinganimationen
- (I820f2, b/168014930)
Version 1.0.0-alpha09
16. Dezember 2020
androidx.compose.ui:ui-*:1.0.0-alpha09
wurde veröffentlicht. Version 1.0.0-alpha09 enthält diese Commits.
API-Änderungen
- Die Einstellung "KeyEvent.Alt" wurde entfernt. Verwenden Sie stattdessen „KeyEvent.isAltPressed“. (Idd695)
- Modifier.keyInputFilter und Modifier.previewKeyInputFilter wurden eingestellt. Verwenden Sie stattdessen Modifier.onKeyEvent und Modifier.onPreviewKeyEvent (Idbf1b, b/175156384).
- „Modifier.focusObserver“ wurde eingestellt. Verwenden Sie stattdessen Modifier.onFocusChanged oder Modifier.onFocusEvent (I30f17, b/168511863, b/168511484).
- Zum Anhalten von Zeigereingabe-APIs wurde HandlePointerInputScope in AwaitPointerEventScope und handlePointerInput() in awaitPointerEventScope() umbenannt. (Idf0a1, b/175142755)
- Die Autofill API ist jetzt eine experimentelle API und erfordert eine Zustimmung (I0a1ec).
- Destruktive Deklarationen zum Erstellen von FocuSRequester-Instanzen hinzufügen (I35d84, b/174817008)
- „accessibilityLabel“ wurde in „contentDescription“ umbenannt, „accessibilityValue“ in „stateDescription“. (I250f2)
- Benutzerdefinierte Ereignisse wurden aus der angehaltenen Pointer Input API entfernt (Ia54d5, b/175142755).
- Mehrere neue Funktionen in SelectionRegistrar wurden eingeführt und in „onPositionChange“ in „notificationPositionChange“ umbenannt. (Ifbaf7)
- Weitere Mitglieder von LayoutNode, die als intern gekennzeichnet wurden (I443c6)
- LayoutInfo wurde zur Verwendung in Tools und Tests eingeführt (I9b190).
- AndroidOwner intern gemacht (Ibcad0, b/170296980)
- Anmerkung ExperimentalPointerInput entfernt (Ia7a24)
- Verschachteltes Scroll-System hinzugefügt. Weitere Informationen finden Sie unter „Modifier.nestedScroll“ (I36e15, b/162408885).
- subcomposeInto(LayoutNode) intern gemacht (Id724a)
Die Schnittstelle
Applier
wurde geändert, um das Erstellen von Baumstrukturen mit dem Bottom-up-Ansatz anstatt von oben nach unten zu vereinfachen.Die Methode
insert()
wurde ininsertTopDown()
umbenannt.Die neue Methode
insertBottomUp()
wurde hinzugefügt.Ein Applier fügt entweder Knoten mit
insertTopDown()
oderinsertBottomUp()
in den Baum ein, den er bearbeitet, je nachdem, was besser ist.Einige Bäume, z. B.
LayoutNode
undView
, lassen sich viel effizienter als Draufsicht erstellen. Vor dieser Änderung war ein Stack von Einfügungen erforderlich, um Bottom-up-Ansätzen zu entsprechen. Diese mussten dann in alle Anwendungen kopiert werden, für die eine Bottom-up-Konstruktion erforderlich war, um die Leistung zu verbessern. Mit dieser Änderung überschreibt einApplier
insertBottomUp()
, um einen Baum von unten nach oben zu erstellen, undinsertTopDown()
, um ihn von oben nach unten zu erstellen. (Icbdc2)AndroidDialogProperties-Eigenschaften wurden zu den Eigenschaften "schließenOnBackPress" und "schließenOnClickOutside" hinzugefügt. Damit kann konfiguriert werden, wann die Lambda-Funktion „onDismissRequest“ des Dialogfelds 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 verarbeiten. Nutzer müssen den Asset-Typ nicht mehr im Voraus bestimmen und können diese Methode aufrufen, um ein Painter-Objekt zu erhalten, das in zusammensetzbaren Bildern oder in Painter-Modifikatoren verwendet werden kann. (I2c703, b/173818471)
Modifier.clearAndSetSemantics wurde hinzugefügt, um die Semantik der Nachfolgerelemente zu löschen und neue festzulegen. (I277ca)
ContentDrawScope wurde für DrawScope in das Modul "ui-graphics" verschoben. (Iee043, b/173832789)
Die PathEffect Graphics API ermöglicht die Bereitstellung verschiedener Muster für gestrichelte Formen. Die Verwendung von NativePathEffect zugunsten der erwarteten/tatsächlichen Implementierung von PathEffect wurde eingestellt. (I5e976, b/171072166)
In Compose wurden IdlingResource-Oberflächen als von Compose unterstützte Variante der inaktiven Ressourcen von Espresso hinzugefügt. Sie können mithilfe der ComposeTestRule (I433f3) registriert und abgemeldet werden.
Globale (Un-)Registrierung von ComposeIdlingResource und globale (un-)Registrierung von Uhren in ComposeIdlingResource (I32660) entfernt
Fehlerkorrekturen
- Lambdas in Offset-Modifikatoren geben jetzt IntOffset statt Float zurück. (Ic9ee5, b/174137212, b/174146755)
SlotTable, SlotReader und SlotWriter wurden aus der öffentlichen API entfernt. Diese wurden zuvor als InternalComposeAPI gekennzeichnet. Jetzt sind sie Teil des Schreiben-Moduls.
CompositionData und CompositionGroup wurden als Ersatz für die UI-Tooling API hinzugefügt, mit der Zusammensetzungsinformationen extrahiert werden können. Diese sind öffentlich, aber nicht für die Verwendung außerhalb der UI-Tooling API gedacht, da sie die Rohinformationen liefern, die von der UI-Tooling API interpretiert werden (I31a9c).
ShaderBrush wurde so überarbeitet, dass eine Shader-Instanz langsam erstellt wird, wenn Größeninformationen der Zeichenumgebung verfügbar sind. Dies ist nützlich, um Gradienten zu definieren, die die vollständigen Zeichengrenzen einer zusammensetzbaren Funktion zum Zeitpunkt der Erstellung einnehmen, ohne dass benutzerdefinierte DrawModifier-Implementierungen implementiert werden müssen.
APIs für Gradientenfunktionskonstruktoren wurden durch Factory-Methoden für ein Gradient-Objekt ersetzt. (I511fc, b/173066799)
LazyColumnFor, LazyRowFor, LazyColumnForIndexed und LazyRowForIndexed werden eingestellt. Stattdessen LazyColumn und LazyRow verwenden (I5b48c)
Verworfene BuildCompat.isAtLeastR (Idb37e)
Die Factory-Funktion "buildAnnotatedString" wurde hinzugefügt, um einen AnnotatedString zu erstellen. Die Builder-Funktion annotatedString wurde verworfen. (Idfe0b)
Erweiterungsmethoden für Float und Double wurden entfernt, um Werte in Radianten umzuwandeln. Wurde als private Funktion im PathParser-Implementierungsbereich verschoben, wo sie ausschließlich verwendet wurde (I25f52).
Version 1.0.0-alpha08
2. Dezember 2020
androidx.compose.ui:ui-*:1.0.0-alpha08
wurde veröffentlicht. Version 1.0.0-alpha08 enthält diese Commits.
API-Änderungen
- Semantikaktion hinzufügen. Schließen (I2b706)
- DrawModifier APIs wurden vom Paket androidx.compose.ui in das Paket androidx.compose.ui.draw verlegt. Die Datei DrawModifierdeprecation.kt enthält Typaliases/Hilfsmethoden, die die Migration von den verworfenen zu den aktuellen APIs unterstützen. (Id6044, b/173834241)
- Umbenennung von Modifier.drawLayer in Modifier.graphicsLayer Änderungen der zugehörigen Klassen in GraphicsLayer gemäß API-Feedback (I0bd29, b/173834241)
- Die neuen Methoden „placeable.placeWithLayer()“ und „placeable.placeRelativeWithLayer()“ wurden hinzugefügt, mit denen benutzerdefinierte Layouts und Layoutmodifikatoren ein untergeordnetes Element mit der Einführung einer Grafikebene für seine Zeichnung platzieren können. So können wir zuerst Neuzeichnungen optimieren. Wenn wir also ein untergeordnetes Element verschieben müssen, müssen wir seinen Inhalt nicht neu zeichnen. Zweitens können wir Zeichentransformationen auf ein untergeordnetes Element anwenden (Ibd8f6, b/170296989, b/171493718, b/173030831).
<T>
wurde aus der SubcomposeLayout-Deklaration entfernt. Sie können sie jetzt verwenden, ohne einen Typ anzugeben. (Ib60c8)- Modifier.scale/rotate APIs wurden als praktische Funktionen fürdrawLayer hinzugefügt.
Modifier.drawOpacity
wurde inModifier.alpha
umbenanntModifier.drawShadow
wurde inModifier.shadow
umbenannt (I264ca, b/173208140)
- Die Verfügbarkeits- und Positionsfelder von PointerInputData können jetzt nicht mehr null sein. (ID468a)
- MaterialTheme legt jetzt die richtigen Farben für Auswahlziehpunkte und den Auswahlhintergrund fest. Nicht-Material-Apps können manuell „AmbientTextSelectionColors“ verwenden, um die für die Auswahl verwendeten Farben anzupassen. (I1e6f4, b/139320372, b/139320907)
- WindowManager.isWindowFocused wurde hinzugefügt, um zu überprüfen, ob das Host-Fenster im Fokus ist, sowie einen WindowFocusObserver, der einen onWindowFocusChanged-Callback bereitstellt. (I53b2a, b/170932874)
- Die TransformOrigin API wurde mit einer destruktiven Syntax aktualisiert, um
pivotFractionX
undpivotFractionY
alscomponent1
undcomponent2
zurückzugeben (If43c4, b/173586560) - Es wurde eine Lint-Prüfung für die Benennung und Position von zusammensetzbaren Lambda-Parametern hinzugefügt, um die Konsistenz mit den Richtlinien zum Schreiben zu prüfen.
Außerdem wurden einige APIs gemäß der Lint-Prüfung und der Anleitung mit
children
als Namen für das nachgestellte Lambda zucontent
migriert. (Iec48e) - Es wurde eine API hinzugefügt, die überprüft, ob Alt-, Strg-, Meta- oder Umschalttaste-Modifikatortasten bei der Auslösung eines Schlüsselereignisses gedrückt wurden. (I50ed9)
- Neue
Modifier.drawLayer()
-Überlastung hinzugefügt. Dabei wird ein Lambda-Block auf einem neuen GraphicsLayerScope -Element verwendet, bei dem Sie die Ebenenparameter so definieren, dass die Neuzusammensetzung und das Neulayout übersprungen werden können, wenn die Statusänderung erfolgt. DrawLayerModifier ist jetzt intern für die Migration seiner Logik in die Methode "placeable.placeWithLayer()" von LayoutModifier (I15e9f, b/173030831). - Die eingestellten Ambients mit dem Suffix
Ambient
wurden gemäß den anderen Richtlinien für Ambients und Compose API durch neue Properties mit dem Präfix „Inaktiv“ ersetzt. (I33440) androidx.compose.ui.text.Typeface
wurde nachandroidx.compose.ui.text.font.Typeface
verschoben (Ic2b81)- Das Semantik-Argument „mergeAllDescendants“ wurde in „mergeDescendants“ umbenannt. (Ib6250)
- Neue Drag-Gesten-Erkennung, die die Zeigereingabe-API anhält, einschließlich Ausrichtungssperre. (Icef25)
- Umbenennung von VectorAsset in ImageVector Gemäß den API-Richtlinien wurde VectorAsset in "Builder" verschoben und in "Builder" umbenannt. Der Typalias von VectorAssetBuilder wurde hinzugefügt, um zur Kompatibilität mit ImageVector.Builder zu verlinken. (Icfdc8)
- „ImageAsset“ und zugehörige Methoden wurden in „ImageBitmap“ umbenannt. (Ia2d99)
- Fügen Sie den Parameter „zIndex“ für „place()“ von PlacementScope hinzu, damit „Modifier.zIndex()“ jetzt als LayoutModifier funktioniert und in jedem benutzerdefinierten Layout zIndexes für die untergeordneten Elemente direkt im Placement-Block festgelegt werden können (I711f7, b/171493718).
- Fundamentsemantikeigenschaften wurden in die Benutzeroberfläche verschoben (I6f05c)
- „place(Offset)“ und „placeRelative(Offset)“ verwerfen. Verwenden Sie stattdessen Überlastungen mit Ganzzahl-Offsets (I4c5e7).
- Zuvor eingestellte APIs wurden entfernt: Modifier.onPositioned wurde entfernt. Verwenden Sie "Modifier.onGloballyPositioned". Modifier.onDraw wurde entfernt. Verwenden Sie "Modifier.onDrawBehind". Modifier.plus wurde entfernt. Verwenden Sie Modifier.then. „Color.Unset“ wurde entfernt. Verwenden Sie „Color.Unspecific“. Die PxBounds-Klasse wurde entfernt. Verwenden Sie stattdessen Rect. (Ie9d02, b/172562222)
- Die Benutzeroberfläche für die Ausrichtung wurde aktualisiert und funktionsfähig gemacht. (I46a07, b/172311734)
- Die Bewegungserkennung für Tippen, Doppeltippen, langes Drücken und Drücken der Anzeige wurde mit der neuen Eingabe für den Haltepunkt hinzugefügt. Außerdem wurden einige Dienstprogramme hinzugefügt, die Entwicklern das Schreiben eigener Gestendetektoren erleichtern. (I00807)
id
wurde fürLayoutIdParentData
inlayoutId
umbenannt.Measurable.id
wurde inMeasurable.layoutId
umbenannt. (Iadbcb, b/172449643)- Neuer Multi-Touch-Gestendetektor mit Hilfsfunktionen zum Erkennen von Drehung, Zoomen und Schwenken. (IC459d)
- Einführung der APIs SweepGradientShader und SweepGradientBrush (Ia22c1)
- Die Zeitsteuerung in Tests (TestAnimationClock und ihre Nutzung) befindet sich jetzt in der Testphase (I6ef86, b/171378521).
Fügen Sie koroutinebasierte Scroll-APIs hinzu:
Es wurden LazyListState.snapToItem und LazyListState.smoothScrollBy sowie untergeordnete APIs für die Scroll-Steuerung hinzugefügt. Diese APIs bieten eine Schnittstelle zum Anhalten zum Steuern des Scrollens, das erst nach dem Scrollen zurückkehrt. (Beispielsweise 5642)
Für „Modifier.focusable“ ist ein zusätzliches Fundament erforderlich. Hiermit können Sie einer Komponente fokussierbares Verhalten mit korrekter Semantik und Barrierefreiheit hinzufügen. (I41eb9, b/152525426, b/162865824)
Stellt Standardimplementierungen von Methoden und Eigenschaften in AnimationClockTestRule bereit, die an die zugehörige
clock
(I7ea3d, b/173399709) delegiert werden können.AndroidComposeTestRule kann jetzt benutzerdefinierte Aktivitäts-Launcher akzeptieren (Ib8288, b/153623653, b/154135019).
„TextLayoutResult.getLineVisibleEnd“ wurde eingestellt. Als Ersatz hat TextLayoutResult.getLineEnd jetzt den neuen Parameter "visibleEnd". (I73282)
Aktualisierte TextFieldValue API
- TextFieldValue.composition ist schreibgeschützt.
- Entfernte Ausnahme wegen ungültiger Auswahlbereich (I4a675, b/172239032)
Unterstützung von TtsAnnotation für die Sprachausgabe-Engine. (I54cc6)
Neue APIs zum Ausführen von Animationen in Koroutinen (Ied662)
Fehlerkorrekturen
- Der Ausrichtungsparameter von Box wurde in contentAlignment umbenannt. (I2c957)
- Die „offsetPx“-Modifikatoren wurden in „offset“ umbenannt. Sie verwenden jetzt Lambda-Parameter anstelle von Status. (IC3021, b/173594846)
- Der Parameter "resetInput" wurde zu TextInputService#onStateUpdated hinzugefügt (I3e8f5, b/172239032, b/171860947).
- Lint-Prüfung für Modifikatorparameter in zusammensetzbaren Funktionen wurde hinzugefügt. Bei dieser Lint-Prüfung werden Name, Rückgabetyp, Standardwert und Reihenfolge des Parameters auf Konsistenz mit den Richtlinien zum Schreiben geprüft. (If493b)
- Vorübergehend hinzugefügte Option, mit der TestAnimationClock von MonotonicFrameClock gesteuert wird (I1403b, b/173402197)
- Android-Schriftart-Wrapper hinzugefügt. Sie können eine Android-Schriftart über die
typeface
-Funktion (typeface(Typeface.DEFAULT)
) laden.typefaceFromFontFamily()
auch intypeface()
(I52ab7) umbenannt - Es wurde eine Lint-Prüfung hinzugefügt, um zu prüfen, ob die Modifikator-Factory-Funktionen als Erweiterungen in Modifier definiert sind, damit sie fließend miteinander verkettet werden können. (I07981)
- Entfernen Sie das alte UI-Test-Modul und die zugehörigen Stubs (I3a7cb).
- Recomposer akzeptiert einen „EmbeddingContext“ nicht mehr; die erforderlichen Planungsabhängigkeiten werden aus „EffectCoroutineContext“ abgerufen. FrameManager wurde eingestellt. Plattformintegrationen sollten ihre eigene globale Snapshot-Verarbeitung initialisieren. (I02369)
- Übergeben Sie Stilinformationen an den Barrierefreiheitsknoten. (If5e8d)
- Aus Konsistenz mit anderen Einheiten wurde „TextUnit.Inherit“ in „TextUnit.Nicht angegeben“ umbenannt. (Ifce19)
Compose UI Version 1.0.0-alpha07
11. November 2020
androidx.compose.ui:ui-*:1.0.0-alpha07
wurde veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.
API-Änderungen
- Einführung der Inline-Klasse ScaleFactor zur Darstellung von Skalierungsfaktoren für die horizontalen und vertikalen Achsen unabhängig voneinander, um uneinheitliche Skalierungsanwendungsfälle zu unterstützen.
- Die Methode "computeScaleFactor" wurde zu ContentScale hinzugefügt.
- ContentScale.FillBounds wurde hinzugefügt, um eine uneinheitliche Skalierung auszuführen und die src-Grenzen so zu erweitern, dass das Ziel vollständig belegt wird.
- Operatormethoden zur Berechnung von ScaleFactor-Parametern mit Größenparametern hinzugefügt.
- (Ic96a6, b/172291582)
- Die Faktoren BiasAlignment und BiasAbsoluteAlignment zum Erstellen von Ausrichtungen wurden hinzugefügt. (Iac836, b/169406772)
- Ermöglichen Sie einem Entwickler, den Fokus klar zu definieren. (I90372)
- Ein Fehler, der dazu führte, dass für Views in „Compose“ keine Höhenangaben gezeichnet wurden, wurde behoben. (If7782)
- "onDrawBehind" wurde in ContentDrawScope erstellt, um die Namenskonvention mit "Modifier.drawBehind" zu erfüllen. (I4fc3a, b/171955269)
- Unterstützung für den Kameraabstand zur Ergänzung der 3D-Transformationen RotationX/DrehungY in Layer-APIs. (I40213, b/171492100)
- "SelectionContainer" wurde ohne den Callback hinzugefügt (Ibfadb).
- Die Annotation ExperimentalSubcomposeLayoutApi wurde entfernt. SubcomposeLayout kann jetzt ohne Hinzufügen von @OptIn (I708ad) verwendet werden.
- FirstBaseline und LastBaseline wurden in das Paket „androidx.compose.ui.layout“ (Ied2e7) verschoben.
- Die Deckkraft wurde aus demdrawShadow()-Modifikator entfernt, da dies verwirrend war. (I82c62, b/171624638)
- MeasureResult wurde aus MeasureScope verschoben. (Ibf96d, b/171184002)
- Mehrere Layoutsymbole wurden von androidx.compose.ui nach androidx.compose.layout.ui verschoben. (I0fa98, b/170475424)
- Veraltetes FocusState2 (I686cb, b/168686446) entfernt
- ZIndexModifier ist jetzt intern (I1808b, b/171493718)
- Der Rückgabetyp der LOP-Methode für Größenparameter wurde aktualisiert, um eine Größe ungleich null zurückzugeben, um unnötiges Boxing zu vermeiden. (Ib0044)
- TestMonotonicFrameClock wurde hinzugefügt, um Code zu testen, der auf Kompositions-Frame-Ereignissen von Composer basiert und auf der Verwendung von runBlockingTest von kotlinx-coroutines-test (I4402f) erfolgt.
- GesteScope.localToGlobal entfernt (I15299, b/171462785)
onAllNodesWithSubstring
-Finder hinzugefügt (I81dd7, b/171462889)- Das Modul androidx.ui.test wurde eingestellt. Migrieren Sie zu androidx.compose.ui.test und androidx.compose.ui.test.junit4 (I452e8).
Fehlerkorrekturen
- ErfassungToBitmap wurde zu SnapshotToImage verschoben. (I86385)
- Foundation.Text wurde eingestellt und durch material.Text ersetzt. Eine einfache, uneindeutige Text-API, die keine Werte aus einem Design verwendet, finden Sie unter androidx.compose.foundation.BasicText. (If64cb)
- Textfelder aktualisieren, um KeyboardOptions zu akzeptieren (Ida7f3)
- KeyboardOptions umbenennen in ImeOptions (I82f36)
- KeyboardType und ImeAction wurden in KeyboardOptions verschoben (I910ce).
- „deployDefault“ wurde als Alternative zur Bereitstellung von Umgebungswerten hinzugefügt. Damit können Umgebungswerte angegeben werden, die nur festgelegt werden, wenn noch kein Umgebungswert angegeben wurde. (Id6635, b/171024925)
- „BaseTextField“ wurde eingestellt. Verwenden Sie stattdessen BasicTextField. (I896eb)
- Modul ui-test-junit4 (Ib91f8) einführen
relativePaddingFrom
wurde inpaddingFrom
umbenannt. DerpaddingFromBaseline
-Modifikator wurde hinzugefügt, um die Abstände von Layoutgrenzen zu Textbasislinien anzugeben. (I0440a, b/170633813)- „LaunchedTask“ wurde in „LaunchedEffect“ umbenannt, um die Konsistenz mit den SideEffect und DisposableEffect APIs zu verbessern. "LaunchedEffect" ohne Subjektparameter ist nicht zulässig, um Best Practices zu fördern. (Ifd3d4)
- Einführung von zusammensetzbaren Ressourcen, die bei Aktualisierung der Konfiguration neu zusammengefügt werden. (I6387c, b/167352819)
- Recomposer erfordert jetzt bei der Erstellung einen CoroutineContext (Ic4610).
zIndex
-Werte addieren, wenn mehrereModifier.zIndex()
angewendet wurden. Zuvor hat der erste gewonnen. (IC514c, b/170623936)- Änderungen an der internen SlotTable-Implementierung, die sich nicht auf die öffentliche API auswirken sollten (If9828)
- Auto-Korrektur IME-Option für Tastatur hinzugefügt (I57b8d)
- androidx.ui.test wurde nach androidx.compose.ui.test (I9ffdb) verschoben
- KeyboardOptions.toImeOptions wurden aus der öffentlichen API entfernt. (Ic2e45)
Externer Beitrag
- Die Veröffentlichung des internen Artefakts „androidx.compose.ui:ui-text-android“ (Ib93fa) wurde deaktiviert
Version 1.0.0-alpha06
28. Oktober 2020
androidx.compose.ui:ui-*:1.0.0-alpha06
wurde veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.
API-Änderungen
- Recomposer ist jetzt eine CompositionReference und ein gültiges übergeordnetes Kompositionselement. Expliziter Recomposer ist jetzt an weniger Stellen erforderlich. (I4036f)
- Sie können VectorPainter durch die Verwendung von „memoryVectorPainter“ einstellen. So lässt sich besser erkennen, dass die zusammensetzbare API intern „remember“ nutzt, um Daten über mehrere Kompositionen hinweg beizubehalten. (Ifda43)
- Die Modifier.drawWithCache API wurde aktualisiert, um ContentDrawScope anstelle von DrawScope als Empfängerbereich bereitzustellen. So können Implementierungen Zeichenbefehle neu anordnen. Dies ist nützlich für Anwendungsfälle mit Überblendung/Färbung, bei denen zuerst Inhaltspixel gerendert werden müssen, damit der entsprechende Mischmodus-Algorithmus richtig angewendet wird. (Ie7ec8)
- SimpleContainer in PopupTestUtils.kt verschieben (I78c57)
- ConsumedData ist keine Datenklasse mehr. Weitere Informationen finden Sie unter https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f).
- Position des Rtl-Ziehpunkts fixieren. (I6e1e0)
- DrawScope und ContentDrawScope wurden zu Schnittstellen anstelle von abstrakten Klassen überarbeitet.
- Die CanvasDrawScope-Implementierung von DrawScope wurde erstellt.
- Refaktorierte Implementierungen von DrawScope, um stattdessen CanvasScope zu verwenden
- Wir haben DrawContext erstellt, um Abhängigkeiten für DrawScope
- Verworfene Methoden aus DrawScope entfernt (I56f5e)
- Wichtige Änderung: Der Rückgabewert wurde aus
PointerInputFilter.onPointerEvent(...)
entfernt, da der einzige Wert, der in Zeigerereignissen geändert werden sollte, Verbrauchsdaten sind. Anstatt Daten vonPointerInputFilter.onPointerEvent(...)
zurückzugeben, können Sie jetzt einfach die Verbrauchsdaten der übergebenen PointerEvents ändern. (I6acd0) - MeasureScope und IntrinsicMeasureScope wurden als Schnittstellen erstellt. (I1a087, b/170461665)
- Die Zusammenführungsfunktion für "AlignLine" wurde ausgeblendet. (I9da1a, b/170612900, b/170611568)
- Zusätzliche Möglichkeit zur Angabe von Inspector-Informationen in einem zusammengesetzten Modifikator (Idee08, b/163494569)
- Die Option „SelectAll“ wurde dem Auswahlmenü hinzugefügt (Ief02b).
- DrawTransform.rotate wurde so aktualisiert, dass entsprechend der Dokumentation ein Standard-Pivot-Parameter „center“ verwendet wird.
- DrawScope.rotateRad wurde so aktualisiert, dass ein Offset für den Drehpunkt verwendet wird, um anderen Transformationsmethoden zu entsprechen.
- Die DrawScope.rotateRad-Überlastung, für die Gleitkommazahlen für die X- und Y-Koordinaten des Drehpunkts genutzt wurden, wurde eingestellt.
- (Iffcbb, b/170434992)
Fehlerkorrekturen
- API-Lint-Prüfung für MissingGetterMatchingBuilder ist für Androidx aktiviert (I4bbea, b/138602561).
- Fügen Sie einen Test hinzu. (I6b8ae)
- Aktivieren Sie Übergänge in ComposeTestRule; entfernen Sie die Option, um den blinkenden Cursor in ComposeTestRule zu aktivieren. (If0de3)
- IME-Option für die Großschreibung der Tastatur wurde hinzugefügt (I8ac38)
- Einzeilige Tastaturoption für CoreTextField (I72e6d) hinzugefügt
- SimpleContainer in PopupTestUtils.kt verschieben (I65c3e)
- Die Radius API wurde in „CornerRadius“ umbenannt, um die Verwendung in Compose besser zu verdeutlichen. Die Dokumentation wurde aktualisiert, um anzugeben, dass negative Eckenradien auf null gesetzt sind. (I130c7, b/168762961)
- Verbesserte Android-Interoperabilität, indem weiterhin MotionEvents an untergeordnete Android-Ansichten gesendet werden, die für alle Aktionen außer
ACTION_DOWN
den Wert „false“ zurückgeben (I94c5a, b/170320973) - Für Box wurde eine Inline-Funktion erstellt. (Ibce0c, b/155056091)
Externer Beitrag
- Verschiedene Sprachen für
AnnotatedString.capitalize
undAnnotatedString.decapitalize
unterstützen (I4aa7f)
Version 1.0.0-alpha05
14. Oktober 2020
androidx.compose.ui:ui-*:1.0.0-alpha05
wurde veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.
API-Änderungen
- DSL zum Angeben von Inspector-Informationen hinzufügen (Ic9a22)
- Langes Drücken in Text verschieben. (Iff2bc)
- Experimental Modifier.pointerInput zum Sperren des Eingabemodifikators (Ia77d2)
- Bedienungshilfen zum Kopieren/Einfügen/Ausschneiden hinzugefügt (I6db4f)
- Öffentlicher Konstruktor für AndroidOwner wurde entfernt (Iacaef).
- Pop-ups und Dialogfelder übernehmen jetzt FLAG_SECURE vom übergeordneten Fenster. Zusätzliche Option zur expliziten Konfiguration (I64966, b/143778148, b/143778149)
Die Verbrauchsdaten können jetzt geändert werden. Außerdem geben Aufrufe von Erweiterungsfunktionen, die Daten nutzen, jetzt keine neue PointerInputChange mehr zurück, sondern mutieren stattdessen die bereitgestellte PointerInputChange.
Dies ist der erste Schritt in einem zweistufigen Prozess, um PointerEvent-Daten änderbar zu machen, sodass andere Pointer-Daten nicht durch Nutzercode bearbeitet werden können. Im zweiten Schritt wird der Rückgabetyp
List<PointerInputChange>
ausPointerInputFilter.onPointerEvent(...)
entfernt. (Id067e)Deaktivierung der Textauswahl und Demo (Ie7e97)
Über „onGloballyPositioned“ eine Inline-Funktion erstellt (I15830)
„OnPositionedModifier“ wird in „OnGloballyPositionedModifier“ und „onPositioned()“ in „onGloballyPositioned()“ umbenannt. (I587e8, b/169083903).
Die Eigenschaft hasPendingMeasureOrLayout wurde zum Eigentümer hinzugefügt. Diese gibt an, ob für den Eigentümer noch Layoutänderungen ausstehen. (I3d9f8, b/169038599)
API zum programmatischen Entfernen des Fokus hinzugefügt (Ie1dc2, b/161487952)
PointerInputFilter.onPointerInput(...)
wurde entfernt. Stattdessen solltePointerInputFilter.onPointerEvent(...)
verwendet werden. (I6f04a)Größenänderungen
- "Size.getFlipped" entfernt
- Size.rem entfernt
- Size.truncDiv (Ief44d, b/169790720) entfernt
Im Rahmen der Standardisierung von Sentinel-Werten für Inline-Klassen wird „Color.Unset“ in „Color.Unspecific“ umbenannt, um eine Konsistenz mit anderen Inline-Klassen zu erreichen (I97611, b/169797763).
TextOverflow.None wird eingeführt. Wenn overflow auf "None" gesetzt ist, kann Text den Überlauf nicht mehr verarbeiten, und er meldet seine tatsächliche Größe an LayoutNode. (I175c9, b/158830170)
Der Bereichsparameter in AnnotatedString.Builder.addStringAnnotation wird aus API-Konsistenz in ein Tag umbenannt. (I7c8cb)
Fehlerkorrekturen
- Die Scrollleistung von LazyColumn/Row wird verbessert, indem bei jedem Scrollen weniger Arbeit an der Unterzusammensetzung ausgeführt wird. Für die Composition-Klasse wurde die neue Methode hasInvalidations() hinzugefügt. Die Methode "hasPendingChanges()" von Recomposer wurde in hasInvalidations() umbenannt (Ib2f32, b/168293643, b/167972292, b/165028371).
- Die Parameter "Size.Nicht angegeben" wurden auf "Float.NaN" anstelle von "Float.POSITIVE_INFINITY" aktualisiert. Painter-Implementierungen wurden aktualisiert, um die Werte auf Size.Unspecific sowie auf nicht endliche Größen zu prüfen. (I95a7e)
- Durch die Reihenfolge der „place()“-Aufrufe in benutzerdefinierten Layouts wird jetzt die Zeichenreihenfolge für die untergeordneten Elemente definiert (Ibc9f6).
- Unterstützung der Konvertierung von AnnotatedString in SpannableString für bessere Zugänglichkeit. (Ief907)
- Es wurden Stubs für Android-Klassen hinzugefügt, die sich auf älteren Plattformen befinden, um die Verwendung von Reflexionen nach Möglichkeit zu vermeiden. (Ia1790)
- Fehlerkorrektur: Wenn die angezeigte Softwaretastatur die App zum Übersetzen führte, wurden die Koordinaten der Zeigereingabe falsch. (IC4cec, b/163077821)
Version 1.0.0-alpha04
1. Oktober 2020
androidx.compose.ui:ui-*:1.0.0-alpha04
wurde veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.
API-Änderungen
- "OwnerScope" wurde hinzugefügt, um das Erfassen von Layout- und Zeichnen von Beobachtungsbereichen zu ermöglichen, sobald diese nicht mehr gültig sind. (Ic4cf8)
- OnRemeasuredModifier und onSizeChanged() wurden hinzugefügt, um einen Callback zu erhalten, wenn das Inhaltslayout neu gemessen und die Größe entsprechend geändert wurde. (I657cf, b/154108792)
- Semantik für lange Klicks hinzufügen (I6281b, b/156468846)
- FocusManager wurde auf „Privat“ gesetzt. (I7872f)
Die Implementierung wurde aktualisiert, um eine dedizierte DrawCacheModifier-Implementierung zu erstellen, anstatt DrawModifier optional mit optionalen Eigenschaften zu versehen.
Aktualisierte Dokumentation für verschiedene Methoden (Ibd166)
Erstellen Sie TextRange inline, 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)
AccessibilityScrollState wird den Semantikeigenschaften hinzugefügt. (Ifeda9)
Einführung von „Modifier.drawWithCache“ zur Unterstützung des Erstellens eines Zeichenobjekts, mit dem Abhängigkeiten, die von Größen-/Statusinformationen abhängig sind, bedingt neu erstellt werden (I376dc).
Absatzbeschränkungen wurden entfernt. Die Breite wird jetzt direkt an den Absatz übergeben. (Ica712)
Fehlerkorrekturen
- Aktualisierung vieler Grafik-APIs
- APIs zur Transformation von Skalierung und Rotation wurden aktualisiert, sodass ein einzelner Offset-Parameter zur Darstellung der Pivot-Koordinaten anstelle von separaten Gleitkommaparametern für die x/y-Koordinaten in DrawScope und DrawTransform verwendet wird.
- Entfernung der Methoden Rect.expandToInclude und Rect.join
- Die Dokumentation für den Radius wurde aktualisiert: „oval zusätzlich zum elliptischen
- Es wurde eine Dokumentation hinzugefügt, in der angegeben wird, dass der öffentliche Konstruktor für die Inline-Radiusklasse nicht direkt aufgerufen werden soll. Stattdessen sollten Radius-Objekte über ihre Funktionskonstruktoren instanziiert werden.
- RoundRect-APIs für die Abfrage von topRight,bottomRight, bottomCenter usw. wurden entfernt.
- Eingestellte Rect.shift-Funktion zugunsten von Rect.translate
- RoundRect.grow und Rect.shrink APIs entfernt
- Umbenennung von RoundRect.outerRect in Rect.boundingRect
- Die Methoden "RoundRect.middleRect/tallMiddleRect/wideMiddleRect" und "Rect.isStadium" wurden entfernt.
- „RoundRect.longestSide“ wurde in „RoundRect.maxDimension“ umbenannt
- „RoundRect.shortestSide“ wurde in „RoundRect.minDimension“ umbenannt
- RoundRect.center ist jetzt eine Eigenschaft anstelle einer Funktion.
- Der RoundRect-Konstruktor verwendet jetzt Radius-Attribute anstelle einzelner Parameter für x/y-Radiuswerte.
- Größen-APIs, die von einem Rectangle mit Ursprung bei 0,0 angenommen wurden, wurden entfernt.
- Zerstörungs-API zu Radius hinzugefügt
- Migration verschiedener RoundRect-Erweiterungsfunktionen zu Eigenschaften
- (I8f5c7, b/168762961)
- Foundation.Box wurde eingestellt. Verwende stattdessen „foundation.layout.Box“. (Ie5950, b/167680279)
- Stack wurde in Box umbenannt. Die bisherige Box wird zugunsten der neuen Box in „Compose.foundation.layout“ eingestellt. Das Verhalten des neuen Box besteht darin, untergeordnete Elemente übereinander zu stapeln, wenn sie mehrere untergeordnete Elemente hat. Dies unterscheidet sich vom vorherigen Box, das sich ähnlich wie eine Column verhielt. (I94893, b/167680279)
- Die Parameter „Box decoration“ wurden eingestellt. Wenn Sie Ihre Box mit Verzierungen/Padding versehen möchten, verwenden Sie stattdessen Modifikatoren (Modifier.background, Modifier.Border, Modifier.padding) (Ibae92, b/167680279).
- Aktualisierung vieler Grafik-APIs
- DrawScope APIs wurden mit Bereichstransformationsmethoden aktualisiert, um anzuzeigen, dass die Transformation nur innerhalb des Callbacks angewendet und nach dem Aufrufen des Callbacks entfernt wird.
- Die ClipPath-Dokumentation wurde aktualisiert, sodass sie auf „Path“ (Pfad) statt auf ein abgerundetes Rechteck verweist.
- Fester Abstand in der Dokumentation für den rechten Parameter in „clipPath“.
- DrawScope.drawCanvas wurde indrawIntoCanvas umbenannt und der Größenparameter wurde entfernt.
- Umbenennung der dx/dy-Parameter in der Inset-Methode in horizontal und vertikal
- Es wurde eine eingefügte Überlastung hinzugefügt, die für alle vier Grenzen denselben Eingabewert bereitstellt.
- Die Dokumentation zur Inset-Methode, die darauf hinweist, dass die Inset-Methode auf alle vier Seiten angewendet wird,
- Dokumentation für die Rect-Klasse aktualisiert
- Kommentare zu Rect-Parametern wurden an den kdoc-Stil angepasst.
- Rect.join und Rect.expandToInclude wurden entfernt.
- Überlastung für Rect.translate(offset) erstellt und Rect.shift verworfen
- (If086a, b/167737376)
- Annotierte „rootAnimationClockFactory“, „transitsEnabled“, „blinkingCursorEnabled“ und „textInputServiceFactory“ mit @VisibleForTesting, machen sie zu einer internen API und verbergen ihre kdoc-Dateien (I554eb, b/168308412).
- Entfernen Sie SelectionContainer aus dem oberen Bereich, um die Standardauswahl zu deaktivieren und unerwartetes Verhalten zu vermeiden. Speziell kann ein SelectionContainer-Element verwendet werden, um den Inhalt zu kapseln, der stattdessen auswählbar sein muss. (I8dfe0, b/158459594)
Version 1.0.0-alpha03
16. September 2020
androidx.compose.ui:ui-*:1.0.0-alpha03
wurde veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.
API-Änderungen
- Semantikaktionen zum Vor- und Zurückscrollen wurden entfernt. In „AccessibilityRangeInfo“ wurden Schritte hinzugefügt. (Ia47b0)
onInvalidate()
wurde ausOwner
entfernt:OwnedLayer
-Ziehpunkte Entwertung. (Ica72b, b/162061312)Operatormethoden für die Size API, die Offset-Parameter nutzen, wurden entfernt. Das Ergebnis dieser Vorgänge ist unklar und die Art des Ergebnisses ist für diese unerwartet. Beispiel: soll mit „size - offset“ ein Offset oder ein Größenergebnis mit der Differenz zurückgegeben werden?
Außerdem wurden eingestellte Methoden aus der Klasse "Size" entfernt. (Iec902, b/166514214)
Fehlerkorrekturen
- Ein Fehler wurde behoben, durch den LazyColumn-Elemente manchmal falsch gezeichnet wurden. Dies führte auch zu Abstürzen unter bestimmten Bedingungen. (Ibcf17, b/163066980, b/165921895)
- DpConstraints und APIs, die es verwenden, wurden eingestellt. (I90cdb, b/167389835)
createAndroidComposeRule
undAndroidInputDispatcher
wurden vonandroidx.ui.test.android
nachandroidx.ui.test
verschoben (Idef08, b/164060572)- Die Verwendung der Schwerkraft wurde konsequent zur Ausrichtung oder Ausrichtung in Layout-APIs umbenannt. (I2421a, b/164077038)
- OnNode und andere globale Methoden wurden zu ComposeTestRule hinzugefügt, da die aktuellen globalen Methoden nicht mehr unterstützt werden. (Ieae36)
Version 1.0.0-alpha02
2. September 2020
androidx.compose.ui:ui-*:1.0.0-alpha02
wurde veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.
API-Änderungen
- Entfernen Sie den Callback, um den Inhaber zu benachrichtigen, wenn sich die layoutnode-Grenzen ändern. (If654e, b/166106882)
- Zusätzliche Unterstützung für filltype-Parameter in Vektorgrafikpfaden, um Aussparungen von Formen gemäß EvenOdd- oder Non-Zero-Füllregeln zu unterstützen. (I43dd2)
- Verfügbarkeitsdiagnose und Velocity sind jetzt Inline-Klassen (I48f4a).
- Die Dauer ist jetzt eine Inline-Klasse (I565eb).
- Fügen Sie einen Callback hinzu, um den Inhaber zu benachrichtigen, wenn sich die layoutnode-Grenzen ändern. (IC40b3)
Ein Problem wurde behoben, bei dem Rect-Funktionskonstruktor mit Versatz und Radius das Rechteck in der Reihenfolge links, rechts, oben, unten statt links, oben, rechts, unten erstellt hat.
Die eingestellten Companion-Methoden von Rect wurden zugunsten von Funktionskonstruktoren entfernt.
Es wurden Tests zur Überprüfung von Methoden in Rect.kt hinzugefügt (I08460, b/165822356).
Fehlerkorrekturen
- MutableRect 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 zusammensetzbare Funktionen hat sich geändert. Dies ist eine funktionsgefährdende Änderung des Binärprogramms. Alle Bibliotheken müssen neu kompiliert werden, damit sie mit dieser Version des Compiler-Plug-ins funktionieren.
Diese Änderung führt nicht zu einer funktionsgefährdenden Änderung auf Quellebene, da die einzigen geänderten APIs Compiler-APIs sind, die explizit aktiviert werden. (I7afd2, b/158123185)
Ein Absturz wurde behoben, der auftreten konnte, wenn die Weiterleitung an einen PointerInputFilter dazu führte, dass der PointerInputFilter synchron entfernt wurde. (I58f25)
Version 1.0.0-alpha01
26. August 2020
androidx.compose.ui:ui-*:1.0.0-alpha01
wurde veröffentlicht. Version 1.0.0-alpha01 enthält diese Commits.
Version 0.1.0-dev
Version 0.1.0-dev17
19. August 2020
androidx.compose.ui:ui-*:0.1.0-dev17
wurde veröffentlicht. Version 0.1.0-dev17 enthält diese Commits.
API-Änderungen
- „
emitView
“ wurde eingestellt. Verwenden Sie nach Möglichkeit stattdessenAndroidView
, um Ansichten innerhalb von „Compose“ auszugeben. Beachten Sie, dass das direkte Erstellen von Ansichten und ViewGroups in Zukunft nicht mehr unterstützt wird, es sei denn, es handelt sich dabei um Blätter im Erstellungsbaum. Dies ist dann der Fall, wenn dies mit AndroidView möglich ist. (I29b1e, b/163871221) FocusState2
wurde verworfen und durchFocusState
(Ia8b79, b/160822876, b/160923332) ersetzt- Die veralteten AndroidView-Überlastungen wurden entfernt. (I946b9, b/163802393)
- Benutzerdefinierte Emits können jetzt deklarieren, dass einer oder mehrere seiner Setter unabhängig vom Emit übersprungen und neu zusammengesetzt werden können. (Ibbd13)
Vektorklassen wurden in keine Datenklassen geändert, da dieselbe Objektinstanz für die Zusammensetzung verwendet wird.
Das Flag mutableStateOf wurde für VectorPainter hinzugefügt, damit es unter bestimmten Bedingungen neu gezeichnet werden kann, wenn sich die Inhalte des Vektors ändern.
Refaktorierte VectorComponent-Instanz wurde zu VectorPainter geändert, da sie für mehrere Kompositionen wiederverwendet wird.
GroupComponent und PathComponent aktualisiert, sodass ihre Namensfelder änderbar sind (Ieae45, b/151378808).
onChildPositioned
undOnChildPositionedModifier
wurden entfernt. Entwickler sollten stattdessenonPositioned
undOnPositionedModifier
für das untergeordnete Layout verwenden. (I4522e, b/162109766)Der Offset ist jetzt eine Inline-Klasse (Iaec70).
Ein Modifikatorparameter wurde zu AuswahlContainer hinzugefügt (I4aada, b/161487952).
Veraltete FocusModifier (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940) entfernt
mergePolicy
Lambda wurde zuSemanticsPropertyKey
hinzugefügt. Damit kann eine benutzerdefinierte Richtlinie für das Zusammenführen der Semantiken „mergeAllDescendants“ definiert. Die Standardrichtlinie sieht vor, den übergeordneten Wert zu verwenden, falls dieser bereits vorhanden ist, andernfalls den untergeordneten Wert. (Iaf6c4, b/161979921)Einschränkungen sind jetzt Inline-Klasse (I88736)
FocusManager wurde hinzugefügt, der eine allgemeine Fokuslogik aus AndroidComposeView verschiebt (I528ef, b/161487952, b/162206799).
PointerEventPass-Namen für die Alpha-Version wurden aktualisiert. (Ifda6f)
IntOffset ist jetzt eine Inline-Klasse (Iac0bf).
IntSize ist jetzt eine Inline-Klasse (I2bf42).
PlacementScope.placeAbsolute()
wurde inPlacementScope.place()
umbenannt und die vorherigePlacementScope.place()
wurde inPlacementScope.placeRelative()
umbenannt. Daher spiegelt die MethodePlacementScope.place()
die Position in Rechts-nach-links-Kontexten nicht mehr automatisch wider. Verwenden Sie stattdessenPlacementScope.placeRelative()
. (I873ac, b/162916675)AlertDialog verwendet jetzt FlowRow für Schaltflächen (I00ec1, b/161809319, b/143682374).
Einige Testdienstprogramme wurden nicht öffentlich gemacht, da sie nicht dort sind, wo sie zugehörig sind. Wird in Zukunft veröffentlicht. (I32ab1)
Refaktorierte Organisation des Zeiger-Eingabecodes. (Ie3f45)
Eingestellte PxBounds zugunsten von Rect. Aktualisierung aller Verwendungen von PxBounds mit rect und Hinzufügen der geeigneten Verwerfen/Ersetzen mit Annotationen zur Unterstützung der Migration. (I37038, b/162627058)
Das verworfene KeyEvent2 wurde entfernt. Verwenden Sie stattdessen „KeyEvent“. (Ied2d0, b/162097587)
KeyEvent hat ein Unicode-Attribut, mit dem das Unicode-Zeichen abgerufen werden kann, das von der angegebenen Kombination aus Schlüssel und Meta-Schlüsselstatus (If3afc) generiert wurde.
Das benutzerdefinierte Ereignis DelayUp und die zugehörigen Klassen wurden zu einer API mit Opt-in geändert, da es höchstwahrscheinlich geändert werden wird. (I56d6f)
Zwei nicht mehr benötigte PointerEventPasses wurden entfernt. (I3dd9d)
Parameter color, shadow und TextDecoration zu Paragraph.paint hinzufügen. Diese Funktion hilft, die 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 Border-Datenklasse wurde durch BorderStroke ersetzt (I4257d, b/158160576).
Die eingestellten FrameManager-Aufrufe wurden entfernt.
Interne APIs zur Zusammensetzung wurden geändert, um den Aufwand für das Tracking von Statusobjekten wie
mutableStateof()
(I80ba6) zu reduzieren.VerticalScroller und HorizontalScroller wurden entfernt. Verwenden Sie stattdessen „ScrollableColumn/Row“. Modifier.drawBackground wurde entfernt. Modifier.background (I73b0d, b/163019183) verwenden
Absturz, wenn ein Problem behoben wurde, das den Status in der For-Schleife speichert. Da nun derselbe Schlüssel in savedInstanceState() zulässig ist, ist die API von UiSavedStateRegistry an diese neue Anforderung angepasst (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561).
Die zusammensetzbare Funktion
state { ... }
wurde zugunsten expliziter Aufrufe vonremember { mutableStateOf(...) }
eingestellt. Dies reduziert die API-Oberfläche insgesamt und die Anzahl der Konzepte für die Statusverwaltung. Außerdem entspricht es dem Musterby mutableStateOf()
für die Delegierung von Klassenattributen. (Ia5727)RRect wurde in RoundRect umbenannt, damit es besser zum Zusammensetzen von Benennungsmustern passt. Erstellung ähnlicher Funktionskonstruktoren zu RRect und verworfene RRect-Funktionskonstruktoren (I5d325)
Version 0.1.0-dev16
5. August 2020
androidx.compose.ui:ui-*:0.1.0-dev16
wurde veröffentlicht. Version 0.1.0-dev16 enthält diese Commits.
API-Änderungen
- „OnChildPositioned“ wurde eingestellt. Verwenden Sie stattdessen „OnPositioned“ für das untergeordnete Element. (I87f95, b/162109766)
- „setViewContent“ wurde eingestellt. Verwenden Sie stattdessen „setContent“. (I7e497, b/160335130)
- Die AndroidViewBinding API zum Aufblähen und Zusammenstellen von Layoutressourcen basierend auf ViewBinding wurde hinzugefügt. (I081c6)
- KeyEvent2 wird durch KeyEvent ersetzt (I2d770, b/162097585).
- Unterstützung für Alt-Hardwaretaste hinzugefügt (I9036b)
- FocusManager wurde eingestellt. Verwenden Sie stattdessen Modifier.focus(), Modifier.focusObserver() und Modifier.focusRequester() . (I74ae4, b/162211322)
- "loadVectorResource" unterstützt "trimmPath"-Attribute (I808fe).
- Dialogfeld in Benutzeroberfläche verschieben (I47fa6)
- Zwei nicht mehr benötigte PointerEventPasses wurden entfernt. (I33ca7)
- Implementierung von PointerInteropModifier, der die Möglichkeit bietet, MotionEvents zu empfangen und mit Compose zu interagieren, als wäre es eine Implementierung einer Android-Ansicht. (Ieb08c)
- Der eingestellte Tag-Modifikator wurde entfernt. Verwenden Sie stattdessen die Layout-ID. (Idaa05, b/162023919)
- Die APIs für die Unterstützung von Rechts-nach-links wurden aktualisiert. LayoutDirectionAmbient wurde hinzugefügt, um die Layoutrichtung zu lesen und zu ändern. Modifier.rtl und Modifier.ltr wurden entfernt. (I080b3)
- Das Zuschneiden von Pfaden in Vektorgrafiken wird unterstützt (Ie16c9, b/158188351)
- Modifier.layout() wurde hinzugefügt, mit dem Sie bequem einen benutzerdefinierten Layoutmodifikator erstellen können (I73b69, b/161355194).
- Eine neue AndroidView API wurde hinzugefügt und die vorhandenen wurden eingestellt. (I5bcfd)
- Modifier.plus wurde eingestellt. Verwenden Sie stattdessen "Modifier.then". „Then“ (Dann) hat ein stärkeres Signal für die Reihenfolge, während gleichzeitig die Eingabe von
Modifier.padding().background() + anotherModifier
verhindert wird, wodurch die Kette unterbrochen wird und schwerer zu lesen ist (Iedd58, b/161529964). - Abgeleitete [Zusammenfassung]ComposeView-Klassen zum Hosten von „Compose-Inhalt“ in einer View-Hierarchie hinzufügen (I46357)
Row
undColumn
sind jetzt Inline-Funktionen, die den Aufwand für ihre Verwendung erheblich reduzieren. (I75c10)- SubcomposeLayout hinzugefügt. Es handelt sich um ein Low-Level-Primitive, mit dem die untergeordneten Elemente während der Messung zusammengefügt werden können, wenn einige Werte verwendet werden sollen, die erst später während des Messwerts für die Zusammensetzung der Unterstruktur verfügbar sind. WithConstraints wird beispielsweise nicht mit SubcomposeLayout implementiert. (I25cc8)
SemanticsNode.positionInRoot
wurde hinzugefügt, um die Position eines Semantikknotens relativ zum Stamm der Compose-Hierarchie abzurufen (Icdf26, b/161336532).- MotionEvents wurde von Android in Compose und zurück an Android übergeben. (I14be8, b/158034713)
- „Drop-down-Pop-up“ wurde entfernt. (I00430)
- Pop-up-Position in ausgeschnittenen Displays wurde fixiert. (Idd7dd)
- Bedienungshilfen-Aktion hinzufügen, um TextLayoutResult abzurufen (I9d6e6)
- RemeasurementModifier wurde hinzugefügt. Damit kann das Layout synchron neu gemessen werden. Im Allgemeinen benötigen Sie dies nie, da die Neumessung/das Layout automatisch erfolgt. Wir verwenden sie jedoch beim Scrollen in LazyColumnItems. (I5f331, b/160791058)
- Entfernen Sie getLineEllipsisOffset/getLineEllipsisCount. Verwenden Sie stattdessen getLineVisibleEnd/getLineEnd/isLineEllipsize. (I85aa2)
- Füge als Best Practice einige Markierungen/Anmerkungen hinzu. (I66b20)
- werden in TextLayoutResult weitere Zeilen-APIs angezeigt. (I79bd2)
- Integrierte Vektorkonverter zum Umwandeln integrierter Einheiten sind jetzt über Foo.VectorConverter verfügbar. Beispiel: Dp.VectorConverter, Color.VectorConverter, Floating.VectorConverter usw. konvertieren (I3e273)
Fehlerkorrekturen
- Umfassende API-Fehlerkorrekturen (I077bc)
- Nicht verwendete OffsetBase-Schnittstelle entfernen
- Richten Sie die Offset- und IntOffset-Klassen so aus, dass sie eine einheitliche API-Oberfläche haben.
- Benennen Sie IntOffset.Origin in IntOffset.Zero um, um mit der Offset API konsistent zu sein.
- Die nativeCanvas-Methode wurde aus der Canvas-Oberfläche entfernt, damit Nutzer ihre eigenen Canvas-Instanzen erstellen können.
- EmptyCanvas-Stub-Klasse erstellt, um DrawScope zu einem Nicht-Null-Parameter anstelle von lateinit zu refaktorieren und sicherzustellen, dass das Feld keine Nullwerte enthält.
- ClipOp-Enums wurden in Pascal Case umbenannt
- FilterQuality-Enums wurden in Pascal Case umbenannt
- StrokeJoin-Enums wurden in Pascal Case umbenannt
- PointMode-Enums wurden in Pascal Case umbenannt
- PaintingStyle-Enums wurden in Pascal Case umbenannt
- PathFillType-Enums wurden in Pascal Case umbenannt
- StrokeCap-Enums wurden in Pascal Case umbenannt
- Die DrawCache-Implementierung wurde aktualisiert, sodass lateinit-Parameter nicht mehr verwendet werden.
- DrawScope wurde so aktualisiert, dass für die internen Parameter "fillPaint" und "strokePaint" kein Lazy Delegierung mehr verwendet wird.
- Die Funktion „Bild zusammensetzbar“ wurde aktualisiert, um die Nutzung von Box zu vermeiden und so den Verwaltungsaufwand zu reduzieren.
- Outline-Klasse wurde aktualisiert und enthält jetzt @Unveränderliche Annotationen.
- PathNode mit @Unveränderlichen Annotationen für jede Pfadanweisung aktualisiert
- Die Vektorunterzusammensetzung wurde aktualisiert, um redundante bedingte Prüfungen auf Gleichheit zu entfernen, da diese von der Erstellung bereits verarbeitet werden.
- Verworfene Rect-Companion-Konstruktormethoden zugunsten von Funktionskonstruktoren
- Aktualisierung der Brush-Klassen und Funktionskonstruktoren mit den APIs @Immutable und @Stable.
- VertexMode-Enum wurde auf PascalCase aktualisiert
- Die DrawScope selectPaint-Methode wurde aktualisiert, um Strichparameter für die Darstellung bedingt zu überschreiben, wenn sie sich geändert haben.
- Wir haben die Größe aktualisiert, um eine destruktive API hinzuzufügen, „Nicht angegeben“ in „Nicht angegeben“ umbenannt und nicht verwendete Methoden entfernt
- Der Verbrauch der Erstellung der BlendMode API wurde aktualisiert, um je nach API-Ebene korrekt zwischen den Modi „BlendModes“ und „PorterDuff“ des Android-Frameworks zuzuordnen. Die BlendMode#isSupported API kann als Funktionsabfrage verwendet werden, um vor ihrer Nutzung festzustellen, ob BlendMode auf dem Gerät unterstützt wird. (I0ef42)
- LazyItemScope wurde für den Parameter „itemContent“ von Lazy-Listen hinzugefügt. Sie bietet Modifikatoren zum Füllen der maximalen Größe des übergeordneten Elements. Dies löst den Anwendungsfall, in dem das Element den Darstellungsbereich ausfüllen soll und die reguläre Modifier.fillMaxSize()-Methode nicht funktioniert, da das Element mit Grenzen für unendliche Werte gemessen wird. (Ibd3b2, b/162248854)
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
reduziert (I46491, b/161887429)AndroidComposeTestRule
wurde increateAndroidComposeRule
umbenannt. (I70aaf)TextLayoutResult
wurden weitere APIs hinzugefügt. (Id7e04)- Material
FilledTextField
wurde inTextField
umbenannt und die grundlegendeTextField
wurde inBaseTextField
umbenannt, damit die einfachste gewünschte API leicht zu finden und zu verwenden ist (Ia6242, b/155482676). - "Modifier.drawBackground" wurde in "Modifier.background" umbenannt (I13677).
Version 0.1.0-dev15
22. Juli 2020
androidx.compose.ui:ui-*:0.1.0-dev15
wurde veröffentlicht. Version 0.1.0-dev15 enthält diese Commits.
Abhängigkeiten aktualisieren
- Wenn Sie die
0.1.0-dev15
-Version von Compose verwenden möchten, müssen Sie Ihre Abhängigkeiten gemäß den neuen Code-Snippets aktualisieren, die oben unter Abhängigkeiten angeben gezeigt werden.
API-Änderungen
- FocusModifier wird zugunsten von Modifier.focus, Modifier.focusRequester und Modifier.focusObserver eingestellt. FocusState und FocusdetailState wurden zugunsten von FocusState2 eingestellt (I46919, b/160822875, b/160922136).
- Ein Modifikator wurde hinzugefügt, um Veränderungen des Fokuszustands zu beobachten. (I05866, b/160924455, b/160923326)
- Es wurde ein Modifikator hinzugefügt, um Fokusänderungen anzufordern (I8dd73, b/161182057, b/160924778).
- Verschieben Sie das Symbolleisten-Menü an die gewünschte Position, um die Optionen zum Kopieren, Ausschneiden und Einfügen richtig anzuzeigen. (ID3955)
- Für Einzelwert-Semantikeigenschaften wird jetzt ein Aufrufstil verwendet.
Beispiel: Semantik {hidden = true } wird jetzt so geschrieben:
semantics { hidden() }
. (Ic1afd, b/145951226, b/145955412) - Modifier.focus wurde hinzugefügt, der FocusModifier ersetzt. (Ib852a, b/160924778)
- Fügen Sie FloatingToolbar für die TextField-Auswahl hinzu. (Ie8b07)
- Es wurde eine experimentelle API-Anmerkung für die API zur Schlüsseleingabe 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 FocusdetailState (I0a3ba, b/160822595).
- ExperimentalFocus wurde hinzugefügt, eine @OptIn-Anmerkung für die Focus API. (I1544b, b/160820961)
- Es wurde eine IntBounds-Einheitenklasse hinzugefügt, die Ganzzahl-Pixelgrenzen aus dem Layout darstellt. Die API von PopupPositionProvider wurde für die Verwendung aktualisiert. (I0d8d0, b/159596546)
- Applier erfordert jetzt eine Clear()-Methode zum Entfernen von Kompositionen (Ibe697).
- KeyEvent wurde eingestellt und durch KeyEvent2 (I68730) ersetzt
- Für Test-Finder wurde das optionale Flag „useUnmergedTree“ hinzugefügt. (I2ce48)
- Experimentelle LayoutNode-API erstellt (I4f2e9)
Kopiermethoden wurden zu verschiedenen Inline-Klassentypen hinzugefügt, darunter:
- Abweichung
- Größe
- Radius
- Bewegung
TransformOrigin
Verworfene Methode für das Companion-Objekt „Size.copy“ durch Verwendung der Instanzkopiermethode (Ife290, b/159905651)
Pop-ups, Dialogfelder und Menüs übernehmen jetzt das kontextbezogene MaterialTheme (Ia3665, b/156527485).
TextDirection wurde in ResolvedTextDirection umbenannt (I3ff38).
Der Layout-Richtungsparameter wurde aus dem Messblock der Layout()-Funktion entfernt. Die Layoutrichtung ist jedoch innerhalb des Callbacks über das Messungsbereichsobjekt verfügbar (Ic7d9d).
Auswahlgriffe zur Wiederverwendung refaktorieren. (I420e0)
Anklickbar wurde entfernt. Modifier.clickable verwenden (I84bdf)
TestTag und Semantik wurden gelöscht. Verwenden Sie stattdessen Modifier.testTag und Modifier.semantics (I15ff0, b/158841414).
Vor dieser Änderung hat das Compiler-Plug-in Aufrufe an Konstruktoren innerhalb einer @Composable-Funktion nicht trivilegisch abgefangen, wenn ein (I5205a, b/158123804) vorhanden war.
„Modifier.tag“ wurde in „Modifier.layoutId“ umbenannt, um eine Verwechslung mit „Modifier.testTag“ zu vermeiden. (I995f0)
Die von Placeable#get(AlignmentLine) zurückgegebenen Int-Positionen der Ausrichtungszeile sind jetzt nicht null. Wenn die abgefragte Ausrichtungszeile fehlt, wird „AlignLine.Unspecific“ zurückgegeben. (I896c5, b/158134875)
Der zusammensetzbaren AndroidView-Funktion wurde ein Modifikatorparameter hinzugefügt. (I48a88, b/158746303)
Semantics() wurde eingestellt. Verwenden Sie stattdessen Modifier.semantics(). (I72407, b/158841414)
Fügen Sie die zusammensetzbare Funktion viewModel() hinzu, um ViewModel ähnlich wie in Activity oder Fragment (I5fdd1) zu erstellen oder bereits vorhandene ViewModel-Modelle zu erstellen.
Verwendung von "IntPx" durch "Int." ersetzt. "IntPxPosition" durch "IntOffset" ersetzt. "IntPxSize" wurde durch "IntSize" ersetzt. (Ib7b44)
Um die Anzahl der Klassen zur Darstellung von Größeninformationen zu konsolidieren, sollten Sie die Verwendung der Klasse "Size" anstelle von "PxSize" standardisieren. Dies bietet die Vorteile einer Inline-Klasse, um einen Long-Wert zu verwenden, um 2 Gleitkommawerte zu verpacken, um Breite und Höhe als Gleitkommazahlen darzustellen. (IC0191)
Um die Anzahl der Klassen zur Darstellung von Positionierungsinformationen zu konsolidieren, sollten Sie die Verwendung der Offset-Klasse anstelle von PxPosition standardisieren. Dies bietet die Vorteile einer Inline-Klasse, um einen Long-Wert zu verwenden, um 2 Gleitkommawerte zu verpacken, um x- und y-Offsets darzustellen, die als Gleitkommazahlen dargestellt werden. (I3ad98)
Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem für Pixelparameter nur Dp und primitive Typen verwendet werden. Vollständige Px-Klasse gelöscht (I3ff33)
Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem für Pixelparameter nur Dp und primitive Typen verwendet werden (I086f4).
Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem für Pixelparameter nur Dp und primitive Typen verwendet werden (Id3434).
Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem für Pixelparameter nur Dp und primitive Typen verwendet werden (I97a5a).
TestTag wurde eingestellt. Verwenden Sie stattdessen Modifier.testTag. (If5110, b/157173105)
Die standardmäßige No-op-Implementierung von ParentDataModifier#modifyParentData wurde entfernt. Dies entsprach eigentlich der gar keiner Implementierung der Schnittstelle. (I0deaa)
ScaleFit wurde zuvor als entfernt eingestellt. Verwenden Sie stattdessen ContentScale. (Ifbc5b)
Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem für Pixelparameter nur Dp und primitive Typen verwendet werden (I19d02).
Die Komponente "Dropdown-Menü" wurde zu UI-Material hinzugefügt, einer Implementierung des Material Design-Menüs. (I9bb3d)
Das verworfene LayoutTag() wurde entfernt. Verwenden Sie stattdessen „Modifier.tag()“. Die eingestellte Funktion „Modifier.matchParent()“ wurde entfernt. Verwenden Sie stattdessen „Modifier.matchParentSize()“. (If8044)
Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem für Pixelparameter nur Dp und primitive Typen verwendet werden (I57bff).
„modifier.semantics“ wurde nicht mehr eingestellt, um die Verwendung von übergeordneten Komponenten zu ermöglichen. (I4cfdc)
CanvasScope-Implementierungen wurden konsolidiert, sodass es jetzt nur noch DrawScope und ContentDrawScope gibt. CanvasScope wurde in DrawScope umbenannt. DrawScope wurde aktualisiert, um die Dichte-Oberfläche zu implementieren und die Unterklasse „LayoutDirection“ von „Deleted DrawScope“ in ContentDrawScope zu implementieren. Die Funktionen „Painter“ und „PainterModifier“ werden jetzt nicht mehr selbst beibehalten, da DrawScope diese Eigenschaft bereits zur Verfügung stellt, ohne sie manuell anzugeben (I1798e).
Mit DoubleTapGestenFilter wird jetzt „SingleTap einzusten“-Filter in der Baumstruktur unterschieden. (If92b1)
Ausrichtungs-API wurde aktualisiert und Unterstützung für die absolute Ausrichtung hinzugefügt (die im Rtl-Kontext nicht automatisch gespiegelt wird) (I38cd3).
Die DrawLayer-Modifikator-API wurde geändert: outlineShape wurde in Form umbenannt und der RectangleShape-Standardwert kann nicht mehr gelöscht werden. ClipToOutline ist in „clip“ umbenannt. „clipToBounds“ wurde entfernt, da dies mit „clip == true“ mit RectangleShape identisch ist (I7ef11, b/155075735).
Wir haben die Erstellung von APIs auf höherer Ebene aktualisiert, die einen Canvas zur Verfügung stellen, um stattdessen CanvasScope bereitzustellen. Nutzer müssen dadurch ihre eigenen Paint-Objekte nicht mehr verwalten. Nutzer, die weiterhin Zugriff auf einen Canvas benötigen, können die Erweiterungsmethode „drawCanvas“ verwenden. Sie bietet einen Callback, um Zeichenbefehle mit dem zugrunde liegenden Canvas auszugeben. (I80afd)
Die nachgestellte Lambda API mit Einschränkungen wurde geändert. Jetzt hat es anstelle von zwei Parametern einen Empfängerbereich, der zusätzlich zu den Einschränkungen und „layoutDirection“ die Eigenschaften „minWidth“, „maxWidth“, „minHeight“ und „maxHeight“ in dp bereitstellt (I91b9a, b/149979702).
LayoutModifier2 wurde in LayoutModifier umbenannt. (Id29f3)
Die eingestellte Layout-Modifier-Oberfläche wurde entfernt. (I2a9d6)
Die Funktionen für intrinsische Messungen in Layout und LayoutModifier2 verfügen jetzt über einen IntrinsicMeasureScope-Empfänger, der nun eine intrinsische Abfrage-API mit implizit übernommener Layout-Richtung bereitstellt. (ID9945)
Untergeordnete Layout- und LayoutModifier-Elemente können mit einer anderen Layout-Richtung gemessen werden. (Ibd731)
Neu wurde Modifier.zIndex() hinzugefügt, um die Zeichenreihenfolge der untergeordneten Elemente innerhalb desselben übergeordneten Layouts zu steuern. Die Höheneigenschaft von DrawLayerModifier wurde in shadowElevation umbenannt und steuert die Zeichenreihenfolge nicht mehr. Die Reihenfolge der Parameter in DrawShadow wurde geändert: Die Höhe ist jetzt die erste und die Form ist die zweite. Die Standardform lautet RectangleShape. (I20150, b/152417501)
"onSizeChange" und "onPositionChange" im Inhaber entfernt. (I5c718)
Es wurde Constraints2 hinzugefügt, eine Kopie von Einschränkungen, die anstelle von IntPx nur Werte vom Typ "Int" unterstützt. IntPx wird entfernt und es wird angenommen, dass alle Ganzzahlbeschränkungen Pixel wie Android entsprechen.
- Hinzufügung von "IntSize", das IntPxSize irgendwann ersetzen wird. (I4b43a)
Die Ausrichtung kann mit beliebigen Werten instanziiert werden. 1D-Ausrichtungen wurden hinzugefügt. (Ia0c05)
„alignToSiblings“ akzeptiert jetzt „Measured“ anstelle von „Placeable“. (I5788d)
-
- ScaleFit wurde in ContentScale umbenannt
- ContentScale wurde von UI-Graphics zum UI-Core-Modul verschoben und befindet sich nun im selben Modul wie die Ausrichtung API.
- FillMaxDimension wurde in „Zuschneiden“ umbenannt
- FillMinDimension wurde umbenannt in Fit
- Fit wurde zur besseren Übereinstimmung in Inside umbenannt
- ImageView.ScaleType-Entsprechungen
- Es wurde eine Dokumentation hinzugefügt, aus der hervorgeht, dass die Kombination von „Zuschneiden“ und „Ausrichtung.Center“ dasselbe Ergebnis wie „ImageView.ScaleType.CENTER_CROP“ und „Fit“ bei Verwendung von „Align.Center“ erzielt.
Rtl-Unterstützung für Zeichenmodifikatoren. (I0aaf9)
Veröffentlichung einer API zum Aufblähen von Android Views aus XML. Weitere Informationen finden Sie in der ViewInCompose-Demo. (I42916)
DrawModifier API verbessern:
- Der Empfängerumfang für „draw() ContentDrawScope“ wurde erstellt.
- Alle Parameter fürdraw() wurden entfernt.
- DrawScope hat dieselbe Oberfläche wie der frühere CanvasScope.
- ContentDrawScope verfügt über die Methode „drawContent()“ (Ibaced, b/152919067).
PositionInParent und boundsInParent für LayoutCoordinates wurden hinzugefügt. (Icacdd, b/152735784)
„DawLayerModifier“ und „drawLayer()“ sind jetzt standardmäßig von „clipToBounds“ und „clipToOutline“ auf „false“ gesetzt. (I0eb8b, b/152810850)
LayoutResult wurde in MeasureResult umbenannt. (Id8c68)
LayoutModifier2 wurde hinzugefügt, eine neue API zum Definieren von Layoutmodifikatoren. LayoutModifier (If32ac) wurde eingestellt.
Modifikator plus Operator durch Factory-Erweiterungsfunktionen ersetzt (I225e4)
TranslationX/Y-Eigenschaften wurden hinzugefügt, um das Versetzen der Anzeigeliste von Zeichenbefehlen für eine bestimmte Ebene zu unterstützen. Dies ist nützlich, um Inhalte als Reaktion auf Animationen oder Touch-Ereignisse zu verschieben. (I8641c)
Die Layer-APIs wurden um pivotX- und pivotY-Parameter erweitert, um die Rotation und Skalierung um einen bestimmten Punkt auf einer Ebene zu unterstützen (Icf7c3).
Fügen Sie „OnPositionedModifier“ und „OnChildPositionedModifier“ hinzu, um die zusammensetzbaren Funktionen „OnPositioned“ und „OnChildPositioned“ zu ersetzen. (I2ec8f)
Wir haben LayerModifier hinzugefügt, einen Modifikator, mit dem ein RenderNode für ein Layout hinzugefügt werden kann. Sie können Beschnitte, Deckkraft, Drehung, Skalierung und Schatten festlegen. Dadurch wird RepaintBoundary ersetzt. (I7100d, b/150774014)
Die Layoutrichtung wird vom übergeordneten Layoutknoten auf die untergeordneten Elemente übertragen. Modifikator für Layoutrichtung wurde hinzugefügt. (I3d955)
Die Stack-Komponente unterstützt die Schreibrichtung von rechts nach links (Ic9e00).
Erste Unterstützung für Rtl im Compose-Layout (Ia5519)
Density und DensityScope wurden in einer Schnittstelle zusammengeführt. Anstelle von „AmbientDensity()“ können Sie jetzt „DensityAmbient.current“ verwenden. Anstelle von mitDensity(density) nur mit(density) (I11cb1)
LayoutCoordinates wurde geändert, um providedAlignmentLines zu einem Set statt zu einer Karte zu machen und durch LayoutCoordinates stattdessen den Operator get() zum Abrufen eines Werts zu implementieren. So können Modifikatoren einen oder mehrere Werte des Satzes leichter ändern, ohne für jeden Modifikator eine neue Sammlung erstellen zu müssen. (I0245a)
LayoutCoordinates verfügt nicht mehr über eine Positionseigenschaft. Die Positionseigenschaft ist in Bezug auf LayoutModifier, Rotation oder Skalierung nicht sinnvoll. Stattdessen sollten Entwickler die Umwandlung von LayoutCoordinates in ein anderes mit „parentCoordinates“ und „childToLocal()“ verwenden.
LayoutCoordinates verwendet IntPxSize für die Größeneigenschaft anstelle von PxSize. Layouts verwenden ganzzahlige Pixelgrößen für Layouts. Daher sollten alle Layoutgrößen Ganzzahlen und keine Gleitkommawerte verwenden. (I9367b)
Verbesserungen an der API-Oberfläche von Einschränkungen (I0fd15)
Es wurde eine CanvasScope API erstellt, die ein Canvas-Objekt umschließt, um eine zustandslose, deklarative API-Oberfläche zum Zeichnen bereitzustellen. Transformationen sind in ihrem eigenen Empfängerbereich enthalten und Größeninformationen gelten auch für entsprechende eingefügte Grenzen. Der Nutzer muss zum Konfigurieren von Zeichenvorgängen kein eigenes Paint-Statusobjekt verwalten.
- CanvasScopeSample wurde hinzugefügt und die Demo-App wurde mit einer deklarativen Grafikdemo aktualisiert (Ifd86d).
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.* nach androidx.ui.graphics.* verschoben. (Ia74d5, b/154507984)
Alle Farbverwendungen, für die Nullwerte zulässig sind, in der API durch eine Funktion ersetzt, die keine Nullwerte zulässt, und Color.Unset anstelle von null verwenden (Iabaa7)
ImagePainter zusätzlichen optionalen rect-Parameter hinzufügen, um das Zeichnen eines Unterabschnitts des zugrunde liegenden ImageAsset (I0ea9e) zu unterstützen
"Farbe festlegen" wurde hinzugefügt, um einen nicht festgelegten Wert ohne Rahmenfarben darzustellen. (If901a)
Die Erweiterungsmethoden Canvas.rotate und Canvas.scale wurden hinzugefügt, um optionale Pivot-Koordinaten für Transformationen zu nutzen. Diese werden standardmäßig links oben in der aktuellen Canvas-Übersetzung angezeigt.
Außerdem wurde Canvas.rotateRad als Erweiterungsmethode für Konsistenz verschoben (Ibaca6).
Erstellung der PixelMap API zur Unterstützung der Abfrage von Pixelinformationen aus einem ImageAsset. (I69ad6)
Umbenannt in „toFrameworkRect/toFrameworkRectF“ in „toAndroidRect/toAndroidRectF“, um der Namenskonvention für Objektkonvertierungen zwischen Compose und den Android-Framework-APIs, auf denen sie basieren, zu entsprechen. Außerdem aktualisierte Dokumente zu diesen APIs (I86337)
Die VectorPainter API wurde hinzugefügt, um die vorhandene Subcomposition API für Vektorgrafiken zu ersetzen. Das Ergebnis der Unterzusammensetzung ist ein VectorPainter-Objekt anstelle eines DrrawModifier. Die früheren DrawVector-Zusammensetzungen wurden zugunsten von VectorPainter eingestellt.
Umbenennung der Image(Painter) API in PaintBox(Painter) Erstellung einer zusammensetzbaren Vektor-Datei mit Vektoren, die sich wie die zusammensetzbare Funktion von Bild verhält, außer mit einem VectorAsset anstelle eines ImageAsset (I9af9a, b/149030271)
Umbenennung von Bild in ImageAsset, um den Unterschied zwischen den Bilddaten und der zukünftigen zusammensetzbaren Funktion für das Layout und die Zeichnungen besser zu unterscheiden _Body:Erweiterungsmethode für „android.graphics.Bitmap“ und „Bitmap.asImageAsset()“ erstellt, um eine Instanz eines ImageAsset zu erstellen, mit dem sich die herkömmliche Android-Anwendungsentwicklung mit dem Compose-Framework kombinieren lässt (Id5bbd).
TextDirection.Content wurde hinzugefügt (I48f36)
Der Operator TextDecoration.plus (I0ad1a) wurde hinzugefügt.
Force
wird aus den Aufzählungswerten von TextDirectionAlgorithm (Icc944) entferntTextDirectionAlgorithm wurde in TextDirection (I75ce8) umbenannt
Implementiert „LongPressAndDrag“ für die Textfeldauswahl. (I17919)
AnnotatedString.getStringAnnotations hinzugefügt, die alle Annotationen innerhalb des Bereichs zurückgibt. (I1fa00)
Der Paketname für Locale und LocaleList wurde von androidx.ui.text in androidx.ui.intl (I8132c) geändert.
Der Cursor von TextField blinkt (Id10a7).
API-Änderung: AnnotatedString(builder: Builder) wurde in annotatedString(builder: Builder) umbenannt. (Ia6377)
API-Änderung: AnnotatedString.Item wurde in AnnotatedString.Range umbenannt. (I2d44d)
Benennen Sie AnnotatedString.Builder.addAnnotationString in addStringAnnotation um. (I5059e)
Es ist jetzt möglich, die Softwaretastatur mithilfe des Callbacks „onTextInputStarted“ (I8dc44, b/151860051) mit „SoftwareKeyboardController“ ein- und auszublenden.
Zusätzlicher Plus-Operator für (Text/Paragraph/Span)Style, der an die Funktion „merge()“ delegiert. (Ia1add)
FontWeight.lerp rastet nicht mehr ein. Es ist immer noch eine Datenklasse. (I521c2)
Der FontWeight-Konstruktor ist jetzt öffentlich, er ist keine Datenklasse mehr. (Id6b1f)
Fügen Sie getLineStart, getLineEnd, getEllipsisOffset und getEllipsisCount zu TextLayoutResult (Ibc801) hinzu.
Modul ui-text wurde in ui-text-core umbenannt (I57dec).
Die nicht verwendete Klasse "Size" wurde entfernt, da das verwendete UI-Geometriemodul eine doppelte "Size"-Klasse enthält. (I1b602)
AdapterList wurde hinzugefügt, eine scrollbare Listenkomponente, die nur die sichtbaren Elemente zusammenstellt und einrichtet. Zu den derzeit bekannten Problemen zählt, dass es sich nur um eine vertikale Version handelt und nicht alle Fälle von Änderungen an den untergeordneten Elementen vollständig verarbeitet werden. (Ib351b)
Abstände, Rahmen, Form und Hintergrundparameter zu Box hinzufügen (I05027, b/148147281)
Fehlerkorrekturen
- "onFocusChange"-Callback in Textfeldern wurde in "onFocusChanged" umbenannt (Ida4a1).
- VerticalScroller und HoriziontalScroller wurden eingestellt. Verwenden Sie „ScrollableColumn“ und „ScrollableRow“, um das Spalten-/Zeilenverhalten und die Parameter zu integrieren, oder verwenden Sie „Modifier.verticalScroll“ und „Modifier.horizontalScroll“ für Ihr eigenes Element. In ähnlicher Weise wurde ScrollerPosition zugunsten von ScrollState eingestellt. (I400ce, b/157225838, b/149460415, b/154105299)
runOnIdleCompose
umbenannt inrunOnIdle
(I83607)- Mehrere Test-APIs wurden umbenannt, um die Intuitivität zu verbessern. Alle findenXYZ APIs wurden in onNodeXYZ umbenannt. Alle doXYZ APIs wurden umbenannt, um XYZ auszuführen. (I7f164)
- Die Benutzeroberfläche zum Erstellen kann jetzt in ViewGroups erstellt werden, ohne dass eine neue Komposition erforderlich ist. Ein Beispiel finden Sie unter ViewInteropDemo. (I9ab0b, b/160455080)
- "sortWith" und "removeRange" wurden zu MutableVector hinzugefügt (Icccf7).
- Implementieren Sie Ziehpunkte zum Ziehen, um die Auswahl für das Textfeld zu ändern. (I27032)
- Die Shader-Inline-Klasse, mit der die NativeShader-Erwartungsklasse umschlossen wurde, wurde in "Shader" umbenannt. Die eingebundene Shader-Inline-Klasse hat der API-Oberfläche keine wertvollen Informationen hinzugefügt und war eine Inline-Klasse. Verwenden Sie die NativeShader-Klasse daher direkt. (I25e4d)
PainterModifier wurde so überarbeitet, dass keine Skalierung mehr basierend auf den angegebenen Einschränkungen und dem Parameter „ContentScale“ möglich ist. Painter skaliert den Zeicheninhalt selbst an die angegebene Größe des DrawScope, in den er eingespeist wird.
Ein Problem wurde behoben, bei dem die Cache-Bitmap von VectorPainter auf die Standardgröße und nicht auf die angegebene Größe zum Zeichnen angepasst wurde.
ImagePainter wurde aktualisiert, um den Inhalt zu skalieren, anstatt sich auf PainterModifier zu verlassen. (I6ba90)
Übergeordnete withFrameNanos-Funktion für das Animations-Timing hinzufügen (Ie34c5)
Die Anmerkung „@Untracked“ wurde eingestellt. Durch @ComposableContract(tracked=false) ersetzen (Id211e)
„androidx.ui.foundation.TextFieldValue“ und „androidx.ui.input.EditorValue“ wurden eingestellt. Zusammensetzbare Funktionen für TextField, FilledTextField und CoreTextField, die diesen Typ verwenden, wurden ebenfalls eingestellt. Verwenden Sie stattdessen androidx.ui.input.TextFieldValue (I4066d, b/155211005).
Ein Problem wurde behoben, bei dem die Weiterleitung von Zeigereingaben einen Absturz verursachte, wenn PointerInputFilters beim Verschieben über die Unterzusammensetzung entfernt wurden. Dieser Fehler wurde jetzt behoben. (I1f48b, b/157998762)
Ein Problem wurde behoben, bei dem die Weiterleitung von Zeigereingaben einen Absturz verursachte, wenn PointerInputFilters beim Verschieben über die Unterzusammensetzung entfernt wurden. Dieser Fehler wurde jetzt behoben. (Iab398, b/157998762)
Die Radiusklasse wurde in eine Inline-Klasse geändert. Methoden zur Companion-Erstellung wurden zugunsten des Funktionskonstruktors mit Standardparametern entfernt, sodass der Radius entlang der Y-Achse dem obligatorischen Radiusparameter der X-Achse entspricht.
DrawScope.drawRoundRect verwendet jetzt einen einzelnen Radius-Parameter anstelle von zwei separaten Gleitkommawerten für den Radius entlang der x- und y-Achse (I46d1b).
Die zusammensetzbare Funktion „Neu zusammensetzen“ ist keine nützliche Abstraktion mehr. Die Neuzusammensetzung sollte in der Regel als Ergebnis von MutableState-Zuweisungen erfolgen. Für alle anderen Bereiche wird empfohlen, die
invalidate
-Funktion zu verwenden, um eine Neuzusammensetzung des aktuellen Bereichs auszulösen. (Ifc992)Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem für Pixelparameter nur Dp und primitive Typen verwendet werden (Iede0b).
Ändert die Strategie zur Codegenerierung des Compose-Compilers. Vor der Änderung hat der Compiler Aufrufe in zusammensetzbare Funktionen transformiert. Mit dieser Änderung transformieren wir jetzt den Text einer zusammensetzbaren Funktion und lassen die Aufrufsite (meistens) unverändert.
Das bedeutet, dass die meiste Logik der Kommunikation mit der Compose-Laufzeit am Anfang des Funktionstexts und nicht auf der Aufrufseite stattfindet.
Die Änderung sollte mit der Quelle kompatibel sein, wenn Sie den Editor verwenden. Die meisten Nutzer des Editors sollten aufgrund dieser Änderung keinen Code aktualisieren müssen.
Um diese Arbeit zu unterstützen, wurde die JVM-Signatur aller zusammensetzbaren Funktionen geändert. Eine zusammensetzbare Funktion, die einen einzelnen Parameter akzeptiert, wird in eine Funktion umgewandelt, die drei Parameter akzeptiert. Die zusätzlichen Parameter sind der Composer, eine „Schlüssel“-Ganzzahl, eine Bitmasken-Ganzzahl zur Weitergabe von Metadaten durch Aufrufe.
„Compose“ wandelt jetzt auch Standardargumente in eine zusammensetzbare Funktion um. Dies geschieht, ohne eine zusätzliche synthetische Standardüberlastung der Funktion selbst einzuführen, sodass diese Änderung dazu führt, dass weniger Funktionen definiert werden.
Bekannte beabsichtigte Verhaltensänderungen, die sich daraus ergeben:
- Einige Anrufe werden an der Stelle übersprungen, an der sie vorher nicht gekommen wären
- Zusammensetzbare Ausdrücke in Standardargumentausdrücken werden jetzt korrekt abonniert und verarbeitet
Im Rahmen dieser Arbeit wurden einige Optimierungen vorgenommen: 1. Das Ergebnis von Vergleichen von Parametern wird über die Aufrufgrafik an andere zusammensetzbare Funktionen weitergegeben. Dies führt zu weniger Vergleichen während der Laufzeit, verringert die Größe der Slot-Tabelle und führt häufiger das Überspringen zusammensetzbarer Funktionen, die zuvor nicht übersprungen wurden.2 Parameter, die zum Zeitpunkt der Kompilierung als „statisch“ eingestuft werden, werden nicht mehr in der Laufzeit verglichen oder gespeichert. Dies reduziert die Anzahl der Vergleiche und verringert die Größe der Slot-Tabelle. 3. Die Ablaufstruktur des Funktionskörpers wird verwendet, um die Anzahl der generierten Gruppen zu minimieren. Dies reduziert die Größe der Slottabelle und führt zu weniger Arbeit für die Laufzeit. 4. Nicht verwendete Weiterleitungs- und Empfängerparameter für Funktionen werden bei der Bestimmung der Überspringbarkeit der Funktion nicht berücksichtigt, wenn sie nicht innerhalb des Hauptteils der Funktion verwendet werden.
Die meisten funktionsgefährdenden Änderungen betreffen APIs, auf die der Compiler direkt abzielt. Die typische Verwendung des Editors ist davon nicht betroffen: 1. Composer::startExpr wurde entfernt. 2. Composer::endExpr wurde entfernt. 3. Composer::call wurde eingestellt. 4. Die Nicht-varargs-Überlasten von
key
wurden entfernt. Verwende ab sofort dievararg
-Version. 5. Die Pivotal-Anmerkung wurde eingestellt. Du kannstkey
als Ersatz verwenden. 6. „ScopeUpdateScope::updateScope“ wurde geändert und erwartet nun eine „Function3“ anstelle von „Function1“. 7. „renewableFunction“ und „renewableFunctionN“ wurden um zusätzliche Parameter für die Kompilierungszeit aktualisiert (I60756, b/143464846).Die eingestellten LayoutAlign-Modifikatoren wurden entfernt. (I10877)
"RepaintBoundary" wurde zugunsten von DrawLayerModifier (I00aa4) entfernt.
Button, FloatingActionButton und Clickable haben jetzt einen separaten
enabled
-Parameter. Einige der Parameter der Schaltfläche wurden umbenannt oder neu angeordnet. (I54b5a)Ersetzen von ButtonStyle durch eigene Funktionen und entfernte Textüberlastung (Zeichenfolge). Informationen zur Nutzung finden Sie in den aktualisierten Beispielen. (If63ab, b/146478620, b/146482131)
Nicht abwärtskompatible Änderungen an der Ambients API. Weitere Informationen finden Sie in der Protokoll- und
Ambient<T>
-Dokumentation (I4c7ee, b/143769776).Das Verhalten von „TextDirection“ wurde durch LayoutDirection geändert. Wenn „LayoutDirection“ also RTL ist, ist die Standardeinstellung für TextDirection RTL. Bisher war es TextDirection.ContentOrLtr/Rtl (I4e803).
Fehlerkorrektur: Wenn Schriftstärke und -stil in einem AnnotatedString verschachtelt sind, wird der Text nicht richtig gerendert. (I77a9d)
Fügt häufig verwendete Parameter zu Text() hinzu. 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 einfach direkt angeben: Text(textAlign = TextAlign.Center) (I82768).
Das Modul „ui-android-text“ wurde in „ui-text-android“ (I68cbe) umbenannt