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
11. Dezember 2024 1.7.6 - - 1.8.0-alpha07

Struktur

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

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

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 das Fundament, um eigene Designsystemelemente zu erstellen.
compose.materialErstellen Sie Jetpack Compose-UIs mit vorgefertigten Material Design-Komponenten. Dies ist der übergeordnete Einstiegspunkt von Compose. Er wurde entwickelt, um Komponenten bereitzustellen, die denen auf www.material.io entsprechen.
compose.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:

Groovy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

Feedback

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

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.

Version 1.8

Version 1.8.0-alpha07

11. Dezember 2024

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

API-Änderungen

  • Inhaber von LayoutNode für Tools freigegeben. (I26f7f)
  • Wird in der LocalAutofillHighlightColor-Komposition lokal ein Farbtyp verwendet? (I0e05b)
  • Die eingestellte UrlAnnotation und ihre Methoden sollten weiterhin als experimentell gekennzeichnet bleiben. (Ic0021)

Fehlerkorrekturen

  • Behoben: IndexOutOfBoundsException stürzte ab, wenn LinkAnnotation in der BasicText oder im Text-Element verwendet wurde (be7605, b/374115892)
  • Ein Problem wurde behoben, durch das die Indikatorlinie bei ausgefüllten Textfeldern mit benutzerdefinierter Form nicht zugeschnitten wurde. (I4f87f, b/380704151)
  • Fehlende Hintergründe bei langen Screenshots wurden behoben. (I4d57a)
  • Diese Bibliothek verwendet jetzt JSpecify-Null-Anmerkungen, die sich auf den Typ beziehen. Kotlin-Entwickler sollten die folgenden Compilerargumente verwenden, um die korrekte Verwendung zu erzwingen: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (Idfef8, b/326456246)
  • Unterstützung für Compose für Wide Gamut- und HDR-Farben unter Android Q und höher aktualisiert. (Icd8be, b/379135036)
  • Wenn Ressourcenschriften nicht geladen werden können, wird jetzt automatisch auf die Standardschrift zurückgegriffen. Bisher wurde eine Ausnahme im Messwert geworfen. (Ib6a49)
  • Behebung des Problems, dass der Fokus verloren geht, wenn AndroidView getrennt und wieder verbunden wird. (I53446)
  • requestFocus() aus Aktion „Außerhalb des Layouts“ akzeptieren (Ia8461)

Externer Beitrag

  • BringIntoViewResponderModifierNode wurde zur Benutzeroberfläche hinzugefügt. Dies bietet eine neue Möglichkeit, die Funktion „In den Blick bringen“ zu implementieren und auf Plattformebene zu implementieren. (Ia6dd8)

Version 1.8.0-alpha06

13. November 2024

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

API-Änderungen

  • Fügt den stylusHoverIcon-Modifikator hinzu. (Iff20a, b/331289114)
  • Der Autofill-Manager wird zu einer Benutzeroberfläche. (I84914, b/376080755)
  • Fügen Sie sowohl focusRequester als auch FocusTargetModifierNode requestFocus(FocusDirection) hinzu, um den Fokus auf eine bestimmte Richtung zu legen. (I5d9ec, b/245755256)
  • FocusProperties.enter und FocusProperties.exit wurden durch onEnter und onExit ersetzt. Dabei wird statt des FocusDirection-Parameters ein Empfängerbereich verwendet. (I6e667)
  • Unterstützung für die automatische Vervollständigung in der Textsymbolleiste (Ie6a4c)
  • API-Änderungen zu Modifier.focusRestorer() (I99c03):
    • Parametername in „fallback“ geändert
    • Parameter ist jetzt ein FocusRequester und kein Lambda
    • Der Parameter ist jetzt nicht mehr NULL und „Default“ ist der Standardwert.
  • Die Anmerkung @Experimental wird aus der Benutzeroberfläche des Autofill-Managers entfernt. Die Funktion ist noch nicht fertiggestellt, soll aber in dieser Version eingeführt werden. Wir möchten jedoch keine @Expemiental API (Id8398) einführen.
  • LocalHapticFeedback bietet jetzt eine standardmäßige HapticFeedback-Implementierung, wenn die Vibrations-API angibt, dass Haptik unterstützt wird. Folgende Werte wurden zu HapticFeedbackType hinzugefügt: Confirm, ContextClick, GestureEnd, GestureThresholdActivate, Reject, SegmentFrequentTick, SegmentTick, ToggleOn, ToggleOff und VirtualKey. Bei Wear Compose-Komponenten, die lang angeklickt werden können, wie Button, IconButton, TextButton und Card, wird jetzt die haptische Rückmeldung LONG_PRESS ausgeführt, wenn ein Handler für langes Drücken angegeben wurde. (I5083d)
  • Entfernt OverscrollConfiguration und LocalOverscrollConfiguration und fügt rememberPlatformOverscrollFactory hinzu, um eine Instanz der Standard-Overscroll-Implementierung zu erstellen oder die Parameter anzupassen. Wenn Sie das Überscrollen deaktivieren möchten, verwenden Sie anstelle von LocalOverscrollConfiguration provides null LocalOverscrollFactory provides null. Wenn Sie die Farbe oder den Abstand des Glühens ändern möchten, verwenden Sie anstelle von LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding) LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding). (Ie71f9, b/255554340, b/234451516)
  • Die experimentelle GlobalAssertions API wurde entfernt. Sie wurde ursprünglich für die Durchführung von Barrierefreiheitstests entwickelt. Verwenden Sie stattdessen enableAccessibilityChecks(). (I59322)

Version 1.8.0-alpha05

30. Oktober 2024

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

Neue Funktionen

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

  • Wenn Sie Autofill aktivieren möchten, setzen Sie ComposeUiFlags.isSemanticAutofillEnabled 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, 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. (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)
  • Es wird eine neue AutofillManager-Benutzeroberfläche eingeführt, mit der sich der Autofill-Vorgang für Nutzer optimieren lässt, sowie ein isSemanticAutofillEnabled-Flag, mit dem diese neue Version von Autofill aktiviert werden kann. (I9d484)
  • Die Modifier.onRectChanged API wurde hinzugefügt. Mit dieser API können Sie die verhältnismäßige Position und Größe eines LayoutNode zum Stamm/Fenster/Bildschirm abonnieren. 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)
  • Ein Problem wurde behoben, bei dem verschiedene Ressourcentypen bei Konfigurationsänderungen nicht aktualisiert wurden (Ia9b99, b/352336694)
  • Ein Problem wurde behoben, durch das TextField auf bestimmten älteren Sony-Geräten nicht richtig funktionierte, wenn die japanische POBox-Tastatur verwendet wurde. (Ia9b99, b/373743376)
  • Problem behoben, bei dem Dialogfelder unten auf dem Bildschirm statt zentriert angezeigt wurden (Ia2ec, b/373093006)
  • Bei der Targeting API 35 und höher wird decorFitsSystemWindows für Dialogfelder nicht mehr erzwungen. (Ibc94, b/364492593)
  • Absturz beim Verschieben von Ebenen zwischen Fenstern (z.B. Dialogfeld und Hauptinhalt) behoben (I675ba, b/330955281)

Version 1.8.0-alpha04

16. Oktober 2024

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

API-Änderungen

  • Es werden DelegatableNode#onDensityChange- und DelegatableNode#onLayoutDirectionChange-Callbacks hinzugefügt, um den Knotenstatus bei Änderungen zu aktualisieren (I04f3e, b/340662451)
  • Hier wird WindowInfo#containerSize hinzugefügt, um die Größe des Inhaltscontainers des aktuellen Fensters anzugeben. Diese kann 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 Rückschritten zu steuern. Das Flag wird vor der Betaphase entfernt. (I05c37, b/371168883)
  • Einführung von PointerInputModifierNode#touchBoundsExpansion, mit dem sich die Touch-Grenzen eines Eingabemodifikators für einen einzelnen Zeiger vergrößern lassen. (Iccf02, b/335339283)
  • Hier wird WindowInfo#containerSize hinzugefügt, um die Größe des Inhaltscontainers des aktuellen Fensters anzugeben. Diese kann 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

  • Die Verarbeitung von Absätzen in AnnotatedString wurde aktualisiert. Bisher konnten Sie nur nicht überlappende Absätze erstellen. Mit AnnotatedString können jetzt vollständig überlappende Absätze zusammengeführt und verschachtelte Absätze erstellt werden. In diesem Fall wird der äußere Absatz an den Grenzen des inneren Absatzes aufgeteilt und der Stil des inneren Absatzes mit dem Stil des äußeren Absatzes zusammengeführt (Ic9554)
  • Behebung eines Absturzes in AnnotatedString bei 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, bei dem bestimmte generischen Umriss-Clips in Kombination mit Höhenschatten bei einigen Android-Versionen ignoriert wurden.
  • Ein Problem wurde behoben, bei dem bei bestimmten Android-Versionen leere Clips angewendet wurden, wenn ein generischer Umrissclip angegeben wurde.
  • Behobene Ausnahme, die geworfen wurde, wenn die IME in einer externen Ansicht aktiv war und die Aktion „Weiter“ verwendet wurde, um den Fokus auf die ComposeView zu setzen. Das Verhalten 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, 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 zugeschnitten werden (e8e2f, b/363027803)
  • Fehlerbehebung, wenn sich der Fokus der Suche zwischen „Schreiben“ und einer Ansicht bewegt (58377, b/350534714)

Externer Beitrag

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

Version 1.8.0-alpha01

4. September 2024

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

Version 1.7

Version 1.7.6

11. Dezember 2024

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

Fehlerkorrekturen

  • Bisher wurde bei einem Schlüsselereignis ein Fehler ausgegeben, wenn für das Fokussystem ausstehende Ungültigstellungen vorhanden waren. Stattdessen wird jetzt ein Fehler protokolliert (I7ea0, b/346370327).
  • Die experimentelle Anmerkung für SemanticsPropertyReceiver.invisibleToUser() wurde entfernt. Diese Funktion wird in Version 1.8 eingestellt und durch SemanticsPropertyReceiver.hideFromAccessibility() ersetzt. (I448f0, b/376479686)
  • Ein Problem wurde behoben, durch das TextField bei Verwendung der POBox-japanischen Tastatur auf bestimmten älteren Sony-Geräten nicht richtig funktionierte. (I94e0e, b/373743376)
  • Ein Problem mit der Barrierefreiheit wurde behoben, bei dem der Inline-Inhalt von BasicText von TalkBack nicht vorgelesen wurde. (I67bcb, b/376479686)

Version 1.7.5

30. Oktober 2024

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

Fehlerkorrekturen

  • Probleme behoben, bei denen Höhen und Ausschnitte mit benutzerdefinierten Umrissen nicht richtig gerendert wurden.
  • Ein Absturz beim Einfügen von LinkAnnotation mit einer Breite von null wurde behoben. (Ic1e2e)
  • Behebung eines Fehlers bei der Ansage in Talkback der Schaltfläche, wenn sie als anklickbarer Text-Composeable erstellt wurde. (I1f588)

Version 1.7.4

16. Oktober 2024

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

Version 1.7.3

2. Oktober 2024

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

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem die Angabe eines generischen Umriss-Clips bei bestimmten Android-Versionen zu einer leeren Clip-Begrenzung führte.
  • Behobene Ausnahme, die geworfen wurde, wenn die IME in einer externen Ansicht aktiv war und die Aktion „Weiter“ verwendet wurde, um den Fokus auf die ComposeView zu setzen. Das Verhalten 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

  • Die Leistung von Informationen zu Knoten für Barrierefreiheit und Semantikereignissen wurde durch das Entfernen ausführlicher Tracing-Informationen verbessert. (I89156, b/362530618)
  • ComposeView stürzt nicht mehr ab, wenn eine außergewöhnlich große Messgröße übergeben wird (da5db, b/347036173)
  • Ein Problem mit Screenreadern wurde behoben, bei dem LiveRegion-Ansagen zu Schaltflächen nicht gemacht wurden. (f66fa7, b/348590026)

Version 1.7.1

10. September 2024

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

Version 1.7.0

4. September 2024

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

Wichtige Änderungen seit Version 1.6.0

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

Version 1.7.0-rc01

21. August 2024

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

Wichtige Änderungen

  • Für das ui:ui-Modul ist jetzt mindestens die Version 1.7.0-rc01 von foundation:foundation erforderlich. Dies soll eine Verhaltensinkompatibilität zwischen UI und Foundation in Bezug auf NestedScrollSource-Änderungen beheben, die zu Beginn von 1.7.0-alpha01 aufgetreten sind.

Version 1.7.0-beta07

7. August 2024

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

Fehlerkorrekturen

  • Bei den SemanticsNodeInteraction-Funktionen performTextReplacement, performTextInput und performTextClearance, die sich auf die Texteingabe beziehen, werden jetzt Assertion-Fehler ausgegeben, wenn sie auf schreibgeschützte 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, durch den TextField beim Wechseln der Softwaretastatur die Eingabe über die neue Tastatur erst akzeptierte, wenn der Fokus verloren und wiedergewonnen wurde.
  • Ein Problem wurde behoben, durch das beim Rendern mit SurfaceView-Inhalten beim Versuch, Ebeneninhalte beizubehalten, unbeabsichtigte Nebenwirkungen auftraten.

Version 1.7.0-beta04

26. Juni 2024

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

Fehlerkorrekturen

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

Version 1.7.0-beta03

12. Juni 2024

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

Version 1.7.0-beta02

29. Mai 2024

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

API-Änderungen

  • SemanticsProperties.Editable wurde 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 wird 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 die Klasse TextLinkStyles hinzugefügt, mit der die Links als Parameter für das Text-Element formatiert werden können. (I31b93)

Fehlerkorrekturen

  • Es wurden weitere Anwendungsfälle behoben, bei denen während von Ereignissen dynamisch Modifikatoren für die Eingabe des Mauszeigers hinzugefügt wurden 63e1504

Version 1.7.0-alpha08

1. Mai 2024

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

API-Änderungen

  • Unterstützung für veränderliche Formimplementierungen hinzugefügt. Shape#createOutline wird jetzt in Grafikebenen beobachtet. Wenn Sie Statuswerte darin lesen, werden bei einer Statusänderung Ungültigkeiten verursacht, was für leistungsstärkere Formanimationen sorgt. (Id1629, b/326070216)
  • isPositionedByParentWithDirectManipulation wurde in introducesFrameOfReference umbenannt. Hinweis: Jetzt hat es den umgekehrten Effekt. Das bedeutet, dass die meisten LayoutCoordinates standardmäßig einen Referenzrahmen einführen und die Eigenschaft nur dann auf „false“ gesetzt wird, wenn sie direkt manipuliert wird. Wenn Sie die Position nur mit Elementen abfragen möchten, die einen Bezugspunkt einführen, verwenden 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 ist für alle Methoden 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. Wenn du dem Text Links hinzufügen möchtest, erstelle eine AnnotatedString mit einer LinkAnnotation, die deinem Link entspricht, und übergebe diese AnnotatedString an das Text-Element. (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)
  • Das Feature-Flag für lange Screenshots wurde entfernt. (I28648, b/329128246)
  • LazyColumn rendert jetzt fixierte Überschriften in langen Screenshots korrekt. (I8d239, b/329296635)
  • Die NestedScroll-Quellen „Ziehen“ und „Wischen“ werden durch UserInput und SideEffect ersetzt, um der erweiterten Definition dieser Quellen Rechnung zu tragen. Dazu gehören jetzt auch Animationen (Nebeneffekt) sowie Mausrad und Tastatur (UserInput). (I40579)
  • ApproachLayoutModifierNode und Modifier.approachLayout sind jetzt stabil. Die alten isMeasurementApproachComplete() und isPlacementApproachComplete() wurden 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-Design-Designvorlagen verwenden, verwenden Sie das TextDefaults-Objekt, um die Anmerkung mit Material-Design-Designvorlagen zu erstellen (I8d180, b/323346545).
  • Für Textlinks gibt es jetzt neben dem normalen Stil auch einen Stil für den gedrückten Zustand, den Hover-Zustand und den Fokus-Zustand (I5f864, b/139312671)
  • String.parseAsHtml wurde in AnnotatedString.Companion.fromHtml umbenannt. (I43dcd)
  • Stilargumente (linkStyle, focusedLinkStyle, hoveredLinkStyle) und ein Link-Interaktions-Listener wurden der Methode parseAsHtml hinzugefügt. Beim Parsen des HTML-getaggten Strings mit <a>-Tags erstellt die Methode für jedes solche Tag ein LinkAnnotation.Url und übergibt die Stilobjekte und den Link-Interaktions-Listener an jede Anmerkung. (I7c977)
  • LinkAnnotation akzeptiert jetzt die zustandsbasierten Stilargumente und ein 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)
  • ImeOptions.hintLocales ist nicht mehr optional. Wenn Sie eine leere Liste mit Sprachen ü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

  • Die Methode parseAsHtml für formatierte Strings wurde hinzugefügt. Damit können Sie einen mit HTML-Tags markierten String in AnnotatedString konvertieren. Beachten Sie, dass nicht alle Tags unterstützt werden. Aufzählungslisten können beispielsweise noch nicht angezeigt werden. (I84d3d, I30626, b/139326648)
  • Es wurde eine experimentelle Unterstützung für lange Screenshots in Scroll-Containern für die Nachrichtenerstellung mithilfe der offiziellen Android API (ScrollCaptureCallback) implementiert. Diese Funktion ist experimentell und wird derzeit möglicherweise nicht in allen Fällen korrekt verarbeitet. Aus diesem Grund ist die Funktion derzeit standardmäßig deaktiviert. Wenn Sie die Funktion aktivieren möchten, setzen Sie das 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 oder höher, der von über 99% aller Android-Geräte unterstützt wird. Unter Android API-Level 21 wird auf Software-Rendering zurückgegriffen. (I9e114)
  • Hilfsmethode zum Konvertieren einer Android-RectF 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)
  • Bei der BasicTextField(state)-Variante und BasicSecureTextField wird jetzt KeyboardActionHandler anstelle von KeyboardActions verwendet, um Aktionen der Softwaretastatur zu verarbeiten. (I58dda)

