Benutzeroberfläche erstellen

Grundlegende Komponenten der Compose-Benutzeroberfläche, die für die Interaktion mit dem Gerät erforderlich sind, einschließlich Layout, Zeichnen und Eingabe.
Letzte Aktualisierung Stabile Version Release Candidate Beta-Ausgabe Alphaversion
30. Oktober 2024 1.7.5 - - 1.8.0-alpha05

Struktur

Compose ist eine Kombination aus sieben Maven-Gruppen-IDs in androidx. Jede Gruppe enthält eine gezielte Teilmenge von Funktionen, für die jeweils eigene Release-Notes gelten.

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

GruppeBeschreibung
compose.animationSie können Animationen in ihren Jetpack Compose-Anwendungen erstellen, um die Nutzerfreundlichkeit zu verbessern.
compose.compiler@Composable-Funktionen transformieren und Optimierungen mit einem Kotlin-Compiler-Plug-in aktivieren
compose.foundationErstellen Sie Jetpack Compose-Anwendungen mit vorgefertigten Bausteinen und erweitern Sie die Grundlage, um eigene Designsystem-Elemente zu erstellen.
compose.materialJetpack Compose-UIs mit einsatzbereiten Material Design-Komponenten erstellen Dies ist der übergeordnete Einstiegspunkt von Compose. Er wurde entwickelt, um Komponenten bereitzustellen, die denen auf www.material.io entsprechen.
compose.material3Erstellen Sie Jetpack Compose-UIs mit Material Design 3-Komponenten, der nächsten Weiterentwicklung von Material Design. Material 3 umfasst aktualisierte Themen und Komponenten sowie Personalisierungsfunktionen von Material You wie dynamische Farben. Es wurde so konzipiert, dass es zum neuen visuellen Stil und zur System-UI von Android 12 passt.
compose.runtimeGrundlegende Bausteine des Programmiermodells und der Statusverwaltung von Compose sowie die Kernlaufzeit, auf die das Compose-Compiler-Plug-in ausgerichtet ist.
compose.uiGrundlegende Komponenten der Compose-Benutzeroberfläche, die für die Interaktion mit dem Gerät erforderlich sind, einschließlich Layout, Zeichnen und Eingabe.

Abhängigkeiten deklarieren

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

Fügen Sie der Datei build.gradle für Ihre App oder Ihr Modul die Abhängigkeiten für die erforderlichen Artefakte hinzu:

Cool

dependencies {
    implementation "androidx.compose.ui:ui:1.7.1"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.ui:ui:1.7.1")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

Feedback

Ihr Feedback hilft uns, Jetpack zu verbessern. Bitte teilen Sie uns mit, wenn Sie neue Probleme feststellen oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie ein neues erstellen. Sie können einem vorhandenen Problem Ihre Stimme geben, indem Sie auf die Schaltfläche mit dem Stern klicken.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung.

Version 1.8

Version 1.8.0-alpha05

30. Oktober 2024

androidx.compose.ui:ui-*:1.8.0-alpha05 wird veröffentlicht. Version 1.8.0-alpha05 enthält diese Commits.

Neue Funktionen

In dieser Version ist die Funktion „Autofill“ hinter einem Feature-Flag verfügbar. Wir arbeiten an der Leistungsoptimierung und freuen uns über frühzeitiges Feedback zu den APIs. Die APIs werden sich voraussichtlich vor der Veröffentlichung als stabil erweisen.

  • Wenn Sie Autofill aktivieren möchten, setzen Sie ComposeUiFlags.isSemanticAutofillEnabled in onCreate auf „wahr“ und verwenden Sie den neuesten Compose-Snapshot.
  • Diese Version von Autofill unterstützt das manuelle Speichern von Anmeldedaten, die Funktion „Sicheres Passwort vorschlagen“ und die Navigation. Außerdem wird die automatische Eingabe unterstützt, wenn ein Feld, das automatisch ausgefüllt werden kann, den Fokus erhält oder wenn die automatische Eingabe über die Textsymbolleiste bei Textkomponenten ausgelöst wird. Die Komponente wird hervorgehoben, um anzuzeigen, dass die automatische Vervollständigung abgeschlossen ist.

API-Änderungen

  • Ändern Sie die Autofill-Oberfläche so, dass sie der Struktur expect/actual entspricht. (I22dce)
  • Einführung von CompositionLocal, mit dem sich der Farbton der Hervorhebung für die erfolgreiche Autofill-Füllung ändern lässt. (I32092)
  • Die Modifier.onRectChanged API wurde hinzugefügt. Mit dieser API können Sie die verhältnismäßige Position und Größe eines LayoutNode zum Stamm/Fenster/Bildschirm abonnieren. Die API löst viele Anwendungsfälle im Vergleich zum vorhandenen onGloballyPositioned-Modifikator, allerdings mit viel geringerem Aufwand. Die API verfügt über Funktionen, mit denen der Callback gemäß den Anforderungen des jeweiligen Anwendungsfalls entprallen und gedrosselt werden kann. (Id28c7, b/372765423, b/372757007, b/372994338)
  • Der Autofill-Manager wurde um die commit()- und cancel()-APIs erweitert, mit denen Nutzer neu eingegebene Anmeldedaten speichern können. (I2da00)
  • Einführung einer neuen AutofillManager-Benutzeroberfläche, mit der sich der Autofill-Vorgang für Nutzer optimieren lässt, und eines isSemanticAutofillEnabled-Flags zum Aktivieren dieser neuen Version von Autofill. (I9d484)
  • Es wurde die Modifier.onRectChanged API hinzugefügt. Diese API ermöglicht das Abonnieren der relativen Stamm-/Fenster-/Bildschirmposition und Größe von LayoutNode. Die API löst viele Anwendungsfälle, für die auch der vorhandene onGloballyPositioned-Modifikator verwendet wird. Sie ist jedoch mit viel weniger Overhead verbunden und bietet Funktionen zum Entfernen von Verzögerungen und zum Drosseln des Callbacks je nach Anwendungsfall. (I3c8fa)
  • Fügen Sie semantische Eigenschaften und Datentypen für eine erweiterte Autofill-Unterstützung hinzu. (I52c7d)
  • Alle Methoden im AnnotatedString-Builder sind jetzt nicht mehr experimentell (Ia89c8, b/261561823)

Fehlerkorrekturen

  • In die Compose-Funktion eingebettete Ansichten können jetzt Drehrad-Ereignisse empfangen, wenn sie den Fokus haben (I4d53a, b/320510084)
  • Es wurde ein Problem behoben, bei dem verschiedene Ressourcentypen bei Konfigurationsänderungen nicht aktualisiert wurden (Ia9b99, b/352336694).
  • Ein Problem wurde behoben, durch das TextField auf bestimmten älteren Sony-Geräten nicht richtig funktionierte, wenn die japanische POBox-Tastatur verwendet wurde. (Ia9b99, b/373743376)
  • Problem behoben, bei dem Dialogfelder unten auf dem Bildschirm statt zentriert angezeigt wurden (Ia2ec, b/373093006)
  • Bei der Targeting API 35 und höher wird decorFitsSystemWindows für Dialogfelder nicht mehr erzwungen. (Ibc94, b/364492593)
  • Absturz beim Verschieben von Ebenen zwischen Fenstern behoben (z.B. Dialogfeld und Hauptinhalt) (I675ba, b/330955281)

Version 1.8.0-alpha04

16. Oktober 2024

androidx.compose.ui:ui-*:1.8.0-alpha04 wird veröffentlicht. Version 1.8.0-alpha04 enthält diese Commits.

API-Änderungen

  • Fügt DelegatableNode#onDensityChange- und DelegatableNode#onLayoutDirectionChange-Callbacks hinzu, um das Aktualisieren des Knotenstatus zu ermöglichen, wenn sich diese ändern (I04f3e, b/340662451).
  • Hier wird WindowInfo#containerSize hinzugefügt, um die Größe des Inhaltscontainers des aktuellen Fensters anzugeben. Diese kann mit LocalWindowInfo abgerufen werden. (Idc38c, b/369334429, b/360343819)
  • Es wurde ein Fehler behoben, bei dem verschachtelte scrollbare Elemente während eines laufenden Wischvorgangs aus dem Knotenbaum entfernt wurden. Diese Knoten brechen jetzt den Wisch ab und senden das onPostFling-Ereignis mit der verbleibenden Geschwindigkeit korrekt. Außerdem führen wir das Flag NewNestedScrollFlingDispatchingEnabled ein, um das Verhalten bei Regressionen zu steuern. Das Flag wird vor der Betaphase entfernt. (I05c37, b/371168883)
  • Einführung von PointerInputModifierNode#touchBoundsExpansion, mit dem sich die Touch-Grenzen eines Eingabemodifikators mit einem einzelnen Zeiger vergrößern lassen. (Iccf02, b/335339283)
  • Fügt WindowInfo#containerSize hinzu, um die Größe des Inhaltscontainers des aktuellen Fensters anzugeben. Dies kann mit LocalWindowInfo abgerufen werden. (I27767, b/369334429, b/360343819)
  • Entfernen Sie readOnly aus TextFields, um die Version an die stabile Foundation-Version anzupinnen. (I3aaba)
  • Für Paragraph und ParagraphIntrinsics wird jetzt eine Liste aller Anmerkungen verwendet, die auf die AnnotatedString angewendet wurden. Bisher gab es nur eine Liste von SpanStyles (I12f80).

Fehlerkorrekturen

  • Aktualisierung der Behandlung von Absätzen in AnnotatedString. Vorher konnten Sie nur Absätze erstellen, die sich nicht überschneiden. AnnotatedString ermöglicht jetzt vollständig überlappende Absätze, die zusammengefügt werden, und verschachtelte Absätze. In diesem Fall wird der äußere Absatz an den Grenzen des inneren Absatzes aufgeteilt und der Stil des inneren Absatzes wird mit dem Stil des äußeren Absatzes zusammengeführt (Ic9554).
  • Behebung eines Absturzes in AnnotatedString bei einer LinkAnnotation mit einer Länge von null. (89aac6)

Version 1.8.0-alpha03

2. Oktober 2024

androidx.compose.ui:ui-*:1.8.0-alpha03 wird veröffentlicht. Version 1.8.0-alpha03 enthält diese Commits.

API-Änderungen

  • Aktualisierung der Kotlin-Version auf 1.9 (I1a14c)
  • Es wurde eine neue semantische Rolle namens „Karussell“ eingeführt, um das Listenverhalten in Pagern für A11Y-Dienste zu emulieren. (Id354b, b/354109776, b/239672673)
  • Benennen Sie invisibleToUser() in hideFromAccessibility um. Die Funktion bleibt gleich. Weitere Informationen finden Sie in der Dokumentation. (Ib43a3)

Fehlerkorrekturen

  • Aktualisierung der Dokumente für den Modifikator SensitiveContent (Ib0442)
  • Ein Problem wurde behoben, durch das bestimmte allgemeine Umrissclips in Kombination mit Höhenschatten bei einigen Android-Versionen ignoriert wurden.
  • Ein Problem wurde behoben, bei dem bei bestimmten Android-Versionen leere Clips angewendet wurden, wenn ein generisch geformter Clip angegeben wurde.
  • Ein Fehler wurde behoben, der ausgelöst wurde, wenn der IME in einer externen Ansicht aktiv ist und die Aktion "Weiter" verwendet wurde, um den Fokus auf ComposeView zu setzen. Das Verhalten von clearFocus() entspricht dem Verhalten von Ansichten bei API < 28, bei dem clearFocus() dazu führen kann, dass die Standardansicht hervorgehoben wird.
  • Ein Problem wurde behoben, durch das Elemente in LazyList an nicht verbundenen Knoten platziert wurden. Dazu wurde die Verwaltung der Unterkomposition für verschiedene Layoutdurchläufe getrennt.
  • Ein Problem, bei dem die Softwaretastatur flackerte, wenn der Fokus von einer TextField zu einer EditText oder einem anderen ansichtsbasierten Editor wechselte, wurde behoben.
  • Verschachtelte Scrollknoten senden jetzt onPostFling-Ereignisse richtig, nachdem sie getrennt wurden.
  • Allgemeine Leistungsverbesserungen

Version 1.8.0-alpha02

18. September 2024

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

API-Änderungen

  • TextOverflow.StartEllipsis und TextOverflow.MiddleEllipsis sind jetzt verfügbar. Damit können Sie Auslassungspunkte am Anfang oder in der Mitte der Zeile des Texts mit einer Zeile platzieren. (I38913, b/185418980)

Fehlerkorrekturen

  • Fehler im Dialogfeld dismissOnClickoutside beheben (39a3d, b/364508685)
  • Schatten von Dialoginhalten dürfen nicht abgeschnitten werden (e8e2f, b/363027803)
  • Fehler behoben, der beim Wechsel zwischen „Schreiben“ und „Ansicht“ bei der Fokussuche aufgetreten ist (58377, b/350534714)

Externer Beitrag

  • Für AlignmentLines Map werden jetzt die konkreten Typen VerticalAlignmentLine oder HorizontalAlignmentLine akzeptiert. (I02912)
  • Neue allgemeine ByteArray.decodeToImageBitmap(): ImageBitmap-Methode. (I83c21)

Version 1.8.0-alpha01

4. September 2024

androidx.compose.ui:ui-*:1.8.0-alpha01 wird veröffentlicht. Version 1.8.0-alpha01 enthält diese Commits.

Version 1.7

Version 1.7.5

30. Oktober 2024

androidx.compose.ui:ui-*:1.7.5 wird veröffentlicht. Version 1.7.5 enthält diese Commits.

Fehlerkorrekturen

  • Probleme behoben, bei denen Höhen und Ausschnitte mit benutzerdefinierten Umrissen nicht richtig gerendert wurden.
  • Behebt einen Textabsturz, der mit einem LinkAnnotation mit Nullbreite auftritt. (Ic1e2e)
  • Behebung eines Fehlers bei der Ansage in Talkback der Schaltfläche, wenn sie als anklickbarer Text-Composeable erstellt wurde. (I1f588)

Version 1.7.4

16. Oktober 2024

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

Version 1.7.3

2. Oktober 2024

androidx.compose.ui:ui-*:1.7.3 wird veröffentlicht. Version 1.7.3 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem die Angabe eines generischen Umriss-Clips bei bestimmten Android-Versionen zu einer leeren Clip-Begrenzung führte.
  • Ein Fehler wurde behoben, der ausgelöst wurde, wenn der IME in einer externen Ansicht aktiv ist und die Aktion "Weiter" verwendet wurde, um den Fokus auf ComposeView zu setzen. Das Verhalten von clearFocus() entspricht dem Ansichtsverhalten bei der API < 28, bei der clearFocus() dazu führen kann, dass die Standardansicht fokussiert wird.
  • Ein Problem wurde behoben, bei dem eine falsche placeOrder für die Vorschau-Ungültigmachung verwendet wurde. Dadurch wurde auch ein Grenzfall behoben, bei dem die Vorschau-Platzierung übersprungen wurde.

Version 1.7.2

18. September 2024

androidx.compose.ui:ui-*:1.7.2 wird veröffentlicht. Version 1.7.2 enthält diese Commits.

Fehlerkorrekturen

  • Verbesserte Leistung der Knoteninformationen und Semantikereignisse für Bedienungshilfen durch Entfernen des ausführlichen Tracings. (I89156, b/362530618)
  • ComposeView stürzt nicht mehr ab, wenn eine außergewöhnlich große Messgröße übergeben wird (da5db, b/347036173)
  • Ein Problem mit dem Screenreader als Bedienungshilfe wurde behoben, bei dem keine LiveRegion-Ankündigungen für Schaltflächen angezeigt wurden. (f66fa7, b/348590026)

Version 1.7.1

10. September 2024

  • An Android-Artefakten gibt es keine Änderungen. -desktop Artefakte wurden entfernt und -jvmStubs und -linuxx64Stubs Artefakte hinzugefügt. Keines dieser Ziele ist zur Verwendung vorgesehen. Sie dienen als Platzhalter für die Arbeit mit Jetbrains Compose.

Version 1.7.0

4. September 2024

androidx.compose.ui:ui-*:1.7.0 wird veröffentlicht.

Wichtige Änderungen seit Version 1.6.0

Wichtige Änderungen in Version 1.7.0 werden in diesem Blogpost beschrieben.

Version 1.7.0-rc01

21. August 2024

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

Wichtige Änderungen

  • Das ui:ui-Modul erzwingt jetzt die Anforderung einer Mindestversion von „foundation:foundation“ auf mindestens 1.7.0-rc01. Dies soll eine Verhaltensinkompatibilität zwischen UI und Foundation in Bezug auf NestedScrollSource-Änderungen beheben, die zu Beginn von 1.7.0-alpha01 aufgetreten sind.

Version 1.7.0-beta07

7. August 2024

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

Fehlerkorrekturen

  • Die SemanticsNodeInteraction-Funktionen performTextReplacement, performTextInput und performTextClearance im Zusammenhang mit Texteingabe geben jetzt Assertion-Fehler aus, wenn sie im schreibgeschützten TextFields aufgerufen werden. (I4ae8f)

Version 1.7.0-beta06

24. Juli 2024

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

Version 1.7.0-beta05

10. Juli 2024

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

Fehlerkorrekturen

  • Ein Fehler wurde behoben, bei dem TextField bei einem Wechsel der Softwaretastatur erst dann Eingaben über die neue Tastatur annahm, wenn der Fokus verloren ging und wieder wiederhergestellt wurde.
  • Es wurde ein Problem behoben, bei dem Versuche, Ebeneninhalte zu speichern, beim Rendern mit SurfaceView-Inhalten unbeabsichtigte Nebeneffekte verursachten.

Version 1.7.0-beta04

26. Juni 2024

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

Fehlerkorrekturen

  • Vermeidung von Abstürzen beim Messen sehr langer Textzeilen (z. B. 10.000 Zeichen) (8157ab)
  • Deaktivieren Sie die Unterstützung für Software-Rendering für die GraphicsLayer API. (35ddd8)
  • Behebung eines Absturzes in der Ebenenpersistenzlogik. (70b13e)
  • Die Optimierung der Wiederverwendung von Ebenenobjekten wurde rückgängig gemacht, da sie zu Problemen beim Rendern führte. (70b13e)

Version 1.7.0-beta03

12. Juni 2024

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

Version 1.7.0-beta02

29. Mai 2024

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

API-Änderungen

  • SemanticsProperties.Editable wurde in IsEditable umbenannt und SemanticsPropertyReceiver.editable in den Wert isEditable. Die Property ist jetzt ein boolescher Wert und wird immer über Textfelder angegeben. (I8acd8)
  • Parameter für Benchmarks für Barrierefreiheit umbenennen (I3d440)
  • Aktualisierte API für das Stilisieren von Links: TextLinkStyles ist jetzt Teil des Konstruktors LinkAnnotation und der Methode AnnotatedString.fromHtml (I90b2b). Außerdem wurde das TextDefaults aus dem Material entfernt (I5477b).

Fehlerkorrekturen

  • LayoutCoordinates.introducesFrameOfReference in LayoutCoordinates.introducesMotionFrameOfReference umbenannt, um den Zweck besser zu verdeutlichen. Die zugehörige Funktion wurde umbenannt, um Koordinaten anhand dieses Flags zu berechnen. (I3a330)

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 in performCustomAccessibilityActionWithLabel und performCustomAccessibilityActionWhere in performCustomAccessibilityActionWithLabelMatching umbenannt. (I5387f)
  • AnnotatedString.hasEqualsAnnotations heißt jetzt hasEqualAnnotations (I685c0)
  • Die API zum Abrufen von Material-Links im Text wurde aktualisiert. Insbesondere wurden die Methoden aus der TextDefaults zum Erstellen von themenbezogenen LinkAnnotations und zum Parsen von HTML mit themenbezogenen Links entfernt. Stattdessen wurde eine TextLinkStyles-Klasse hinzugefügt, mit der die Links als Parameter für die zusammensetzbare Textfunktion gestaltet werden können. (I31b93)

Fehlerkorrekturen

  • Fehlerkorrekturen für zusätzliche Anwendungsfälle beim dynamischen Hinzufügen von Zeigereingabemodifikatoren während der Ereignisse 63e1504

Version 1.7.0-alpha08

1. Mai 2024

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

API-Änderungen

  • Unterstützung für veränderliche Formimplementierungen hinzugefügt. Shape#createOutline wird jetzt in Grafikebenen beobachtet. Wenn Sie Statuswerte darin lesen, werden bei einer Statusänderung Ungültigkeiten verursacht, was für eine bessere Leistung bei Formanimationen sorgt. (Id1629, b/326070216)
  • isPositionedByParentWithDirectManipulation wurde in introducesFrameOfReference umbenannt. Beachten Sie, dass dies jetzt den umgekehrten Effekt hat. Das bedeutet, dass die meisten LayoutCoordinates standardmäßig einen Referenzrahmen einführen und das Attribut nur bei direkter Bearbeitung den Wert „false“ hat. Wenn Sie die Position nur mit Elementen abfragen möchten, die einen Bezugspunkt einführen, verwenden Sie positionInLocalFrameOfReference(...). Oder positionInLocalLookaheadFrameOfReference von einem LookaheadScope. (Ifc5f7)
  • LookaheadScope APIs wurden stabil gemacht (I21507)
  • Aktionslambda für getScrollViewportLength gemäß Feedback des API-Rates ändern (Ibc74a)
  • Die GraphicsLayer-Outline-APIs wurden aktualisiert, sodass sie jetzt Float-Parameter statt Int-Parameter verwenden. UnsetOffset/UnsetSize IntSize-Sentinel-Werte wurden durch bereits vorhandene „Unspezifiziert“-Konstanten für floatbasierte Inline-Klassen für „Offset“ und „Size“ ersetzt (I2fb03, b/333863462)
  • Bei der Eingabe von Mausklicks während von Tests akzeptieren MouseInjectionScope.click(), MouseInjectionScope.doubleClick(), MouseInjectionScope.tripleClick() und MouseInjectionScope.longClick() jetzt einen button: MouseButton-Parameter, um sie universeller einsetzbar zu machen. Der Standardwert für alle Methoden ist MouseButton.Primary. (I31a23, b/190493367, b/261439695)
  • onClicked wurde in onClick innerhalb von LinkInteractionListener umbenannt. (Iaa35c)
  • Benennen Sie TextInclusionStrategy.isInside in isIncluded um. Der Rückgabetyp von Paragraph/MultiParagraph#getRangeForRect() darf keine Nullwerte enthalten. (I51f26)

Fehlerkorrekturen

  • Problem beim Erstellen langer Screenshots für scrollende Container mit reverseScrolling=true behoben (I7c59c)

Externer Beitrag

  • Unterstützung für das Vorabladen von Elementen in verschachtelten LazyLists hinzugefügt (z.B. eine LazyColumn, die verschachtelte LazyRows rendert). Durch diese Änderung werden bei diesen LazyLists voraussichtlich weniger Frame-Drops beim Scrollen auftreten. Standardmäßig werden die ersten beiden verschachtelten Elemente vorab abgerufen. Dieses Verhalten kann jedoch mit den neuen LazyLayoutPrefetchStrategy(nestedPrefetchItemCount)- und LazyListPrefetchStrategy#onNestedPrefetch-APIs gesteuert werden. (I51952)

Version 1.7.0-alpha07

17. April 2024

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

API-Änderungen

  • ClickableText wurde verworfen. Um dem Text Links hinzuzufügen, erstellen Sie ein AnnotatedString mit einem LinkAnnotation, das Ihrem Link entspricht, und übergeben Sie dieses AnnotatedString an die zusammensetzbare Textfunktion. (I34d4b, b/323346994)
  • Einführung von ViewConfiguration.HandwritingGestureLineMargin für Handschriftgesten Unterstützung der JoinOrSplit-Geste für BasicTextField (Ie6e13, b/325660505)
  • FocusProperties.enter und FocusProperties.exit sind keine experimentellen Funktionen mehr. FocusDirection.Enter und FocusDirection.Exit sind keine experimentellen Funktionen mehr. FocusRequester.Cancel ist nicht mehr experimentell (I461a1, b/261564106)
  • Wenn Sie Layoutkoordinaten abfragen, können Sie jetzt das Argument excludeDirectManipulationOffset verwenden, um den Versatz auszuschließen, der von übergeordneten Layouts festgelegt wurde, die ihre untergeordneten Elemente mit Placeable.PlacementScope.withDirectManipulationPlacement platziert haben. Ebenso können die Elemente in einem Layout, bei dem sich die Position der untergeordneten Elemente häufig ändert, jetzt mit withDirectManipulationPlacement platziert werden (z. B. Scroll, standardmäßig implementiert). Dadurch sind approachLayout-basierte Animationen intuitiver, da Sie jetzt unterscheiden können, welcher Offset animiert werden soll und was direkt angewendet werden soll, wenn Sie sich für die Animation entscheiden. (I60ec7)
  • 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 durch UserInput und SideEffect ersetzt, um die erweiterte Definition dieser Quellen zu ermöglichen, die jetzt Animationen (Seiteneffekt) sowie Mausrad und Tastatur (UserInput) umfassen. (I40579)
  • ApproachLayoutModifierNode und Modifier.approachLayout sind jetzt stabil. Das alte isMeasurementApproachComplete() bzw. isPlacementApproachComplete() wird durch die neuen isMeasurementApproachInProgress() und isPlacementApproachInProgress() ersetzt.
  • Die Einstellung „intermediateLayout“ wurde entfernt. (I3e91c)
  • Benenne GraphicsLayer#buildLayer in „record“ um, um die Methoden „begin/endRecording“ von APIs zu spiegeln, die von der Displayliste unterstützt werden, z. B. RenderNode und „Picture“.
  • rememberGraphicsLayer wurde aktualisiert, um rememberObserver zu nutzen. (I312c1, b/288494724, b/330758155)
  • UrlAnnotation wurde verworfen. Verwenden Sie stattdessen LinkAnnotation.Url. Wenn Sie Material-Designs verwenden, erstellen Sie mit einem TextDefaults-Objekt die Anmerkung mit angewendeten Material-Designs (I8d180, b/323346545).
  • Für Textlinks gibt es jetzt neben dem normalen Stil auch einen Stil für den gedrückten Zustand, den Hover-Zustand und den Fokus-Zustand (I5f864, b/139312671)
  • String.parseAsHtml wurde in AnnotatedString.Companion.fromHtml umbenannt. (I43dcd)
  • Stilargumente (linkStyle, focusedLinkStyle, hoveredLinkStyle) und ein Link-Interaktions-Listener wurden der Methode parseAsHtml hinzugefügt. Wenn der HTML-getaggte String mit <a>-Tags geparst wird, erstellt die Methode für jedes dieser Tags ein LinkAnnotation.Url und übergibt die Stilobjekte und den Link-Interaktions-Listener an jede Annotation. (I7c977)
  • LinkAnnotation verwendet jetzt die zustandsbasierten Stilargumente und einen LinkInteractionListener. Fügen Sie diese Anmerkung dem AnnotatedString hinzu, um einen Hyperlink zu erhalten. Wenn Sie focusedState und/oder hoveredState übergeben, können Sie das visuelle Element configuration für Links definieren, wenn sie den Fokus haben und/oder der Mauszeiger darauf ruht. (I81ce4, b/139312671)
  • Für ImeOptions.hintLocales können keine Nullwerte mehr eingegeben werden. Wenn Sie eine leere Gebietsschemaliste übergeben möchten, verwenden Sie LocaleList.Empty. (Ic5bc4)

Fehlerkorrekturen

  • Es werden fehlerhafte/beschädigte Verlaufsereignisdaten fehlerfrei verarbeitet (fehlerhafte Offset-Daten werden ignoriert).
  • Behebt unerwartete Zeigerereignisse, wenn ein Zeigereingabe-Modifikator während eines aktiven Zeigereingabe-Ereignisstreams dynamisch vor einem anderen Zeigereingabe-Modifikator hinzugefügt wird (z. B. zwischen einem Hover-Ereignis und einem Hover-Ende [Maus/Stift]).

Version 1.7.0-alpha06

3. April 2024

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

Neue Funktionen

  • Es wurde die parseAsHtml-Methode für Strings mit benutzerdefinierten Stilen hinzugefügt: Sie ermöglicht das Konvertieren eines mit HTML-Tags markierten Strings in AnnotatedString. Beachten Sie, dass nicht alle Tags unterstützt werden. Aufzählungslisten können beispielsweise noch nicht angezeigt werden. (I84d3d, I30626, b/139326648)
  • Es wurde eine experimentelle Unterstützung für lange Screenshots in Scroll-Containern für die Nachrichtenerstellung mithilfe der offiziellen Android API (ScrollCaptureCallback) implementiert. Diese Funktion ist experimentell und wird derzeit möglicherweise nicht in allen Fällen korrekt verarbeitet. Aus diesem Grund ist die Funktion derzeit standardmäßig deaktiviert. Wenn Sie die Funktion aktivieren möchten, setzen Sie das Flag ComposeFeatureFlag_LongScreenshotsEnabled auf „true“. (I2b055, b/329296471)

API-Änderungen

  • fun ClipEntry.getMetadata() wird in val ClipEntry.clipMetadata geändert. (I50155)
  • Die Funktionen ClipboardManager.getClipMetadata und ClipboardManager.hasClip wurden entfernt. Verwende clipEntry.getMetadata(), um die Metadaten des aktuellen Clipeintrags zu lesen. Prüfen Sie auch, ob das Ergebnis von ClipboardManager.getClip null ist, um zu sehen, ob sich in der Zwischenablage ein aktueller Clip befindet. (I50498)
  • Sie können jetzt GraphicsLayer-Objekte an placeable.placeWithLayer()-Funktionen übergeben (I1b22f)
  • Für ClipboardManager.setClip wird jetzt „null“ akzeptiert, um die Zwischenablage zu leeren. (I7d2e9)
  • Es wurden Ressourcen-IDs hinzugefügt, um Ansichten auszublenden, die als Implementierungsdetails im Build-Tool verwendet werden (I99531)
  • Die GraphicsLayer#toImageBitmap-Sperrungsmethode wurde hinzugefügt, um das Rendern des Inhalts einer Bitmap in eine GraphicsLayer zu unterstützen. Dies ist ein hardwaregestützter Renderingvorgang auf API-Level 22 und höher, der von über 99% aller Android-Geräte unterstützt wird. Unter Android API-Level 21 wird auf Software-Rendering zurückgegriffen. (I9e114)
  • Hilfsmethode zum Konvertieren einer Android-RectF in ComposeRect (I39925, b/325660505)
  • Alle KeyboardOptions-Parameter haben jetzt standardmäßig keinen Wert. Die Methode KeyboardOptions.merge wurde hinzugefügt.
  • KeyboardOptions.autoCorrect in autoCorrectEnabled umbenannt und als „nullable“ (mit Nullwert zulässig) gekennzeichnet. „Null“ gibt an, dass kein Wert angegeben wurde. (Ia8ba0, b/295951492)
  • Die Variante „BasicTextField(state)“ und „BasicSecureTextField“ verwenden jetzt KeyboardActionHandler anstelle von KeyboardActions, um Aktionen über die Softwaretastatur zu verarbeiten. (I58dda)

Version 1.7.0-alpha05

20. März 2024

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

Neue Funktionen

  • Einführung der neuen GraphicsLayer API zur Aufzeichnung von Zeichenbefehlen in einer Anzeigeliste sowie zusätzlicher Attribute, die sich auf das Rendern der Anzeigeliste auswirken. So können Sie eine komplexe Szene in kleinere Teile unterteilen, die unabhängig voneinander aktualisiert werden können, ohne die gesamte Szene neu erstellen zu müssen. Transformationen an einer GraphicsLayer können ohne erneutes Aufzeichnen der Anzeigeliste vorgenommen werden. Im Gegensatz zu Modifier.graphicsLayer ermöglicht GraphicsLayer das Rendern von zusammensetzbaren Inhalten an anderer Stelle und ist nützlich bei animierten Anwendungsfällen, bei denen Inhalte in verschiedenen Szenen gerendert werden sollen.

API-Änderungen

  • GraphicsLayer.draw(Canvas) ist keine öffentliche API mehr. Verwenden Sie stattdessen die Erweiterungsfunktion DrawScope.drawLayer(GraphicsLayer), um die Ebene zu zeichnen. (I7a7c0)
  • restrictedConstraints() in zwei Methoden aufteilen: fitPrioritizingWidth() und fitPrioritizingHeight() (I6d7fd)
  • Einführung des HardwareCanvas-Stubs für die Verwendung mit Android L (I1c3b5, b/288494724)
  • Aktualisieren Sie das Compose-Framework, um eine lokale GraphicsContext-Komposition bereitzustellen, und aktualisieren Sie die Implementierungen von Owner, DelegateableNode und drawWithCache-Modifizierer, um Zugriff auf die GraphicsContext für den befristeten Zugriff bereitzustellen, der GraphicsLayer-Instanzen automatisch beseitigt, wenn Modifizierer entfernt werden. (I64a2f, b/288494724)
  • Einführung von InterceptPlatformTextInput für das Schreiben von Low-Level-IME-Tests und anderen Low-Level-IME-Anwendungsfällen. PlatformTextInputTestOverride wurde eingestellt. (I862ed, b/322680547)
  • Die Erweiterungsfunktion „GraphicsLayer.setOutline(Outline)“ wurde hinzugefügt. (Ib81f4)
  • Einführung des GraphicsContext-Funktionskonstruktors zum Erstellen einer Fabrik zum Erstellen von GraphicsLayer-Instanzen (Ib98d6, b/288494724)
  • Die GraphicsLayer API wurde freigegeben, um Entwicklern mehr Flexibilität beim Erfassen von Zeichenbefehlen zu bieten, die an anderer Stelle verwendet werden können. Außerdem können auf das Endergebnis verschiedene visuelle Effekte angewendet werden. (I80245, b/288494724)
  • Einführung von Paragraph#getRangeForRect, das einen Textbereich zurückgibt, der von einem bestimmten Rechteck abgedeckt wird. (Iee516, b/325660505)
  • Die experimentelle Überschreibung von BasicText durch das Argument onLinkClicked wurde entfernt. Eine Ersatz-API für die Unterstützung von Hyperlinks wird in Zukunft folgen. (I107d5)

Fehlerkorrekturen

  • Die erwartete/tatsächliche API-Definition GraphicsLayer wurde hinzugefügt, um die Erfassung und Wiedergabe von Zeichenbefehlen mit optionalen visuellen Effekten und Transformationen zu unterstützen. Einführung der GraphicsContext-Oberfläche zur Verwaltung von Grafikabhängigkeiten, einschließlich Erstellung und Verwaltung von GraphicsLayer-Instanzen. (I4a8d6, b/288494724)
  • Ein Interoperabilitätsproblem mit der 1D-Fokussuche wurde behoben, bei dem der Fokus in einer ComposeView hängen blieb, die in andere Ansichten eingebettet war. (I08fd4)

Externer Beitrag

  • LocalLifecycleOwner wurde von der Compose-Benutzeroberfläche zu lifecycle-runtime-compose verschoben, damit die Compose-basierten Hilfs-APIs auch außerhalb der Compose-Benutzeroberfläche verwendet werden können. Vielen Dank an Jake Wharton für den Beitrag. (I6c41b, b/328263448)
  • Stellen Sie für alle schiefwinkligen Ausrichtungsuntertypen konsistent Schieberegler für die Voreingenommenheit bereit. (I69f0f, b/328088992)

Version 1.7.0-alpha04

6. März 2024

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

API-Änderungen

  • Unterstützung der Eingabe per Eingabestift für BasicTextField2 auf Geräten ab Android U (I002e4)
  • In dieser CL fügen wir die semantische Aktion GetScrollViewportLength hinzu, damit wir Informationen zu den Komponenten, die in Compose gescrollt werden, an das A11Y-System weiterleiten können. Diese CL gilt auch für die Verwendung dieser Property in scrollbaren Foundation-Listen. (Ic5fa2)
  • FocusRequester.createRefs ist jetzt stabil (I4d92c, b/261436820).
  • Einführung von DelegatableNode.requireView(), damit Modifikatorknoten die aktuelle Android-View abrufen können, ohne eine Komposition lokal zu lesen. (I40768)
  • Neue API Path.reverse() zum Umkehren der Richtung eines Pfads (I36348)
  • hintLocales wurde zu KeyboardOptions hinzugefügt, damit TextFields IMEs mit bestimmten Gebietsschemata Hinweise zur Voreinstellung einer bevorzugten Sprache geben kann.
  • Stellen Sie die platformLocale-Eigenschaft von Locale bereit, die das zugrunde liegende Plattformobjekt zurückgibt, z.B. java.util.Locale. (I921c6)

Version 1.7.0-alpha03

21. Februar 2024

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

API-Änderungen

  • Es gibt jetzt ContextualFlowRow und erweiterte FlowRow/Column mit MaxLines und Overflow. Wir freuen uns, Ihnen Verbesserungen an den experimentellen FlowRow und FlowColumn vorstellen zu können. Sie unterstützen jetzt die Optionen „maxLines“ und „overflow“. Außerdem gibt es die neuen ContextualFlowRow und ContextualFlowColumn. Dieses Update wurde entwickelt, um leistungsoptimierte Komponenten bereitzustellen. ContextualFlow* eignet sich hervorragend für eine große Anzahl von Elementen, wobei eine kleine maxLines-Konfiguration und dynamische Schaltflächen vom Typ „Mehr anzeigen +N“ verwendet werden. FlowRow und FlowColumn eignen sich hervorragend für eine kleine Anzahl von Elementen (weniger als 100 Elemente). Wichtig: Wenn Sie das bestehende Verhalten in FlowRow oder FlowColumn beibehalten möchten, bei dem alle Elemente unabhängig davon, ob sie zur Maximalgröße der Querachse passen, zusammengehören, setzen Sie overflow während der Initialisierung auf FlowRowOverflow.Visible oder FlowColumnOverflow.Visible. Unter ContextualFlowRowSample und FlowRowSample finden Sie Beispiele für diese neuen Funktionen in der Praxis. (Ib9135, b/293577082)
  • Fügen Sie das Semantikattribut maxTextLength hinzu, das für Textfelder festgelegt werden soll, mit denen die maximal zulässige Anzahl von Zeichen gefiltert werden soll. (I24d9f, b/170648072)
  • Der Modifier.inspectable-Wrapper wurde eingestellt. Diese API führt zu mehr Ungültigstellungen des Modifiers als nötig. Daher wird ihre Verwendung nicht mehr empfohlen. Entwicklern wird empfohlen, die inspectableProperties()-Methode auf ModifierNodeElement zu implementieren, wenn sie Tools Modifikatoreigenschaften zur Verfügung stellen möchten. (Ib3236)
  • Neuer Konstruktor für PopupProperties, der vollständige Kontrolle über WindowManager.LayoutParams-Flags ermöglicht. (Ibb33e, b/312485503)
  • DelegatableNode.requireLayoutCoordinates() wurde eingeführt, um den aktuellen LayoutCoordinates einer Modifier.Node abzurufen, ohne onPlaced überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Ia8657)
  • Einführung von DelegatableNode.currentLayoutCoordinates als Möglichkeit, die aktuelle LayoutCoordinates eines Modifier.Node abzurufen, ohne onPlaced überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Iaebaa)
  • BasicTextField2 und die zugehörigen APIs im Paket androidx.compose.foundation.text2 werden zu androidx.compose.foundation.text verschoben. (I9f635)
  • Es wurde eine neue ApproachLayoutModifierNode API hinzugefügt, mit der benutzerdefinierte Annäherungslogik in einem expliziten Modifier-Knoten erstellt werden kann. Außerdem wurde eine neue experimentelle DeferredTargetAnimation API für Animationen hinzugefügt, deren Ziel bei der Instanziierung unbekannt ist. (I60745)
  • Neue Path APIs, mit denen die Richtung eines Pfads abgefragt und Konturen aus einem Path extrahiert werden können. (I63d04)
  • PathHitTest und Path.contains(Offset) wurden hinzugefügt, um zu prüfen, ob eine Path einen bestimmten Punkt enthält. (I3b218)
  • Die TextLayoutResult stellt jetzt die Methode getLineBaseline(lineIndex) bereit. So können Sie zusätzlich zu den vorhandenen praktischen Eigenschaften firstBaseline und lastBaseline die Baseline einer beliebigen Textzeile lesen. (Ide4e8, b/237428541)
  • Es wurde eine Methode hinzugefügt, mit der nur die Anmerkungen von zwei AnnotatedStrings verglichen werden können. (I32659)

Fehlerkorrekturen

  • Ein Problem mit der Abwärtskompatibilität von SemanticsPropertyReceiver.performImeAction und SemanticsActions.PerformImeAction wurde behoben. (Id0528, b/322269946)

Version 1.7.0-alpha02

7. Februar 2024

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

API-Änderungen

  • Ein Problem mit der Binärkompatibilität von SemanticsPropertyReceiver.performImeAction wurde behoben. (I65865, b/322269946)
  • Der PopupProperties-Konstruktor, der einen usePlatformDefaultWidth-Parameter verwendet, ist nicht mehr experimentell. (I8f8d2)
  • Es wurde eine Überladung von ComposeTestRule.waitUntil hinzugefügt, die eine Stringbeschreibung der Bedingung annimmt, die in die Zeitüberschreitungsmeldung aufgenommen werden soll. (I9413e)
  • Neue Semantics API unset() zum Entfernen von Semantics-Properties, die in derselben Modifikatorkette hinzugefügt wurden. Neue Semantik-Property isOpaque. (I8c583, b/317966058, b/246056649)
  • originalEventPosition wurde aus der Kopiermethode in der öffentlichen API von PointerInputChange entfernt. (I7bead)

Fehlerkorrekturen

  • Ein A11Y-Fehler wurde behoben, durch den Elemente, die keine Tabs oder Optionsfelder sind, angeklickt werden konnten, wenn sie ausgewählt waren. (I2181c)
  • VelocityTracker enthält jetzt die Korrektur, durch die Punkte standardmäßig hinzugefügt werden. Die Fehlerbehebung kann immer noch deaktiviert werden, indem du VelocityTrackerAddPointsFix auf „false“ setzt, wenn Probleme auftreten. (Ib3877, b/269487059)
  • Behebung der Abwärtsinkompatibilität von Binärdateien in TextStyle und ParagraphStyle (I179f0, b/320819734)

Externer Beitrag

  • Neuer DialogProperties-Konstruktor ohne plattformspezifische Parameter hinzugefügt. (I45829)
  • Neuer PopupProperties-Konstruktor ohne plattformspezifische Parameter hinzugefügt. (I9a038)

Version 1.7.0-alpha01

24. Januar 2024

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

API-Änderungen

  • ClipboardManager wurde um ClipEntry und ClipMetadata erweitert, um beliebige Inhalte wie Bilder zu unterstützen.
  • Fügen Sie ui-test die DeviceConfigurationOverride API hinzu, um das Verhalten der zu testenden Inhalte lokal zu überschreiben, z. B. um eine verfügbare Größe, Sprache, Layoutrichtung, Schriftgröße oder ein Thema anzugeben.

Version 1.6

Version 1.6.8

12. Juni 2024

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

Fehlerkorrekturen

  • Inkonsistenzen bei der Schriftskalierung wurden behoben, wenn die Schriftskalierung kleiner als die niedrigste definierte Tabelle war. In diesem Fall wird jetzt zwischen der linearen 1:1-Skala und der niedrigsten definierten Tabelle interpoliert, sodass die Schriftgröße mit zunehmender Skala monoton ansteigt. (Icbae3)

Version 1.6.7

1. Mai 2024

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

Version 1.6.6

17. April 2024

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

Fehlerkorrekturen

  • Ein seltener Absturz von BasicTextField wurde behoben.

Version 1.6.5

3. April 2024

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

Version 1.6.4

20. März 2024

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

Version 1.6.3

6. März 2024

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

Version 1.6.2

21. Februar 2024

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

Version 1.6.1

Am 7. Februar 2024 wird androidx.compose.ui:ui-*:1.6.1 veröffentlicht. Version 1.6.1 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem mit der Abwärtskompatibilität von SemanticsPropertyReceiver.performImeAction und SemanticsActions.PerformImeAction wurde behoben. (Ie0bb2, b/322269946)
  • Bei Layouts wird jetzt ein Fehler ausgegeben, wenn eine unnormal große Größe zurückgegeben wird. Diese Art von Fehler tritt normalerweise auf, wenn für die Messung direkt Höchstgrenzwerte verwendet werden, ohne nach Constraints.Infinity zu suchen. Mit dieser Prüfung können Entwickler Probleme mit dem Layout mit der falschen Größe finden, anstatt in einem Layout, das es enthält. (I339a9)

Version 1.6.0

24. Januar 2024

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

Version 1.6.0-rc01

10. Januar 2024

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

Fehlerkorrekturen

  • Die Implementierung von Vektorgrafiken wurde optimiert, um die Leistung zu verbessern, indem zusätzliche Neuzusammensetzungen minimiert werden.

Version 1.6.0-beta03

13. Dezember 2023

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

Neue Funktionen

  • Es ist jetzt möglich, eine LayoutCoordinates zu lösen, ohne dass der Knoten gelöst wird. Achten Sie im Layout Inspector für das Verfassen darauf (If693).

Fehlerkorrekturen

  • PlatformImeOptions ist jetzt eine konkrete Klasse anstelle einer Schnittstelle. (If40a4)
  • Behebung von zusätzlichen Downstream-Neuzusammensetzungen, die dadurch verursacht wurden, dass LocalSoftwareKeyboardController und LocalTextInputService jedes Mal neue Werte zugewiesen wurden, wenn eine Wurzel neu zusammengesetzt wurde. (I42190, b/310510985)

Version 1.6.0-beta02

29. November 2023

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

Version 1.6.0-beta01

15. November 2023

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

API-Änderungen

  • Der DragAndDropTarget-Modifikator nimmt jetzt die empfangene DragAndDropTarget explizit auf und hat ein Lambda, um eine Drag-and-drop-Sitzung zu aktivieren. Es gibt jetzt zwei Standardfunktionen für eine DragAndDropModifierNode. Eine für den Empfang von Übertragungen und eine für die Übertragung von Daten (I69481)
  • maximumFlingVelocity wird jetzt als Float dargestellt. Die Dokumentation wurde aktualisiert, um klarere Angaben zur Einheit maximumFlingVelocity zu machen. (I8adc7)
  • onDragAndDropStart in der DragAndDropModifierNode-Fabrik wurde in acceptDragAndDropTransfer umbenannt.Der Modifikator acceptsDragAndDropTransfer wurde dem Modifikator dragAndDropTarget hinzugefügt, um Änderungen aus einer Drag-and-drop-Sitzung zu akzeptieren. Diese Lambda-Funktion gibt einen gültigen DragAndDropTarget zurück, wenn sie an einer Drag-and-drop-Sitzung interessiert ist. Andere Lambdas zur Verarbeitung von Drag-Ereignissen wurden durch diese ersetzt. Außerdem wurde eine DragAndDropTarget-Factory-Funktion hinzugefügt, um Drag-and-drop-Sitzungen zu empfangen (Iebf3a).
  • DragAndDropInfo wurde als Typ entfernt. DragAndDropModifierNode.drag nimmt jetzt Parameter für transferData, die Größe der Dekoration und die Drag-Dekoration DrawScope lambda an.

    DragAndDropTarget hat Methoden für bestimmte Drag-and-drop-Ereignisse anstelle einer einzelnen abstrakten Methode.

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

    Die DragAndDropEventType wurde entfernt (I645b1)

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

  • Die Namen der API für befahrbare Knoten wurden verbessert, um sie verständlicher zu machen. (Ia4474)

  • Ersetzen Sie OriginalText durch TextSubstitution. (Ifa5a8)

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

  • Die untergeordneten Elemente von SubcomposeLayout (und Layouts wie LazyColumn, die darauf basieren) werden zur späteren Wiederverwendung beibehalten und gelten als deaktiviert. Es wurde eine neue assertIsDeactivated()-Test-API eingeführt, um solche Knoten zu testen. Die restlichen Test-APIs filtern deaktivierte Knoten standardmäßig heraus. (I2ef84, b/187188981)

  • FocusDirection.In und FocusDirection.Out wurden entfernt. Verwenden Sie stattdessen FocusDirection.Enter und FocusDirection.Exit. (I2f660)

  • Material SwipeToReveal APIs (für Karten und Chips) nutzen jetzt eine slotbasierte API (wie von Compose empfohlen) anstelle von data class-basierten Instanzen, um diese Slots zu erstellen. Dies ist eine gravierende Änderung. In der Demo und im Beispielcode finden Sie Beispiele zur Verwendung der neuen API. (Ia8943)

  • Der Konstruktor von FontStyle(int) wurde verworfen. Verwenden Sie stattdessen FontStyle.Normal oder FontStyle.Italic. (I66610)

  • Die FontScalable-Schnittstelle wurde in FontScaling (Ie804a) umbenannt.

Fehlerkorrekturen

  • Wenn kein Texteditor den Fokus hat, wird die Softwaretastatur nicht mehr über SoftwareKeyboardController.show() angezeigt. (I2165a, b/301477279)
  • Hardwaretaste-Ereignisse vom Typ „Hoch“ für Tasten, die in derselben Eingabeansicht kein „Nieder“-Ereignis erhalten haben, werden jetzt ignoriert. (Ib37b4, b/305518328)
  • Unterstützung für den Renderer für den Farbverlauf „Sweep Gradient“ in ArcLine hinzufügen (I4d5bb)
  • Implementieren Sie „equals“ und „hashcode“ für PageSize.Fixed. (Ie3ede, b/300134276)
  • Behebung eines Binärkompatibilitätsproblems bei der Änderung des Fensterabstands (Iee695)
  • Entfernen Sie die Material Core-Ebene für Material3-Chips/-Schaltflächen, da die Mikrobenchmarks ohne sie eine bessere Leistung zeigen. (I55555)
  • TestDispatchers, die als effectContext an Compose-Tests übergeben werden, werden jetzt zum Erstellen der Test- und Frame-Uhren verwendet. (Ia7178)

Version 1.6.0-alpha08

18. Oktober 2023

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

API-Änderungen

  • Bei Modifier.dragAndDrawSource wurde das Lambda onDrawDragShadow in drawDragDecoration umbenannt und bei DragAndDropInfo wurde der Größeparameter in dragDecorationSize umbenannt. (Id0e30, b/303904810)
  • Verwenden Sie SemanticsNodeInteraction.isDisplayed() und SemanticsNodeInteraction.isNotDisplayed(), um zu prüfen, ob ein übereinstimmender Knoten sichtbar ist, ohne eine Behauptung dazu aufzustellen. (I2c196, b/302100809)
  • Es wurde ein spezieller Unspecified-Wert für die Felder TextAlign, TextDirection, Hyphens und LineBreak von ParagraphTextStyle eingeführt, um null zu ersetzen. Da es sich bei diesen Klassen um Inline-Klassen handelt, vermeiden wir das Boxing primitiver Typen, indem wir die Option "Nullwerte zulässig" durch "Unangegeben" ersetzen. Konstruktoren, Getter und andere Methoden in TextStyle und im Absatzstil wurden aktualisiert, damit die genannten Parameter als Nicht-Null-Typen akzeptiert werden. (I4197e, b/299490814)
  • Fügen Sie eine GoogleFont-Überladung zum Lesen einer GoogleFont aus XML hinzu. (If8f59)
  • LoremIpsum PreviewParameterProvider wurde zu einem offenen Kurs. (I41bf5, b/266918816, b/300116360)

Fehlerkorrekturen

  • FontFamilyResolver verwendet jetzt Dispatchers.Main für Cache-Verwaltungskoroutinen. (Ie8dd9)
  • AndroidViewBinding entfernt jetzt synchron Fragment-Instanzen, die durch Einbeziehung eines FragmentContainerView in dein Layout in das Layout von onRelease mithilfe von commitNow (anstelle des zuvor verwendeten commit) aufgebläht wurden. Dadurch werden Probleme mit der Methode der Live-Bearbeitung behoben, bei der die Komposition bei Änderungen ersetzt wird. (I58fbf)

Version 1.6.0-alpha07

4. Oktober 2023

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

API-Änderungen

  • Einführung von PlatformTextInputMethodTestOverride zum Schreiben von Tests für benutzerdefinierte Texteditoren. (Id159b)
  • Es werden die Modifikatoren dragAndDropSource zum Starten von Drag-and-drop-Sitzungen und dragAndDropTarget zum Empfangen von Drag-and-drop-Sitzungen hinzugefügt. (Ib7828, b/286038936)
  • Die Sammlungen ColorList und ColorSet wurden hinzugefügt, bei denen Zuweisungen vermieden werden. (I744bd)
  • Das temporäre Flag DisableNonLinearFontScalingInCompose wurde hinzugefügt, um die nicht lineare Schriftskalierung zu deaktivieren. Legen Sie in Ihren Tests DisableNonLinearFontScalingInCompose = true fest, wenn Sie Zeit für die Bereinigung benötigen. Dieses Flag wird in Compose 1.6.0-beta01 entfernt. (Ic9486)

Fehlerkorrekturen

  • Optimiertes Parsen von XML-Vektor-Drawables. (Ibb015)

Version 1.6.0-alpha06

20. September 2023

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

API-Änderungen

  • Weitere Optimierungen der Materialsymbole. (I3e08d)
  • Es wurde die Möglichkeit hinzugefügt, den Modifikatorbaum nach oben und unten zu durchsuchen, um ähnliche Knoten zu finden. (I2d234)
  • Dem focusRestorer()-Modifikator wurde der onRestoreFailed()-Callback hinzugefügt (Ie1d43)
  • androidx-Anmerkungen wurden verschiedenen Grafik-APIs hinzugefügt, um ColorInt, FloatRange, IntRange, Size und mehr anzugeben. (Id65c8, b/290950582)
  • showSystemUi=true zur PreviewScreenSizes-Definition hinzufügen (Ib61d3)

Änderungen im Verhalten

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

Version 1.6.0-alpha05

6. September 2023

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

API-Änderungen

  • Aktivieren Sie die Inhaltserfassung in AndroidComposeViewAccessibilityDelegateCompat. (Ib2969)
  • Die Wischgeschwindigkeit in Ansichtskomponenten wie ScrollView und RecyclerView ist auf ViewConfiguration.ScaledMaximumFlingVelocity begrenzt. Compose enthält jetzt eine eigene Version von maximumFlingVelocity, die jetzt auf Draggable angewendet wird. (Ibf974)
  • Es wird ein initiales Scaffolding hinzugefügt, um Plattform-Drag-and-drop-APIs zu unterstützen. (If84ce)
  • deviceId zu RotaryScrollEvent hinzufügen (Iba3bf)
  • Die ui-tooling Devices API wurde um neuere Geräte erweitert (Ib25b4)

Version 1.6.0-alpha04

23. August 2023

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

API-Änderungen

  • Es wurde eine Methode hinzugefügt, mit der ReusableComposition deaktiviert werden kann. Dabei werden Beobachtungen entfernt, die Knoten bleiben jedoch erhalten. Die deaktivierte Zusammensetzung kann durch Aufrufen von setContent wieder aktiviert werden. (Ib7f31)
  • ReusableComposition-Schnittstelle zur Verwaltung des Lebenszyklus und der Wiederverwendung von Unterzusammensetzungen hinzugefügt. (I812d1, b/252846775)
  • Modifier.focusGroup wurde zu stabilen APIs hochgestuft. (I7ffa3)
  • Verschiedene Grafik-APIs wurden androidx-Anmerkungen hinzugefügt, um ColorInt, FloatRange, IntRange, Size und mehr anzugeben. (I70487, b/290950582)
  • Die ColorFilter API wurde um konkrete Unterklassentypen ergänzt, um die Prüfbarkeit von Parametern zu verbessern. (I5fe29)
  • Einführung der Wear-Tooling-Vorschaubibliothek zur Auflistung gültiger Wear-Geräte, die für UI-Vorschauen verwendet werden können (Ib036e)
  • Die FontScalable-Oberfläche wurde erstellt, um die Schriftskalierung der Density-Oberfläche zu steuern. (I2cf3f)

Version 1.6.0-alpha03

9. August 2023

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

API-Änderungen

  • Neuer Typ von Ein-/Ausblendungsübergang, bei dem die Inhalte während der Ein-/Ausblendungsanimation anhand der Größe des animierten Containers skaliert werden. LookaheadScope Die Funktionen und die Benutzeroberfläche von „Komposable Fun“ sind jetzt stabil. (Ifb2ce)
  • Unterstützung für die Konfiguration von privateImeOptions hinzugefügt (Idb772)

Fehlerkorrekturen

  • PopupPositionProvider.calculatePosition aktualisiert jetzt automatisch die Position des Pop-ups, wenn sich der in der Berechnung gelesene Status ändert. (I676a1, b/292257547)
  • Textfelder, die die Tastatur anzeigen und bearbeitbar sind, wenn readOnly auf „true“ gesetzt ist, wurden korrigiert. Außerdem wurde behoben, dass die Tastatur nicht angezeigt wurde, wenn readOnly während der Fokussierung von „wahr“ zu „falsch“ geändert wurde. (I34a19, b/246909589)
  • Erweiterte Anwendung globaler Behauptungen in UI-Tests. (I1f90d)

Version 1.6.0-alpha02

26. Juli 2023

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

API-Änderungen

  • Es wurde eine Schnittstelle für die Dienstsuche hinzugefügt, die von Implementierern von Kompositionen implementiert werden kann. Diese ermöglicht eine Implementierung von Kompositionen, die die Suche an einen anderen Kompositionsdelegatdienst auf die ursprüngliche Komposition delegiert. Diese Funktion sollte nicht direkt aufgerufen werden. Sie dient dazu, experimentelle APIs in der Laufzeit zu erstellen, die in verpackten Versionen des Composers wie dem UI-Modul zu finden sind. (I296b9)
  • Die PlatformTextInput* API wurde komplett neu gestaltet. (I6c93a, b/274661182, b/267235947, b/277380808)
  • SoftwareKeyboardController und LocalSoftwareKeyboardController sind nicht mehr experimentell. LocalSoftwareKeyboardController ist jetzt auch eine richtige CompositionLocal. (I4c364)
  • LookaheadLayout und LookaheadLayoutScope wurden vor einigen Releases eingestellt und werden jetzt entfernt. Die Ersatz-APIs sind LookaheadScope, die mit jedem Layout funktionieren. (I12ac3)
  • SemanticsNodeInteraction.requestFocus wurde hinzugefügt, um den Fokus in Tests einfacher und leichter anfordern zu können. (Ie8722)
  • Es wurden experimentelle APIs zum Registrieren globaler Behauptungen hinzugefügt, die in Zukunft von Test-Frameworks verwendet werden können. (I12d77)

Fehlerkorrekturen

  • Der erste Aufruf des update-Callbacks von AndroidView wird jetzt zurückgestellt, bis die Ansicht angehängt wird. Er wird nicht ausgeführt, wenn die Komposition angewendet wird, die das AndroidView einführt. Dadurch wird ein Fehler behoben, bei dem der update-Callback nicht ungültig gemacht wurde, wenn ein gelesener Status sofort durch einen Effekt geändert wurde. (Ie9438, b/291094055)

Version 1.6.0-alpha01

21. Juni 2023

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

Neue Funktionen

  • Lookahead wird in LazyList unterstützt. So kann LazyList im lookahead-Pass alle Animationen (z. B. die Animation für das Platzieren von Elementen, AnimatedVisibility usw.) überspringen und die Größe und Position des lookahead-Elements für alle untergeordneten Elemente berechnen. Nach dem Lookahead-Pass können untergeordnete Elemente von LazyList unabhängig voneinander animiert werden, wie im Lookahead-Pass dargestellt.

Verhaltensänderung: „includeFontPadding“ ist in „Compose“ jetzt standardmäßig auf „false“ gesetzt

includeFontPadding ist jetzt standardmäßig in der Funktion „Schreiben“ auf „falsch“ (21d806) gesetzt.

includeFontPadding ist ein älteres Attribut, mit dem festgelegt wird, ob über der ersten und der letzten Zeile des Texts ein zusätzlicher Abstand hinzugefügt werden soll, um Zeichen aufzunehmen, die über oder unter den Textgrundlinien liegen.

Wenn Sie diese Version von „Compose“ aktualisieren, wird die Darstellung aller Texte in der Benutzeroberfläche geändert, da das zusätzliche Padding über der ersten und letzten Zeile jedes angezeigten Textes entfernt wird.

Je nach Ihren UI-Anforderungen und den verwendeten Schriftschnitt-Messwerten sollten die Änderungen minimal sein. Es kann jedoch zu Problemen kommen, z. B.: - Fehlerhafte Screenshot-Tests. Beheben Sie bei Bedarf die Probleme mit der Benutzeroberfläche und generieren Sie die Golden Images neu. – Der Text ist leicht falsch ausgerichtet. Entfernen Sie alle benutzerdefinierten negativen Ränder oder fügen Sie bei Bedarf Ränder hinzu.

Du kannst includeFontPadding aktivieren, indem du für jeden Text PlatformTextStyle verwendest:

Text(
 text = myText,
 style = TextStyle(
   lineHeight = 2.5.em,
   platformStyle = PlatformTextStyle(
     includeFontPadding = true/false
   )
   /* … */
  )
)

Du kannst includeFontPadding für alle deine Texte aktivieren, indem du deine Material-Stile konfigurierst. Die Parameternamen unterscheiden sich zwischen M2 und M3.

val Typography = Typography(
   body1 = TextStyle(
       fontFamily =    /* … */,
       fontSize =    /* … */,
       platformStyle = PlatformTextStyle(
           includeFontPadding = false
       )
   /* … */
   )
)

MaterialTheme(
   typography = Typography,
   /* … */
)

Weitere Informationen zu Compose includeFontPadding finden Sie in der Entwicklerdokumentation und in diesem Blogpost.

Wenn Sie Probleme oder Fehler im Zusammenhang mit dieser Änderung feststellen, melden Sie sie über den Issue Tracker.

API-Änderungen

  • InputConnection#requestCursorUpdates (I0c69b) unterstützen
  • FocusRequester.saveFocusedChild und FocusRequester.restoreFocusedChild hinzugefügt (Ic557e, b/272302679, b/275157318)
  • Fügen Sie den Typ ResourceResolutionException hinzu, um Throwables zu verpacken, die beim Versuch, Bitmap-Assets zu laden, geworfen werden, mit einer Beschreibung des Asset-Pfads, der nicht geladen werden konnte. (I19f44, b/230166331, b/278424788)
  • Optimierte Zugänglichkeit für Leistung und Speicherzuweisung. (Iede48)
  • Es wurden semantische Eigenschaften und Aktionen hinzugefügt, um die Textübersetzung zu unterstützen. (I4a6bc)
  • Neues Attribut in IntrinsincMeasureScope und seinen Implementierungen (z.B. MeasureScope), das angibt, ob der aktuelle Messdurchlauf ein Vorschaudurchlauf ist. (I7a812)
  • Die DrawScope API wurde aktualisiert, um das Rendern auf eine andere Leinwand mit alternativer Dichte/Layoutrichtung und Größe umzuleiten.
  • DrawContext wurde aktualisiert, um die Konfiguration der Dichte und Layoutrichtung zu unterstützen und den Canvas konfigurierbar zu machen. (Ie1f9b, b/225408150)
  • Paragraph#fillBoundingBoxes wurde hinzugefügt, um Zeichenbegrenzungsrahmen zu berechnen. (If30ee)
  • Es wurden einige gängige MultiPreviews (Ia5a27) hinzugefügt.

Fehlerkorrekturen

  • Die FocusTargetModifierNode-Benutzeroberfläche wurde hinzugefügt, mit der benutzerdefinierte FocusTarget erstellt werden können. (I9790e)
  • Die fallback*-Parameter im TextMeasurer-Konstruktor wurden in default* umbenannt. (I940a5)
  • SemanticsPropertyReceiver.performImeAction wurde in onImeAction und SemanticsActions.PerformImeAction in OnImeAction umbenannt. (I8e841)
  • Es wurde das Rad hinzugefügt, um beim verschachtelten Scrollen (insbesondere in NestedScrollConnection) zwischen dem Scrollen und dem Ziehen mit der Maus zu unterscheiden. (Ie57e4)
  • Die asComposePaint API wurde hinzugefügt, um toComposePaint zu ersetzen, da das zurückgegebene Objekt die ursprüngliche android.graphics.Paint umschließt (I22b4c)
  • SemanticsProperties.imeAction wird eingestellt und durch einen neuen Parameter für SemanticsActions.performImeAction ersetzt. (I4a587)
  • Die Auswahl per Maus wird jetzt unterstützt. Bei der Auswahl per Berührung wird die Auswahl um ein Wort erweitert und um ein Zeichen verkleinert. (IC0c6c, b/180639271)
  • Paragraph-Methoden, die bisher AssertionError für Offsets außerhalb des gültigen Bereichs ausgelöst haben, geben jetzt IllegalArgumentException wie MultiParagraph aus. (I549d3, b/243338896)

Version 1.5

Version 1.5.4

18. Oktober 2023

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

Version 1.5.3

4. Oktober 2023

androidx.compose.ui:ui-*:1.5.3 wird veröffentlicht. Version 1.5.3 enthält diese Commits.

Fehlerkorrekturen

  • (b/301209788) TextField hat beim Fokussieren und Eingeben von koreanischer Eingabe gelegentlich falsche Befehle angewendet, wodurch Zeichen verloren gingen.

Version 1.5.2

27. September 2023

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

Fehlerkorrekturen

  • Es wurde eine Problemumgehung für Abstürze hinzugefügt, bei denen über den Hintergrundthread auf die Accessibility Scroll API zugegriffen wurde.
  • Korrektur von nicht verbundenen Knoten, die dem Semantikbaum hinzugefügt wurden.

Version 1.5.1

6. September 2023

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

Fehlerkorrekturen

  • Textfelder, in denen die Tastatur angezeigt und die Textfelder bearbeitet werden können, wenn readOnly = „wahr“ ist, wurden korrigiert. Außerdem wurde behoben, dass die Tastatur nicht angezeigt wurde, wenn readOnly während der Fokussierung von „wahr“ zu „falsch“ geändert wurde. (I34a19, b/246909589)

Version 1.5.0

9. August 2023

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

Version 1.5.0-rc01

26. Juli 2023

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

Fehlerkorrekturen

  • Ein Absturz behoben, der bei der Verwendung von SubcomposeLayout in movableContentOf() auftrat, wurde behoben.

Version 1.5.0-beta03

28. Juni 2023

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

Fehlerkorrekturen

  • Die Schnittstelle „FocusTargetModifierNode“ wurde hinzugefügt, mit der ein benutzerdefiniertes Fokusziel erstellt werden kann. (Ifb1d6)
  • Ein Problem mit Dialog- und Pop-up-Kompositen wurde behoben, das dazu führen konnte, dass das untergeordnete Fenster bei usePlatformDefaultWidth=true nicht wie erwartet skaliert wurde. (I112ee)

Version 1.5.0-beta02

7. Juni 2023

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

API-Änderungen

  • Die asComposePaint API wurde hinzugefügt, um die Nutzung einer android.graphics.Paint-Instanz in Compose zu ermöglichen.

Fehlerkorrekturen

  • Es wurde die asComposePaint API hinzugefügt, um toComposePaint zu ersetzen, da das zurückgegebene Objekt das ursprüngliche android.graphics.Paint umschließt (I22b4c).

Version 1.5.0-beta01

24. Mai 2023

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

API-Änderungen

  • Zuweisungen bei der Neuzusammensetzung, Farbanimationen und AndroidComposeView (Ib2bfa) entfernt
  • Fügt Hilfsfunktionen wie CacheDrawModifierNode() hinzu, um das Delegieren zu ermöglichen (Icf8f9)
  • Einführung der isLookingAhead-Property, die über MeasureScope zugänglich ist, um Lookahead-Ergebnisse zu beobachten und gegebenenfalls den Hauptpass zu beeinflussen. (Ibf4c3)
  • Neue Semantikeigenschaft traversalIndex, eine Gleitkommazahl zur Neuanordnung von Knoten beim TalkBack-Durchlauf (niedrigere Werte stehen davor). (I9a81b, b/186443263)
  • Die Eigenschaft „Semantik“ isContainer in isTraversalGroup umbenannt (I121f6)
  • ColorProducer hat jetzt ein operator fun invoke anstelle eines produce (I4a9a2)
  • Fügen Sie die Path Transform API hinzu, um Pfadobjekten Verschiebungs-/Skalierungs-/Drehtransformationen anzuwenden. (I23434, b/233772232)
  • Die Methode von ColorProducer heißt produce. (I78bde)
  • toFrameworkColorSpace in toAndroidColorSpace umbenennen (I4f547)
  • Benennen Sie ColorLambda in ColorProducer um. (I73b1a)
  • APIs zur Konvertierung zwischen Android- und Compose-Farbraumtypen eingeführt. (Ie7db4, b/279979665)
  • BasicText hat jetzt einen Farbparameter, mit dem sich Textfarben effizient animieren oder festlegen lassen. (Iffd88, b/246961787)
  • TextRange.constrain wurde in TextRange.coerceIn umbenannt. (I31be2)
  • Optimierte TextStyle.merge(...) mit vollständiger Parameterliste hinzugefügt. (Iad234, b/246961787)
  • Viele Text-APIs wurden stabilisiert, darunter Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush) und MultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245)
  • PlatformTextStyle.includeFontPadding wurde reaktiviert. Ursprünglich wollten wir das Feld entfernen. Das Feedback zeigt jedoch, dass Entwickler diese Konfigurationsoption benötigen. Daher wird die Einstellung aus dem Feld entfernt (I98e96, b/277703184)
  • Öffentliche Methode TextRange.constrain wurde hinzugefügt. (I97912)
  • UrlAnnotation-Werte in AnnotatedString Sek. können jetzt über Bedienungshilfen wie TalkBack geöffnet werden. (If4d82, b/253292081)
  • Die Semantikaktion InsertTextAtCursor für Textfelder wurde hinzugefügt. (I11ed5)
  • Der Konstruktor von LineHeightStyle.Alignment(topRatio) wird zur stabilen API hochgestuft. (I79c32, b/261565383)
  • TextMeasurer und zugehörige APIs sind nicht mehr experimentell. (I74647, b/261581753)
  • Die semantische Aktion PerformImeAction wurde hinzugefügt, um die IME-Aktion auf Texteditorknoten aufzurufen. (Ic606f, b/269633506)
  • PlatformTextInput APIs sind für Android nicht mehr experimentell. (I668eb)
  • Der Name des Wertparameters für Enum.valueOf wurde geändert (Ia9b89)
  • Mehr geworfene Ausnahmen von enum valueOf (I818fe)
  • Einführung einer neuen Low-Level-PlatformTextInputAdapter API zum Erstellen benutzerdefinierter Texteingabeimplementierungen, die direkt mit Plattform-APIs kommunizieren. (I58df4)
  • Den Methoden DrawScope.drawText, Paragraph.paint und MultiParagraph.paint wurde der Parameter BlendMode hinzugefügt, um beim Zeichnen von Text auf Canvas verschiedene Überblendungsalgorithmen zu unterstützen. (I57508)
  • Benennen Sie Font.MaximumAsyncTimeout in Font.MaximumAsyncTimeoutMillis um. Nur umbenennen. (I07af5)
  • Aktualisierte DPI-Werte von @Preview Referenzgeräten (Id6151, b/254528382)
  • Füge BasicText die Parameter brush und alpha hinzu, um den Textpinsel effizient zu animieren oder festzulegen.
  • Definition von boxfreien Lambdatypen für Float, Double, Long, Int und Short in :ui:ui-unit (I6f18d, b/246961787)

Fehlerkorrekturen

  • Mehrere Zuweisungen bei der Zeiger-Geschwindigkeitsverfolgung wurden entfernt (I26bae).
  • Weniger Zuweisungen bei der Layout- und Zeiger-Eingabeverwaltung (I5333a)
  • Speichernutzung für Vektorgrafiken und Rendering der ersten Frames optimieren (I2f3c6)
  • Zuweisungen beim Zeichnen von Linien und Punkten mit Canvas entfernt (I9f535)
  • Dokumente für AndroidFont.fontVariationSettings (I7d9e2) hinzufügen

Externer Beitrag

  • Verbesserte Leistung und reduzierte Zuweisungen in Vector APIs (I906cb)

Version 1.5.0-alpha04

10. Mai 2023

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

Neue Funktionen

  • Modifier.Node Verbesserungen bei der Delegierung Es wurde eine erweiterte Möglichkeit hinzugefügt, von einer DelegatingNode-Instanz an andere Modifier.Node-Instanzen zu delegieren. Dazu können Sie die APIs delegate und undelegate verwenden. Vor dieser Änderung musste jede API vom delegierenden Knoten explizit an den delegierten Knoten delegiert werden. Nach dieser Änderung werden Knotenschnittstellen implizit delegiert, es sei denn, die DelegatingNode überschreibt sie explizit. (67352bc)

API-Änderungen

  • NestedScrollModifierNode ist eine NestedScroll Modifier.Node, die delegiert werden kann. (I69513)
  • Dem AndroidViewBinding-Kompositelement wurden die Parameter onReset und onRelease hinzugefügt, um das AndroidView-Kompositelement zu spiegeln und die Wiederverwendung von Ansichten mit ViewBinding zu ermöglichen. (I00b1e, b/276802519)
  • Die Compose Path API wurde aktualisiert, um Zurückspulen zu unterstützen. So werden Anwendungsfälle mit häufigen Pfadänderungen und einer schnelleren Wiederverwendung unterstützt. (I7b797)
  • Optimierte TextStyle.merge(...) mit vollständiger Parameterliste hinzugefügt. (Iad234, b/246961787)
  • Viele Text-APIs wie Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush) und MultiParagraph.paint(Brush) wurden stabilisiert. (I2f740, b/261581564, b/261581931, b/261561245)
  • PlatformTextStyle.includeFontPadding wurde reaktiviert. Ursprünglich wollten wir das Feld entfernen. Das Feedback hat jedoch gezeigt, dass Entwickler diese Konfigurationsoption benötigen. Daher wird die Einstellung aus dem Feld entfernt (I98e96, b/277703184)

Fehlerkorrekturen

  • Behobene Regression, durch die die Tastatur für Textfelder in Dialogfeldern, die nicht mit dem Dialog-Komposit erstellt wurden, nicht angezeigt wurde. (I82551, b/262140644)

Version 1.5.0-alpha03

19. April 2023

androidx.compose.ui:ui-*:1.5.0-alpha03 wird veröffentlicht. Version 1.5.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Neues Standardverhalten für SubcomposeLayout in LookaheadScope: SubcomposeLayouts ohne bedingte Slots (z.B. TabRow, Scaffold, BoxWithConstraints) funktionieren jetzt gut mit Vorschauanimationen.

API-Änderungen

  • Mit der neuen Standard-intermediateMeasurePolicy, die die Messrichtlinie aus dem Lookahead-Pass wiederverwendet, können SubcomposeLayout-Untertypen ohne nutzerabhängige Slots wie Scaffold, TabRow und BoxWithConstraints standardmäßig mit Lookahead verwendet werden. (Id84c8)
  • Der für ein Android-Fenster erstellte Recomposer blockiert jetzt nur Aufrufe an withFrameNanos, anstatt die gesamte Zusammenstellung, wenn er eine ON_STOP-Benachrichtigung erhält. Das bedeutet, dass Fenster, die mit beendeten Aktivitäten verknüpft sind, bei Datenänderungen weiterhin neu zusammengesetzt werden, aber die Animationen oder ein anderer Aufrufer von withFrameNanos werden blockiert. (Id9e7f, b/240975572)
  • Ändert motionEventSpy in „stabil“. (Ic5ec4, b/261560988)
  • Öffentliche TextRange.constrain-Methode hinzugefügt. (I97912)
  • PlatformTextStyle.includeFontPadding wird nicht mehr eingestellt, damit Entwickler diese API zur Kompatibilität verwenden können, um die Einstellung includeFontPadding auf „falsch“ umzustellen und zu testen. (I98e96, b/277703184)

Version 1.5.0-alpha02

5. April 2023

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

API-Änderungen

  • Neue SubcomposeLayout API mit einer zusätzlichen Richtlinie für Zwischenmesswerte zur Verarbeitung der Mess-/Layoutlogik bei lookahead-basierten Animationen. (I017d3)
  • PointerInput ist jetzt träge und verwendet Modifier.Node für eine bessere Leistung. Weitere Informationen zu dieser geringfügigen Verhaltensänderung (15dab9)
  • Experimentelle APIs werden mit wichtigen Ereignissen in stabile APIs umgewandelt. (I9c7d8, b/261566839, b/261567368)
  • Die experimentellen APIs werden in PointerInputChange in stabile APIs geändert. (I1b543, b/261560988, b/261565762, b/261565749)
  • Es wird eine Möglichkeit hinzugefügt, eine SuspendingPointerInputModifierNode für komplexere Modifier.Node-Implementierungen zu instanziieren. (Ic4933)
  • UrlAnnotations in AnnotatedStrings können jetzt über Bedienungshilfen wie TalkBack geöffnet werden. (If4d82, b/253292081)
  • Es wurde eine API hinzugefügt, mit der Hardwaretasten abgefangen werden, bevor sie an die Soft-Tastatur gesendet werden (I4f4c6, b/186800395)
  • Die Semantikaktion InsertTextAtCursor für Textfelder wurde hinzugefügt. (I11ed5)
  • Bei textbezogenen Testaktionen (z.B. performTextInput) wird der Fokus jetzt direkt über die semantische Aktion angefordert, anstatt auf das Feld zu klicken. (I6ed05)

Fehlerkorrekturen

  • Für Texttestaktionen müssen jetzt Textfelder aktiviert sein. (Iab328)

Version 1.5.0-alpha01

22. März 2023

androidx.compose.ui:ui-*:1.5.0-alpha01 wird veröffentlicht. Version 1.5.0-alpha01 enthält diese Commits.

API-Änderungen

  • Für Modifier.intermediateLayout ist jetzt kein expliziter LookaheadScope mehr erforderlich. Der Messblock in „intermediateLayout“ hat „IntermediateMeasureScope“ als Empfänger, was praktische CoroutineScope-, LookaheadScope- und MeasureScope-Funktionen bietet.(Ibe2e5)
  • „LookaheadLayout“ wurde durch „LookaheadScope“ ersetzt, das kein Layout mehr ist. So können untergeordnete Inhalte in einem LookaheadScope direkt über die MeasurePolicy des übergeordneten Elements gesteuert werden. (Ibe2e5)
  • Modifier.Node#coroutineScope wird hinzugefügt, damit Modifier.Nodes Koroutinen starten können. (I76ef9)
  • Erlaube Modifier.Nodes, CompositionLocals zu lesen, indem du die Schnittstelle CompositionLocalConsumerModifierNode implementierst. (Ib44df)
  • Weitergabe der Klasse „@Deprecated“ an das Attribut. (I882d1)

Version 1.4

Version 1.4.3

3. Mai 2023

androidx.compose.ui:ui-*:1.4.3 wird veröffentlicht. Version 1.4.3 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem AndroidView bei Verwendung mit bestimmten Modifikatoren nicht korrekt dargestellt wurde. (I4dc77, b/274797771)
  • Ein Fehler in der 2D-Suche, der sich auf DropDown-Menüs ausgewirkt hat, wurde behoben (b/276811828)
  • Ein Fehler in benutzerdefinierten Eigenschaften für den Fokusein-/-austritt wurde behoben, bei dem der Block „enter/exit“ (Ein-/Austritt) nur beim ersten Aufruf der Lambda-Funktion ausgeführt wurde (b/277234245).
  • Eine Regression im Fokussystem, die beim Lesen von focusProperties zu einem Absturz geführt hat, wurde behoben. (b/271324781, b/274897776)

Version 1.4.2

19. April 2023

androidx.compose.ui:ui-*:1.4.2 wird veröffentlicht. Version 1.4.2 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem AndroidView seine Modifikatoren nicht richtig wiederverwendet hat, was zu unerwartetem Verhalten und Abstürzen führen konnte. (Ib67ee, b/275919849)
  • Behebung einer Regression, bei der die Tastatur in Textfeldern in Dialogen, die nicht mit dem Dialog-Kompositelement erstellt wurden, nicht angezeigt wurde (I82551, b/262140644)

Version 1.4.1

5. April 2023

androidx.compose.ui:ui-*:1.4.1 wird veröffentlicht. Version 1.4.1 enthält diese Commits.

Fehlerkorrekturen

  • Behebung eines Problems mit ParentDataModifier, das sich nicht auf AndroidView auswirkt (b/274797771)

Version 1.4.0

22. März 2023

androidx.compose.ui:ui-*:1.4.0 wird veröffentlicht. Version 1.4.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.3.0

  • Es wurde eine neue PinnableContainer API hinzugefügt, mit der Elemente in Lazy-Listen angepinnt werden können, damit sie nicht entfernt werden, wenn sie nicht mehr sichtbar sind. Auf Modifier.focusable() wird dieser Mechanismus beispielsweise verwendet, um das aktuell fokussierte Element anzupinnen. (Ib8881, b/259274257, b/195049010)
  • Das Fokussystem wurde mit den neuen experimentellen Modifier.Node APIs neu geschrieben. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • Die IsContainer-Semantik-Property wurde auf Oberflächen hinzugefügt. Diese Property wird bei einer späteren Änderung verwendet, bei der die Durchlaufreihenfolge basierend auf der semantischen Bedeutung von Elementen wie Oberflächen bestimmt wird. (I63379)
  • Es wurde eine neue Rolle für die Barrierefreiheit hinzugefügt: DropdownList. So lässt sich das Verhalten von TalkBack beim Fokussieren von android.widget.Spinner nachahmen. (I177e5, b/236159001)
  • Du kannst jetzt PlatformTextStyle(emojiSupportMatch) verwenden, um die Verarbeitung der Emoji-Unterstützung für einen einzelnen Absatz zu deaktivieren. (Ia7100, b/139326806)
  • Bei Android Compose UI-Tests werden jetzt Layoutdurchläufe für jeden Frame ausgeführt, wenn Frames ausgeführt werden, um in den Inaktivitätsstatus zu gelangen (z.B. über waitForIdle). Dies kann sich auf Tests auswirken, die für einzelne Frames von Layoutanimationen gelten. (I8ea08, b/222093277)
  • Die experimentelle Funktion TextMotion wurde zu TextStyle hinzugefügt, um für Text entweder Static(default) oder Animiert zu definieren. Verwenden Sie TextMotion.Animated, wenn Text durch eine Animation skaliert, verschoben oder gedreht werden soll. (I24dd7)

Version 1.4.0-rc01

8. März 2023

androidx.compose.ui:ui-*:1.4.0-rc01 wird veröffentlicht. Version 1.4.0-rc01 enthält diese Commits.

API-Änderungen

  • Es wurde eine Überladung der zusammensetzbaren Funktion AndroidView hinzugefügt, die den Parameter onReset akzeptiert. Damit können View-Instanzen wiederverwendet werden, wenn ihr Knoten in der Zusammensetzung verworfen und auf kompatible Weise wiederverwendet wird. Das ist besonders nützlich für LazyRows und LazyColumns von Aufrufen. (I3f10d, b/230099236)
  • Einführung einer neuen Low-Level-PlatformTextInputAdapter API zum Erstellen benutzerdefinierter Texteingabeimplementierungen, die direkt mit Plattform-APIs kommunizieren. (I58df4)

Fehlerkorrekturen

  • Mit der Semantikaktion SetText von BasicTextField wird der Textpuffer jetzt mit demselben Codepfad wie IME-Updates und die Testfunktionen (z.B. performTextReplacement) aktualisiert.
  • Für die Texttestfunktionen performTextClearance, performTextReplacement und performTextSelection wird jetzt SemanticsActions verwendet. (I0807d, b/269633168, b/269624358)

Version 1.4.0-beta02

22. Februar 2023

androidx.compose.ui:ui-*:1.4.0-beta02 wird veröffentlicht. Version 1.4.0-beta02 enthält diese Commits.

API-Änderungen

  • Die modifierElementOf() API wurde entfernt. Bitte verlängern Sie es stattdessen direkt von ModifierNodeElement. (I2256b)
  • Es wurde ein neuer Modifier.Node.onReset()-Callback hinzugefügt, mit dem Sie den lokalen Status zurücksetzen können, um den Fall richtig zu behandeln, wenn Layout wiederverwendet wird (z. B. als Element von LazyColumn). FocusTargetModifierNode wurde korrigiert, damit der Fokusstatus richtig zurückgesetzt wird. (I65495, b/265201972)
  • Den Methoden DrawScope.drawText, Paragraph.paint und MultiParagraph.paint wurde der Parameter BlendMode hinzugefügt, um beim Zeichnen von Text auf Canvas verschiedene Überblendungsalgorithmen zu unterstützen. (I57508)

Fehlerkorrekturen

  • Der Algorithmus für die Reihenfolge der Fokussierung bei der Barrierefreiheit wurde verbessert. So werden beispielsweise obere/untere Balken häufiger zuerst/zuletzt gelesen (74e9c5)

Version 1.4.0-beta01

8. Februar 2023

androidx.compose.ui:ui-*:1.4.0-beta01 wird veröffentlicht. Version 1.4.0-beta01 enthält diese Commits.

API-Änderungen

  • PinnableContainer.PinnedHandle.unpin() wurde in release() (I4667a) umbenannt
  • waitUntilNodeCount, waitUntilAtLeastOneExists, waitUntilExactlyOneExists und waitUntilDoesNotExist wurden als experimentelle API zu ComposeTestRule hinzugefügt. Damit kann die waitUntil API jeden Matcher und jede Anzahl von Knoten akzeptieren. Weitere Informationen finden Sie unter ComposeTestRule. (Ifa1b9, b/226934294)
  • Benennen Sie Font.MaximumAsyncTimeout in Font.MaximumAsyncTimeoutMillis um. (I07af5)
  • GoogleFont.Provider.AllFontsListUri wurde entfernt und stattdessen im ktdoc-Dokument verlinkt. (I16f29)

Fehlerkorrekturen

  • Dokumente für AndroidFont.fontVariationSettings (I7d9e2) hinzufügen

Version 1.4.0-alpha05

25. Januar 2023

androidx.compose.ui:ui-*:1.4.0-alpha05 wird veröffentlicht. Version 1.4.0-alpha05 enthält diese Commits.

API-Änderungen

  • Einführung neuer experimenteller Überlastungen für die runComposeUiTest- und create*ComposeRule-Funktionen, die CoroutineContext-Parameter akzeptieren. Der Kontext wird für die Testkomposition und alle LaunchedEffect- und rememberCoroutineScope()-Aufrufe in der Komposition verwendet. (I10614, b/265177763)
  • Neue API zum Erfassen der Geschwindigkeit in einer Dimension hinzufügen (If5a82)
  • FocusRequester ist jetzt als @Stable gekennzeichnet. (I580ee)
  • Entfernen Sie eine experimentelle Annotation aus dem DialogProperties-Konstruktor, die einen usePlatformDefaultWidth-Parameter verwendet. (Ic4048)
  • Funktion zum Berechnen der Position und Tangente in einem bestimmten Abstand auf einem Pfad hinzugefügt – mit PathMeasure.getPosition() und PathMeasure.getTangent() (I3b47c)
  • Am PlatformParagraphStyle wurde ein versehentlich freigegebener öffentlicher Setter entfernt. (I07f47)
  • Weitere Informationen zu Typ/Nullbarkeit von Inline-/veralteten ausgeblendeten Funktionen (I24f91)
  • Fügen Sie AnnotatedString.hasStringAnnotations hinzu, um nach Anmerkungen mit null Zuordnungen zu suchen. (I94dfe, b/246960758)
  • Es wurde eine neue Überladung für die Funktion TextMeasurer.measure hinzugefügt, die einen String als Text annimmt. (I47b2d, b/242705342)
  • Die APIs LineBreak und Hyphens in TextStyle wurden auf die stabile Version umgestellt. (Ic1e1d)

Externer Beitrag

  • notifyFocusedRect-Methoden in TextInputSession und TextInputService werden nicht noch einmal eingestellt. (I23a04, b/262648050)

Version 1.4.0-alpha04

11. Januar 2023

androidx.compose.ui:ui-*:1.4.0-alpha04 wird veröffentlicht. Version 1.4.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Es wurde eine neue PinnableContainer API hinzugefügt, mit der Elemente in Lazy-Listen angepinnt werden können, damit sie nicht entfernt werden, wenn sie nicht mehr sichtbar sind. Auf Modifier.focusable() wird dieser Mechanismus beispielsweise verwendet, um das aktuell fokussierte Element anzupinnen. (Ib8881, b/259274257, b/195049010)
  • Das Fokussystem wurde mit den neuen experimentellen Modifier.Node APIs neu geschrieben. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • Die IsContainer-Semantik-Property wurde auf Oberflächen hinzugefügt. Diese Property wird bei einer späteren Änderung verwendet, bei der die Durchlaufreihenfolge basierend auf der semantischen Bedeutung von Elementen wie Oberflächen bestimmt wird. (I63379)
  • Neue Rolle für Bedienungshilfen DropdownList hinzugefügt. So lässt sich das Verhalten von TalkBack's beim Fokussieren von android.widget.Spinner nachahmen. (I177e5, b/236159001)
  • Sie können jetzt PlatformTextStyle(emojiSupportMatch) verwenden, um die Verarbeitung von Emojis für einen einzelnen Absatz optional zu deaktivieren. (Ia7100, b/139326806)
  • Bei Android Compose UI-Tests werden jetzt Layoutdurchläufe für jeden Frame ausgeführt, wenn Frames ausgeführt werden, um in den Inaktivitätsstatus zu gelangen (z.B. über waitForIdle). Dies kann sich auf Tests auswirken, die für einzelne Frames von Layoutanimationen gelten. (I8ea08, b/222093277)
  • Die experimentelle TextMotion wurde zu TextStyle hinzugefügt, um Text entweder als Static(default) oder als animiert zu definieren. Verwenden Sie TextMotion.Animated, wenn Text durch eine Animation skaliert, verschoben oder gedreht werden soll. (I24dd7)

API-Änderungen

  • Das Argument maxSize: IntSize in drawText wurde durch size: Size ersetzt, um mit anderen DrawScope-Funktionen übereinzustimmen. size ist standardmäßig auf Size.Unspecified gesetzt. Das sollte das vorherige Standardverhalten nicht ändern. (Icd27d)
  • Der veraltete experimentelle Schriftarten-Konstruktor wurde entfernt. (I8a724, b/261435386)
  • Die Datenklasse „ui tooling“ Group hat jetzt ein Feld isInline, das angibt, ob die Gruppe für einen Aufruf einer inline-komposierbaren Funktion bestimmt ist. Wenn isInline true ist, handelt es sich um einen Aufruf einer inline zusammensetzbaren Funktion. Der Wert kann jedoch für Aufrufe von inline-kombinierbaren Funktionen aus Modulen falsch sein, die mit einer Version des Compose-Compiler-Plug-ins kompiliert wurden, die die Informationen zur Inlinefunktion nicht generiert. (Idb846)
  • Eine Reihe zuvor experimenteller APIs wurde in stabile APIs umgewandelt.
  • Die Rotary Scroll Event API ist jetzt stabil (I42ad3, b/261561229)
  • FontVariation Die API ist jetzt stabil (I8779f, b/241016309)
  • Alle Font()-Konstruktoren sind jetzt in der stabilen API verfügbar (I5948b, b/261435386)
  • DeviceFontFamilyName ist jetzt stabil (I8b640, b/261435386)
  • Der AndroidFont-Konstruktor mit variationSettings ist jetzt eine stabile API und kann zum Erstellen neuer Arten von Schriftdeskriptoren verwendet werden. (I5adcc, b/261565807)
  • Die createFontFamilyResolver API ist jetzt stabil. So können nicht abgefangene Ausnahmen beim asynchronen Laden von Schriftarten abgefangen werden. (Ibb481, b/261435386)
  • Die Font.loadingStrategy API ist jetzt stabil. (I5937c, b/261435386)
  • Die GoogleFont API ist jetzt stabil. (IC90b0, b/261435386)
  • TextUnit(float, TextUnitType) ist jetzt eine stabile API. (I90c84, b/261561612)
  • pluralStringResource ist jetzt eine stabile API. (I09849, b/261439703)

Version 1.4.0-alpha03

7. Dezember 2022

androidx.compose.ui:ui-*:1.4.0-alpha03 wird veröffentlicht. Version 1.4.0-alpha03 enthält diese Commits.

API-Änderungen

  • ExperimentalComposeUiApi wird aus PointerIcon (I23af8) entfernt
  • Einführung von Aktionen zur Barrierefreiheit von Seiten: PageUp, PageDown, PageLeft, PageRight. Beachten Sie, dass diese erst ab API 29 verfügbar sind. (Ida4ab)
  • Die Ansicht des rememberNestedScrollConnection-Parameters wurde von der Stammansicht in die Hostansicht geändert. (Ia5200)
  • Es wurde eine Modifier API hinzugefügt, um die Scroll-Informationen von Ancestors abzufragen. (I2ba9d, b/203141462)
  • Wird in Clickable verwendet, um die Interaktionen mit dem Drücken richtig zu verzögern, wenn Touch-Gesten zu Scrollereignissen werden könnten.
  • Bei Verwendung in einem Scrollable ViewGroup wurden bei Clickables keine korrekten Verzögerungen für Wellen erzeugt. Dieses Problem wurde behoben.
  • Leisten und Tabellen wurden aktualisiert, um das Drücken korrekt zu verzögern, falls Gesten zu Scroll-Ereignissen werden können.
  • CompositingStrategy.Always in Offscreen umbenannt, um anzugeben, dass die graphicsLayer immer in einen Zwischenspeicher gerendert wird (I47dc1)
  • Layoutüberlastung mit mehreren Inhaltsbereichen ist jetzt stabil (I10566, b/248294649).
  • Die experimentellen APIs PerfettoTrace.record {} und PerfettoTraceRule wurden hinzugefügt, um Perfetto-Traces (auch als System-Traces bezeichnet) im Rahmen eines Tests zu erfassen und das Testverhalten und die Leistung zu prüfen. (I3ba16)
  • In UI-Tests mit einer Compose-Regel werden Fortsetzungen, die während withFrameNanos-Callbacks fortgesetzt wurden, erst gesendet, nachdem alle Frame-Callbacks ausgeführt wurden. Das entspricht dem Verhalten von compose bei normalem Ausführen. Tests, die auf dem alten Verhalten basieren, können jedoch fehlschlagen. Dies sollte sich nur auf Code auswirken, der withFrameNanos oder withFrameMillis direkt aufruft und Logik außerhalb des Callbacks hat, die an diese Funktionen übergeben wird und möglicherweise in die Callbacks verschoben werden muss. Beispiele finden Sie in den Änderungen am Animationstest in dieser CL.
  • Dem Konstruktor und der Fabrikfunktion von TestMonotonicFrameClock wurde der optionale Parameter onPerformTraversals: (Long) -> Unit hinzugefügt, um Code nach withFrameNanos-Callbacks auszuführen, aber bevor die coroutines der Aufrufer fortgesetzt werden. (Idb413, b/254115946, b/222093277, b/255802670)
  • EmojiCompat wurde zum Verfassen hinzugefügt (Ibf6f9, b/139326806)
  • @Preview hat einen neuen Hintergrundparameter für die Unterstützung dynamischer Farben erhalten (I9f512)

Fehlerkorrekturen

  • Benachrichtigungen zum Anwenden von Snapshots werden jetzt gesendet, nachdem Recomposer die Änderungen angewendet hat. (Iad6c0, b/222093277)
  • In captureToImage wurden Änderungen vorgenommen, damit Screenshots von mehreren Fenstern aufgenommen werden können. Dies ist nützlich für Screenshot-Tests, bei denen Pop-ups zum Erstellen von Pop-ups verwendet werden. (I169c5)

Aktualisierung der Abhängigkeiten

  • Die Erstellung der Benutzeroberfläche und das Zusammenstellen von Material hängen jetzt vom Lifecycle 2.5.1 ab. (I05ab0, b/258038814)

Version 1.4.0-alpha02

9. November 2022

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

API-Änderungen

  • GraphicsLayerScope wurde aktualisiert, um die aktuelle Größe des graphicsLayer zu sehen. Das ist hilfreich, um graphicsLayer-Transformationen als Funktion der Größe des Composeable zu berechnen. (If8c43,b/181387080)
  • Einführung von CompositingStrategy, um festzulegen, wann eine Offscreen-Kompositionsebene für das Rendern von graphicsLayer-Inhalten verwendet werden soll. Bei „Automatisch“ wird das Standardverhalten beibehalten, bei dem intern eine Ebene verwendet wird, wenn Alpha angewendet wird, oder eine RenderEffect/Overscroll. „Always“ führt immer einen Offscreen-Puffer ein, während ModulateAlpha keinen Offscreen-Puffer verwendet, sondern stattdessen jede der aufgezeichneten Zeichenanweisungen innerhalb der graphicsLayer moduliert. Bei der Verwendung von ModulateAlpha wird weiterhin ein Offscreen-Puffer für die Verwendung von RenderEffect/Overscroll verwendet (I25e82, b/256382834)
  • invalidateSubtree() wurde Modifier.Node hinzugefügt, um ganze Hierarchien für Layout und Zeichnung zu entwerten. (I4bd90)
  • rememberNestedScrollInteropConnection zu „Stable“ hochstufen. Es ist jetzt möglich, eine Stammansicht an rememberNestedScrollInteropConnection zu übergeben. So kann die benutzerdefinierte Ansicht besser auf Scrolleinschränkungen reagieren, insbesondere in nicht standardmäßigen Ansichten (z.B. ModalBottomSheetDialog). (I9e107)
  • Die ObserverNode-Schnittstelle wurde hinzugefügt. Sie kann von Modifier.Node-Implementierungen verwendet werden, die benachrichtigt werden müssen, wenn sich ein zuvor gelesener Wert geändert hat (I5728b, b/247716483)
  • Paint hat einen neuen Konstruktor erhalten, der ein natives android.graphics.Paint akzeptiert. Außerdem wurde die Erweiterungsfunktion toComposePaint() hinzugefügt, mit der ein vorhandenes natives Paint-Objekt in Compose Paint umgewandelt wird. (Ica91b)
  • Fügen Sie eine neue FontFamily.Resolver.resolveAsTypeface für die Verwendung auf Android-Geräten hinzu. (I8950b)
  • ToolingState hinzufügen, damit Tools den internen Status von Composable ändern können (Ie6614)
  • Tools wurden überarbeitet, um die Unterstützung für neu hinzugefügte Animationen zu verbessern (I8677b)
  • Der Parameter minLines wurde zu material und material3 Text, TextField und OutlinedTextField hinzugefügt, mit dem die Mindesthöhe der Komponente in Bezug auf die Anzahl der Zeilen festgelegt werden kann (I4af1d).

Version 1.4.0-alpha01

24. Oktober 2022

androidx.compose.ui:ui-*:1.4.0-alpha01 wird veröffentlicht. Version 1.4.0-alpha01 enthält diese Commits.

API-Änderungen

  • Die neue Methode awaitEachGesture() für Gestenerkennung wurde hinzugefügt. Die Funktionsweise ähnelt der von forEachGesture(), aber die Schleife über die Touch-Gesten wird vollständig innerhalb von AwaitPointerEventScope ausgeführt, sodass Ereignisse zwischen den Iterationen nicht verloren gehen können.
  • forEachGesture() wurde zugunsten von awaitEachGesture() eingestellt, da bei forEachGesture() Ereignisse zwischen den Touch-Gesten verloren gehen können. (Iffc3f, b/251260206)
  • Das Recycling von Objekten zur Barrierefreiheit in androidx wird eingestellt. Wir haben festgestellt, dass die Leistungsänderungen selbst bei den ältesten unterstützten Versionen vernachlässigbar sind. (I0a961)
  • DrawStyle wurde zu TextStyle und SpanStyle als experimentelles Attribut hinzugefügt, um das Zeichnen von umrandetem Text zu ermöglichen. (If24b8, b/155421273)
  • AnnotatedString.Builder implementiert jetzt kotlin.text.Appendable. (I1a061, b/231030444)
  • AnnotatedString.Builder hat jetzt eine append(AnnotatedString, start: Int, end: Int)-Methode, mit der ein Teilstring einer AnnotatedString und die sich überschneidenden Stile angehängt werden können.
  • Den Malfunktionen Paragraph und MultiParagraph wurde der Parameter DrawStyle hinzugefügt, mit dem umrandeter Text gezeichnet werden kann. (Ic8102, b/155421273)

Externer Beitrag

  • Vielen Dank an vighnesh, dass er Fernseher zur Vorschau hinzugefügt hat (Ie15cd)

Version 1.3

Version 1.3.3

11. Januar 2023

androidx.compose.ui:ui-*:1.3.3 wird veröffentlicht. Version 1.3.3 enthält diese Commits.

Fehlerkorrekturen

  • Behebung eines Absturzes, der unter Android 9 manchmal auftritt, wenn die Aktivität den Status der Schreibansicht speichert. (I0b755, b/260322832)

Version 1.3.2

7. Dezember 2022

androidx.compose.ui:ui-*:1.3.2 wird veröffentlicht. Version 1.3.2 enthält diese Commits.

Fehlerkorrekturen

  • Aktualisiert auf die Verwendung von Profobuf 3.21.8, wodurch eine Sicherheitswarnung in protobuf-javalite:3.19.4 vermieden wird (CVE-2022-3171) (b/255545055)

Version 1.3.1

9. November 2022

androidx.compose.ui:ui-*:1.3.1 wird veröffentlicht. Version 1.3.1 enthält diese Commits.

Version 1.3.0

24. Oktober 2022

androidx.compose.ui:ui-*:1.3.0 wird veröffentlicht. Version 1.3.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.2.0

  • Neue experimentelle API-Suite LookaheadLayout (ermöglicht bisher nicht mögliche Animationsverhalten)
  • Neue experimentelle API-Suite Modifier.Node (leistungsstärkere Alternative zu Modifier.composed)
  • Verbesserte Unterstützung für Fenstereinzüge.
  • Unterstützung für die Fokussierung von D-Pads und Hardwaretastaturen in LazyLists.
  • Die maximale unterstützte Höhe in Dialogfeldern und Pop-ups wurde auf 8 dp reduziert (funktionsgefährdende Änderung bei einigen benutzerdefinierten Designsystemen – Begründung in den Versionshinweisen von Beta01).
  • Viele geringfügige, abwärtskompatible API-Verbesserungen
  • Viele Fehlerkorrekturen und Leistungsverbesserungen

Version 1.3.0-rc01

5. Oktober 2022

androidx.compose.ui:ui-*:1.3.0-rc01 wird veröffentlicht. Version 1.3.0-rc01 enthält diese Commits.

API-Änderungen

  • Die experimentelle API „Hyphens“ wurde hinzugefügt, um die automatische Silbentrennung in Text zu unterstützen (Iaa869)

Fehlerkorrekturen

  • Bei DeviceFontFamilyName-Schriftarten werden die Varianteneinstellungen wght und ital standardmäßig nicht konfiguriert. Stattdessen werden die Plattformeinstellungen für geladene Typeface verwendet. (Ia7a6d, b/246989332)
  • LazyColumn-Speicherleck behoben: onModifierLocalsUpdated wurde bei der Wiederverwendung von Modifikatoren nicht mit dem Standardwert aufgerufen (b/230168389).

Version 1.3.0-beta03

21. September 2022

androidx.compose.ui:ui-*:1.3.0-beta03 wird veröffentlicht. Version 1.3.0-beta03 enthält diese Commits.

API-Änderungen

  • Optionen zum Anpassen der Zeilenumbrüche in Text hinzufügen (I86907)
  • Das Argument size:IntSize wurde in der Methode TextMeasurer.measure mit constraints: 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 einem Dialog-Komposit. (I35342)

Version 1.3.0-beta02

7. September 2022

androidx.compose.ui:ui-*:1.3.0-beta02 wird veröffentlicht. Version 1.3.0-beta02 enthält diese Commits.

API-Änderungen

  • Es wurde eine experimentelle Überladung für das Layout hinzugefügt, die eine Liste mehrerer zusammensetzbarer Inhaltslambdas akzeptiert. So können Messwerte, die in verschiedene Inhaltslambdas eingefügt werden, unterschiedlich behandelt werden (Ic1b4e).

Änderungen an experimentellen Focus APIs:

  • FocusDirection.In und FocusDirection.Out werden nicht mehr unterstützt und durch FocusDirection.Enter und FocusDirection.Exit ersetzt. (Ia4262, b/183746982)
  • Es wurden zwei neue Fokuseigenschaften „enter“ und „exit“ hinzugefügt, um ein benutzerdefiniertes Verhalten für FocusManager.moveFocus(Enter) und FocusManager.moveFocus(Exit) anzugeben. (I5f3f9, b/183746982)
  • Mit FocusRequester.Cancel können Sie jetzt einen Fokuswechsel abbrechen. FocusRequester.Cancel kann in allen folgenden Fokuseigenschaften verwendet werden: oben, unten, links, rechts, nächster, vorheriger, Anfang, Ende, Eingabe und Beenden. (Ib300f)

Version 1.3.0-beta01

24. August 2022

androidx.compose.ui:ui-*:1.3.0-beta01 wird veröffentlicht. Version 1.3.0-beta01 enthält diese Commits.

Modifier-Knoten neu strukturieren

Die Schicht, die Modifier/Modifier.Element-Instanzen verarbeitet und ihr Verhalten auf LayoutNodes koordiniert, wurde grundlegend überarbeitet. Diese Refaktorisierung hatte keine Auswirkungen auf die öffentliche API der vielen Modifikatoren in Compose und kann als reine Implementierungsänderung betrachtet werden. Dennoch ist diese Änderung aus verschiedenen Gründen wichtig. (Ie4313)

Änderungsübersicht

Die hinzugefügten experimentellen Modifier.Node APIs bieten eine Abstraktion, die es ermöglicht, den Status einer Instanz beizubehalten, der über den Lebenszyklus des Layoutknotens beibehalten wird und pro Layoutknoten und pro Verwendung der entsprechenden Modifier.Element zugewiesen wird, die ihn erstellt hat.

Diese Abstraktion bietet einen alternativen Mechanismus zum Erstellen zustandsorientierter Modifikatoren, ohne sich auf die Mechanismen der Modifier.composed API zu verlassen.

Risiko

Diese Änderung ist streng binärkompatibel mit früheren Releases und soll im Hinblick auf das beobachtbare Verhalten so weit wie möglich abwärtskompatibel sein. Es gibt jedoch nur wenige Compose-Subsysteme, die von dieser Refaktorisierung nicht betroffen waren. Es ist wahrscheinlich, dass sich das Verhalten auf eine Weise geändert hat, die nicht von unseren Tests abgedeckt wurde und noch nicht gefunden und behoben wurde.

Führen Sie ein Upgrade auf diese Version daher mit Vorsicht durch. Wenn Sie der Meinung sind, dass dadurch etwas nicht mehr funktioniert, teilen Sie uns dies bitte mit.

Experimentelle APIs

Es wurden verschiedene experimentelle APIs hinzugefügt, die sich alle auf das neue Konzept eines „Modifier Nodes“ beziehen. Modifier.Node werden durch Folgendes erstellt:

  • fun modifierElementOf(…): Modifier
  • abstract class ModifierNodeElement
  • abstract class Modifier.Node
  • abstract class DelegatingNode
  • interface LayoutModifierNode
  • interface DrawModifierNode
  • interface SemanticsNode
  • interface PointerInputNode
  • interface ModifierLocalNode
  • interface ParentDataModifierNode
  • interface LayoutAwareModifierNode
  • interface GlobalPositionAwareModifierNode
  • interface IntermediateLayoutModifierNode

Verhaltensverändernde Änderung

Die maximal unterstützte Höhe in Dialogfeldern und Pop-ups wurde auf 8 dp reduziert.

Die maximal unterstützte Erhöhung für Dialogfelder und Pop-ups für die Nachrichtenerstellung wurde von 30 dp auf 8 dp reduziert. Diese Änderung wirkt sich sowohl auf Material als auch auf benutzerdefinierte Dialogfelder und Pop-ups der Benutzeroberfläche aus. Mit dieser Änderung soll ein Bedienungshilfenfehler in Android-Versionen unterhalb von S behoben und dafür gesorgt werden, dass Bedienungshilfen in diesen Fenstern mit den Inhalten im Dialogfeld oder Pop-up interagieren können.

Sie sind nur dann von dieser Änderung betroffen, wenn Sie ein benutzerdefiniertes Dialogfeld oder Pop-up erstellen, dessen Höhe über 8 dp liegt. Sie können die Höhe des Dialogfelds oder Pop-ups senken. Wenn Sie dieses neue Verhalten deaktivieren möchten, können Sie Ihr eigenes Dialogfeld oder Pop-up mit der gewünschten Höhe festlegen. Dies wird nicht empfohlen, da die Barrierefreiheit dadurch beeinträchtigt werden kann. Der Entwickler muss dafür sorgen, dass der untere Teil des Dialogfelds oder Pop-ups für Dienste zur Barrierefreiheit interaktiv und lesbar ist.

API-Änderungen

  • Ein Problem wurde behoben, bei dem painterResource bei Konfigurationsänderungen nicht aktualisiert wurde (I58e73, b/228862715)
  • Für rememberTextMeasurer können die Parameter FontFamily.Resolver, Density oder LayoutDirection nicht mehr verwendet werden. Verwenden Sie den Konstruktor TextMeasurer, um benutzerdefinierte Werte für diese Parameter anzugeben. (Ia1da3)
  • Die Eigenschaft DialogProperties.decorFitsSystemWindows wurde hinzugefügt, damit Dialogfelder WindowInsets unterstützen können. (I57742, b/229378542)
  • Schriftkonstruktoren wurden zurück in die ursprüngliche Kotlin-Datei verschoben, um die Binärkompatibilität aufrechtzuerhalten. Keine Änderung gegenüber dem letzten stabilen Release. (Ieb2f3)
  • Unnötiger Operator aus mehreren Definitionen für „gleich“ entfernt – hat keine Auswirkungen. (I6c309)
  • FontVariation.Setting ist eine versiegelte Schnittstelle, die zukünftige APIs zur Leistungsbegrenzung ermöglicht. (I11021, b/143703328)
  • Fügen Sie CompositionGroup.findParameters zu SlotTree.kt hinzu. So können Tools Parameter für eine CompositionGroup abrufen, ohne die gesamte Steckplatztabelle analysieren zu müssen. (I124fe)

Version 1.3.0-alpha03

10. August 2022

androidx.compose.ui:ui-*:1.3.0-alpha03 wird veröffentlicht. Version 1.3.0-alpha03 enthält diese Commits.

API-Änderungen

  • LayoutCoordinates.findRootCoordinates() ist jetzt öffentlich (I7fa37, b/204723384)
  • Es wurde eine experimentelle API zum Abrufen von LayoutCoordinates in PlacementScope hinzugefügt. So wissen Entwickler, wo sich das aktuelle Layout befindet, um untergeordnete Elemente relativ zu seiner Position zu platzieren. (I5482b, b/238632578)
  • LayoutCoordinates.transformFrom wurde hinzugefügt, um die Matrixtransformation von einer LayoutCoordinates in eine andere zu erhalten. (Ic5ab1, b/238632578)
  • SemanticsModifier.id wurde eingestellt und die Semantik-ID wurde nach LayoutInfo.semanticsId verschoben. (Iac808, b/203559524)
  • Ressourcenschriftarten unterstützen jetzt das Festlegen von Einstellungen für Schriftvariationen (API 26 und höher). (I900dd, b/143703328)
  • Unterstützung für variable Schriftarten in DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • Schriftkonfiguratoren akzeptieren jetzt eine Liste von FontVariation.Setting für die Konfiguration variabler Schriftarten auf Geräten der O-Serie und höher. (I11a9d, b/143703328)
  • FontVariation API zum Definieren und Verwenden variabler Schriftarten hinzufügen (I3c40c, b/143703328)
  • Der Konstruktor von LineHeightStyle.Alignment ist jetzt öffentlich (experimentell) (I4bbbe, b/235876330)
  • „Absatz“ ist jetzt „erwartet|tatsächlich“ und für Android und Computer definiert. (Id387e, b/239962983)
  • Der Abschnitt „Interface“ ist jetzt der Abschnitt „Interface Paragarph“. Es gibt keinen Anwendungsfall für die Unterklasse „Absatz“. Wenn Sie von dieser Änderung betroffen sind, wenden Sie sich bitte an uns. (If5247, b/239962983)
  • Die experimentelle Anmerkung wurde aus PlatformTextStyle und LineHeightStyle entfernt. (I64bef)
  • TextInputService.show|hideSoftwareKeyboard einstellen Verwenden Sie stattdessen SoftwareKeyboardController im App-Code und TextInputSession im IME-Verwaltungscode. (I14e4c, b/183448615)
  • Neue API für vorhandene Animationstypen hinzufügen (I26179)

Fehlerkorrekturen

  • @RequiresPermission wurde APIs hinzugefügt, für die die Berechtigung POST_NOTIFICATIONS ab SDK 33 gewährt werden muss. (Ie542e, b/238790278)

Version 1.3.0-alpha02

27. Juli 2022

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

API-Änderungen

  • Es wurde eine neue Property PointerInputChange#pressure hinzugefügt, um den Druck abzurufen. (I45a5e, b/205164819)
  • rememberTextMeasurer wurde hinzugefügt, um TextMeasurer-Instanzen in der Zusammensetzung einfach zu erstellen und zu speichern. (I8d66e)
  • Rect, RoundRect und MutableRect unterstützen jetzt die Kotlin-Syntax in zum Aufrufen der contains-Funktion. (Ie42b0, b/238642990)
  • Entfernen Sie unnötige Funktionen aus KeyInjectionScope, da sie mit einfacheren Teilen der API problemlos implementiert werden können. Zu den entfernten Funktionen gehören pressKeys, keysDown und keysUp. (I81d77)
  • Die Namen von Konstanten und Parametern in KeyInjectionScope wurden um das Suffix „Millis“ ergänzt, wenn die Einheiten dieser Konstanten und Parameter Millisekunden sind. (Iabef5)
  • Die toStringForLog()-Methode wurde zu EditCommand hinzugefügt, um Probleme beim Bearbeiten von Text zu beheben. (I53354, b/228862731)
  • Es wurde eine drawText-Erweiterungsfunktion für DrawScope hinzugefügt, um Text mit mehreren Stilen auf Composeables und Modifikatoren zu zeichnen, die auf einem DrawScope wie Canvas und drawBehind ausgeführt werden. (I16a62, b/190787898)
  • Einführung einer neuen experimentellen API namens TextMeasurer, die die Berechnung beliebiger Textlayouts ermöglicht, die unabhängig von der Compose-Laufzeit identische Ergebnisse wie BasicText liefern. (I17101)
  • mapTree zu SlotTree.kt hinzufügen. So können Tools die SlotTree prüfen, ohne vorher eine Kopie im Arbeitsspeicher zu erstellen, wie es bei asTree der Fall ist. Für den Layout-Inspektor bedeutet das eine Leistungssteigerung um etwa das Zehnfache. (I5e113)
  • Die Vorschau für das Erstellen von Inhalten wird jetzt in binären Ausgabedateien gespeichert, damit Entwickler MultiPreview-Anmerkungen aus Bibliotheken schreiben und wiederverwenden können. (I85699, b/233511976)

Fehlerkorrekturen

  • Wenn InputEventChange-Ereignisse dem Velocity-Tracker hinzugefügt werden, werden jetzt Deltas anstelle von Positionen berücksichtigt. So wird sichergestellt, dass die Geschwindigkeit in allen Fällen korrekt berechnet wird, auch wenn sich das Zielelement bewegt (Icea9d, b/216582726, b/223440806, b/227709803)
  • Durch AnnotatedString.toUpperCase verursachte NPE korrigieren, wenn Anmerkungen vorhanden sind. (I0aca2, b/210899140)

Version 1.3.0-alpha01

29. Juni 2022

androidx.compose.ui:ui-*:1.3.0-alpha01 wird veröffentlicht. Version 1.3.0-alpha01 enthält diese Commits.

API-Änderungen

  • Neue LookaheadLayout, die einen Vorlauf vor dem tatsächlichen Mess-/Layout unterstützt. So kann das Layout bei Änderungen vorab berechnet werden. Gleichzeitig kann das Mess-/Layout nach dem Vorschauzeitraum die vorab berechnete Größe/Position verwenden, um die Größe und Positionen in Richtung des Ziels zu animieren. SubcomposeLayouts werden noch nicht unterstützt, aber in einer kommenden Version. (I477f5)
  • Fügen Sie der Pinselvariante von TextStyle und SpanStyle einen optionalen Alphaparameter hinzu, um die Deckkraft der gesamten Text zu ändern. (Ic2fac, b/234117635)
  • Der Anmerkungstyp UrlAnnotation und die zugehörigen Methoden wurden eingeführt, um die Unterstützung von TalkBack-Links in AnnotatedStrings zu ermöglichen. (I1c754, b/231495122)
  • Verschieben von Dienstfunktionen in die Laufzeit (I4f729)

Fehlerkorrekturen

Externer Beitrag

  • Neue API WindowInfo.keyboardModifiers hinzugefügt, um den Status innerhalb von kombinierbaren Funktionen oder über snapshotFlow zu beobachten (Icdb8a)

Version 1.2

Version 1.2.1

10. August 2022

androidx.compose.ui:ui-*:1.2.1 wird veröffentlicht. Version 1.2.1 enthält diese Commits.

Fehlerkorrekturen

  • Der Nullzeiger im Inspector wurde behoben (b/237987764).
  • Behobene Ausnahme bei der Klassenüberprüfung im Inspector (b/235526153)

Version 1.2.0

27. Juli 2022

androidx.compose.ui:ui-*:1.2.0 wird veröffentlicht. Version 1.2.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.1.0

  • Verbesserungen beim Fokuswechsel:

    • Das fokusgesteuerte Scrollen von Lazy-Listen funktioniert jetzt mit der neuen BeyondBoundsLayout-Core-API
    • Neue APIs zur Verhaltensanpassung in FocusOrder und FocusProperties
    • Verbesserte Funktionsweise bei Verwendung der physischen Tastatur oder der Fernbedienung des Fernsehers
  • Neue APIs für:

    • Fenstereinlagen
    • Grundlegende Primitive für gestengesteuerte, endlose und Layout-Animationen
    • GraphicsLayer Funktionen, darunter RenderEffect
  • Viele Fehlerkorrekturen und Leistungsverbesserungen

Version 1.2.0-rc03

29. Juni 2022

androidx.compose.ui:ui-*:1.2.0-rc03 wird veröffentlicht. Version 1.2.0-rc03 enthält diese Commits.

  • Keine Änderungen seit 1.2.0 bis rc02.

Version 1.2.0-rc02

22. Juni 2022

androidx.compose.ui:ui-*:1.2.0-rc02 wurde veröffentlicht. Version 1.2.0-rc02 enthält diese Commits.

Version 1.2.0-rc01

15. Juni 2022

androidx.compose.ui:ui-*:1.2.0-rc01 wird veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.

API-Änderungen

  • Schnittstellen in Erstellungsbibliotheken werden jetzt mit jdk8-Standardschnittstellenmethoden erstellt (I5bcf1).
  • Wir haben KeyInjectionScope Funktionen für übergeordnete Elemente zum Einfügen von Tastendrucken hinzugefügt, während andere Tasten gedrückt gehalten oder aktiviert werden. Dazu gehören withKeysDown, withKeysToggled usw. Außerdem wurden Eigenschaften hinzugefügt, mit denen geprüft werden kann, ob ein bestimmter Metaschlüssel gedrückt ist, z. B. isCtrlDown, um zu prüfen, ob einer der Steuertasten gedrückt ist. Weitere Informationen zu den einzelnen Funktionen finden Sie unter KeyInjectionScope. (I9f6cd, b/229831515)
  • Es wurde eine experimentelle OverscrollEffect eingeführt, die neben den Modifier.scrollable-Überladungen, die sie akzeptieren, benutzerdefinierte Überblendungseffekte ermöglicht.
  • Die experimentelle LocalOverScrollConfiguration wurde aus foundation.gesture in das Foundation-Paket verschoben und in LocalOverscrollConfiguration umbenannt (If19fb, b/204650733)
  • runComposeUiTestWithoutActivity {} in runEmptyComposeUiTest {} umbenennen, damit sie mit createEmptyComposeRule() (I6fed7) übereinstimmt

Version 1.2.0-beta03

1. Juni 2022

androidx.compose.ui:ui-*:1.2.0-beta03 wird veröffentlicht. Version 1.2.0-beta03 enthält diese Commits.

API-Änderungen

  • pressKeyTimes sowie isCapsLockOn und Freunde wurden zu KeyInjectionScope hinzugefügt. Außerdem unterstützt die API jetzt kombinierte Einschleusungsmuster mit Maus und Tastatur, beispielsweise das Klicken auf eine Maustaste bei gedrückter Metataste. (I4c8da, b/229831515)
  • Zusätzliche experimentelle Unterstützung für das Einfügen von Schlüsselereignissen. Verwenden Sie performKeyInput, um Schlüsselereignisse zu senden, oder senden Sie sie während einer multimodalen Eingabegeste mit performMultiModalInput über die Eigenschaft key von MultiModalInjectionScope. Informationen zur API-Dokumentation finden Sie unter KeyInjectionScope. (Ic5000, b/229831515)
  • Fügen Sie eine neue GoogleFont.Provider.AllFontsListUri hinzu, um die kanonische Internetquelle der von Android unterstützten Google-Schriftarten abzurufen.
  • Verbesserte Fehlermeldungen, die ausgegeben werden, wenn Google Fonts im Editor nicht geladen werden kann. (I0416c)

Fehlerkorrekturen

  • Wenn Velocity Tracker InputEventChange-Ereignisse hinzugefügt werden, werden jetzt Deltas anstelle von Positionen berücksichtigt. So wird sichergestellt, dass die Geschwindigkeit in allen Fällen korrekt berechnet wird, auch wenn sich das Zielelement bewegt (I51ec3, b/216582726, b/223440806, b/227709803)
  • Die Einstellung Show Layout Bounds wird jetzt sofort auf Composeables angewendet, nachdem sie über die Schnelleinstellungskachele aktiviert wurde, ohne dass die Aktivität verlassen und wieder betreten werden muss. (I843d5, b/225937688)
  • Bei der String-Suche nach Bedienungshilfen wird kein Laden der Schriftart ausgelöst. Bisher wurde versucht, Schriftarten für StyleSpans zu laden, was zu Abstürzen führte, wenn FontFamily.Resolver überschrieben wurde. (I4609d)
  • Wenn Sie die Rückwärtslöschtaste drücken, während sich der Cursor am Ende eines Textfelds befindet, kommt es nicht mehr zu einem Absturz.
  • Für DeleteSurroundingTextCommand und DeleteSurroundingTextInCodePointsCommand müssen ihre Konstruktorargumente jetzt nicht negativ sein. (Ica8e6, b/199919707)

Version 1.2.0-beta02

18. Mai 2022

androidx.compose.ui:ui-*:1.2.0-beta02 wird veröffentlicht. Version 1.2.0-beta02 enthält diese Commits.

API-Änderungen

  • Funktionen in anderen Vorschautypen wiederverwenden (I19f39)

Fehlerkorrekturen

  • ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer wurde in DisposeOnDetachedFromWindowOrReleasedFromPool umbenannt, um besser zu verdeutlichen, dass es um die Häufigkeit von Entsorgungen geht, nicht nur um die Häufigkeit, in der sie nicht stattfinden. (If15ca)

Version 1.2.0-beta01

11. Mai 2022

androidx.compose.ui:ui-*:1.2.0-beta01 wird veröffentlicht. Version 1.2.0-beta01 enthält diese Commits.

Neue Funktionen

  • Dies ist die erste Betaversion von Version 1.2.

API-Änderungen

  • Es wurde eine experimentelle BeyondBoundsInterval hinzugefügt, die von benutzerdefinierten Implementierungen von LazyList verwendet werden kann, wenn Elemente außerhalb des sichtbaren Bereichs angeordnet werden (Ifabfb, b/184670295)
  • Schlüsselversionen von Modifier.composed sind jetzt als stabile API verfügbar (Ie65e4, b/229988420)
  • Die rememberNestedScrollConnection API wurde vereinfacht, sodass die aktuellen Ansichtsinformationen mithilfe von Komposition-Locals abgerufen werden (I67ca7)
  • Die Anmerkung @ComposableTarget und mit @ComposableTargetMarker gekennzeichnete Anmerkungen können jetzt mit dem Präfix @file auf Dateiebene verwendet werden. Bei Verwendung einer Zielannotation auf Dateiebene geht der Compiler davon aus, dass alle zusammensetzbaren Funktionen in der Datei auf den zugehörigen Applier ausgerichtet sein sollen. Wenn Sie beispielsweise @file:UiComposable verwenden, wird damit angegeben, dass alle @Composable-Funktionen auf den Compose UI-Applier ausgerichtet sind. Eine Funktion, die auf einen anderen Applier ausgerichtet werden soll, muss die Zielmarkierungsanmerkung für den gewünschten Applier explizit angeben. (I40804)
  • Einführung einer neuen experimentellen, plattformunabhängigen Test-API: interface ComposeUiTest und fun runComposeUiTest(block: ComposeUiTest.() -> Unit), mit denen Compose-UI-Tests ohne TestRule ausgeführt werden können. Wenn Sie einen Test ohne ComposeTestRule ausführen möchten, übergeben Sie den Test als Lambda an runComposeUiTest und verwenden Sie die Methoden und Mitglieder im Empfängerbereich ComposeUiTest, die mit denen in ComposeContentTestRule identisch sind.

    Die Android-spezifischen interface AndroidComposeUiTest und fun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit) werden hinzugefügt, um Zugriff auf die zugrunde liegende Aktivität zu gewähren, ähnlich wie bei AndroidComposeTestRule. Für noch mehr Kontrolle können Sie eine class AndroidComposeUiTestEnvironment selbst instanziieren.

    Die Desktop-Implementierung ist die class DesktopComposeUiTest. Derzeit werden jedoch keine desktopspezifischen Ausführungsfunktionen angeboten.

    So können Sie einen Test von ComposeTestRule zu ComposeUiTest migrieren (Android-Beispiel). Von:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @get:Rule val rule = createComposeRule()
        @Test
        fun test() {
            rule.setContent {
                Text("Hello Compose!")
            }
            rule.onNodeWithText("Hello Compose!").assertExists()
        }
    }
    

    Sie haben folgende Optionen:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @Test
        @OptIn(ExperimentalTestApi::class)
        fun test() = runComposeUiTest {
            setContent {
                Text("Hello Compose!")
            }
            onNodeWithText("Hello Compose!").assertExists()
        }
    }
    
  • Derzeit sind ComposeContentTestRule und ComposeTestRule keine Erweiterungen von ComposeUiTest. Das bedeutet, dass Erweiterungsfunktionen für ComposeUiTest noch nicht über die TestRule-Benutzeroberfläche aufgerufen werden können. Wenn ComposeUiTest zur stabilen API wird, werden ComposeContentTestRule und ComposeTestRule so geändert, dass sie von ComposeUiTest ausgehen. (Ib4e90)

  • LineHeightBehavior wird in LineHeightStyle umbenannt.

  • LineVerticalAlignment wird in LineHeightStyle.Alignment umbenannt.

  • Umbenennen LineHeightTrim wird in LineHeightStyle.Trim umbenannt

  • Standardkonstruktorwerte aus LineHeightStyle werden entfernt (I582bf, b/181155707).

  • Brush wurde zu TextStyle und SpanStyle hinzugefügt, um Text mit Farbverlauf zeichnen zu können. (I53869, b/187839528)

  • Die Attribute trimFirstLineTop und trimLastLineBottom von LineHeightBehavior wurden in ein einzelnes Enum geändert: LineHeightTrim. LineHeightTrim hat vier Status, die durch zwei Boolesche Werte definiert sind: FirstLineTop, LastLineBottom, „Beide“ und „Keiner“ (Ifc6a5, b/181155707)

  • LineHeightBehavior wurde zu TextStyle und ParagraphStyle hinzugefügt. Mit LineHeightBehavior wird festgelegt, ob die Zeilenhöhe auf den Anfang der ersten Zeile und auf das Ende der letzten Zeile angewendet wird. Außerdem definiert er die Ausrichtung der Linie in dem durch TextStyle(lineHeight) vorgegebenen Feld.

    So ist es beispielsweise möglich, ein Verhalten zu erzielen, das dem über LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false) definierten Verhalten von Preisvergleichsportalen ähnelt.

  • trimFirstLineTop- und trimLastLineBottom-Konfigurationen funktionieren nur dann richtig, wenn includeFontPadding auf „falsch“ gesetzt ist. (I97332, b/181155707)

  • Die Funktionen PlatformParagraphStyle.lerp und PlatformSpanStyle.lerp wurden in Funktionen der obersten Ebene geändert (I9a268).

Fehlerkorrekturen

  • In der PointerInputChange::copy-Dokumentation wird jetzt korrekt angegeben, dass es sich um eine oberflächliche Kopie handelt. (I182f5)
  • Unterstützung von Auslassungspunkten, wenn die Höhe begrenzt ist und nicht alle Textzeilen passen (Ie528c, b/168720622)
  • Standardmäßig aktiviert: includeFontPadding. Sie können includeFontPadding mit dem Attribut TextStyle.platformTextStyle deaktivieren. In naher Zukunft werden wir das Standardverhalten ändern. Bis dahin können wir jedoch Verbesserungen an der Zeilenhöhe (aosp/2058653) besser integrieren und TextField-Clipping-Probleme beheben. (I01423, b/171394808)

Externer Beitrag

  • MouseInjectionScope.scroll(delta = someDelta) wird jetzt auf Android-Geräten umgekehrt, wenn vertikal gescrollt wird. Wenn someDelta positiv ist, wird nach unten gescrollt. (Ifb697, b/224992993)

Version 1.2.0-alpha08

20. April 2022

androidx.compose.ui:ui-*:1.2.0-alpha08 wird veröffentlicht. Version 1.2.0-alpha08 enthält diese Commits.

API-Änderungen

  • Die pluralStringResource-Funktionen wurden als experimentell gekennzeichnet, um die zukünftige Internationalisierung für die Weiterentwicklung zu ermöglichen. (If24e4)
  • Für „Absatz“ und „Mehrere Absätze“ kann jetzt der Parameter „Einschränkungen“ verwendet werden. Wenn Sie Constraints.maxHeight übergeben, geschieht derzeit nichts. In Zukunft können Sie damit jedoch einige Berechnungen durchführen, z. B. eine elliptische Form basierend auf der Höhe. (I6afee, b/168720622)
  • Für SubcomposeSlotReusePolicy.getSlotsToRetain() wird jetzt eine benutzerdefinierte Klasse vom Typ „MutableSet“ akzeptiert, in der keine neuen Elemente hinzugefügt werden können. (Icd314)
  • „PointerIcon“ ist jetzt eine @Stable-Schnittstelle (I9dafe)
  • Der teilweise Verbrauch (nach unten ODER Position) wurde in PointerInputChange eingestellt. Mit consume() können Sie die Änderung vollständig übernehmen. Mit isConsumed kannst du feststellen, ob jemand anderes die Änderung bereits verwendet hat.
  • PointerInputChange::copy() erstellt jetzt immer eine flache Kopie. Das bedeutet, dass Kopien von PointerInputChange verbraucht werden, sobald eine der Kopien verbraucht wurde. Wenn Sie eine nicht gebundene PointerInputChange erstellen möchten, verwenden Sie stattdessen den Konstruktor. (Ie6be4, b/225669674)
  • Aktivieren Sie die verschachtelte Scroll-Interoperabilität zwischen „Compose“ und „View“ in der Richtung „Compose“ > „View“. Das bedeutet, dass ein übergeordneter Editor auch verschachtelte Scroll-Deltas aus einer verschachtelten Scroll-Ansicht empfangen kann. (If7949, b/174348612)
  • Neue SemanticsProperty testTagsAsResourceId, mit der Compose an UIAutomator-Tests angepasst werden kann, die für das View-System entwickelt wurden. (I39c20)
  • Wenn Sie FontFamily.SansSerif verwenden, werden alle verfügbaren Schriftschnitte für Systemschriften auf Android-Geräten angezeigt. In API 21–28 werden dann intern Fallback-Schriftnamen wie „sans-serif-medium“ verwendet. Dies ist eine Verhaltensänderung, da bisher nur die Gewichtungen 400 und 700 von API 21 bis 28 unterstützt wurden. (I380fe, b/156048036, b/226441992)
  • Bei Absätzen und mehreren Absätzen wurden Positionsargumente vor die optionalen Argumente verschoben. (Idafaa)
  • AndroidFont nimmt jetzt typefaceLoader als Konstruktorparameter an. (I2c971)

Version 1.2.0-alpha07

6. April 2022

androidx.compose.ui:ui-*:1.2.0-alpha07 wird veröffentlicht. Version 1.2.0-alpha07 enthält diese Commits.

API-Änderungen

  • Die neue Funktion Snapshot.withoutReadObservation { ... } wurde hinzugefügt. So können Nutzer das übergebene Lambda ausführen, ohne die Änderungen der Statuswerte zu abonnieren, die in diesem Block gelesen werden. Diese Funktion kann in Anwendungsfällen nützlich sein, in denen Sie von den snapshotbasierten threadsicheren Schreib-/Lesevorgänge profitieren möchten, den Wert aber lesen möchten, ohne unnötige Neuzusammensetzungen oder Neumessungen zu verursachen. (I9f365, b/214054486)
  • Mit der Erweiterungseigenschaft consumeWindowInsets von ComposeView können Entwickler die Nutzung von Android WindowInsets deaktivieren. So können separate ComposeViews in der Hierarchie jeweils WindowInsets anwenden, ohne sich gegenseitig zu stören. (I0ef08, b/220943142)
  • KeyboardType.Decimal wurde als Alternative zu Keyboard.Number hinzugefügt, um das Dezimaltrennzeichen speziell in die Eingabemethode einzuschließen. (Iec4c8, b/209835363)
  • PointerEventType.Scroll und PointerEvent.scrollDelta sind jetzt stabile APIs (I574c5, b/225669674)
  • Hiermit wird die Interoperabilität zwischen „View“ und „Compose“ für zusammengehörige View-Klassen aktiviert. Das bedeutet, dass das Editor-Tool jetzt Scroll-Deltas an ein übergeordnetes Element der übergeordneten Datenansicht (mitwirkend) senden kann. (I5d1ac, b/174348612)
  • FontFamily.Resolver wurde aktualisiert, um die systemweite Einstellung für fett formatierten Text zu integrieren (I6c1e7)
  • Font(AssetManager, String, ...) wurde verworfen und durch Font(String, AssetManager, ...) ersetzt. Dies ist eine experimentelle API. (I1c7a4)
  • Fügen Sie den neuen Schriftart-Beschreibungsblock Font(DeviceFontFamilyName) hinzu, um bei Schriftart-Fallback-Ketten optional systeminstallierte Schriftarten abzurufen. (I30468, b/219754572)
  • Es wurde eine temporäre Kompatibilitätskonfiguration für includeFontPadding in TextStyle/ParagraphStyle hinzugefügt. includeFontPadding kann über TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)) geändert werden. Dies ist eine vorübergehende Konfigurationsoption, um die Migration zu aktivieren. Sie wird entfernt. (If47be, b/171394808)
  • GoogleFont.Provider.isAvailableOnDevice-Erweiterung für Hilfe bei der Fehlerbehebung hinzufügen. (I64e31)
  • GoogleFont.Provider-Konstruktor für die Verwendung mit @ArrayRes hinzufügen (Ic5ee1, b/225984280)
  • Compose GoogleFont heißt jetzt Font(GoogleFont). Die API bleibt ansonsten stabil. (I125f2)

Fehlerkorrekturen

  • Dem Material/Scaffold wurde eine Lint-Prüfung hinzugefügt, um sicherzustellen, dass das innere Padding verwendet wird (Ifb111)

Version 1.2.0-alpha06

23. März 2022

androidx.compose.ui:ui-*:1.2.0-alpha06 wird veröffentlicht. Version 1.2.0-alpha06 enthält diese Commits.

API-Änderungen

  • Die RequestFocus-Semantikaktion wurde hinzugefügt, um den Fokus auf das fokussierbare Ziel zu setzen. (I17b71)
  • Das Parsen von Vektorgrafiken wurde aktualisiert, um die automatische Spiegelung zu unterstützen, mit der der Inhalt einer VectorPainter gedreht wird, wenn die aktuelle Layoutrichtung „Rechts nach links“ ist. (I79cd9, b/185760237)
  • Die Schatten-/Umgebungsfarben wurden zu nachgestellten Parametern von Modifier.graphicsLayer geändert, um die API-Kompatibilität zu verbessern (I3f864, b/160665122)

  • Standardimplementierungen für Schatten-/Umgebungsfarbe in GraphicsLayerScope hinzugefügt, um abwärtskompatible API-Änderungen zu ermöglichen

  • Veranstaltungszeit zu RSB-Veranstaltungen hinzugefügt (Ief8ae)

  • FocusOrder wurde jetzt in FocusProperties zusammengeführt und focusProperties() bietet jetzt alle Funktionen von focusOrder(). FocusOrder und focusOrder() wurden eingestellt. focusOrder(), das ein focusRequester akzeptiert, sollte durch einen focusRequester()-Modifikator in Kombination mit focusProperties() ersetzt werden. So können die Modifikatoren besser voneinander getrennt werden. (I601b7)

  • Wenn Sie sowohl RecyclerView als auch Compose aktualisieren, wird die Scrollleistung von RecyclerViews mit Compose-Ansichten als untergeordnete Elemente jetzt deutlich verbessert.

  • ViewCompositionStrategy.Default hinzufügen, um die integrierte Standardstrategie abzurufen

  • Fügen Sie ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer hinzu. Dies ist die neue Standardstrategie, die das Pooling von Containern wie RecyclerView korrekt verarbeitet. (If7282)

  • Es wurde die Unterstützung für Anmerkungsklassen mit @Preview hinzugefügt, als erster Schritt zur Einführung der Funktion „Mehrere Vorschaubilder“. Solche Anmerkungen könnten verwendet werden, um zusammensetzbare Methoden oder andere Anmerkungsklassen zu annotieren, die dann als indirekt mit der gegebenen @Preview annotiert angesehen werden könnten. (I12eff)

  • Referenzgeräte wurden der Geräteliste für @Preview (I071c9) hinzugefügt

Fehlerkorrekturen

  • Die APIs für Vektorgrafiken wurden aktualisiert, um die richtige Anmerkung „@VectorComposable“ anstelle von „@UiComposable“ zu verwenden (I942bc)
  • Querverweis aus AnnotatedString.Builder.withStyle (If84d5) entfernen

Externer Beitrag

  • compose-ui: GraphicsLayerScope-Properties ambientShadowColor und spotShadowColor hinzufügen (I1ba1a, b/160665122)
  • Mehrere Ressourcen werden jetzt über die pluralStringResource-Funktionen unterstützt. (Ib2f23, b/191375123)

Version 1.2.0-alpha05

9. März 2022

androidx.compose.ui:ui-*:1.2.0-alpha05 wird veröffentlicht. Version 1.2.0-alpha05 enthält diese Commits.

API-Änderungen

  • Für TextToolbar werden jetzt Lambda-Argumente anstelle von ActionCallback verwendet. (Ib2eb9, b/197950089)
  • Die Nullbarkeit in „core“ und „appcompat“ wurde an Tiramisu DP2 (I0cbb7) angepasst.
  • Die gemessene Benutzeroberfläche enthält jetzt die Property „parentData“ (I3313f).
  • Modifier.onPlaced und die OnPlacedModifier-Benutzeroberfläche sind jetzt stabil. (Ib5482)
  • Super! Die Einstellung „Animator duration scale“ (Animationsdauerskala) in den Entwickleroptionen wird jetzt bei der Erstellung von Animationen unterstützt. (I5a4fc, b/161675988)
  • Lokale BeyondBoundsLayout-Anpassung hinzugefügt (If8b51, b/184670295)
  • Text: includeFontPadding ist jetzt standardmäßig deaktiviert. Die Clipping-Probleme infolge von includeFontPadding=false werden verarbeitet und bei hohen Skripts sollte kein Begrenzung auftreten. (I31c84, b/171394808)

Fehlerkorrekturen

  • ComposeContentTestRule.setContent löst jetzt eine IllegalStateException aus, wenn Sie versuchen, Inhalte festzulegen, die bereits vorhanden sind. (I888a5, b/199631334)
  • Ein Absturz, der durch den Inhalt der Zwischenablage beim Lesen aus der Zwischenablage auf Android-Geräten verursacht wurde, wurde behoben. (I06020, b/197769306)
  • Verbessern Sie die Scrollproben für das RSB. (I6a596)

Externer Beitrag

  • Aktualisiert auf Kotlinx-Coroutines 1.6.0 (I3366d)

Version 1.2.0-alpha04

23. Februar 2022

androidx.compose.ui:ui-*:1.2.0-alpha04 wird veröffentlicht. Version 1.2.0-alpha04 enthält diese Commits.

API-Änderungen

  • Die Funktionen ComposableTarget, ComposableTargetMarker und ComposableOpenTarget wurden hinzugefügt. Damit können Sie zur Kompilierungszeit Berichte dazu erhalten, wann eine zusammensetzbare Funktion auf einen Anwender angewendet wird, für den sie nicht vorgesehen ist.

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

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

  • Font(resId, ...) übernimmt „loadStrategy“ für die stabile API. (Ief3d2)

  • FontLoadingStrategy ist jetzt eine stabile API. (I1ee35, b/174162090)

  • Unterstützung des asynchronen Ladens von Schriftarten in Text (I77057, b/214587005)

  • Bridge API zum Konvertieren benutzerdefinierter Font.ResourceLoader in FontFamily.Resolver hinzufügen (Ia0060)

Fehlerkorrekturen

  • Vorausgesetzt, FontFamily.Resolver werden an Unterkompositionen wie Popup übergeben.
  • Die angegebenen Font.ResourceLoader werden an Unterkomponenten wie Pop-up übergeben. (I48fa5)

Version 1.2.0-alpha03

9. Februar 2022

androidx.compose.ui:ui-*:1.2.0-alpha03 wird veröffentlicht. Version 1.2.0-alpha03 enthält diese Commits.

API-Änderungen

  • Die notifyFocusedRect-Methoden in TextInputSession und TextInputService sind jetzt veraltet und werden nicht mehr aufgerufen. Verwenden Sie stattdessen BringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874)
  • Einführung der destroyDisplayListData-Methode in der RenderNode-Stub-Klasse (I1e659, b/216660268)
  • Es wurde eine neue API hinzugefügt, mit der Sie die untergeordneten Elemente von SubcomposeLayout, die Sie vorab zusammengestellt haben, vorab messen können. (I857ea)
  • Es wurde movableContentOf hinzugefügt, mit dem eine kombinierbare Lambda-Funktion in eine Lambda-Funktion umgewandelt wird, die ihren Status und die entsprechenden Knoten an jeden neuen Ort verschiebt, an dem sie aufgerufen wird. Wenn der vorherige Aufruf die Zusammensetzung verlässt, wird der Zustand vorübergehend beibehalten. Wenn ein neuer Aufruf der Lambda-Funktion in die Zusammensetzung eintritt, werden der Zustand und die zugehörigen Knoten an den Speicherort des neuen Aufrufs verschoben. Wenn kein neuer Aufruf hinzugefügt wird, wird der Status dauerhaft entfernt und Beobachter werden benachrichtigt.

    Wenn ein movableContentOf-Lambda in derselben Komposition mehrmals aufgerufen wird, werden für jeden Aufruf ein neuer Status und neue Knoten erstellt. Wenn Aufrufe die Komposition verlassen und neue Aufrufe eingehen, wird der Status in der Reihenfolge, in der sie aufgerufen werden, von den ersten ausgehenden Aufrufen zu den eingehenden Aufrufen verschoben. Alle Status, die nicht durch neue Aufrufe beansprucht werden, werden dauerhaft entfernt. (Ib4850)

  • FontFamilyResolver ist jetzt über LocalFontFamilyResolver.current verfügbar

  • createFontFamilyResolver(context) und createFontFamilyResolver(context, coroutineScope) wurden hinzugefügt, um neue FontFamily-Resolver außerhalb des Editors zu erstellen.

  • Für „Absatz“ und „Mehrere Absätze“ wird jetzt FontFamily.Resolver

  • TextLayoutResult.layoutInput.fontFamilyResolver enthält jetzt den für dieses Layout verwendeten Resolver. TextLayoutResult.layoutInput.resourceLoader wurde eingestellt, da er nicht mehr verwendet wird. (Id5a45, b/174162090)

  • Unterstützung für asynchrones und optionales Laden von Schriftarten mit Fallback-Verhalten Dieser Pfad wird von „Text“ und „Textfeld“ verwendet und über „FontFamilyResolver“ freigegeben.

  • Unterstützung für das Vorabladen von Schriftarten über FontFamilyResolver.preload

  • Mit FontFamilyResolver.setAsyncLoadContext kann der globale Koroutinekontext festgelegt werden, der zum Laden asynchroner Schriftarten verwendet wird. (I87fe8, b/174162090)

  • AndroidFont wurde hinzugefügt, eine neue Low-Level-API zur Bereitstellung neuer Typen von Ressourcendeskriptoren für Schriftarten unter Android. Beispiele: Laden von Schriftarten aus einem App-spezifischen Back-End, optionales Auffinden vorinstallierter Schriftarten auf dem Gerät oder Laden einer Schriftart aus einer Ressource, die von den aktuellen Font Factorys nicht bereitgestellt wird.

  • Die Font.ResourceLoaded API wurde um die Unterstützung für optionales und asynchrones Laden von Schriftarten erweitert. Es wird nicht empfohlen, dass Anwendungsentwickler diese API direkt verwenden. Informationen zum Hinzufügen neuer Schriftarten finden Sie unter AndroidFont.

  • Mit der Erweiterungsfunktion Font.AndroidResourceLoader kann eine Font.ResourceLoader außerhalb einer Komposition erstellt werden.

  • Dem Parameter loadingStrategy für ressourcenbasierte Schriftarten wurde ein Parameter hinzugefügt, um das asynchrone Laden zu ermöglichen, wenn die ressourcenbasierte Schriftart auf herunterladbare Schriftarten-XML verweist. (Ie5aea, b/174162090)

  • Der Typeface(FontFamily)-Konstruktor wurde verworfen. Bisher wurde diese Funktion verwendet, um Schriftarten vorab zu laden. Das kann bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern. Bei herunterladbaren Schriftarten kann dieser Aufruf 10 Sekunden lang blockiert werden. Verwenden Sie stattdessen FontFamilyResolver.preload.

  • fontResource(FontFamily): Typeface wurde eingestellt. Dies wurde früher zum Vorabladen von Schriftarten verwendet, was bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern kann. Verwenden Sie stattdessen FontFamilyResolver.preload (If8e7c, b/174162090).

  • Der SubcomposeLayoutState-Konstruktor, der maxSlotsToRetainForReuse akzeptiert, wurde eingestellt. Stattdessen gibt es einen neuen Konstruktor, der SubcomposeSlotReusePolicy akzeptiert. Diese neue Schnittstelle ermöglicht eine detailliertere Steuerung der Slots, die für die spätere Wiederverwendung beibehalten werden sollen. (I52c4d)

  • Die HSV- und HSL-Funktionen in Color werden als nicht experimentelle API bereitgestellt. Der Oklab-Farbraum ist jetzt eine öffentliche API. (I08fb6, b/180731008)

  • Das AndroidComposeTestRule.AndroidComposeStatement wurde verworfen, da es nicht für die öffentliche API vorgesehen war und für Sie nichts bewirkt hat. (Ibc46b)

  • Intern generierte kt-Klassenbenennung (Ia0b9e, b/174162090)

  • FontLoadingStrategy.values (I42a9d, b/174162090) entfernt

  • Der globale Schrift-Lademechanismus heißt jetzt FontFamilyResolver. (I4f773, b/174162090)

  • Neues System zum Laden von Schriftarten für Computer verwenden (I9ce5c, b/174162090)

  • FontFamily.Resolver.resolve gibt State<Any> zurück (I4406c, b/174162090)

Fehlerkorrekturen

  • Textfelder werden jetzt über der Tastatur angezeigt, wenn sie den Fokus haben und die Tastatur angezeigt wird, wenn der Modus für die Eingabehilfe ADJUST_PAN ist. (I8eaeb, b/190539358, b/192043120)
  • Auf dem Computer wird die lokale Zusammensetzung für „FontFamily.Resolver“ verwendet
  • FontLoader wurde für Computer eingestellt
  • Neue createFontFamilyResolver-Fabrik auf dem Computer (I6bbbb, b/174162090)
  • Der Eingabetyp der Soft-Tastatur flackert nicht mehr, wenn der Fokus zwischen Textfeldern wechselt. (I1bf50, b/187746439)

Version 1.2.0-alpha02

26. Januar 2022

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

API-Änderungen

  • Modifier.onRotaryScrollEvent() und Modifier.onPreRotaryScrollEvent() für Wear-Geräte mit einer drehbaren seitlichen Taste hinzugefügt (I18bf5, b/210748686)
  • Experimentelle View.createLifecycleAwareRecomposer-Erweiterung (I0cde6) hinzufügen

Externer Beitrag

  • PointerEvent.scrollDelta.y ist jetzt auf Android-Geräten invertiert. Wenn das Mausrad nach rechts geneigt wird, wird jetzt „1“ statt „-1“ zurückgegeben. (Ia9811)

Version 1.2.0-alpha01

12. Januar 2022

androidx.compose.ui:ui-*:1.2.0-alpha01 wird veröffentlicht. Version 1.2.0-alpha01 enthält diese Commits.

API-Änderungen

  • FontFamily.canLoadSynchronously wurde eingestellt. Dieses Attribut hat keine semantische Bedeutung. (Ica5ef)
  • Dem Feld CompositionData wurde ein Identitätsfeld hinzugefügt, um im Layout-Inspektor invariante IDs zu generieren. (Ic116e)
  • Wear OS-Geräte-IDs wurden der Liste der Vorschaugeräte hinzugefügt (I93232).

Abhängigkeitsupdates

  • Jetzt abhängig von Kotlin-1.6.10.

Version 1.1

Version 1.1.1

23. Februar 2022

androidx.compose.ui:ui-*:1.1.1 wird veröffentlicht. Version 1.1.1 enthält diese Commits.

Fehlerkorrekturen

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

Version 1.1.0

9. Februar 2022

androidx.compose.ui:ui-*:1.1.0 wird veröffentlicht. Version 1.1.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.0.0

  • Stabile Unterstützung für den Overscroll-Effekt von Android 12
  • Verbesserungen bei der Größe von Berührungszielbereichen
    • Im Vergleich zu Compose 1.0 wird der Layoutbereich von Materialkomponenten erweitert, um die Richtlinien für Bedienungshilfen von Material Design für die Größe von Touch-Zielelementen einzuhalten. So wird beispielsweise der Berührungszielbereich einer Schaltfläche auf eine Mindestgröße von 48 x 48 dp erweitert, auch wenn Sie die Größe der Schaltfläche kleiner festlegen. Dadurch wird das Kompositionsmaterial auf das gleiche Verhalten der Material Design-Komponenten abgestimmt, was ein einheitliches Verhalten ermöglicht, wenn du „View“ und „Compose“ mischst. Durch diese Änderung werden auch die Mindestanforderungen an die Barrierefreiheit von Touch-Zielen erfüllt, wenn Sie Ihre Benutzeroberfläche mit Compose Material-Komponenten erstellen.
  • Stabile Unterstützung für den Navigationsstreifen
  • Eine Reihe zuvor experimenteller APIs wird in stabile APIs überführt
  • Unterstützung für neuere Kotlin-Versionen

Version 1.1.0-rc03

26. Januar 2022

androidx.compose.ui:ui-*:1.1.0-rc03 wird veröffentlicht. Version 1.1.0-rc03 enthält diese Commits.

Fehlerkorrekturen

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

Version 1.1.0-rc01

15. Dezember 2021

androidx.compose.ui:ui-*:1.1.0-rc01 wird veröffentlicht. Version 1.1.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler wurde behoben, durch den die Bildlaufaktionen für die Barrierefreiheit fehlten (I7cbfb)
  • SemanticsNodeInteraction.captureToImage() funktioniert jetzt auch, wenn HardwareRenderer.isDrawingEnabled() = false ist. Dazu muss es für die Dauer des Anrufs aktiviert werden (Idf3d0).

Version 1.1.0-beta04

1. Dezember 2021

androidx.compose.ui:ui-*:1.1.0-beta04 wird veröffentlicht. Version 1.1.0-beta04 enthält diese Commits.

Neue Funktionen

  • Aktualisiert für die Kompatibilität mit Kotlin 1.6.0

API-Änderungen

  • Bereinigung der Nullbarkeit in androidx.core.view (I7078a, b/204917439)
  • Es wurden experimentelle APIs hinzugefügt, mit denen Nutzer PointerInputchange als Ganzes nutzen oder prüfen können, ob sie verwendet wurde. (I2e59d)
  • Unterstützung für Mausrad-Ereignisse in der UI-Ebene (Ia14eb, b/198214718)
  • Fügen Sie experimentelle Modifier.composed-Überlastungen hinzu, die Schlüssel für den Vergleich auf Gleichheit akzeptieren und zum Überspringen von Optimierungen berechtigt sind. (Ice799, b/205851704)
  • ComposeNotIdleException geht jetzt von Exception aus und nicht direkt von Throwable. Das bedeutet, dass Catch-Sätze, die zuvor Exception abgefangen haben, jetzt möglicherweise ComposeNotIdleException abfangen. (I9c217)

Fehlerkorrekturen

  • Text-Ziehpunkte bewegen sich nicht mehr, wenn sich die Sichtbarkeit der IME ändert. (I25f2e)

Version 1.1.0-beta03

17. November 2021

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

API-Änderungen

  • Der neue Modifikator „Modifier.onPlaced“ wurde hinzugefügt, um die Platzierung zu erfassen. Basierend auf der beobachteten Placement-Änderung können daher weitere Änderungen am Offset des untergeordneten Modifiers vorgenommen werden. (I558fd)
  • InjectionScope.flush() und InjectionScope.dispose() wurden entfernt. Das Ausgeben aller Ereignisse und das Entfernen des Gültigkeitsbereichs erfolgt jetzt wie zuvor am Ende der aufgerufenen Methode „perform*Input()“. (I2bed8)
  • MultiModalInjectionScope.Touch und MultiModalInjectionScope.Mouse wurden entfernt. Wenn Sie Touch- und Mausereignisse für multimodale Touch-Gesten einfügen möchten, können Sie jetzt MultiModalInjectionScope.touch() und MultiModalInjectionScope.mouse() verwenden. Beide akzeptieren ein Lambda, das den Empfängerbereich dieser Modalität hat. (Idde18)

Fehlerkorrekturen

  • Der Standardwert für durationMillis in TouchInjectionScope.swipeWithVelocity wird jetzt so berechnet, dass das Wischen möglich ist. (I19deb)

Version 1.1.0-beta02

3. November 2021

androidx.compose.ui:ui-*:1.1.0-beta02 wird veröffentlicht. Version 1.1.0-beta02 enthält diese Commits.

API-Änderungen

  • Die experimentelle BringIntoView API wurde hinzugefügt. Damit können Sie eine Anfrage an die Eltern senden, damit sie scrollen, um einen Artikel in den Blick zu bekommen (Ib918d, b/195353459)
  • Neue Animations-APIs für die Unterstützung von Tools. Insbesondere ermöglichen sie es, mithilfe von Tools die Animationen und ihre Konfigurationen in Übergängen zu prüfen. (I4116e)

Externer Beitrag

  • Modifier.pointerHoverIcon (I95f01) wurde hinzugefügt.

Version 1.1.0-beta01

27. Oktober 2021

androidx.compose.ui:ui-*:1.1.0-beta01 wird veröffentlicht. Version 1.1.0-beta01 enthält diese Commits.

API-Änderungen

  • Es wurde eine experimentelle BringIntoView API hinzugefügt, mit der Sie eine Anfrage an Eltern senden können, damit sie scrollen, um einen Artikel sichtbar zu machen (Ib918d, b/195353459)
  • Neue Animations-APIs für die Unterstützung von Tools. Insbesondere ermöglichen sie es, mithilfe von Tools die Animationen und ihre Konfigurationen in Übergängen zu prüfen. (I4116e)

Version 1.1.0-alpha06

13. Oktober 2021

androidx.compose.ui:ui-*:1.1.0-alpha06 wird veröffentlicht. Version 1.1.0-alpha06 enthält diese Commits.

API-Änderungen

  • Entfernen Sie ExperimentalComposeUiApi aus ViewRootForInspector und LayoutInfo.ownerViewId (I5c2e3)
  • Eine Überlastung ohne Kinder für Layout wurde mit verbesserter Effizienz hinzugefügt (Ib0d9a).
  • InternalCompilerApi wurde aus Composer-Methoden entfernt, die modulübergreifend aufgerufen werden müssen (I1aa0b)
  • SemanticsNodeInteraction.performSemanticsAction gibt jetzt den SemanticsNodeInteraction-Wert zurück, auf dem die Funktion aufgerufen wurde. (I9e5db)
  • LocalInputModeManager CompositionLocal hinzugefügt, um den Touch- oder Nicht-Touch-Modus zu erkennen. (I6a83c, b/175899786)
  • viewConfiguration: ViewConfiguration wurde zu LayoutInfo hinzugefügt, damit Nutzer den richtigen Wert für Dinge wie eine Zeitüberschreitung beim langen Drücken erhalten. (I76ca6)
    • viewConfiguration: ViewConfiguration wurde zu InjectionScope hinzugefügt, damit Tests die Einschleusung der Eingabe anhand von Faktoren wie Zeitlimits durch langes Drücken oder Touch-Slop anpassen können.
    • Die Standarddauer für langes Drücken und Doppeltippen wurde sowohl für die Touch- als auch die Mauseingabe geändert. Sie basiert jetzt auf den Werten in InjectionScope.viewConfiguration.
  • Implementierung von „ExposedDropdownMenu“ basierend auf „ExposedDropdownMenuBox“ mit „TextField“ und „DropdownMenu“ (If60b2)
  • „closeOnOutsideClick“ wurde zu PopupProperties hinzugefügt, wodurch die eingestellte Funktion „ „ „distOnOutsideClick“ ersetzt" ersetzt wurde. Die neue Property empfängt die Klickposition und die Ankergrenzen, sodass Sie genauer festlegen können, ob onDismissRequest aufgerufen werden soll oder nicht. So lässt sich beispielsweise verhindern, dass der Anker bei Berührungen geschlossen wird.
    • „updateAndroidWindowManagerFlags“ wurde zu „PopupProperties“ hinzugefügt und bietet eine Low-Level-Steuerung der Flags, die vom Pop-up an den Android WindowManager übergeben werden. Der Parameter der Lambda-Funktion sind die Flags, die aus den PopupProperties-Werten berechnet werden und zu WindowManager-Flags führen, z.B. „focusable“. Das Ergebnis des Lambdas sind die endgültigen Flags, die an den Android WindowManager übergeben werden. Standardmäßig bleiben die aus den Parametern berechneten Flags durch updateAndroidWindowManagerFlags unverändert. Diese API sollte mit Vorsicht verwendet werden und nur in Fällen, in denen das Pop-up sehr spezifische Verhaltensanforderungen hat. (I6e9f9)
  • Recomposer.state wurde verworfen und durch Recomposer.currentState ersetzt, um seinen Typ in einen StateFlow zu ändern (Ic2ab3, b/197773820).
  • flush() und dispose() wurden zu InjectionScope hinzugefügt. Verwenden Sie sie, wenn Sie alle in der Warteschlange befindlichen Ereignisse sofort leeren bzw. den Bereich entfernen möchten. (Ifb73a)
  • Es wurde performScrollToNode(matcher: SemanticsMatcher) hinzugefügt, mit dem ein scrollbarer Container zu den Inhalten scrollt, die mit dem angegebenen Matcher übereinstimmen. (Ic1cb8)
  • InjectionScope unterstützt jetzt Density. So können Sie in performTouchInput und anderen Tools ganz einfach zwischen Pixeln (px) und Pixeldichte (dp) konvertieren. (I8fe1f)

Fehlerkorrekturen

  • AndroidView überträgt jetzt LocalLifecycleOwner und LocalSavedStateRegistryOwner über ViewTreeLifecycleOwner und ViewTreeSavedStateRegistryOwner an seine Ansicht. (I38f96, b/179708470)
  • Problem behoben, bei dem das WearOS-SwipeToDismissBox manchmal Wischbewegungen nicht verarbeitete. (I9387e)
  • Die Standardzeit zwischen den eingeschleusten Eingabeereignissen wurde von 10 ms auf 16 ms geändert. Dies kann sich auf das Ergebnis von Tests auswirken, bei denen Eingabegesten wie ein bestimmtes Wischen ausgeführt werden. (I829fd)

Version 1.1.0-alpha05

29. September 2021

androidx.compose.ui:ui-*:1.1.0-alpha05 wird veröffentlicht. Version 1.1.0-alpha05 enthält diese Commits.

API-Änderungen

  • Unterstützung für die Kommunikation zwischen Modifikatoren hinzugefügt (Id5467, b/198826874)
  • Es wurden experimentelle historische Hinweise zu PointerEventChange hinzugefügt. (Ic1fd8, b/197553056, b/199921305)
  • density: Density und layoutDirection: LayoutDirection wurden zu LayoutInfo hinzugefügt. So können Nutzer von LayoutInfo die in LayoutInfo angezeigten Dimensionen und Positionen richtig interpretieren. (I002f1)
  • Es wurde experimentelle Unterstützung für das Einschleusen von Mausereignissen hinzugefügt. Verwenden Sie performMouseInput, um Mausereignisse zu senden, oder senden Sie Mausereignisse über die Mouse-Eigenschaft von MultiModalInjectionScope während einer multimodalen Eingabegeste mit performMultiModalInput. Eine Dokumentation der verfügbaren API finden Sie unter MouseInjectionScope. (Iaa4a8, b/190493367)

Fehlerkorrekturen

  • Die Unterstützung für die Barrierefreiheit bei scrollbaren Elementen (sowohl lazy als auch non-lazy) wurde korrigiert (I6cdb0)
  • TouchInjectionScope.swipeWithVelocity wurde verbessert. Sie akzeptiert jetzt mehr Eingabevariablen und schlägt Änderungen an der Eingabe vor, wenn kein Swipe-Element erstellt werden kann (I40fbe, b/182477143).

Version 1.1.0-alpha04

15. September 2021

androidx.compose.ui:ui-*:1.1.0-alpha04 wird veröffentlicht. Version 1.1.0-alpha04 enthält diese Commits.

API-Änderungen

  • PointerEvent hat jetzt eine PointerEventType, um Hover-Ereignisse zu unterstützen. (I091fa)
  • Untergeordneten Elementen erlauben, die Eingabe des Mauszeigers außerhalb der Grenzen des übergeordneten Elements zu akzeptieren. Eltern können diese Aufrufe mit der Property „PointerInputScope.alwaysInterceptChildEvents“ abfangen (I9eae3, b/192479655)
  • Verworfene performGesture und GestureScope, die durch performTouchInput und TouchInjectionScope ersetzt wurden. (Ia5f3f, b/190493367)
  • touchBoundsInRoot wurde zu SemanticsNode hinzugefügt. Es enthält die Mindestgröße für Berührungszielbereiche, damit Entwickler dafür sorgen können, dass Berührungszielbereiche die Mindestwerte für die Barrierefreiheit erreichen. (I2e14b, b/197751214)
  • Implementierung von „inspectable“ noch einmal durchführen (I927bc, b/191017532)
  • Parametername von „inspectable“ in „composed“ geändert (I3a482, b/191017532)
  • Einführung von performTouchInput und TouchInjectionScope als Ersatz für performTouchInput und TouchInjectionScope, was den Weg für andere Eingabemethoden wie die Maus ebnete.

    TouchInjectionScope hat dieselben Methoden wie GestureScope, mit Ausnahme von movePointerTo und movePointerBy, die in updatePointerTo und updatePointerBy umbenannt wurden. Alle anderen Methoden sind gleich.

    Das Verhalten von TouchInjectionScope ist fast identisch mit GestureScope, mit zwei kleinen Unterschieden:

    1. Wenn ein „down“-Ereignis gesendet wurde, während die Mauszeiger bewegt wurden, ohne dass ein „move“-Ereignis gesendet wurde (d. h. updatePointerTo() wurde verwendet, aber nicht move(), und dann wird down() aufgerufen), wurde bei der vorherigen Implementierung die Ereigniszeit vorangestellt und ein „move“-Ereignis gesendet, bevor das „down“-Ereignis gesendet wurde. Die neue Implementierung sendet weiterhin das Verschiebungsereignis, verlängert jedoch in diesem speziellen Szenario nicht die Ereigniszeit.
    2. Wenn ein „Weiter“-Ereignis gesendet wurde, während die Mauszeiger bewegt wurden, ohne dass ein „Bewegen“-Ereignis gesendet wurde (ähnlich wie oben), wurde bei der vorherigen Implementierung die Ereigniszeit vorangestellt und ein „Bewegen“-Ereignis gesendet, bevor das „Weiter“-Ereignis gesendet wurde. Bei der neuen Implementierung ist das nicht der Fall: Die neuen Positionen der Zeiger werden nur über das Ereignis „up“ widergespiegelt.

    Schließlich wird mit TouchInjectionScope die neue Methode currentPosition(pointerId: Int) eingeführt, um die aktuelle Position des gegebenen Zeigers abzurufen. (If1191, b/190493367)

Fehlerkorrekturen

  • Zulassen, dass sich die Grenzen des Berührungszielbereichs über den Clipbereich hinaus erstrecken, um ein Mindestmaß für den Berührungszielbereich festzulegen. (I43e10, b/171509422)
  • Auf Android 12-Geräten wird jetzt die Funktion „Stretch Overscroll“ unterstützt. (Iccf3c, b/171682480)

Version 1.1.0-alpha03

1. September 2021

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

Neue Funktionen

  • Compose 1.1.0-alpha03 wurde so aktualisiert, dass es von Kotlin 1.5.30 abhängt. (I74545)

API-Änderungen

  • Modifier.inspectable zum Umschließen anderer Modifikatoren hinzugefügt. (I1909b, b/191017532)
  • Die BlurredEdgeTreatment API wurde hinzugefügt, um Anwendungsfälle für das Unkenntlichmachen mithilfe gängiger Kombinationen von Clip-Flags und TileModes zu vereinfachen. Bei den meisten Anwendungsfällen werden entweder unscharfe Inhalte außerhalb der ursprünglichen Inhaltsgrenzen gerendert und Bereiche außerhalb dieser Grenzen mit transparentem Schwarz verwischt oder Inhalte an den Inhaltsgrenzen zugeschnitten, wobei der nächstgelegene Rand für Weichzeichnerkerne verwendet wird, die über die Inhaltsgrenzen hinausgehen. (I6b4b7, b/166927547)
  • Unterstützung für RenderEffect in Compose-Desktop Der Offset-Effekt und der Weichzeichner wurden eingeführt, um einem Teil der Kompositionshierarchie einfach Weichzeichnereffekte hinzuzufügen. (I0f6aa, b/166927547)
  • Die RenderEffect API wurde eingeführt, die optional für eine Modifier.graphicsLayer konfiguriert werden kann, um den Inhalt der Ebene selbst zu ändern. So können Sie den Inhalt eines Composeables und untergeordneter Composeables innerhalb einer Kompositionshierarchie unkenntlich machen. (I47c4d, b/166927547)
  • AwaitPointerEventScope hat jetzt die Methoden „withTimeout()“ und „withTimeoutOrNull()“ (I507f0, b/179239764, b/182397793)
  • In ViewConfiguration wurde eine Mindestgröße für den Berührungszielbereich hinzugefügt, die für die Semantik und die Eingabe per Mauszeiger verwendet wird, um die Barrierefreiheit zu verbessern. (Ie861c)
  • Unterstützung für TileMode.Decal hinzugefügt, die sich zum Definieren des Randverhaltens für Weichzeichner-basierte Rendereffekte eignet (I7e8ed, b/166927547)
  • performScrollToIndex, performScrollToKey, hasScrollToIndexAction und hasScrollToKeyAction sind jetzt stabile APIs (I142ae, b/178483889)
  • Testmethode zum Abrufen der zugeschnittenen Begrenzungen hinzugefügt (I6b28e)

Fehlerkorrekturen

  • Die Methode "isBounded" wurde aus BlurredEdgeTreatment entfernt. Stattdessen wird jetzt explizit geprüft, ob der Formparameter null ist. (I85d68)

Version 1.1.0-alpha02

18. August 2021

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

API-Änderungen

  • PointerEvent unterstützt jetzt das Lesen des Maustaste- und Tastaturmodiferstatus. (I6310c, b/180075467)
  • Für eingeblendete Touch-Gesten wird jetzt die Zeit der MainTestClock als „Source of Truth“ verwendet. Die aktuelle Uhrzeit für eingeschleuste Ereignisse in performGesture wird mit der aktuellen Uhrzeit der MainTestClock initialisiert. (Ifb364, b/192064452)
  • DpRect(DpOffset, DpSize)-Konstruktor hinzugefügt (I2cf16, b/194219828)
  • Die DpSize-Klasse wurde hinzugefügt (I7abb1, b/194219828)

Fehlerkorrekturen

  • Das XML-Parsing für Vektorgrafiken wurde aktualisiert, um ColorStateLists als Stammeigenschaften für die Farbtonung von VectorDrawables zu unterstützen. (I86915, b/195668138)

Version 1.1.0-alpha01

4. August 2021

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

API-Änderungen

  • Für RelocationRequester.bringIntoView kann jetzt ein Rechteck als Parameter verwendet werden, um einen Teil eines Composeables sichtbar zu machen (Ice2c5, b/194330245)
  • AnimatedImageVector und die zugehörigen APIs befinden sich jetzt im neuen Modul androidx.compose.animation:animation-graphics. (I60873)
  • Es wurde ein experimenteller Modifikator hinzugefügt, um Umsiedlungsanfragen zu verarbeiten. (I65a97, b/178211874)
  • Einführung der BrushPainter API, um das Zeichnen einer beliebigen Pinsel in einem Painter zu unterstützen, ähnlich wie ColorPainter

    Die Brush API wurde aktualisiert, sodass jetzt ein intrinsischer Größenparameter vorhanden ist, der in BrushPainter abgefragt wird (Ia2752, b/189466433).

  • Die Methode „DrawScope#drawImage“ wurde aktualisiert. Sie verwendet jetzt Quell- und Ziel-Rechtecke, um einen optionalen Parameter „FilterQuality“ zu verwenden. Dies ist nützlich für Pixelkunst, die verpixelt werden soll, wenn sie für pixelbasierte Grafiken verkleinert wird. BitmapPainter und Bild-Composable wurden aktualisiert, sodass auch ein optionaler FilterQuality-Parameter verwendet wird (Ie4fb0, b/180311607)

  • Die Methode GestureScope.advanceEventTime wurde hinzugefügt, um mehr Kontrolle über das Timing von Ereignissen in einer Geste zu geben (Ibf3e2).

Fehlerkorrekturen

  • Damit die Verkettung von Draw-Modifikatoren besser unterstützt werden kann, muss die Modifier.paint-Implementierung "drawsContent" aufrufen. Bisher wurde erwartet, dass Modifier.paint ein Endknoten in der Kette der Modifikatoren ist. Dadurch wird jedoch verhindert, dass es in einem zusammensetzbaren Container (z. B. einem Box) konfiguriert oder zusätzliche Verzierungen wie Modifier.paint().border() hinzugefügt werden. Durch den Aufruf von „drawContent“ nach dem Zeichnen des Inhalts des jeweiligen Malers durch Modifier.paint wird eine bessere Konsistenz des Verhaltens mit dem Modifikatormuster erreicht. (Ibb2a7, b/178201337, b/186213275)
  • Dialogfelder folgen jetzt dem Verhalten bei der Plattformgröße. Legen Sie usePlatformDefaultWidth auf „false“ fest, um dieses Verhalten zu überschreiben. (Iffaed, b/192682388)
  • InfiniteAnimationPolicy wurde zu :compose:ui verschoben (I5eb09, b/160602714)
  • Das Scrollen über semantische Aktionen für Lazy-Listen und reguläre Scrollkomponenten ist jetzt animiert (Id9066, b/190742024)

Version 1.0

Version 1.0.5

3. November 2021

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

Fehlerkorrekturen

  • Ein Absturz beim Tracking von „derivedStateOf“-Instanzen wurde behoben. (aosp/1792247)

Version 1.0.4

13. Oktober 2021

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

Abhängigkeitsupdates

  • Aktualisiert, um von Kotlin 1.5.31 abhängig zu sein

Version 1.0.3

29. September 2021

androidx.compose.ui:ui-*:1.0.3 wird veröffentlicht. Version 1.0.3 enthält diese Commits.

Aktualisierung der Abhängigkeiten

  • Aktualisiert und abhängig von Kotlin 1.5.30

Version 1.0.2

1. September 2021

androidx.compose.ui:ui-*:1.0.2 wird veröffentlicht. Version 1.0.2 enthält diese Commits.

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

Version 1.0.1

4. August 2021

androidx.compose.ui:ui-*:1.0.1 wird veröffentlicht. Version 1.0.1 enthält diese Commits.

Aktualisierung der Abhängigkeiten

  • Aktualisiert auf Kotlin 1.5.21.

Version 1.0.0

28. Juli 2021

androidx.compose.ui:ui-*:1.0.0 wird veröffentlicht. Version 1.0.0 enthält diese Commits.

Wichtige Funktionen von 1.0.0

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

Bekannte Probleme

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

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

    Erhöhen Sie in der build.gradle-Datei vorübergehend die minSdkVersion auf mindestens 24, um das Problem zu beheben. Dieses Problem wird in der nächsten Version von Android Studio Bumblebee und AGP 7.1 behoben. (b/194289155)

Version 1.0.0-rc02

14. Juli 2021

androidx.compose.ui:ui-*:1.0.0-rc02 wird veröffentlicht. Version 1.0.0-rc02 enthält diese Commits.

Fehlerkorrekturen

  • Dialogfelder folgen jetzt dem Verhalten bei der Plattformgröße. Legen Sie usePlatformDefaultWidth auf „false“ fest, um dieses Verhalten zu überschreiben. (Iffaed, b/192682388)

Version 1.0.0-rc01

1. Juli 2021

androidx.compose.ui:ui-*:1.0.0-rc01 wird veröffentlicht. Version 1.0.0-rc01 enthält diese Commits.

Neue Funktionen

  • UI-Tooling-Modul in ui-tooling und ui-tooling-preview aufteilen (Iefa28, b/190649014)

API-Änderungen

  • Die eingestellten experimentellen FocusManager#moveFocusIn und FocusManager#moveFocusOut (I227d7, b/170154986, b/186567354, b/168510304) wurden entfernt.
  • Canvas unterstützt jetzt den Parameter „contentDescription“ für die Barrierefreiheit. (Ib547c)
  • useDefaultMaxWidth in PopupProperties wurde in usePlatformDefaultWidth umbenannt. (I05710)
  • Dialogfelder können jetzt die gesamte Bildschirmbreite nutzen. (I83929, b/190810877)
  • Es wurde experimentelle Unterstützung für HSV- und HSL-Farbdarstellungen hinzugefügt. (Id7cf8, b/180731008)

Änderungen im Verhalten

  • Compose @Preview bietet jetzt eine LocalActivityResultRegistryOwner, mit der Sie eine Vorschau von Composables mit APIs wie rememberLauncherForActivityResult() anzeigen können, die davon abhängen, dass dieser Inhaber vorhanden ist. (Ib13d1, b/185693006)
  • Compose @Preview bietet jetzt eine LocalOnBackPressedDispatcherOwner, mit der Sie eine Vorschau von Composables mit APIs wie BackHandler anzeigen können, die davon abhängen, dass dieser Inhaber vorhanden ist. (Ia1c05, b/185693006)

Fehlerkorrekturen

  • InfiniteAnimationPolicy wurde nach androidx.compose.ui:ui verschoben (I5eb09, b/160602714)
  • „AnimatedImageVector“ wurde vorübergehend entfernt, um die Modulstruktur zu ändern. (I41906, b/160602714)

Version 1.0.0-beta09

16. Juni 2021

androidx.compose.ui:ui-*:1.0.0-beta09 wird veröffentlicht. Version 1.0.0-beta09 enthält diese Commits.

API-Änderungen

  • Enum „Role“ und „LiveRegionMode“ in Inline-Klassen mit privatem Konstruktor ändern (Id1890)
  • KeyboardCapitalization wird in eine Inline-Klasse umgewandelt. (Id5a1c)
  • Ändern Sie „HapticFeedbackType“ in „Inline-Klasse“. (I255ec)
  • Modifier.pointerInteropFilter ist @ExperimentalComposeUiApi. (Iede6c)
  • TextAlign, FontSynthesis und TextDirection sind jetzt Inline-Klassen. (I212fe)
  • TextOverflow wird in eine Inline-Klasse geändert. (I433af)
  • FontStyle ist jetzt eine Inline-Klasse. (I9e48b)

Fehlerkorrekturen

  • Die wichtigsten Konstanten sind derzeit @ExperimentalComposeUiApi. Bei der Codeaufnahme können private Konstanten vor der Stabilisierung deklariert werden. (Ia5d48)
  • Compose-Tests können jetzt mit Robolectric ausgeführt werden. Bisher wurden folgende Einschränkungen ermittelt:
    • Da es keine native Bitmap gibt, führt ImageBitmap() zu einer NullPointerException.
    • Da es keine Zeichnung gibt, wartet captureToImage() auf unbestimmte Zeit auf den nächsten Zeichendurchlauf (d.h. es kommt zu einer Deadlock-Situation).
    • Es ist keine Schriftart geladen, daher wird jeglicher Text falsch gemessen. Alle Zeichen haben eine feste Höhe von etwa 20 Pixeln und eine Breite von 1 Pixel.
    • Bei ComposeTestRule.waitUntil {} wird der Hauptthread während des Wartens nicht ausgeführt. Daher ist er im Grunde mit ComposeTestRule.mainClock.advanceTimeUntil {} identisch. In Zukunft werden voraussichtlich weitere Einschränkungen erkannt. (I284fa)

Profilregeln hinzugefügt

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

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

Was sind Profilregeln?

  • Profilregeln für eine Bibliothek werden in einer Textdatei baseline-prof.txt im Verzeichnis src/main oder einem ähnlichen Verzeichnis angegeben. Die Datei enthält eine Regel pro Zeile. Eine Regel ist in diesem Fall ein Muster, das mit Methoden oder Klassen in der Bibliothek abgeglichen wird. Die Syntax dieser Regeln ist ein Superset des visuell lesbaren ART-Profilformats, das bei der Verwendung von adb shell profman --dump-classes-and-methods ... verwendet wird. Diese Regeln können auf eine von zwei Arten auf Methoden oder Klassen ausgerichtet werden.

  • Eine Methodenregel hat das folgende Muster:

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

    <CLASS_DESCRIPTOR>
    
  • Hier ist <FLAGS> eines oder mehrere der Zeichen H, S und P, um anzugeben, ob diese Methode als „Hot“, „Startup“ oder „Post Startup“ gekennzeichnet werden soll.

  • <CLASS_DESCRIPTOR> ist der Deskriptor für die Klasse, zu der die Zielmethode gehört. Die Klasse androidx.compose.runtime.SlotTable hätte beispielsweise den Deskriptor Landroidx/compose/runtime/SlotTable;.

  • <METHOD_SIGNATURE> ist die Signatur der Methode und enthält den Namen, die Parametertypen und die Rückgabetypen der Methode. Beispiel: Die Methode fun isPlaced(): Boolean von LayoutNode hat die Signatur isPlaced()Z.

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

Welchen Zweck haben die Regeln?

  • Eine Methode mit dem Flag H ist eine „heiße“ Methode und sollte vorab kompiliert werden.

  • Eine Methode mit dem Flag S wird beim Start aufgerufen und sollte vorab kompiliert werden, um die Kosten für die Kompilierung und Interpretation der Methode beim Start zu vermeiden.

  • Eine Methode mit dem Flag P wird nach dem Start aufgerufen.

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

So funktioniert's

  • Diese Regeln können in Bibliotheken definiert werden und werden in AAR-Artefakten verpackt. Wenn dann eine App erstellt wird, die diese Artefakte enthält, werden diese Regeln zusammengeführt und die zusammengeführten Regeln werden verwendet, um ein kompaktes binäres ART-Profil zu erstellen, das für die App spezifisch ist. ART kann dieses Profil dann nutzen, wenn die App auf Geräten installiert wird, um einen bestimmten Teil der Anwendung vorab zu kompilieren und so die Leistung der Anwendung zu verbessern, insbesondere beim ersten Ausführen. Hinweis: Dies hat keine Auswirkungen auf debuggbare Anwendungen.

Version 1.0.0-beta08

2. Juni 2021

androidx.compose.ui:ui-*:1.0.0-beta08 wurde veröffentlicht. Version 1.0.0-beta08 enthält diese Commits.

API-Änderungen

  • Die NestedScrollSource-Enumeration wird durch eine Inline-Klasse ersetzt. (Ie321b, b/187055290)
  • FocusManager.clearFocus(forcedClear = true) wird in FocusManager.clearFocus(force = true) (Ia0c41) umbenannt.
  • Die Verwendung von Enums wurde in Inline-Klassen umgestellt, um Probleme mit umfassenden Wenn-Beschreibungen zu vermeiden, wenn neue Enum-Werte hinzugefügt werden. (I2b5eb)
  • Entfernen Sie @ExperimentalComposeUiApi aus PopupProperties. (I01fa6)
  • PointerType wurde von einer Aufzählung in eine Inline-Klasse geändert (If5058)
  • „ContentDescription“ und „Text Semantik“ sind keine einzelnen Werte, sondern Listen. So können sie zusammengeführt werden, anstatt zusammengefügt zu werden. Außerdem wurden bessere Test-APIs zur Nutzung dieser Änderungen bereitgestellt (Ica6bf, b/184825850).
  • Modifier.focusModifier() wurde verworfen und durch Modifier.focusTarget() (I6c860) ersetzt.
  • Modifier.onSizeChanged() und Modifier.onGloballyPositioned() sind keine Inline-Funktionen mehr (I727f6, b/186109675).
  • Die KeyboardType-Enumeration wird durch eine Inline-Klasse ersetzt. (I73045, b/187055290)
  • FocusState-Enum durch eine FocusState-Schnittstelle ersetzt (Iccc1a, b/187055290)
  • Das ImeAction-Enum wird durch eine Inline-Klasse ersetzt. (I18be5, b/187055290)
  • PlaceholderVerticalAlign wird in eine Inline-Klasse konvertiert. (If6290)
  • TextUnitType ist jetzt eine Inline-Klasse. (I4cba9)
  • AnnotatedString.withAnnotation-Funktionen heißen jetzt ExperimentalTextApi anstelle von ExperimentalComposeApi. (I0cd0a)
    • Der TextUnit-Konstruktor mit TextUnitType ist jetzt ExperimentalTextApi anstelle von ExperimentalComposeApi.

Fehlerkorrekturen

  • Behebung des Fehlers, der in Beta 07 aufgetreten ist und durch den LazyColumn-/LazyRow-Elemente nach dem Scrollen teilweise angezeigt wurden (I8c9ac, b/188566058)
  • Die Positionsänderung wird jetzt für detectDragGesures, detectVerticalGestures und detectHorizontalGestures automatisch übernommen, sodass man change.consumePositionChange in den onDrag-Callbacks nicht aufrufen muss (I42fc4, b/185096350, b/187320697).
  • Ein Fehler bei Layout-Modifizierern, die Ausrichtungslinien bereitstellen, wurde behoben. Ein Fehler, der dazu führte, dass das übergeordnete Element nicht erneut gemessen wurde, als sich die Ausrichtungslinien der untergeordneten Elemente änderten, wurde behoben. (I4401f, b/174315652)
  • Modifier.onGloballyPositioned() wurde geändert, sodass die Koordinaten dieses Modifiers in der Modifikatorkette erfasst werden, nicht die Layoutkoordinaten nach Anwendung aller Modifikatoren. Das bedeutet, dass jetzt die Reihenfolge der Modifikatoren darüber entscheidet, welche Koordinaten erfasst werden. (Ieb67d, b/177926591)

Version 1.0.0-beta07

18. Mai 2021

androidx.compose.ui:ui-*:1.0.0-beta07 wird veröffentlicht. Version 1.0.0-beta07 enthält diese Commits.

API-Änderungen

  • ViewRootForInspector-Oberfläche für die Verwendung im Inspector hinzugefügt (Ib70df)
  • SubcomposeLayoutState unterstützt jetzt das Festlegen der Anzahl der wiederverwendbaren Slots. Das Layout hält bis zu dieser Anzahl von Slots aktiv, anstatt sie zu entsorgen, damit sie beim nächsten Mal wiederverwendet werden können, wenn wir einen neuen benötigen (Ieb981)
  • Das Enum „KeyEventType“ wurde durch eine Inline-Klasse ersetzt. (Id670a, b/187055290)
  • Die FocusDirection-Enumeration wird durch eine Inline-Klasse ersetzt. (Ib6d03, b/187055290, b/184086802)
  • Bietet die Möglichkeit, den SubcomposeLayout-Zustand zu heben, mit der Sie den Inhalt in eine erforderliche Slot-ID vorsetzen können, wodurch der nächste Messwert schneller übergeben wird, da beim nächsten Mal keine Zusammensetzung mit der angegebenen SlotId versucht wird. (I42580, b/184940225)
  • Ziehpunkt für Clip-Auswahl hinzugefügt (Iff80d, b/183408447)
  • Nicht verwendete APIs im Zusammenhang mit der LayoutInspector-Unterstützung wurden entfernt. (I2ac78)

Fehlerkorrekturen

  • Bei LazyColumn/Row bleiben jetzt bis zu zwei zuvor sichtbare Elemente aktiv (nicht entsorgt), auch wenn sie bereits ausgeblendet wurden. So können die aktiven Unterkompositionen von der Komponente wiederverwendet werden, wenn ein neues Element erstellt werden muss, was die Scrollleistung verbessert. (Ie5555)
  • TextGeomerticTransform und TextDecoration am AnnotatedString werden unverändert angewendet. (I61900, b/184760917)

Version 1.0.0-beta06

5. Mai 2021

androidx.compose.ui:ui-*:1.0.0-beta06 wird veröffentlicht. Version 1.0.0-beta06 enthält diese Commits.

API-Änderungen

  • Konflikt mit Navigationsgeste beheben (I1145e)
  • @ComposeCompilerApi nicht mehr @RequiresOptIn (Iab690)
  • Es wurden die Bedienungshilfen-APIs „CollectionInfo“ und „CollectionItemInfo“ hinzugefügt, mit denen Sammlungen und ihre Elemente für Bedienungshilfen gekennzeichnet werden können (Id54ef, b/180479017)
  • Es wurde die Taste SemanticsActions.ScrollToIndex hinzugefügt, um in einer Liste mit indexierten Elementen zum Element mit einem bestimmten Index zu scrollen, und die Taste SemanticsProperties.IndexForKey, um den Index eines Elements in einer Liste mit Schlüsselelementen abzurufen. Beide Aktionen werden von LazyList implementiert.
    • Es wurde SemanticsNodeInteraction.performScrollToIndex hinzugefügt, mit dem eine Liste zum angegebenen Index scrollt, und SemanticsNodeInteraction.performScrollToKey, mit dem eine Liste zum Element mit dem angegebenen Schlüssel scrollt. (I4fe63, b/178483889, b/161584524)
  • "ownerViewId" wurde zu GraphicLayerInfo (I19f62) hinzugefügt.
  • Es wurden Überladungen für Font() hinzugefügt, um Schriftarten aus Assets, Dateien und Dateibeschreibungen zu laden (I5d382)
  • Die Bedienungshilfen-API error wurde hinzugefügt, mit der ein Knoten mit ungültiger Eingabe markiert werden kann (I12997, b/180584804, b/182142737)
  • Font() Überladungen zum Laden von Schriftarten aus Assets, Dateien und Dateideskriptoren hinzugefügt (I43007)
  • Die Speicherung von AnnotatedString wird unter TextFieldValue.Saver unterstützt. Die Dienstfunktionen addTtsAnnotation und withAnnotation wurden zu AnnotatedString.Builder hinzugefügt (I8cbdc, b/178446304)
  • TextUnit-Konstruktorfunktion TextUnit(value: Float, type: TextUnitType) hinzugefügt (I7ecce, b/178446304)

Version 1.0.0-beta05

21. April 2021

androidx.compose.ui:ui-*:1.0.0-beta05 wurde veröffentlicht. Version 1.0.0-beta05 enthält diese Commits.

API-Änderungen

  • Die experimentellen Messwerte FocusManager.moveFocus(In) und FocusManager.moveFocus(Out) wurden hinzugefügt (Ic5534, b/183746743)
  • Experimentelle performTextInputSelection API hinzugefügt (I2dcbb, b/178510628)
  • Die InputEventCallback-Oberfläche wurde verworfen. Die Benutzeroberfläche konnte in keiner öffentlichen API verwendet werden und wurde auch nicht im Code verwendet. (I34a02, b/184003208)
  • Eingestellte TextLayoutResult/createTextLayoutResult-Funktion. Es handelt sich um eine nicht verwendete öffentliche Funktion, die zum Testen hinzugefügt wurde. Die Funktion ist für APIs zum Erstellen von Text nicht geeignet. Die Funktion wurde verworfen und wird später entfernt. (I80413)

Fehlerkorrekturen

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

Version 1.0.0-beta04

7. April 2021

androidx.compose.ui:ui-*:1.0.0-beta04 wird veröffentlicht. Version 1.0.0-beta04 enthält diese Commits.

API-Änderungen

  • Benennen Sie hideSoftwareKeyboard und showSoftwareKeyboard auf SoftwareKeyboardController in hide() und show() um.
    • Die vollständige CompositionLocal-Oberfläche für LocalSoftwareKeyboardController bereitstellen, damit sie festgelegt werden kann (besonders nützlich in Tests) (I579a6)
  • Die LiveRegion Accessibility API wurde hinzugefügt. Wenn der Knoten als Live-Bereich gekennzeichnet ist, werden die Nutzer von den Bedienungshilfen automatisch über Änderungen benachrichtigt (Idcf6f, b/172590946)
  • TextOverflow.Visible wurde eingeführt. (Ic8f89)

Fehlerkorrekturen

  • Das Problem wurde behoben, bei dem Elemente von LazyColumn/LazyRow an den Rändern nach einem schnellen Wischen falsch positioniert wurden (Ie4d13, b/183877420)
  • AndroidViewBinding entfernt jetzt ordnungsgemäß Fragmente, die über FragmentContainerView aufgebläht wurden, wenn AndroidViewBinding aus der Zusammensetzungshierarchie entfernt wird. (Ib0248, b/179915946)
  • AndroidViewBinding verschachtelt jetzt korrekt Fragmente, die über FragmentContainerView aufgebläht wurden, wenn sich ComposeView in einem Fragment befindet. Dadurch wurden Probleme beim Speichern und Wiederherstellen des Zustands dieser Fragmente behoben. (I70eb0, b/179915946)
  • Compose ViewBinding hängt jetzt von Fragment 1.3.2 ab und zeigt nach Konfigurationsänderungen jetzt konsistent Fragmente an, die über FragmentContainerView aufgebläht wurden. (I0743d, b/179915946)

Version 1.0.0-beta03

24. März 2021

androidx.compose.ui:ui-*:1.0.0-beta03 wird veröffentlicht. Version 1.0.0-beta03 enthält diese Commits.

API-Änderungen

  • Verschobene Prüfung auf ViewTree-Abhängigkeiten von ComposeView (I8dbbf, b/182466548)
  • Den Funktionen swipeUp/swipeDown/swipeLeft/swipeRight in GestureScope wurden optionale startX/endX- und startY/endY-Parameter hinzugefügt. (I49e2d, b/182063305)

Version 1.0.0-beta02

10. März 2021

androidx.compose.ui:ui-*:1.0.0-beta02 wird veröffentlicht. Version 1.0.0-beta02 enthält diese Commits.

API-Änderungen

  • Neue lokale LocalSoftwareKeyboardController-Komposition API hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I5951e, b/168778053)
  • Neue lokale API zur LocalSoftwareKeyboardController-Kompositionierung hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I84472, b/168778053)
  • Die folgenden SemanticsMatchers 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 SemanticsMatchers wurden hinzugefügt:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (I2f502)

Fehlerkorrekturen

  • Einschränkungen für die öffentliche Nutzung experimenteller APIs erzwingen (I6aa29, b/174531520)
  • androidx.compose.ui:ui hängt nicht mehr von AppCompat oder Fragment ab. Wenn Sie in Ihrer Anwendung eine ComposeView und Fragmente und/oder AppCompat verwenden, müssen Sie AppCompat 1.3 oder höher bzw. Fragment 1.3 oder höher verwenden. Diese Versionen sind erforderlich, um die Lebenszyklus- und gespeicherten Statuseigentümer für ComposeView korrekt festzulegen. (I1d6fa, b/161814404)
  • Behebung des Problems, dass rememberSaveable { mutableStateOf(0) } nicht funktionierte, wenn es in einem Ziel von navigation-compose verwendet wurde. (I1312b, b/180042685, b/180701630)
  • Neue lokale API zur LocalSoftwareKeyboardController-Kompositionierung hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I658b6, b/168778053)
  • Gelegentliche NoSuchElementException in ComposeRootRegistry's tearDownRegistry() (Iddce1) behoben

Version 1.0.0-beta01

24. Februar 2021

androidx.compose.ui:ui-*:1.0.0-beta01 wird veröffentlicht. Version 1.0.0-beta01 enthält diese Commits.

Dies ist die erste Version von Compose 1.0.0 Beta.

API-Änderungen

  • Der Rückruf „onStart“ wurde detectDragGestures hinzugefügt (I67269, b/179995594)
  • Modifikatoren zur Größenanpassung für intrinsische Elemente sind nicht mehr experimentell. (I15744)
  • MeasureBlocks wurde in MeasurePolicy umbenannt und hat eine ansprechende Benutzeroberfläche erhalten. Layout-APIs wurden aktualisiert / vereinfacht, um MeasurePolicy zu verwenden. (Icab48, b/167662468, b/156751158)
  • InteractionState wurde durch [Mutable]InteractionSource ersetzt
    • Oberflächen sind für das Senden / Erfassen von Interaktionsereignissen verantwortlich.
    • Anstatt interactionState = remember { InteractionState() } an Komponenten wie Button und Modifier.clickable() zu übergeben, verwenden Sie interactionSource = remember { MutableInteractionSource() }.
    • Anstatt Interaction.Pressed in interactionState sollten Sie stattdessen die Erweiterungsfunktionen von InteractionSource verwenden, z. B. InteractionSource.collectIsPressedAsState().
    • Bei komplexen Anwendungsfällen können Sie mit „InteractionSource.interactions“ den Stream der Interaktionen beobachten. Weitere Informationen finden Sie in der Dokumentation und in den Beispielen zu „InteractionSource“.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • AccessibilityManager-Schnittstelle und LocalAccessibilityManager in CompositionLocals hinzufügen (I53520)
  • Die veralteten LayoutCoordinates-Methoden wurden entfernt. Verwenden Sie für „positionInParent“ und „boundsInParent“ eine Funktion anstelle der Eigenschaft. (I580ed, b/169874631, b/175142755)
  • Aliasse wurden durch die zugrunde liegenden Typen ersetzt:
    • ColorStop heißt jetzt Pair<Float, Color>
    • SpanStyleRange ist jetzt „AnnotatedString.Range
    • ParagraphStyleRange heißt jetzt AnnotatedString.Range<ParagraphStyle>
    • StringAnnotation heißt jetzt AnnotatedString.Range<String>
    • (I8dd1a)
  • Neue TextInputSession für Eingabesitzungen von Textkomponenten auf niedriger Ebene wie CoreTextField erstellt. (I8817f, b/177662148)
  • „Placeable“ zeigt jetzt „measureSize“ an. Sie stellt die Größe dar, mit der das untergeordnete Layout tatsächlich gemessen wurde. Diese Größe entspricht möglicherweise nicht den Messbeschränkungen. (Ib2729, b/172560206, b/172338608)
  • Mit dem Modifikator „selectionGroup“ können mehrere Tabs oder Radiobuttons aus Gründen der Barrierefreiheit gekennzeichnet werden (Ie5c29)
  • defaultFactory für compositionLocalOf und staticCompositionLocalOf ist jetzt erforderlich statt optional.

    Durch diese Änderung wird ein potenzieller Typfehler für nicht null-wertige Typen behoben, für die keine Standard-Factory angegeben wurde. Bisher wurde dadurch eine Nullreferenz für einen Typ bereitgestellt, der keine Nullwerte zulässt.

    Für Typen mit zulässigen Nullwerten können Sie { null } als Standard-Factory angeben.

    Wir empfehlen nicht, lokale Variablen mit nicht nullwertigen Typen zu verwenden, es sei denn, ein sinnvoller Standardwert kann angegeben werden. Wenn kein sinnvoller Standardwert vorhanden ist, sollte die defaultFactory-Lambda-Funktion eine Ausnahme auslösen. Wenn jedoch eine Ausnahme ausgelöst wird, haben die Nutzer der lokalen Variablen eine implizite Abhängigkeit von der Bereitstellung, die vom Typsystem nicht erzwungen wird. (Ifbd2a)

  • Verworfene Methoden aus UI-Modulen wurden entfernt (I646f6)

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

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

  • Der teilweise Verbrauch wurde aus dem Eingabesystem für den Cursor entfernt. Die empfohlene Methode zur Koordination der teilweisen Nutzung ist Modifier.nestedScroll. (Ie9c9b)

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

  • „imageResource“ und „vectorResource“ sind jetzt Erweiterungsfunktionen für die Companion-Assets „ImageBitmap“ und „ImageVector“. load{Image,Vector,Font}Resource Funktionen wurden gelöscht. (I89130)

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

  • „Anbieter“ wurde in „CompositionLocalProvider“ umbenannt.

    • Der Kompositionskonstruktor akzeptiert keinen Schlüsselparameter mehr und wurde eingestellt.
    • „currentCompositeKeyHash“ wurde in eine zusammensetzbare Property auf oberster Ebene statt in eine zusammensetzbare Funktion auf oberster Ebene umgewandelt.
    • CompositionData und CompositionGroup wurden in den Namespace „androidx.compose.runtime.tooling“ verschoben
    • ComposableLambda wurde zu einer Schnittstelle anstelle einer konkreten Klasse gemacht und hat keine Typparameter mehr.
    • ComposableLambdaN wurde anstelle einer konkreten Klasse zu einer Schnittstelle gemacht und verfügt nicht mehr über Typparameter.
    • Die Funktion „snapshotFlow“ wurde in den Namespace „androidx.compose.runtime“ verschoben.
    • Die Zusammenführungsmethode von SnapshotMutationPolicy ist nicht mehr experimentell
    • Die Funktion „clearRoots“ auf oberster Ebene mit dem Attribut „@TestOnly“ wurde entfernt. Das ist nicht mehr erforderlich.
    • Die Funktionen „keySourceInfoOf“ und „resetSourceInfo“ wurden entfernt. Sie werden nicht mehr benötigt.
    • Composer.collectKeySourceInformation wurde entfernt. Das ist nicht mehr erforderlich.
    • Die Methoden „isJoinedKey“, „joinedKeyLeft“ und „joinedKeyRight“ wurden entfernt. Sie werden nicht mehr benötigt.
    • Verschiedene APIs der obersten Ebene wurden in verschiedene Dateien verschoben und neu angeordnet. Aufgrund der Dateiklassensemantik von Kotlin wird dadurch die Binärkompatibilität, aber nicht die Quellkompatibilität beeinträchtigt. Das sollte für die meisten Nutzer kein Problem darstellen.
    • (I99b7d, b/177245490)
  • ComponentActivity.setContent() wurde aus „compose:ui“ entfernt. Du kannst die von androidx.activity:activity-compose:1.3.0-alpha01 verwenden. viewModel() und LocalViewModelStoreOwner wurden aus compose:ui entfernt. Verwenden Sie die von androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 (I6f36b).

  • Modifier.scrollable wurde überarbeitet. Jetzt wird die Scrollable-Schnittstelle anstelle der ScrollableController-Klasse verwendet (I4f5a5, b/174485541, b/175294473)

  • Die Unterstützung von benutzerdefinierten Ereignissen für PointerInputModifier wurde entfernt (I02707, b/175294473)

  • SnapshotStateObserver ist nicht mehr experimentell (Id2e6a).

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

  • longPressGestureFilter und doubleClickGestureFilter wurden entfernt. Verwenden Sie Modifier.pointerInput mit Hilfsfunktionen wie detectTapGestures (I2fedf, b/175294473).

  • Die String.format API wurde entfernt und die Verwendung in verschiedenen toString-Methoden wurde umgestaltet, damit String.format nicht intern verwendet wird. (Id1290)

  • Entfernte dp-Behauptungen (I798d2)

  • androidx.compose.runtime:runtime-dispatch wurde entfernt (I55feb)

  • Bei Textaktionen wird der Fokus jetzt automatisch geprüft (I13777, b/179648629).

  • runBlockingWithManualClock (I15cdc, b/179664814) entfernt

  • Die Scrollposition in Modifier.verticalScroll()/horizontalScroll() wird jetzt mit Ganzzahlen dargestellt (I81298)

  • FlingConfig wurde in FlingBehavior umbenannt und ermöglicht jetzt die Anpassung der Schwebeanimation anstelle von vordefinierten Abklingzeiten. (I02b86, b/175294473)

  • Es wurde eine Hilfsfunktion hinzugefügt, mit der dieselbe Aktion für alle ImeAction-Callbacks festgelegt werden kann (I63447, b/179226323)

  • Der Rückruf von SoftwareKeyboardController wurde aus allen Textfeldern entfernt und wird bald durch eine neue API ersetzt. (Iae869, b/168778053)

  • FontSpan und FontWeigthStyleSpan werden nicht mehr verwendet und entfernt. (Ie5b56, b/177423444)

  • Die folgenden Änderungen wurden an der Material API vorgenommen:

    • Der Top/BottomAppBar-Parameter „contentPadding“ wurde hinzugefügt, um das Standardabstand anzupassen.
    • Die Parameter in BackdropScaffold wurden neu angeordnet, um den API-Richtlinien zu folgen, dass erforderliche Parameter vor optionalen Parametern stehen müssen.
    • Der Parameter icon in BottomNavigationItem wurde nach selected und onClick verschoben.
    • Der Parameter alwaysShowLabels in BottomNavigationItem wurde in alwaysShowLabel umbenannt.
    • bodyContent-Parameter in einigen Komponenten wurden in content umbenannt.
    • Die Parameter in ButtonDefaults.buttonColors() wurden neu angeordnet. Da sich der Typ der Parameter nicht geändert hat, verursacht dies keinen Fehler in Ihrem Code. Stellen Sie sicher, dass Sie entweder benannte Parameter verwenden oder die Reihenfolge manuell aktualisieren. Andernfalls funktioniert der Code nicht wie zuvor.
    • Der Parameter secondaryVariant wurde zu darkColors() hinzugefügt. Diese Farbe entspricht in der Regel der Farbe von secondary im dunklen Design, wird aber hinzugefügt, um für Einheitlichkeit und weitere Anpassungen zu sorgen.
    • ElevationDefaults und animateElevation() wurden von der öffentlichen API-Oberfläche entfernt, da sie im Allgemeinen nicht verwendet wurden bzw. nicht hilfreich waren.
    • onValueChangeEnd in Slider wurde in onValueChangeFinished umbenannt und als „nullable“ gekennzeichnet.
    • Der Parameter text in Snackbar wurde aus Gründen der Einheitlichkeit in content umbenannt.
    • Dem Parameter DropdownMenuItem wurde der Parameter contentPadding hinzugefügt, um das Standardabstand anzupassen. Außerdem wurde content zu einer Erweiterung von RowScope.
    • ModalDrawerLayout wurde in ModalDrawer umbenannt.
    • BottomDrawerLayout wurde in BottomDrawer umbenannt.
    • (I1cc66)

Fehlerkorrekturen

  • Es wurde eine API zur Verwendung von animateVectorDrawable-Ressourcen in Compose hinzugefügt. Mithilfe von „animatedVectorResource“ eine <animated-vector>-XML-Datei als „AnimatedImageVector“ laden und mit „painterFor“ animieren (I8ea91)
  • Neue lokale API für die Zusammensetzung von LocalSoftwareKeyboardController hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I658b6, b/168778053)

Version 1.0.0-alpha12

10. Februar 2021

androidx.compose.ui:ui-*:1.0.0-alpha12 wird veröffentlicht. Version 1.0.0-alpha12 enthält diese Commits.

API-Änderungen

  • Die Unterstützung für ViewGroups wurde aus UiApplier entfernt. Die veralteten emitView-Kompositionen wurden entfernt. (Ifb214)
  • Für Modifier.pointerInput sind jetzt Schlüssel zum Speichern erforderlich, um anzugeben, wann die Coroutine zur Erkennung der Eingabe per Mauszeiger für neue Abhängigkeiten neu gestartet werden soll. (I849cd)
  • CompositionReference wurde in CompositionContext (I53fcb) umbenannt
  • „Bounds“ wurde in „DpRect“ umbenannt (I4b32a).
  • Test-Update: hasText() sucht im Textfeld sowohl nach Eingabe- als auch Label-/Hinweisen/Platzhaltern (Iab803)
  • Die Komponente „viewModel()“ und „LocalViewModelStoreOwner“ wurden zu androidx.lifecycle.viewmodel.compose verschoben. Sie müssen jetzt eine separate Abhängigkeit hinzufügen: androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01, um sie zu verwenden. (I7a374)
  • Nullwertige Aktion in AccessibilityAction zulassen, Aktionslabel in AccessibilityAction und CustomAccessibilityAction von CharSequence in String ändern (I0dc82)
  • Um die Namenskonventionen besser an ImageBitmap und ImageVector anzupassen, wurde ImagePainter in BitmapPainter umbenannt, um Parallelität zu VectorPainter herzustellen. (Iba381, b/174565889)
  • Bessere APIs für den Test von Substrings, bei denen der Substring jetzt als Argument verwendet wird (Icbe78)
  • Es wurde eine Modifier.focusOrder() hinzugefügt, die einen FocusRequester akzeptiert, ohne eine benutzerdefinierte Fokusreihenfolge für ein Lambda anzugeben. Das ist nützlich, wenn wir für ein composable nur eine Referenz, aber keine benutzerdefinierte Fokusreihenfolge angeben müssen (I4f52a, b/179180978).
  • „ComponentActivity.setContent“ wurde nach androidx.activity.compose.setContent im Modul androidx.activity:activity-compose verschoben. (Icf416)
  • Die Destrukturierungs- und copy()-Methoden wurden aus mehreren Klassen entfernt, in denen sie nur selten verwendet wurden. (I26702, b/178659281)
  • Pop-ups sind jetzt plattformspezifisch. „AndroidPopupProperties“ wurde in „PopupProperties“ umbenannt und isFocusable wurde in PopupProperties zu einem focusable-Parameter verschoben (Ieeea5)
  • Dialogfeld wurde plattformspezifisch. AndroidDialogProperties wurde in DialogProperties umbenannt. (I4ef69, b/179138130)
  • LayoutNode wurde intern (I8a7b1, b/175103944)
  • Constraints.enforce wurde durch Constraints.constrain ersetzt. (I8b8ea)
  • „loadFontResource“ wurde eingestellt. Verwenden Sie stattdessen „fontResource“. „imageResource“, „loadImageResource“, „vectorResource“ und „loadVectorResource“ wurden eingestellt. Verwenden Sie stattdessen painterResource. (I6b809)
  • Aus Leistungsgründen werden für die ScrollAxisRange-Semantik jetzt Lambdas verwendet, die Floats zurückgeben, anstatt direkte Float-Werte. (If4a35, b/178657186)
  • Es wurde eine EditableText-Semantik hinzugefügt, um bearbeitbaren Eingabetext des Textfelds für Barrierefreiheit zu markieren, und entsprechende Testmethoden zur Prüfung der Semantik (I8e07a).
  • OwnerLayer/OwnerScope/OwnerSnapshotObserver wurden intern (I4ffaf, b/175103944)
  • „toIntPx()“ wurde in „roundToPx()“ umbenannt. (I9b7e4, b/173502290)
  • IntBounds wurde in IntRect umbenannt und die API wurde verbessert. (I1f6ff)
  • Die Snapshot API wurde aktualisiert, um sie an die API-Richtlinie anzupassen und interne Implementierungsklassen von der öffentlichen API auszublenden. (Id9e32)
  • Es wurden Aktionen zum Maximieren und Minimieren hinzugefügt. „expand“ und „halfExpand“ in „ModalBottomSheetState“ hinzugefügt (Ib5064)
  • Modifier.dragGestureFilter wurde eingestellt. Verwenden Sie stattdessen Modifier.pointerInput { detectDragGestures (...)}. Alternativ können Sie Modifier.draggable für das Ziehen entlang einer Achse verwenden (I0ba93, b/175294473)
  • Die Namen der Bildschirmschoner wurden umbenannt, damit sie mit der Umbenennung von „Ambient“ in „CompositionLocal“ übereinstimmen. Ambients hießen früher AmbientFoo, jetzt heißen sie CompositionLocals. (I2d55d)
  • Das verworfene BaseTextField wurde entfernt. Verwenden Sie stattdessen „BasicTextField“. (I71368)
  • Die Auswahl wurde in die Foundation verschoben. (I7892b)
  • Ähnlich wie zuvor entfernte die zusammensetzbare Funktion state { 0 } und jetzt die Verwendung wie remember { mutableStateOf(0) }, entfernen wir die zusammensetzbare Funktion savedInstanceState { 0 }. Verwenden Sie stattdessen rememberSaveable { mutableStateOf(0) }. Dieser wird automatisch gespeichert und wiederhergestellt, wenn der im MutableState verwendete Typ im Bundle gespeichert werden kann. Wenn Sie zuvor ein benutzerdefiniertes Speicherobjekt übergeben haben, müssen Sie jetzt eine neue Überladung von „rememberSaveable“ mit dem Parameter stateSaver verwenden. Die Verwendung sieht dann so aus: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)
  • Passwortsemantik für Barrierefreiheit hinzugefügt (I231ce)
  • ProgressBarRangeInfo.Indeterminate wurde hinzugefügt, um nicht befristete Fortschrittsanzeigen für die Barrierefreiheit zu kennzeichnen (I6fe05)
  • Die Dienstprogramme emptyContent() und (@Composable () -> Unit).orEmpty() wurden eingestellt, da sie sich nicht mehr positiv auf die Leistung auswirken (I0484d)
  • snapshotFlow und withMutableSnapshot sind nicht mehr experimentell (I6a45f)
  • Recomposeren können jetzt geschlossen werden. Geschlossene Rekompositionen werden fortgesetzt, bis die untergeordneten coroutines der Komposition abgeschlossen sind. Recomposer.shutDown wurde umbenannt, um den Vorgang abzubrechen und einen Kontrast mit dem Schließen zu bilden. (Ib6d76)
  • UiSavedStateRegistry wurde in SaveableStateRegistry, AmbientUiSavedStateRegistry in AmbientSaveableStateRegistry umbenannt und beide in das Paket androidx.compose.runtime.saveable verschoben. (I30224)
  • Das Artefakt „androidx:compose:runtime:runtime-saved-instance-state“ wurde in „androidx:compose:runtime:runtime-saveable“ (I6dcac) umbenannt
  • Viele seit langem eingestellte APIs im ui-Paket wurden gelöscht. (I2f2dc)
  • Das Artefakt „compose:runtime-dispatch“ wird jetzt eingestellt. MonotonicFrameClock finden Sie jetzt unter compose:runtime und AndroidUiDispatcher unter compose:ui. (Ib5c36)
  • Outline.*-Klassen sind keine Datenklassen mehr (I4879e, b/178001427)
  • view.captureToImage() ohne Ersatz entfernt. (I7fcd2)
  • Einführung der ColorMatrix API zum Ändern der RGB-Werte von Quellinhalten. Die ColorFilter API wurde zu einer Schnittstelle umgestaltet und der Implementierung von PathEffect angepasst. (Ica1e8)
  • Fügen Sie der createOutline-Funktion von Shape den Parameter „layoutDirection“ hinzu. So lassen sich layoutorientierte Formen erstellen. (I57c20, b/152756983)
  • onImeActionPerformed ist eingestellt. Verwenden Sie stattdessen KeyboardActions. (If0bbd, b/179071523)
  • Einführung eines InfiniteAnimationPolicy-Kontextelements für Tasks, das bei endlosen Animationen angewendet wird. Standardmäßig ist keine Richtlinie installiert, es sei denn, Sie führen Tests mit ComposeTestRule aus. (I50ec4, b/151940543)
  • canDrag wurde aus Modifier.scrollable entfernt. (Id66e7, b/175294473)
  • „LayoutCoordinates.parentCoordinates“ in „LayoutCoordinates.parentLayoutCoordinates“ umbenannt, um eine neue „parentCoordinates“-Property zu ermöglichen. Die Eigenschaft „parentCoordinates“ bietet jetzt die Layout-Koordinaten des übergeordneten Modifiers. Dies ermöglicht umfassendere Anwendungsfälle für onSizeChanged() und onGloballyPositioned() (Idfbfd, b/177926591).
  • Die Funktionen „tapGestureFilter“, „doubleTapGestureFilter“, „longPressGestureFilter“ und „pressIndicaitonGestureFilter“ wurden eingestellt. Verwenden Sie stattdessen Modifier.clickable oder Modifier.pointerInput mit der Funktion „detectTapGestures“. (I6baf9, b/175294473)
  • Die Funktion „unregisterProvider“ von SaveableStateRegistry wurde entfernt. Stattdessen gibt „registerProvider()“ jetzt das Objekt „SaveableStateRegistry.Entry“ zurück, mit dem Sie die Registrierung aufheben können (Ic4274, b/178583739)
  • memorySavedInstanceState() wurde in „memorySaveable()“ umbenannt und in das Paket „androidx.compose.runtime.saveable“ verschoben. (I1366e, b/177338004)
  • CoreText und CoreTextField aus der öffentlichen API entfernt
    • Veraltete Auswahlcontainer-Überlastung entfernt
    • (I99c19)
  • Tests, bei denen Compose in Hierarchien verwendet wird, die direkt dem WindowManager hinzugefügt oder daraus entfernt werden, sind jetzt stabiler. (Ie81ed, b/175765614)
  • Recomposer.current() wurde entfernt. [Abstrakt]ComposeView verwendet jetzt standardmäßig verzögert erstellte, fensterweite Recomposer, die vom ViewTreeLifecycleOwner für das Fenster gesteuert werden. Recomposition und mitFrameNanos-basierte Animations-Ticks werden pausiert, während der Lebenszyklus des Hosts angehalten ist. (I38e11)
  • „Recomposer.runningRecomposers“ bietet jetzt einen globalen StateFlow mit schreibgeschützten RecomposerInfos, um den laufenden Kompositionsstatus im Prozess zu beobachten. Diese API ist Recomposer.current() vorzuziehen, das jetzt eingestellt wird. (If8ebe)
  • Saver, listSaver(), mapSaver(), autoSaver wurden von androidx.compose.runtime.savedinstancestate zu androidx.compose.runtime.saveable verschoben (I77fe6)
  • EditCommands akzeptieren AnnotatedString. Diese Änderung betrifft jedoch nur die API. Die Textbearbeitung mit mehreren Stilen ist noch nicht implementiert. (I4c3ea)
  • „Uptime“ und „Dauer“ wurden entfernt. (Ib9bf4, b/177420019)
  • CompositionData.asTree() und zugehörige APIs wurden in ein separates UI-Tooling-Datenmodul verschoben und als experimentell gekennzeichnet (Ic95b8)
  • Die Parameter „left“ (links) und „right“ (rechts) von „RounderCornerShape“, „CutCornerShape“ und „CornerBasedShape“ wurden in „start“ (Anfang) und „end“ (Ende) umbenannt, um die automatische Spiegelung der Form in Richtung „rtl“ zu unterstützen. AbsoluteRounderCornerShape und AbsoluteCutCornerShape wurden für Fälle eingeführt, in denen keine automatische Spiegelung gewünscht ist. (I61040, b/152756983)
  • Die API, auf die das Compose-Compiler-Plug-in ausgerichtet ist, wurde so umgestellt, dass anstelle einer konkreten Klasse eine Schnittstelle verwendet wird. Auf der Benutzeroberfläche wird auch kein Typparameter mehr verwendet.

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

  • Entfernen der versehentlich öffentlichen Funktion „StringBuilder.deleteAt“ (Id6ed9)

Fehlerkorrekturen

  • ComposeViews in Ansichtshierarchien, die untergeordnete Elemente einer anderen Komposition sind, hosten jetzt untergeordnete Zusammensetzungen ihrer Ancestors (I92883).
  • Die imageFromResource-API von compose wurde aktualisiert, um den Cache für drawable-Ressourcen beim Laden von ImageBitmap-Objekten wiederzuverwenden. (If3627, b/178751994)

Version 1.0.0-alpha11

28. Januar 2021

androidx.compose.ui:ui-*:1.0.0-alpha11 wird veröffentlicht. Version 1.0.0-alpha11 enthält diese Commits.

API-Änderungen

  • WithConstraints wurde als BoxWithConstraints überarbeitet und zu "foundation.layout" verschoben. (I9420b, b/173387208)
  • Key.DPadUp wird nicht mehr unterstützt. Verwenden Sie stattdessen Key.DirectionUp. (Iab335, b/177954892)
  • Die Benutzeroberfläche für Rechteinhaber ist ab sofort nur noch intern verfügbar. (If8e35)
  • Die API „FocusManager.moveFocus()“ wurde hinzugefügt, um den Fokus programmatisch zu verschieben. (I045cb, b/177681839)
  • Ändert PopupPositionProvider so, dass fensterbezogene Koordinaten und keine globalen Koordinaten verwendet werden. parentGlobalBounds in anchorBounds umbenannt und windowGlobalBounds in windowSize: IntSize geändert (I2994a)
  • „Duration“ und „Uptime“ werden durch „Long milliseconds“ ersetzt. Dadurch wird die Abhängigkeit der Zeigereingabe von diesen Klassen aufgehoben. (Ia33b2, b/175142755, b/177420019)
  • AmbientSavedStateRegistryOwner wurde ähnlich wie die bereits vorhandenen AmbientLifecycleOwner und AmbientViewModelStoreOwner hinzugefügt (I9a3e8, b/176756365)
  • Die API für Vektorgrafiken wurde aktualisiert, um das Parsen von Tönungen zu unterstützen, die auf die Wurzel der Vektorgrafik angewendet werden. (Id9d53, b/177210509)
  • „toolType“ zu „PointerInputChange“ hinzugefügt, um Geräte zu unterscheiden (Iac787, b/175142755)
  • AmbientWindowManager wurde in AmbientWindowInfo umbenannt (I2686a, b/177084714, b/177084983).
  • Die Methoden für globale Koordinaten wurden eingestellt und neue Methoden für fensterbasierte Koordinaten eingeführt. (Iee284)
  • Hinzugefügt wurde Modifier.toolingGraphicsLayer, das einen Grafikebenen-Modifikator hinzufügt, wenn die Prüfung aktiviert ist. (I315df)
  • FocusRequester.createRefs ist jetzt als experimentell gekennzeichnet, da sich dies noch ändern kann. (I2d898, b/177000821)
  • SemanticsPropertyReceiver.hidden wurde in invisibleToUser umbenannt und mit @ExperimentalComposeUiApi gekennzeichnet. „AccessibilityRangeInfo“ wurde in „ProgressBarRangeInfo“ umbenannt. „stateDescriptionRange“ wurde in „progressBarRangeInfo“ umbenannt. „AccessibilityScrollState“ wurde in „ScrollAxisRange“ umbenannt. „horizontalAccessibilityScrollState“ wurde in „horizontalScrollAxisRange“ umbenannt. „verticalAccessibilityScrollState“ wurde in „verticalScrollAxisRange“ umbenannt. (Id3148)
  • „PointerInputData“ wurde entfernt und „PointerInputChange“ so geändert, dass es alle Felder von „PointerInputData“ enthält. PointerInputEvent und PointerInputEventData wurden intern gemacht, da sie in keiner öffentlichen API verwendet werden. (Ifff97, b/175142755)
  • Die Implementierungsdichte von GraphicsLayerScope wurde aktualisiert, um die Konvertierung von dp in Rohpixel zu unterstützen. (Ied528, b/176819695)
  • Die Matrix-API wurde aktualisiert, um der Zeilensortierung zu folgen und Indexkonstanten bereitzustellen, die bei der Umwandlung zwischen verschiedenen Matrixdarstellungen helfen, um die Framework-Umwandlungslogik zwischen SkMatrix und Matrix4 intern anzupassen. (I432e6)
  • Die experimentellen Methoden „monotonicFrameAnimationClockOf“ wurden entfernt (Ib753f, b/170708374)
  • String.fintPrecedingBreak und String.fingFollowingBreak in InternalTextApi verschieben (I657c4)
  • androidx.compose.ui.util.isSurrogatePair wurde aus der öffentlichen API entfernt. (Ia9494)
  • TransformedText.transformedText in TransformedText.text umbenannt
    • „TransformedText“ ist keine Datenklasse mehr (Ie672a)
  • data class wurde aus den folgenden Kursen entfernt:
    • InlineTextContent
    • LocaleList (I605c7)
  • Die folgenden Klassen sind keine Datenklassen mehr:
    • AnnotatedString
    • ParagraphStyle
    • Span-Stil
    • TextStyle
    • Schriftstärke
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutErgebnis
    • TextLayoutInput (Iaff99)
  • VisualTransformation wurde zu einer funktionalen Schnittstelle geändert (I3bba4)
  • Parametertyp für Funktionsreferenz hinzugefügt (I5e1bd)
  • Transformierte Grenzen zu InspectorNode (Ice42f) hinzufügen

Fehlerkorrekturen

  • onCommit, onDispose und onActive wurden zugunsten der SideEffect- und DisposableEffect-APIs eingestellt (If760e)
  • Änderungen an den Standardfunktionen für „Schrift“/„Schriftfamilie“/„Schriftschnitt“

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

  • „animateAsState“ heißt jetzt „animateFooAsState“, wobei „Foo“ der Typ der animierten Variablen ist, z. B. „Float“, „Dp“ oder „Offset“ (Ie7e25)

  • Dem Bild und dem Symbol wurde der Parameter „Inhaltsbeschreibung“ hinzugefügt. Sie wird verwendet, um Bedienungshilfen zu beschreiben (I2ac4c).

  • Entfernen Sie „displaySize“, da diese Option vermieden werden sollte. Normalerweise ist es besser, die Größe von onRoot() oder zumindest die Fenstergröße zu verwenden. (I62db4)

  • OnSizeChanged gab die Größe des Inhalts des Layouts an. Stattdessen wird jetzt die Größe an der Position innerhalb der Modifikatorkette angegeben. (I36b78, b/177562900)

  • Die emit() API und alle Überladungen wurden eingestellt und in ComposeNode umbenannt. Die APIs sind identisch, haben nur einen anderen Namen, um den Namenskonventionen von Compose zu entsprechen (I4137b).

  • Für „TextFieldValue“ ist „AnnotatedString“ zulässig. Dies ist jedoch nur eine API-Änderung und die Textbearbeitung mit mehreren Stilen ist noch nicht implementiert.

    • initial wurde aus den Parametern des Konstruktors von EditingBuffer entfernt. (I326d5)
  • invalid und summaryReference() wurden zugunsten von currentRecomposeScope bzw. memoryCompositionReference verworfen. (I583a8)

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

  • RememberObserver ersetzt CompositionLifecycleObserver und CompositionLifecycleObserver wird nicht mehr unterstützt.

    RememberObserver ersetzt CompositionLifecycleObserver mit geänderter Semantik und umbenannten Methoden. Für Objekte, die nur einmal gespeichert werden, kann die Umstellung auf die neue API automatisch erfolgen. Dies ist und bleibt die empfohlene Vorgehensweise. Wenn ein Verweis jedoch in einer Komposition mehrmals gespeichert wurde, wird onRemembered für jeden Verweis aufgerufen, während onEnter nur einmal aufgerufen wird. onEnter wurde mehrmals aufgerufen, wenn das Objekt in Unterzusammensetzungen wie WithConstraints und Scaffold verwendet wurde, wodurch der einzelne onEnter-Aufruf garantiert unzuverlässig war und für RememberObserver entfernt wurde.

    RememberObserver fügt onAbandoned hinzu. Dieser wird aufgerufen, wenn die RememberObserver-Instanz von dem an remember übergebenen Callback zurückgegeben wird, aber im Zusammensetzungsstatus nicht gespeichert wurde. Daher wird onRemembered niemals aufgerufen. Dies kann auftreten, wenn eine Ausnahme die Komposition vor Fertigstellung beendet oder die Komposition verworfen wird, weil der Status, für den eine Komposition erzeugt wurde, nicht mehr aktuell ist oder aus anderen Gründen nicht mehr benötigt wird. Wenn die Instanz von RememberObserver gemäß der Empfehlung oben mit einer einzelnen Referenz eine externe Ressource erfasst, geben sowohl onForgotten als auch onAbandoned an, dass die Ressource nicht mehr benötigt wird. Wenn das Objekt die in onRemembered gestartete Arbeit oder zugewiesenen Ressourcen erfasst, kann onAbandoned ignoriert werden, da es nicht aufgerufen wird, wenn onRemembered aufgerufen wird. (I02c36)

  • Arithmetische Operationen zwischen zwei oder mehr Texteinheiten wurden eingestellt. Die veralteten TextUnit.Sp- und TextUnit.Em-Funktionen haben Vorrang vor den Erweiterungsfunktionen wie Int.sp und Int.em. (I48369)

  • Ressourcen in Bibliotheken, für die keine explizit deklarierten öffentlichen Ressourcen angegeben sind (z. B. über public.xml), sind jetzt standardmäßig privat. (Ia1dcc, b/170882230)

  • ScrollableColumn/Row wurden eingestellt. Die Verwendung von ScrollableColumn ist bei großen scrollbaren Inhalten weniger effizient als LazyColumn, da mit LazyColumn nur sichtbare Elemente erstellt, gemessen und gezeichnet werden können. Um zu verhindern, dass Nutzer diese ineffiziente Methode verwenden, haben wir uns entschieden, ScrollableColumn und ScrollableRow einzustellen und stattdessen die Verwendung von LazyColumn und LazyRow zu empfehlen. Nutzer können weiterhin entscheiden, dass sie das Lazy-Verhalten nicht benötigen, und die Modifikatoren direkt verwenden, z. B. so: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)

  • Neue items(count: Int)-Factory-Methode für den Bereich von LazyColumn/LazyRow/LazyVerticalGrid. items(items: List) und itemsIndexed(items: List) sind jetzt Erweiterungsfunktionen und müssen bei Verwendung manuell importiert werden. Neue Erweiterungsüberladungen für Arrays: items(items: Array) und itemsIndexed(Array) (I803fc, b/175562574)

  • Verwenden Sie stattdessen „ImeAction.None“ statt „ImeAction.NoAction“.

    • Verwende „ImeAction.Default“ anstelle von „ImeAction.Unspecific“ (Ie1bcc).
  • TestCoroutineDispatcher bei Tests nutzen (I532b6)

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

  • Die auf TransitionDefinition basierende Transition wurde eingestellt (I0ac57)

  • „TextUnitType.Inherit“ wurde entfernt. Verwenden Sie stattdessen „TextUnitType.Unspecified“. (I9ff64)

Version 1.0.0-alpha10

13. Januar 2021

androidx.compose.ui:ui-*:1.0.0-alpha10 wird veröffentlicht. Version 1.0.0-alpha10 enthält diese Commits.

funktionsgefährdende Änderung

  • Durch die Umstrukturierung der internen Compiler-API können Änderungen an den Knoten, die durch die Komposition generiert wurden, in der Phase „Änderungen anwenden“ der Komposition gebündelt werden, nachdem alle @Composable-Funktionen abgeschlossen sind.

    Dies ist eine funktionsgefährdende Änderung, die sich auf den Anwendungscode auswirken kann, da Knoten erst nach dem Anwenden der Änderungen über interne und experimentelle APIs verfügbar sind. Das lässt sich in der Regel dadurch umgehen, dass Code mit solchen Abhängigkeiten in einem SideEffect-kompositiven Element umgeben wird, um die Ausführung des Codes so lange zu verschieben, bis die Knoten erstellt und initialisiert wurden. (I018da)

API-Änderungen

  • Modifier.focusOrder() wurde hinzugefügt, mit dem eine benutzerdefinierte Fokusreihenfolge angegeben werden kann (I90cf5, b/175899543, b/170155556, b/170155429)
  • Entfernen des veralteten „focusObserver“; stattdessen „onFocusChanged“ oder „onFocusEvent“ verwenden (I3ecb9, b/175156387)
  • Änderungen an der EditOperations API
    • „EditOperation“ in „EditCommand“ umbenannt
    • Befehlssuffix für konkrete Implementierungen von EditOperation hinzugefügt
    • EditCommands sind keine Datenklassen mehr
    • Die Funktion „EditOperation.process“ wurde in „applyTo“ umbenannt.
    • InputEventListener in InputEventCallback umbenannt
    • (I0a366)
  • Die nicht verwendeten Funktionen „PxSquared“, „PxCubed“ und „PxInverse“ wurden entfernt. "Size.center()" wurde zu einer Eigenschaft geändert. (I973f7)
  • Im ui-test-Modul kann jetzt die Erstellung von Recomposers für zu testende UIs (Ibebd8) konfiguriert werden.
  • Velocity wurde um Komponententeile und mathematische Operationen erweitert. (Ib0447)
  • @ExperimentalTesting wurde in @ExperimentalTestApi umbenannt, um mit ähnlichen experimentellen API-Hinweisen übereinzustimmen (Ia4502, b/171464963).
  • „Color.useOrElse()“ wurde in „Color.takeOrElse()“ umbenannt (Ifdcf5)
  • Die nicht verwendeten Klassen „DpInverse“, „DpSquared“ und „DpCubed“ wurden entfernt. (I4d62b)
  • Constraints#satisfiedBy wurde in isSatisfiedBy umbenannt. (I9cf5c)
  • Fügen Sie einen Rückruf hinzu, um den Eigentümer zu benachrichtigen, wenn sich die Grenzen des Layoutknotens ändern. (I72fd1)
  • „isSpecified“, „isUnspecified“ und „useOrElse“ wurden für Inline-Klassen mit einer Unspecified-Konstante hinzugefügt. (I93f7b, b/174310811)
  • [Abstract]ComposeView APIs erweitern, um das Recycling von Compose-basierten Ansichten zu ermöglichen, indem die Zusammensetzung verworfen und später neu erstellt wird. APIs zum Installieren und Entdecken von Recomposern auf Fensterebene und CompositionReferences zum Erstellen von untergeordneten Kompositionen hinzufügen

    Fügen Sie „ViewCompositionStrategy“ hinzu, um die Strategie zur Entsorgung der Zusammensetzung von [Abstract]ComposeViews zu konfigurieren. Das Standardverhalten ist die Entsorgung beim Entfernen des Fensters. (I860ab)

  • Die öffentliche API „Any.identityHashCode()“ wurde entfernt (I025d7)

  • Die API „toStringAsFixed“ wurde entfernt. Stattdessen wird jetzt direkt „String.format“ verwendet. (Iaba6b)

  • „Toggle“ zu „foundation Strings.kt“ hinzufügen (I4a5b7, b/172366489)

  • nativeClass wurde in das UI-Modul verschoben und intern gemacht. Die Verwendung von „nativeClass“ in „equals“-Implementierungen wurde aktualisiert. Stattdessen wird jetzt „is MyClass“ verwendet. (I4f734)

  • Modifier.focus() und Modifier.focusRequester() wurden eingestellt. Verwenden Sie stattdessen „Modifier.focusModifier()“ und „Modifier.focusReference()“. (I75a48, b/175160751, b/175160532, b/175077829)

  • Einführung von SelectionRegistrar.notifySelectableChange, um SelectionManager über Updates für auswählbare Elemente zu benachrichtigen. (I6ff30, b/173215242)

  • Das Attribut „Outline.bounds“ wurde eingeführt, um den Begrenzungs-Rechteck für verschiedene Umrissimplementierungen abzurufen. (I16e74, b/175093504)

  • TestUiDispatcher wurde eingestellt. Verwenden Sie stattdessen Dispatchers.Main (Ic171f, b/175385255).

  • „ImeOptions“ und „KeyboardOptions“ sind keine Datenklassen mehr (I3c898, b/168684531)

  • Änderungen an der VisualTransformation API

    • OffsetMap in OffsetMapping umbenannt
    • OffsetMapping.identityOffsetMap in OffsetMapping.Identity umbenannt
    • PasswordTransformation ist keine Datenklasse mehr
    • OffsetMapping wurde in eigene Datei verschoben
    • (I0bdf3)
  • „Position“ in „DpOffset“ umbenannt und „getDistance()“ entfernt (Ib2dfd)

  • fun Dp.isFinite() in val Dp.isFinite geändert (I50e00)

Fehlerkorrekturen

  • Recomposer stellt jetzt einen Stream seines aktuellen Zustands bereit, mit dem sich seine Aktivität und die Aktivität der zugehörigen Effekte beobachten lassen. (Ifb2b9)
  • Der native keyEvent kann jetzt über „keyEvent.nativeKeyEvent“ aufgerufen werden (I87c57, b/173086397)
  • animate() wurde durch animateAsState() ersetzt, das State<T> statt T zurückgibt. Dies ermöglicht eine bessere Leistung, da der Gültigkeitsbereich der Daten auf den Bereich eingegrenzt werden kann, in dem der Statuswert gelesen wird. (Ib179e)
  • Fügen Sie die Semantics-Rollen-API und die Rolle als Parameter zum anklickbaren, auswählbaren und umschaltbaren SemanticsModifier hinzu. Wir haben Modifier.progressSemantics geändert, damit es auch für den Schieberegler verwendet werden kann. (I216cd)
  • Neue coroutine-basierte API Animatable, die für gegenseitige Ausschließlichkeit der Animationen sorgt.
    • Neue DecayAnimationSpec zur Unterstützung mehrdimensionaler Abklinganimationen
    • (I820f2, b/168014930)

Version 1.0.0-alpha09

16. Dezember 2020

androidx.compose.ui:ui-*:1.0.0-alpha09 wird veröffentlicht. Version 1.0.0-alpha09 enthält diese Commits.

API-Änderungen

  • Die Einstellung „Alt“ für KeyEvent wurde eingestellt und entfernt. Verwenden Sie stattdessen „KeyEvent.isAltPressed“. (Idd695)
  • Modifier.keyInputFilter und Modifier.previewKeyInputFilter wurden eingestellt. Verwenden Sie stattdessen Modifier.onKeyEvent und Modifier.onPreviewKeyEvent. (Idbf1b, b/175156384)
  • Modifier.focusObserver wurde eingestellt. Verwenden Sie stattdessen Modifier.onFocusChanged oder Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
  • Zum Anhalten von Zeigereingabe-APIs wurde HandlePointerInputScope in AwaitPointerEventScope und handlePointerInput() in awaitPointerEventScope() umbenannt. (Idf0a1, b/175142755)
  • Die Autofill API ist jetzt eine experimentelle API und muss aktiviert werden (I0a1ec)
  • Destrukturierungsdeklarationen zum Erstellen von FocuSRequester-Instanzen hinzufügen (I35d84, b/174817008)
  • „accessibilityLabel“ wurde in „contentDescription“ umbenannt. „accessibilityValue“ wurde in „stateDescription“ umbenannt. (I250f2)
  • Benutzerdefinierte Ereignisse wurden aus der API zum Pausieren der Eingabe per Maus entfernt (Ia54d5, b/175142755)
  • Es wurden mehrere neue Funktionen in SelectionRegistrar eingeführt und „onPositionChange“ in „notifyPositionChange“ umbenannt. (Ifbaf7)
  • Weitere Mitglieder von LayoutNode, die wir als intern gekennzeichnet haben (I443c6)
  • LayoutInfo wurde für Tools und Tests eingeführt (I9b190)
  • Von AndroidOwner intern gemacht (Ibcad0, b/170296980)
  • Anmerkung zu ExperimentalPointerInput entfernt (Ia7a24)
  • Verschachteltes Scrollsystem hinzugefügt. Weitere Informationen finden Sie unter Modifier.nestedScroll (I36e15, b/162408885).
  • subcomposeInto(LayoutNode) intern gemacht (Id724a)
  • Die Schnittstelle Applier wurde geändert, um das Erstellen von Baumstrukturen mit dem Bottom-up-Ansatz anstatt von oben nach unten zu vereinfachen.

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

    Die neue Methode insertBottomUp() wurde hinzugefügt.

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

    Einige Bäume, z. B. LayoutNode und View, lassen sich viel effizienter von unten nach oben als von oben nach unten erstellen. Vor dieser Änderung war für die Bottom-Up-Implementierung ein Stapel von Einfügungen erforderlich, der in jeden Applier kopiert werden musste, der für die Leistung eine Bottom-Up-Konstruktion benötigte. Mit dieser Änderung wird Applier über insertBottomUp() überschrieben, um einen Baum von unten nach oben zu erstellen, und insertTopDown(), um den Baum von oben nach unten zu erstellen. (Icbdc2)

  • Den AndroidDialogProperties wurden die Eigenschaften „dismissOnBackPress“ und „dismissOnClickOutside“ hinzugefügt. Damit lässt sich konfigurieren, wann das Lambda-Objekt „onDismissRequest“ des Dialogs aufgerufen wird. (If5e17)

  • Die painterResource API wurde hinzugefügt, um das undurchsichtige Laden von Painter-Objekten aus Raster-Asset-Formaten (z. B. PNGs) oder VectorDrawables zu ermöglichen. Nutzer müssen den Asset-Typ nicht mehr im Voraus bestimmen. Sie können diese Methode aufrufen, um ein Painter-Objekt für Bildkompositionen oder Painter-Modifikatoren abzurufen. (I2c703, b/173818471)

  • Modifier.clearAndSetSemantics wurde hinzugefügt, um die Semantik der Nachfolgerelemente zu löschen und neue festzulegen. (I277ca)

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

  • Einführung der PathEffect-Grafik-API, um verschiedenen Linienformen unterschiedliche Muster zuzuweisen. Die Verwendung von NativePathEffect zugunsten der erwarteten/tatsächlichen Implementierung von PathEffect wurde eingestellt. (I5e976, b/171072166)

  • Compose-Unterstützung für IdlingResource-Schnittstellen hinzugefügt, eine von Compose unterstützte Variante der Inaktivitätsressourcen von Espresso. Sie können über die ComposeTestRule (I433f3) registriert und wieder abgemeldet werden.

  • Globale Registrierung/Deregistrierung von ComposeIdlingResource und globale Registrierung/Deregistrierung von Uhren in ComposeIdlingResource entfernt (I32660)

Fehlerkorrekturen

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

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

  • ShaderBrush wurde neu strukturiert, um eine Shaderinstanz zu erstellen, wenn Informationen zur Größe der Zeichenumgebung verfügbar sind. Dies ist nützlich, um Farbverläufe zu definieren, die bei der Zusammensetzung die gesamten Zeichengrenzen eines Composeables einnehmen, ohne dass benutzerdefinierte DrawModifier-Implementierungen implementiert werden müssen.

    Die APIs für Gradientenfunktionskonstruktoren wurden zugunsten von Fabrikmethoden für ein Gradientenobjekt verworfen. (I511fc, b/173066799)

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

  • Verworfen: BuildCompat.isAtLeastR (Idb37e)

  • Die werkseitige Funktion „buildAnnotatedString“ wurde hinzugefügt, um einen AnnotatedString zu erstellen. Die Funktion „annotatedString.builder“ wurde eingestellt. (Idfe0b)

  • Erweiterungsmethoden für Float und Double zum Umwandeln von Werten in Radianten wurden entfernt. Die Funktion wurde in die Implementierung von PathParser verschoben, da sie nur dort verwendet wurde (I25f52).

Version 1.0.0-alpha08

2. Dezember 2020

androidx.compose.ui:ui-*:1.0.0-alpha08 wird veröffentlicht. Version 1.0.0-alpha08 enthält diese Commits.

API-Änderungen

  • Semantische Aktion „Schließen“ hinzufügen (I2b706)
  • Die DrawModifier APIs wurden aus dem Paket androidx.compose.ui in das Paket androidx.compose.ui.draw verschoben. Die Datei „DrawModifierDeprecated.kt“ wurde erstellt, um Aliasse und Hilfsmethoden für die Migration von den eingestellten zu den aktuellen APIs zu enthalten. (Id6044, b/173834241)
  • Umbenennung von Modifier.drawLayer in Modifier.graphicsLayer Änderungen der zugehörigen Klassen in GraphicsLayer gemäß API-Feedback (I0bd29, b/173834241)
  • Die neuen Methoden „placeable.placeWithLayer()“ und „placeable.placeRelativeWithLayer()“ wurden hinzugefügt. Mithilfe dieser Methoden können benutzerdefinierte Layouts und Layoutmodifikatoren ein untergeordnetes Element platzieren und dabei eine Grafikebene für die Zeichnung einfügen. So können wir zuerst die Neuzeichnungen optimieren, sodass wir beim Verschieben eines untergeordneten Elements nicht dessen Inhalt neu zeichnen müssen. Außerdem können wir Zeichentransformationen für ein untergeordnetes Element anwenden (Ibd8f6, b/170296989, b/171493718, b/173030831)
  • <T> wurde aus der Deklaration von „SubcomposeLayout“ entfernt. Sie können es jetzt ohne Angabe eines Typs verwenden. (Ib60c8)
  • Die APIs „Modifier.scale“ und „Modifier.rotate“ wurden für drawLayer hinzugefügt.
    • Modifier.drawOpacity wurde in Modifier.alpha umbenannt
    • Modifier.drawShadow wurde in Modifier.shadow umbenannt (I264ca, b/173208140)
  • Die Felder „Uptime“ und „Position“ von „PointerInputData“ sind jetzt nicht mehr optional. (ID468a)
  • MaterialTheme setzt jetzt die richtigen Farben für Auswahl-Handle und Auswahlhintergrund. In nicht-Material-Apps können die Farben für die Auswahl manuell mithilfe von „AmbientTextSelectionColors“ angepasst werden. (I1e6f4, b/139320372, b/139320907)
  • WindowManager.isWindowFocused wurde hinzugefügt, um zu überprüfen, ob das Host-Fenster im Fokus ist, sowie einen WindowFocusObserver, der einen onWindowFocusChanged-Callback bereitstellt. (I53b2a, b/170932874)
  • Die TransformOrigin API wurde mit einer destruktiven Syntax aktualisiert, um pivotFractionX und pivotFractionY als component1 und component2 zurückzugeben (If43c4, b/173586560)
  • Es wurde eine Lint-Prüfung für die Benennung und Position von zusammensetzbaren Lambda-Parametern hinzugefügt, um die Konsistenz mit den Richtlinien für das Schreiben zu prüfen. Außerdem wurden einige APIs, die children als Namen für das abschließende Lambda verwendet haben, gemäß der Lint-Prüfung und den Anleitungen zu content migriert. (Iec48e)
  • Es wurde eine API hinzugefügt, mit der geprüft wird, ob beim Senden eines Tastenevents die Modifikatortasten Alt, Strg, Meta oder Umschalt gedrückt wurden. (I50ed9)
  • Neue Modifier.drawLayer()-Überlastung hinzugefügt. Es wird ein Lambda-Block für einen neuen GraphicsLayerScope verwendet, in dem Sie die Ebenenparameter so definieren, dass die Neuzusammensetzung und das Neulayout bei einem Statuswechsel übersprungen werden. DrawLayerModifier ist jetzt intern für die Migration seiner Logik in die Methode "placeable.placeWithLayer()" von LayoutModifier (I15e9f, b/173030831).
  • Wir haben Ambients mit dem Suffix Ambient eingestellt und durch neue Properties mit dem Präfix „Ambient“ ersetzt, gemäß den Richtlinien für Ambients und die Compose API. (I33440)
  • androidx.compose.ui.text.Typeface wurde nach androidx.compose.ui.text.font.Typeface verschoben (Ic2b81)
  • Das semantische Argument „mergeAllDescendants“ wurde in „mergeDescendants“ umbenannt. (Ib6250)
  • Neue Drag-Gesten-Erkennung, die die Zeigereingabe-API anhält, einschließlich Ausrichtungssperre. (Icef25)
  • VectorAsset in ImageVector umbenannt VectorAsset in Builder verschoben und umbenannt, um gemäß den API-Richtlinien eine innere Klasse von ImageVector zu sein Typealias von VectorAssetBuilder hinzugefügt, um eine Verknüpfung mit ImageVector.Builder herzustellen. (Icfdc8)
  • ImageAsset und zugehörige Methoden wurden in ImageBitmap umbenannt. (Ia2d99)
  • ZIndex-Parameter für „place()“ des PlacementScope hinzufügen, damit „Modifier.zIndex()“ jetzt als LayoutModifier funktioniert und jedes benutzerdefinierte Layout Z-Index-Werte für seine untergeordneten Elemente direkt im Placement-Block festlegen kann (I711f7, b/171493718)
  • Eigenschaften für die grundlegende Semantik in die Benutzeroberfläche verschoben (I6f05c)
  • Die Funktionen „place(Offset)“ und „placeRelative(Offset)“ werden eingestellt. Verwenden Sie stattdessen Überladungen mit int-Offset (I4c5e7).
  • Bisher verworfene APIs wurden entfernt: Modifier.onPositioned wurde entfernt. Verwenden Sie stattdessen Modifier.onGloballyPositioned. Modifier.onDraw wurde entfernt. Verwenden Sie stattdessen Modifier.onDrawBehind. Modifier.plus wurde entfernt. Verwenden Sie stattdessen Modifier.then. „Color.Unset“ wurde entfernt. Verwenden Sie stattdessen „Color.Unspecified“. Die Klasse „PxBounds“ wurde entfernt. Verwenden Sie stattdessen „Rect“. (Ie9d02, b/172562222)
  • Die Benutzeroberfläche für die Ausrichtung wurde aktualisiert und funktioniert jetzt. (I46a07, b/172311734)
  • Mit der neuen Eingabemethode für den schwebenden Cursor wurden ein Gestensensor für Tippen, Doppeltippen, langes Drücken und eine Druckanzeige hinzugefügt. Außerdem wurden einige Dienstprogramme hinzugefügt, mit denen Entwickler ihre eigenen Gestenerkennungen leichter erstellen können. (I00807)
  • id wurde für LayoutIdParentData in layoutId umbenannt. Measurable.id wurde in Measurable.layoutId umbenannt. (Iadbcb, b/172449643)
  • Neuer Multi-Touch-Gestendetektor mit Hilfsfunktionen zum Erkennen von Drehung, Zoomen und Schwenken. (IC459d)
  • Einführung der APIs „SweepGradientShader“ und „SweepGradientBrush“. (Ia22c1)
  • Die Zeitsteuerung in Tests (TestAnimationClock und ihre Nutzung) ist jetzt experimentell (I6ef86, b/171378521).
  • Fügen Sie koroutinebasierte Scroll-APIs hinzu:

    Es wurden LazyListState.snapToItem und LazyListState.smoothScrollBy sowie APIs der unteren Ebene für die Scrollsteuerung hinzugefügt. Diese APIs bieten eine Sperroberfläche zum Steuern des Scrollens, die wartet, bis das Scrollen abgeschlossen ist, bevor sie zurückgegeben wird. (Ie5642)

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

  • Stellt Standardimplementierungen von Methoden und Eigenschaften in AnimationClockTestRule bereit, die an die zugehörige clock (I7ea3d, b/173399709) delegiert werden können.

  • AndroidComposeTestRule kann jetzt benutzerdefinierte Aktivitätsauslöser akzeptieren (Ib8288, b/153623653, b/154135019)

  • TextLayoutResult.getLineVisibleEnd wurde eingestellt. Als Ersatz gibt es jetzt den neuen Parameter „visibleEnd“ für TextLayoutResult.getLineEnd. (I73282)

  • Aktualisierte TextFieldValue API

    • TextFieldValue.composition wurde schreibgeschützt
    • Ausnahme für ungültigen Auswahlbereich entfernt (I4a675, b/172239032)
  • Unterstützung von TtsAnnotation für die Sprachausgabe (I54cc6)

  • Neue APIs zum Ausführen von Animationen in Koroutinen (Ied662)

Fehlerkorrekturen

  • Der Ausrichtungsparameter von „Box“ wurde in „contentAlignment“ umbenannt. (I2c957)
  • Die Modifikatoren „offsetPx“ wurden in „offset“ umbenannt. Stattdessen werden jetzt Lambda-Parameter anstelle von „State“ verwendet. (Ic3021, b/173594846)
  • Dem TextInputService#onStateUpdated-Parameter wurde der Parameter „resetInput“ hinzugefügt (I3e8f5, b/172239032, b/171860947)
  • Es wurde eine Lint-Prüfung für Modifikatorparameter in zusammensetzbaren Funktionen hinzugefügt. Bei dieser Lint-Prüfung wird die Benennung, der Rückgabetyp, der Standardwert und die Reihenfolge des Parameters auf Übereinstimmung mit den Compose-Richtlinien geprüft. (If493b)
  • Vorübergehend wurde die Option hinzugefügt, die TestAnimationClock von der MonotonicFrameClock steuern zu lassen (I1403b, b/173402197)
  • Android-Schriftarten-Wrapper hinzugefügt. Sie können eine Android-Schriftart über die typeface-Funktion (typeface(Typeface.DEFAULT)) laden. Außerdem wurde typefaceFromFontFamily() in typeface() (I52ab7) umbenannt.
  • Es wurde eine Lint-Prüfung hinzugefügt, um zu prüfen, ob Modifier-Factory-Funktionen als Erweiterungen von Modifier definiert sind, damit sie nahtlos miteinander verknüpft werden können. (I07981)
  • Entfernen Sie das alte UI-Test-Modul und die zugehörigen Stubs (I3a7cb).
  • Der Recomposer akzeptiert keinen EmbeddingContext mehr. Die erforderlichen Planungsabhängigkeiten werden aus dem effectCoroutineContext abgerufen. FrameManager wurde eingestellt. Plattformintegrationen sollten ihre eigene globale Snapshot-Verarbeitung initialisieren. (I02369)
  • Übergeben Sie Stilinformationen an den Barrierefreiheitsknoten. (If5e8d)
  • TextUnit.Inherit wurde in TextUnit.Unspecified umbenannt, um für Einheitlichkeit mit anderen Einheiten zu sorgen. (Ifce19)

Compose-Benutzeroberfläche, Version 1.0.0-alpha07

11. November 2020

androidx.compose.ui:ui-*:1.0.0-alpha07 wird veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.

API-Änderungen

  • Die Inline-Klasse „ScaleFactor“ wurde eingeführt, um Skalierungsfaktoren für die horizontale und vertikale Achse unabhängig voneinander darzustellen und so Anwendungsfälle mit nicht einheitlicher Skalierung zu unterstützen.
    • Der ContentScale-Klasse wurde die Methode „computeScaleFactor“ hinzugefügt.
    • ContentScale.FillBounds wurde hinzugefügt, um eine uneinheitliche Skalierung durchzuführen und die src-Grenzen so zu erweitern, dass das Ziel vollständig belegt wird.
    • Es wurden Operatormethoden hinzugefügt, um Skalierungsfaktor-Parameter mit Größenparametern zu berechnen.
    • (Ic96a6, b/172291582)
  • Die Faktoren BiasAlignment und BiasAbsoluteAlignment zum Erstellen von Ausrichtungen wurden hinzugefügt. (Iac836, b/169406772)
  • Entwicklern die Möglichkeit geben, den Fokus zu löschen. (I90372)
  • Ein Fehler, der dazu führte, dass für Views in „Compose“ keine Höhenangaben gezeichnet wurden, wurde behoben. (If7782)
  • "onDrawBehind" wurde in ContentDrawScope erstellt, um die Namenskonvention mit "Modifier.drawBehind" zu erfüllen. (I4fc3a, b/171955269)
  • Unterstützung für die Kameradistanz hinzufügen, um die 3D-Transformationen „rotationX“/„rotationY“ in Ebenen-APIs zu ergänzen. (I40213, b/171492100)
  • SelectionContainer ohne Rückruf hinzugefügt (Ibfadb)
  • Die Anmerkung „ExperimentalSubcomposeLayoutApi“ wurde entfernt. SubcomposeLayout kann jetzt ohne Hinzufügen von @OptIn verwendet werden (I708ad)
  • „FirstBaseline“ und „LastBaseline“ wurden in das Paket „androidx.compose.ui.layout“ verschoben (Ied2e7).
  • Die Deckkraft wurde aus dem Modifikator „drawShadow()“ entfernt, da er verwirrend war. (I82c62, b/171624638)
  • MeasureResult wurde aus MeasureScope verschoben. (Ibf96d, b/171184002)
  • Mehrere layoutbezogene Symbole wurden von androidx.compose.ui zu androidx.compose.layout.ui verschoben. (I0fa98, b/170475424)
  • Die Einstellung „FocusState2“ wurde entfernt (I686cb, b/168686446)
  • „ZIndexModifier“ ist jetzt intern (I1808b, b/171493718)
  • Der Rückgabetyp der LOP-Methode für Größenparameter wurde aktualisiert, um eine Größe ungleich null zurückzugeben, um unnötiges Boxing zu vermeiden. (Ib0044)
  • TestMonotonicFrameClock wurde hinzugefügt, um Code zu testen, der auf Kompositions-Frame-Ereignissen von Composer basiert und auf der Verwendung von runBlockingTest von kotlinx-coroutines-test (I4402f) erfolgt.
  • GestureScope.localToGlobal entfernt (I15299, b/171462785)
  • onAllNodesWithSubstring-Finder hinzugefügt (I81dd7, b/171462889)
  • Das Modul androidx.ui.test wurde eingestellt. Bitte migrieren Sie zu androidx.compose.ui.test und androidx.compose.ui.test.junit4 (I452e8).

Fehlerkorrekturen

  • „captureToBitmap“ wurde in „captureToImage“ umbenannt. (I86385)
  • foundation.Text wurde eingestellt und durch material.Text ersetzt. Eine einfache, uneindeutige Text-API, die keine Werte aus einem Design verwendet, finden Sie unter androidx.compose.foundation.BasicText. (If64cb)
  • TextFields so aktualisieren, dass sie Tastaturoptionen akzeptieren (Ida7f3)
  • KeyboardOptions in ImeOptions umbenennen (I82f36)
  • KeyboardType und ImeAction wurden in KeyboardOptions verschoben (I910ce)
  • „provideDefault“ wurde als Alternative zum Bereitstellen von Umgebungen hinzugefügt. Damit können Umgebungswerte angegeben werden, die nur festgelegt werden, wenn noch kein Umgebungswert vorhanden ist. (Id6635, b/171024925)
  • BaseTextField wurde eingestellt. Verwenden Sie stattdessen „BasicTextField“. (I896eb)
  • Einführung des Moduls „ui-test-junit4“ (Ib91f8)
  • relativePaddingFrom wurde in paddingFrom umbenannt. Der Modifikator paddingFromBaseline wurde hinzugefügt, um die Abstände von den Layoutgrenzen zu den Textgrundlinien leichter festlegen zu können. (I0440a, b/170633813)
  • „LaunchedTask“ wurde in „LaunchedEffect“ umbenannt, um für Einheitlichkeit mit den APIs „SideEffect“ und „DisposableEffect“ zu sorgen. „LaunchedEffect“ ohne Subjektparameter ist nicht zulässig, um Best Practices zu fördern. (Ifd3d4)
  • Es wurden kompostierbare Ressourcen eingeführt, die bei der Konfigurationsaktualisierung neu zusammengesetzt werden. (I6387c, b/167352819)
  • Der Recomposer benötigt jetzt bei der Erstellung einen CoroutineContext (Ic4610)
  • zIndex-Werte addieren, wenn mehrere Modifier.zIndex() angewendet wurden. Bisher wurde immer die erste Option ausgewählt. (Ic514c, b/170623936)
  • Änderungen an der internen SlotTable-Implementierung, die sich nicht auf die öffentliche API auswirken sollten. (If9828)
  • Die Option „Autokorrektur der Tastatur“ wurde hinzugefügt (I57b8d)
  • androidx.ui.test wurde in androidx.compose.ui.test verschoben (I9ffdb)
  • KeyboardOptions.toImeOptions wurde aus der öffentlichen API entfernt. (Ic2e45)

Externer Beitrag

  • Veröffentlichung des internen Artefakts androidx.compose.ui:ui-text-android (Ib93fa) deaktiviert

Version 1.0.0-alpha06

28. Oktober 2020

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

API-Änderungen

  • „Recomposer“ ist jetzt eine „CompositionReference“ und ein gültiges übergeordnetes Kompositionsereignis. Der explizite Recomposer ist jetzt an weniger Stellen erforderlich. (I4036f)
  • Stellen Sie VectorPainter durch die Nutzung von „memoryVectorPainter“ aus. So lässt sich besser erkennen, dass die zusammensetzbare API intern „remember“ nutzt, um Daten über mehrere Kompositionen hinweg beizubehalten. (Ifda43)
  • Die Modifier.drawWithCache API wurde aktualisiert, um ContentDrawScope anstelle von DrawScope als Empfängerbereich bereitzustellen. So können Implementierungen Zeichenbefehle neu anordnen. Das ist nützlich für Anwendungsfälle wie das Mischen oder Färben, bei denen Inhaltspixel zuerst gerendert werden müssen, damit der entsprechende Algorithmus für den Mischmodus richtig angewendet werden kann. (Ie7ec8)
  • SimpleContainer in PopupTestUtils.kt verschieben (I78c57)
  • „ConsumedData“ ist keine Datenklasse mehr. Weitere Informationen finden Sie unter https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f).
  • Position des Rtl-Ziehpunkts fixieren. (I6e1e0)
  • DrawScope und ContentDrawScope wurden in Schnittstellen anstelle von abstrakten Klassen umgestellt.
    • Die CanvasDrawScope-Implementierung von DrawScope wurde erstellt.
    • Implementierungen von DrawScope wurden überarbeitet, um stattdessen CanvasScope zu verwenden
    • Wir haben DrawContext erstellt, um Abhängigkeiten für DrawScope
    • Eingestellte Methoden aus DrawScope wurden entfernt (I56f5e).
  • Wichtige Änderung: Der Rückgabewert wurde aus PointerInputFilter.onPointerEvent(...) entfernt, da der einzige Wert, der in Zeigerereignissen geändert werden sollte, Verbrauchsdaten sind. Anstatt Daten von PointerInputFilter.onPointerEvent(...) zurückzugeben, können Sie jetzt einfach die Verbrauchsdaten der übergebenen PointerEvents ändern. (I6acd0)
  • MeasureScope und IntrinsicMeasureScope wurden zu Schnittstellen. (I1a087, b/170461665)
  • Die Zusammenführungsfunktion für "AlignLine" wurde ausgeblendet. (I9da1a, b/170612900, b/170611568)
  • Es ist jetzt möglich, Prüftool-Informationen in zusammengesetzten Modifikatoren anzugeben (Idee08, b/163494569)
  • Die Option „Alle auswählen“ wurde dem Auswahlmenü hinzugefügt (Ief02b)
  • DrawTransform.rotate wurde aktualisiert, damit der Standarddrehpunktparameter „center“ (Mitte) verwendet wird, um der Dokumentation zu entsprechen.
    • DrawScope.rotateRad wurde aktualisiert, damit ein Offset für den Drehpunkt verwendet wird, um mit anderen Transformationsmethoden übereinzustimmen.
    • Die verworfene Überladung von DrawScope.rotateRad, bei der für die x- und y-Koordinate des Drehpunkts Gleitkommazahlen verwendet wurden.
    • (Iffcbb, b/170434992)

Fehlerkorrekturen

  • API-Lint-Prüfung für fehlende Getter-Matching-Builder ist für androidx aktiviert (I4bbea, b/138602561)
  • Fügen Sie einen Test hinzu. (I6b8ae)
  • Übergänge in ComposeTestRule aktivieren; Option zum Aktivieren des blinkenden Cursors aus ComposeTestRule entfernen. (If0de3)
  • IME-Option für die Großschreibung der Tastatur wurde hinzugefügt (I8ac38)
  • CoreTextField (I72e6d) hat jetzt eine Option für eine Tastatur mit einer Zeile.
  • SimpleContainer in PopupTestUtils.kt verschieben (I65c3e)
  • Die Radius API wurde in „CornerRadius“ umbenannt, um besser auszudrücken, wie sie in Compose verwendet wird. Die Dokumentation wurde aktualisiert, um anzugeben, dass negative Eckradien auf null begrenzt werden. (I130c7, b/168762961)
  • Die Android-Interoperabilität wurde verbessert, indem weiterhin MotionEvents an untergeordnete Android-Views gesendet werden, die für alle Aktionen außer ACTION_DOWN für onTouchEvent „falsch“ zurückgeben (I94c5a, b/170320973)
  • Für Box wurde eine Inline-Funktion erstellt. (Ibce0c, b/155056091)

Externer Beitrag

  • Verschiedene Sprachen für AnnotatedString.capitalize und AnnotatedString.decapitalize unterstützen (I4aa7f)

Version 1.0.0-alpha05

14. Oktober 2020

androidx.compose.ui:ui-*:1.0.0-alpha05 wird veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.

API-Änderungen

  • DSL zum Angeben von Prüferinformationen hinzufügen (Ic9a22)
  • Langes Drücken in Text verschieben. (Iff2bc)
  • Experimenteller Modifikator „Modifier.pointerInput“, der die Eingabe unterbricht (Ia77d2)
  • Bedienungshilfen zum Kopieren/Einfügen/Ausschneiden hinzugefügt (I6db4f)
  • Der öffentliche Konstruktor für AndroidOwner wurde entfernt (Iacaef)
  • Pop-ups und Dialogfelder übernehmen jetzt FLAG_SECURE vom übergeordneten Fenster. Außerdem wurde die Option hinzugefügt, dies explizit zu konfigurieren (I64966, b/143778148, b/143778149)
  • Verbrauchsdaten können jetzt geändert werden. Außerdem geben Aufrufe von Erweiterungsfunktionen, die eine Datenaufnahme auslösen, jetzt keine neue PointerInputChange mehr zurück, sondern verändern stattdessen die bereitgestellte PointerInputChange.

    Dies ist der erste Schritt in einem zweistufigen Prozess, um PointerEvent-Daten veränderbar zu machen, sodass andere Zeigerdaten nicht durch Nutzercode bearbeitet werden können. Im zweiten Schritt wird der Rückgabetyp List<PointerInputChange> aus PointerInputFilter.onPointerEvent(...) entfernt. (Id067e)

  • Deaktivierung der Textauswahl und Demo (Ie7e97)

  • Über „onGloballyPositioned“ eine Inline-Funktion erstellt (I15830)

  • „OnPositionedModifier“ wird in „OnGloballyPositionedModifier“ und „onPositioned()“ in „onGloballyPositioned()“ umbenannt. (I587e8, b/169083903).

  • Dem Attribut „Owner“ wurde das Attribut „hasPendingMeasureOrLayout“ hinzugefügt, das angibt, ob für den Eigentümer noch Layoutarbeiten anstehen. (I3d9f8, b/169038599)

  • API zum programmatischen Aufheben des Fokus hinzugefügt (Ie1dc2, b/161487952)

  • PointerInputFilter.onPointerInput(...) wurde entfernt. Stattdessen sollte PointerInputFilter.onPointerEvent(...) verwendet werden. (I6f04a)

  • Änderungen an der Größe

    • Size.getFlipped wurde entfernt
    • Size.rem entfernt
    • Size.truncDiv (Ief44d, b/169790720) entfernt
  • Im Rahmen der Standardisierung von Grenzwertwerten für Inline-Klassen wurde „Color.Unset“ in „Color.Unspecified“ umbenannt, um für Einheitlichkeit mit anderen Inline-Klassen zu sorgen (I97611, b/169797763)

  • TextOverflow.None wurde eingeführt. Wenn „overflow“ den Wert „None“ hat, wird der Text nicht mehr von „Text“ verarbeitet und seine tatsächliche Größe wird an „LayoutNode“ gemeldet. (I175c9, b/158830170)

  • Der Parameter „scope“ in AnnotatedString.Builder.addStringAnnotation wurde in „tag“ umbenannt, um für API-Konsistenz zu sorgen. (I7c8cb)

Fehlerkorrekturen

  • Die Scrollleistung von LazyColumn/Row wird verbessert, da bei jedem Scrollen weniger Arbeit in der Teilkomposition erforderlich ist. Für die Composition-Klasse wurde die neue Methode hasInvalidations() hinzugefügt. Die Methode "hasPendingChanges()" von Recomposer wurde in hasUngültigeations() umbenannt (Ib2f32, b/168293643, b/167972292, b/165028371).
  • Die Parameter für „Größe.Unspezifiziert“ wurden auf „Float.NaN“ statt „Float.POSITIVE_INFINITY“ aktualisiert. Painter-Implementierungen wurden aktualisiert, um die Werte auf „Size.Nicht angegeben“ sowie auf nicht endliche Größen zu prüfen. (I95a7e)
  • Die Reihenfolge der place()-Aufrufe in benutzerdefinierten Layouts bestimmt jetzt die Zeichnungsreihenfolge für die untergeordneten Elemente (Ibc9f6)
  • Unterstützung der Konvertierung von AnnotatedString in SpannableString für bessere Zugänglichkeit. (Ief907)
  • Es wurden Stubs für Android-Klassen auf älteren Plattformen hinzugefügt, um nach Möglichkeit die Verwendung von Reflection zu vermeiden. (Ia1790)
  • Fehlerkorrektur: Wenn die angezeigte Softwaretastatur die App zum Übersetzen führte, wurden die Koordinaten der Zeigereingabe falsch. (Ic4cec, b/163077821)

Version 1.0.0-alpha04

1. Oktober 2020

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

API-Änderungen

  • „OwnerScope“ wurde hinzugefügt, um die Erfassung von Layout- und Zeichenbereichen zu ermöglichen, sobald sie nicht mehr gültig sind. (Ic4cf8)
  • „OnRemeasuredModifier“ und „onSizeChanged()“ wurden hinzugefügt, um einen Rückruf zu erhalten, wenn das Inhaltslayout neu gemessen wurde bzw. sich die Größe geändert hat. (I657cf, b/154108792)
  • Aktion für langes Tippen hinzufügen (I6281b, b/156468846)
  • FocusManager wurde auf „Privat“ gesetzt. (I7872f)
  • Die Implementierung wurde aktualisiert, um eine spezielle DrawCacheModifier-Implementierung zu erstellen, anstatt optionale Properties zu DrawModifier hinzuzufügen.

    Aktualisierte Dokumentation für verschiedene Methoden (Ibd166)

  • TextRange inline einfügen, um das Erstellen von Objekten zu vermeiden (Id034b)

  • PlacementScope#parentWidth und PlacementScope#parentLayoutDirection können nicht mehr aus dem Placement-Block eines benutzerdefinierten Layouts gelesen werden. (Icc1ae, b/168295623)

  • Fügen Sie den semantischen Properties die Property „AccessibilityScrollState“ hinzu. (Ifeda9)

  • Einführung von Modifier.drawWithCache zur Unterstützung des Erstellens eines Zeichenobjekts, das Abhängigkeiten, die von Informationen zur Größe/zum Status abhängen, bedingt neu erstellt (I376dc)

  • ParagraphConstraints wurde entfernt. Die Breite wird jetzt direkt an den Absatz übergeben. (Ica712)

Fehlerkorrekturen

  • Aktualisierung vieler Grafik-APIs
    • Die APIs für Skalierungs- und Drehtransformationen wurden aktualisiert, sodass jetzt ein einzelner Offset-Parameter für die Drehpunktkoordinate verwendet wird, anstatt separater Gleitkommaparameter für die X-/Y-Koordinaten in DrawScope und DrawTransform.
    • Die Methoden „Rect.expandToInclude“ und „Rect.join“ wurden entfernt.
    • Die Dokumentation zu Radius wurde aktualisiert. Neben „elliptisch“ wird jetzt auch „oval“ verwendet.
    • Es wurde eine Dokumentation hinzugefügt, in der angegeben wird, dass der öffentliche Konstruktor für die Inline-Radiusklasse nicht direkt aufgerufen werden soll. Stattdessen sollten Radius-Objekte über ihre Funktionskonstruktoren instanziiert werden.
    • RoundRect APIs zum Abfragen von „topRight“, „bottomRight“ und „bottomCenter“ wurden entfernt.
    • Rect.shift wurde zugunsten von Rect.translate eingestellt
    • Die APIs „RoundRect.grow“ und „Rect.shrink“ wurden entfernt.
    • RoundRect.outerRect wurde in Rect.boundingRect umbenannt
    • Die Methoden „RoundRect.middleRect“, „tallMiddleRect“, „wideMiddleRect“ und „Rect.isStadium“ wurden entfernt.
    • RoundRect.longestSide in RoundRect.maxDimension umbenannt
    • RoundRect.shortestSide wurde in RoundRect.minDimension umbenannt
    • RoundRect.center wurde zu einer Eigenschaft anstelle einer Funktion geändert
    • Der Konstruktor für RoundRect wurde aktualisiert, sodass Radiuseigenschaften anstelle einzelner Parameter für X‑/Y‑Radiuswerte verwendet werden.
    • Entfernte APIs für die Größe, bei denen davon ausgegangen wurde, dass es sich um ein Rechteck mit dem Ursprung bei 0,0 handelt
    • Zerstörungs-API zu Radius hinzugefügt
    • Migration verschiedener RoundRect-Erweiterungsfunktionen zu Eigenschaften
    • (I8f5c7, b/168762961)
  • foundation.Box wurde eingestellt. Verwenden Sie stattdessen foundation.layout.Box. (Ie5950, b/167680279)
  • „Stack“ wurde in „Box“ umbenannt. Das bisher vorhandene Box wird zugunsten des neuen Box in compose.foundation.layout eingestellt. Das neue Feld stapelt die untergeordneten Elemente übereinander, wenn es mehrere davon hat. Das unterscheidet es vom vorherigen Feld, das sich ähnlich wie eine Spalte verhielt. (I94893, b/167680279)
  • Die Parameter für die Box-Dekoration wurden eingestellt. Wenn Sie Verzierungen oder Ränder für das Feld haben möchten, verwenden Sie stattdessen Modifikatoren (Modifier.background, Modifier.border, Modifier.padding). (Ibae92, b/167680279)
  • Viele Grafik-APIs wurden aktualisiert.
    • DrawScope APIs wurden mit Bereichstransformationsmethoden aktualisiert, um anzuzeigen, dass die Transformation nur innerhalb des Callbacks angewendet und nach dem Aufrufen des Callbacks entfernt wird.
    • Die „clipPath“-Dokumentation wurde aktualisiert, sodass sie auf „Path“ statt auf „abgerundetes Rechteck“ verweist.
    • In der Dokumentation wurde der Abstand für den rechten Parameter in „clipPath“ korrigiert.
    • DrawScope.drawCanvas in drawIntoCanvas umbenannt und Größeparameter entfernt
    • Die Parameter „dx“ und „dy“ in der Einblendmethode wurden in „horizontal“ und „vertical“ umbenannt.
    • Überladung für „inset“ hinzugefügt, die allen vier Rändern denselben Wert zuweist
    • Die Dokumentation zur Inset-Methode, in der angegeben wurde, dass der Inset auf alle vier Seiten angewendet wird, wurde entfernt.
    • Aktualisierte Dokumentation für die Klasse „Rect“
    • Kommentare zu Rect-Parametern wurden an den kdoc-Stil angepasst.
    • Entfernt: Rect.join und Rect.expandToInclude
    • Überlastung für Rect.translate(offset) erstellt und Rect.shift verworfen
    • (If086a, b/167737376)
  • Annotierte „rootAnimationClockFactory“, „transitsEnabled“, „blinkingCursorEnabled“ und „textInputServiceFactory“ mit @VisibleForTesting, machen sie zu einer internen API und verbergen ihre kdoc-Dateien (I554eb, b/168308412).
  • Entfernen Sie den SelectionContainer aus der oberen Position, um die Standardauswahl zu deaktivieren und unerwartetes Verhalten zu vermeiden. Stattdessen kann ein SelectionContainer verwendet werden, um den Inhalt zu umschließen, der auswählbar sein soll. (I8dfe0, b/158459594)

Version 1.0.0-alpha03

16. September 2020

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

API-Änderungen

  • Semantikaktionen zum Vor- und Zurückscrollen wurden entfernt. In „AccessibilityRangeInfo“ wurden Schritte hinzugefügt. (Ia47b0)
  • onInvalidate() wurde aus Owner entfernt: OwnedLayer-Ziehpunkte Entwertung. (Ica72b, b/162061312)
  • Operatormethoden für die Size API, die Offset-Parameter nutzen, wurden entfernt. Das Ergebnis dieser Vorgänge ist unklar und die Art des Ergebnisses ist für diese unerwartet. Beispiel: Sollte „Größe – Offset“ einen Offset oder ein Größenergebnis mit der Differenz zurückgeben?

    Außerdem wurden verworfene Methoden aus der Size-Klasse entfernt. (Iec902, b/166514214)

Fehlerkorrekturen

  • Behebung eines Fehlers, durch den Elemente von LazyColumn manchmal falsch dargestellt wurden, was in bestimmten Fällen zu Abstürzen führte. (Ibcf17, b/163066980, b/165921895)
  • DpConstraints und APIs, die sie verwenden, wurden eingestellt. (I90cdb, b/167389835)
  • createAndroidComposeRule und AndroidInputDispatcher wurden von androidx.ui.test.android nach androidx.ui.test verschoben (Idef08, b/164060572)
  • Die Verwendung von „gravity“ wurde in Layout-APIs einheitlich in „align“ oder „alignment“ umbenannt. (I2421a, b/164077038)
  • OnNode und andere globale Methoden wurden zu ComposeTestRule hinzugefügt, da die aktuellen globalen Methoden nicht mehr unterstützt werden. (Ieae36)

Version 1.0.0-alpha02

2. September 2020

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

API-Änderungen

  • remove callback to notify Owner when layoutnode bounds change. (If654e, b/166106882)
  • Es wurde die Unterstützung für filltype-Parameter für Vektorgrafikpfade hinzugefügt, um Ausschnitte von Formen gemäß den Pfadfüllungsregeln „evenOdd“ oder „NonZero“ zu unterstützen. (I43dd2)
  • Uptime und Velocity sind jetzt Inline-Klassen (I48f4a)
  • Die Dauer ist jetzt eine Inline-Klasse (I565eb).
  • Fügen Sie einen Rückruf hinzu, um den Eigentümer zu benachrichtigen, wenn sich die Grenzen des Layoutknotens ändern. (IC40b3)
  • Behobenes Problem: Beim Erstellen eines Rechtecks mit der Rect-Funktion mit Offset und Radius wurde das Rechteck in der Reihenfolge „links, rechts, oben, unten“ statt „links, oben, rechts, unten“ erstellt.

    Die eingestellten Companion-Methoden von Rect wurden zugunsten von Funktionskonstruktoren entfernt.

    Es wurden Tests zur Überprüfung von Methoden in Rect.kt hinzugefügt (I08460, b/165822356).

Fehlerkorrekturen

  • MutableRect wurde hinzugefügt, ein Rechteck, das geändert werden kann. (I71bd2, b/160140398)
  • Matrix4 wurde durch Matrix ersetzt. Alle anderen Teile des Pakets „vectormath“ wurden entfernt. (Ibd665, b/160140398)
  • Die Aufrufkonvention für kombinierbare Funktionen hat sich geändert. Dies ist eine funktionsgefährdende Änderung. Alle Bibliotheken müssen neu kompiliert werden, damit sie mit dieser Version des Compiler-Plug-ins funktionieren.

    Diese Änderung führt nicht zu einer funktionsgefährdenden Änderung auf Quellebene, da die einzigen geänderten APIs Compiler-APIs sind, die explizit aktiviert werden. (I7afd2, b/158123185)

  • Ein Absturz wurde behoben, der auftreten konnte, wenn der PointerInputFilter beim Senden an einen PointerInputFilter synchron entfernt wurde. (I58f25)

Version 1.0.0-alpha01

26. August 2020

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

Version 0.1.0-dev

Version 0.1.0-dev17

19. August 2020

androidx.compose.ui:ui-*:0.1.0-dev17 wird veröffentlicht. Version 0.1.0-dev17 enthält diese Commits.

API-Änderungen

  • emitView wurde eingestellt. Verwenden Sie stattdessen nach Möglichkeit AndroidView, um Ansichten in Compose zu senden. Das direkte Erstellen von Ansichten und Ansichtsgruppen wird in Zukunft nicht mehr unterstützt, es sei denn, sie sind Blätter im Kompositionbaum. In diesem Fall kann dies mit AndroidView erreicht werden. (I29b1e, b/163871221)
  • FocusState2 wurde verworfen und durch FocusState ersetzt (Ia8b79, b/160822876, b/160923332).
  • Die veralteten AndroidView-Überladungen wurden entfernt. (I946b9, b/163802393)
  • Bei benutzerdefinierten Emits kann jetzt angegeben werden, dass einer oder mehrere ihrer Setter unabhängig vom Emit übersprungen und neu zusammengesetzt werden können. (Ibbd13)
  • Vektorklassen sind keine Datenklassen mehr, da dieselbe Objektinstanz für die Komposition verwendet wird.

    Für VectorPainter wurde das Flag „mutableStateOf“ hinzugefügt, um den Inhalt des Vektors bedingt neu zu zeichnen, wenn sich dieser ändert.

    Die VectorComponent-Instanz wurde überarbeitet, um Teil von VectorPainter zu sein, da sie in verschiedenen Kompositionen wiederverwendet wird.

    Die Namensfelder von „GroupComponent“ und „PathComponent“ wurden so aktualisiert, dass sie veränderbar sind (Ieae45, b/151378808)

  • onChildPositioned und OnChildPositionedModifier wurden entfernt. Entwickler sollten stattdessen onPositioned und OnPositionedModifier im untergeordneten Layout verwenden. (I4522e, b/162109766)

  • „Offset“ ist zu einer Inline-Klasse geworden (Iaec70)

  • Dem SelectionContainer wurde ein Parameter für die Modifizierung hinzugefügt (I4aada, b/161487952)

  • Der verworfene FocusModifier wurde entfernt (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)

  • mergePolicy Lambda zu SemanticsPropertyKey hinzugefügt So können Sie eine benutzerdefinierte Richtlinie für die Zusammenführung von mergeAllDescendants-Semantiken definieren. Standardmäßig wird der übergeordnete Wert verwendet, sofern vorhanden. Andernfalls wird der untergeordnete Wert verwendet. (Iaf6c4, b/161979921)

  • Einschränkungen sind jetzt Inline-Klasse (I88736)

  • Der FocusManager wurde hinzugefügt, um die gängige Fokuslogik aus AndroidComposeView zu entfernen (I528ef, b/161487952, b/162206799)

  • Die Namen von PointerEventPass wurden für die Alphaversion aktualisiert. (Ifda6f)

  • IntOffset ist jetzt eine Inline-Klasse (Iac0bf)

  • IntSize ist jetzt eine Inline-Klasse (I2bf42).

  • PlacementScope.placeAbsolute() wurde in PlacementScope.place() umbenannt und das vorherige PlacementScope.place() in PlacementScope.placeRelative(). Daher spiegelt die Methode PlacementScope.place() die Position in Rechts-nach-links-Kontexten nicht mehr automatisch wider. Verwenden Sie stattdessen PlacementScope.placeRelative(). (I873ac, b/162916675)

  • In AlertDialog wird jetzt FlowRow für Schaltflächen verwendet (I00ec1, b/161809319, b/143682374)

  • Einige Testdienstprogramme wurden nicht öffentlich gemacht, da sie nicht dort sind, wo sie zugehörig sind. Wird in Zukunft veröffentlicht. (I32ab1)

  • Die Organisation des Code für die Eingabe von Zeigerwerten wurde überarbeitet. (Ie3f45)

  • „PxBounds“ wurde zugunsten von „Rect“ eingestellt. Alle Verwendungen von PxBounds wurden durch „rect“ ersetzt und entsprechende Anmerkungen zur Einstellung/Ersetzung wurden hinzugefügt, um die Migration zu erleichtern. (I37038, b/162627058)

  • Die verworfene Funktion „KeyEvent2“ wurde entfernt. Verwenden Sie stattdessen „KeyEvent“. (Ied2d0, b/162097587)

  • KeyEvent hat eine Unicode-Eigenschaft, mit der das Unicode-Zeichen abgerufen werden kann, das durch die Kombination aus dem angegebenen Schlüssel und dem Metaschlüsselstatus generiert wird (If3afc).

  • Das benutzerdefinierte Ereignis „DelayUp“ und die zugehörigen Klassen sind jetzt eine API, die du aktivieren musst, da sie sehr wahrscheinlich geändert wird. (I56d6f)

  • Zwei PointerEventPasses wurden entfernt, die nicht mehr benötigt werden. (I3dd9d)

  • Fügen Sie Paragraph.paint die Parameter „color“, „shadow“ und „TextDecoration“ hinzu. Diese Funktion ist nützlich, um unnötige Neuerstellung von Absätzen zu vermeiden. (I81689)

Fehlerkorrekturen

  • onFocusChanged-Callbacks aus TextField entfernt. Verwenden Sie stattdessen Modifier.focusObserver. (I51089, b/161297615)
  • Modifier.drawBorder wurde eingestellt. Verwenden Sie stattdessen Modifier.Border. Die Datenklasse „Border“ wurde durch „BorderStroke“ ersetzt (I4257d, b/158160576)
  • Veraltete FrameManager-Aufrufe wurden entfernt.

    Interne APIs zur Zusammensetzung wurden geändert, um den Aufwand für das Tracking von Statusobjekten wie mutableStateof() (I80ba6) zu reduzieren.

  • VerticalScroller und HorizontalScroller wurden entfernt. Verwenden Sie stattdessen ScrollableColumn/Row. Modifier.drawBackground wurde entfernt. Modifier.background (I73b0d, b/163019183) verwenden

  • Der Absturz, der beim Verwenden von etwas, das den Status speichert, innerhalb der For-Schleife auftrat, wurde behoben. Da nun derselbe Schlüssel in „SavedInstanceState()“ verwendet wird, ist die API von UiSavedStateRegistry an diese neue Anforderung angepasst (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561).

  • Die state { ... }-Komponente wird jetzt zugunsten expliziter Aufrufe von remember { mutableStateOf(...) } eingestellt. Dadurch wird die API-Oberfläche insgesamt und die Anzahl der Konzepte für die Zustandsverwaltung reduziert. Außerdem entspricht dies dem by mutableStateOf()-Muster für die Delegation von Klasseneigenschaften. (Ia5727)

  • RRect wurde in RoundRect umbenannt, damit es besser zum Zusammensetzen von Benennungsmustern passt. Erstellung ähnlicher Funktionskonstruktoren zu RRect und verworfene RRect-Funktionskonstruktoren (I5d325)

Version 0.1.0-dev16

5. August 2020

androidx.compose.ui:ui-*:0.1.0-dev16 wurde veröffentlicht. Version 0.1.0-dev16 enthält diese Commits.

API-Änderungen

  • OnChildPositioned wurde eingestellt. Verwenden Sie stattdessen „OnPositioned“ auf dem untergeordneten Element. (I87f95, b/162109766)
  • „setViewContent“ wurde eingestellt. Verwende stattdessen „setContent“. (I7e497, b/160335130)
  • Die AndroidViewBinding API zum Aufblasen und Erstellen von Layoutressourcen auf der Grundlage von ViewBinding wurde hinzugefügt. (I081c6)
  • KeyEvent2 wird durch KeyEvent ersetzt (I2d770, b/162097585)
  • Unterstützung für Alt-Hardwareschlüssel (I9036b) hinzugefügt
  • FocusManager wurde eingestellt. Verwenden Sie stattdessen Modifier.focus(), Modifier.focusObserver() und Modifier.focusRequester() . (I74ae4, b/162211322)
  • "loadVectorResource" unterstützt "trimmPath"-Attribute (I808fe).
  • Dialogfeld in die Benutzeroberfläche verschieben (I47fa6)
  • Zwei PointerEventPasses wurden entfernt, die nicht mehr benötigt werden. (I33ca7)
  • Der PointerInteropModifier wurde implementiert, mit dem MotionEvents empfangen und mit Compose interagiert werden kann, als wäre es eine Android-Ansicht. (Ieb08c)
  • Der eingestellte Tag-Modifikator wurde entfernt. Verwenden Sie stattdessen die Layout-ID. (Idaa05, b/162023919)
  • Die APIs für die Unterstützung von rechts nach links wurden aktualisiert. Die Variable „LayoutDirectionAmbient“ wurde hinzugefügt. Mit ihr kann die Layoutrichtung gelesen und geändert werden. Modifier.rtl und Modifier.ltr wurden entfernt. (I080b3)
  • Unterstützung für das Kürzen von Pfaden in Vektorgrafiken (Ie16c9, b/158188351)
  • „Modifier.layout()“ wurde hinzugefügt, mit dem sich ein benutzerdefinierter Layout-Modifikator ganz einfach erstellen lässt (I73b69, b/161355194)
  • Eine neue AndroidView API wurde hinzugefügt und die vorhandenen wurden eingestellt. (I5bcfd)
  • Modifier.plus wurde eingestellt. Verwenden Sie stattdessen "Modifier.then". „Dann“ ist ein stärkeres Signal für die Reihenfolge und verhindert gleichzeitig das Eintippen von Modifier.padding().background() + anotherModifier, was die Abfolge unterbricht und die Lesbarkeit erschwert (Iedd58, b/161529964)
  • Fügen Sie [Abstract]ComposeView-Unterklassen hinzu, um Compose-Inhalte in einer Ansichtshierarchie zu hosten. (I46357)
  • Row und Column sind jetzt Inline-Funktionen, wodurch der Overhead bei der Verwendung erheblich reduziert wird. (I75c10)
  • SubcomposeLayout wird hinzugefügt. Es ist ein Low-Level-Primitive, mit dem die untergeordneten Elemente während der Messung zusammengestellt werden können, wenn einige Werte erst später während der Messung für die Zusammensetzung der Unterstruktur verwendet werden sollen. Beispielsweise wird „WithConstraints“ nicht mit „SubcomposeLayout“ implementiert. (I25cc8)
  • SemanticsNode.positionInRoot wurde hinzugefügt, um die Position eines SemanticsNode relativ zur Wurzel der Compose-Hierarchie abzurufen (Icdf26, b/161336532)
  • MotionEvents wurde von Android in Compose und zurück an Android übergeben. (I14be8, b/158034713)
  • „Drop-down-Pop-up“ wurde entfernt. (I00430)
  • Feste Pop-up-Position auf Displays mit Aussparung (Idd7dd)
  • Eingabehilfeaktion hinzufügen, um TextLayoutResult abzurufen (I9d6e6)
  • RemeasurementModifier wurde hinzugefügt. Damit kann das Layout synchron neu gemessen werden. Im Allgemeinen ist das nicht erforderlich, da das Neumessen und Neulayout automatisch erfolgt. Wir verwenden es jedoch in LazyColumnItems während des Scrollens. (I5f331, b/160791058)
  • Entfernen Sie getLineEllipsisOffset/getLineEllipsisCount. Verwenden Sie stattdessen getLineVisibleEnd/getLineEnd/isLineEllipsized. (I85aa2)
  • Füge als Best Practice einige Markierungen/Anmerkungen hinzu. (I66b20)
  • Mehr Zeilen-APIs in TextLayoutResult freigeben (I79bd2)
  • Integrierte Vektorkonverter zur Umwandlung von integrierten Einheiten sind jetzt über „Foo.VectorConverter“ zugänglich, z. B. „Dp.VectorConverter“, „Color.VectorConverter“ und „Float.VectorConverter“ (I3e273)

Fehlerkorrekturen

  • Umfassende API-Fehlerkorrekturen (I077bc)
    1. Nicht verwendete OffsetBase-Schnittstelle entfernen
    2. Align Offset and IntOffset classes to have a consistent API surface
    3. IntOffset.Origin in IntOffset.Zero umbennen, um mit der Offset API übereinzustimmen
    4. Die nativeCanvas-Methode wurde aus der Canvas-Benutzeroberfläche entfernt, damit Nutzer ihre eigenen Canvas-Instanzen erstellen können.
    5. Die Stub-Klasse „EmptyCanvas“ wurde erstellt, um „DrawScope“ zu einem nicht nullwertigen Parameter anstelle eines lateinit-Parameters umzuwandeln und dafür zu sorgen, dass das Feld nicht null sein darf.
    6. ClipOp-Enums wurden in Pascal Case umbenannt
    7. FilterQuality-Enums wurden in Pascal Case umbenannt
    8. Die StrokeJoin-Enume wurden in Pascal Case umbenannt.
    9. Die PointMode-Enum-Typen wurden in Pascal Case umbenannt.
    10. Die Enum-Typen „PaintingStyle“ wurden in Pascal Case umbenannt.
    11. Die Aufzählungen vom Typ „PathFillType“ wurden in Pascal-Schreibweise umbenannt.
    12. StrokeCap-Enumerierungen in Pascal-Case umbenannt
    13. Die Implementierung von DrawCache wurde aktualisiert, sodass keine lateinit-Parameter mehr verwendet werden.
    14. DrawScope wurde so aktualisiert, dass für die internen Parameter „fillPaint“ und „strokePaint“ kein Lazy Deleg mehr mehr verwendet wird.
    15. Die Bildkomposition wurde aktualisiert, um die Nutzung von Box zu vermeiden und den Overhead zu reduzieren.
    16. Die Klasse „Outline“ wurde um Anmerkungen vom Typ „@Immutable“ ergänzt.
    17. PathNode wurde aktualisiert, um @Immutable-Anmerkungen für jede Pfadanweisung zu haben.
    18. Die Vektor-Unterkomposition wurde aktualisiert, um redundante bedingte Gleichheitsprüfungen zu entfernen, da diese bereits von „compose“ verarbeitet werden.
    19. Die Konstruktormethoden für Rect-Begleiter wurden zugunsten von Funktionskonstruktoren eingestellt.
    20. Aktualisierte Pinselklassen und Funktionskonstruktoren mit @Immutable- und @Stable-APIs
    21. VertexMode-Enum wurde auf PascalCase aktualisiert
    22. Die DrawScope-Methode „selectPaint“ wurde aktualisiert, um Strichparameter für die Farbe bedingt zu überschreiben, wenn sie sich geändert haben.
    23. Wir haben die Größe aktualisiert, um eine destruktive API hinzuzufügen, „UnspecificSize“ in „Nicht angegeben“ umbenannt und nicht verwendete Methoden entfernt
  • Die Compose BlendMode API wurde aktualisiert, um die BlendModes des Android-Frameworks und die PorterDuff-Modi je nach API-Ebene korrekt abzugleichen. Die BlendMode#isSupported API kann als Funktionsabfrage verwendet werden, mit der ermittelt werden kann, ob BlendMode auf dem Gerät unterstützt wird, bevor sie verwendet wird. (I0ef42)
  • LazyItemScope wurde für den Parameter „itemContent“ von Lazy-Listen hinzugefügt. Sie stellt Modifikatoren zum Füllen der übergeordneten maximalen Größe bereit. Dies löst den Anwendungsfall, in dem das Element den Darstellungsbereich ausfüllen soll und die reguläre Modifier.fillMaxSize()-Methode nicht funktioniert, da das Element mit Grenzen für unendliche Werte gemessen wird. (Ibd3b2, b/162248854)
  • SemanticsNodeInteraction.performPartialGesture wurde entfernt. Verwenden Sie stattdessen SemanticsNodeInteraction.performGesture. (Id9b62)
  • LazyColumnItems wurde in LazyColumnFor umbenannt. LazyRowItems wurde in LazyRowFor umbenannt (I84f84).
  • foundation.shape.corner-Paket wurde auf foundation.share zusammengeführt (I46491, b/161887429)
  • AndroidComposeTestRule wurde in createAndroidComposeRule umbenannt. (I70aaf)
  • TextLayoutResult wurden weitere APIs hinzugefügt. (Id7e04)
  • „Material“ FilledTextField wurde in „TextField“ umbenannt und „Grundlegend“ TextField in „BaseTextField“, damit die einfachste gewünschte API leicht zu finden und zu verwenden ist (Ia6242, b/155482676)
  • "Modifier.drawBackground" wurde in "Modifier.background" umbenannt (I13677).

Version 0.1.0-dev15

22. Juli 2020

androidx.compose.ui:ui-*:0.1.0-dev15 wurde veröffentlicht. Version 0.1.0-dev15 enthält diese Commits.

Aktualisierung von Abhängigkeiten

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

API-Änderungen

  • FocusModifier wurde zugunsten von Modifier.focus, Modifier.focusRequester und Modifier.focusObserver eingestellt. „FocusState“ und „FocusDetailedState“ werden zugunsten von „FocusState2“ eingestellt (I46919, b/160822875, b/160922136)
  • Es wurde ein Modifikator hinzugefügt, um den Fokusstatus zu beobachten. (I05866, b/160924455, b/160923326)
  • Es wurde ein Modifikator hinzugefügt, um Fokusänderungen anzufordern (I8dd73, b/161182057, b/160924778)
  • Passen Sie das Symbolleistenmenü so an, dass die Optionen „Kopieren“, „Ausschneiden“ und „Einfügen“ richtig angezeigt werden. (Id3955)
  • Für Einzelwert-Semantikeigenschaften wird jetzt ein Aufrufstil verwendet. „semantics { hidden = true }“ wird jetzt beispielsweise so geschrieben: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412)
  • Modifier.focus wurde hinzugefügt und ersetzt FocusModifier. (Ib852a, b/160924778)
  • FloatingToolbar für die Textfeldauswahl hinzufügen (Ie8b07)
  • Es wurde eine experimentelle API-Anmerkung für die API zur Eingabe von Schlüsseln hinzugefügt (I53c0a).
  • Es wurde eine experimentelle API-Anmerkung für alle Focus-bezogenen APIs hinzugefügt (I53b24, b/160903352)
  • FocusState2 wurde hinzugefügt, der FocusdetailState ersetzt (I0a3ba, b/160822595).
  • ExperimentalFocus wurde hinzugefügt, eine @OptIn-Anmerkung für die Focus API. (I1544b, b/160820961)
  • Die Einheitsklasse „IntBounds“ wurde hinzugefügt. Sie stellt Ganzzahlgrenzen in Pixeln aus dem Layout dar. Die API von PopupPositionProvider wurde entsprechend aktualisiert. (I0d8d0, b/159596546)
  • Für Applier ist jetzt eine clear()-Methode zum Entfernen von Kompositionen erforderlich (Ibe697)
  • KeyEvent wurde eingestellt und durch KeyEvent2 ersetzt (I68730)
  • Für die Testung von Suchern wurde das neue optionale Flag „useUnmergedTree“ hinzugefügt. (I2ce48)
  • LayoutNode ist jetzt eine experimentelle API (I4f2e9)
  • Es wurden verschiedenen Inline-Klassentypen Kopiermethoden hinzugefügt, darunter:

    • Offset
    • Größe
    • Radius
    • Bewegung
    • TransformOrigin

    • Die Companion-Objektmethode „Size.copy“ wurde zugunsten der Instanzkopiemethode eingestellt (Ife290, b/159905651)

  • Pop-ups, Dialogfelder und Menüs übernehmen jetzt das kontextbezogene MaterialTheme (Ia3665, b/156527485)

  • „TextDirection“ in „ResolvedTextDirection“ umbenannt (I3ff38)

  • Der Parameter „Layoutrichtung“ wurde aus dem Messblock der Funktion „Layout()“ entfernt. Die Layoutrichtung ist jedoch im Callback über das Objekt „Measure Scope“ (Ic7d9d) verfügbar.

  • Refaktoriere SelectionHandles für die Wiederverwendung. (I420e0)

  • „Anklickbar“ wurde entfernt. Modifier.clickable verwenden (I84bdf)

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

  • Vor dieser Änderung hat das Compose-Compiler-Plug-in Aufrufe an Konstruktoren innerhalb einer @Composable-Funktion nicht trivial abgefangen, wenn ein (I5205a, b/158123804)

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

  • Die Ganzzahlpositionen der Ausrichtungslinie, die von Placeable#get(AlignmentLine) zurückgegeben werden, sind jetzt nicht mehr null. Wenn die abgefragte Ausrichtungslinie fehlt, wird „AlignmentLine.Unspecified“ zurückgegeben. (I896c5, b/158134875)

  • Dem AndroidView-Komposit wurde ein Modifiziererparameter hinzugefügt. (I48a88, b/158746303)

  • „Semantics()“ wurde eingestellt. Verwenden Sie stattdessen „Modifier.semantics()“. (I72407, b/158841414)

  • „viewModel()“-Komposition hinzufügen, mit der ein bereits erstelltes ViewModel erstellt oder abgerufen werden kann, ähnlich wie in einer Aktivität oder einem Fragment (I5fdd1)

  • IntPx wurde durch Int ersetzt. IntPxPosition wurde durch IntOffset ersetzt. IntPxSize durch IntSize ersetzt (Ib7b44)

  • Um die Anzahl der Klassen zu reduzieren, die zur Darstellung von Größeninformationen verwendet werden, sollten Sie die Verwendung der Klasse „Size“ anstelle von „PxSize“ standardisieren. Dies bietet die Vorteile einer Inline-Klasse, bei der ein Long-Wert verwendet wird, um zwei Float-Werte für Breite und Höhe zu verpacken. (Ic0191)

  • Um die Anzahl der Klassen zu reduzieren, die zur Darstellung von Positionierungsinformationen verwendet werden, sollten Sie stattdessen die Klasse „Offset“ verwenden. Dies bietet die Vorteile einer Inline-Klasse, da sie einen Long-Wert verwenden kann, um 2 Gleitkommawerte zu verpacken, um x- und y-Offsets darzustellen, die als Gleitkommazahlen dargestellt werden. (I3ad98)

  • Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen der umfangreichen Refaktorierung ersetzt, um nur noch Dp- und primitive Typen für Pixelparameter zu verwenden. Px-Klasse vollständig gelöscht (I3ff33)

  • Die Verwendung der Px-Klasse in verschiedenen zusammengesetzten Klassen wurde im Rahmen der umfangreichen Refaktorisierung ersetzt, um nur noch Dp- und primitive Typen für Pixelparameter zu verwenden (I086f4)

  • Die Verwendung der Px-Klasse in verschiedenen Compose-Klassen wurde im Rahmen der umfangreichen Refactoring-Bemühungen durch Dp- und primitive Typen für Pixelparameter ersetzt (Id3434)

  • Die Verwendung der Px-Klasse in verschiedenen zusammengesetzten Klassen wurde im Rahmen der umfangreichen Refaktorisierung ersetzt, sodass nur noch Dp- und primitive Typen für Pixelparameter verwendet werden (I97a5a)

  • TestTag wurde eingestellt. Verwenden Sie stattdessen „Modifier.testTag“. (If5110, b/157173105)

  • Die standardmäßige, nicht ausführende Implementierung von ParentDataModifier#modifyParentData wurde entfernt. Sie entsprach der Nichtimplementierung der Schnittstelle. (I0deaa)

  • Die zuvor eingestellte Option „ScaleFit“ wurde entfernt. Verwenden Sie stattdessen „ContentScale“. (Ifbc5b)

  • Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen der umfangreichen Refaktorierung ersetzt, um nur noch Dp- und primitive Typen für Pixelparameter zu verwenden (I19d02)

  • Die Komponente „DropdownMenu“ wurde in „ui-material“ hinzugefügt, eine Material Design-Menüimplementierung. (I9bb3d)

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

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

  • Modifier.semantics wurde nicht mehr als veraltet eingestuft, um die Verwendung für allgemeine Komponenten zu ermöglichen. (I4cfdc)

  • CanvasScope-Implementierungen wurden konsolidiert. Es gibt jetzt nur noch DrawScope und ContentDrawScope. DrawScope wurde aktualisiert, um die Density-Oberfläche zu implementieren und LayoutDirection bereitzustellen. Die DrawScope-Unterklasse in ContentDrawScope wurde entfernt. Painter und PainterModifier wurden aktualisiert, damit sie keine RTL-Eigenschaft mehr selbst verwalten, da DrawScope diese bereits ohne manuelle Angabe bereitstellt (I1798e)

  • Mit DoubleTapGestureFilter wird jetzt im gesamten Stammbaum für SingleTapGestureFilter eine eindeutige Zuordnung vorgenommen. (If92b1)

  • Die Alignment API wurde aktualisiert und die Unterstützung für die absolute Ausrichtung hinzugefügt, die im RTL-Kontext nicht automatisch gespiegelt wird (I38cd3)

  • Die DrawLayer-Modifikator-API wurde geändert: outlineShape wurde in Form umbenannt, der RectangleShape-Standardwert kann jetzt nicht mehr gelöscht werden und kann nicht mehr null werden. ClipToOutline wurde in Clip umbenannt; „clipToBounds“ wurde entfernt, da dies identisch mit „clip == true“ bei RectangleShape ist (I7ef11, b/155075735).

  • Zusammenstellende APIs der höheren Ebene, die einen Canvas bereitstellen, wurden aktualisiert, um stattdessen CanvasScope bereitzustellen. So müssen Nutzer keine eigenen Paint-Objekte mehr verwalten. Nutzer, die weiterhin Zugriff auf ein Canvas benötigen, können die Erweiterungsmethode „drawCanvas“ verwenden. Diese bietet einen Rückruf, um Zeichenbefehle für das zugrunde liegende Canvas auszugeben. (I80afd)

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

  • LayoutModifier2 wurde in LayoutModifier umbenannt. (Id29f3)

  • Die eingestellte Layout-Modifier-Oberfläche wurde entfernt. (I2a9d6)

  • Die Funktionen für intrinsische Messungen in „Layout“ und „LayoutModifier2“ haben jetzt einen Empfänger für „IntrinsicMeasureScope“, der die intrinsische Abfrage-API mit implizit weitergegebener Layoutrichtung bereitstellt. (ID9945)

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

  • Neu wurde Modifier.zIndex() hinzugefügt, um die Zeichenreihenfolge der untergeordneten Elemente im selben übergeordneten Layout zu steuern. Die Höheneigenschaft von DrawLayerModifier wurde in shadowElevation umbenannt und steuert die Zeichenreihenfolge nicht mehr. Die Reihenfolge der Parameter für „DrawShadow“ wurde geändert: „elevation“ ist jetzt der erste und „shape“ der zweite Parameter mit der Standardeinstellung „RectangleShape“. (I20150, b/152417501)

  • "onSizeChange" und "onPositionChange" im Inhaber entfernt. (I5c718)

  • Es wurde Constraints2 hinzugefügt, eine Kopie von Einschränkungen, die anstelle von IntPx nur Werte vom Typ "Int" unterstützt. IntPx wird entfernt und alle Ganzzahleinschränkungen werden wie bei Android als Pixel angenommen.

    • Hinzufügung von "IntSize", das IntPxSize irgendwann ersetzen wird. (I4b43a)
  • Die Ausrichtung kann mit beliebigen Werten instanziiert werden. 1D-Ausrichtungen wurden hinzugefügt. (Ia0c05)

  • Für „alignToSiblings“ kann jetzt ein „Gemessen“ anstelle eines „Platzierbaren“ verwendet werden. (I5788d)

  • (I45f09, b/152842521)

    • ScaleFit wurde in ContentScale umbenannt
    • ContentScale wurde von UI-Graphics zum UI-Core-Modul verschoben und befindet sich nun im selben Modul wie die Ausrichtung API.
    • „FillMaxDimension“ wurde in „Zuschneiden“ umbenannt.
    • „FillMinDimension“ wurde in „Fit“ umbenannt.
    • Fit wurde zur besseren Übereinstimmung in Inside umbenannt
    • Entsprechungen für ImageView.ScaleType
    • Es wurde eine Dokumentation hinzugefügt, aus der hervorgeht, dass die Kombination aus „Zuschneiden“ und „Ausrichtung: Mitte“ dasselbe Ergebnis wie ImageView.ScaleType.CENTER_CROP erzielt und dass „Passen“ in Kombination mit „Ausrichtung: Mitte“ dasselbe Ergebnis wie ImageView.ScaleType.FIT_CENTER erzielt. „Innen“ in Kombination mit „Ausrichtung: Mitte“ erzielt dasselbe Ergebnis wie ImageView.ScaleType.CENTER_INSIDE.
  • Unterstützung für RTL-Zeichen für Zeichnen-Modifikatoren (I0aaf9)

  • API zum Aufblasen von Android-Ansichtselementen aus XML veröffentlicht. Weitere Informationen finden Sie in der Demo zu ViewInCompose. (I42916)

  • DrawModifier API verbessern:

    • Der Empfängerbereich für draw() wurde zu ContentDrawScope geändert.
    • Alle Parameter für „draw()“ entfernt
    • DrawScope hat dieselbe Oberfläche wie das bisherige CanvasScope
    • ContentDrawScope hat die Methode „drawContent()“ (Ibaced, b/152919067)
  • „positionInParent“ und „boundsInParent“ für „LayoutCoordinates“ hinzugefügt (Icacdd, b/152735784)

  • Bei DrawLayerModifier und drawLayer() sind „clipToBounds“ und „clipToOutline“ jetzt standardmäßig auf „false“ festgelegt. (I0eb8b, b/152810850)

  • „LayoutResult“ in „MeasureResult“ umbenannt. (Id8c68)

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

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

  • Die Properties „translationX“ und „translationY“ wurden hinzugefügt, um die Anzeigeliste der Zeichenbefehle für eine bestimmte Ebene zu verschieben. Das ist nützlich, um Inhalte als Reaktion auf Animationen oder Touch-Ereignisse zu verschieben. (I8641c)

  • Die Parameter „pivotX“ und „pivotY“ wurden zu den Ebenen-APIs hinzugefügt, um die Drehung und Skalierung um einen bestimmten Punkt auf einer Ebene zu unterstützen (Icf7c3)

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

  • Der LayerModifier wurde hinzugefügt. Mit diesem Modifikator kann ein RenderNode für ein Layout hinzugefügt werden. Sie können damit Zuschneiden, Deckkraft, Drehung, Skalierung und Schatten festlegen. Damit wird „RepaintBoundary“ ersetzt. (I7100d, b/150774014)

  • Die Layoutrichtung wird jetzt vom übergeordneten Layoutknoten an die untergeordneten Knoten weitergegeben. Modifikator für Layoutrichtung wurde hinzugefügt. (I3d955)

  • Stapelkomponente unterstützt die Richtungsvorgabe von rechts nach links (Ic9e00)

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

  • Density und DensityScope wurden in einer Benutzeroberfläche zusammengeführt. Anstelle von „AmbientDensity()“ können Sie jetzt „DensityAmbient.current“ verwenden. Statt „withDensity(density)“ einfach „with(density)“ verwenden (I11cb1)

  • Bei „LayoutCoordinates“ wurde geändert, dass „providedAlignmentLines“ ein Set anstelle einer Map ist und dass „LayoutCoordinates“ den Operator „get()“ zum Abrufen eines Werts implementiert. So können Modifikatoren einen oder mehrere Werte des Sets leichter ändern, ohne für jeden Modifikator eine neue Sammlung erstellen zu müssen. (I0245a)

  • LayoutCoordinates hat keine Positionseigenschaft mehr. Die Positionseigenschaft ist in Bezug auf LayoutModifier, Rotation oder Skalierung nicht sinnvoll. Stattdessen sollten Entwickler „parentCoordinates“ und „childToLocal()“ verwenden, um die Transformation von einer Layoutkoordinate in eine andere zu berechnen.

    Bei „LayoutCoordinates“ wird für die Größe die Property „IntPxSize“ anstelle von „PxSize“ verwendet. Für Layouts werden Ganzzahlpixelgrößen verwendet. Daher sollten für alle Layoutgrößen Ganzzahlen und keine Gleitkommawerte verwendet werden. (I9367b)

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

  • CanvasScope API erstellt, die ein Canvas-Objekt umschließt, um eine zustandslose, deklarative API-Oberfläche für die Zeichnung bereitzustellen Transformationen sind auf ihren eigenen Empfängerbereich beschränkt und die Informationen zur Größe beziehen sich ebenfalls auf die entsprechenden Einblendungsgrenzen. Der Nutzer muss zum Konfigurieren von Zeichenvorgängen kein eigenes Paint-Statusobjekt verwalten.

    • CanvasScopeSample hinzugefügt und die Demo-App um eine deklarative Grafikdemo (Ifd86d) erweitert
  • Die nicht verwendete MaskFilter API wurde entfernt, da sie nur eingeschränkt verwendet wird und in den meisten Anwendungsfällen nicht für die Hardwarebeschleunigung optimiert ist (I54f76)

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

  • Alle nullablen Farbverwendungen in der API wurden durch nicht nullable ersetzt und Color.Unset wird anstelle von null verwendet (Iabaa7)

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

  • Die Farbe „Nicht festgelegt“ wurde hinzugefügt, um einen nicht festgelegten Wert darzustellen, ohne dass Farben eingekreist werden. (If901a)

  • Die Erweiterungsmethoden Canvas.rotate und Canvas.scale wurden hinzugefügt, um optionale Drehpunktkoordinaten für Transformationen zu verwenden. Standardmäßig werden sie links oben in der aktuellen Canvas-Übersetzung angezeigt.

    Außerdem wurde Canvas.rotateRad als Erweiterungsmethode für Konsistenz verschoben (Ibaca6).

  • Die PixelMap API wurde erstellt, um Pixelinformationen aus einem ImageAsset abzufragen. (I69ad6)

  • Umbenannt in „toFrameworkRect/toFrameworkRectF“ in „toAndroidRect/toAndroidRectF“, um der Namenskonvention für Objektkonvertierungen zwischen Compose und den Android-Framework-APIs, auf denen sie basieren, zu entsprechen. Außerdem aktualisierte Dokumente zu diesen APIs (I86337)

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

    Umbenennung der Image(Painter) API in PaintBox(Painter) Erstellung einer zusammensetzbaren Vektor-Datei mit Vektoren, die sich wie die zusammensetzbare Funktion von Bild verhält, außer mit einem VectorAsset anstelle eines ImageAsset (I9af9a, b/149030271)

  • „Image“ in „ImageAsset“ umbenannt, um den Unterschied zwischen den Bilddaten und dem anstehenden Bild-Komposit besser zu unterscheiden, das zum Erstellen von Layouts und zum Zeichnen von Inhalten verwendet wird. _Body:Erweiterungsmethode für android.graphics.Bitmap, Bitmap.asImageAsset(), erstellt, um eine Instanz eines ImageAssets zu erstellen, die sich für die Kombination traditioneller Android-Anwendungsentwicklung mit dem Compose-Framework eignet (Id5bbd)

  • TextDirection.Content hinzugefügt (I48f36)

  • Der Operator „TextDecoration.plus“ (I0ad1a) wurde hinzugefügt.

  • Force wurde aus den Enum-Werten von „TextDirectionAlgorithm“ (Icc944) entfernt.

  • TextDirectionAlgorithm in TextDirection umbenannt (I75ce8)

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

  • „AnnotatedString.getStringAnnotations“ wurde hinzugefügt, um alle Anmerkungen innerhalb des Bereichs zurückzugeben. (I1fa00)

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

  • Der Cursor von TextField blinkt (Id10a7).

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

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

  • Rename AnnotatedString.Builder.addAnnotationString to addStringAnnotation. (I5059e)

  • Es ist jetzt möglich, die Softwaretastatur mithilfe von SoftwareKeyboardController auszublenden/einblenden, der über den Rückruf onTextInputStarted gesendet wird (I8dc44, b/151860051)

  • Zusätzlicher Plus-Operator für (Text/Paragraph/Span)Style, der an die Funktion „merge()“ delegiert. (Ia1add)

  • FontWeight.lerp rastet nicht mehr ein. Es ist immer noch eine Datenklasse. (I521c2)

  • Der Konstruktor von „FontWeight“ ist jetzt öffentlich und keine Datenklasse mehr. (Id6b1f)

  • Fügen Sie getLineStart, getLineEnd, getEllipsisOffset und getEllipsisCount zu TextLayoutResult (Ibc801) hinzu.

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

  • Nicht verwendete Größenklasse entfernt, da im ui-geometry-Modul eine doppelte Größenklasse verwendet wird. (I1b602)

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

  • Dem Feld „Box“ die Parameter „Abstand“, „Rahmen“, „Form“ und „Hintergrund“ hinzufügen (I05027, b/148147281)

Fehlerkorrekturen

  • "onFocusChange"-Callback in Textfeldern wurde in "onFocusChanged" umbenannt (Ida4a1).
  • VerticalScroller und HoriziontalScroller wurden eingestellt. Verwenden Sie „ScrollableColumn“ und „ScrollableRow“, um das Spalten-/Zeilenverhalten und die Parameter zu integrieren, oder verwenden Sie „Modifier.verticalScroll“ und „Modifier.horizontalScroll“ für Ihr eigenes Element. Ebenso wurde „ScrollerPosition“ zugunsten von „ScrollState“ eingestellt (I400ce, b/157225838, b/149460415, b/154105299)
  • runOnIdleCompose in runOnIdle umbenannt (I83607)
  • Mehrere Test-APIs wurden umbenannt, um sie intuitiver zu gestalten. Alle APIs vom Typ „findXYZ“ wurden in „onNodeXYZ“ umbenannt. Alle doXYZ APIs wurden umbenannt, um XYZ auszuführen. (I7f164)
  • Die Compose-Benutzeroberfläche kann jetzt in ViewGroups erstellt werden, ohne dass eine neue Komposition erforderlich ist. Ein Beispiel finden Sie unter ViewInteropDemo. (I9ab0b, b/160455080)
  • "sortWith" und "removeRange" wurden zu MutableVector hinzugefügt (Icccf7).
  • Implementieren Sie Ziehpunkte für die Auswahl, um die Auswahl für das Textfeld zu ändern. (I27032)
  • Die Inline-Shader-Klasse, die die NativeShader-Erwartungklasse umhüllte, wurde entfernt. NativeShader wurde in Shader umbenannt. Die gewrappte Shader-Inline-Klasse fügte der API-Oberfläche nichts Wertvolles hinzu und war eine Inline-Klasse. Verwenden Sie daher die NativeShader-Klasse direkt. (I25e4d)
  • Der PainterModifier wurde überarbeitet, sodass er nicht mehr auf Grundlage der angegebenen Einschränkungen und des ContentScale-Parameters skaliert. Bei Implementierungen von Painter müssen die Zeichnungsinhalte anhand der angegebenen Größe des DrawScope skaliert werden, in das sie gezeichnet werden.

    Ein Problem wurde behoben, bei dem die Cache-Bitmap von VectorPainter auf die Standardgröße und nicht auf die angegebene Größe zum Zeichnen angepasst wurde.

    ImagePainter wurde aktualisiert, damit der Inhalt skaliert wird, anstatt dass dies vom PainterModifier übernommen wird. (I6ba90)

  • Top-Level-Funktion „withFrameNanos“ für das Animations-Timing hinzufügen (Ie34c5)

  • Die Anmerkung „@Untracked“ wurde eingestellt. Durch @ComposableContract(tracked=false) ersetzen (Id211e)

  • androidx.ui.foundation.TextFieldValue und androidx.ui.input.EditorValue wurden eingestellt. Die Composeables „TextField“, „FilledTextField“ und „CoreTextField“, die diesen Typ verwenden, werden ebenfalls eingestellt. Verwenden Sie stattdessen androidx.ui.input.TextFieldValue (I4066d, b/155211005).

  • Ein Problem wurde behoben, bei dem die Weiterleitung von Zeigereingaben einen Absturz verursachte, wenn PointerInputFilters beim Verschieben über die Unterzusammensetzung entfernt wurden. Dieser Fehler wurde jetzt behoben. (I1f48b, b/157998762)

  • Ein Problem wurde behoben, durch das die Weitergabe von Eingaben des Touch-Steuerelements zu einem Absturz führte, wenn PointerInputFilters während der Weitergabe über eine Unterkomposition entfernt wurden. Dieser Fehler wurde jetzt behoben. (Iab398, b/157998762)

  • Die Radius-Klasse wurde in eine Inline-Klasse umgestellt. Die Methoden zum Erstellen von Zusatzfunktionen wurden entfernt und durch einen Funktionskonstruktor mit Standardparameter ersetzt, damit der Radius entlang der Y-Achse mit dem obligatorischen Radiusparameter der X-Achse übereinstimmt.

    DrawScope.drawRoundRect wurde aktualisiert, sodass jetzt ein einzelner Radiusparameter anstelle von zwei separaten Floatwerten für den Radius entlang der X- und Y-Achse verwendet wird (I46d1b)

  • Die zusammensetzbare Funktion „Neu zusammensetzen“ ist keine nützliche Abstraktion mehr. Die meisten Neuzusammensetzungen sollten aufgrund von MutableState-Zuweisungen erfolgen. Für alles andere wird empfohlen, die Funktion invalidate zu verwenden, um eine Neuzusammensetzung des aktuellen Bereichs auszulösen. (Ifc992)

  • Die Verwendung der Px-Klasse in verschiedenen zusammengesetzten Klassen wurde im Rahmen der umfangreichen Refaktorierung ersetzt, um nur noch Dp- und primitive Typen für Pixelparameter zu verwenden (Iede0b)

  • Ändert die Codegenerierungsstrategie des Compose-Compilers. Vor der Änderung hat der Compose-Compiler Aufrufe in kombinierbare Funktionen umgewandelt. Mit dieser Änderung transformieren wir jetzt den Text einer zusammensetzbaren Funktion und lassen die Aufrufsite (meistens) unverändert.

    Das bedeutet, dass die meiste Logik der Kommunikation mit der Compose-Laufzeit am Anfang des Funktionstexts statt auf der Aufrufseite stattfindet.

    Diese Änderung sollte für alle Verwendungen von compose quellenkompatibel sein. Die meisten Nutzer von Compose müssen aufgrund dieser Änderung keinen Code aktualisieren.

    Um diese Arbeit zu unterstützen, wurde die JVM-Signatur aller zusammensetzbaren Funktionen geändert. Eine zusammensetzbare Funktion, die einen einzelnen Parameter akzeptiert, wird in eine Funktion umgewandelt, die drei Parameter akzeptiert. Die zusätzlichen Parameter sind der Composer, eine "Schlüssel"-Ganzzahl, eine Bitmasken-Ganzzahl zur Weitergabe von Metadaten durch Aufrufe.

    „Compose“ wandelt jetzt auch Standardargumente in eine zusammensetzbare Funktion um. Dies geschieht ohne zusätzliche synthetische Standardüberladung der Funktion selbst. Daher führt diese Änderung dazu, dass weniger Funktionen definiert werden.

    Bekannte beabsichtigte Verhaltensänderungen, die sich daraus ergeben:

    1. Einige Anrufe werden übersprungen, die zuvor nicht übersprungen wurden.
    2. Zusammensetzbare Ausdrücke in Standardargumentausdrücken werden jetzt korrekt abonniert und verarbeitet.

    Im Rahmen dieser Arbeit wurden einige Optimierungen vorgenommen: 1. Das Ergebnis von Parametervergleichen wird über den Aufrufgraphen an andere kombinierbare Funktionen weitergegeben. Dies führt zu weniger Vergleichen bei der Laufzeit, reduziert die Größe der Steckplatztabelle und führt dazu, dass zusammensetzbare Funktionen, die zuvor nicht übersprungen wurden, häufiger übersprungen werden. 2 Parameter, die zur Kompilierungszeit als „statisch“ eingestuft werden, werden in der Laufzeit nicht mehr verglichen oder gespeichert. Dadurch wird die Anzahl der Vergleiche und die Größe der Steckplatztabelle reduziert. 3. Die Kontrollflussstruktur des Funktionskörpers wird verwendet, um die Anzahl der generierten Gruppen zu minimieren. Dies reduziert die Größe der Slottabelle und führt zu weniger Arbeit für die Laufzeit. 4. Nicht verwendete Dispatch- und Empfängerparameter für Funktionen werden bei der Bestimmung der Überspringbarkeit der Funktion nicht berücksichtigt, wenn sie nicht im Funktionskörper verwendet werden.

    Die meisten funktionsgefährdenden Änderungen betreffen APIs, auf die der Compiler direkt abzielt. Die typische Verwendung des Editors ist davon nicht betroffen: 1. Composer::startExpr wurde entfernt. Composer::endExpr wurde entfernt. Composer::call wurde eingestellt. Die Überladungen von key ohne Varargs wurden entfernt. Verwenden Sie ab sofort die Version vararg. 5. Die Anmerkung „Pivotal“ wurde eingestellt. Verwenden Sie stattdessen key. 6. ScopeUpdateScope::updateScope wurde geändert, sodass jetzt eine Funktion 3 statt einer Funktion 1 erwartet wird. 7. „restartableFunction“ und „restartableFunctionN“ wurden um zusätzliche Parameter zur Kompilierungszeit ergänzt (I60756, b/143464846)

  • Die nicht mehr unterstützten LayoutAlign-Modifizierer wurden entfernt. (I10877)

  • RepaintBoundary wurde zugunsten von DrawLayerModifier entfernt (I00aa4)

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

  • Ersetzen von ButtonStyle durch eigene Funktionen und entfernte Textüberlastung (Zeichenfolge). Informationen zur Verwendung finden Sie in den aktualisierten Beispielen. (If63ab, b/146478620, b/146482131)

  • Funktionsgefährdende Änderungen an der Ambients API Weitere Informationen finden Sie in der Protokoll- und Ambient<T>-Dokumentation (I4c7ee, b/143769776).

  • Das Verhalten der Standardtextrichtung wird jetzt von der Layoutrichtung bestimmt. Wenn die Layoutrichtung „RTL“ ist, ist die Standardtextrichtung ebenfalls „RTL“. Bisher: TextDirection.ContentOrLtr/Rtl (I4e803)

  • Fehlerkorrektur: Wenn Schriftstärke und -stil in einem AnnotatedString verschachtelt sind, wird der Text nicht richtig gerendert. (I77a9d)

  • Es werden häufig verwendete Parameter zu „Text()“ hinzugefügt. Wenn Sie derzeit einen lokalen Textstil erstellen, um eine kleine Anzahl dieser Parameter zu übergeben, z. B. „Text(style = TextStyle(textAlign = TextAlign.Center))“, können Sie die Parameter jetzt direkt angeben: „Text(textAlign = TextAlign.Center)“ (I82768)

  • Das Modul „ui-android-text“ wurde in „ui-text-android“ umbenannt (I68cbe).