Version 1.7.0-alpha05

20. März 2024

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

Neue Funktionen

  • Einführung der neuen GraphicsLayer API zum Aufzeichnen von Zeichenbefehlen in einer Anzeigeliste sowie zusätzlicher Properties, die sich auf das Rendern der Anzeigeliste auswirken. So können Sie eine komplexe Szene in kleinere Teile unterteilen, die unabhängig voneinander aktualisiert werden können, ohne die gesamte Szene neu erstellen zu müssen. Transformationen an 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 zur Unterstützung beim Schreiben von Low-Level-IME-Tests und anderen Low-Level-IME-Anwendungsfällen. PlatformTextInputTestOverride wurde eingestellt. (I862ed, b/322680547)
  • Die Erweiterungsfunktion GraphicsLayer.setOutline(Outline) wurde hinzugefügt. (Ib81f4)
  • Einführung des GraphicsContext-Funktionskonstruktors zum Erstellen einer Fabrik zum Erstellen 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 API-Definition GraphicsLayer „expected/actual“ (erwartet/tatsächlich) wurde hinzugefügt, um das Aufzeichnen und Wiedergeben von Zeichenbefehlen mit optionalen visuellen Effekten und Transformationen zu unterstützen. Einführung der GraphicsContext-Oberfläche zur Verwaltung von Grafikabhängigkeiten, einschließlich Erstellung und Verwaltung von GraphicsLayer-Instanzen. (I4a8d6, b/288494724)
  • Ein Interoperabilitätsproblem bei der 1D-Fokussuche wurde behoben, bei dem der Fokus in einer ComposeView hängen blieb, die in andere Ansichten eingebettet war. (I08fd4)

Externer Beitrag

  • LocalLifecycleOwner wurde von der Compose-Benutzeroberfläche 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 wird veröffentlicht. Version 1.7.0-alpha04 enthält diese Commits.

API-Änderungen

  • Unterstützung der Eingabe per Eingabestift für BasicTextField2 auf Geräten ab Android U (I002e4)
  • In dieser CL fügen wir die semantische Aktion GetScrollViewportLength hinzu, damit wir Informationen zu den Komponenten, die in Compose gescrollt werden, an das A11Y-System weiterleiten können. Diese CL gilt auch für die Verwendung dieser Property in scrollbaren Foundation-Listen. (Ic5fa2)
  • FocusRequester.createRefs ist jetzt stabil (I4d92c, b/261436820)
  • Einführung von DelegatableNode.requireView(), damit Modifikatorknoten die aktuelle Android-View abrufen können, ohne eine Komposition lokal zu lesen. (I40768)
  • Neue API Path.reverse() zum Umkehren der Richtung eines Pfads (I36348)
  • hintLocales wurde 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 bisherige Verhalten in FlowRow oder FlowColumn beibehalten möchten, bei dem alle Elemente unabhängig davon zusammengesetzt werden, ob sie in die maximale Breite der Querachse passen, legen Sie bei der Initialisierung overflow auf FlowRowOverflow.Visible oder FlowColumnOverflow.Visible fest. Unter ContextualFlowRowSample und FlowRowSample finden Sie Beispiele für diese neuen Funktionen in der Praxis. (Ib9135, b/293577082)
  • Fügen Sie die maxTextLength-Semantikeigenschaft hinzu, die für Textfelder festgelegt werden sollte, die die maximal zulässige Anzahl von Zeichen herausfiltern. (I24d9f, b/170648072)
  • Der Modifier.inspectable-Wrapper wurde eingestellt. Diese API führt zu mehr Ungültigstellungen des Modifiers als nötig. Daher wird ihre Verwendung nicht mehr empfohlen. Entwickler sollten die inspectableProperties()-Methode für ModifierNodeElement implementieren, wenn sie Modifikatoreigenschaften für Tools freigeben möchten. (Ib3236)
  • Neuer Konstruktor für PopupProperties, der die vollständige Kontrolle über WindowManager.LayoutParams-Flags ermöglicht. (Ibb33e, b/312485503)
  • Einführung von DelegatableNode.requireLayoutCoordinates() als Möglichkeit, die aktuelle LayoutCoordinates eines 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 Binärkompatibilitätsproblem mit SemanticsPropertyReceiver.performImeAction wurde behoben. (I65865, b/322269946)
  • Der PopupProperties-Konstruktor, der einen usePlatformDefaultWidth-Parameter annimmt, ist nicht mehr experimentell. (I8f8d2)
  • Es wurde eine Überladung von ComposeTestRule.waitUntil hinzugefügt, die eine Stringbeschreibung der Bedingung annimmt, die in die Zeitüberschreitungsmeldung aufgenommen werden soll. (I9413e)
  • Neue Semantics API unset() zum Entfernen von Semantics-Properties, die in derselben Modifikatorkette hinzugefügt wurden. Neue Semantikeigenschaft 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 Korrektur kann bei Problemen jederzeit deaktiviert werden, indem Sie VelocityTrackerAddPointsFix auf „false“ (falsch) setzen. (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 wird veröffentlicht. Version 1.6.8 enthält diese Commits.

Fehlerkorrekturen

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

Version 1.6.7

1. Mai 2024

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

Version 1.6.6

17. April 2024

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

Fehlerkorrekturen

  • Ein seltener Absturz von BasicTextField wurde behoben.

Version 1.6.5

3. April 2024

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

Version 1.6.4

20. März 2024

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

Version 1.6.3

6. März 2024

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

Version 1.6.2

21. Februar 2024

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

Version 1.6.1

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

Fehlerkorrekturen

  • Ein Problem mit der Abwärtskompatibilität von SemanticsPropertyReceiver.performImeAction 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 die Einheitlichkeit von maximumFlingVelocity zu verdeutlichen. (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. Dieses Lambda gibt eine gültige DragAndDropTarget zurück, wenn Sie an einer Drag-and-drop-Sitzung interessiert sind. Andere Lambdas zur Verarbeitung von Drag-Ereignissen wurden durch diese ersetzt. Außerdem wurde 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. Bei den restlichen Test-APIs werden deaktivierte Knoten standardmäßig herausgefiltert. (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 datenklassenbasierten Instanzen, um diese Slots zu erstellen. Dies ist eine gravierende Änderung. In der Demo und im Beispielcode finden Sie Beispiele zur Verwendung der neuen API. (Ia8943)

  • Der Konstruktor von FontStyle(int) wurde verworfen. Verwenden Sie 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 Ereignis vom Typ „Runter“ erhalten haben, werden jetzt ignoriert. (Ib37b4, b/305518328)
  • Unterstützung für den Renderer für den Farbverlauf „Sweep Gradient“ in ArcLine hinzufügen (I4d5bb)
  • Implementieren Sie „equals“ und „hashcode“ für PageSize.Fixed. (Ie3ede, b/300134276)
  • Behebung eines Binärkompatibilitätsproblems bei der Änderung des Fensterabstands (Iee695)
  • Entfernen Sie die Material Core-Ebene für Material3-Chips/-Schaltflächen, da die Microbenchmarks ohne diese eine bessere Leistung zeigen. (I55555)
  • 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)
  • Einführung eines speziellen Unspecified-Werts für die Felder TextAlign, TextDirection, Hyphens und LineBreak des ParagraphTextStyle als Ersatz für null. Da es sich bei diesen Klassen um Inline-Klassen handelt, vermeiden wir durch das Ersetzen von „nullable“ durch „unspecified“ die Boxierung von primitiven Typen. Konstruktoren, Getter und andere Methoden 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 coroutines zur Cacheverwaltung. (Ie8dd9)
  • AndroidViewBinding entfernt jetzt synchron Fragment-Instanzen, die durch das Einfügen eines FragmentContainerView in Ihr Layout als Teil des onRelease vergrößert wurden. Dazu wird commitNow (anstelle der bisher verwendeten commit) verwendet. So werden Probleme mit der Methode von Live Edit behoben, bei der die Komposition bei Änderungen ersetzt wurde. (I58fbf)

Version 1.6.0-alpha07

4. Oktober 2023

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

API-Änderungen

  • Einführung von PlatformTextInputMethodTestOverride zum Schreiben von Tests für benutzerdefinierte Texteditoren. (Id159b)
  • Es werden die Modifikatoren dragAndDropSource zum Starten von Drag-and-drop-Sitzungen und dragAndDropTarget zum Empfangen von Drag-and-drop-Sitzungen hinzugefügt. (Ib7828, b/286038936)
  • Die Sammlungen ColorList und ColorSet wurden hinzugefügt, um Zuweisungen zu vermeiden. (I744bd)
  • Das temporäre Flag DisableNonLinearFontScalingInCompose wurde hinzugefügt, um die nicht lineare Schriftskalierung zu deaktivieren. Legen Sie in Ihren 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 Parsing von XML-Vektor-Drawables. (Ibb015)

Version 1.6.0-alpha06

20. September 2023

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

API-Änderungen

  • Weitere Optimierungen der Materialsymbole. (I3e08d)
  • Es wurde die Möglichkeit hinzugefügt, den Modifikatorbaum nach oben und unten zu durchsuchen, um ähnliche Knoten zu finden. (I2d234)
  • Dem focusRestorer()-Modifikator wurde 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 Definition von PreviewScreenSizes hinzufügen (Ib61d3)

Verhaltensänderungen

  • In Compose wird jetzt eine nicht lineare Schriftskalierung verwendet, um die Lesbarkeit und Barrierefreiheit zu verbessern. Wenn die Schriftgröße in den Systemeinstellungen über 100% liegt, wird kleiner Text normal vergrößert, bereits großer Text jedoch nur geringfügig. Außerdem werden in SP definierte Zeilenhöhen automatisch angepasst, damit sie proportional zur beabsichtigten Höhe im Maßstab 100% bleiben. Weitere Informationen finden Sie in den Best Practices für die Schriftgröße. (I11518)

Version 1.6.0-alpha05

6. September 2023

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

API-Änderungen

  • Aktivieren Sie die Inhaltserfassung in AndroidComposeViewAccessibilityDelegateCompat. (Ib2969)
  • Die Geschwindigkeit von Wischaktionen in Ansichtskomponenten wie ScrollView 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 wird veröffentlicht. Version 1.6.0-alpha04 enthält diese Commits.

API-Änderungen

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

Version 1.6.0-alpha03

9. August 2023

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

API-Änderungen

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

Fehlerkorrekturen

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

Version 1.6.0-alpha02

26. Juli 2023

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

API-Änderungen

  • Es wurde eine Dienstsuchschnittstelle hinzugefügt, die von Implementatoren von Zusammensetzungen implementiert werden kann. Sie ermöglicht eine Implementierung von Zusammensetzungen, die Dienstsuchanfragen an eine andere Zusammensetzung delegiert. Diese Funktion sollte nicht direkt aufgerufen werden. Sie dient dazu, experimentelle APIs in der Laufzeit zu erstellen, die in verpackten Versionen des Composers wie dem UI-Modul zu finden sind. (I296b9)
  • Die PlatformTextInput* API wurde komplett neu gestaltet. (I6c93a, b/274661182, b/267235947, b/277380808)
  • SoftwareKeyboardController und LocalSoftwareKeyboardController sind keine experimentellen Funktionen mehr. 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 so lange verschoben, bis die Ansicht angehängt ist, anstatt ausgeführt zu werden, wenn die Komposition angewendet wird, in der die AndroidView eingeführt wird. 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 wird 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 Vorschaudurchlauf können Kinder von LazyList unabhängig von der Realität animiert werden, die im Vorschaudurchlauf zu sehen ist.

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

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

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

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

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

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

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

Sie können includeFontPadding für Ihren gesamten Text aktivieren, indem Sie Ihre Material-Stile konfigurieren. Die Parameternamen unterscheiden sich zwischen M2 und M3.

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

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

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

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

API-Änderungen

  • Unterstützung von InputConnection#requestCursorUpdates (I0c69b)
  • FocusRequester.saveFocusedChild 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 Speicherzuweisungen. (Iede48)
  • Es wurden semantische Eigenschaften und Aktionen hinzugefügt, um die Textübersetzung zu unterstützen. (I4a6bc)
  • Neues Attribut in IntrinsincMeasureScope und seinen Implementierungen (z.B. MeasureScope), das angibt, ob der aktuelle Messdurchlauf ein Vorschaudurchlauf ist. (I7a812)
  • Die DrawScope API wurde aktualisiert, um das Rendern auf eine andere Leinwand mit alternativer Dichte/Layoutrichtung und Größe umzuleiten.
  • DrawContext wurde aktualisiert, um die Konfiguration der Dichte und Layoutrichtung zu unterstützen und den Canvas konfigurierbar zu machen. (Ie1f9b, b/225408150)
  • Paragraph#fillBoundingBoxes wurde hinzugefügt, um Begrenzungsrahmen für Zeichen zu berechnen. (If30ee)
  • Es wurden einige gängige MultiPreviews (Ia5a27) hinzugefügt.

Fehlerkorrekturen

  • Die FocusTargetModifierNode-Benutzeroberfläche wurde hinzugefügt, mit der 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)
  • Unterstützung für die Auswahl per Maus hinzugefügt. Bei der Auswahl per Berührung wird die Auswahl um ein Wort erweitert und um ein Zeichen verkleinert. (Ic0c6c, b/180639271)
  • Bei Paragraph-Methoden, die bei nicht gültigen Offset-Werten bisher AssertionError zurückgegeben haben, wird jetzt wie bei MultiParagraph IllegalArgumentException zurückgegeben. (I549d3, b/243338896)

Version 1.5

Version 1.5.4

18. Oktober 2023

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

Version 1.5.3

4. Oktober 2023

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

Fehlerkorrekturen

  • (b/301209788TextField hat beim Fokussieren und Eingeben koreanischer Eingaben manchmal fälschlicherweise vorherige Befehle angewendet, was zu verlorenen Zeichen geführt hat.

Version 1.5.2

27. September 2023

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

Fehlerkorrekturen

  • Problemumgehung für Abstürze beim Zugriff auf die API für die Bedienungshilfen-Scrollfunktion über den Hintergrund-Thread hinzugefügt
  • Korrektur von nicht verbundenen Knoten, die dem Semantikbaum hinzugefügt wurden.

Version 1.5.1

6. September 2023

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

Fehlerkorrekturen

  • Textfelder, in denen die Tastatur angezeigt und der Text bearbeitet werden kann, wenn readOnly = „wahr“ ist, wurden korrigiert. Außerdem wurde behoben, dass die Tastatur nicht angezeigt wurde, 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 wird veröffentlicht. Version 1.5.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Ein Absturz, der beim Einfügen von SubcomposeLayout in movableContentOf() auftrat, wurde behoben.

Version 1.5.0-beta03

28. Juni 2023

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

Fehlerkorrekturen

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

Version 1.5.0-beta02

7. Juni 2023

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

API-Änderungen

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

Fehlerkorrekturen

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

Version 1.5.0-beta01

24. Mai 2023

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

API-Änderungen

  • Zuweisungen bei der Neuzusammensetzung, Farbanimationen und AndroidComposeView (Ib2bfa) entfernt
  • Es wird die Hilfsfunktion CacheDrawModifierNode() hinzugefügt, um die Delegierung zu ermöglichen (Icf8f9)
  • Die Property isLookingAhead ist jetzt unter MeasureScope verfügbar. Damit können Sie sich die Ergebnisse der Vorschau ansehen und bei Bedarf den Hauptausweis beeinflussen. (Ibf4c3)
  • Neue semantische Eigenschaft traversalIndex, eine Gleitkommazahl, mit der Knoten bei der TalkBack-Durchquerung neu angeordnet werden (niedrigere Werte kommen zuerst). (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- und Drehtransformationen anzuwenden. (I23434, b/233772232)
  • Die Methode von ColorProducer heißt produce. (I78bde)
  • toFrameworkColorSpace in toAndroidColorSpace (I4f547) umbenennen
  • 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 hat jedoch gezeigt, dass Entwickler diese Konfigurationsoption benötigen. Daher wird die Einstellung des Felds aufgehoben (I98e96, b/277703184).
  • Öffentliche TextRange.constrain-Methode hinzugefügt. (I97912)
  • UrlAnnotations in AnnotatedStrings können jetzt über Bedienungshilfen wie TalkBack geöffnet werden. (If4d82, b/253292081)
  • Die semantische Aktion InsertTextAtCursor wurde für Textfelder hinzugefügt. (I11ed5)
  • Der Konstruktor von LineHeightStyle.Alignment(topRatio) wird zur stabilen API hochgestuft. (I79c32, b/261565383)
  • TextMeasurer und zugehörige APIs sind nicht mehr experimentell. (I74647, b/261581753)
  • Die semantische Aktion PerformImeAction wurde hinzugefügt, um die IME-Aktion auf Texteditorknoten aufzurufen. (Ic606f, b/269633506)
  • PlatformTextInput APIs sind für Android nicht mehr experimentell. (I668eb)
  • Der Name des Wertparameters für Enum.valueOf wurde geändert (Ia9b89)
  • Mehr geworfene Ausnahmen von enum valueOf (I818fe)
  • Einführung einer neuen Low-Level-PlatformTextInputAdapter API zum Erstellen benutzerdefinierter Texteingabeimplementierungen, die direkt mit Plattform-APIs kommunizieren. (I58df4)
  • Den Methoden DrawScope.drawText, Paragraph.paint 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ügen Sie BasicText die Parameter brush und alpha hinzu, um den Textpinsel effizient zu animieren oder festzulegen.
  • Definition von boxfreien Lambda-Typen für Float, Double, Long, Int und Short in :ui:ui-unit (I6f18d, b/246961787)

Fehlerkorrekturen

  • Mehrere Zuordnungen beim Tracking der Mauszeigergeschwindigkeit entfernt (I26bae)
  • Weniger Zuweisungen bei der Layout- und Zeiger-Eingabeverwaltung (I5333a)
  • Optimierung der Vektorspeichernutzung und des Renderings erster Frames (I2f3c6)
  • Zuweisungen beim Zeichnen von Linien und Punkten mit Canvas entfernt (I9f535)
  • Dokumente für AndroidFont.fontVariationSettings (I7d9e2) hinzufügen

Externer Beitrag

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

Version 1.5.0-alpha04

10. Mai 2023

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

Neue Funktionen

  • Modifier.Node Verbesserungen bei der Delegierung Es wurde eine erweiterte Möglichkeit hinzugefügt, von 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 Rückspulvorgänge zu unterstützen. So können häufige Pfadmanipulationen schneller wiederverwendet werden. (I7b797)
  • Optimierte TextStyle.merge(...) mit vollständiger Parameterliste hinzugefügt. (Iad234, b/246961787)
  • Viele Text-APIs wurden stabilisiert, darunter Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush) und MultiParagraph.paint(Brush). (I2f740, b/261581564, b/261581931, b/261561245)
  • PlatformTextStyle.includeFontPadding wurde reaktiviert. Ursprünglich wollten wir das Feld entfernen. Das Feedback hat jedoch gezeigt, dass Entwickler diese Konfigurationsoption benötigen. Daher wird die Einstellung des Felds aufgehoben (I98e96, b/277703184).

Fehlerkorrekturen

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

Version 1.5.0-alpha03

19. April 2023

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

Neue Funktionen

  • Neues Standardverhalten für SubcomposeLayout 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 angehaltenen Aktivitäten verknüpft sind, bei Datenänderungen weiterhin neu zusammengesetzt werden, aber die Animationen oder andere Aufrufer von withFrameNanos blockiert werden. (Id9e7f, b/240975572)
  • Ändert motionEventSpy in „stabil“. (Ic5ec4, b/261560988)
  • Öffentliche TextRange.constrain-Methode hinzugefügt. (I97912)
  • PlatformTextStyle.includeFontPadding ist nicht mehr eingestellt, damit Entwickler diese API zur Kompatibilität verwenden können, um die 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 wird veröffentlicht. Version 1.5.0-alpha02 enthält diese Commits.

API-Änderungen

  • Neue SubcomposeLayout API mit einer zusätzlichen Richtlinie für Zwischenmesswerte zur Verarbeitung der Mess-/Layoutlogik bei lookahead-basierten Animationen. (I017d3)
  • PointerInput ist jetzt träge und verwendet Modifier.Node für eine bessere Leistung. Weitere Informationen zu dieser geringfügigen Verhaltensänderung (15dab9)
  • Experimentelle APIs werden mit wichtigen Ereignissen in stabile APIs umgewandelt. (I9c7d8, b/261566839, b/261567368)
  • Die experimentellen APIs werden in PointerInputChange in stabile APIs geändert. (I1b543, b/261560988, b/261565762, b/261565749)
  • Es wird eine Möglichkeit hinzugefügt, eine SuspendingPointerInputModifierNode für 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 semantische Aktion InsertTextAtCursor wurde für Textfelder hinzugefügt. (I11ed5)
  • Bei textbezogenen Testaktionen (z.B. performTextInput) wird der Fokus jetzt direkt über die semantische Aktion angefordert, anstatt auf das Feld zu klicken. (I6ed05)

Fehlerkorrekturen

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

Version 1.5.0-alpha01

22. März 2023

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

API-Änderungen

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

Version 1.4

Version 1.4.3

3. Mai 2023

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

Fehlerkorrekturen

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

Version 1.4.2

19. April 2023

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

Fehlerkorrekturen

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

Version 1.4.1

5. April 2023

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

Fehlerkorrekturen

  • Behebung eines Problems mit ParentDataModifier, das sich nicht 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 anhand der semantischen Bedeutung von Elementen wie Oberflächen bestimmt wird. (I63379)
  • Es wurde eine neue Rolle für die Barrierefreiheit hinzugefügt: DropdownList. So lässt sich das Verhalten von TalkBack 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)
  • Es wurde eine experimentelle TextMotion 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)

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. So können Ansichtsinstanzen wiederverwendet werden, wenn ihr Knoten in der Komposition verworfen und auf kompatible Weise wiederverwendet wird. Das ist besonders nützlich fü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

  • Die SetText-Semantikaktion von BasicTextField aktualisiert den Textbuffer jetzt mit demselben Codepfad wie IME-Aktualisierungen und die Testfunktionen (z.B. performTextReplacement).
  • 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 stattdessen direkt von ModifierNodeElement aus. (I2256b)
  • Es wurde ein neuer Modifier.Node.onReset()-Callback hinzugefügt, mit dem Sie den lokalen Status zurücksetzen können, um den Fall zu behandeln, in dem 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() umbenannt (I4667a)
  • 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

  • Es wurden neue experimentelle Überladungen für die Funktionen runComposeUiTest und create*ComposeRule eingeführt, 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 Anmerkung aus dem DialogProperties-Konstruktor, der einen usePlatformDefaultWidth-Parameter annimmt. (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 sind jetzt stabil. (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 anhand der semantischen Bedeutung von Elementen wie Oberflächen bestimmt wird. (I63379)
  • Neue Rolle für Bedienungshilfen DropdownList hinzugefügt. So lässt sich das Verhalten 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)
  • Es wurde eine experimentelle TextMotion 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 festgelegt. Das bisherige Standardverhalten sollte dadurch nicht geändert werden. (Icd27d)
  • Der nicht mehr unterstützte experimentelle Schriftarten-Konstruktor wurde entfernt. (I8a724, b/261435386)
  • Die Datenklasse „ui tooling“ Group hat jetzt ein 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 Schriftartdeskriptoren verwendet werden. (I5adcc, b/261565807)
  • Die createFontFamilyResolver API ist jetzt stabil. So können nicht abgefangene Ausnahmen beim asynchronen Laden von Schriftarten abgefangen werden. (Ibb481, b/261435386)
  • Die Font.loadingStrategy API ist jetzt stabil. (I5937c, b/261435386)
  • Die GoogleFont API ist jetzt stabil. (Ic90b0, b/261435386)
  • TextUnit(float, TextUnitType) ist jetzt eine stabile API. (I90c84, b/261561612)
  • pluralStringResource ist jetzt eine stabile API. (I09849, b/261439703)

Version 1.4.0-alpha03

7. Dezember 2022

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

API-Änderungen

  • ExperimentalComposeUiApi wird aus PointerIcon (I23af8) entfernt
  • Einführung von Aktionen zur Barrierefreiheit von Seiten: PageUp, PageDown, PageLeft, PageRight. Diese sind erst ab API 29 verfügbar. (Ida4ab)
  • Die Ansicht des rememberNestedScrollConnection-Parameters wurde von der Stammansicht in die Hostansicht geändert. (Ia5200)
  • Eine Modifier API zum Abfragen von Informationen zum Scrollen von Vorfahren hinzugefügt. (I2ba9d, b/203141462)
  • Wird in Clickable verwendet, um die Interaktionen mit dem Drücken richtig zu verzögern, wenn Touch-Gesten zu Scrollereignissen werden könnten.
  • Bei Verwendung in einem Scrollable ViewGroup wurden bei Clickables keine korrekten Verzögerungen für Wellen erzeugt. Dieses Problem wurde behoben.
  • In Ausklappern und Seiten wurde die Verzögerung von Betätigungen angepasst, damit Touch-Gesten nicht zu Scrollereignissen führen.
  • CompositingStrategy.Always in Offscreen umbenannt, um anzugeben, dass die graphicsLayer immer in einen Zwischenspeicher gerendert wird (I47dc1)
  • Layoutüberlastung bei 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 zur Anwendung von Snapshots werden jetzt gesendet, nachdem die Änderungen auf der Recomposer angewendet wurden. (Iad6c0, b/222093277)
  • In captureToImage wurden Änderungen vorgenommen, damit Screenshots von mehreren Fenstern aufgenommen werden können. Dies ist nützlich für Screenshot-Tests, bei denen Pop-ups zum Erstellen verwendet werden. (I169c5)

Abhängigkeitsupdates

  • Compose UI und Compose Material sind jetzt von Lifecycle 2.5.1 abhängig. (I05ab0, b/258038814)

Version 1.4.0-alpha02

9. November 2022

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

API-Änderungen

  • GraphicsLayerScope wurde aktualisiert, um die aktuelle Größe 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)
  • Fügen Sie ToolingState hinzu, damit Tools interne Status von Composable ändern können (Ie6614)
  • Tools wurden überarbeitet, um die Unterstützung für neu hinzugefügte Animationen zu verbessern (I8677b)
  • Dem Material- und Material3-Text wurden die Parameter minLines, TextField und OutlinedTextField hinzugefügt, mit denen die minimale Höhe der Komponente in Bezug auf die Anzahl der Zeilen festgelegt werden kann (I4af1d)

Version 1.4.0-alpha01

24. Oktober 2022

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

API-Änderungen

  • Die neue Methode awaitEachGesture() für Gestenerkennung wurde hinzugefügt. Die Funktionsweise ähnelt der von forEachGesture(), aber die Schleife über die Touch-Gesten wird vollständig innerhalb des 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 als experimentelles Attribut zu TextStyle und SpanStyle hinzugefügt, um umrandeten Text zeichnen zu können. (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

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

Version 1.3.1

9. November 2022

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

Version 1.3.0

24. Oktober 2022

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

Wichtige Änderungen seit Version 1.2.0

  • Neue experimentelle API-Suite LookaheadLayout (ermöglicht bisher nicht mögliche Animationsverhalten)
  • Neue experimentelle API-Suite Modifier.Node (leistungsstärkere Alternative zu Modifier.composed)
  • Verbesserte Unterstützung für Fenstereinzüge.
  • Unterstützung für die Fokussierung von D-Pads und Hardwaretastaturen in LazyLists.
  • Die maximal unterstützte Erhöhung in Dialogen und Pop-ups wurde auf 8 dp reduziert. Dies führt zu einer Verhaltensänderung bei einigen benutzerdefinierten Designsystemen. Begründung in den Release Notes von beta01
  • Viele kleinere, nicht bahnbrechende API-Verbesserungen
  • Viele Fehlerkorrekturen und Leistungsverbesserungen

Version 1.3.0-rc01

5. Oktober 2022

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

API-Änderungen

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

Fehlerkorrekturen

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

Version 1.3.0-beta03

21. September 2022

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

API-Änderungen

  • Optionen zum Anpassen der Zeilenumbrüche in Text hinzufügen (I86907)
  • Das Argument size:IntSize wurde in der Methode TextMeasurer.measure durch constraints: Constraints ersetzt, um Mindestbreite-Einschränkungen 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)
  • Sie können jetzt FocusRequester.Cancel verwenden, um einen Fokuswechsel abzubrechen. FocusRequester.Cancel kann in allen folgenden Fokuseigenschaften verwendet werden: oben, unten, links, rechts, nächster, vorheriger, Anfang, Ende, Eingabe und Beenden. (Ib300f)

Version 1.3.0-beta01

24. August 2022

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

Modifier-Knoten neu strukturieren

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

Zusammenfassung der Änderungen

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

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

Risiko

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

Wir empfehlen Ihnen, mit Vorsicht auf diese Version umzustellen. Wenn Sie der Meinung sind, dass dadurch etwas nicht mehr funktioniert, teilen Sie uns dies bitte mit.

Experimentelle APIs

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

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

Verhaltensverändernde Änderung

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

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

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

API-Änderungen

  • Behoben wurde ein Problem, bei dem painterResource bei Konfigurationsänderungen nicht aktualisiert wurde (I58e73, b/228862715).
  • Für rememberTextMeasurer können die 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)
  • Die Schriftartenkonstruktoren wurden zurück in die ursprüngliche Kotlin-Datei verschoben, um die Binärkompatibilität beizubehalten. Keine Änderung gegenüber dem letzten stabilen Release. (Ieb2f3)
  • Unnötiger Operator aus mehreren Definitionen für „gleich“ entfernt – hat keine Auswirkungen. (I6c309)
  • FontVariation.Setting ist eine versiegelte Schnittstelle, die zukünftige APIs zur Leistungsbegrenzung ermöglicht. (I11021, b/143703328)
  • Fügen Sie CompositionGroup.findParameters zu SlotTree.kt hinzu. So können Tools Parameter für eine CompositionGroup abrufen, ohne die gesamte Steckplatztabelle parsen zu müssen. (I124fe)

Version 1.3.0-alpha03

10. August 2022

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

API-Änderungen

  • LayoutCoordinates.findRootCoordinates() ist jetzt öffentlich (I7fa37, b/204723384)
  • Es wurde eine experimentelle API hinzugefügt, um die LayoutCoordinates in der PlacementScope abzurufen. So wissen Entwickler, wo sich das aktuelle Layout befindet, um untergeordnete Elemente relativ zu seiner Position zu platzieren. (I5482b, b/238632578)
  • LayoutCoordinates.transformFrom wurde hinzugefügt, um die Matrixtransformation von einer LayoutCoordinates in eine andere zu erhalten. (Ic5ab1, b/238632578)
  • SemanticsModifier.id wurde eingestellt und die Semantics-ID stattdessen in LayoutInfo.semanticsId verschoben. (Iac808, b/203559524)
  • Für Ressourcenschriften können jetzt Schriftvarianteneinstellungen festgelegt werden (API 26 und höher). (I900dd, b/143703328)
  • Unterstützung für variable Schriftarten in DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • Schriftkonfiguratoren akzeptieren jetzt eine Liste von FontVariation.Setting für die Konfiguration variabler Schriftarten auf Geräten der O-Serie und höher. (I11a9d, b/143703328)
  • FontVariation API zum Definieren und Verwenden variabler Schriftarten hinzufügen (I3c40c, b/143703328)
  • Der Konstruktor von LineHeightStyle.Alignment ist jetzt öffentlich (experimentell) (I4bbbe, b/235876330)
  • „Absatz“ ist jetzt „erwartet|tatsächlich“ und für Android und Computer definiert. (Id387e, b/239962983)
  • Der Abschnitt „Interface“ ist jetzt der Abschnitt „Interface Paragarph“. Es gibt keinen Anwendungsfall für die Unterklasse „Absatz“. Wenn sich diese Änderung auf Sie auswirkt, wenden Sie sich bitte an uns. (If5247, b/239962983)
  • Die experimentelle Anmerkung wurde aus PlatformTextStyle 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 in SDK 33 und höher gewährt werden muss. (Ie542e, b/238790278)

Version 1.3.0-alpha02

27. Juli 2022

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

API-Änderungen

  • Es wurde eine neue Property PointerInputChange#pressure hinzugefügt, um den Druck abzurufen. (I45a5e, b/205164819)
  • rememberTextMeasurer wurde hinzugefügt, um TextMeasurer-Instanzen in der Komposition ganz einfach zu erstellen und zu merken. (I8d66e)
  • Rect, RoundRect und MutableRect unterstützen jetzt die Kotlin-in-Syntax für den Aufruf der Funktion contains. (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 EditCommand hinzugefügt, um Probleme bei der Textbearbeitung 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)
  • Fügen Sie mapTree zu SlotTree.kt hinzu. 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)
  • Behebung des durch AnnotatedString.toUpperCase verursachten Null-Pointer-Fehlers bei vorhandenen Anmerkungen. (I0aca2, b/210899140)

Version 1.3.0-alpha01

29. Juni 2022

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

API-Änderungen

  • Neue LookaheadLayout, die einen Vorlauf vor dem tatsächlichen Mess-/Layout unterstützt. So kann das Layout bei Änderungen vorab berechnet werden. Gleichzeitig kann das Mess-/Layout nach dem Vorschauzeitraum die vorab berechnete Größe/Position verwenden, um die Größe und Positionen in Richtung des Ziels zu animieren. SubcomposeLayouts werden noch nicht unterstützt, aber in einer kommenden Version. (I477f5)
  • Fügen Sie der Pinselvariante von TextStyle 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
    • Verbessertes Verhalten bei Verwendung einer physischen Tastatur oder TV-Fernbedienung
  • Neue APIs für:

    • Fenstereinsätze
    • Grundlegende Primitive für gestengesteuerte, endlose und Layout-Animationen
    • GraphicsLayer-Funktionen, einschließlich 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-rc02.

Version 1.2.0-rc02

22. Juni 2022

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

Version 1.2.0-rc01

15. Juni 2022

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

API-Änderungen

  • Schnittstellen in Compose-Bibliotheken werden jetzt mit den Standardschnittstellenmethoden von JDK 8 erstellt (I5bcf1)
  • KeyInjectionScope bietet jetzt höhere Funktionen, mit denen Tastendrücke eingefügt werden können, während andere Tasten gedrückt oder aktiviert sind. Dazu gehö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 Maus- und Tastatur-Injectionsmuster, z. B. das Klicken auf eine Maustaste, während eine Metataste gedrückt wird. (I4c8da, b/229831515)
  • Es wurde eine experimentelle Unterstützung für das Einschleusen von wichtigen Ereignissen hinzugefügt. Verwenden Sie performKeyInput, um Tastenereignisse zu senden, oder senden Sie sie während einer multimodalen Eingabegeste mit performMultiModalInput über die key-Property von MultiModalInjectionScope. Eine Dokumentation der API 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)
  • Die Suche nach Bedienungshilfen-Strings löst nicht das Laden der Schriftart aus. Bisher wurde versucht, Schriftarten für StyleSpans zu laden, was zu Abstürzen führte, 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 die Konstruktorargumente jetzt nicht negativ sein. (Ica8e6, b/199919707)

Version 1.2.0-beta02

18. Mai 2022

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

API-Änderungen

  • Wiederverwendung von Funktionen in anderen Vorabversionen (I19f39)

Fehlerkorrekturen

  • ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer wurde 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 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. Wenn Sie eine Zielanmerkung auf Dateiebene verwenden, geht der Compiler davon aus, dass alle kombinierbaren Funktionen in der Datei auf den zugehörigen Anwender ausgerichtet sind. Wenn Sie beispielsweise @file:UiComposable verwenden, wird damit angegeben, dass alle @Composable-Funktionen auf den Compose UI-Applier ausgerichtet sind. Eine Funktion, die auf einen anderen Applier ausgerichtet werden soll, muss die Zielmarkierungsanmerkung für den gewünschten Applier explizit angeben. (I40804)
  • Einführung einer neuen experimentellen, plattformunabhängigen Test-API: interface ComposeUiTest 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 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 wird damit die Ausrichtung der Linie im durch TextStyle(lineHeight) bereitgestellten Bereich definiert.

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

  • trimFirstLineTop- 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

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

Externer Beitrag

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

Version 1.2.0-alpha08

20. April 2022

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

API-Änderungen

  • Die pluralStringResource-Funktionen wurden als experimentell gekennzeichnet, damit sie in Zukunft weiterentwickelt und für eine bessere Internationalisierung genutzt werden können. (If24e4)
  • Für „Absatz“ und „Mehrere Absätze“ kann jetzt der Parameter „Einschränkungen“ verwendet werden. Wenn Sie Constraints.maxHeight übergeben, geschieht derzeit nichts. In Zukunft können Sie damit jedoch einige Berechnungen durchführen, z. B. eine elliptische Form basierend auf der Höhe. (I6afee, b/168720622)
  • Für SubcomposeSlotReusePolicy.getSlotsToRetain() wird jetzt eine benutzerdefinierte Klasse vom Typ „MutableSet“ akzeptiert, in der keine neuen Elemente hinzugefügt werden können. (Icd314)
  • „PointerIcon“ ist jetzt eine @Stable-Schnittstelle (I9dafe)
  • Der teilweise Verbrauch (nach unten ODER Position) wurde in PointerInputChange eingestellt. 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 Interoperabilität für verschachtelte Scrollfunktionen zwischen „Compose“ und „View“ in der Richtung „Compose“ > „View“. Das bedeutet, dass ein übergeordnetes Element in Compose verschachtelte Scroll-Deltas von einer verschachtelten Scrollansicht empfangen kann. (If7949, b/174348612)
  • Neue SemanticsProperty testTagsAsResourceId, mit der Compose an UIAutomator-Tests angepasst werden kann, die für das View-System entwickelt wurden. (I39c20)
  • Wenn Sie FontFamily.SansSerif verwenden, werden alle verfügbaren Schriftschnitte für Systemschriften auf Android-Geräten angezeigt. In API 21–28 werden dann intern Fallback-Schriftnamen wie „sans-serif-medium“ verwendet. Dies ist eine Verhaltensänderung, da in API 21–28 bisher nur die Gewichte 400 und 700 unterstützt wurden. (I380fe, b/156048036, b/226441992)
  • Bei Absätzen und mehreren Absätzen wurden Positionsargumente vor die optionalen Argumente verschoben. (Idafaa)
  • AndroidFont nimmt jetzt typefaceLoader als Konstruktorparameter an. (I2c971)

Version 1.2.0-alpha07

6. April 2022

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

API-Änderungen

  • Die neue Funktion Snapshot.withoutReadObservation { ... } wurde hinzugefügt. So können Nutzer das übergebene Lambda ausführen, ohne die Änderungen der Statuswerte zu abonnieren, die in diesem Block gelesen werden. Diese Funktion kann in Anwendungsfällen nützlich sein, in denen Sie von den snapshotbasierten threadsicheren Schreib-/Lesevorgänge profitieren möchten, den Wert aber lesen möchten, ohne unnötige Neuzusammensetzungen oder Neumessungen zu verursachen. (I9f365, b/214054486)
  • Mit der Erweiterungseigenschaft consumeWindowInsets 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)
  • Aktivieren Sie die verschachtelte Scroll-Interoperabilität zwischen View und Compose für zusammenarbeitende View-Klassen. Das bedeutet, dass Compose jetzt Scroll-Deltas an ein (mitarbeitendes) Ansichtsübergeordnetes Element senden kann. (I5d1ac, b/174348612)
  • FontFamily.Resolver wurde aktualisiert, um die systemweite Bedienungshilfe „Fettdruck“ zu integrieren (I6c1e7)
  • Font(AssetManager, String, ...) wurde verworfen und durch Font(String, AssetManager, ...) ersetzt. Dies ist eine experimentelle API. (I1c7a4)
  • Fügen Sie den neuen Schriftart-Beschreibungsblock Font(DeviceFontFamilyName) hinzu, um optional systeminstallierte Schriftarten in Schriftart-Fallback-Ketten abzurufen. (I30468, b/219754572)
  • Unter „TextStyle/ParagraphStyle“ wurde eine vorübergehende Konfiguration für die Kompatibilität mit includeFontPadding hinzugefügt. includeFontPadding kann ü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)
  • Fügen Sie die GoogleFont.Provider.isAvailableOnDevice-Erweiterung hinzu, um Hilfe bei der Fehlerbehebung zu erhalten. (I64e31)
  • GoogleFont.Provider-Konstruktor für die Verwendung mit @ArrayRes hinzufügen (Ic5ee1, b/225984280)
  • Compose GoogleFont heißt 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 nachgeordneten Parametern von Modifier.graphicsLayer aktualisiert, um die API-Kompatibilität zu verbessern (I3f864, b/160665122)

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

  • RSB-Terminen eine Uhrzeit 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 lässt sich die Zuständigkeit der Modifikatoren besser trennen. (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önnen verwendet werden, um Composable-Methoden oder andere Annotationsklassen zu annotieren, die dann als indirekt mit der angegebenen @Preview-Anmerkung versehen gelten. (I12eff)

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

Fehlerkorrekturen

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

Externer Beitrag

  • compose-ui: GraphicsLayerScope-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 beim Erstellen von Animationen unterstützt. (I5a4fc, b/161675988)
  • Lokale BeyondBoundsLayout-Anpassung hinzugefügt (If8b51, b/184670295)
  • Text: „includeFontPadding“ ist jetzt standardmäßig deaktiviert. Die Probleme mit dem Zuschneiden aufgrund von includeFontPadding=false wurden behoben und bei hohen Scripts sollte es nicht mehr zu Zuschneidungen kommen. (I31c84, b/171394808)

Fehlerkorrekturen

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

Externer Beitrag

  • Aktualisiert auf Kotlinx-Coroutines 1.6.0 (I3366d)

Version 1.2.0-alpha04

23. Februar 2022

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

API-Änderungen

  • Die Funktionen ComposableTarget, ComposableTargetMarker und ComposableOpenTarget wurden hinzugefügt. Damit können Sie bei der Kompilierung feststellen, wann eine zusammensetzbare Funktion auf einen Anwender angewendet wird, für den sie nicht vorgesehen ist.

    In den meisten Fällen können die Anmerkungen vom Compose-Compiler-Plug-in abgeleitet werden. Die direkte Verwendung dieser Anmerkungen sollte daher selten vorkommen. Dazu gehören das Erstellen und Verwenden benutzerdefinierter Applier, abstrakter zusammensetzbarer Funktionen (z. B. Schnittstellenmethoden), Felder oder globaler Variablen, die zusammensetzbare Lambdas sind (lokale Variablen und Parameter werden abgeleitet), oder die Verwendung von ComposeNode oder einer ähnlichen zusammensetzbaren Funktion.

    Bei benutzerdefinierten Anwendern müssen die zusammensetzbaren Funktionen, die ComposeNode 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 mit ComposableTargetMarker gekennzeichnete zusammensetzbare Anmerkung entspricht einer ComposbleTarget mit dem voll qualifizierten Namen der Attributklasse als Anwenderparameter. Ein Beispiel für die Verwendung von ComposableTargetMarker finden Sie unter anroidx.compose.ui.UiComposable. (I38f11)

  • Font(resId, ...) berücksichtigt jetzt die „loadingStrategy“ der stabilen API. (Ief3d2)

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

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

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

Fehlerkorrekturen

  • Die bereitgestellten FontFamily.Resolver werden an Unterkompositionen wie Popup übergeben.
  • Die bereitgestellten Font.ResourceLoader werden an Unterkompositionen wie Popup übergeben. (I48fa5)

Version 1.2.0-alpha03

9. Februar 2022

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

API-Änderungen

  • Die notifyFocusedRect-Methoden 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, das eine kombinierbare Lambda-Funktion in eine Lambda-Funktion umwandelt, die ihren Status und die entsprechenden Knoten an jeden neuen Ort verschiebt, an dem sie aufgerufen wird. Wenn der vorherige Aufruf die Zusammensetzung verlässt, wird der Status vorübergehend beibehalten. Wenn ein neuer Aufruf an die Lambda-Funktion in die Zusammensetzung eintritt, werden der Status und die zugehörigen Knoten an den Speicherort des neuen Aufrufs verschoben. Wenn kein neuer Aufruf hinzugefügt wird, wird der Status dauerhaft entfernt und Beobachter werden benachrichtigt.

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

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

  • Es wurden createFontFamilyResolver(context) und createFontFamilyResolver(context, coroutineScope) hinzugefügt, um neue Schriftfamilien-Resolver außerhalb der Verwendung in Compose zu erstellen.

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

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

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

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

  • Mit FontFamilyResolver.setAsyncLoadContext lässt sich der globale coroutine-Kontext festlegen, der für das Laden asynchroner Schriftarten verwendet wird. (I87fe8, b/174162090)

  • AndroidFont wurde hinzugefügt, eine neue Low-Level-API für die Bereitstellung neuer Arten von Schriftressourcenbeschreibungen unter Android. Beispielsweise können Sie Schriftarten aus einem app-spezifischen Backend laden, optional vorinstallierte Schriftarten auf dem Gerät suchen oder eine Schriftart aus einer Ressource laden, die nicht von den aktuellen Schriftartenfabriken bereitgestellt wird.

  • Die Font.ResourceLoaded API wurde um die Unterstützung für optionales und asynchrones Laden von Schriftarten erweitert. Es wird nicht empfohlen, dass Anwendungsentwickler diese API direkt verwenden. Informationen zum Hinzufügen neuer Schriftarten finden Sie 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 Konstruktor von Typeface(FontFamily) wird nicht mehr unterstützt. Bisher wurde diese Funktion zum Vorladen von Schriftarten verwendet, was bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern kann. Bei herunterladbaren Schriftarten kann dieser Aufruf 10 Sekunden lang blockiert werden. Verwenden Sie stattdessen FontFamilyResolver.preload.

  • fontResource(FontFamily): Typeface wurde eingestellt. Bisher wurde diese Funktion verwendet, um Schriftarten vorab zu laden. Das kann bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern. Verwenden Sie 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)

  • AndroidComposeTestRule.AndroidComposeStatement wurde eingestellt. Diese Funktion sollte nicht in der öffentlichen API enthalten sein und hat Ihnen ohnehin nichts gebracht. (Ibc46b)

  • Intern generierte kt-Klasse wurde umbenannt (Ia0b9e, b/174162090)

  • FontLoadingStrategy.values (I42a9d, b/174162090) 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 für FontFamily.Resolver die lokale Komposition verwendet
  • Desktop-FontLoader wird eingestellt
  • Neue createFontFamilyResolver-Fabrik auf dem Computer (I6bbbb, b/174162090)
  • Der Eingabetyp der Soft-Tastatur flackert nicht mehr, wenn der Fokus zwischen Textfeldern wechselt. (I1bf50, b/187746439)

Version 1.2.0-alpha02

26. Januar 2022

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

API-Änderungen

  • Modifier.onRotaryScrollEvent() 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 umgekehrt. Wenn das Mausrad nach rechts geneigt wird, wird jetzt „1“ statt „-1“ zurückgegeben. (Ia9811)

Version 1.2.0-alpha01

12. Januar 2022

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

API-Änderungen

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

Abhängigkeitsupdates

  • Jetzt hängt es von Kotlin 1.6.10 ab.

Version 1.1

Version 1.1.1

23. Februar 2022

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

Fehlerkorrekturen

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

Version 1.1.0

9. Februar 2022

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

Wichtige Änderungen seit Version 1.0.0

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

Version 1.1.0-rc03

26. Januar 2022

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

Fehlerkorrekturen

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

Version 1.1.0-rc01

15. Dezember 2021

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

Fehlerkorrekturen

  • Ein Fehler wurde behoben, durch den die Bildlaufaktionen für die Barrierefreiheit fehlten (I7cbfb)
  • SemanticsNodeInteraction.captureToImage() funktioniert jetzt auch, 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-Überladungen hinzu, die Schlüssel zum Vergleichen auf Gleichheit akzeptieren und für die Optimierungen übersprungen werden können. (Ice799, b/205851704)
  • ComposeNotIdleException erstreckt sich jetzt von Exception statt 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 Eingabemethode ändert. (I25f2e)

Version 1.1.0-beta03

17. November 2021

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

API-Änderungen

  • Der neue Modifikator „Modifier.onPlaced“ wurde hinzugefügt, um die Platzierungsänderung zu beobachten. Basierend auf der beobachteten Placement-Änderung können daher weitere Änderungen am Offset des untergeordneten Modifiers vorgenommen werden. (I558fd)
  • InjectionScope.flush() 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 einschleusen 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

  • Modifikator.pointerHoverIcon (I95f01) hinzugefügt

Version 1.1.0-beta01

27. Oktober 2021

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

API-Änderungen

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

Version 1.1.0-alpha06

13. Oktober 2021

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

API-Änderungen

  • Entfernen Sie ExperimentalComposeUiApi aus ViewRootForInspector und LayoutInfo.ownerViewId (I5c2e3).
  • Es wurde eine überlastungsfreie Überladung für das Layout hinzugefügt, die die Effizienz verbessert (Ib0d9a)
  • InternalCompilerApi wurde aus Composer-Methoden entfernt, die modulübergreifend aufgerufen werden müssen (I1aa0b)
  • SemanticsNodeInteraction.performSemanticsAction gibt jetzt den SemanticsNodeInteraction zurück, über den die Funktion aufgerufen wurde. (I9e5db)
  • LocalInputModeManager CompositionLocal hinzugefügt, um den Touch- oder Nicht-Touch-Modus zu erkennen. (I6a83c, b/175899786)
  • viewConfiguration: ViewConfiguration wurde zu LayoutInfo hinzugefügt, damit Nutzer den richtigen Wert für Dinge wie das Zeitlimit für das lange Drücken erhalten. (I76ca6)
    • viewConfiguration: ViewConfiguration wurde zu InjectionScope hinzugefügt, damit die Eingabeinjektion in Tests anhand von Faktoren wie dem Zeitlimit für das lange Drücken oder dem Touch-Slop angepasst werden kann.
    • Die Standarddauer für das lange Drücken und das Doppeltippen wurde sowohl für die Touch- als auch die Mauseingabe geändert. Sie basiert jetzt auf den Werten in InjectionScope.viewConfiguration.
  • Implementierung von „ExposedDropdownMenu“ basierend auf „ExposedDropdownMenuBox“ mit „TextField“ und „DropdownMenu“ (If60b2)
  • „dismissOnOutsideClick“ wurde zu „PopupProperties“ hinzugefügt und ersetzt „dismissOnClickOutside“, das eingestellt wurde. Die neue Property empfängt die Klickposition und die Ankergrenzen, sodass Sie genauer steuern können, ob onDismissRequest aufgerufen werden soll oder nicht. Das kann beispielsweise nützlich sein, um das Schließen des Ankers bei Berührungen des Ankers zu verhindern.
    • „updateAndroidWindowManagerFlags“ wurde zu „PopupProperties“ hinzugefügt und bietet eine Low-Level-Steuerung der Flags, die vom Pop-up an den Android WindowManager übergeben werden. Der Parameter der Lambda-Funktion sind die Flags, die aus den PopupProperties-Werten berechnet werden und zu WindowManager-Flags führen, z.B. „focusable“. Das Ergebnis der Lambda-Funktion sind die endgültigen Flags, die an den Android WindowManager übergeben werden. Standardmäßig bleiben die aus den Parametern berechneten Flags durch updateAndroidWindowManagerFlags unverändert. Diese API sollte mit Vorsicht verwendet werden und nur in Fällen, in denen das Pop-up sehr spezifische Verhaltensanforderungen hat. (I6e9f9)
  • Recomposer.state wurde eingestellt und durch Recomposer.currentState ersetzt, um den 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 löschen oder den Bereich entsorgen möchten. (Ifb73a)
  • Es wurde performScrollToNode(matcher: SemanticsMatcher) hinzugefügt, mit dem ein scrollbarer Container zu den Inhalten scrollt, die mit dem angegebenen Matcher übereinstimmen. (Ic1cb8)
  • InjectionScope unterstützt 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. Das kann sich auf die Ergebnisse von Tests auswirken, bei denen Eingabegesten wie ein bestimmter Wisch ausgeführt werden. (I829fd)

Version 1.1.0-alpha05

29. September 2021

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

API-Änderungen

  • Unterstützung für die Kommunikation zwischen Modifikatoren hinzugefügt (Id5467, b/198826874)
  • PointerEventChange enthält jetzt experimentelle bisherige Zeiger. (Ic1fd8, b/197553056, b/199921305)
  • density: Density 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. Es werden jetzt mehr Eingabevariablen akzeptiert und es werden Änderungen an der Eingabe vorgeschlagen, wenn ein Wisch nicht erstellt werden kann (I40fbe, b/182477143)

Version 1.1.0-alpha04

15. September 2021

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

API-Änderungen

  • PointerEvent hat jetzt ein 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)
  • performGesture und GestureScope wurden eingestellt und durch performTouchInput und TouchInjectionScope ersetzt. (Ia5f3f, b/190493367)
  • touchBoundsInRoot wurde SemanticsNode hinzugefügt. Dieser enthält die Mindestgröße des Berührungszielbereichs, damit Entwickler sicherstellen können, dass Berührungsziele die Mindestanforderungen an die Barrierefreiheit erfüllen. (I2e14b, b/197751214)
  • Implementierung von „inspectable“ noch einmal durchführen (I927bc, b/191017532)
  • Parametername von „inspectable“ in „composed“ geändert (I3a482, b/191017532)
  • Einführung von performTouchInput 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. Bei der neuen Implementierung wird das Ereignis „move“ weiterhin gesendet, aber die Ereigniszeit wird in diesem speziellen Szenario nicht vorverlegt.
    2. Wenn ein „Hoch“-Ereignis gesendet wurde, während die Mauszeiger bewegt wurden, ohne dass ein „Bewegen“-Ereignis gesendet wurde (ähnlich wie oben), wurde bei der vorherigen Implementierung die Ereigniszeit vorangestellt und ein „Bewegen“-Ereignis gesendet, bevor das „Hoch“-Ereignis gesendet wurde. Bei der neuen Implementierung ist das nicht der Fall: Die neuen Positionen der Zeiger werden nur über das Ereignis „up“ widergespiegelt.

    Schließlich wird in TouchInjectionScope eine neue Methode currentPosition(pointerId: Int) eingeführt, um die aktuelle Position des angegebenen 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 wird veröffentlicht. Version 1.1.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Compose 1.1.0-alpha03 wurde so aktualisiert, dass es von 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 der Desktop-Ansicht von Google Compose hinzugefügt Der Offset-Effekt und der Weichzeichner wurden eingeführt, um einem Teil der Kompositionshierarchie einfach Weichzeichnereffekte hinzuzufügen. (I0f6aa, b/166927547)
  • Die RenderEffect API wurde eingeführt, die optional für eine Modifier.graphicsLayer konfiguriert werden kann, um den Inhalt der Ebene selbst zu ändern. So können Sie den Inhalt eines Composeables und untergeordneter Composeables innerhalb einer Kompositionshierarchie unkenntlich machen. (I47c4d, b/166927547)
  • AwaitPointerEventScope hat jetzt die Methoden „withTimeout()“ und „withTimeoutOrNull()“ (I507f0, b/179239764, b/182397793)
  • In ViewConfiguration wurde eine Mindestgröße für den Berührungszielbereich hinzugefügt, die für die Semantik und die Eingabe per Mauszeiger verwendet wird, um die Barrierefreiheit zu verbessern. (Ie861c)
  • Unterstützung für TileMode.Decal hinzugefügt, die sich zum Definieren des Randverhaltens für Weichzeichnereffekte eignet (I7e8ed, b/166927547)
  • performScrollToIndex, performScrollToKey, hasScrollToIndexAction 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 Shape-Parameter null ist. (I85d68)

Version 1.1.0-alpha02

18. August 2021

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

API-Änderungen

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

Fehlerkorrekturen

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

Version 1.1.0-alpha01

4. August 2021

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

API-Änderungen

  • Für RelocationRequester.bringIntoView kann jetzt ein Rechteck als Parameter verwendet werden, um einen Teil eines Composeables sichtbar zu machen (Ice2c5, b/194330245)
  • AnimatedImageVector und die zugehörigen APIs befinden sich jetzt im neuen 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 zur Unterstützung des Zeichnens eines beliebigen Pinsels innerhalb eines Painters, ähnlich wie bei ColorPainter

    Die Brush API wurde um einen Parameter für die intrinsische Größe ergänzt, der in BrushPainter abgefragt wird (Ia2752, b/189466433)

  • Die Methode „DrawScope#drawImage“ wurde aktualisiert. Sie verwendet jetzt Quell- und Ziel-Rechtecke, um einen optionalen Parameter „FilterQuality“ zu verwenden. Das ist nützlich für Pixel-Art, die beim Skalieren für pixelbasierte Kunst gepixelt werden soll. BitmapPainter und Bild-Composable wurden aktualisiert, sodass auch ein optionaler FilterQuality-Parameter verwendet wird (Ie4fb0, b/180311607)

  • Die Methode GestureScope.advanceEventTime wurde hinzugefügt, um den Zeitpunkt von Ereignissen bei einer Geste besser steuern zu können (Ibf3e2)

Fehlerkorrekturen

  • Damit die Verknüpfung von Draw-Modifizierern besser unterstützt wird, muss die Modifier.paint-Implementierung drawsContent aufrufen. Bisher wurde erwartet, dass Modifier.paint ein Endknoten in der Kette der Modifikatoren ist. Dadurch wird jedoch verhindert, dass es in einem zusammensetzbaren Container (z. B. einem Box) konfiguriert oder zusätzliche Verzierungen wie Modifier.paint().border() hinzugefügt werden. Wenn Modifier.paint nach dem Zeichnen des Inhalts des angegebenen Malers drawContent aufruft, ist das Verhalten des Modifier-Musters konsistenter. (Ibb2a7, b/178201337, b/186213275)
  • Dialoge folgen jetzt dem Größenverhalten der Plattform. Legen Sie usePlatformDefaultWidth auf „false“ fest, um dieses Verhalten zu überschreiben. (Iffaed, b/192682388)
  • InfiniteAnimationPolicy wurde zu :compose:ui verschoben (I5eb09, b/160602714)
  • Das Scrollen über semantische Aktionen für Lazy-Listen und reguläre Scrollkomponenten ist jetzt animiert (Id9066, b/190742024)

Version 1.0

Version 1.0.5

3. November 2021

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

Fehlerkorrekturen

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

Version 1.0.4

13. Oktober 2021

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

Abhängigkeitsupdates

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

Version 1.0.3

29. September 2021

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

Abhängigkeitsupdates

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

Version 1.0.2

1. September 2021

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

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

Version 1.0.1

4. August 2021

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

Abhängigkeitsupdates

  • Aktualisiert auf Kotlin 1.5.21.

Version 1.0.0

28. Juli 2021

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

Wichtige Funktionen von 1.0.0

Dies ist die erste stabile Version von Compose. Weitere Informationen findest du im offiziellen Compose-Release-Blog.

Bekannte Probleme

  • Wenn Sie Android Studio Bumblebee Canary 4 oder AGP 7.1.0-alpha04/7.1.0-alpha05 verwenden, kann der folgende Absturz auftreten:

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

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

  • Dialoge folgen jetzt dem Größenverhalten der Plattform. Legen Sie usePlatformDefaultWidth auf „false“ fest, um dieses Verhalten zu überschreiben. (Iffaed, b/192682388)

Version 1.0.0-rc01

1. Juli 2021

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

Neue Funktionen

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

API-Änderungen

  • Die eingestellten experimentellen FocusManager#moveFocusIn und FocusManager#moveFocusOut wurden entfernt (I227d7, b/170154986, b/186567354, b/168510304)
  • Canvas unterstützt jetzt den Parameter „contentDescription“ für 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)

Verhaltensänderungen

  • 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 zu 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 eine Inline-Klasse. (I255ec)
  • Modifier.pointerInteropFilter ist @ExperimentalComposeUiApi. (Iede6c)
  • TextAlign, FontSynthesis und TextDirection sind jetzt Inline-Klassen. (I212fe)
  • TextOverflow wird in eine Inline-Klasse geändert. (I433af)
  • FontStyle ist jetzt eine Inline-Klasse. (I9e48b)

Fehlerkorrekturen

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

Profilregeln hinzugefügt

In dieser Version werden den folgenden Compose-Modulen (I14ed6) Profilregeln hinzugefügt:

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

Was sind Profilregeln?

  • Profilregeln für eine Bibliothek werden in einer Textdatei baseline-prof.txt im 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 formuliert werden, um entweder auf Methoden oder Klassen ausgerichtet zu sein.

  • Eine Methodenregel hat das folgende Muster:

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

    <CLASS_DESCRIPTOR>
    
  • Hier ist <FLAGS> eines oder mehrere der 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 Klasse, die in dieser Datei vorhanden ist, wird beim Start verwendet und sollte im Heap vorab zugewiesen werden, um die Kosten für das Laden der Klasse zu vermeiden.

So funktioniert's

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

Version 1.0.0-beta08

2. Juni 2021

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

API-Änderungen

  • Die NestedScrollSource-Enumeration wird durch eine Inline-Klasse ersetzt. (Ie321b, b/187055290)
  • FocusManager.clearFocus(forcedClear = true) wird 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 Enum- in eine Inline-Klasse geändert (If5058)
  • Die Properties „ContentDescription“ und „Text-Semantik“ sind keine einzelnen Werte mehr, sondern Listen. So können sie zusammengeführt werden, anstatt zusammengefügt zu werden. Außerdem wurden bessere Test-APIs zur Nutzung dieser Änderungen bereitgestellt (Ica6bf, b/184825850).
  • Modifier.focusModifier() wurde verworfen und 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 umgewandelt. (If6290)
  • „TextUnitType“ ist jetzt eine Inline-Klasse. (I4cba9)
  • AnnotatedString.withAnnotation-Funktionen heißen jetzt ExperimentalTextApi anstelle von ExperimentalComposeApi. (I0cd0a)
    • Der TextUnit-Konstruktor mit TextUnitType ist jetzt ExperimentalTextApi anstelle von ExperimentalComposeApi.

Fehlerkorrekturen

  • Behebung des Fehlers, der in Beta 07 aufgetreten ist und durch den LazyColumn-/LazyRow-Elemente nach dem Scrollen teilweise angezeigt wurden (I8c9ac, b/188566058)
  • Jetzt werden die Positionsänderungen von detectDragGesures, detectVerticalGestures und detectHorizontalGestures automatisch verarbeitet. Es ist nicht mehr erforderlich, in den onDrag-Callbacks change.consumePositionChange aufzurufen (I42fc4, b/185096350, b/187320697)
  • Ein Fehler bei Layout-Modifizierern, die Ausrichtungslinien bereitstellen, wurde behoben. Ein Fehler wurde behoben, durch den das übergeordnete Element nicht neu vermessen wurde, wenn sich die Ausrichtungslinien der untergeordneten Elemente änderten. (I4401f, b/174315652)
  • Modifier.onGloballyPositioned() wurde geändert, sodass die Koordinaten dieses Modifiers in der Modifikatorkette und nicht die Layoutkoordinaten nach dem Anwenden aller Modifikatoren erfasst werden. Das bedeutet, dass jetzt die Reihenfolge der Modifikatoren darüber entscheidet, welche Koordinaten erfasst werden. (Ieb67d, b/177926591)

Version 1.0.0-beta07

18. Mai 2021

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

API-Änderungen

  • ViewRootForInspector-Oberfläche für die Verwendung im Inspector hinzugefügt (Ib70df)
  • SubcomposeLayoutState unterstützt jetzt die Einstellung der Anzahl der wiederverwendbaren Slots. Das Layout hält bis zu dieser Anzahl von Slots aktiv, anstatt sie zu entsorgen, damit sie beim nächsten Mal wiederverwendet werden können, wenn wir einen neuen benötigen (Ieb981)
  • Das KeyEventType-Enum wurde durch eine Inline-Klasse ersetzt. (Id670a, b/187055290)
  • Die FocusDirection-Enumeration wird durch eine Inline-Klasse ersetzt. (Ib6d03, b/187055290, b/184086802)
  • Es ist jetzt möglich, den Status „SubcomposeLayout“ zu hoisten. So können Sie die Inhalte vorab in eine erforderliche Slotting-ID zusammenstellen, wodurch die nächste Maßnahme schneller abgeschlossen wird. Wenn wir nämlich versuchen, die nächste Subcomposit mit der angegebenen Slotting-ID zu erstellen, ist keine Zusammenstellung mehr erforderlich. (I42580, b/184940225)
  • Auswahl-Handle für Clips hinzugefügt (Iff80d, b/183408447)
  • Nicht verwendete APIs im Zusammenhang mit der LayoutInspector-Unterstützung wurden entfernt. (I2ac78)

Fehlerkorrekturen

  • Bei LazyColumn/Row bleiben jetzt bis zu zwei zuvor sichtbare Elemente aktiv (nicht entsorgt), auch wenn sie bereits ausgeblendet wurden. So können die aktiven Unterkompositionen von der Komponente wiederverwendet werden, wenn ein neues Element erstellt werden muss, was die Scrollleistung verbessert. (Ie5555)
  • TextGeomerticTransform 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)
  • Die APIs „CollectionInfo“ und „CollectionItemInfo“ für Bedienungshilfen wurden hinzugefügt, mit denen Sammlungen und ihre Elemente für Bedienungshilfen gekennzeichnet werden können (Id54ef, b/180479017)
  • Es wurde die Taste SemanticsActions.ScrollToIndex hinzugefügt, um in einer Liste mit indexierten Elementen zum Element mit einem bestimmten Index zu scrollen, und die 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“ zu „GraphicLayerInfo“ hinzugefügt (I19f62)
  • Es wurden Überladungen für Font() hinzugefügt, um Schriftarten aus Assets, Dateien und Dateibeschreibungen zu laden (I5d382)
  • Die Bedienungshilfen-API error wurde hinzugefügt, mit der ein Knoten mit ungültiger Eingabe markiert werden kann (I12997, b/180584804, b/182142737)
  • Font() Überladungen zum Laden von Schriftarten aus Assets, Dateien und Dateideskriptoren hinzugefügt (I43007)
  • Unterstützung für das Speichern von AnnotatedString in TextFieldValue.Saver Die 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 wird 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-Benutzeroberfläche wird eingestellt. Die Benutzeroberfläche konnte in keiner öffentlichen API verwendet werden und wurde auch nicht im Code verwendet. (I34a02, b/184003208)
  • Eingestellte TextLayoutResult/createTextLayoutResult-Funktion. Es handelt sich um eine nicht verwendete öffentliche Funktion, die zum Testen hinzugefügt wurde. Die Funktion kann nicht für APIs zum Erstellen von Text verwendet werden. Die Funktion ist jetzt veraltet und wird später entfernt. (I80413)

Fehlerkorrekturen

  • Die Bedienungshilfen für das Scrollen mit ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRight 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 korrekt Fragmente, die über FragmentContainerView aufgebläht wurden, wenn die AndroidViewBinding aus der Kompositionshierarchie 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)
  • Optionale Parameter startX/endX und startY/endY wurden den Funktionen swipeUp/swipeDown/swipeLeft/swipeRight in GestureScope hinzugefügt. (I49e2d, b/182063305)

Version 1.0.0-beta02

10. März 2021

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

API-Änderungen

  • Neue lokale LocalSoftwareKeyboardController-Komposition API hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I5951e, b/168778053)
  • Neue lokale LocalSoftwareKeyboardController-Komposition API hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I84472, b/168778053)
  • Die folgenden 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)
  • Folgende 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)
  • Korrektur für fehlerhafte rememberSaveable { mutableStateOf(0) }-Zeichen bei Verwendung in einem Ziel von navigation-compose. (I1312b, b/180042685, b/180701630)
  • Neue lokale LocalSoftwareKeyboardController-Komposition API hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I658b6, b/168778053)
  • Seltene NoSuchElementException in ComposeRootRegistrys 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 für die Größenanpassung an intrinsische Werte sind nicht mehr experimentell. (I15744)
  • MeasureBlocks wurde in MeasurePolicy umbenannt und hat eine ansprechende Benutzeroberfläche erhalten. Layout-APIs wurden aktualisiert / vereinfacht, um MeasurePolicy zu verwenden. (Icab48, b/167662468, b/156751158)
  • InteractionState wurde durch [Mutable]InteractionSource ersetzt
    • Oberflächen sind für das Senden / Erfassen von Interaktionsereignissen verantwortlich.
    • Verwenden Sie stattdessen interactionSource = remember { MutableInteractionSource() }, um interactionState = remember { InteractionState() } an Komponenten wie Button und Modifier.clickable() zu übergeben.
    • Anstatt Interaction.Pressed in interactionState sollten Sie stattdessen die Erweiterungsfunktionen von InteractionSource verwenden, z. B. InteractionSource.collectIsPressedAsState().
    • Bei komplexen Anwendungsfällen können Sie mit „InteractionSource.interactions“ den Stream der Interaktionen beobachten. Weitere Informationen finden Sie in der Dokumentation und in den Beispielen zu „InteractionSource“.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • AccessibilityManager-Schnittstelle und LocalAccessibilityManager in CompositionLocals hinzufügen (I53520)
  • Die veralteten LayoutCoordinates-Methoden wurden entfernt. Verwenden Sie für „positionInParent“ und „boundsInParent“ eine Funktion anstelle der Eigenschaft. (I580ed, b/169874631, b/175142755)
  • Aliasse wurden durch die zugrunde liegenden Typen ersetzt:
    • ColorStop heißt 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)
  • Für „Placeable“ ist jetzt „measuredSize“ verfügbar, das die Größe darstellt, auf die das untergeordnete Layout tatsächlich gemessen wurde. Diese Größe entspricht möglicherweise nicht den Messbeschränkungen. (Ib2729, b/172560206, b/172338608)
  • Mit dem Modifikator „selectionGroup“ können mehrere Tabs oder Radiobuttons aus Gründen der Barrierefreiheit gekennzeichnet werden (Ie5c29)
  • Die defaultFactory für compositionLocalOf und staticCompositionLocalOf ist jetzt erforderlich und nicht mehr optional.

    Durch diese Änderung wird ein potenzieller Typfehler für nicht null-wertige Typen behoben, für die keine Standard-Factory angegeben wurde. Bisher wurde in diesem Fall eine Nullreferenz für einen nicht nullwertigen Typ zurückgegeben.

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

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

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

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

  • Modifier.tapGestureFilter wurde entfernt. Verwenden Sie 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)

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

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

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

  • „Anbieter“ wurde in „CompositionLocalProvider“ umbenannt.

    • Der Konstruktor für Kompositionen akzeptiert keinen Schlüsselparameter mehr und wurde eingestellt.
    • „currentCompositeKeyHash“ wurde in eine zusammensetzbare Property auf oberster Ebene statt in eine zusammensetzbare Funktion auf oberster Ebene umgewandelt.
    • „CompositionData“ und „CompositionGroup“ wurden in den Namespace „androidx.compose.runtime.tooling“ verschoben.
    • ComposableLambda ist jetzt eine Schnittstelle anstelle einer konkreten Klasse und hat keine Typparameter mehr.
    • ComposableLambdaN wurde zu einer Schnittstelle anstelle einer konkreten Klasse und hat keine Typparameter mehr.
    • Die Funktion „snapshotFlow“ wurde in den Namespace „androidx.compose.runtime“ verschoben.
    • Die Zusammenführungsmethode von SnapshotMutationPolicy ist nicht mehr experimentell
    • Die Funktion „clearRoots“ auf oberster Ebene mit dem Attribut „@TestOnly“ wurde entfernt. Das ist nicht mehr erforderlich.
    • Die Funktionen „keySourceInfoOf“ und „resetSourceInfo“ wurden entfernt. Sie werden nicht mehr benötigt.
    • „Composer.collectKeySourceInformation“ wurde entfernt. Das ist nicht mehr erforderlich.
    • Die Methoden „isJoinedKey“, „joinedKeyLeft“ und „joinedKeyRight“ wurden entfernt. Sie werden nicht mehr benötigt.
    • Verschiedene APIs der obersten Ebene wurden in verschiedene Dateien verschoben und neu angeordnet. Aufgrund der Dateiklassensemantik von Kotlin wird dadurch die Binärkompatibilität, aber nicht die Quellkompatibilität aufgehoben. Das sollte für die meisten Nutzer kein Problem darstellen.
    • (I99b7d, b/177245490)
  • ComponentActivity.setContent() wurde aus „compose:ui“ entfernt. Verwenden Sie die von androidx.activity:activity-compose:1.3.0-alpha01. 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 Parametertyp nicht geändert hat, führt dies nicht zu einem Fehler in Ihrem Code. Achten Sie darauf, dass Sie entweder benannte Parameter verwenden oder die Reihenfolge manuell aktualisieren. Andernfalls funktioniert Ihr Code nicht wie zuvor.
    • Der Parameter secondaryVariant wurde zu darkColors() hinzugefügt. Diese Farbe entspricht in der Regel der Farbe secondary im dunklen Design, wird aber hinzugefügt, um für Einheitlichkeit und weitere Anpassungen zu sorgen.
    • ElevationDefaults und animateElevation() wurden aus der öffentlichen API entfernt, da sie nicht häufig verwendet wurden.
    • onValueChangeEnd 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

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

Version 1.0.0-alpha12

10. Februar 2021

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

API-Änderungen

  • Die Unterstützung für ViewGroups wurde aus UiApplier entfernt. Die veralteten emitView-Kompositionen wurden entfernt. (Ifb214)
  • Für Modifier.pointerInput sind jetzt Schlüssel zum Speichern erforderlich, um anzugeben, wann die Coroutine zur Erkennung der Eingabe per Mauszeiger für neue Abhängigkeiten neu gestartet werden soll. (I849cd)
  • „CompositionReference“ in „CompositionContext“ umbenannt (I53fcb)
  • „Bounds“ wurde in „DpRect“ (I4b32a) umbenannt.
  • Testaktualisierung: „hasText()“ prüft sowohl Eingaben als auch Labels, Hinweise und Platzhaltertexte im Textfeld (Iab803)
  • Die Komponente „viewModel()“ und „LocalViewModelStoreOwner“ wurden zu androidx.lifecycle.viewmodel.compose verschoben. Sie müssen jetzt eine separate Abhängigkeit hinzufügen: androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01, um sie zu verwenden. (I7a374)
  • Nullwertige Aktion in AccessibilityAction zulassen, Aktionslabel in AccessibilityAction und CustomAccessibilityAction von CharSequence in String ändern (I0dc82)
  • Um die Namenskonventionen besser an ImageBitmap und ImageVector anzupassen, wurde ImagePainter in BitmapPainter umbenannt, um Parallelität zu VectorPainter herzustellen. (Iba381, b/174565889)
  • Bessere APIs für den Test von Substrings, bei denen der Substring jetzt als Argument verwendet wird (Icbe78)
  • Es wurde eine Modifier.focusOrder() hinzugefügt, die einen FocusRequester akzeptiert, ohne eine benutzerdefinierte Fokusreihenfolge für ein Lambda anzugeben. Das ist nützlich, wenn wir für ein composable nur eine Referenz, aber keine benutzerdefinierte Fokusreihenfolge angeben müssen (I4f52a, b/179180978)
  • ComponentActivity.setContent wurde in das Modul androidx.activity:activity-compose zu androidx.activity.compose.setContent verschoben. (Icf416)
  • Destrukturierungs- und copy()-Methoden wurden aus mehreren Klassen entfernt, in denen sie nur selten verwendet wurden. (I26702, b/178659281)
  • Pop-ups sind jetzt plattformspezifisch. „AndroidPopupProperties“ wurde in „PopupProperties“ umbenannt und isFocusable wurde 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“ wird nicht mehr unterstützt. Verwenden Sie stattdessen „fontResource“. „imageResource“, „loadImageResource“, „vectorResource“ und „loadVectorResource“ wurden eingestellt. Verwenden Sie stattdessen „painterResource“. (I6b809)
  • Aus Leistungsgründen werden für die ScrollAxisRange-Semantik jetzt Lambdas verwendet, die Floats zurückgeben, anstatt direkte Float-Werte. (If4a35, b/178657186)
  • Die Semantic EditableText wurde hinzugefügt, um den bearbeitbaren Eingabetext des Textfelds für die Barrierefreiheit zu kennzeichnen, und die entsprechenden Testmethoden, um die Semantik zu prüfen (I8e07a)
  • OwnerLayer/OwnerScope/OwnerSnapshotObserver wurden intern (I4ffaf, b/175103944)
  • „toIntPx()“ wurde in „roundToPx()“ umbenannt. (I9b7e4, b/173502290)
  • IntBounds wurde in IntRect umbenannt und die API wurde verbessert. (I1f6ff)
  • Die Snapshot API wurde aktualisiert, um sie enger an die API-Richtlinien anzupassen und interne Implementierungsklassen von der öffentlichen API auszublenden. (Id9e32)
  • Es wurden Aktionen zum Maximieren und Minimieren hinzugefügt. „expand“ und „halfExpand“ in ModalBottomSheetState hinzugefügt (Ib5064)
  • Modifier.dragGestureFilter wurde eingestellt. Verwenden Sie stattdessen Modifier.pointerInput { detectDragGestures (...)}. Alternativ können Sie Modifier.draggable für das Ziehen entlang einer Achse verwenden (I0ba93, b/175294473).
  • Die Namen der Bildschirmschoner wurden umbenannt, damit sie mit der Umbenennung von „Ambient“ in „CompositionLocal“ übereinstimmen. Ambients hießen früher AmbientFoo, jetzt heißen sie CompositionLocals. (I2d55d)
  • Das verworfene BaseTextField wurde entfernt. Verwenden Sie stattdessen „BasicTextField“. (I71368)
  • Die Auswahl wurde in die Foundation verschoben. (I7892b)
  • Ähnlich wie wir zuvor state { 0 }-Kompositen entfernt und die Verwendung von remember { mutableStateOf(0) } empfohlen haben, werden wir savedInstanceState { 0 }-Kompositen entfernen. 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 keine positiven Auswirkungen auf die Leistung mehr haben und keinen Mehrwert bieten (I0484d)
  • snapshotFlow und withMutableSnapshot sind nicht mehr experimentell (I6a45f)
  • Recomposers können jetzt geschlossen werden. Geschlossene Rekompositionen werden fortgesetzt, bis die untergeordneten coroutines der Komposition abgeschlossen sind. Recomposer.shutDown in „cancel“ umbenannt, um einen Kontrast zu „close“ herzustellen. (Ib6d76)
  • UiSavedStateRegistry wurde in SaveableStateRegistry umbenannt, AmbientUiSavedStateRegistry in AmbientSaveableStateRegistry und beide wurden in das Paket androidx.compose.runtime.saveable verschoben. (I30224)
  • Das Artefakt androidx:compose:runtime:runtime-saved-instance-state wurde in androidx:compose:runtime:runtime-saveable umbenannt (I6dcac)
  • Viele seit langem eingestellte APIs im ui-Paket wurden gelöscht. (I2f2dc)
  • Das Artefakt „compose:runtime-dispatch“ wird jetzt eingestellt. MonotonicFrameClock finden Sie jetzt unter compose:runtime und AndroidUiDispatcher unter compose:ui. (Ib5c36)
  • Outline.*-Klassen sind keine Datenklassen mehr (I4879e, b/178001427)
  • view.captureToImage() wurde ohne Ersatz entfernt. (I7fcd2)
  • Einführung der ColorMatrix API zum Ändern der RGB-Werte von Quellinhalten. Die ColorFilter API wurde zu einer Schnittstelle umgestaltet und der Implementierung von PathEffect angepasst. (Ica1e8)
  • Fügen Sie der createOutline-Funktion von Shape den Parameter „layoutDirection“ hinzu. So lassen sich layoutorientierte Formen erstellen. (I57c20, b/152756983)
  • onImeActionPerformed ist eingestellt. Verwenden Sie stattdessen KeyboardActions. (If0bbd, b/179071523)
  • Einführung eines InfiniteAnimationPolicy-Kooroutinen-Kontextelements, das in endlosen Animationen angewendet wird. Standardmäßig ist keine Richtlinie installiert, es sei denn, Sie führen Tests 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. Dadurch werden die Anwendungsfälle für „onSizeChanged()“ und „onGloballyPositioned()“ vollständiger (Idfbfd, b/177926591)
  • Die Funktionen „tapGestureFilter“, „doubleTapGestureFilter“, „longPressGestureFilter“ und „pressIndicaitonGestureFilter“ wurden eingestellt. Verwenden Sie stattdessen Modifier.clickable oder Modifier.pointerInput mit der Funktion „detectTapGestures“. (I6baf9, b/175294473)
  • Die Funktion „unregisterProvider“ von SaveableStateRegistry wurde entfernt. Stattdessen gibt „registerProvider()“ jetzt das Objekt „SaveableStateRegistry.Entry“ zurück, mit dem Sie die Registrierung aufheben können (Ic4274, b/178583739)
  • rememberSavedInstanceState() wurde in rememberSaveable() umbenannt und in das Paket androidx.compose.runtime.saveable verschoben. (I1366e, b/177338004)
  • CoreText und CoreTextField aus der öffentlichen API entfernt
    • Eingestellte Überladung von SelectionContainer entfernt
    • (I99c19)
  • Tests, bei denen Compose in Hierarchien verwendet wird, die direkt dem WindowManager hinzugefügt oder daraus entfernt werden, sind jetzt stabiler. (Ie81ed, b/175765614)
  • Recomposer.current() wurde entfernt. [Abstrakt]ComposeView verwendet jetzt standardmäßig verzögert erstellte, fensterweite Recomposer, die vom ViewTreeLifecycleOwner für das Fenster gesteuert werden. Recomposition und mitFrameNanos-basierte Animations-Ticks werden pausiert, während der Host-Lebenszyklus angehalten ist. (I38e11)
  • „Recomposer.runningRecomposers“ bietet jetzt einen globalen StateFlow mit schreibgeschützten RecomposerInfos, um den laufenden Kompositionsstatus im Prozess zu beobachten. Diese API ist Recomposer.current() vorzuziehen, das jetzt eingestellt wird. (If8ebe)
  • Saver, listSaver(), mapSaver(), autoSaver wurden von androidx.compose.runtime.savedinstancestate zu androidx.compose.runtime.saveable verschoben (I77fe6)
  • EditCommands akzeptieren AnnotatedString. Diese Änderung betrifft jedoch nur die API. Die Textbearbeitung mit mehreren Stilen ist noch nicht implementiert. (I4c3ea)
  • „Uptime“ und „Dauer“ wurden entfernt. (Ib9bf4, b/177420019)
  • CompositionData.asTree() und zugehörige APIs wurden in ein separates UI-Tooling-Datenmodul verschoben und als experimentell gekennzeichnet (Ic95b8)
  • Die Parameter „left“ (links) und „right“ (rechts) von „RounderCornerShape“, „CutCornerShape“ und „CornerBasedShape“ wurden in „start“ (Anfang) und „end“ (Ende) umbenannt, um die automatische Spiegelung der Form in RTL-Richtung zu unterstützen. AbsoluteRounderCornerShape und AbsoluteCutCornerShape wurden für Fälle eingeführt, in denen keine automatische Spiegelung gewünscht ist. (I61040, b/152756983)
  • Die API, auf die das Compose-Compiler-Plug-in ausgerichtet ist, wurde so umgestellt, dass anstelle einer konkreten Klasse eine Schnittstelle verwendet wird. Auf der Benutzeroberfläche wird auch kein Typparameter mehr verwendet.

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

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

Fehlerkorrekturen

  • In Ansichtshierarchien platzierte ComposeViews, die Kinder einer anderen Komposition sind, enthalten jetzt untergeordnete Kompositionen ihrer Vorfahren (I92883)
  • Die imageFromResource-API von compose wurde aktualisiert, um den Cache für drawable-Ressourcen beim Laden von ImageBitmap-Objekten wiederzuverwenden. (If3627, b/178751994)

Version 1.0.0-alpha11

28. Januar 2021

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

API-Änderungen

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

Fehlerkorrekturen

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

    • Es wurden Standardfunktionen hinzugefügt, die mit einem Großbuchstaben beginnen.
    • Bisherige Standardfunktionen mit Kleinbuchstaben im ersten Buchstaben wurden eingestellt
    • Neue Factory-Funktionen geben die Schriftfamilie anstelle von Unterklassen zurück
    • Die Konstruktoren der Unterklassen wurden ausgeblendet, sodass sie nur über Fabrikfunktionen erstellt werden können.
    • Font.asFontFamily wurde in Font.toFontFamily umbenannt (I42aa7)
  • Einführung von ComposeContentTestRule, 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 die 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 eine Beschreibung für die Bedienungshilfen bereitzustellen (I2ac4c).

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

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

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

  • Für „TextFieldValue“ ist „AnnotatedString“ zulässig. Diese Änderung betrifft jedoch nur die API. Die Textbearbeitung mit mehreren Stilen ist noch nicht implementiert.

    • initial wurde aus den Parametern des Konstruktors von EditingBuffer entfernt. (I326d5)
  • invalidate und compositionReference() werden jetzt zugunsten von currentRecomposeScope bzw. rememberCompositionReference eingestellt. (I583a8)

  • AnnotatedString wird jetzt von kotlin.CharSequence abgeleitet. Daher sind „length“ und „subSequence“ jetzt Instanzfunktionen und Erweiterungsfunktionen wurden entfernt. (Iaf429)

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

    RememberObserver ist ein Ersatz für 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 Unterkompositionen verwendet wurde, z. B. WithConstraints und Scaffold. Dadurch war die Garantie für einen einzelnen onEnter-Aufruf nicht zuverlässig und wurde für RememberObserver entfernt.

    RememberObserver fügt onAbandoned hinzu, das aufgerufen wird, wenn die RememberObserver-Instanz vom Callback zurückgegeben wird, der an remember übergeben wurde, aber nicht im Kompositionstatus gespeichert wurde. Daher wird onRemembered nie aufgerufen. Das kann passieren, wenn eine Ausnahme die Zusammenstellung vor dem Abschluss beendet oder die Zusammenstellung verworfen wird, weil der Status, für den eine Zusammenstellung erstellt wurde, nicht mehr aktuell ist oder anderweitig nicht mehr benötigt wird. Wenn die Instanz 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 Funktionen „TextUnit.Sp“ und „TextUnit.Em“ wurden eingestellt. Verwenden Sie stattdessen Erweiterungsfunktionen wie „Int.sp“ und „Int.em“. (I48369)

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

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

  • Neue items(count: Int)-Factorymethode für LazyColumn/LazyRow/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“.

    • Verwenden Sie ImeAction.Default anstelle von ImeAction.Unspecified (Ie1bcc).
  • TestCoroutineDispatcher bei Tests nutzen (I532b6)

  • TextInputService.onStateUpdated in updateState umbenannt (Id4853)

  • Der auf TransitionDefinition basierende Übergang wurde eingestellt (I0ac57)

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

Version 1.0.0-alpha10

13. Januar 2021

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

Funktionsgefährdende Änderung

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

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

API-Änderungen

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

    Fügen Sie „ViewCompositionStrategy“ hinzu, um die Strategie zur Entsorgung der Komposition von [Abstract]ComposeViews zu konfigurieren. Das Standardverhalten ist „Dispose on window detach“ (Beim Fenstertrennen entsorgen). (I860ab)

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

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

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

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

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

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

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

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

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

  • Änderungen an der VisualTransformation API

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

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

Fehlerkorrekturen

  • Recomposer stellt jetzt einen Stream des aktuellen Status bereit, mit dem sich die Aktivität des Tools und der zugehörigen Effekte beobachten lässt. (Ifb2b9)
  • Der native keyEvent kann jetzt über „keyEvent.nativeKeyEvent“ aufgerufen werden (I87c57, b/173086397)
  • animate() wurde 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 Zerfallanimationen
    • (I820f2, b/168014930)

Version 1.0.0-alpha09

16. Dezember 2020

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

API-Änderungen

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

    Die Methode insert() wurde 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. Durch diese Ä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 die Verwendung in Bildkompositionen oder Painter-Modifizierer abzurufen. (I2c703, b/173818471)

  • „Modifier.clearAndSetSemantics“ wurde hinzugefügt, um die Semantik von Nachkommen zu löschen und neue festzulegen. (I277ca)

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

  • Einführung der PathEffect-Grafik-API, um verschiedenen Konturformen unterschiedliche Muster zuzuweisen. NativePathEffect wird nicht mehr unterstützt. Verwenden Sie stattdessen die erwartete/tatsächliche Implementierung von PathEffect. (I5e976, b/171072166)

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

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

Fehlerkorrekturen

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

    „CompositionData“ und „CompositionGroup“ wurden als Ersatz für die UI-Tooling API hinzugefügt, um Kompositionsinformationen zu extrahieren. Diese sind öffentlich, aber nicht für die Verwendung außerhalb der UI-Tooling API vorgesehen, da sie die Rohdaten enthalten, die von der UI-Tooling API interpretiert werden (I31a9c).

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

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

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

  • Verworfen: BuildCompat.isAtLeastR (Idb37e)

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

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

Version 1.0.0-alpha08

2. Dezember 2020

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

API-Änderungen

  • Semantische Aktion „Schließen“ hinzufügen (I2b706)
  • Die DrawModifier APIs wurden aus dem Paket androidx.compose.ui in das Paket androidx.compose.ui.draw verschoben. Die Datei „DrawModifierDeprecated.kt“ wurde erstellt, um Aliasse und Hilfsmethoden für die Migration von den eingestellten zu den aktuellen APIs zu enthalten. (Id6044, b/173834241)
  • Modifier.drawLayer in Modifier.graphicsLayer umbenannt. Die zugehörigen Klassen wurden gemäß API-Feedback ebenfalls in GraphicsLayer umbenannt. (I0bd29, b/173834241)
  • Die neuen Methoden „placeable.placeWithLayer()“ und „placeable.placeRelativeWithLayer()“ wurden hinzugefügt. Mithilfe dieser Methoden können benutzerdefinierte Layouts und Layoutmodifikatoren ein untergeordnetes Element platzieren und dabei eine Grafikebene für die Zeichnung einfügen. So können wir zuerst die Neuzeichnungen optimieren, sodass wir beim Verschieben eines untergeordneten Elements nicht dessen Inhalt neu zeichnen müssen. Außerdem können wir Zeichentransformationen für ein untergeordnetes Element anwenden (Ibd8f6, b/170296989, b/171493718, b/173030831)
  • <T> wurde aus der Deklaration von „SubcomposeLayout“ entfernt. Sie können es jetzt ohne Angabe eines Typs verwenden. (Ib60c8)
  • Die APIs „Modifier.scale“ und „Modifier.rotate“ wurden für drawLayer hinzugefügt.
    • Modifier.drawOpacity wurde in Modifier.alpha umbenannt
    • Modifier.drawShadow 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 prüfen, ob das Hostfenster den Fokus hat, und WindowFocusObserver, der einen Rückruf onWindowFocusChanged bereitstellt. (I53b2a, b/170932874)
  • Die TransformOrigin API wurde um eine Destrukturierungssyntax erweitert, um pivotFractionX 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 Übereinstimmung mit den Compose-Richtlinien zu prüfen. Außerdem wurden einige APIs, die children als Namen für das abschließende Lambda verwendet haben, gemäß der Lint-Prüfung und den Anleitungen 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()-Überladung hinzugefügt. Es wird ein Lambda-Block für einen neuen GraphicsLayerScope verwendet, in dem Sie die Ebenenparameter so definieren, dass die Neuzusammensetzung und das Neulayout bei einem Statuswechsel übersprungen werden. DrawLayerModifier ist jetzt intern, um seine Logik in die Methode „placeable.placeWithLayer()“ von LayoutModifier zu migrieren (I15e9f, b/173030831)
  • Wir haben Ambients mit dem Suffix Ambient eingestellt und durch neue Properties mit dem Präfix „Ambient“ ersetzt, gemäß den anderen Richtlinien für Ambients und die Compose API. (I33440)
  • androidx.compose.ui.text.Typeface wurde zu androidx.compose.ui.text.font.Typeface (Ic2b81) verschoben
  • Das semantische Argument „mergeAllDescendants“ wurde in „mergeDescendants“ umbenannt. (Ib6250)
  • Neue API für den Zeiger-Eingabe-Inaktivitäts-Detektor für Zieh-Gesten, einschließlich Ausrichtungssperre. (Icef25)
  • VectorAsset in ImageVector umbenannt VectorAsset in Builder verschoben und umbenannt, um gemäß den API-Richtlinien eine innere Klasse von ImageVector zu sein Typealias von VectorAssetBuilder hinzugefügt, um eine Verknüpfung mit ImageVector.Builder herzustellen. (Icfdc8)
  • ImageAsset und zugehörige Methoden wurden in ImageBitmap umbenannt. (Ia2d99)
  • ZIndex-Parameter für „place()“ des PlacementScope hinzufügen, damit „Modifier.zIndex()“ jetzt als LayoutModifier funktioniert und jedes benutzerdefinierte Layout Z-Index-Werte für seine untergeordneten Elemente direkt im Placement-Block festlegen kann (I711f7, b/171493718)
  • Eigenschaften für die grundlegende Semantik in die Benutzeroberfläche verschoben (I6f05c)
  • Die Funktionen „place(Offset)“ und „placeRelative(Offset)“ werden eingestellt. Verwenden Sie stattdessen Überladungen mit int-Offset (I4c5e7).
  • Bisher eingestellte APIs wurden entfernt: Modifier.onPositioned wurde entfernt. Verwenden Sie stattdessen Modifier.onGloballyPositioned. Modifier.onDraw wurde entfernt. Verwenden Sie stattdessen Modifier.onDrawBehind. „Modifier.plus“ wurde entfernt. Verwenden Sie stattdessen „Modifier.then“. „Color.Unset“ wurde entfernt. Verwenden Sie stattdessen „Color.Unspecified“. Die Klasse „PxBounds“ wurde entfernt. Verwenden Sie stattdessen „Rect“. (Ie9d02, b/172562222)
  • Die Benutzeroberfläche für die Ausrichtung wurde aktualisiert und funktioniert jetzt. (I46a07, b/172311734)
  • Mit der neuen Eingabemethode für den schwebenden Cursor wurden ein Gestensensor für Tippen, Doppeltippen, langes Drücken und eine Druckanzeige hinzugefügt. Außerdem wurden einige Dienstprogramme hinzugefügt, mit denen Entwickler ihre eigenen Gestenerkennungen leichter erstellen können. (I00807)
  • id wurde für LayoutIdParentData in layoutId umbenannt. Measurable.id wurde in Measurable.layoutId umbenannt. (Iadbcb, b/172449643)
  • Neuer Multitouch-Gesten-Detektor, einschließlich Hilfsfunktionen zum Erkennen von Drehen, Zoomen und Schwenken (Ic459d)
  • Einführung der APIs „SweepGradientShader“ und „SweepGradientBrush“. (Ia22c1)
  • Die Zeitsteuerung in Tests (TestAnimationClock und ihre Verwendung) ist jetzt experimentell (I6ef86, b/171378521)
  • Fügen Sie coroutine-basierte Scrolling-APIs hinzu:

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

  • Modifier.focusable muss in der Foundation hinzugefügt werden. Mit diesem Attribut können Sie einer Komponente ein fokussierbares Verhalten mit korrekter Semantik und Barrierefreiheit hinzufügen. (I41eb9, b/152525426, b/162865824)

  • Standardimplementierungen von Methoden und Eigenschaften in AnimationClockTestRule bereitstellen, die an die clock delegiert werden können (I7ea3d, b/173399709)

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

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

  • Aktualisierte TextFieldValue API

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

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

Fehlerkorrekturen

  • Der Ausrichtungsparameter von „Box“ wurde in „contentAlignment“ umbenannt. (I2c957)
  • Die Modifikatoren „offsetPx“ wurden in „offset“ umbenannt. Stattdessen werden jetzt Lambda-Parameter anstelle von „State“ verwendet. (Ic3021, b/173594846)
  • Dem TextInputService#onStateUpdated-Parameter wurde der Parameter „resetInput“ hinzugefügt (I3e8f5, b/172239032, b/171860947)
  • Es wurde eine Lint-Prüfung für Modifikatorparameter in zusammensetzbaren Funktionen hinzugefügt. Bei dieser Lint-Prüfung wird die Benennung, der Rückgabetyp, der Standardwert und die Reihenfolge des Parameters auf Übereinstimmung mit den Compose-Richtlinien geprüft. (If493b)
  • Vorübergehend wurde die Option hinzugefügt, die TestAnimationClock von der MonotonicFrameClock steuern zu lassen (I1403b, b/173402197)
  • Android-Schriftart-Wrapper hinzugefügt. Sie können eine Android-Schriftart über die typeface-Funktion (typeface(Typeface.DEFAULT)) laden. Außerdem 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)
  • Altes UI-Testmodul und seine Stubs entfernen (I3a7cb)
  • Der Recomposer akzeptiert keinen EmbeddingContext mehr. Die erforderlichen Planungsabhängigkeiten werden aus dem effectCoroutineContext abgerufen. FrameManager wurde eingestellt. Plattformintegrationen sollten ihre eigene globale Snapshot-Verarbeitung initialisieren. (I02369)
  • Stilinformationen an den Knoten „Barrierefreiheit“ übergeben. (If5e8d)
  • TextUnit.Inherit wurde in TextUnit.Unspecified umbenannt, um für Einheitlichkeit mit anderen Einheiten zu sorgen. (Ifce19)

Compose-Benutzeroberfläche, Version 1.0.0-alpha07

11. November 2020

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

API-Änderungen

  • Die Inline-Klasse „ScaleFactor“ wurde eingeführt, um Skalierungsfaktoren für die horizontale und vertikale Achse unabhängig voneinander darzustellen und so Anwendungsfälle mit nicht einheitlicher Skalierung zu unterstützen.
    • Der ContentScale-Klasse wurde die Methode „computeScaleFactor“ hinzugefügt.
    • ContentScale.FillBounds wurde hinzugefügt, um eine nicht einheitliche Skalierung durchzuführen und die Quellgrenzen so zu dehnen, dass das Ziel vollständig ausgefüllt wird.
    • Es wurden Operatormethoden hinzugefügt, um Skalierungsfaktor-Parameter mit Größenparametern zu berechnen.
    • (Ic96a6, b/172291582)
  • Die Fabriken „BiasAlignment“ und „BiasAbsoluteAlignment“ zum Erstellen von Ausrichtungen wurden hinzugefügt. (Iac836, b/169406772)
  • Entwicklern die Möglichkeit geben, den Fokus zwangsweise aufzuheben (I90372)
  • Ein Fehler wurde behoben, durch den die Höhe für Ansichten in Compose nicht dargestellt wurde. (If7782)
  • Die onDrawBehind API wurde im ContentDrawScope erstellt, um der Benennungskonvention von Modifier.drawBehind zu entsprechen. (I4fc3a, b/171955269)
  • Unterstützung für die Kameradistanz hinzufügen, um die 3D-Transformationen „rotationX“/„rotationY“ in Ebenen-APIs zu ergänzen. (I40213, b/171492100)
  • SelectionContainer ohne Rückruf hinzugefügt (Ibfadb)
  • Die Anmerkung „ExperimentalSubcomposeLayoutApi“ wurde entfernt. SubcomposeLayout kann jetzt ohne Hinzufügen von @OptIn verwendet werden (I708ad)
  • „FirstBaseline“ und „LastBaseline“ wurden in das Paket „androidx.compose.ui.layout“ verschoben (Ied2e7).
  • Die Deckkraft wurde aus dem Modifikator „drawShadow()“ entfernt, da er verwirrend war. (I82c62, b/171624638)
  • „MeasureResult“ wurde aus „MeasureScope“ verschoben. (Ibf96d, b/171184002)
  • Mehrere layoutbezogene Symbole wurden von androidx.compose.ui zu androidx.compose.layout.ui verschoben. (I0fa98, b/170475424)
  • Die Einstellung „FocusState2“ wurde entfernt (I686cb, b/168686446).
  • „ZIndexModifier“ ist jetzt intern (I1808b, b/171493718)
  • Der Rückgabetyp der Lerp-Methode für Größeparameter wurde aktualisiert, um eine nicht nullwertige Größe zurückzugeben und unnötigen Boxing zu vermeiden. (Ib0044)
  • TestMonotonicFrameClock zum Testen von Code hinzugefügt, der die MonotonicFrameClock von Compose verwendet, um mithilfe von runBlockingTest von kotlinx-coroutines-test auf Kompositionskadereignisse zu warten (I4402f)
  • GestureScope.localToGlobal entfernt (I15299, b/171462785)
  • onAllNodesWithSubstring-Finder hinzugefügt (I81dd7, b/171462889)
  • Das Modul „androidx.ui.test“ wurde eingestellt. Bitte migrieren Sie zu androidx.compose.ui.test und androidx.compose.ui.test.junit4 (I452e8).

Fehlerkorrekturen

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

Externer Beitrag

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

Version 1.0.0-alpha06

28. Oktober 2020

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

API-Änderungen

  • „Recomposer“ ist jetzt eine „CompositionReference“ und ein gültiges übergeordnetes Kompositionsereignis. Der explizite Recomposer ist jetzt an weniger Stellen erforderlich. (I4036f)
  • VectorPainter wird zugunsten von rememberVectorPainter eingestellt, um besser zu verdeutlichen, dass die composable API intern „remember“ nutzt, um Daten in Kompositionen zu speichern. (Ifda43)
  • Die Modifier.drawWithCache API wurde aktualisiert, um ContentDrawScope anstelle von DrawScope als Empfängerbereich anzugeben. So können Implementierungen Zeichnungsbefehle neu anordnen. Das ist nützlich für Anwendungsfälle wie das Mischen oder Färben, bei denen Inhaltspixel zuerst gerendert werden müssen, damit der entsprechende Algorithmus für den Mischmodus richtig angewendet werden kann. (Ie7ec8)
  • SimpleContainer in PopupTestUtils.kt verschieben (I78c57)
  • „ConsumedData“ ist keine Datenklasse mehr. Weitere Informationen finden Sie unter https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f).
  • Position des Rtl-Griffs korrigieren (I6e1e0)
  • DrawScope und ContentDrawScope wurden in Schnittstellen anstelle von abstrakten Klassen umgestellt.
    • CanvasDrawScope-Implementierung von DrawScope erstellt
    • Implementierungen von DrawScope wurden überarbeitet, um stattdessen CanvasScope zu verwenden
    • DrawContext zum Umschließen von Abhängigkeiten für DrawScope erstellt
    • Verworfene Methoden in DrawScope entfernt (I56f5e)
  • Wichtige Änderung: Der Rückgabewert von PointerInputFilter.onPointerEvent(...) wurde entfernt, da in Zeigerereignissen nur Verbrauchsdaten geändert werden sollten. Anstatt Daten 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 „AlignmentLine“ wurde ausgeblendet. (I9da1a, b/170612900, b/170611568)
  • Möglichkeit hinzufügen, Prüftool-Informationen in zusammengesetzten Modifikatoren anzugeben (Idee08, b/163494569)
  • Die Option „Alle auswählen“ wurde dem Auswahlmenü hinzugefügt (Ief02b)
  • DrawTransform.rotate wurde aktualisiert, damit der Standarddrehpunktparameter „center“ (Mitte) verwendet wird, wie in der Dokumentation beschrieben.
    • DrawScope.rotateRad wurde aktualisiert, damit ein Offset für den Drehpunkt verwendet wird, um mit anderen Transformationsmethoden übereinzustimmen.
    • Die verworfene Überladung von DrawScope.rotateRad, bei der für die x- und y-Koordinate des Drehpunkts Gleitkommazahlen verwendet wurden.
    • (Iffcbb, b/170434992)

Fehlerkorrekturen

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

Externer Beitrag

  • Unterstützung verschiedener Sprachen für AnnotatedString.capitalize und AnnotatedString.decapitalize (I4aa7f)

Version 1.0.0-alpha05

14. Oktober 2020

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

API-Änderungen

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

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

  • Deaktivierung der Textauswahl und Demo (Ie7e97)

  • onGloballyPositioned in eine Inlinefunktion umgewandelt (I15830)

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

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

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

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

  • Änderungen an der Größe

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

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

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

Fehlerkorrekturen

  • Die Scrollleistung von LazyColumn/Row wird verbessert, da bei jedem Scrollen weniger Arbeit in der Teilkomposition erforderlich ist. Die neue Methode „hasInvalidations()“ wurde für die Composition-Klasse hinzugefügt. Die Methode „hasPendingChanges()“ aus dem Recomposer wurde in „hasInvalidations()“ umbenannt (Ib2f32, b/168293643, b/167972292, b/165028371)
  • Die Parameter für „Größe.Unspezifiziert“ wurden auf „Float.NaN“ statt „Float.POSITIVE_INFINITY“ aktualisiert. Die Painter-Implementierungen wurden aktualisiert, um auch „Size.Unspecified“ und nicht endliche Größen zu prüfen. (I95a7e)
  • Die Reihenfolge der place()-Aufrufe in benutzerdefinierten Layouts bestimmt jetzt die Zeichnungsreihenfolge für die untergeordneten Elemente (Ibc9f6)
  • Unterstützung der Umwandlung von AnnotatedString in SpannableString für Barrierefreiheit. (Ief907)
  • Es wurden Stubs für Android-Klassen auf älteren Plattformen hinzugefügt, um nach Möglichkeit die Verwendung von Reflection zu vermeiden. (Ia1790)
  • Fehler behoben: Wenn die Softwaretastatur die App zum Übersetzen veranlasste, wurden die Koordinaten der Eingabe des Cursors falsch. (Ic4cec, b/163077821)

Version 1.0.0-alpha04

1. Oktober 2020

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

API-Änderungen

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

    Aktualisierte Dokumentation für verschiedene Methoden (Ibd166)

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

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

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

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

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

Fehlerkorrekturen

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

Version 1.0.0-alpha03

16. September 2020

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

API-Änderungen

  • Entfernen Sie die semantischen Aktionen „Vor-“ und „Zurückscrollen“. Es wurden Schritte zu „AccessibilityRangeInfo“ hinzugefügt. (Ia47b0)
  • onInvalidate() wurde aus Owner entfernt. OwnedLayer kümmert sich um die Ungültigmachung. (Ica72b, b/162061312)
  • Operatormethoden in der Size API, die Offset-Parameter verwenden, wurden entfernt. Das Ergebnis dieser Vorgänge ist unklar und die Art des Ergebnisses ist für diese unerwartet. Beispiel: Sollte „Größe – Offset“ einen Offset oder ein Größenergebnis mit der Differenz zurückgeben?

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

Fehlerkorrekturen

  • Behebung eines Fehlers, durch den Elemente von LazyColumn manchmal falsch dargestellt wurden, was in bestimmten Fällen zu Abstürzen führte. (Ibcf17, b/163066980, b/165921895)
  • DpConstraints und APIs, die sie verwenden, wurden eingestellt. (I90cdb, b/167389835)
  • createAndroidComposeRule 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 eingestellt werden. (Ieae36)

Version 1.0.0-alpha02

2. September 2020

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

API-Änderungen

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

    Die veralteten Companion-Methoden für Rect wurden zugunsten von Funktionskonstruktoren entfernt.

    Es wurden Tests hinzugefügt, um Methoden in Rect.kt zu überprüfen (I08460, b/165822356)

Fehlerkorrekturen

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

    Diese Änderung führt nicht zu einer fehlerhaften Änderung auf Quellebene, da sich nur Compiler-APIs geändert haben, für die eine explizite Aktivierung erforderlich ist. (I7afd2, b/158123185)

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

Version 1.0.0-alpha01

26. August 2020

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

Version 0.1.0-dev

Version 0.1.0-dev17

19. August 2020

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

API-Änderungen

  • emitView wurde eingestellt. Verwende nach Möglichkeit AndroidView, um Ansichten in Compose zu senden. Das direkte Zusammenstellen von Ansichten und Ansichtsgruppen wird in Zukunft nicht mehr unterstützt, es sei denn, sie sind Blätter im Kompositionbaum. In diesem Fall kann dies mit AndroidView erreicht werden. (I29b1e, b/163871221)
  • FocusState2 wird eingestellt und 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“ ist jetzt eine Inline-Klasse (I88736)

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

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

  • IntOffset ist jetzt eine Inline-Klasse (Iac0bf)

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

  • PlacementScope.placeAbsolute() wurde in PlacementScope.place() umbenannt und das vorherige PlacementScope.place() in PlacementScope.placeRelative(). Daher wird die Position in Kontexten, in denen von rechts nach links geschrieben wird, mit der PlacementScope.place()-Methode nicht mehr automatisch gespiegelt. Verwenden Sie stattdessen PlacementScope.placeRelative(). (I873ac, b/162916675)

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

  • Einige Test-Dienstprogramme wurden nicht mehr öffentlich zugänglich gemacht, da sie nicht an der richtigen Stelle sind. Wird in Zukunft veröffentlicht. (I32ab1)

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

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

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

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

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

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

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

Fehlerkorrekturen

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

    Interne Compose APIs wurden geändert, um den Overhead beim Verfolgen von Statusobjekten wie mutableStateof() zu reduzieren (I80ba6)

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

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

  • Die state { ... }-Komponente wird zugunsten expliziter Aufrufe 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 in RoundRect umbenannt, um besser zu den Benennungsmustern von Compose zu passen. Ähnliche Funktionskonstruktoren wie RRect erstellt und RRect-Funktionskonstruktoren eingestellt (I5d325)

Version 0.1.0-dev16

5. August 2020

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

API-Änderungen

  • OnChildPositioned wurde eingestellt. Verwenden Sie stattdessen „OnPositioned“ auf dem untergeordneten Element. (I87f95, b/162109766)
  • setViewContent wurde eingestellt. Verwende stattdessen setContent. (I7e497, b/160335130)
  • Die AndroidViewBinding API wurde hinzugefügt, um Layoutressourcen auf Grundlage von ViewBinding zu inflaten und zu erstellen. (I081c6)
  • KeyEvent2 wird durch KeyEvent ersetzt (I2d770, b/162097585)
  • Unterstützung für Alt-Hardwareschlüssel (I9036b) hinzugefügt
  • FocusManager wurde eingestellt. Verwenden Sie stattdessen Modifier.focus(), Modifier.focusObserver() und Modifier.focusRequester(). (I74ae4, b/162211322)
  • „loadVectorResource“ unterstützt „trimPath“-Attribute (I808fe)
  • Dialogfeld in die Benutzeroberfläche verschieben (I47fa6)
  • Zwei PointerEventPasses wurden entfernt, die nicht mehr benötigt werden. (I33ca7)
  • Der PointerInteropModifier wurde implementiert, mit dem Sie MotionEvents empfangen und mit Compose interagieren können, als ob Sie eine Android-Ansicht implementieren würden. (Ieb08c)
  • Der nicht mehr unterstützte Tag-Modifikator wurde entfernt. Verwenden Sie stattdessen „layoutId“. (Idaa05, b/162023919)
  • Die APIs für die Unterstützung von rechts nach links wurden aktualisiert. Die Variable „LayoutDirectionAmbient“ wurde hinzugefügt. Mit ihr kann die Layoutrichtung gelesen und geändert werden. Modifier.rtl und Modifier.ltr wurden entfernt. (I080b3)
  • Unterstützung für das Kürzen von Pfaden in Vektorgrafiken (Ie16c9, b/158188351)
  • „Modifier.layout()“ wurde hinzugefügt, mit dem sich ein benutzerdefinierter Layout-Modifikator ganz einfach erstellen lässt (I73b69, b/161355194)
  • Es wurde eine neue AndroidView API hinzugefügt und die vorhandenen wurden eingestellt. (I5bcfd)
  • Modifier.plus wurde eingestellt. Verwenden Sie stattdessen Modifier.then. „Dann“ ist ein stärkeres Signal für die Reihenfolge und verhindert gleichzeitig das Eintippen von Modifier.padding().background() + anotherModifier, was die Abfolge unterbricht und die Lesbarkeit erschwert (Iedd58, b/161529964)
  • Fügen Sie [Abstract]ComposeView-Unterklassen hinzu, um Compose-Inhalte in einer Ansichtshierarchie zu hosten. (I46357)
  • Row 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 wurden von Android über Compose und wieder zurück nach Android übergeben. (I14be8, b/158034713)
  • dropdownPopup wurde entfernt. (I00430)
  • Feste Pop-up-Position auf Displays mit Aussparung (Idd7dd)
  • Aktion für Bedienungshilfen hinzufügen, um TextLayoutResult abzurufen (I9d6e6)
  • Der RemeasurementModifier wurde hinzugefügt. Damit kann das Layout synchron neu vermessen werden. Im Allgemeinen ist das nicht erforderlich, da das Neumessen und Neulayout automatisch erfolgt. Wir verwenden es jedoch in LazyColumnItems während des Scrollens. (I5f331, b/160791058)
  • Entfernen Sie getLineEllipsisOffset/getLineEllipsisCount. Verwenden Sie stattdessen getLineVisibleEnd/getLineEnd/isLineEllipsized. (I85aa2)
  • Fügen Sie einige Markierungen/Anmerkungen hinzu, um Best Practices zu berücksichtigen. (I66b20)
  • Mehr Zeilen-APIs in TextLayoutResult verfügbar machen (I79bd2)
  • Integrierte Vektorkonverter zur Umwandlung von integrierten Einheiten sind jetzt über „Foo.VectorConverter“ zugänglich, z. B. „Dp.VectorConverter“, „Color.VectorConverter“ und „Float.VectorConverter“ (I3e273)

Fehlerkorrekturen

  • Allgemeine API-Fehler behoben (I077bc)
    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-Enum-Typen in Pascal-Case umbenannt
    7. Die Filterqualitätsenumer wurden in Pascal-Schriftart 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-Schriftart 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 aktualisiert, sodass für die internen Parameter „fillPaint“ und „strokePaint“ nicht mehr die lazy Delegation verwendet wird.
    15. Die Bildkomposition wurde aktualisiert, um die Nutzung von Box zu vermeiden und den Overhead zu reduzieren.
    16. Die „Outline“-Klasse wurde um @Immutable-Anmerkungen 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 Methoden des Rect-Begleiterkonstruktors wurden zugunsten von Funktionskonstruktoren eingestellt.
    20. Aktualisierte Pinselklassen und Funktionskonstruktoren mit @Immutable- und @Stable-APIs
    21. Die VertexMode-Enumeration wurde in PascalCase geändert.
    22. Die DrawScope-Methode „selectPaint“ wurde aktualisiert, um Strichparameter der Farbe bedingt zu überschreiben, wenn sie sich geändert haben.
    23. Die Funktion „Size“ wurde aktualisiert, um die Destrukturierungs-API hinzuzufügen. Außerdem wurde „UnspecifiedSize“ in „Unspecified“ umbenannt und nicht verwendete Methoden entfernt.
  • Die BlendMode API für das Komponieren wurde aktualisiert, um die BlendModes des Android-Frameworks und die PorterDuff-Modi je nach API-Ebene korrekt abzugleichen. Die BlendMode#isSupported API wurde eingeführt, um vor der Verwendung zu prüfen, ob die BlendMode auf dem Gerät unterstützt wird. (I0ef42)
  • „LazyItemScope“ wurde für den Parameter „itemContent“ von Lazy-Listen hinzugefügt. Es bietet Modifikatoren, um die maximale Größe des übergeordneten Elements zu füllen. Dies löst den Anwendungsfall, wenn das Element den Darstellungsbereich füllen soll und die normale Funktion Modifier.fillMaxSize() nicht funktioniert, da das Element mit unendlichen Einschränkungen gemessen wird. (Ibd3b2, b/162248854)
  • SemanticsNodeInteraction.performPartialGesture wurde entfernt. Verwenden Sie 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 wird veröffentlicht. Version 0.1.0-dev15 enthält diese Commits.

Aktualisierung von Abhängigkeiten

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

API-Änderungen

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Um die Anzahl der Klassen zu reduzieren, die zur Darstellung von Positionierungsinformationen verwendet werden, sollten Sie stattdessen die Klasse „Offset“ verwenden. Dies bietet die Vorteile einer Inline-Klasse, um mit einem Long-Wert zwei Gleitkommawerte zu verpacken, die X- und Y-Achsenabweichungen als Gleitkommawerte darstellen. (I3ad98)

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

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

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

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

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

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

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

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

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

  • Das veraltete LayoutTag() wurde entfernt. Verwenden Sie stattdessen Modifier.tag(). Modifier.matchParent() wurde eingestellt. Verwenden Sie stattdessen Modifier.matchParentSize(). (If8044)

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

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

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

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

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

  • Die API für DrawLayer-Modifikatoren wurde geändert: „outlineShape“ wurde in „shape“ umbenannt und hat den Standardwert „RectangleShape“. Außerdem ist der Wert jetzt nicht mehr optional. „clipToOutline“ wurde in „clip“ umbenannt. „clipToBounds“ wurde entfernt, da es mit „RectangleShape“ dasselbe wie „clip == true“ bedeutet (I7ef11, b/155075735)

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

  • Die API für die abschließende Lambda-Funktion „WithConstraints“ wurde geändert. Anstelle von zwei Parametern hat es jetzt einen Empfängerbereich, der zusätzlich zu „constraints“ und „layoutDirection“ die Eigenschaften „minWidth“, „maxWidth“, „minHeight“ und „maxHeight“ in Dp bietet (I91b9a, b/149979702)

  • LayoutModifier2 in LayoutModifier umbenannt (Id29f3)

  • Die nicht mehr unterstützte LayoutModifier-Benutzeroberfläche wurde entfernt. (I2a9d6)

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

  • Layout- und LayoutModifier-Unterelemente können mit einer anderen Layoutrichtung gemessen werden. (Ibd731)

  • Die neue Funktion „Modifier.zIndex()“ steuert die Zeichnungsreihenfolge der untergeordneten Elemente im selben übergeordneten Layout. Die Property „elevation“ von „DrawLayerModifier“ wurde in „shadowElevation“ umbenannt und steuert nicht mehr die Zeichnungsreihenfolge. Die Reihenfolge der Parameter für „DrawShadow“ wurde geändert: „elevation“ ist jetzt der erste und „shape“ der zweite Parameter mit dem Standardwert „RectangleShape“. (I20150, b/152417501)

  • „onSizeChange“ und „onPositionChange“ in „Owner“ entfernt (I5c718)

  • „Constraints2“ wurde hinzugefügt, eine Kopie von „Constraints“, die nur Int-Werte für Einschränkungen und keine IntPx-Werte unterstützt. IntPx wird entfernt und alle Ganzzahleinschränkungen werden wie bei Android als Pixel angenommen.

    • Außerdem wurde „IntSize“ hinzugefügt, das IntPxSize ersetzen wird. (I4b43a)
  • Ausrichtung kann jetzt mit beliebigen Werten instanziiert werden. 1D-Ausrichtungen wurden hinzugefügt. (Ia0c05)

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

  • (I45f09, b/152842521)

    • „ScaleFit“ in „ContentScale“ umbenannt
    • ContentScale wurde aus dem Modul „ui-graphics“ in das Modul „ui-core“ verschoben, damit es sich im selben Modul wie die Alignment API befindet.
    • „FillMaxDimension“ in „Zuschneiden“ umbenannt
    • „FillMinDimension“ wurde in „Fit“ umbenannt.
    • „An Innenseite anpassen“ in „An Innenseite anpassen (besser)“ umbenannt
    • Entsprechungen für ImageView.ScaleType
    • Es wurde eine Dokumentation hinzugefügt, aus der hervorgeht, dass die Kombination aus „Zuschneiden“ und „Ausrichtung.Mitte“ dasselbe Ergebnis wie ImageView.ScaleType.CENTER_CROP erzielt und dass „Passen“ in Kombination mit „Ausrichtung.Mitte“ dasselbe Ergebnis wie ImageView.ScaleType.FIT_CENTER erzielt. „Innen“ in Kombination mit „Ausrichtung.Mitte“ erzielt dasselbe Ergebnis wie ImageView.ScaleType.CENTER_INSIDE.
  • Unterstützung für RTL-Zeichen für Zeichnen-Modifikatoren (I0aaf9)

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

  • Verbesserungen an der DrawModifier API:

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

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

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

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

  • Der Modifikator-Plus-Operator wurde durch Funktionen der werkseitigen Erweiterung ersetzt (I225e4)

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

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

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

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

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

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

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

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

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

  • LayoutCoordinates hat keine Positionseigenschaft mehr. Die Eigenschaft „position“ ist bei Layout-Modifizierern, Drehungen oder Skalierungen nicht sinnvoll. Stattdessen sollten Entwickler „parentCoordinates“ und „childToLocal()“ verwenden, um die Transformation von einer Layoutkoordinate in eine andere zu berechnen.

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

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

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

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

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

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

  • Einführung eines zusätzlichen optionalen Rechteckparameters für ImagePainter, um einen Teil des zugrunde liegenden ImageAssets zu zeichnen (I0ea9e)

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

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

    Außerdem wurde Canvas.rotateRad aus Gründen der Einheitlichkeit zu einer Erweiterungsmethode verschoben (Ibaca6).

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

  • toFrameworkRect/toFrameworkRectF in toAndroidRect/toAndroidRectF umbenannt, um der Benennungskonvention für Objektkonvertierungen zwischen Compose und den Android-Framework-APIs zu entsprechen, auf denen sie basieren. Außerdem wurden die Dokumente zu diesen APIs aktualisiert (I86337).

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

    Die Image(Painter) API wurde in PaintBox(Painter) umbenannt. Es wurde ein Vektor-Komposit erstellt, das sich wie das Bild-Komposit verhält, jedoch mit einem VectorAsset anstelle eines ImageAsset (I9af9a, b/149030271).

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

  • TextDirection.Content hinzugefügt (I48f36)

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

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

  • TextDirectionAlgorithm in TextDirection umbenannt (I75ce8)

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

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

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

  • Der Cursor des Textfelds hat eine blinkende Animation (Id10a7)

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

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

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

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

  • Der Plusoperator für den (Text-/Absatz-/Abschnitts-)Stil wurde hinzugefügt, der an die Funktion „merge()“ weitergeleitet wird. (Ia1add)

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

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

  • getLineStart, getLineEnd, getEllipsisOffset und getEllipsisCount zu TextLayoutResult hinzufügen (Ibc801)

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

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

  • AdapterList wurde hinzugefügt, eine scrollbare Listenkomponente, die nur die sichtbaren Elemente zusammenstellt und anordnet. Zu den derzeit bekannten Problemen gehört, dass die Funktion nur für vertikale Channels verfügbar ist und nicht alle Änderungen an untergeordneten Channels berücksichtigt. (Ib351b)

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

Fehlerkorrekturen

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

    Ein Problem wurde behoben, durch das die Cache-Bitmap von VectorPainter auf die Standardgröße statt auf die angegebene Größe für das Zeichnen festgelegt wurde.

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

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

  • Die Anmerkung „@Untracked“ wurde eingestellt. Ersetzen Sie den Code durch @ComposableContract(tracked=false) (Id211e).

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

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

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

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

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

  • Das Recompose-Komposit ist nicht mehr nützlich. Die meisten Neuzusammensetzungen sollten aufgrund von MutableState-Zuweisungen erfolgen. Für alles andere wird empfohlen, die Funktion invalidate zu verwenden, um eine Neuzusammensetzung des aktuellen Bereichs auszulösen. (Ifc992)

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

  • Ändert die Codegenerierungsstrategie des Compose-Compilers. Vor der Änderung hat der Compose-Compiler Aufrufe in kombinierbare Funktionen umgewandelt. Durch diese Änderung wird der Body einer zusammensetzbaren Funktion jetzt transformiert und der Aufrufort bleibt (meistens) unverändert.

    Das bedeutet, dass der Großteil der Logik, die mit der Compose-Laufzeit kommuniziert, am Anfang des Funktionsblocks statt am Aufrufort ausgeführt wird.

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

    Um diese Arbeit zu unterstützen, wurde die JVM-Signatur aller kombinierbaren Funktionen geändert. Eine kompostierbare Funktion, die einen einzelnen Parameter akzeptiert, wird in eine Funktion umgewandelt, die drei Parameter akzeptiert. Die zusätzlichen Parameter sind der Komponist, eine Ganzzahl „Schlüssel“ und eine Bitmasken-Ganzzahl, die zum Übertragen von Metadaten über Aufrufe verwendet wird.

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

    Bekannte beabsichtigte Verhaltensänderungen, die sich daraus ergeben:

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

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

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

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

  • RepaintBoundary wurde zugunsten von DrawLayerModifier entfernt (I00aa4)

  • Für „Button“, „FloatingActionButton“ und „Clickable“ gibt es jetzt eine separate enabled-Paramter. Einige der Parameter für die Schaltfläche wurden umbenannt oder neu angeordnet. (I54b5a)

  • ButtonStyle wurde durch separate Funktionen ersetzt und die Textüberladung (String) entfernt. Nutzungsinformationen finden Sie in den aktualisierten Beispielen. (If63ab, b/146478620, b/146482131)

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

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

  • Fehlerbehebung: Wenn Schriftstärke und Schriftstil in einem AnnotatedString verschachtelt sind, wird der Text nicht korrekt gerendert. (I77a9d)

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

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