Benutzeroberfläche zum Verfassen

Grundlegende Komponenten der Editor-UI, die für die Interaktion mit dem Gerät erforderlich sind, einschließlich Layout, Zeichnung und Eingabe.
Letzte Aktualisierung Stabile Version Releasekandidat Beta-Ausgabe Alpharelease
17. April 2024 1.6.6 1.7.0-alpha07

Struktur

Compose ist eine Kombination aus sieben Maven-Gruppen-IDs in androidx. Jede Gruppe enthält eine ausgewählte Teilmenge von Funktionen mit jeweils eigenen Versionshinweisen.

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

GruppeBeschreibung
compose.animationAnimationen in den Jetpack Compose-Anwendungen erstellen, um die Nutzererfahrung zu verbessern.
compose.compiler@Composable-Funktionen transformieren und Optimierungen mit einem Kotlin-Compiler-Plug-in aktivieren
compose.foundationSchreiben Sie Jetpack Compose-Anwendungen mit einsatzbereiten Bausteinen und erweitern Sie die Grundlage, um Ihre eigenen Designsystemteile zu erstellen.
compose.materialErstellen Sie Jetpack Compose-Benutzeroberflächen mit einsatzbereiten Material Design-Komponenten. Das ist der übergeordnete Einstiegspunkt von Compose. Hier stellen wir Komponenten bereit, die den unter www.material.io beschriebenen entsprechen.
compose.material3Erstellen Sie Jetpack Compose-Benutzeroberflächen mit Material Design 3 Components, der nächsten Entwicklung des Material Design. Material 3 enthält aktualisierte Designs und Komponenten sowie Personalisierungsfunktionen wie dynamische Farben. Das Design ist an den visuellen Stil und die System-UI von Android 12 angepasst.
compose.runtimeGrundlegende Bausteine des Programmiermodells und der Statusverwaltung von Compose sowie der Kernlaufzeit für das Targeting des Compiler-Plug-ins „Compose“.
compose.uiGrundlegende Komponenten der Editor-UI, die für die Interaktion mit dem Gerät erforderlich sind, einschließlich Layout, Zeichnung und Eingabe.

Abhängigkeiten deklarieren

Zum Hinzufügen einer Abhängigkeit von Compose 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 Anwendung oder Ihr Modul die Abhängigkeiten für die benötigten Artefakte hinzu:

Groovy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.12"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.12"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

Feedback

Dein Feedback hilft uns, Jetpack zu verbessern. Lassen Sie uns wissen, wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben. Sehen Sie sich die vorhandenen Probleme in dieser Bibliothek an, bevor Sie eine neue erstellen. Durch Klicken auf die Stern-Schaltfläche können Sie zu einem vorhandenen Problem abstimmen.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.

Version 1.7

Version 1.7.0-alpha07

17. April 2024

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

API-Änderungen

  • ClickableText wurde als verworfen markiert. Wenn Sie dem Text Links hinzufügen möchten, erstellen Sie ein AnnotatedString mit einem LinkAnnotation, das Ihrem Link entspricht, und übergeben Sie dieses AnnotatedString an die zusammensetzbare Textfunktion. (I34d4b, b/323346994)
  • Stell ViewConfiguration.HandwritingGestureLineMargin für handschriftliche Touch-Gesten vor. 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)
  • Beim Abfragen von Layoutkoordinaten können Sie jetzt das Argument excludeDirectManipulationOffset verwenden, um den von übergeordneten Layouts festgelegten Versatz auszuschließen, bei dem die untergeordneten Layouts mit Placeable.PlacementScope.withDirectManipulationPlacement platziert wurden. Ebenso kann ein Layout, bei dem die Position seiner untergeordneten Elemente häufig geändert wird, jetzt mithilfe von withDirectManipulationPlacement platziert werden (z. B. „Scrollen“, das standardmäßig implementiert ist). Animationen mit approachLayout sind dadurch intuitiver. Sie können jetzt unterscheiden, welcher Offset animiert werden soll und was direkt angewendet werden soll, wenn der Ansatz animiert wird. (I60ec7)
  • Die Funktions-Flag für lange Screenshots wurde entfernt. (I28648, b/329128246)
  • LazyColumn rendert fixierte Header in langen Screenshots jetzt korrekt. (I8d239, b/329296635)
  • Drag-and-Fling-Quellen für NestedScroll werden durch UserInput und SideEffect ersetzt, um die erweiterte Definition dieser Quellen zu ermöglichen, die jetzt Animationen (Nebeneffekt) sowie Mausrad und Tastatur (UserInput) enthalten. (I40579)
  • ApproachLayoutModifierNode und Modifier.approachLayout sind jetzt stabil. Die neuen isMeasurementApproachInProgress() und isPlacementApproachInProgress() ersetzen die alten isMeasurementApproachComplete() bzw. isPlacementApproachComplete().
  • Der eingestellte intermediateLayout-Modifikator wurde entfernt. (I3e91c)
  • Benennen Sie GraphicsLayer#buildLayer um, damit die Aufzeichnung die begin/endRecording-Methoden von von Displaylist unterstützten APIs wie RenderNode und Picture widerspiegelt.
  • rememberGraphicsLayer wurde aktualisiert, um rememberObserver zu nutzen. (I312c1, b/288494724, b/330758155)
  • UrlAnnotation wurde eingestellt. Verwende stattdessen LinkAnnotation.Url. Wenn Sie Material-Themen verwenden, erstellen Sie mithilfe des TextDefaults-Objekts die Anmerkung mit Material-Design (I8d180, b/323346545).
  • Für Textlinks wurde neben der normalen Gestaltung auch die Option für den Zustand gedrückt, bei dem der Mauszeiger darauf bewegt wurde und der Fokus liegt (I5f864, b/139312671).
  • String.parseAsHtml umbenannt in AnnotatedString.Companion.fromHtml. (I43dcd)
  • Der parseAsHtml-Methode wurden Stilargumente (linkStyle, focusedLinkStyle, hoveredLinkStyle) und ein Link-Interaktions-Listener hinzugefügt. Beim Parsen des HTML-getaggten Strings mit <a>-Tags wird mit der Methode für jedes solche Tag ein LinkAnnotation.Url erstellt. Dabei werden die Stilobjekte und der Link-Interaktions-Listener an jede Annotation übergeben. (I7c977)
  • Für LinkAnnotation werden jetzt die zustandsbasierten Stilargumente und ein LinkInteractionListener verwendet. Fügen Sie diese Annotation dem AnnotatedString hinzu, um einen Hyperlink zu erhalten. Durch Übergeben von focusedState und/oder hoveredState können Sie die visuelle configuration für Links definieren, wenn sie fokussiert sind und/oder der Mauszeiger darauf bewegt wird. (I81ce4, b/139312671)
  • Für ImeOptions.hintLocales sind keine Nullwerte mehr zulässig. Wenn du eine leere Gebietsschemaliste übergeben möchtest, verwende LocaleList.Empty. (Ic5bc4)

Fehlerkorrekturen

  • Handhabt fehlerhafte/beschädigte historische Eingabeereignisdaten (fehlerhafte Offset-Daten werden ignoriert).
  • Behebt unerwartete Zeigerereignisse, wenn ein Modifikator für die Zeigereingabe dynamisch vor einem anderen Modifikator für die Zeigereingabe während eines aktiven Zeigereingabe-Ereignisstreams hinzugefügt wird (z. B. zwischen einer Eingabetaste und einem Beenden per Mausbewegung [Maus/Eingabestift]).

Version 1.7.0-alpha06

3. April 2024

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

Neue Funktionen

  • Die parseAsHtml-Methode für Strings mit benutzerdefinierten Stilen wurde hinzugefügt: Mit ihr kann ein mit HTML-Tags gekennzeichneter String in AnnotatedString konvertiert werden. Nicht alle Tags werden unterstützt. Sie können beispielsweise noch keine Aufzählungslisten anzeigen. (I84d3d, I30626, b/139326648)
  • Implementierung der experimentellen Unterstützung für lange Screenshots in Compose-Scrollcontainern mit der offiziellen Android API (ScrollCaptureCallback). Diese Funktion ist experimentell und wird möglicherweise nicht in allen Fällen richtig verarbeitet. Aus diesem Grund ist sie derzeit standardmäßig deaktiviert. Legen Sie für die Aktivierung das Flag ComposeFeatureFlag_LongScreenshotsEnabled auf „true“ fest. (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üfe auch das Ergebnis von ClipboardManager.getClip, wenn es null ist oder nicht, um festzustellen, ob die Zwischenablage einen aktuellen Clip enthält. (I50498)
  • Jetzt können Sie GraphicsLayer-Objekte an placeable.placeWithLayer()-Funktionen übergeben (I1b22f).
  • ClipboardManager.setClip akzeptiert jetzt null, um die Zwischenablage löschen zu können. (I7d2e9)
  • Ressourcen-IDs zum Ausblenden von Ansichten, die als Implementierungsdetails in Build-Tools verwendet werden, wurden hinzugefügt (I99531).
  • Es wurde eine GraphicsLayer#toImageBitmap-Sperrmethode hinzugefügt, um das Rendern von Inhalten einer Bitmap in ein GraphicsLayer-Element zu unterstützen. Dies ist ein hardwarebeschleunigter Renderingvorgang auf API-Level 22 oder höher (einschließlich), der über 99% aller Android-Geräte unterstützt. Bei Android API-Level 21 greift dies auf das Software-Rendering zurück. (I9e114)
  • Hilfsmethode zum Konvertieren eines Android-RectF in ComposeRect (I39925, b/325660505)
  • Alle KeyboardOptions-Parameter haben jetzt standardmäßig einen nicht angegebenen Wert. Die Methode KeyboardOptions.merge wurde hinzugefügt.
  • KeyboardOptions.autoCorrect wurde in autoCorrectEnabled umbenannt und Nullwerte zulässig, wobei null anzeigt, dass kein Wert angegeben wurde. (Ia8ba0, b/295951492)
  • Die Variante BasicTextField(state) und BasicSecureTextField verwenden jetzt KeyboardActionHandler anstelle von KeyboardActions, 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 freigegeben. Version 1.7.0-alpha05 enthält diese Commits.

Neue Funktionen

  • Führen Sie die neue GraphicsLayer API ein, um Zeichenbefehle in einer Anzeigeliste sowie zusätzliche Eigenschaften aufzuzeichnen, die sich auf das Rendering der Anzeigeliste auswirken. Dies bietet eine Isolationsgrenze, um eine komplexe Szene in kleinere Teile zu unterteilen, die einzeln voneinander aktualisiert werden können, ohne dass die gesamte Szene neu erstellt werden muss. Transformationen in eine GraphicsLayer können ohne erneute Aufzeichnung der Anzeigeliste erfolgen. Im Gegensatz zu Modifier.graphicsLayer ermöglicht GraphicsLayer das Rendern zusammensetzbarer Inhalte an anderer Stelle. Es ist nützlich bei animierten Anwendungsfällen, in denen Inhalte in verschiedenen Szenen gerendert werden sollen.

API-Änderungen

  • GraphicsLayer.draw(Canvas) ist keine öffentliche API mehr. Verwenden Sie zum Zeichnen der Ebene stattdessen die Erweiterungsfunktion DrawScope.drawLayer(GraphicsLayer). (I7a7c0)
  • restrictedConstraints() in zwei Methoden aufteilen: fitPrioritizingWidth() und fitPrioritizingHeight() (I6d7fd)
  • Einführung des HardwareCanvas-Stubs für die Nutzung von Android L (I1c3b5, b/288494724)
  • Aktualisieren Sie das Compose-Framework, um eine lokale GraphicsContext-Zusammensetzung lokal sowie die Modifizierer-Implementierungen von "Owner", "DelegateableNode" und "drawWithCache" verfügbar zu machen, um Zugriff auf die GraphicsContext für den beschränkten Zugriff freizugeben. Dadurch werden GraphicsLayer-Instanzen automatisch bereinigt, wenn Modifikatoren entfernt werden. (I64a2f, b/288494724)
  • Einführung von InterceptPlatformTextInput zur Unterstützung beim Schreiben von Low-Level-IME-bezogenen Tests und anderen Low-Level-IME-Anwendungsfällen. PlatformTextInputTestOverride wurde eingestellt. (I862ed, b/322680547)
  • Die Erweiterungsfunktion "GraphicsLayer.setOutline(Outline)" wurde hinzugefügt. (Ib81f4)
  • Führen Sie den Funktionskonstruktor GraphicsContext ein, um eine Factory zum Erstellen von GraphicsLayer-Instanzen zu erstellen (Ib98d6, b/288494724).
  • Freigegebene GraphicsLayer API, um Entwicklern definierte Flexibilität beim Erfassen von Zeichenbefehlen zu bieten, die zum Zeichnen an anderer Stelle verwendet werden können, und um verschiedene visuelle Effekte auf das Endergebnis anzuwenden. (I80245, b/288494724)
  • Leite den Paragraph#getRangeForRect ein, der einen Textbereich zurückgibt, der von einer bestimmten rechteckigen Fläche abgedeckt ist. (Iee516, b/325660505)
  • Die experimentelle Überschreibung von BasicText mit dem Argument onLinkClicked wurde entfernt. Eine Ersatz-API für die Unterstützung von Hyperlinks wird in Zukunft folgen. (I107d5)

Fehlerkorrekturen

  • Es wurde eine GraphicsLayer-Erwartete/tatsächliche API-Definition hinzugefügt, um die Erfassung und Wiederholung von Zeichenbefehlen mit optionalen visuellen Effekten und Transformationen zu unterstützen. Einführung der GraphicsContext-Schnittstelle mit Grafikabhängigkeiten, einschließlich der Erstellung und Verwaltung von GraphicsLayer-Instanzen. (I4a8d6, b/288494724)
  • Ein Interoperabilitätsproblem bei der 1D-Fokussuche wurde behoben, bei dem der Fokus in einem ComposeView, das in andere Ansichten eingebettet war, hängen geblieben ist. I08fd4.

Externer Beitrag

  • LocalLifecycleOwner wurde von der Compose-UI nach lifecycle-runtime-compose verschoben, damit die auf dem Composer basierenden Hilfs-APIs außerhalb der Erstellungs-UI verwendet werden können. Vielen Dank, Jake Wharton für den Beitrag. (I6c41b, b/328263448)
  • Bias-Float-Eigenschaften einheitlich für alle Ausrichtungsuntertypen auf Basis von Verzerrungen verfügbar machen. (I69f0f, b/328088992)

Version 1.7.0-alpha04

6. März 2024

androidx.compose.ui:ui-*:1.7.0-alpha04 wird freigegeben. Version 1.7.0-alpha04 enthält diese Commits.

API-Änderungen

  • Unterstützung der Eingabestift-Handschriftfunktion für BasicTextField2 auf Geräten ab Android U. (I002e4)
  • In dieser Änderungsliste fügen wir die semantische Aktion GetScrollViewportLength hinzu, damit wir Informationen über die Komponenten, die beim Schreiben gescrollt werden, an das a11y-System übergeben können. In dieser Änderungsliste wird die Verwendung dieser Eigenschaft auch in scrollbaren Fundament-Listen angewendet. (Ic5fa2)
  • FocusRequester.createRefs ist jetzt stabil (I4d92c, b/261436820)
  • DelegatableNode.requireView() wurde eingeführt, damit Modifikatorknoten die aktuelle Android-View abrufen können, ohne eine lokale Komposition zu lesen. (I40768)
  • Neue API Path.reverse() zum Umkehren der Richtung eines Pfads (I36348)
  • hintLocales wurde zu KeyboardOptions hinzugefügt, um TextFields die Möglichkeit zu geben, IMEs mit bestimmten Gebietsschemata anzugeben, um eine bevorzugte Sprache vorzugeben.
  • Mache die platformLocale-Eigenschaft von Locale verfügbar, die das zugrunde liegende Plattformobjekt zurückgibt, z.B. java.util.Locale. (I921c6)

Version 1.7.0-alpha03

21. Februar 2024

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

API-Änderungen

  • Jetzt neu: ContextualFlowRow und erweiterte FlowRow/Column mit MaxLines und Overflow. Wir freuen uns, neben der Einführung von ContextualFlowRow und ContextualFlowColumn Verbesserungen an den experimentellen Funktionen von FlowRow und FlowColumn ankündigen zu können, die jetzt maxLines und Überlauf-Unterstützung enthalten. Mit diesem Update sollen Komponenten zur Leistungsoptimierung bereitgestellt werden. Dabei ist ContextualFlow* perfekt für eine große Anzahl von Elementen, bei denen eine kleine maxLines-Konfiguration verwendet wird und die dynamische + N mehr Schaltflächen sehen. FlowRow und FlowColumn eignen sich perfekt für eine kleine Anzahl von Elementen (unter 100 Elementen). Wichtig: Um das vorhandene Verhalten in FlowRow oder FlowColumn beizubehalten, wo sich alle Elemente unabhängig davon zusammensetzen, ob sie auf das Maximum der Kreuzachse passen, setzen Sie overflow während der Initialisierung auf FlowRowOverflow.Visible oder FlowColumnOverflow.Visible. Sieh dir ContextualFlowRowSample und FlowRowSample an, um Beispiele für diese neuen Funktionen in Aktion zu sehen. (Ib9135, b/293577082)
  • Fügen Sie das Semantikattribut maxTextLength hinzu, das für Textfelder festgelegt werden sollte, die die maximal zulässige Anzahl von Zeichen filtern. (I24d9f, b/170648072)
  • Der Wrapper Modifier.inspectable wurde verworfen. Da diese API mehr Entwertungen Ihres Modifizierers als nötig erstellt, wird davon abgeraten. Entwicklern wird empfohlen, die Methode inspectableProperties() für ModifierNodeElement zu implementieren, wenn sie Modifikatoreigenschaften für Tools zur Verfügung stellen möchten. (Ib3236)
  • Neuer Konstruktor für PopupProperties, der vollständige Kontrolle über WindowManager.LayoutParams-Flags ermöglicht. (Ibb33e, b/312485503)
  • DelegatableNode.requireLayoutCoordinates() wurde eingeführt, um den aktuellen LayoutCoordinates einer Modifier.Node zu erhalten, ohne onPlaced überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Ia8657)
  • DelegatableNode.currentLayoutCoordinates wurde eingeführt, um den aktuellen LayoutCoordinates einer Modifier.Node zu erhalten, ohne onPlaced überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Iaebaa)
  • BasicTextField2 und zugehörige APIs unter dem Paket androidx.compose.foundation.text2 wurden nach androidx.compose.foundation.text verschoben. (I9f635)
  • Es wurde eine neue ApproachLayoutModifierNode API hinzugefügt, die das Erstellen einer benutzerdefinierten Ansatzlogik in einem expliziten Modifikatorknoten unterstützt. Außerdem wurde eine neue experimentelle DeferredTargetAnimation API für Animationen hinzugefügt, deren Ziel bei der Instanziierung unbekannt ist. (I60745)
  • Neue Path-APIs zum Abfragen der Richtung eines Pfads und zum Extrahieren von Konturen aus einem Path. (I63d04)
  • PathHitTest und Path.contains(Offset) wurden hinzugefügt, um zu prüfen, ob Path einen bestimmten Punkt enthält. (I3b218)
  • TextLayoutResult stellt jetzt die Methode getLineBaseline(lineIndex) bereit. Dadurch kann neben den vorhandenen praktischen Eigenschaften firstBaseline und lastBaseline auch die Referenz einer beliebigen Textzeile gelesen werden. (Ide4e8, b/237428541)
  • Es wurde eine Methode hinzugefügt, um nur die Anmerkungen von zwei AnnotatedStrings zu vergleichen. (I32659)

Fehlerkorrekturen

  • Ein Abwärtskompatibilitätsproblem mit 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 freigegeben. Version 1.7.0-alpha02 enthält diese Commits.

API-Änderungen

  • Ein Kompatibilitätsproblem mit Binärprogrammen mit SemanticsPropertyReceiver.performImeAction wurde behoben. (I65865, b/322269946)
  • Der PopupProperties-Konstruktor, der einen usePlatformDefaultWidth-Parameter annimmt, ist nicht mehr experimentell. (I8f8d2)
  • Eine Überlastung von ComposeTestRule.waitUntil wurde hinzugefügt, die eine Stringbeschreibung der Bedingung verwendet, die in die Zeitüberschreitungsnachricht aufgenommen werden soll. (I9413e)
  • Mit der neuen Semantik API unset() lassen sich semantische Attribute entfernen, die in derselben Modifikatorkette hinzugefügt wurden. Neues Semantikattribut isOpaque. (I8c583, b/317966058, b/246056649)
  • originalEventPosition wurde aus der Kopiermethode in der öffentlichen API von PointerInputChange entfernt. (I7bead)

Fehlerkorrekturen

  • Es wurde ein a11y-Fehler behoben, bei dem sowohl auf Tabulatoren als auch auf Optionsfelder gesetzte Elemente anklickbar waren, wenn diese ausgewählt wurden. (I2181c)
  • In VelocityTracker wird jetzt die Standardeinstellung für das Hinzufügen von Punkten behoben. Du kannst die Korrektur noch deaktivieren, indem du VelocityTrackerAddPointsFix auf „false“ setzt, falls Probleme vorliegen. (Ib3877, b/269487059)
  • Abwärtsinkompatibilität von Binären TextStyle und ParagraphStyle wurde behoben. (I179f0, b/320819734)

Externer Beitrag

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

Version 1.7.0-alpha01

24. Januar 2024

androidx.compose.ui:ui-*:1.7.0-alpha01 wird freigegeben. 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ügt die DeviceConfigurationOverride API zu ui-test hinzu, damit das Verhalten der zu testenden Inhalte lokal überschrieben werden kann, z. B. um eine verfügbare Größe, Sprache, Layoutrichtung, Schriftgröße oder Design anzugeben.

Version 1.6

Version 1.6.6

17. April 2024

androidx.compose.ui:ui-*:1.6.6 wird freigegeben. Version 1.6.6 enthält diese Commits.

Fehlerkorrekturen

  • Behebt einen seltenen BasicTextField-Absturz.

Version 1.6.5

3. April 2024

androidx.compose.ui:ui-*:1.6.5 wird freigegeben. Version 1.6.5 enthält diese Commits.

Version 1.6.4

20. März 2024

androidx.compose.ui:ui-*:1.6.4 wird freigegeben. Version 1.6.4 enthält diese Commits.

Version 1.6.3

6. März 2024

androidx.compose.ui:ui-*:1.6.3 wird freigegeben. Version 1.6.3 enthält diese Commits.

Version 1.6.2

21. Februar 2024

androidx.compose.ui:ui-*:1.6.2 wird freigegeben. 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 Abwärtskompatibilitätsproblem mit SemanticsPropertyReceiver.performImeAction und SemanticsActions.PerformImeAction wurde behoben. (Ie0bb2, b/322269946)
  • Layouts geben jetzt bei der Messung einen Fehler aus, wenn ein Layout eine ungewöhnlich große Größe zurückgibt. Diese Art von Fehler tritt normalerweise auf, wenn bei der Messung maximale Einschränkungen direkt verwendet werden, ohne auf Constraints.Infinity zu prüfen. Die Prüfung hilft Entwicklern, Probleme mit einem Layout mit der falschen Größe und nicht mit einem Layout zu finden, das sie enthält. (I339a9)

Version 1.6.0

24. Januar 2024

androidx.compose.ui:ui-*:1.6.0 wird freigegeben. 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 freigegeben. Version 1.6.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Optimierte Vektorgrafikimplementierung zur Verbesserung der Leistung durch Minimieren zusätzlicher Neuzusammensetzungen

Version 1.6.0-beta03

13. Dezember 2023

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

Neue Funktionen

  • Ein LayoutCoordinates kann jetzt getrennt werden, ohne dass der Knoten getrennt wird. Im compose Layout Inspector zu verhindern (If693)

Fehlerkorrekturen

  • PlatformImeOptions ist jetzt eine konkrete Klasse anstelle einer Schnittstelle. (If40a4)
  • Zusätzliche nachgelagerte Neuzusammensetzungen wurden behoben, die dadurch verursacht wurden, dass LocalSoftwareKeyboardController und LocalTextInputService bei jeder Neuzusammensetzung eines Stamms neue Werte erhielten. (I42190, b/310510985)

Version 1.6.0-beta02

29. November 2023

androidx.compose.ui:ui-*:1.6.0-beta02 wird freigegeben. 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 freigegeben. Version 1.6.0-beta01 enthält diese Commits.

API-Änderungen

  • Der DragAndDropTarget-Modifikator übernimmt jetzt die empfangende DragAndDropTarget explizit und hat eine Lambda-Funktion, um eine Drag-and-drop-Sitzung zu aktivieren. Es gibt jetzt zwei Werksfunktionen für DragAndDropModifierNode. einen für den Empfang von Übertragungen und einen zum Übertragen von Daten (I69481)
  • maximumFlingVelocity wurde aktualisiert und als Gleitkommazahl dargestellt. Die Dokumentation wurde aktualisiert, um die Einheit maximumFlingVelocity klarer darzustellen. (I8adc7)
  • onDragAndDropStart in der DragAndDropModifierNode-Werkstatt wurde in acceptDragAndDropTransfer umbenannt.acceptsDragAndDropTransfer wurde dem Modifikator dragAndDropTarget hinzugefügt, um ihn aus einer Drag-and-drop-Sitzung zu akzeptieren. Dieses Lambda gibt ein realisierbares DragAndDropTarget zurück, wenn an einer Drag-and-drop-Sitzung interessiert ist. Andere Lambdas zur Verarbeitung von Drag-Ereignissen wurden dadurch ersetzt. Es wurde eine DragAndDropTarget-Factory-Funktion zum Empfangen von Drag-and-drop-Sitzungen hinzugefügt (Iebf3a).
  • Entfernte DragAndDropInfo als Typ DragAndDropModifierNode.drag akzeptiert jetzt Parameter für transferData, die Dekorationsgröße und das Drag-Dekorations-Lambda DrawScope

    DragAndDropTarget bietet Methoden für bestimmte Drag-and-drop-Ereignisse und ist keine einzelne abstrakte Methode.

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

    DragAndDropEventType wurde entfernt (I645b1)

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

  • Die API-Namen von durchlaufbaren Knoten werden verbessert, um sie verständlicher zu machen. (Ia4474)

  • OriginalText durch TextSubstitution ersetzen. (Ifa5a8)

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

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

  • Entfernte FocusDirection.In und FocusDirection.Out verwenden stattdessen FocusDirection.Enter und FocusDirection.Exit (I2f660)

  • Material SwipeToReveal APIs (für Karten und Chips) basieren jetzt auf einer Slot-basierten API (wie von Compose empfohlen) und nicht mehr auf Datenklassen-basierten Instanzen zum Erstellen dieser Slots. Bei dieser Änderung handelt es sich um eine funktionsgefährdende Änderung. In der Demo und dem Beispielcode finden Sie Beispiele zur Verwendung der neuen API. (Ia8943)

  • Der FontStyle(int)-Konstruktor wurde verworfen. Verwende stattdessen FontStyle.Normal oder FontStyle.Italic. (I66610)

  • Schnittstelle FontScalable wurde in FontScaling (Ie804a) umbenannt

Fehlerkorrekturen

  • In SoftwareKeyboardController.show() wird die Softwaretastatur nicht mehr angezeigt, wenn der Fokus nicht im Texteditor liegt. (I2165a, b/301477279)
  • Hardwaretaste-Aufwärts-Ereignisse für Tasten, die in derselben Ansicht zum Schreiben kein Abwärts-Ereignis erhalten haben, werden jetzt ignoriert. (Ib37b4, b/305518328)
  • Renderer-Unterstützung für die Funktion „Sweep-Gradient“ in ArcLine wurde hinzugefügt. (I4d5bb)
  • Implementieren Sie Gleichheitszeichen und Hashcode für PageSize.Fixed. (Ie3ede, b/300134276)
  • Problem mit der Binärkompatibilität bei Änderung des Fenstereinsatzes beheben (Iee695)
  • Entfernen Sie die Materialkernschicht für den Material3-Chip bzw. die Material 3-Schaltfläche, da die Mikro-Benchmarks ohne diese eine bessere Leistung zeigen. (I55555)
  • TestDispatchers, die als effectContext zum Compose-Test übergeben wurden, werden jetzt zum Erstellen der Test- und Frame Clocks verwendet. (Ia7178)

Version 1.6.0-alpha08

18. Oktober 2023

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

API-Änderungen

  • Das Lambda „onDrawDragShadow“ von Modifier.dragAndDrawSource wurde in „drawDragDecoration“ umbenannt und der Größenparameter „DragAndDropInfo“ wurde in „dragDecorationSize“ umbenannt. (Id0e30, b/303904810)
  • Führen Sie SemanticsNodeInteraction.isDisplayed() und SemanticsNodeInteraction.isNotDisplayed() ein, um zu prüfen, ob ein übereinstimmender Knoten sichtbar ist, ohne ihn ebenfalls zu beanspruchen. (I2c196, b/302100809)
  • Für die Felder TextAlign, TextDirection, Hyphens und LineBreak von ParagraphTextStyle wurde ein spezieller Unspecified-Wert eingeführt, um null zu ersetzen. Da es sich bei diesen Klassen um Inline-Klassen handelt, vermeiden wir Boxen primitiver Typen, indem Nullwerte durch das Feld Nicht angegeben ersetzt werden. Konstruktoren, Getter und andere Methoden im TextStyle- und Absatzstil wurden aktualisiert, um die genannten Parameter als Nicht-Null-Typen zu akzeptieren. (I4197e, b/299490814)
  • Fügen Sie die GoogleFont-Überlastung zum Lesen einer GoogleFont aus XML hinzu. (If8f59)
  • LoremIpsum PreviewParameterProvider zu einem offenen Kurs gemacht. (I41bf5, b/266918816, b/300116360)

Fehlerkorrekturen

  • FontFamilyResolver verwendet jetzt Dispatchers.Main für Koroutinen für die Cache-Verwaltung. (Ie8dd9)
  • AndroidViewBinding entfernt jetzt synchron Fragment-Instanzen, die aufgeblasen wurden, indem ein FragmentContainerView in dein Layout als Teil von onRelease aufgenommen wird. Dazu wird commitNow anstelle des zuvor verwendeten commit verwendet. Auf diese Weise werden Probleme mit der Methode von Live Edit, bei der die Komposition nach Änderungen ersetzt wird, behoben. I58fbf

Version 1.6.0-alpha07

4. Oktober 2023

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

API-Änderungen

  • Zum Schreiben von Tests für benutzerdefinierte Texteditoren wurde PlatformTextInputMethodTestOverride eingeführt. (Id159b)
  • Fügt den Modifizierer dragAndDropSource für das Starten von Drag-and-drop-Sitzungen und dragAndDropTarget für den Empfang von Drag-and-drop-Sitzungen hinzu. (Ib7828, b/286038936)
  • ColorList- und ColorSet-Sammlungen, die Zuweisungen vermeiden, wurden hinzugefügt. (I744bd)
  • Temporäres Flag DisableNonLinearFontScalingInCompose zum Deaktivieren der nicht linearen Schriftskalierung hinzugefügt. Legen Sie DisableNonLinearFontScalingInCompose = true in Ihren Tests fest, wenn Sie Zeit für die Bereinigung benötigen. Dieses Flag wird in Compose 1.6.0-beta01 entfernt. (Ic9486)

Fehlerkorrekturen

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

Version 1.6.0-alpha06

20. September 2023

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

API-Änderungen

  • Zusätzliche Optimierungen an Material-Symbolen. (I3e08d)
  • Bietet die Möglichkeit, den Modifikatorbaum nach oben/unten zu durchsuchen, um ähnliche Knoten zu finden. (I2d234)
  • onRestoreFailed()-Callback zum focusRestorer()-Modifikator hinzugefügt (Ie1d43)
  • verschiedenen Grafik-APIs wurden androidx-Annotationen hinzugefügt, um ColorInt, FloatRange, IntRange, Size und weitere anzugeben. (Id65c8, b/290950582)
  • showSystemUi=true zur PreviewScreenSizes-Definition hinzufügen (Ib61d3)

Änderungen des Verhaltens

  • In der Funktion „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 großgeschrieben, bereits großer Text nimmt jedoch nur ein wenig zu. Außerdem werden die Zeilenhöhen, die in SP definiert wurden, automatisch proportional zur für die Skalierung von 100% vorgesehenen Höhe angepasst. Weitere Informationen finden Sie in den Best Practices für die Schriftskalierung. (I11518)

Version 1.6.0-alpha05

6. September 2023

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

API-Änderungen

  • Inhaltsaufnahme in AndroidComposeViewAccessibilityDelegateCompat aktivieren. (Ib2969)
  • Die Verschiebungsgeschwindigkeiten in Ansichtskomponenten wie ScrollView und RecyclerView sind auf ViewConfiguration.ScaledMaximumFlingVelocity begrenzt. Die Funktion „Schreiben“ enthält jetzt eine eigene Version von maximumFlingVelocity, die jetzt für Draggable gilt. (Ibf974)
  • Ein anfängliches Gerüst wird hinzugefügt, um Drag-and-drop-APIs auf Plattformen zu unterstützen. (If84ce)
  • deviceId zu RotaryScrollEvent hinzufügen (Iba3bf)
  • ui-tooling Devices API aktualisiert, um neuere Geräte einzubeziehen (Ib25b4)

Version 1.6.0-alpha04

23. August 2023

androidx.compose.ui:ui-*:1.6.0-alpha04 wird freigegeben. Version 1.6.0-alpha04 enthält diese Commits.

API-Änderungen

  • Es wurde eine Methode zum Deaktivieren von ReusableComposition hinzugefügt. Dabei werden Beobachtungen entfernt, aber die Knoten bleiben erhalten. Die deaktivierte Zusammensetzung kann durch Aufrufen von setContent wieder aktiviert werden. (Ib7f31)
  • ReusableComposition-Schnittstelle zum Verwalten des Lebenszyklus und zur Wiederverwendung von Unterzusammensetzungen wurde hinzugefügt. (I812d1, b/252846775)
  • Modifier.focusGroup wurde zu stabilen APIs hochgestuft. (I7ffa3)
  • verschiedenen Grafik-APIs wurden androidx-Annotationen hinzugefügt, um ColorInt, FloatRange, IntRange, Size und weitere anzugeben. (I70487, b/290950582)
  • Die ColorFilter API wurde aktualisiert, damit sie konkrete abgeleitete Typen hat, um die Überprüfbarkeit von Parametern zu verbessern. (I5fe29)
  • Einführung der Bibliothek „wear-tooling-preview“ zur Auflistung gültiger Wear-Geräte, die für UI-Vorschauen verwendet werden können (Ib036e)
  • Die FontScalable-Schnittstelle wurde erstellt, um den Schriftskalierungsteil der Dichte-Schnittstelle zu verarbeiten. I2cf3f.

Version 1.6.0-alpha03

9. August 2023

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

API-Änderungen

  • Neuer Typ von Betritts-/Ausgangsübergang, der den Inhalt basierend auf der Größe des animierten Containers während der Eingabe- und Exit-Animation skaliert. LookaheadScope Die Oberfläche und der Spaß der zusammensetzbaren Funktion sind jetzt stabil. (Ifb2ce)
  • Unterstützung für die Konfiguration von privateImeOptions (Idb772) hinzugefügt

Fehlerkorrekturen

  • PopupPositionProvider.calculatePosition aktualisiert jetzt automatisch die Position des Pop-ups, wenn der in der Berechnung gelesene Status geändert wird. (I676a1, b/292257547)
  • Textfelder korrigiert, die die Tastatur anzeigen und bearbeitbar sind, wenn readOnly wahr ist. Außerdem wurde behoben, dass die Tastatur nicht angezeigt wurde, wenn readOnly im Fokus von „true“ zu „false“ geändert wurde. (I34a19, b/246909589)
  • Erweiterte Anwendung globaler Assertions für UI-Tests. (I1f90d)

Version 1.6.0-alpha02

26. Juli 2023

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

API-Änderungen

  • Es wurde eine Service Locator-Schnittstelle hinzugefügt, die von Implementoren von Composition implementiert werden kann und eine Implementierung von Composition ermöglicht, bei der an andere Composition-Lookups für die Kompositionsdelegierung die ursprüngliche Komposition delegiert wird. Dies sollte nicht als „directy“ bezeichnet werden und dient zum Erstellen experimenteller APIs in der Laufzeit, die aus umschlossenen Versionen von Composer zu finden sind, z. B. im UI-Modul. (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 korrekte CompositionLocal. (I4c364)
  • LookaheadLayout und LookaheadLayoutScope wurden für einige Releases eingestellt und sind jetzt entfernt. Die Ersatz-APIs sind LookaheadScope, die mit jedem Layout funktionieren können. (I12ac3)
  • SemanticsNodeInteraction.requestFocus wurde hinzugefügt, damit der Fokus bei Tests noch einfacher und leichter auffindbar ist. (Ie8722)
  • Experimentelle APIs zum Registrieren globaler Assertions hinzufügen, um sie in Zukunft zum Testen von Frameworks zu verwenden (I12d77)

Fehlerkorrekturen

  • Der erste Aufruf des update-Callbacks von AndroidView wird jetzt verschoben, bis die Ansicht angehängt ist. Er wird nicht mehr ausgeführt, wenn die Komposition angewendet wird, die das AndroidView einführt. Dadurch wird ein Fehler behoben, bei dem der update-Callback nicht ungültig wird, 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 freigegeben. Version 1.6.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Unterstützung für Lookahead in LazyList. Dadurch kann LazyList in der Lookahead-Karte alle Animationen (z.B. die Animation für das Element-Placement oder AnimatedVisibility) umgehen und die Größe und Position für alle untergeordneten Elemente berechnen. Nach dem Lookahead-Wert können untergeordnete Elemente von LazyList unabhängig von der Realität im Lookahead-Pass animiert werden.

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

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

includeFontPadding ist ein Legacy-Attribut, mit dem festgelegt wird, ob am Anfang der ersten und der letzten Zeile des Textes ein zusätzlicher Abstand eingefügt wird, damit Zeichen hinzugefügt werden können, die über oder unter den Basislinien des Textes liegen.

Wenn Sie diese Verfassen-Version aktualisieren, wird die Darstellung aller Texte auf Ihrer Benutzeroberfläche geändert, indem der zusätzliche Abstand in der ersten und letzten Zeile jedes angezeigten Textes entfernt wird.

Je nach Ihren Anforderungen an die Benutzeroberfläche und den verwendeten Schriftartmesswerten sollten die Änderungen minimal sein. Möglicherweise stoßen Sie jedoch auf folgende Blockierungen: - Fehlerhafte Screenshot-Tests. Korrigieren Sie bei Bedarf die Benutzeroberfläche und generieren Sie die goldenen Bilder neu. - Der Text ist etwas falsch ausgerichtet. Entfernen Sie alle benutzerdefinierten negativen Innenabstände oder fügen Sie sie hinzu, falls erforderlich.

Sie können includeFontPadding aktivieren, indem Sie für jeden Text PlatformTextStyle verwenden:

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

Du kannst includeFontPadding für alle deine Texte aktivieren, indem du deine Materialstile konfigurierst. Beachten Sie, dass die Parameternamen zwischen M2 und M3 variieren.

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

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

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

Wenn im Zusammenhang mit dieser Änderung Probleme auftreten, melden Sie diese über den Issue Tracker.

API-Änderungen

  • InputConnection#requestCursorUpdates (I0c69b) unterstützen
  • FocusRequester.saveFocusedChild und FocusRequester.restoreFocusedChild hinzugefügt (Ic557e, b/272302679, b/275157318)
  • Hinzufügen des ResourceResolutionException-Typs zu Wrappern von Werfen, die ausgelöst werden, wenn versucht wird, Bitmap-Assets mit einer Beschreibung des Asset-Pfads zu laden, der nicht geladen werden konnte. (I19f44, b/230166331, b/278424788)
  • Optimierte Zugänglichkeit für Leistungs- und Arbeitsspeicherzuweisung. (Iede48)
  • Es wurden semantische Attribute und Aktionen zur Unterstützung der Textübersetzung hinzugefügt. (I4a6bc)
  • Neues Attribut in IntrinsincMeasureScope und dessen Implementierungen (z.B. MeasureScope), das angibt, ob die aktuelle Messungskarte eine Lookahead-Karte ist. (I7a812)
  • Die DrawScope API wurde aktualisiert, um ein Retargeting auf einen anderen Canvas mit alternativer Dichte, Layoutrichtung und Größe zu ermöglichen.
  • DrawContext wurde aktualisiert, um die Konfiguration von Dichte und Layoutrichtung zu unterstützen und den Canvas konfigurierbar zu machen. (Ie1f9b, b/225408150)
  • Paragraph#fillBoundingBoxes wurde hinzugefügt, um Begrenzungsrahmen für Zeichen zu berechnen. (If30ee)
  • Eine Reihe von gemeinsamen MultiPreviews hinzugefügt (Ia5a27)

Fehlerkorrekturen

  • FocusTargetModifierNode-Schnittstelle hinzugefügt, mit der eine benutzerdefinierte FocusTarget erstellt werden kann. (I9790e)
  • Die fallback*-Parameter für den TextMeasurer-Konstruktor wurden in default* umbenannt. (I940a5)
  • SemanticsPropertyReceiver.performImeAction wurde in onImeAction und SemanticsActions.PerformImeAction in OnImeAction umbenannt. (I8e841)
  • Fügt ein Rad hinzu, um das Scrollen der Maus von einem Ziehen beim verschachtelten Scrollen zu unterscheiden (insbesondere in NestedScrollConnection). (Ie57e4)
  • asComposePaint API zum Ersetzen von toComposePaint hinzugefügt, da das zurückgegebene Objekt das ursprüngliche android.graphics.Paint (I22b4c) umschließt
  • Verwerfen Sie SemanticsProperties.imeAction und ersetzen Sie den Parameter durch den neuen Parameter SemanticsActions.performImeAction. (I4a587)
  • Die Auswahl per Maus wird jetzt unterstützt. Die berührungsbasierte Auswahl wird um Wort erweitert und wird um Zeichen verkleinert. (Ic0c6c, b/180639271)
  • Paragraph-Methoden, die früher AssertionError für Offsets außerhalb des gültigen Bereichs ausgelöst haben, geben jetzt IllegalArgumentException aus, wie es bei MultiParagraph der Fall ist. (I549d3, b/243338896)

Version 1.5

Version 1.5.4

18. Oktober 2023

androidx.compose.ui:ui-*:1.5.4 wird freigegeben. Version 1.5.4 enthält diese Commits.

Version 1.5.3

4. Oktober 2023

androidx.compose.ui:ui-*:1.5.3 wird freigegeben. Version 1.5.3 enthält diese Commits.

Fehlerkorrekturen

  • (b/301209788) TextField wendet bei der Fokussierung und Eingabe von koreanischer Eingabe manchmal vorherige Befehle an, was zu Zeichenverlusten führt.

Version 1.5.2

27. September 2023

androidx.compose.ui:ui-*:1.5.2 wird freigegeben. Version 1.5.2 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde eine Problemumgehung für Abstürze hinzugefügt, wenn über den Hintergrundthread auf die Scroll API für die Barrierefreiheit zugegriffen wurde.
  • Probleme mit nicht angehängten Knoten beheben, die der Semantikstruktur hinzugefügt wurden.

Version 1.5.1

6. September 2023

androidx.compose.ui:ui-*:1.5.1 wird freigegeben. Version 1.5.1 enthält diese Commits.

Fehlerkorrekturen

  • Textfelder korrigiert, die die Tastatur anzeigen und bearbeitbar sind, wenn readOnly wahr ist. Außerdem wurde behoben, dass die Tastatur nicht angezeigt wurde, wenn readOnly im Fokus von „true“ zu „false“ geändert wurde. (I34a19, b/246909589)

Version 1.5.0

9. August 2023

androidx.compose.ui:ui-*:1.5.0 wird freigegeben. 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 freigegeben. Version 1.5.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Ein Fehler wurde behoben, der auftrat, wenn SubcomposeLayout in movableContentOf() verwendet wurde.

Version 1.5.0-beta03

28. Juni 2023

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

Fehlerkorrekturen

  • Neue FocusTargetModifierNode-Schnittstelle, mit der ein benutzerdefiniertes FocusTarget erstellt werden kann (Ifb1d6)
  • Ein Problem mit zusammensetzbaren Funktionen aus Dialogfeldern und Pop-ups wurde behoben, das dazu führen konnte, dass die Größe des untergeordneten Fensters beim usePlatformDefaultWidth=true nicht wie erwartet angepasst wurde. (I112ee)

Version 1.5.0-beta02

7. Juni 2023

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

API-Änderungen

  • asComposePaint API hinzugefügt, um die Nutzung einer android.graphics.Paint-Instanz zu aktivieren, die in Compose verwendet werden soll

Fehlerkorrekturen

  • asComposePaint API zum Ersetzen von toComposePaint hinzugefügt, da das zurückgegebene Objekt das ursprüngliche android.graphics.Paint (I22b4c) umschließt

Version 1.5.0-beta01

24. Mai 2023

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

API-Änderungen

  • Zuweisungen bei Neuzusammensetzung, Farbanimationen und AndroidComposeView entfernt (Ib2bfa)
  • Fügt Hilfsfunktion „CacheDrawModifierNode()“ hinzu, um das Delegieren zu ermöglichen (Icf8f9)
  • Einführung der isLookingAhead-Property, auf die über MeasureScope zugegriffen werden kann, um Lookahead-Ergebnisse zu beobachten und bei Bedarf die Hauptkarte zu beeinflussen. (Ibf4c3)
  • Neues Semantikattribut traversalIndex, eine Gleitkommazahl, die verwendet wird, um die Knoten beim TalkBack-Durchlauf neu anzuordnen (niedrigere Werte kommen vor). (I9a81b, b/186443263)
  • isContainer-Eigenschaft der Semantik wird in isTraversalGroup (I121f6) umbenannt
  • ColorProducer hat jetzt operator fun invoke anstelle von produce (I4a9a2)
  • Fügen Sie die Path-Transformations-API hinzu, um Übersetzungs-/Skalierungs-/Rotationstransformationen auf Pfadobjekte anzuwenden. (I23434, b/233772232)
  • Die Methode von ColorProducer heißt produce. (I78bde)
  • toFrameworkColorSpace umbenennen in toAndroidColorSpace (I4f547)
  • Benennen Sie ColorLambda in ColorProducer um. (I73b1a)
  • APIs für die Konvertierung zwischen den Farbraumtypen „Android“ und „Compose“ einführen (Ie7db4, b/279979665)
  • BasicText wurde ein Farbparameter hinzugefügt, um die Textfarbe effizient zu animieren oder festzulegen. (Iffd88, b/246961787)
  • TextRange.constrain wurde in TextRange.coerceIn umbenannt. (I31be2)
  • Optimierter TextStyle.merge(...) mit vollständiger Parameterliste wurde hinzugefügt. (Iad234, b/246961787)
  • Viele Text APIs wie Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush) und MultiParagraph.paint(Brush) wurden stabilisiert. (I2f740, b/261581564, b/261581931, b/261561245)
  • Einstellung von PlatformTextStyle.includeFontPadding wurde aufgehoben. Ursprünglich wollten wir das Feld entfernen. Das Feedback zeigt jedoch, dass Entwickler diese Konfigurationsoption benötigen. Daher wird die Einstellung aus dem Feld entfernt (I98e96, b/277703184).
  • Öffentliche TextRange.constrain-Methode wurde hinzugefügt. (I97912)
  • UrlAnnotations in AnnotatedString Sekunden können jetzt über Bedienungshilfen wie TalkBack geöffnet werden. (If4d82, b/253292081)
  • Die Semantikaktion InsertTextAtCursor für Textfelder wurde hinzugefügt. (I11ed5)
  • Der LineHeightStyle.Alignment(topRatio)-Konstruktor wird zur stabilen API hochgestuft. (I79c32, b/261565383)
  • TextMeasurer und die zugehörigen APIs befinden sich nicht mehr in der Testphase. (I74647, b/261581753)
  • Die Semantikaktion PerformImeAction wurde hinzugefügt, um die IME-Aktion auf Texteditorknoten aufzurufen. (Ic606f, b/269633506)
  • PlatformTextInput APIs sind für Android nicht mehr experimentell. (I668eb)
  • Wertparametername für Enum.valueOf geändert (Ia9b89)
  • Weitere ausgelöste Ausnahmen von „valueOf“ (I818fe)
  • Es wurde eine neue Low-Level-PlatformTextInputAdapter API zum Erstellen benutzerdefinierter Texteingabeimplementierungen eingeführt, die direkt mit Plattform-APIs kommunizieren. (I58df4)
  • Der BlendMode-Parameter wurde den Methoden DrawScope.drawText, Paragraph.paint und MultiParagraph.paint hinzugefügt, um verschiedene Mischalgorithmen beim Zeichnen von Text auf Canvas zu unterstützen. (I57508)
  • Benennen Sie Font.MaximumAsyncTimeout in Font.MaximumAsyncTimeoutMillis um. Nur Umbenennen. I07af5
  • DPI-Werte von @Preview-Referenzgeräten aktualisiert (Id6151, b/254528382)
  • Füge brush und alpha-Parameter zu BasicText hinzu, um den Textpinsel effizient zu animieren oder festzulegen.
  • Definieren Sie kastenfreie Lambda-Typen für Float, Double, Long, Int, Short in :ui:ui-unit (I6f18d, b/246961787)

Fehlerkorrekturen

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

Externer Beitrag

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

Version 1.5.0-alpha04

10. Mai 2023

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

Neue Funktionen

  • Modifier.Node-Verbesserungen bei der Delegierung Die Delegierung aus einer DelegatingNode an andere Modifier.Node-Instanzen wurde erweitert. Dazu können die APIs delegate und undelegate verwendet werden. Vor dieser Änderung musste jede API vom delegierenden Knoten explizit an den delegierten Knoten delegiert werden. Nach dieser Änderung werden Knotenschnittstellen implizit delegiert, sofern sie nicht von DelegatingNode explizit überschrieben werden. (67352bc)

API-Änderungen

  • Stell NestedScrollModifierNode vor, eine NestedScroll Modifier.Node, an die delegiert werden kann. (I69513)
  • Der zusammensetzbaren Funktion AndroidViewBinding wurden die Parameter onReset und onRelease hinzugefügt, um die zusammensetzbare Funktion AndroidView zu spiegeln und die Unterstützung der Wiederverwendung von Ansichten mit ViewBinding zu ermöglichen. (I00b1e, b/276802519)
  • Die Compose Path API wurde aktualisiert, um Rücklaufvorgänge zu unterstützen, um Anwendungsfälle häufiger Pfadbearbeitung mit schnellerer Wiederverwendung zu unterstützen. (I7b797)
  • Optimierter TextStyle.merge(...) mit vollständiger Parameterliste wurde hinzugefügt. (Iad234, b/246961787)
  • Viele Text APIs wie Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush) und MultiParagraph.paint(Brush) wurden stabilisiert. (I2f740, b/261581564, b/261581931, b/261561245)
  • Einstellung von PlatformTextStyle.includeFontPadding wurde aufgehoben. Ursprünglich wollten wir das Feld entfernen. Das Feedback zeigt jedoch, dass Entwickler diese Konfigurationsoption benötigen. Daher wird die Einstellung aus dem Feld entfernt (I98e96, b/277703184).

Fehlerkorrekturen

  • Die Regression wurde behoben, bei der die Tastatur für Textfelder in Dialogfeldern nicht angezeigt wurde, die nicht von der zusammensetzbaren Funktion Dialog erstellt wurden. (I82551, b/262140644)

Version 1.5.0-alpha03

19. April 2023

androidx.compose.ui:ui-*:1.5.0-alpha03 wird freigegeben. 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 Lookahead-Animationen.

API-Änderungen

  • Mit dem neuen Standard-intermediateMeasurePolicy, der eine Messungsrichtlinie aus dem Lookahead-Pass wiederverwendet, können SubcomposeLayout-Untertypen ohne bedingte Slots wie Scaffold, TabRow und BoxWithConstraints standardmäßig mit Lookahead verwendet werden. (Id84c8)
  • Die für ein Android-Fenster erstellte Recomposer blockiert jetzt nur Aufrufe an withFrameNanos anstelle der gesamten Komposition, wenn sie eine ON_STOP-Benachrichtigung erhält. Das bedeutet, dass Fenster, die mit beendeten Aktivitäten verknüpft sind, weiterhin für Datenänderungen neu zusammengesetzt werden, aber die Animationen oder andere Aufrufe von withFrameNanos werden blockiert. (Id9e7f, b/240975572)
  • motionEventSpy wird zu stabil geändert. (Ic5ec4, b/261560988)
  • Öffentliche TextRange.constrain-Methode wurde hinzugefügt. (I97912)
  • PlatformTextStyle.includeFontPadding wurde nicht mehr eingestellt, um Entwickler zu ermutigen, diese Kompatibilitäts-API zu verwenden, um die Einstellung includeFontPadding auf „false“ zu ändern und zu testen. (I98e96, b/277703184)

Version 1.5.0-alpha02

5. April 2023

androidx.compose.ui:ui-*:1.5.0-alpha02 wird freigegeben. Version 1.5.0-alpha02 enthält diese Commits.

API-Änderungen

  • Neue SubcomposeLayout API, die eine zusätzliche Zwischen-Measure-Richtlinie für die Verarbeitung von Messungs-/Layoutlogik bei Lookahead-basierten Animationen verwendet. (I017d3)
  • PointerInput ist jetzt lazy und verwendet Modifier.Node für eine bessere Leistung. Weitere Informationen zur geringfügigen Verhaltensänderung (15dab9)
  • Ändert experimentelle APIs in stabile Versionen mit Schlüsselereignissen. (I9c7d8, b/261566839, b/261567368)
  • Ändert experimentelle APIs in PointerInputChange in stabile Version. (I1b543, b/261560988, b/261565762, b/261565749)
  • Bietet eine Möglichkeit, ein SuspendingPointerInputModifierNode für komplexere Modifier.Node-Implementierungen zu instanziieren. (Ic4933)
  • UrlAnnotations in AnnotatedString Sekunden können jetzt über Bedienungshilfen wie TalkBack geöffnet werden. (If4d82, b/253292081)
  • Es wurde eine API zum Abfangen von Hardwareschlüsseln hinzugefügt, bevor sie an die Softtastatur gesendet werden (I4f4c6, b/186800395).
  • Die Semantikaktion InsertTextAtCursor für Textfelder wurde hinzugefügt. (I11ed5)
  • Textbezogene Testaktionen (z.B. performTextInput) fordern jetzt mithilfe der Semantikaktion direkt den Fokus an, 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 freigegeben. Version 1.5.0-alpha01 enthält diese Commits.

API-Änderungen

  • Modifier.intermediateLayout erfordert jetzt keinen expliziten LookaheadScope. Der Messwertblock im intermediateLayout hat IntermediateMeasureScope als Empfänger, der praktische CoroutineScope, LookaheadScope und MeasureScope zur Verfügung stellt.(Ibe2e5)
  • LookaheadLayout wurde durch LookaheadScope ersetzt, das kein Layout mehr ist. Dadurch können Chid-Inhalte in einem LookaheadScope direkt über die MeasurePolicy des übergeordneten Elements gesteuert werden. (Ibe2e5)
  • Fügt Modifier.Node#coroutineScope hinzu, damit Modifier.Nodes Koroutinen starten können. (I76ef9)
  • Erlaubt Modifier.Nodes das Lesen von CompositionLocals durch Implementierung der CompositionLocalConsumerModifierNode-Schnittstelle. Ib44df
  • Weitergabe der Klasse „@veraltet“ an die Property. (I882d1)

Version 1.4

Version 1.4.3

3. Mai 2023

androidx.compose.ui:ui-*:1.4.3 wird freigegeben. Version 1.4.3 enthält diese Commits.

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem AndroidView möglicherweise nicht richtig dargestellt wurde, wenn es mit bestimmten Modifikatoren verwendet wurde. (I4dc77, b/274797771)
  • Ein Fehler bei der 2D-Fokussuche wurde behoben, der DropDown-Menüs betraf (b/276811828).
  • Es wurde ein Fehler in den Eigenschaften zum Ein- und Ausschalten des benutzerdefinierten Fokus behoben, bei dem nur der Eingabe-/Exit-Block ausgeführt wurde, als das Lambda zum ersten Mal aufgerufen wurde (b/277234245).
  • Eine Regression im Fokussystem, die beim Lesen von focusProperties zu einem Absturz führte, wurde behoben. (b/271324781, b/274897776)

Version 1.4.2

19. April 2023

androidx.compose.ui:ui-*:1.4.2 wird freigegeben. Version 1.4.2 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem AndroidView die Modifikatoren nicht korrekt wiederverwendet hat, was zu unerwartetem Verhalten und Abstürzen führte. (Ib67ee, b/275919849)
  • Ein Problem wurde behoben, bei dem die Tastatur für Textfelder in Dialogfeldern nicht angezeigt wurde, die nicht von der zusammensetzbaren Funktion Dialog erstellt wurden (I82551, b/262140644).

Version 1.4.1

5. April 2023

androidx.compose.ui:ui-*:1.4.1 wird freigegeben. Version 1.4.1 enthält diese Commits.

Fehlerkorrekturen

  • Behebt ein Problem mit ParentDataModifier, das AndroidView nicht betrifft (b/274797771)

Version 1.4.0

22. März 2023

androidx.compose.ui:ui-*:1.4.0 wird freigegeben. Version 1.4.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.3.0

  • Eine neue PinnableContainer API wurde hinzugefügt, mit der Lazy-Listenelemente angepinnt werden können, sodass sie nicht entfernt werden, wenn sie außerhalb des Bereichs gescrollt werden. Modifier.focusable() verwendet diesen Mechanismus beispielsweise, um das aktuell fokussierte Element anzupinnen. (Ib8881, b/259274257, b/195049010)
  • Das Fokussystem wurde mithilfe der neuen experimentellen Modifier.Node APIs neu geschrieben. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251830/251830}11, 251830}11, 251830}
  • In der Semantik-Eigenschaft „IsContainer“ auf Oberflächen hinzugefügt. Diese Eigenschaft wird in einer späteren Änderung verwendet, bei der die Durchquerungsreihenfolge anhand der semantischen Bedeutung von Elementen wie Oberflächen bestimmt wird. (I63379)
  • Die neue Rolle für Bedienungshilfen wurde hinzugefügt: DropdownList. Damit kannst du das Verhalten von TalkBack bei der Fokussierung von android.widget.Spinner replizieren. (I177e5, b/236159001)
  • Du kannst jetzt mit PlatformTextStyle(emojiSupportMatch) die Verarbeitung der Emoji-Unterstützung für einen einzelnen Absatz deaktivieren. (Ia7100, b/139326806)
  • In den Tests der Android Compose-UI werden jetzt Layoutkarten für jeden Frame ausgeführt, wenn Frames in den Leerlauf versetzt werden (z.B. über waitForIdle). Dies kann sich auf Tests auswirken, die auf einzelne Frames von Layoutanimationen zugreifen. (I8ea08, b/222093277)
  • TextStyle wurde ein experimentelles TextMotion hinzugefügt, um den Text entweder als Static(default) oder als animiert zu definieren. Verwende TextMotion.Animated, wenn Text skaliert, übersetzt oder gedreht werden soll. (I24dd7)

Version 1.4.0-rc01

8. März 2023

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

API-Änderungen

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

Fehlerkorrekturen

  • Die Semantikaktion SetText von BasicTextField aktualisiert jetzt den Textzwischenspeicher über denselben Codepfad wie IME-Aktualisierungen und die Testfunktionen (z.B. performTextReplacement).
  • Die Texttestfunktionen performTextClearance, performTextReplacement und performTextSelection verwenden jetzt SemanticsActions. (I0807d, b/269633168, b/269624358)

Version 1.4.0-beta02

22. Februar 2023

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

API-Änderungen

  • Die modifierElementOf() API wurde entfernt. Bitte Verlängere stattdessen die Erweiterung von ModifierNodeElement. (I2256b)
  • Es wurde ein neuer Modifier.Node.onReset()-Callback hinzugefügt, mit dem ein lokaler Status zurückgesetzt werden kann, wenn das Layout wiederverwendet wird, z. B. als Element von LazyColumn. FocusTargetModifierNode wurde korrigiert, sodass der fokussierte Status korrekt zurückgesetzt wurde. (I65495, b/265201972)
  • Der BlendMode-Parameter wurde den Methoden DrawScope.drawText, Paragraph.paint und MultiParagraph.paint hinzugefügt, um verschiedene Mischalgorithmen beim Zeichnen von Text auf Canvas zu unterstützen. (I57508)

Fehlerkorrekturen

  • Der Algorithmus für die Fokusreihenfolge der Bedienungshilfen wurde verbessert. Beispielsweise werden die oberen und unteren Balken häufiger zuerst bzw. letzte vorgelesen (74e9c5)

Version 1.4.0-beta01

8. Februar 2023

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

API-Änderungen

  • PinnableContainer.PinnedHandle.unpin() wurde in release() (I4667a) umbenannt
  • waitUntilNodeCount, waitUntilAtLeastOneExists, waitUntilExactlyOneExists und waitUntilDoesNotExist wurden als experimentelle API zu ComposeTestRule hinzugefügt. Die waitUntil API wurde erweitert, um einen beliebigen Abgleich und eine beliebige Anzahl von Knoten zu 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 in ktdoc verknüpft. (I16f29)

Fehlerkorrekturen

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

Version 1.4.0-alpha05

25. Januar 2023

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

API-Änderungen

  • Einführung neuer experimenteller Überlastungen für die Funktionen runComposeUiTest und create*ComposeRule, die CoroutineContext-Parameter akzeptieren. Der Kontext wird für die Testzusammensetzung und alle LaunchedEffect- und rememberCoroutineScope()-Aufrufe in der Komposition verwendet. (I10614, b/265177763)
  • Neue API zum Erfassen der 1-dimensionalen Geschwindigkeit hinzufügen (If5a82)
  • FocusRequester ist jetzt als @Stable gekennzeichnet. (I580ee)
  • Entfernen Sie eine experimentelle Annotation aus dem DialogProperties-Konstruktor, die einen usePlatformDefaultWidth-Parameter verwendet. (Ic4048)
  • Für die Berechnungsposition und Tangente bei einer Entfernung in einem Pfad wurde eine Funktion hinzugefügt – mit PathMeasure.getPosition() und PathMeasure.getTangent() (I3b47c)
  • Versehentlich zugänglicher öffentlicher Setter auf PlatformParagraphStyle wurde entfernt. (I07f47)
  • Mehr Typ-/Null-Zulässigkeit von Inline-/Verworfen-hidden-Funktionen (I24f91)
  • Fügen Sie AnnotatedString.hasStringAnnotations hinzu, um Annotationen mit Nullzuweisungen abzufragen. (I94dfe, b/246960758)
  • Für die TextMeasurer.measure-Funktion wurde eine neue Überlastung hinzugefügt, die ein String als Text annimmt. (I47b2d, b/242705342)
  • LineBreak- und Hyphens-APIs in TextStyle wurden auf die stabile Version umgestellt. (Ic1e1d)

Externer Beitrag

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

Version 1.4.0-alpha04

11. Januar 2023

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

Neue Funktionen

  • Eine neue PinnableContainer API wurde hinzugefügt, mit der Lazy-Listenelemente angepinnt werden können, sodass sie nicht entfernt werden, wenn sie außerhalb des Bereichs gescrollt werden. Modifier.focusable() verwendet diesen Mechanismus beispielsweise, um das aktuell fokussierte Element anzupinnen. (Ib8881, b/259274257, b/195049010)
  • Das Fokussystem wurde mithilfe der neuen experimentellen Modifier.Node APIs neu geschrieben. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251830/251830}11, 251830}11, 251830}
  • In der Semantik-Eigenschaft „IsContainer“ auf Oberflächen hinzugefügt. Diese Eigenschaft wird in einer späteren Änderung verwendet, bei der die Durchquerungsreihenfolge anhand der semantischen Bedeutung von Elementen wie Oberflächen bestimmt wird. (I63379)
  • Die neue Rolle für Bedienungshilfen wurde hinzugefügt: DropdownList. Dies kann verwendet werden, um das Verhalten von TalkBack's bei Fokussierung von android.widget.Spinner zu replizieren. (I177e5, b/236159001)
  • Du kannst jetzt mit PlatformTextStyle(emojiSupportMatch) die Verarbeitung der Emoji-Unterstützung für einen einzelnen Absatz deaktivieren. (Ia7100, b/139326806)
  • In den Tests der Android Compose-UI werden jetzt Layoutkarten für jeden Frame ausgeführt, wenn Frames in den Leerlauf versetzt werden (z.B. über waitForIdle). Dies kann sich auf Tests auswirken, die auf einzelne Frames von Layoutanimationen zugreifen. (I8ea08, b/222093277)
  • TextStyle wurde ein experimentelles TextMotion hinzugefügt, um den Text entweder als Static(default) oder als animiert zu definieren. Verwende TextMotion.Animated, wenn Text skaliert, übersetzt oder gedreht werden soll. (I24dd7)

API-Änderungen

  • Das Argument maxSize: IntSize in drawText wurde durch size: Size ersetzt, damit es inline mit anderen DrawScope-Funktionen ist. size ist standardmäßig auf Size.Unspecified gesetzt, wodurch das vorherige Standardverhalten nicht geändert werden sollte. Icd27d
  • Der eingestellte experimentelle Schriftartkonstruktor wurde entfernt. (I8a724, b/261435386)
  • Die Datenklasse Group des UI-Tools hat jetzt das Feld isInline. Dieses gibt an, ob die Gruppe zum Aufruf einer zusammensetzbaren Inline-Funktion vorgesehen ist. Wenn isInline den Wert true hat, erfolgt der Aufruf an eine zusammensetzbare Inline-Funktion. Der Wert kann jedoch bei Aufrufen von zusammensetzbaren Inline-Funktionen „false“ sein, die aus Modulen stammen, die mit einer Version des Compose-Compiler-Plug-ins kompiliert wurden, die keine Inline-Funktionsinformationen generiert. (Idb846)
  • Mehrere zuvor experimentelle APIs wurden auf die stabile Version umgestellt
  • Rotary Scroll Event API ist jetzt stabil (I42ad3, b/261561229)
  • FontVariation API ist jetzt stabil (I8779f, b/241016309)
  • Alle Font()-Konstruktoren sind jetzt eine stabile API (I5948b, b/261435386)
  • DeviceFontFamilyName ist jetzt stabil (I8b640, b/261435386)
  • Der AndroidFont-Konstruktor mit variationSettings ist jetzt eine stabile API und kann zum Erstellen neuer Arten von Schriftdeskriptoren verwendet werden. (I5adcc, b/261565807)
  • Die createFontFamilyResolver API ist jetzt stabil. Dies kann verwendet werden, um nicht abgefangene Ausnahmen beim asynchronen Laden von Schriftarten abzufangen. (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 freigegeben. Version 1.4.0-alpha03 enthält diese Commits.

API-Änderungen

  • ExperimentalComposeUiApi wird aus PointerIcon entfernt (I23af8)
  • Leite die Aktionen für Bedienungshilfen für Seiten ein: PageUp, PageDown, PageLeft, PageRight. Diese sind nur ab API 29 verfügbar. (Ida4ab)
  • Die Parameteransicht rememberNestedScrollConnection wurde von der Stammansicht auf die Hostansicht aktualisiert. (Ia5200)
  • Es wurde eine Modifier API hinzugefügt, um Scrollinformationen zu Ancestors abzufragen. (I2ba9d, b/203141462)
  • Wird in Clickable verwendet, um Interaktionen beim Drücken korrekt zu verzögern, wenn Touch-Gesten zu Scroll-Ereignissen werden können.
  • Es wurde behoben, dass Clickables die Wellen nicht korrekt verzögert, wenn sie innerhalb eines Scrollable ViewGroup verwendet wurde.
  • Schubladen und Tabellen wurden aktualisiert, um das Drücken korrekt zu verzögern, falls Touch-Gesten zu Scroll-Ereignissen werden können.
  • CompositingStrategy.Always wurde in Offscreen umbenannt, um anzugeben, dass der graphicsLayer immer in einem Zwischenpuffer (I47dc1) gerendert wird.
  • Layout-Überlastung mit mehreren Inhaltsbereichen ist jetzt stabil (I10566, b/248294649)
  • Es wurden neue experimentelle APIs hinzugefügt, PerfettoTrace.record {} und PerfettoTraceRule, um Perfetto-Traces (auch System-Traces genannt) im Rahmen eines Tests zu erfassen und Testverhalten und -leistung zu untersuchen. (I3ba16)
  • Bei UI-Tests, die eine Erstellungsregel verwenden, werden Fortsetzungen während withFrameNanos-Callbacks erst dann weitergeleitet, wenn alle Frame-Callbacks ausgeführt wurden. Dies entspricht dem Verhalten von „Compose“ bei normaler Ausführung. 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 bei dem die Logik außerhalb des Callbacks an die Funktionen übergeben wird, die innerhalb der Callbacks verschoben werden müssen. Beispiele finden Sie in den Änderungen am Animationstest in dieser Änderungsliste.
  • Dem TestMonotonicFrameClock-Konstruktor und der Werksfunktion wurde ein optionaler onPerformTraversals: (Long) -> Unit-Parameter hinzugefügt, um Code nach withFrameNanos-Callbacks auszuführen, aber bevor die Koroutinen der Aufrufer fortgesetzt werden. (Idb413, b/254115946, b/222093277, b/255802670)
  • EmojiCompat wurde zum Schreiben hinzugefügt (Ibf6f9, b/139326806)
  • Neuer Hintergrundparameter zu @Preview hinzugefügt, um dynamische Farben zu unterstützen (I9f512)

Fehlerkorrekturen

  • Benachrichtigungen zum Anwenden von Snapshots werden jetzt gesendet, nachdem Recomposer die Änderungen übernommen hat. (Iad6c0, b/222093277)
  • In captureToImage wurden Änderungen vorgenommen, um das Erfassen von Screenshots im Mehrfenstermodus zu ermöglichen. Dies ist nützlich für Screenshot-Tests, bei denen Compose PopUps verwendet werden. (I169c5)

Aktualisierungen von Abhängigkeiten

  • Die Benutzeroberfläche zum Schreiben und das Schreiben von Material hängen jetzt von Lebenszyklus 2.5.1 ab. (I05ab0, b/258038814)

Version 1.4.0-alpha02

9. November 2022

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

API-Änderungen

  • GraphicsLayerScope wurde aktualisiert, um die aktuelle Größe von graphicsLayer anzuzeigen. Dies ist nützlich, um graphicsLayer-Transformationen als Funktion der zusammensetzbaren Größe zu berechnen. (If8c43,b/181387080)
  • CompositingStrategy wurde eingeführt, um festzustellen, wann eine nicht sichtbare zusammengesetzte Ebene zum Rendern von graphicsLayer-Inhalten verwendet werden sollte. Bei „Automatisch“ wird das Standardverhalten beibehalten, das intern eine Ebene verwendet, wenn Alpha verwendet wird, oder ein RenderEffect/Overscroll. Immer wird immer einen nicht sichtbaren Zwischenspeicher einbringen, wobei ModulateAlpha keinen externen Puffer einsetzt und stattdessen jede der aufgezeichneten Zeichenanweisungen innerhalb der graphicsLayer moduliert. Bei der ModulateAlpha-Nutzung wird für RenderEffect/Overscroll-Nutzungen weiterhin ein nicht sichtbarer Zwischenspeicher verwendet (I25e82, b/256382834).
  • invalidateSubtree() wurde zu Modifier.Node hinzugefügt, um die Entwertung ganzer Hierarchien für Layout und Zeichnung zu ermöglichen. (I4bd90)
  • rememberNestedScrollInteropConnection in „stabile“ hochstufen. Es wurde die Möglichkeit eingeführt, eine Stammansicht an rememberNestedScrollInteropConnection zu übergeben. Dadurch kann die benutzerdefinierte Ansicht besser auf Einschränkungen beim Scrollen reagieren, insbesondere in nicht standardmäßigen Ansichten (z.B. ModalBottomSheetDialog). (I9e107)
  • Es wurde eine ObserverNode-Schnittstelle hinzugefügt, die von Modifier.Node-Implementierungen verwendet werden kann, die benachrichtigt werden müssen, wenn sich ein zuvor gelesener Wert geändert hat (I5728b, b/247716483).
  • Paint wurde ein neuer Konstruktor hinzugefügt, der einen nativen android.graphics.Paint akzeptiert. Außerdem wurde die Erweiterungsfunktion „toComposePaint()“ hinzugefügt, mit der ein vorhandenes natives Paint-Objekt in Compose Paint konvertiert wird. (Ica91b)
  • Neue FontFamily.Resolver.resolveAsTypeface zur Verwendung unter Android hinzufügen. (I8950b)
  • Fügen Sie ToolingState hinzu, damit Tools interne Status der zusammensetzbaren Funktion ändern können (Ie6614).
  • Refaktorierungstools zur besseren Unterstützung neu hinzugefügter Animationen (I8677b)
  • Der Parameter minLines wurde in Material und Material3 Text, TextField und OutlinedTextField hinzugefügt, mit denen die Mindesthöhe der Komponente in Bezug auf die Anzahl der Zeilen festgelegt werden kann (I4af1d).

Version 1.4.0-alpha01

24. Oktober 2022

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

API-Änderungen

  • Die neue Methode awaitEachGesture() für Gestendetektoren wurde hinzugefügt. Sie funktioniert ähnlich wie forEachGesture(), aber die Loop-over-Touch-Gesten funktionieren vollständig innerhalb des AwaitPointerEventScope, sodass Ereignisse zwischen den Iterationen nicht verloren gehen können.
  • forEachGesture() wurde zugunsten von awaitEachGesture() eingestellt, da hiermit Ereignisse zwischen Touch-Gesten verloren gehen können. (Iffc3f, b/251260206)
  • Das Recycling von barrierefreien Objekten wird in Androidx eingestellt. Unserer Erfahrung nach sind die Leistungsänderungen selbst in den ältesten unterstützten Versionen vernachlässigbar. (I0a961)
  • DrawStyle wurde als experimentelles Attribut zu TextStyle und SpanStyle hinzugefügt, um das Zeichnen von umrissenem Text zu ermöglichen. (If24b8, b/155421273)
  • AnnotatedString.Builder implementiert jetzt kotlin.text.Appendable. (I1a061, b/231030444)
  • AnnotatedString.Builder verfügt jetzt über eine append(AnnotatedString, start: Int, end: Int)-Methode, um einen Teilstring von AnnotatedString und die sich überschneidenden Stile anzufügen.
  • Der DrawStyle-Parameter wurde zu den Malfunktionen Paragraph und MultiParagraph hinzugefügt, mit denen umrissener Text gezeichnet werden kann. (Ic8102, b/155421273)

Externer Beitrag

  • Danke, dass du vighnesh TV-Geräte zur Vorschau hinzugefügt hast (Ie15cd).

Version 1.3

Version 1.3.3

11. Januar 2023

androidx.compose.ui:ui-*:1.3.3 wird freigegeben. Version 1.3.3 enthält diese Commits.

Fehlerkorrekturen

  • Behebung eines Absturzes, der manchmal unter Android 9 aufgetreten ist, wenn unter „Aktivität“ der Status der Ansicht „Schreiben“ gespeichert wurde. (I0b755, b/260322832)

Version 1.3.2

7. Dezember 2022

androidx.compose.ui:ui-*:1.3.2 wird freigegeben. Version 1.3.2 enthält diese Commits.

Fehlerkorrekturen

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

Version 1.3.1

9. November 2022

androidx.compose.ui:ui-*:1.3.1 wird freigegeben. Version 1.3.1 enthält diese Commits.

Version 1.3.0

24. Oktober 2022

androidx.compose.ui:ui-*:1.3.0 wird freigegeben. Version 1.3.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.2.0

  • Neue experimentelle API-Suite LookaheadLayout, die zuvor unmögliches Animationsverhalten ermöglicht
  • Neue experimentelle API-Suite Modifier.Node (leistungsstarke Alternative zu Modifier.composed)
  • Verbesserte Unterstützung für Fenstereinfügungen.
  • Konzentrieren Sie sich auf die Unterstützung von Steuerkreuzen und Hardwaretastatur in LazyLists.
  • Die maximal unterstützte Höhe in Dialogfeldern und Pop-ups wurde auf 8 dp reduziert (beeinflussende Änderung des Verhaltens bei einigen benutzerdefinierten Designsystemen – Begründung in den Versionshinweisen zu Betaversion 01).
  • Viele geringfügige, abwärtskompatible API-Verbesserungen
  • Viele Fehlerkorrekturen und Leistungsverbesserungen

Version 1.3.0-rc01

5. Oktober 2022

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

API-Änderungen

  • Es wurden neue experimentelle API-Bindestriche hinzugefügt, um die automatische Bindestriche im Text zu unterstützen (Iaa869).

Fehlerkorrekturen

  • Für DeviceFontFamilyName-Schriftarten werden die Variationseinstellungen wght und ital nicht standardmäßig konfiguriert. Stattdessen werden die Plattformeinstellungen für die geladene Typeface verwendet. (Ia7a6d, b/246989332)
  • LazyColumn-Speicherleck behoben: 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 freigegeben. Version 1.3.0-beta03 enthält diese Commits.

API-Änderungen

  • Fügen Sie Optionen zum Anpassen von Zeilenumbrüchen im Text hinzu. (I86907)
  • Das Argument size:IntSize mit constraints: Constraints in der Methode TextMeasurer.measure wurde geändert, um Einschränkungen für die Mindestbreite zu unterstützen. (I37530, b/242707525)

Fehlerkorrekturen

  • Die BackHandler API von AndroidX Activity funktioniert jetzt in einer zusammensetzbaren Funktion von Dialog. (I35342)

Version 1.3.0-beta02

7. September 2022

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

API-Änderungen

  • Es wurde eine experimentelle Überlastung für das Layout hinzugefügt, bei der eine Liste mit mehreren zusammensetzbaren Lambdas akzeptiert wird. Dies ermöglicht es, Messgrößen unterschiedlich zu bedrohen, die in verschiedene Lambdas eingefügt werden (Ic1b4e).

Änderungen an experimentellen Focus APIs:

  • FocusDirection.In und FocusDirection.Out wurden eingestellt und durch FocusDirection.Enter und FocusDirection.Exit ersetzt. (Ia4262, b/183746982)
  • Es wurden zwei neue Fokuseigenschaften hinzugefügt: Eingabe und Exit, um ein benutzerdefiniertes Verhalten für FocusManager.moveFocus(Enter) und FocusManager.moveFocus(Exit) anzugeben. (I5f3f9, b/183746982)
  • Du kannst jetzt FocusRequester.Cancel verwenden, um eine Fokusbewegung abzubrechen. FocusRequester.Cancel kann in den folgenden Fokuseigenschaften verwendet werden: oben, unten, links, rechts, rechts, weiter, vorheriger, Start, Ende, Eingabe und Beenden. (Ib300f)

Version 1.3.0-beta01

24. August 2022

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

Refaktorierungsknoten

Die Ebene, die Modifier/Modifier.Element-Instanzen verarbeitet und ihr Verhalten auf LayoutNodes koordiniert, wurde weitgehend refaktoriert. Aktuell handelte es sich um eine Refaktorierung, die keine Auswirkungen auf die öffentliche API eines der vielen Modifikatoren in Compose hatte. Die Änderung kann nur als Implementierungsänderung betrachtet werden. Trotzdem ist diese Änderung aus verschiedenen Gründen wichtig. (Ie4313)

Zusammenfassung der Änderungen

Die hinzugefügten experimentellen Modifier.Node APIs bieten eine Abstraktion, die die Aufrechterhaltung des Zustands auf einer Instanz ermöglicht, die mit dem Lebenszyklus des Layoutknotens beibehalten wird und pro Layoutknoten und pro Nutzung der entsprechenden Modifier.Element, die ihn erzeugt hat, zugewiesen wird.

Im Großen und Ganzen bietet diese Abstraktion einen alternativen Mechanismus, um zustandsorientierte Modifikatoren zu erzeugen, ohne die Mechanismen der Modifier.composed API zu verwenden.

Risiko

Diese Änderung ist strikt binär mit früheren Releases kompatibel und soll in Bezug auf beobachtbares Verhalten so weit wie möglich und sinnvoll sein. Allerdings gibt es nur wenige Subsysteme zum Erstellen dieser Refaktorierung, die nicht berücksichtigt wurden. Wahrscheinlich hat sich das Verhalten auf eine Weise geändert, die von unseren Tests nicht abgedeckt wurde und noch nicht gefunden und behoben wurde.

Bitte führen Sie ein Upgrade auf diese Version mit Vorsicht vor. Wenn Sie der Meinung sind, dass etwas schiefgelaufen ist, teilen Sie uns dies bitte mit.

Experimentelle APIs

Es wurden verschiedene experimentelle APIs hinzugefügt, die sich alle auf das neue Konzept des "Modifikatorknotens" beziehen. Modifier.Nodes werden erstellt als Ergebnis von

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

Änderung, die das Verhalten bricht

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

Die maximal unterstützte Höhe für Dialogfelder und Pop-ups zum Schreiben wurde von 30 dp auf 8 dp reduziert. Diese Änderung betrifft sowohl benutzerdefinierte Dialogfelder und Pop-ups auf der Benutzeroberfläche als auch Material. Diese Änderung wird vorgenommen, um einen Fehler bei der Barrierefreiheit in Android-Versionen unter S abzuschwächen und sicherzustellen, dass Bedienungshilfen in diesen Fenstern mit dem Inhalt des Dialogfelds oder Pop-ups interagieren können.

Sie sind nur von dieser Änderung betroffen, wenn Sie eine benutzerdefinierte Dialog- oder Pop-up-Implementierung mit einer Höhe von mehr als 8 dp erstellen. Ziehen Sie in Betracht, das Dialogfeld oder Pop-up deutlich anzuheben. Wenn Sie dieses neue Verhalten deaktivieren müssen, können Sie ein eigenes Dialogfeld oder Pop-up-Fenster mit der gewünschten Höheneinstellung erstellen. Dies wird nicht empfohlen, da die Barrierefreiheit beeinträchtigt werden könnte. Der Entwickler muss dafür sorgen, dass der untere Teil des Dialogfelds oder Pop-ups interaktiv und lesbar ist.

API-Änderungen

  • Problem behoben, bei dem painterResource bei Konfigurationsänderungen nicht aktualisiert wurde (I58e73, b/228862715)
  • Für rememberTextMeasurer sind keine FontFamily.Resolver-, Density- oder LayoutDirection-Parameter mehr erforderlich. Verwenden Sie den Konstruktor TextMeasurer, um benutzerdefinierte Werte für diese Parameter bereitzustellen. (Ia1da3)
  • Das Attribut DialogProperties.decorFitsSystemWindows wurde hinzugefügt, damit Dialogs WindowInsets unterstützen können. (I57742, b/229378542)
  • Schriftkonstruktoren wurden zurück in die ursprüngliche Kotlin-Datei verschoben, um die Binärkompatibilität aufrechtzuerhalten. Keine Veränderung gegenüber der letzten stabilen Version. (Ieb2f3)
  • Unnötige Operatoren wurden aus mehreren Gleichheitsdefinitionen entfernt. Diese Einstellung hat keine Auswirkungen. (I6c309)
  • FontVariation.Setting ist eine versiegelte Schnittstelle für zukünftige eingeschränkte APIs. (I11021, b/143703328)
  • CompositionGroup.findParameters zu SlotTree.kt hinzufügen. So können Tools Parameter für eine CompositionGroup abrufen, ohne die gesamte Slot-Tabelle parsen zu müssen. (I124fe)

Version 1.3.0-alpha03

10. August 2022

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

API-Änderungen

  • LayoutCoordinates.findRootCoordinates() ist jetzt öffentlich (I7fa37, b/204723384)
  • Eine experimentelle API zum Abrufen des LayoutCoordinates in der PlacementScope wurde hinzugefügt. So wissen Entwickler, wo im aktuellen Layout untergeordnete Elemente relativ zu ihrer Position platziert werden sollen. (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 verworfen und die Semantik-ID wurde nach LayoutInfo.semanticsId verschoben. (Iac808, b/203559524)
  • Resource Fonts unterstützt jetzt das Festlegen von Einstellungen für Schriftartvariationen (API 26 und höher). (I900dd, b/143703328)
  • Unterstützung variabler Schriftarten in DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • Schriftkonstruktoren akzeptieren jetzt eine Liste von FontVariation.Setting zum Konfigurieren von variablen Schriftarten auf O+-Geräten. (I11a9d, b/143703328)
  • Fügen Sie die FontVariation API zum Definieren und Verwenden von variablen Schriftarten hinzu. (I3c40c, b/143703328)
  • LineHeightStyle.Alignment-Konstruktor ist jetzt öffentlich (experimentell) (I4bbbe, b/235876330)
  • Absatz wird jetzt für Android und Computer erwartet|tatsächlich definiert. (Id387e, b/239962983)
  • Interface Paragraph ist jetzt die versiegelte Schnittstelle „Paragarph“. Es gibt keinen Anwendungsfall für das Ableiten von Unterklassen. Wir empfehlen Ihnen, sich an uns zu wenden, wenn Sie von dieser Änderung betroffen sind. (If5247, b/239962983)
  • Experimentelle Annotation wurde aus PlatformTextStyle und LineHeightStyle entfernt. (I64bef)
  • TextInputService.show|hideSoftwareKeyboard wird eingestellt. 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 ab SDK 33 die Berechtigung POST_NOTIFICATIONS gewährt werden muss. (Ie542e, b/238790278)

Version 1.3.0-alpha02

27. Juli 2022

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

API-Änderungen

  • Die neue Eigenschaft PointerInputChange#pressure wurde hinzugefügt, um den Druck abzurufen. (I45a5e, b/205164819)
  • rememberTextMeasurer wurde hinzugefügt, um TextMeasurer-Instanzen für die Zusammensetzung einfach zu erstellen und zu speichern. (I8d66e)
  • Rect, RoundRect und MutableRect unterstützen jetzt die Kotlin-Syntax in zum Aufrufen der contains-Funktion. (Ie42b0, b/238642990)
  • Entfernen Sie unnötige Funktionen aus KeyInjectionScope, da sie mit einfacheren Teilen der API ganz einfach implementiert werden können. Zu den Funktionen, die entfernt wurden, gehören pressKeys, keysDown und keysUp. (I81d77)
  • Überarbeitete Konstanten- und Parameternamen in KeyInjectionScope mit dem Suffix „Millis“, wobei die Einheiten dieser Konstanten und Parameter Millisekunden sind (Iabef5)
  • EditCommand wurde die Methode toStringForLog() hinzugefügt, um Probleme bei der Textbearbeitung zu beheben. (I53354, b/228862731)
  • Es wurde eine drawText-Erweiterungsfunktion für DrawScope hinzugefügt, die eine Möglichkeit bietet, Text mit mehreren Stilen auf zusammensetzbaren Funktionen und Modifikatoren zu zeichnen, die auf DrawScope wie Canvas und drawBehind angewendet werden. (I16a62, b/190787898)
  • Eine neue experimentelle API mit dem Namen TextMeasurer wird eingeführt, die unabhängig von der Compose-Laufzeit eine beliebige Berechnung des Textlayouts ermöglicht und identische Ergebnisse mit BasicText erzeugt. (I17101)
  • mapTree zu SlotTree.kt hinzufügen. So können Tools die SlotTree prüfen, ohne zuerst eine Kopie im Speicher zu erstellen, wie es bei AsTree der Fall ist. Für den Layout Inspector erzielen Sie damit eine Leistungsverbesserung um etwa Faktor 10. (I5e113)
  • Die Vorschau von „Compose Preview“ wurde so geändert, dass sie in binären Ausgabedateien gespeichert wird, damit Entwickler MultiPreview-Annotationen aus Bibliotheken schreiben und wiederverwenden können. (I85699, b/233511976)

Fehlerkorrekturen

  • Beim Hinzufügen von InputEventChange-Ereignissen zu Velocity Tracker werden jetzt Deltas statt Positionen berücksichtigt. Dadurch wird sichergestellt, dass die Geschwindigkeit für alle Fälle korrekt berechnet wird, auch wenn sich das Zielelement bewegt (Icea9d, b/216582726, b/223440806, b/227709803).
  • Das durch AnnotatedString.toUpperCase verursachte NPE, wenn Anmerkungen vorhanden sind, wurde behoben. (I0aca2, b/210899140)

Version 1.3.0-alpha01

29. Juni 2022

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

API-Änderungen

  • Neues LookaheadLayout, das einen Lookahead-Pass vor der tatsächlichen Messung bzw. dem tatsächlichen Layout unterstützt. Auf diese Weise kann das Layout bei Änderungen im Voraus berechnet werden. Gleichzeitig kann das Post-Lookahead-Maß bzw. das Layout die bereits berechnete Größe/Position verwenden, um die Größe und die Positionen in Bezug auf das Ziel zu animieren. SubcomposeLayouts werden noch nicht unterstützt, werden aber in einer zukünftigen Version verfügbar sein. (I477f5)
  • Optionaler Alpha-Parameter zum Pinselstil von TextStyle und SpanStyle hinzugefügt, um die Deckkraft des gesamten Text zu ändern. (Ic2fac, b/234117635)
  • Der Annotationstyp UrlAnnotation und die zugehörigen Methoden wurden eingeführt, um die Unterstützung von TalkBack-Links in AnnotatedStrings zu unterstützen. (I1c754, b/231495122)
  • Dienstprogrammfunktionen in die Laufzeit verschieben (I4f729)

Fehlerkorrekturen

Externer Beitrag

  • Neue API-WindowInfo.keyboardModifiers hinzugefügt, um ihren Status in zusammensetzbaren Funktionen oder über SnapshotFlow (Icdb8a) zu beobachten

Version 1.2

Version 1.2.1

10. August 2022

androidx.compose.ui:ui-*:1.2.1 wird freigegeben. Version 1.2.1 enthält diese Commits.

Fehlerkorrekturen

  • Nullpunkt im Inspector korrigiert (b/237987764)
  • Problem mit einer Klassenausnahme beim Speichern im Inspector behoben (b/235526153)

Version 1.2.0

27. Juli 2022

androidx.compose.ui:ui-*:1.2.0 wird freigegeben. Version 1.2.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.1.0

  • Verbesserungen beim Durchlauf mit Fokus:

    • Das fokussierte Scrollen in Lazy-Listen funktioniert jetzt mit der neuen BeyondBoundsLayout Core API
    • Neue APIs zur Anpassung des Verhaltens in FocusOrder und FocusProperties
    • Verbessertes Verhalten bei physischer Tastatur oder TV-Fernbedienung
  • Neue APIs für:

    • Fenstereinsätze
    • Haupt-Primitive für gestengesteuerte, unendliche und Layout-Animationen
    • GraphicsLayer-Funktionen, darunter RenderEffect
  • Viele Fehlerkorrekturen und Leistungsverbesserungen

Version 1.2.0-rc03

29. Juni 2022

androidx.compose.ui:ui-*:1.2.0-rc03 wird freigegeben. 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 freigegeben. 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 freigegeben. Version 1.2.0-rc01 enthält diese Commits.

API-Änderungen

  • Schnittstellen in compose-Bibliotheken werden jetzt mit den jdk8-Standardschnittstellenmethoden (I5bcf1) erstellt.
  • KeyInjectionScope wurden höherrangige Funktionen zum Drücken von Tasten hinzugefügt, während andere Tasten gedrückt oder aktiviert werden. Zu diesen Funktionen gehören withKeysDown, withKeysToggled usw. Außerdem wurden Eigenschaften hinzugefügt, mit denen geprüft wird, ob eine bestimmte Metataste gedrückt ist, z. B. isCtrlDown, um zu prüfen, ob eine der Tasten gedrückt ist. Informationen zu den einzelnen Funktionen finden Sie unter KeyInjectionScope. (I9f6cd, b/229831515)
  • Es wurde ein experimenteller OverscrollEffect eingeführt, der neben den Modifier.scrollable-Überlastungen, die diese zulassen, benutzerdefinierte Overscroll-Effekte ermöglicht.
  • Das experimentelle LocalOverScrollConfiguration wurde von foundation.gesture in das Foundation-Paket verschoben und in LocalOverscrollConfiguration umbenannt (If19fb, b/204650733).
  • Benennen Sie runComposeUiTestWithoutActivity {} in runEmptyComposeUiTest {} um, wodurch sie an createEmptyComposeRule() (I6fed7) angeglichen wird

Version 1.2.0-beta03

1. Juni 2022

androidx.compose.ui:ui-*:1.2.0-beta03 wird freigegeben. 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 Injection-Muster über Maus und Tastatur, z. B. das Klicken auf eine Maustaste bei gedrückter Metataste. (I4c8da, b/229831515)
  • Zusätzliche experimentelle Unterstützung für das Injizieren von Schlüsselereignissen. Verwenden Sie performKeyInput, um Schlüsselereignisse zu senden. Sie können auch während einer multimodalen Eingabegeste mit performMultiModalInput über das Attribut key von MultiModalInjectionScope gesendet werden. Eine Dokumentation der API finden Sie unter KeyInjectionScope. (Ic5000, b/229831515)
  • Füge eine neue GoogleFont.Provider.AllFontsListUri zum Abrufen der kanonischen Internetquelle von Google Fonts hinzu, die von Android unterstützt wird.
  • Verbesserte Fehlermeldungen, die erneut ausgegeben werden, wenn GoogleFonts beim Laden des Editors nicht geladen werden kann. (I0416c)

Fehlerkorrekturen

  • Beim Hinzufügen von InputEventChange-Ereignissen zum Velocity Tracker werden jetzt Deltas anstelle von Positionen berücksichtigt. Dadurch wird sichergestellt, dass die Geschwindigkeit für alle Fälle korrekt berechnet wird, auch wenn sich das Zielelement bewegt (I51ec3, b/216582726, b/223440806, b/227709803).
  • Die Einstellung „Show Layout Bounds“ wird jetzt direkt nach dem Umschalten über die Kachel für die Schnelleinstellungen auf zusammensetzbare Funktionen angewendet, ohne die Aktivität verlassen und noch einmal eingeben zu müssen. (I843d5, b/225937688)
  • Bei der Suche nach Bedienungshilfen-Strings wird das Laden der Schriftart nicht ausgelöst. Bisher wurde versucht, Schriftarten für StyleSpans zu laden, was zu Abstürzen geführt hat, wenn FontFamily.Resolver überschrieben worden wäre. (I4609d)
  • Das Drücken der Vorwärts-Löschtaste, wenn sich der Cursor am Ende eines Textfelds befindet, stürzt nicht mehr ab.
  • Die Konstruktorargumente von DeleteSurroundingTextCommand und DeleteSurroundingTextInCodePointsCommand dürfen jetzt nicht negativ sein. (Ica8e6, b/199919707)

Version 1.2.0-beta02

18. Mai 2022

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

API-Änderungen

  • Wiederverwendung von Funktionen in anderen Vorschautypen (I19f39)

Fehlerkorrekturen

  • ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer“ wurde in „DisposeOnDetachedFromWindowOrReleasedFromPool“ umbenannt, um besser darzustellen, wenn Entsorgungen erfolgen, und nicht nur, wenn das nicht der Fall ist. (If15ca)

Version 1.2.0-beta01

11. Mai 2022

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

Neue Funktionen

  • Dies ist die erste Betaversion von 1.2.

API-Änderungen

  • Es wurden experimentelle BeyondBoundsInterval hinzugefügt, die von benutzerdefinierten Implementierungen von LazyList verwendet werden können, wenn die Elemente über die sichtbaren Grenzen hinaus angeordnet werden (Ifabfb, b/184670295).
  • Schlüsselversionen von Modifier.composed sind jetzt stabile API (Ie65e4, b/229988420)
  • Die rememberNestedScrollConnection API wurde vereinfacht, um die aktuellen Ansichtsinformationen mithilfe von Kompositionslokalen abzurufen (I67ca7).
  • Die Annotation @ComposableTarget und die durch @ComposableTargetMarker markierten Annotationen können jetzt auf Dateiebene mit dem Präfix @file verwendet werden. Wenn Sie eine Zielanmerkung im Dateibereich verwenden, nimmt der Compiler an, dass alle zusammensetzbaren Funktionen in der Datei als Ziel für die zugehörige Anwendung vorgesehen sind. Mit @file:UiComposable wird beispielsweise deklariert, dass alle @Composable-Funktionen auf den Anwendungsprogramm „Compose UI“ ausgerichtet sind. Eine Funktion, die ein Targeting auf eine andere App vornehmen muss, muss explizit die Annotation der Zielmarkierung für die gewünschte App angeben. (I40804)
  • Es wurde eine neue experimentelle, plattformunabhängige Test-API eingeführt: ein interface ComposeUiTest und ein fun runComposeUiTest(block: ComposeUiTest.() -> Unit), mit denen Compose Ui-Tests ohne TestRule ausgeführt werden können. Um einen Test ohne ComposeTestRule auszuführen, musst du den Test als Lambda an runComposeUiTest bestehen und die Methoden und Mitglieder im Empfängerbereich ComposeUiTest verwenden, 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 AndroidComposeTestRule. Für noch mehr Kontrolle können Sie selbst ein class AndroidComposeUiTestEnvironment instanziieren.

    Die Desktop-Implementierung ist die class DesktopComposeUiTest, aber derzeit werden keine Desktop-spezifischen Ausführungsfunktionen angeboten.

    So kann ein Test von ComposeTestRule zu ComposeUiTest migriert werden (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()
        }
    }
    
  • Vorerst erweitern sich ComposeContentTestRule und ComposeTestRule nicht von ComposeUiTest. Das bedeutet, dass Erweiterungsfunktionen unter ComposeUiTest noch nicht auf der TestRule-Schnittstelle aufgerufen werden können. Wenn ComposeUiTest die stabile API nutzt, werden ComposeContentTestRule und ComposeTestRule von ComposeUiTest geändert. (Ib4e90)

  • LineHeightBehavior wird in LineHeightStyle umbenannt.

  • LineVerticalAlignment wird in LineHeightStyle.Alignment umbenannt.

  • Umbenennung von LineHeightTrim wird in LineHeightStyle.Trim umbenannt

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

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

  • Die Attribute trimFirstLineTop und trimLastLineBottom von LineHeightBehavior wurden in eine einzelne Aufzählung geändert: LineHeightTrim. LineHeightTrim haben Werte für vier Zustände, die durch zwei boolesche Werte definiert sind: FirstLineTop, LastLineBottom, Beide und Keine (Ifc6a5, b/181155707)

  • LineHeightBehavior wurde TextStyle und ParagraphStyle hinzugefügt. Mit LineHeightBehavior wird festgelegt, ob die Zeilenhöhe oben und unten in der letzten Zeile angewendet wird. Außerdem definiert sie die Ausrichtung der Linie im von TextStyle(lineHeight) angegebenen Bereich.

    Es ist beispielsweise möglich, ein ähnliches Verhalten zu erhalten, das CSS über LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false) definiert.

  • trimFirstLineTop, trimLastLineBottom-Konfigurationen funktionieren nur dann korrekt, wenn includeFontPadding „false“ ist. (I97332, b/181155707)

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

Fehlerkorrekturen

  • Die PointerInputChange::copy-Dokumentation gibt jetzt korrekt an, dass es sich um eine oberflächliche Kopie handelt. I182f5
  • Auslassungspunkte werden unterstützt, wenn die Höhe begrenzt ist und nicht in alle Textzeilen passt (Ie528c, b/168720622)
  • includeFontPadding ist standardmäßig aktiviert. Sie können das includeFontPadding-Objekt mit dem Attribut TextStyle.platformTextStyle deaktivieren. Demnächst werden wir das Standardverhalten ändern. Bis dahin können wir Verbesserungen der Zeilenhöhe (aosp/2058653) jedoch besser einbinden und Probleme mit TextField-Clippings beheben. (I01423, b/171394808)

Externer Beitrag

  • MouseInjectionScope.scroll(delta = someDelta) wird unter Android jetzt invertiert, wenn wir vertikal scrollen (wenn etwas Delta positiv ist, wird es nach unten gescrollt) (Ifb697, b/224992993)

Version 1.2.0-alpha08

20. April 2022

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

API-Änderungen

  • Die pluralStringResource-Funktionen wurden als experimentell gekennzeichnet, um eine weitere Entwicklung zu ermöglichen und eine bessere Internationalisierung zu ermöglichen. (If24e4)
  • „Absatz“ und „MultiParagraph“ akzeptieren jetzt den Parameter „Constraints“. Das Übergeben von Constraints.maxHeight ist im Moment kein Vorgang, ermöglicht aber in Zukunft eine Berechnung, z. B. die Auslassung basierend auf der Höhe. (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() akzeptiert jetzt eine benutzerdefinierte MutableSet-ähnliche Klasse, in die keine neuen Elemente hinzugefügt werden können. Icd314
  • PointerIcon ist jetzt eine @Stable-Schnittstelle (I9dafe).
  • Der teilweise Verbrauch (Position unten ODER unten) wurde in PointerInputChange eingestellt. Mit consume() können Sie die Änderung vollständig übernehmen. Mit isConsumed können Sie feststellen, ob eine andere Person die Änderung bereits übernommen hat.
  • PointerInputChange::copy() erstellt jetzt immer eine oberflächliche Kopie. Das bedeutet, dass Kopien von PointerInputChange verbraucht sind, sobald eine der Kopien verbraucht ist. Wenn Sie ein ungebundenes PointerInputChange erstellen möchten, verwenden Sie stattdessen den Konstruktor. (Ie6be4, b/225669674)
  • Aktivieren Sie die verschachtelte Scroll-Interoperabilität zwischen „Schreiben“ und „Ansicht“ in der Richtung „Schreiben“ > „Ansicht“. Das bedeutet, dass ein übergeordnetes Element in der Funktion „Compose“ verschachtelte Scrolldeltas aus einer verschachtelten Scrollansicht empfangen kann. (If7949, b/174348612)
  • Neues SemanticsProperty testTagsAsResourceId-Objekt, mit dem Compose den UIAutomator-Tests entspricht, die für das View-System entwickelt wurden. (I39c20)
  • Bei Verwendung von FontFamily.SansSerif werden alle verfügbaren Schriftstärken für Systemschriftarten unter Android angezeigt. Dadurch werden Fallback-Schriftarten wie Sans-Serif-Medium intern in API 21–28 verwendet. Dies ist eine Verhaltensänderung, da bisher nur die Gewichtungen 400 und 700 in den APIs 21–28 unterstützt wurden. (I380fe, b/156048036, b/226441992)
  • Absatz- und Mehrfachabsatz-Lehrkräfte haben die Positionsargumente vor optionalen Argumenten neu angeordnet. (Idafaa)
  • AndroidFont verwendet jetzt „typefaceLoader“ als Konstruktorparameter. (I2c971)

Version 1.2.0-alpha07

6. April 2022

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

API-Änderungen

  • Die neue Funktion "Snapshot.withoutReadObservation { ... }" wurde hinzugefügt. Damit können Nutzer die übergebene Lambda-Funktion ausführen, ohne die Änderungen der Statuswerte zu abonnieren, die während dieses Blocks gelesen werden. Das kann in Anwendungsfällen nützlich sein, in denen Sie von den Snapshot-basierten Thread-sicheren Schreib-/Lesevorgängen profitieren, den Wert aber lesen möchten, ohne unnötige Neuzusammensetzung oder Neumessungen zu verursachen. (I9f365, b/214054486)
  • Mit der Eigenschaft der Erweiterung „consumeWindowInsets“ von „ComposeView“ können Entwickler die Nutzung von Android WindowInsets deaktivieren. Dadurch 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 in IME speziell einzubeziehen. (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 Ansichtsklassen. Das bedeutet, dass „Schreiben“ jetzt Scroll-Deltas an eine übergeordnete Datenansicht senden kann, die mit der Funktion „Gemeinsam arbeiten“ verknüpft ist. (I5d1ac, b/174348612)
  • FontFamily.Resolver wurde aktualisiert, um die systemweite Einstellung für Fett-Text-Bedienungshilfen zu integrieren (I6c1e7).
  • Font(AssetManager, String, ...) wurde verworfen und wurde durch Font(String, AssetManager, ...) ersetzt. Dies ist eine experimentelle API. (I1c7a4)
  • Fügen Sie den neuen Schriftartdeskriptor „Font(DeviceFontFamilyName)“ hinzu, um optional vom System installierte Schriftarten in Schriftart-Fallback-Ketten nachzuschlagen. (I30468, b/219754572)
  • Eine temporäre Kompatibilitätskonfiguration für includeFontPadding in TextStyle/ParagraphStyle wurde hinzugefügt. includeFontPadding kann über TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)) geändert werden. Dies ist eine temporäre Konfigurationsoption zur Aktivierung der Migration. Sie wird entfernt. (If47be, b/171394808)
  • Füge die GoogleFont.Provider.isAvailableOnDevice-Erweiterung hinzu, um Hilfe bei der Fehlerbehebung zu erhalten. (I64e31)
  • GoogleFont.Provider-Konstruktor zur Verwendung mit @ArrayRes hinzufügen (Ic5ee1, b/225984280)
  • Compose GoogleFont heißt jetzt Font(GoogleFont), ansonsten bleibt die API stabil. (I125f2)

Fehlerkorrekturen

  • Lint-Prüfung für Material/Grundgerüst hinzugefügt, um sicherzustellen, dass der innere Abstand verwendet wird (Ifb111)

Version 1.2.0-alpha06

23. März 2022

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

API-Änderungen

  • Die Semantikaktion RequestFocus wurde hinzugefügt, um den Fokus auf das fokussierbare Ziel anzufordern. (I17b71)
  • Das Parsen von Vektor-Drawables wurde aktualisiert, um die automatische Spiegelung zu unterstützen, um den Inhalt eines VectorPainter umzudrehen, wenn die aktuelle Layoutrichtung RTL ist. (I79cd9, b/185760237)
  • Schatten-/Umgebungsfarben wurden aus Gründen der API-Kompatibilität als nachgestellte Parameter von Modifier.graphicsLayer aktualisiert (I3f864, b/160665122)

  • Für GraphicsLayerScope wurden Standardimplementierungen für Schatten-/Inaktivfarben hinzugefügt, um abwärtskompatible API-Änderungen zu gewährleisten.

  • Ereigniszeit zu RSB-Ereignissen hinzugefügt (Ief8ae)

  • FocusOrder wurde mit FocusProperties zusammengeführt und focusProperties() verfügt jetzt über alle Funktionen von focusOrder(). FocusOrder und focusOrder() wurden verworfen. focusOrder(), das focusRequester akzeptiert, sollte durch einen focusRequester()-Modifikator in Kombination mit focusProperties() ersetzt werden. Dies ermöglicht eine stärkere Trennung von Belangen durch die Modifikatoren. (I601b7)

  • Das Upgrade von RecyclerView und Compose führt jetzt zu einer deutlich besseren Scrollleistung für RecyclerViews mit „Composer“-Ansichten als untergeordnete Elemente.

  • 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 ordnungsgemäß verarbeitet. (If7282)

  • Als ersten Schritt zum Hinzufügen der Funktion für die Mehrfachvorschau wird das Annotieren von Anmerkungsklassen mit @Preview unterstützt. Solche Anmerkungen könnten verwendet werden, um zusammensetzbare Methoden oder andere Annotationsklassen zu annotieren, die dann als indirekt mit der gegebenen @Preview-Datei annotiert werden könnten. (I12eff)

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

Fehlerkorrekturen

  • Die Vektorgrafik-APIs wurden aktualisiert, sodass die richtige zusammensetzbare Annotation @VectorComposable anstelle von @UiComposable verwendet wird (I942bc).
  • Crossinline aus AnnotatedString.Builder.withStyle entfernen (If84d5)

Externer Beitrag

  • compose-ui: Fügen Sie GraphicsLayerScope die Properties ambientShadowColor und spotShadowColor hinzu (I1ba1a, b/160665122).
  • Pluralressourcen 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 freigegeben. Version 1.2.0-alpha05 enthält diese Commits.

API-Änderungen

  • TextToolbar akzeptiert jetzt Lambda-Argumente anstelle von ActionCallback. (Ib2eb9, b/197950089)
  • Null-Zulässigkeit in Core und Appcompat für Tiramisu DP2 (I0cbb7) aktualisiert
  • Measured Interface gibt jetzt die Eigenschaft „parentData“ (I3313f) an
  • Modifier.onPlaced und die OnPlacedModifier-Schnittstelle sind jetzt stabil. (Ib5482)
  • Super! „Animation erstellen“ unterstützt jetzt die Einstellung „Animator-Dauerskala“ in den Entwickleroptionen. (I5a4fc, b/161675988)
  • Ein lokaler BeyondBoundsLayout-Modifikator wurde hinzugefügt (If8b51, b/184670295)
  • Text: includeFontPadding ist jetzt standardmäßig deaktiviert. Die Clipping-Probleme als Ergebnis von includeFontPadding=false werden behandelt und bei großen Skripts sollte keine Clipping-Funktion auftreten. (I31c84, b/171394808)

Fehlerkorrekturen

  • ComposeContentTestRule.setContent gibt jetzt ein IllegalStateException aus, wenn Sie versuchen, Inhalte festzulegen, obwohl bereits Inhalte vorhanden sind. (I888a5, b/199631334)
  • Ein Absturz wurde behoben, der durch Inhalte in der Zwischenablage beim Lesen aus der Zwischenablage auf Android-Geräten verursacht wurde. (I06020, b/197769306)
  • Verbessern Sie die RSB-Scrollbeispiele. (I6a596)

Externer Beitrag

  • Für die Verwendung von Kotlinx-Coroutinen 1.6.0 (I3366d) aktualisiert

Version 1.2.0-alpha04

23. Februar 2022

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

API-Änderungen

  • ComposableTarget, ComposableTargetMarker und ComposableOpenTarget wurden hinzugefügt. Damit können während der Kompilierungszeit Berichte dazu erstellt werden, wann eine zusammensetzbare Funktion aufgerufen wird, die auf eine Anwendung ausgerichtet ist, für die sie nicht vorgesehen ist.

    In den meisten Fällen können die Annotationen vom Compiler-Plug-in „compose“ abgeleitet werden, sodass die direkte Verwendung dieser Annotationen eher selten ist . Zu den Fällen, die sich nicht ableiten lassen, gehören das Erstellen und Verwenden einer benutzerdefinierten Anwendung, abstrakten zusammensetzbaren Funktionen (z. B. Schnittstellenmethoden), Feldern oder globalen Variablen, die zusammensetzbare Lambdas sind (lokale Variablen und Parameter werden abgeleitet), oder die Verwendung von ComposeNode oder einer zugehörigen zusammensetzbaren Funktion.

    Bei benutzerdefinierten Anwendungen müssen die zusammensetzbaren Funktionen, die ComposeNode oder ReusableComposeNode aufrufen, eine ComposableTarget-Annotation für die Funktion und alle zusammensetzbaren Lambda-Parametertypen hinzufügen. Es empfiehlt sich jedoch, eine Annotation zu erstellen, die mit ComposableTargetMarker annotiert ist, und dann direkt die markierte Annotation anstelle von ComposableTarget zu verwenden. Eine zusammensetzbare Annotation, die mit ComposableTargetMarker gekennzeichnet ist, entspricht einer ComposbleTarget mit dem voll qualifizierten Namen der Attributklasse als Anwendungsparameter. Ein Beispiel für die Verwendung von ComposableTargetMarker finden Sie unter anroidx.compose.ui.UiComposable. (I38f11)

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

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

  • Asynchrones Laden von Schriftarten im Text unterstützen (I77057, b/214587005)

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

Fehlerkorrekturen

  • Die angegebenen FontFamily.Resolver werden an Unterzusammensetzungen wie ein Pop-up übergeben.
  • Die angegebenen Font.ResourceLoader werden an Unterzusammensetzungen wie ein Pop-up übergeben. (I48fa5)

Version 1.2.0-alpha03

9. Februar 2022

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

API-Änderungen

  • Die notifyFocusedRect-Methoden in TextInputSession und TextInputService wurden verworfen und werden nicht aufgerufen. Verwenden Sie stattdessen BringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874)
  • Einführung der Methode destroyDisplayListData in der Stub-Klasse RenderNode (I1e659, b/216660268)
  • Es wurde eine neue API hinzugefügt, mit der untergeordnete Elemente von SubcomposeLayout, die du vorbereitet hast, vorvermessen werden können. (I857ea)
  • movableContentOf wurde hinzugefügt, das ein zusammensetzbares Lambda in ein Lambda umwandelt, das seinen Zustand und entsprechende Knoten an einen neuen Ort verschiebt, an dem es aufgerufen wird. Wenn der vorherige Aufruf die Zusammensetzung verlässt, wird der Status vorübergehend beibehalten. Wenn ein neuer Lambda-Aufruf in die Zusammensetzung eingeht, werden der Status und die zugehörigen Knoten an den Ort des neuen Aufrufs verschoben. Wenn kein neuer Aufruf hinzugefügt wird, wird der Status dauerhaft entfernt und die Beobachter werden benachrichtigt.

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

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

  • createFontFamilyResolver(context) und createFontFamilyResolver(context, coroutineScope) wurden hinzugefügt, um neue FontFamily-Resolver außerhalb der Verwendung von „Compose“ zu erstellen.

  • „Paragraph“ und „MultiParagraph“ nehmen jetzt FontFamily.Resolver

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

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

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

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

  • AndroidFont wurde hinzugefügt, eine neue untergeordnete API zur Bereitstellung neuer Typen von Ressourcendeskriptoren für Schriftarten unter Android. Beispielsweise können Sie Schriftarten aus einem app-spezifischen Back-End laden, nach vorinstallierten Schriftarten auf dem Gerät suchen oder eine Schriftart aus einer Ressource laden, die nicht von den aktuellen Font Factorys bereitgestellt wird.

  • Die Font.ResourceLoaded API wurde erweitert, um das optionale und asynchrone Laden von Schriftarten zu unterstützen. Es wird nicht empfohlen, dass Anwendungsentwickler diese API direkt verwenden. Informationen zum Hinzufügen neuer Schriftarten findest du unter AndroidFont.

  • Die Erweiterungsfunktion Font.AndroidResourceLoader ermöglicht die Erstellung einer Font.ResourceLoader, wenn diese außerhalb der Zusammensetzung liegt.

  • Der loadingStrategy-Parameter wurde zu ressourcenbasierten Schriftarten hinzugefügt, um ein asynchrones Laden zu ermöglichen, wenn Ressourcenschriftarten auf herunterladbare XML-Schriftarten verweist. (Ie5aea, b/174162090)

  • Der Typeface(FontFamily)-Konstruktor wurde verworfen. Bisher wurden damit Schriftarten vorab geladen, was bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern kann. Bei herunterladbaren Schriftarten kann dieser Aufruf 10 Sekunden lang blockiert sein. Verwende stattdessen FontFamilyResolver.preload.

  • fontResource(FontFamily): Typeface wurde verworfen. Bisher wurden damit Schriftarten vorab geladen, was bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern kann. Verwenden Sie stattdessen FontFamilyResolver.preload (If8e7c, b/174162090)

  • Der SubcomposeLayoutState-Konstruktor, der maxSlotsToRetainForReuse akzeptiert, wurde verworfen. Stattdessen gibt es einen neuen Konstruktor, der SubcomposeSlotReusePolicy akzeptiert. Dies ist eine neue Schnittstelle, die eine genauere Kontrolle darüber ermöglicht, welche Slots für die zukünftige Wiederverwendung beibehalten werden sollen. (I52c4d)

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

  • AndroidComposeTestRule.AndroidComposeStatement wurde verworfen, das nicht in der öffentlichen API verfügbar sein sollte, und hat auch nichts gemacht. (Ibc46b)

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

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

  • Der globale Font Loader heißt jetzt FontFamilyResolver. (I4f773, b/174162090)

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

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

Fehlerkorrekturen

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

Version 1.2.0-alpha02

26. Januar 2022

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

API-Änderungen

  • Modifier.onRotaryScrollEvent() und Modifier.onPreRotaryScrollEvent() für Wear-Geräte mit rotierender Taste an der Seite hinzugefügt (I18bf5, b/210748686)
  • Fügen Sie die experimentelle View.createLifecycleAwareRecomposer-Erweiterung (I0cde6) hinzu

Externer Beitrag

  • PointerEvent.scrollDelta.y ist jetzt in Android invertiert. Wenn wir das Mausrad nach rechts neigen, 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 freigegeben. Version 1.2.0-alpha01 enthält diese Commits.

API-Änderungen

  • Eingestellt: FontFamily.canLoadSynchronously. Diese Eigenschaft hat keine semantische Bedeutung. (Ica5ef)
  • CompositionData wurde ein Identitätsfeld hinzugefügt, um im Layout Inspector invarianten IDs zu generieren. (Ic116e)
  • Wear OS-Geräte-IDs zur Liste der Vorschaugeräte hinzugefügt (I93232)

Aktualisierungen von Abhängigkeiten

  • Jetzt hängt der Kotlin-Code 1.6.10 ab.

Version 1.1

Version 1.1.1

23. Februar 2022

androidx.compose.ui:ui-*:1.1.1 wird freigegeben. Version 1.1.1 enthält diese Commits.

Fehlerkorrekturen

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

Version 1.1.0

9. Februar 2022

androidx.compose.ui:ui-*:1.1.0 wird freigegeben. Version 1.1.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.0.0

  • Stabile Unterstützung für den Overscroll-Effekt von Android 12
  • Verbesserungen bei der Größe von Berührungszielbereichen
    • Beachten Sie, dass in Compose 1.0 der Layoutbereich von Material-Komponenten erweitert wird, um die Material-Richtlinien für Barrierefreiheit im Hinblick auf die Größe des Berührungszielbereichs zu erfüllen. Beispielsweise wird das Berührungsziel der Schaltfläche auf eine Mindestgröße von 48 x 48 dp maximiert, auch wenn Sie eine kleinere Größe für die Schaltfläche festgelegt haben. Dadurch wird das Verhalten von „Compose-Material“ an das gleiche Verhalten wie Material Design-Komponenten angepasst, was beim Mischen von Ansichten und der Funktion „Compose“ zu einem einheitlichen Verhalten führt. Durch diese Änderung wird auch sichergestellt, dass beim Erstellen Ihrer Benutzeroberfläche mit Compose Material-Komponenten die Mindestanforderungen für die Barrierefreiheit des Berührungszielbereichs erfüllt werden.
  • Stabile Unterstützung für die Navigationsschiene
  • Eine Reihe von zuvor experimentellen APIs wird zu einer stabilen Version umgestellt
  • Unterstützung neuerer Versionen von Kotlin

Version 1.1.0-rc03

26. Januar 2022

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

Fehlerkorrekturen

  • Aktualisiert zur Unterstützung von Compose Material 1.1.0-rc03

Version 1.1.0-rc01

15. Dezember 2021

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

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, der zu fehlenden Scrollaktionen für Bedienungshilfen führte (I7cbfb).
  • SemanticsNodeInteraction.captureToImage() funktioniert jetzt auch, wenn HardwareRenderer.isDrawingEnabled() den Wert false hat. Dies wird für die Dauer des Aufrufs aktiviert (Idf3d0).

Version 1.1.0-beta04

1. Dezember 2021

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

Neue Funktionen

  • Für Kotlin-Kompatibilität aktualisiert 1.6.0

API-Änderungen

  • Null-Zulässigkeit in androidx.core.view bereinigt (I7078a, b/204917439)
  • Es wurden experimentelle APIs hinzugefügt, mit denen Nutzer PointerInputchange als Ganzes nutzen oder prüfen können, ob sie genutzt wurden. (I2e59d)
  • Bietet Unterstützung für Scrollrad-Ereignisse der Maus auf der UI-Ebene. (Ia14eb, b/198214718)
  • Fügen Sie experimentelle Modifier.composed-Überlastungen hinzu, die Schlüssel für den Vergleich auf Gleichheit und für das Überspringen von Optimierungen akzeptieren. (Ice799, b/205851704)
  • ComposeNotIdleException erweitert sich jetzt aus Exception anstatt direkt aus Throwable. Dies bedeutet, dass Catch-Klauseln, die Exception abfangen, jetzt möglicherweise ComposeNotIdleExceptions abfangen, was zuvor nicht der Fall war. (I9c217)

Fehlerkorrekturen

  • Text-Ziehpunkte wurden korrigiert, wenn sich die IME-Sichtbarkeit ändert. (I25f2e)

Version 1.1.0-beta03

17. November 2021

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

API-Änderungen

  • Es wurde ein neuer Modifikator "Modifier.onPlaced" hinzugefügt, damit Placement-Änderungen beobachtet werden können. Auf Grundlage der beobachteten Placement-Änderung können daher zusätzliche Änderungen am Offset des untergeordneten Modifikators vorgenommen werden. (I558fd)
  • InjectionScope.flush() und InjectionScope.dispose() wurden entfernt. Alle Ereignisse werden geleert und der Bereich entsorgt, wie zuvor am Ende der aufgerufenen Methode perform*Input(). (I2bed8)
  • MultiModalInjectionScope.Touch und MultiModalInjectionScope.Mouse wurden entfernt. Um Touch- und Mausereignisse für multimodale Gesten einzufügen, 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 freigegeben. Version 1.1.0-beta02 enthält diese Commits.

API-Änderungen

  • Es wurde eine experimentelle BringIntoView API hinzugefügt, mit der Sie eine Anfrage an Eltern senden können, damit diese scrollen können, um ein Element sichtbar zu machen (Ib918d, b/195353459).
  • Neue Animations-APIs zur Unterstützung von Tools. Insbesondere ermöglichen sie Tools zur Überprüfung der Animationen und ihrer Konfigurationen in einem Übergang. (I4116e)

Externer Beitrag

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

Version 1.1.0-beta01

27. Oktober 2021

androidx.compose.ui:ui-*:1.1.0-beta01 wird freigegeben. 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 diese scrollen können, um ein Element sichtbar zu machen (Ib918d, b/195353459).
  • Neue Animations-APIs zur Unterstützung von Tools. Insbesondere ermöglichen sie Tools zur Überprüfung der Animationen und ihrer Konfigurationen in einem Übergang. (I4116e)

Version 1.1.0-alpha06

13. Oktober 2021

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

API-Änderungen

  • ExperimentalComposeUiApi aus ViewRootForInspector und LayoutInfo.ownerViewId entfernen (I5c2e3)
  • Für das Layout wurde eine Überlastung ohne untergeordnete Elemente mit verbesserter Effizienz hinzugefügt (Ib0d9a).
  • InternalCompilerApi wurde aus den Composer-Methoden entfernt, die modulübergreifend aufgerufen werden müssen (I1aa0b).
  • SemanticsNodeInteraction.performSemanticsAction gibt jetzt das SemanticsNodeInteraction zurück, für das die Funktion aufgerufen wurde. I9e5db:
  • LocalInputModeManager CompositionLocal zur Erkennung von TouchMode/Nicht-TouchMode hinzugefügt. (I6a83c, b/175899786)
  • viewConfiguration: ViewConfiguration wurde zu LayoutInfo hinzugefügt, damit Nutzer z. B. bei einer Zeitüberschreitung beim langen Drücken den richtigen Wert erhalten. (I76ca6)
    • viewConfiguration: ViewConfiguration wurde zu InjectionScope hinzugefügt, damit Tests die Eingabeinjektion basierend auf Faktoren wie Zeitlimit beim langen Drücken oder Touch Slop anpassen können.
    • Die Standarddauer für langes Drücken und Doppeltippen für Berührungs- und Mauseingabe wurde so geändert, dass sie auf den Werten in InjectionScope.viewConfiguration basiert.
  • Implementierung von „ExposedDropdownMenu“ auf Grundlage von „ExposedDropdownMenuBox“ mit TextField und DropMenu darin (If60b2)
  • „cancelOnOutsideClick“ wurde zu PopProperties hinzugefügt und ersetzt die mittlerweile eingestellte Funktion „cancelOnClickOutside“. Die neue Eigenschaft empfängt die Klickposition und die Ankergrenzen und ermöglicht so eine genauere Kontrolle darüber, ob onDismissRequest aufgerufen werden soll oder nicht. So lässt sich beispielsweise verhindern, dass der Anker bei Berührungen ignoriert wird.
    • „updateAndroidWindowManagerFlags“ wurde zu „PopProperties“ hinzugefügt und bietet so eine einfache Kontrolle über die Flags, die vom Pop-up an den Android WindowManager übergeben werden. Der Parameter der Lambda-Funktion ist die Flags, die aus den PopProperties-Werten berechnet werden, die WindowManager-Flags ergeben, z.B. fokussierbar. Das Ergebnis der Lambda-Funktion ist die endgültigen Flags, die an den Android WindowManager übergeben werden. Standardmäßig bleiben „updateAndroidWindowManagerFlags“ die Flags, die anhand von Parametern berechnet wurden, unverändert. Diese API sollte mit Vorsicht verwendet werden, nur in Fällen, in denen das Pop-up sehr spezifische Verhaltensanforderungen hat. (I6e9f9)
  • Recomposer.state wurde verworfen 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 Ereignisse in der Warteschlange sofort leeren bzw. den Bereich entsorgen möchten. (Ifb73a)
  • performScrollToNode(matcher: SemanticsMatcher) wurde hinzugefügt, das einen scrollbaren Container zu dem Inhalt scrollt, der mit dem angegebenen Matcher übereinstimmt. (Ic1cb8)
  • In InjectionScope wird jetzt Density implementiert, sodass Sie problemlos zwischen px und dp in performTouchInput und Freunden konvertieren können. (I8fe1f)

Fehlerkorrekturen

  • In AndroidView werden jetzt LocalLifecycleOwner und ViewTreeSavedStateRegistryOwner an seine Ansicht weitergegeben. (I38f96, b/179708470)
  • Fehler bei WearOS-Wischbewegungen (WischenToVerwerfen) lassen sich manchmal nicht beheben, wenn Wischbewegungen nicht funktionieren. (I9387e)
  • Die Standardzeit zwischen eingefügten Eingabeereignissen wurde von 10 ms zu 16 ms geändert. Dadurch kann sich das Ergebnis von Tests ändern, bei denen Eingabegesten ausgeführt werden, z. B. eine bestimmte Wischbewegung. (I829fd)

Version 1.1.0-alpha05

29. September 2021

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

API-Änderungen

  • Unterstützung für Kommunikation zwischen Modifikatoren (Id5467, b/198826874)
  • PointerEventChange wurde um experimentelle Verlaufszeiger erweitert. (Ic1fd8, b/197553056, b/199921305)
  • density: Density und layoutDirection: LayoutDirection wurden zu LayoutInfo hinzugefügt. So können Nutzer von LayoutInfo die Abmessungen und die Position, die in LayoutInfo dargestellt werden, richtig interpretieren. (I002f1)
  • Experimentelle Unterstützung für das Einfügen von Mausereignissen wurde hinzugefügt. Verwenden Sie performMouseInput, um Mausereignisse zu senden, oder senden Sie Mausereignisse über das Attribut Mouse 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 von Bedienungshilfen für scrollbare Elemente (sowohl Lazy als auch nicht Lazy) in Bezug auf das Scrollen wurde korrigiert (I6cdb0).
  • TouchInjectionScope.swipeWithVelocity wurde verbessert. Es akzeptiert jetzt einen größeren Bereich von Eingabevariablen und schlägt Änderungen an der Eingabe vor, wenn keine Wischbewegung möglich ist (I40fbe, b/182477143).

Version 1.1.0-alpha04

15. September 2021

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

API-Änderungen

  • PointerEvent hat jetzt eine PointerEventType, die Hover-Ereignisse unterstützt. (I091fa)
  • Untergeordnete Elemente dürfen Zeigereingaben außerhalb der Zeigereingabegrenzen des übergeordneten Elements akzeptieren. Übergeordnete Aufrufe können diese Aufrufe mit dem Attribut „PointerInputScope.alwaysInterceptChildEvents“ (I9eae3, b/192479655) abfangen.
  • performGesture und GestureScope wurden verworfen und durch performTouchInput und TouchInjectionScope ersetzt. (Ia5f3f, b/190493367)
  • touchBoundsInRoot zu SemanticsNode hinzugefügt, die die Mindestgröße für Berührungszielbereiche enthält, damit Entwickler sicherstellen können, dass Berührungszielbereiche die Mindestanforderungen für die Barrierefreiheit erfüllen. (I2e14b, b/197751214)
  • Implementierung von Inspectable wiederholen (I927bc, b/191017532)
  • Parametername von „Inspectable“ wurde so geändert, dass der Parameter „Zusammensetzung“ entspricht (I3a482, b/191017532)
  • performTouchInput und TouchInjectionScope wurden als Ersatz für performTouchInput und TouchInjectionScope eingeführt und ebnete damit den Weg für andere Modalitäten (z. B. die Maus).

    TouchInjectionScope hat die gleichen 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, es gibt aber zwei kleine Details:

    1. Wenn ein Down-Ereignis gesendet wird, während Cursor verschoben wurden, ohne ein Verschiebungsereignis zu senden (mit anderen Worten, updatePointerTo() wurde verwendet, aber nicht move() und dann down() aufgerufen), wird bei der vorherigen Implementierung die Ereigniszeit nach vorne verschoben und ein Verschiebungsereignis gesendet, bevor das Down-Ereignis gesendet wird. Die neue Implementierung sendet weiterhin das Move-Ereignis, verschiebt die Ereigniszeit in diesem bestimmten Szenario jedoch nicht weiter.
    2. Beim Senden eines „Nach oben“-Ereignisses, während die Cursor verschoben wurden, ohne dass ein Verschiebungsereignis gesendet wurde (ähnlich wie oben), wird mit der vorherigen Implementierung die Ereigniszeit vorversetzt und ein Verschiebungsereignis gesendet, bevor das Aufwärtsereignis gesendet wird. Bei der neuen Implementierung ist dies nicht der Fall: Die neuen Positionen der Cursor werden nur über das Ereignis "up" widergespiegelt.

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

Fehlerkorrekturen

  • "Zuschneiden", um die Berührungszielgrenzen über den Clip-Bereich hinaus zu erweitern, um die Berührungszielbereiche zu minimieren. (I43e10, b/171509422)
  • Auf Android 12-Geräten wird Stretch-Overscroll unterstützt. (Iccf3c, b/171682480)

Version 1.1.0-alpha03

1. September 2021

androidx.compose.ui:ui-*:1.1.0-alpha03 wird freigegeben. Version 1.1.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Aktualisierung von „Compose“-1.1.0-alpha03 auf eine Abhängigkeit von Kotlin-1.5.30 wurde aktualisiert. (I74545)

API-Änderungen

  • Modifier.inspectable zum Umschließen anderer Modifikatoren hinzugefügt. (I1909b, b/191017532)
  • Die BlurredEdgeTreatment API wurde hinzugefügt, um Anwendungsfälle zum Unkenntlichmachen in häufiger verwendete Kombinationen von Clip-Flags und Kachelmodi zu vereinfachen. In den meisten Anwendungsfällen wird entweder unkenntlich gemachte Inhalte außerhalb der ursprünglichen Inhaltsgrenzen gerendert und Bereiche außerhalb dieser Grenzen mit transparentem Schwarz unkenntlich gemacht. Alternativ können Inhalte auf die Inhaltsgrenzen gesetzt werden und der nächstgelegene Rand für Unkenntlichmachungskerne verwendet werden, die über die Inhaltsgrenzen hinausgehen. (I6b4b7, b/166927547)
  • RenderEffect wird jetzt auch in der Desktopversion unterstützt. OffsetEffect und der Unkenntlichmacher-Modifikator wurde eingeführt, um in einem Teil der Kompositionshierarchie visuelle Effekte für die Unkenntlichmachung hinzuzufügen. (I0f6aa, b/166927547)
  • Die RenderEffect API wurde eingeführt, die optional in einem Modifier.graphicsLayer konfiguriert werden kann, um den Inhalt der Ebene selbst zu ändern. Damit lässt sich der Inhalt einer zusammensetzbaren und untergeordneten zusammensetzbaren Funktion innerhalb einer Kompositionshierarchie unkenntlich machen. (I47c4d, b/166927547)
  • AwaitPointerEventScope hat jetzt withTimeout() und withTimeoutOrNull() (I507f0, b/179239764, b/182397793).
  • Zur Gewährleistung der Zugänglichkeit wurde die Mindestgröße des Berührungszielbereichs zur Verwendung in der Semantik und der Zeigereingabe zu ViewConfiguration hinzugefügt. (Ie861c)
  • TileMode.Decal-Unterstützung hinzufügen, um das Edge-Verhalten für weichgezeichnete RenderEffects zu definieren (I7e8ed, b/166927547)
  • performScrollToIndex, performScrollToKey, hasScrollToIndexAction und hasScrollToKeyAction sind jetzt die stabile API (I142ae, b/178483889)
  • Eine Testmethode zum Abrufen der verkürzten Grenzen wurde hinzugefügt. (I6b28e)

Fehlerkorrekturen

  • Die Methode isBounded wurde aus BlurredEdgeTreatment entfernt, zugunsten der expliziten Prüfung, ob der Formparameter null ist. (I85d68)

Version 1.1.0-alpha02

18. August 2021

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

API-Änderungen

  • PointerEvent unterstützt jetzt den Status der Mausschaltfläche und des Modifikatorstatus der Tastatur. (I6310c, b/180075467)
  • Bei eingeschleusten Gesten wird jetzt die Zeit der MainTestClock als Quelle für die Zeit verwendet. Die aktuelle Zeit für eingefügte Ereignisse in performGesture wird mit der aktuellen Zeit der MainTestClock initialisiert. (Ifb364, b/192064452)
  • DpRect(DpOffset, DpSize)-Konstruktor hinzugefügt (I2cf16, b/194219828)
  • DpSize-Klasse hinzugefügt (I7abb1, b/194219828)

Fehlerkorrekturen

  • Die XML-Analyse von Vektorgrafiken wurde aktualisiert, um ColorStateLists als Stammfarbeneigenschaften für VectorDrawables zu unterstützen. (I86915, b/195668138)

Version 1.1.0-alpha01

4. August 2021

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

API-Änderungen

  • RelocationRequester.bringIntoView akzeptiert jetzt ein Rechteck als Parameter, mit dem ein Teil einer zusammensetzbaren Funktion sichtbar wird (Ice2c5, b/194330245).
  • AnimatedImageVector und die zugehörigen APIs befinden sich jetzt im neuen androidx.compose.animation:animation-graphics-Modul. (I60873)
  • Es wurde ein experimenteller Modifikator zur Verarbeitung von Umverteilungsanfragen hinzugefügt. (I65a97, b/178211874)
  • Einführung der BrushPainter API, um das Zeichnen eines beliebigen Pinsels in einem Painter zu unterstützen, ähnlich wie ColorPainter

    Die Brush API wurde aktualisiert, sodass sie einen integrierten Größenparameter hat, der in BrushPainter abgefragt wird (Ia2752, b/189466433).

  • Die DrawScope#drawImage-Methode, die Quell- und Zielrekte nutzt, um einen optionalen Parameter „FilterQuality“ zu verarbeiten, wurde aktualisiert. Dies ist nützlich für Pixelart, die verpixelt werden soll, wenn sie für pixelbasierte Grafiken hochskaliert werden. Die zusammensetzbare Funktion „BitmapPainter + Image“ wurde aktualisiert, sodass auch ein optionaler Parameter „FilterQuality“ verwendet wird (Ie4fb0, b/180311607).

  • Die GestureScope.advanceEventTime-Methode wurde hinzugefügt, um das Timing von Ereignissen in einer Geste besser zu steuern (Ibf3e2).

Fehlerkorrekturen

  • Um die Verkettung von Zeichenmodifikatoren besser zu unterstützen, sollte die Implementierung von „Modifier.paint“ „drawsContent“ aufrufen. Bisher wurde Modifier.paint für einen Blattknoten in der Modifikatorkette erwartet. Dadurch wird jedoch verhindert, dass er in einem zusammensetzbaren Container (z. B. Box) konfiguriert wird und keine zusätzlichen Dekorationen wie Modifier.paint().border() hinzugefügt werden. Wenn der Modifier.paint-Aufruf „drawContent“ nach dem Zeichnen des Inhalts des angegebenen Malers erfolgt, ist das Verhalten beim Modifikatormuster besser konsistent. (Ibb2a7, b/178201337, b/186213275)
  • Die Dialogfelder folgen nun dem Größenverhalten der Plattform. Setzen Sie usePlatformDefaultWidth auf „false“, um dieses Verhalten zu überschreiben. (Iffaed, b/192682388)
  • InfiniteAnimationPolicy nach :compose:ui verschoben (I5eb09, b/160602714)
  • Das Scrollen über semantische Aktionen für Lazy-Listen und reguläre Scroll-Komponenten ist jetzt animiert (Id9066, b/190742024).

Version 1.0

Version 1.0.5

3. November 2021

androidx.compose.ui:ui-*:1.0.5 wird freigegeben. Version 1.0.5 enthält diese Commits.

Fehlerkorrekturen

  • Ein Absturz-Tracking für abgeleiteteStateOf-Instanzen wurde behoben. (aosp/1792247)

Version 1.0.4

13. Oktober 2021

androidx.compose.ui:ui-*:1.0.4 wird freigegeben. Version 1.0.4 enthält diese Commits.

Aktualisierungen von Abhängigkeiten

  • Aktualisiert und hängt von Kotlin ab 1.5.31

Version 1.0.3

29. September 2021

androidx.compose.ui:ui-*:1.0.3 wird freigegeben. Version 1.0.3 enthält diese Commits.

Aktualisierungen von Abhängigkeiten

  • Aktualisiert und hängt von Kotlin ab 1.5.30

Version 1.0.2

1. September 2021

androidx.compose.ui:ui-*:1.0.2 wird freigegeben. Version 1.0.2 enthält diese Commits.

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

Version 1.0.1

4. August 2021

androidx.compose.ui:ui-*:1.0.1 wird freigegeben. Version 1.0.1 enthält diese Commits.

Aktualisierungen von Abhängigkeiten

  • Aktualisiert, sodass sie von Kotlin-1.5.21 abhängig sind.

Version 1.0.0

28. Juli 2021

androidx.compose.ui:ui-*:1.0.0 wird freigegeben. Version 1.0.0 enthält diese Commits.

Hauptfunktionen von Version 1.0.0

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

Bekannte Probleme

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

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

    Erhöhen Sie in der Datei build.gradle vorübergehend die minSdkVersion auf 24 oder höher. 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 freigegeben. Version 1.0.0-rc02 enthält diese Commits.

Fehlerkorrekturen

  • Die Dialogfelder folgen nun dem Größenverhalten der Plattform. Setzen Sie usePlatformDefaultWidth auf „false“, um dieses Verhalten zu überschreiben. (Iffaed, b/192682388)

Version 1.0.0-rc01

1. Juli 2021

androidx.compose.ui:ui-*:1.0.0-rc01 wird freigegeben. 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 wurde in PopupProperties in usePlatformDefaultWidth umbenannt. (I05710)
  • Für Dialogfelder kann jetzt die gesamte Bildschirmbreite verwendet werden. (I83929, b/190810877)
  • Zusätzliche experimentelle Unterstützung für HSV- und HSL-Farbdarstellungen. (Id7cf8, b/180731008)

Änderungen des Verhaltens

  • Für das Zusammenstellen-@Preview ist jetzt ein LocalActivityResultRegistryOwner verfügbar, mit dem Sie zusammensetzbare Funktionen, die APIs wie rememberLauncherForActivityResult() verwenden, als Vorschau angezeigt werden können, die von diesem Inhaber abhängig sind. (Ib13d1, b/185693006)
  • Für die Funktion „Compose“ @Preview gibt es jetzt eine LocalOnBackPressedDispatcherOwner, mit der Sie zusammensetzbare Funktionen, die APIs wie BackHandler verwenden und von diesem Inhaber abhängig sind, als Vorschau ansehen können. (Ia1c05, b/185693006)

Fehlerkorrekturen

  • InfiniteAnimationPolicy nach androidx.compose.ui:ui verschoben (I5eb09, b/160602714)
  • animateImageVector 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 freigegeben. Version 1.0.0-beta09 enthält diese Commits.

API-Änderungen

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

Fehlerkorrekturen

  • Die Schlüsselkonstanten sind vorerst @ExperimentalComposeUiApi. Durch die Verarbeitung von Code können vor der Stabilisierung private Konstanten deklariert werden. (Ia5d48)
  • Compose-Tests können jetzt in Robolectric ausgeführt werden. Bisher wurden folgende Einschränkungen festgestellt:
    • Es gibt keine native Bitmap, sodass ImageBitmap() zu einer NullPointerException führt.
    • Es gibt keine Zeichnung, sodass captureToImage() auf unbestimmte Zeit auf die nächste Zeichnung wartet (d.h., sie wird deaktiviert).
    • Es ist keine Schriftart geladen, daher wird der Text falsch gemessen. Alle Zeichen haben eine feste Höhe von etwa 20 Pixel und eine Breite von 1 Pixel.
    • ComposeTestRule.waitUntil {} führt den Hauptthread nicht aus, während er wartet, sodass er praktisch identisch mit ComposeTestRule.mainClock.advanceTimeUntil {} ist. In Zukunft sind weitere Einschränkungen zu erwarten. (I284fa)

Hinzugefügte Profilregeln

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

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

Was sind Profilregeln?

  • Profilregeln für eine Bibliothek sind in der Textdatei baseline-prof.txt im src/main oder einem entsprechenden Verzeichnis angegeben. In der Datei ist eine Regel pro Zeile angegeben, wobei eine Regel in diesem Fall ein Muster für den Abgleich mit Methoden oder Klassen in der Bibliothek ist. Die Syntax für diese Regeln ist eine Obermenge des menschenlesbaren ART-Profilformats, das bei Verwendung von adb shell profman --dump-classes-and-methods ... verwendet wird. Für die Ausrichtung auf Methoden oder Klassen stehen zwei Regeln für diese Regeln zur Verfügung.

  • Eine Methodenregel hat das folgende Muster:

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

    <CLASS_DESCRIPTOR>
    
  • In diesem Fall ist <FLAGS> mindestens eines 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 Rückgabetypen der Methode. Die Methode fun isPlaced(): Boolean für LayoutNode hat beispielsweise die Signatur isPlaced()Z.

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

Wozu dienen die Regeln?

  • Eine Methode mit dem Flag H gibt an, dass diese Methode eine "heiße" Methode ist und im Voraus kompiliert werden sollte.

  • Eine Methode mit dem Flag S gibt an, dass es sich um eine Methode handelt, die beim Start aufgerufen wird und im Voraus kompiliert werden sollte, um Kosten für Kompilierung und Interpretation der Methode beim Start zu vermeiden.

  • Eine Methode mit dem Flag P gibt an, dass es sich um eine Methode handelt, die nach dem Start aufgerufen wird.

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

So funktioniert's

  • Bibliotheken können diese Regeln definieren, die in AAR-Artefakte verpackt werden. Wenn dann eine App erstellt wird, die diese Artefakte enthält, werden diese Regeln zusammengeführt und die zusammengeführten Regeln verwendet, um ein kompaktes binäres ART-Profil zu erstellen, das für die App spezifisch ist. ART kann dieses Profil dann bei der Installation der App auf Geräten nutzen, um vorab eine bestimmte Teilmenge der Anwendung zu kompilieren und so die Leistung der Anwendung, insbesondere die erste Ausführung, zu verbessern. Dies hat keine Auswirkungen auf Anwendungen, die debuggen werden können.

Version 1.0.0-beta08

2. Juni 2021

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

API-Änderungen

  • Die NestedScrollSource-Enum wird durch eine Inline-Klasse ersetzt. (Ie321b, b/187055290)
  • FocusManager.clearFocus(forcedClear = true) wurde in FocusManager.clearFocus(force = true) (Ia0c41) umbenannt
  • Die Verwendung von Aufzählungen wurde auf Inline-Klassen umgestaltet, um Probleme mit Vollständigkeit bei Anweisungen zu vermeiden, wenn neue Aufzählungswerte hinzugefügt werden. (I2b5eb)
  • @ExperimentalComposeUiApi aus PopupProperties entfernen. (I01fa6)
  • PointerType wurde von einer Aufzählung in eine Inline-Klasse geändert (If5058)
  • Die Attribute „ContentDescription“ und „Text“ sind keine einzelnen Werte mehr, sondern Listen. Auf diese Weise können sie unverändert zusammengeführt werden, anstatt Verkettungen. 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-Enum wird durch eine Inline-Klasse ersetzt. (I73045, b/187055290)
  • FocusState-Enum durch eine FocusState-Schnittstelle ersetzt (Iccc1a, b/187055290)
  • ImeAction-Enum wird durch eine Inline-Klasse ersetzt. (I18be5, b/187055290)
  • PlaceholderVerticalAlign wird in eine Inline-Klasse konvertiert. (If6290)
  • „TextUnitType“ ist jetzt eine Inline-Klasse. (I4cba9)
  • AnnotatedString.withAnnotation-Funktionen heißen jetzt ExperimentalTextApi und nicht ExperimentalComposeApi. (I0cd0a)
    • Der TextUnit-Konstruktor mit TextUnitType ist jetzt „ExperimentalTextApi“ anstelle von „ExperimentalComposeApi“.

Fehlerkorrekturen

  • Der in der Betaversion 07 eingeführte Fehler, durch den LazyColumn/Row-Elemente nach dem Scrollen teilweise angezeigt wurden, wurde behoben (I8c9ac, b/188566058).
  • detectDragGesures, detectVerticalGestures und detectHorizontalGestures nutzen jetzt die Positionsänderung automatisch. Ein Aufruf von change.consumePositionChange in den onDrag-Callbacks ist nicht mehr erforderlich (I42fc4, b/185096350, b/187320697).
  • LayoutModifiers, die Ausrichtungslinien bereitstellen, wurden korrigiert. Ein Fehler, der dazu führte, dass das übergeordnete Element nicht neu gemessen wurde, als die Ausrichtungslinien der untergeordneten Elemente geändert wurden, wurde behoben. (I4401f, b/174315652)
  • Modifier.onGloballyPositioned() wurde geändert, um nach Anwendung aller Modifikatoren die Koordinaten dieses Modifikators in die Ausgabe aufzunehmen, nicht die Layoutkoordinaten. Das bedeutet, dass sich jetzt die Reihenfolge der Modifikatoren darauf auswirkt, welche Koordinaten gemeldet werden. (Ieb67d, b/177926591)

Version 1.0.0-beta07

18. Mai 2021

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

API-Änderungen

  • ViewRootForInspector-Schnittstelle zur Verwendung im Inspector (Ib70df) hinzugefügt
  • SubcomposeLayoutState unterstützt jetzt das Festlegen der Anzahl wiederverwendbarer Slots. Das Layout hält diese Anzahl von Slots aktiv, anstatt sie zu verwerfen, um den Slot beim nächsten Mal wiederzuverwenden, wenn wir einen neuen benötigen (Ieb981).
  • „KeyEventType“ wird durch eine Inline-Klasse ersetzt. (Id670a, b/187055290)
  • Die FocusDirection-Enum wird durch eine Inline-Klasse ersetzt. (Ib6d03, b/187055290, b/184086802)
  • Bietet die Möglichkeit, den SubcomposeLayout-Zustand zu heben, wodurch Sie die Möglichkeit haben, den Inhalt in eine erforderlich-Slot-ID umzuwandeln, sodass der nächste Messwert schneller übergeben wird, da wir versuchen, das nächste Mal eine Subcompose-ID mit der angegebenen Slot-ID zu erstellen, wenn das nächste Mal keine Zusammensetzung erforderlich ist. (I42580, b/184940225)
  • Ziehpunkt zur Clipauswahl hinzugefügt (Iff80d, b/183408447)
  • Nicht verwendete APIs für die LayoutInspector-Unterstützung wurden entfernt. I2ac78

Fehlerkorrekturen

  • LazyColumn/Row sorgt nun dafür, dass bis zu zwei zuvor sichtbare Elemente aktiv (nicht verworfen) bleiben, auch wenn sie bereits herausgescrollt werden. Auf diese Weise kann die Komponente die aktiven Unterzusammensetzungen wiederverwenden, wenn wir ein neues Element zusammensetzen müssen, was die Scroll-Leistung verbessert. (Ie5555)
  • TextGeomerticTransform und TextDecoration für AnnotatedString werden wie angegeben angewendet. (I61900, b/184760917)

Version 1.0.0-beta06

5. Mai 2021

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

API-Änderungen

  • Konflikte mit Bedienungsgeste lösen (I1145e)
  • @ComposeCompilerApi nicht mehr @RequiresOptIn (Iab690)
  • Bedienungshilfen-APIs für CollectionInfo und CollectionItemInfo wurden hinzugefügt, mit denen Sammlungen und zugehörige Elemente für Bedienungshilfen markiert werden können (Id54ef, b/180479017).
  • SemanticsActions.ScrollToIndex wurde hinzugefügt, um eine Liste mit indexierten Elementen zu einem Element mit einem bestimmten Index zu scrollen, und SemanticsProperties.IndexForKey, um den Index eines Elements in einer Liste mit Schlüsselelementen abzurufen. Beide Aktionen werden von LazyList implementiert.
    • SemanticsNodeInteraction.performScrollToIndex wurde hinzugefügt, das eine Liste zum angegebenen Index scrollt, und SemanticsNodeInteraction.performScrollToKey, das eine Liste zum Element mit dem angegebenen Schlüssel scrollt. (I4fe63, b/178483889, b/161584524)
  • „ownerViewId“ zu GraphicLayerInfo (I19f62) hinzugefügt
  • Font()-Überlastungen zum Laden von Schriftarten aus Assets, File und FileDescriptor (I5d382) wurden hinzugefügt.
  • Die Accessibility API error, die das Markieren eines Knotens mit ungültigen Eingaben ermöglicht, wurde hinzugefügt (I12997, b/180584804, b/182142737).
  • Font()-Überlastungen zum Laden von Schriftarten aus Assets, File und FileDescriptor (I43007) wurden hinzugefügt.
  • Speicherunterstützung für AnnotatedString in TextFieldValue.Saver Zusätzliche Funktionen des addTtsAnnotation- und withAnnotation-Dienstprogramms zu AnnotatedString.Builder (I8cbdc, b/178446304)
  • TextUnit-Konstruktorfunktion TextUnit(value: Float, type: TextUnitType) (I7ecce, b/178446304) hinzugefügt

Version 1.0.0-beta05

21. April 2021

androidx.compose.ui:ui-*:1.0.0-beta05 wird freigegeben. Version 1.0.0-beta05 enthält diese Commits.

API-Änderungen

  • Die experimentellen Funktionen FocusManager.moveFocus(In) und FocusManager.moveFocus(Out) wurden hinzugefügt (Ic5534, b/183746743).
  • Zusätzliche experimentelle performTextInputSelection API (I2dcbb, b/178510628)
  • Die Schnittstelle InputEventCallback wurde verworfen. Die Schnittstelle konnte in keiner öffentlichen API verwendet werden und im Code wurde sie nicht verwendet. (I34a02, b/184003208)
  • Die Funktion TextLayoutResult/createTextLayoutResult wurde verworfen. Dies ist eine nicht verwendete öffentliche Funktion, die zum Testen hinzugefügt wurde. Die Funktion ist nicht für Composer-Text-APIs geeignet. Die Funktion wurde verworfen und wird später entfernt. (I80413)

Fehlerkorrekturen

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

Version 1.0.0-beta04

7. April 2021

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

API-Änderungen

  • Benennen Sie hideSoftwareKeyboard und showSoftwareKeyboard in SoftwareKeyboardController in hide() bzw. show() um.
    • Die vollständige CompositionLocal-Schnittstelle für LocalSoftwareKeyboardController bereitstellen, um diese festzulegen (besonders bei Tests nützlich) (I579a6)
  • Die LiveRegion Accessibility API wurde hinzugefügt. Wenn der Knoten als Live-Region markiert ist, benachrichtigen die Bedienungshilfen den Nutzer automatisch über die Änderungen (Idcf6f, b/172590946).
  • TextOverflow.Sichtbar wird eingeführt. (Ic8f89)

Fehlerkorrekturen

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

Version 1.0.0-beta03

24. März 2021

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

API-Änderungen

  • Verzögerte Prüfung auf ViewTree-Abhängigkeiten von ComposeView (I8dbbf, b/182466548)
  • Optionale startX/endX- und startY/endY-Parameter wurden den swipeUp/swipeDown/swipeLeft/swipeRight-Funktionen 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 freigegeben. Version 1.0.0-beta02 enthält diese Commits.

API-Änderungen

  • Eine neue lokale LocalSoftwareKeyboardController-Zusammensetzungs-API wurde hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I5951e, b/168778053)
  • Eine neue lokale LocalSoftwareKeyboardController-Zusammensetzungs-API wurde hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I84472, b/168778053)
  • Die folgenden SemanticsMatchers wurden entfernt:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (If16bd)
  • Die folgende SemanticsMatchers wurde als @ExperimentalTestApi gekennzeichnet:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (Ia600c)
  • Die folgenden SemanticsMatchers wurden hinzugefügt:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (I2f502)

Fehlerkorrekturen

  • Einschränkungen für die öffentliche Nutzung experimenteller APIs erzwingen (I6aa29, b/174531520)
  • androidx.compose.ui:ui ist nicht mehr von AppCompat oder Fragment abhängig. Wenn Sie in Ihrer Anwendung eine ComposeView und Fragment und/oder AppCompat verwenden, sollten Sie AppCompat 1.3 oder höher bzw. Fragment 1.3 oder höher verwenden. Diese Versionen sind erforderlich, um Lebenszyklus- und gespeicherte Statusinhaber für ComposeView korrekt festzulegen. (I1d6fa, b/161814404)
  • Ein Fehler wurde behoben, der bei der Verwendung von rememberSaveable { mutableStateOf(0) } im Ziel von „navigation-compose“ fehlerhaft war. (I1312b, b/180042685, b/180701630)
  • Eine neue lokale LocalSoftwareKeyboardController-Zusammensetzungs-API wurde hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I658b6, b/168778053)
  • Seltene NoSuchElementException in tearDownRegistry() von ComposeRootRegistry (Iddce1) behoben

Version 1.0.0-beta01

24. Februar 2021

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

Dies ist die erste Version der Betaversion von Compose 1.0.0.

API-Änderungen

  • Der onStart-Callback wurde zu detectDragGestures hinzugefügt (I67269, b/179995594)
  • Modifikatoren zur Größenanpassung an intrinsische Elemente sind nicht mehr experimentell. (I15744)
  • MeasureBlocks wurde in MeasurePolicy umbenannt und bietet jetzt eine unterhaltsame Benutzeroberfläche. Layout-APIs wurden für die Verwendung von MeasurePolicy aktualisiert bzw. vereinfacht. (Icab48, b/167662468, b/156751158)
  • InteractionState wurde durch [Mutable]InteractionSource ersetzt.
    • Schnittstellen sind für das Senden und Erfassen von Interaktionsereignissen verantwortlich.
    • Verwenden Sie interactionSource = remember { MutableInteractionSource() }, anstatt interactionState = remember { InteractionState() } an Komponenten wie Button und Modifier.clickable() zu übergeben.
    • Verwenden Sie statt Interaction.Pressed in interactionState die Erweiterungsfunktionen für InteractionSource, z. B. InteractionSource.collectIsPressedAsState().
    • Bei komplexen Anwendungsfällen können Sie mit InteractionSource.interactions den Stream von Interaktionen beobachten. Weitere Informationen finden Sie in der Dokumentation zu InteractionSource und in Beispielen.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • AccessibilityMananger-Oberfläche und „LocalAccessibilityMananger“ in „CompositionLocals“ hinzufügen (I53520)
  • Die nicht mehr unterstützten LayoutCoordinates-Methoden wurden entfernt. Verwenden Sie die Funktion „function“ anstelle der Eigenschaft für „positionInParent“ und „boundsInParent“ (I580ed, b/169874631, b/175142755).
  • Typaliasse, die durch zugrunde liegende Typen ersetzt werden:
    • ColorStop ist jetzt Pair<Float, Color>
    • SpanStyleRange ist jetzt `AnnotatedString.Range
    • ParagraphStyleRange ist jetzt AnnotatedString.Range<ParagraphStyle>
    • StringAnnotation ist jetzt AnnotatedString.Range<String>
    • (I8dd1a)
  • Für Eingabesitzungen über Low-Level-Textkomponenten wie CoreTextField wurde eine neue TextInputSession erstellt. (I8817f, b/177662148)
  • „Placeable“ zeigt jetzt „measureSize“ an, der die Größe darstellt, die das untergeordnete Layout tatsächlich gemessen hat. Bei dieser Größe werden möglicherweise die Einschränkungen für die Messung nicht berücksichtigt. (Ib2729, b/172560206, b/172338608)
  • Modifikator „selectGroup“ hinzufügen, mit dem eine Sammlung von Tabs oder Optionsfeldern für Bedienungshilfen markiert werden kann (Ie5c29)
  • defaultFactory für compositionLocalOf und staticCompositionLocalOf ist jetzt erforderlich und nicht mehr optional.

    Durch diese Änderung wird ein potenzieller Typfehler für Typen beseitigt, die keine Nullwerte zulassen und für die keine Standard-Factory bereitgestellt wurde. Zuvor wurde dadurch ein Nullverweis für einen Typ bereitgestellt, der keine Nullwerte zulässt.

    Wenn für Typen Nullwerte zulässig sind, sollten Sie { null } als Standard-Factory angeben.

    Wir raten davon ab, lokale Parameter mit Typen zu verwenden, die keine Nullwerte zulassen, es sei denn, ein vernünftiger Standardwert kann angegeben werden. Wenn kein vernünftiger Standardwert vorhanden ist, sollte das Lambda defaultFactory eine Ausnahme ausgeben. Allerdings bedeutet das Auslösen einer Ausnahme, dass Nutzer des lokalen Netzwerks eine implizite Abhängigkeit von der Bereitstellung haben, die vom Typsystem nicht erzwungen wird. (Ifbd2a)

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

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

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

  • der Teilverbrauch wurde aus dem Zeigereingabesystem entfernt. Die empfohlene Methode, um die Teilnutzung zu koordinieren, ist Modifier.nestedScroll. (Ie9c9b)

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

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

  • AnimationClockObservable und Unterklassen wurden entfernt. AnimierteFloat wurde entfernt. (Icde52, b/177457083)

  • Provider wurde in CompositionLocalProvider umbenannt

    • Der Kompositionskonstruktor akzeptiert keinen Schlüsselparameter mehr und wurde eingestellt.
    • CurrentsCompositeKeyHash wurde in eine zusammensetzbare Top-Level-Eigenschaft anstelle einer zusammensetzbaren Funktion der obersten Ebene umgewandelt.
    • CompositionData und CompositionGroup wurden in den Namespace „androidx.compose.runtime.tooling“ verschoben
    • ComposableLambda wurde anstelle einer konkreten Klasse als Interface erstellt und verfügt nicht mehr über Typparameter.
    • ComposableLambdaN wurde als Schnittstelle anstelle einer konkreten Klasse erstellt und verfügt nicht mehr über Typparameter.
    • Die Funktion „SnapshotFlow“ wurde in den Namespace „androidx.compose.runtime“ verschoben
    • Die Zusammenführungsmethode von SnapshotMutationPolicy ist nicht mehr experimentell
    • Die Top-Level-Funktion „clearRoots“ von @TestOnly wurde entfernt. Es ist nicht mehr erforderlich.
    • Die Funktionen „keySourceInfoOf“ und „resetSourceInfo“ wurden entfernt. Sie werden nicht mehr benötigt.
    • Composer.collectKeySourceInformation wurde entfernt. Es ist nicht mehr erforderlich.
    • Die Methoden "isJoinedKey", "joinKeyLeft" und "joinKeyRight" wurden entfernt. Sie werden nicht mehr benötigt.
    • Verschiedene APIs auf oberster Ebene wurden verschoben und in verschiedene Dateien neu organisiert. Aufgrund der Semantik der Dateiklassen von Kotlin beeinträchtigt dies die Binärkompatibilität, aber nicht die Quellkompatibilität. Daher sollte dies für die meisten Nutzer kein Problem sein.
    • (I99b7d, b/177245490)
  • ComponentActivity.setContent() wurde aus compose:ui entfernt. Verwende die E-Mail von androidx.activity:activity-compose:1.3.0-alpha01. viewModel() und LocalViewModelStoreOwner wurden aus compose:ui entfernt. Mit androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 (I6f36b)

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

  • CustomEvens-Unterstützung von PointerInputModifier wurde entfernt (I02707, b/175294473)

  • SnapshotStateObserver ist nicht mehr experimentell (Id2e6a)

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

  • longPressGestenFilter und doubleClickGestenFilter wurden entfernt. Verwende "Modifier.pointerInput" mit Hilfsfunktionen, z. B. detectTapTouchs (I2fedf, b/175294473).

  • Die refaktorierten Nutzungen der String.format API in verschiedenen toString-Methoden wurden entfernt, sodass String.format nicht intern genutzt werden konnte. (Id1290)

  • dp-Assertions entfernt (I798d2)

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

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

  • runBlockingWithManualClock (I15cdc, b/179664814) entfernt

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

  • FlingConfig wurde in FlingBehavior umbenannt und ermöglicht nun die Anpassung der Animierungsanimation anstelle vordefinierter Verkleinerungen. (I02b86, b/175294473)

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

  • Der SoftwareKeyboardController-Callback wurde aus allen Textfeldern entfernt, der bald durch eine neue API ersetzt werden soll. (Iae869, b/168778053)

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

  • Die folgenden Material API-Änderungen wurden vorgenommen:

    • Der contentPadding-Parameter wurde zu Top/BottomAppBar hinzugefügt, um das Anpassen des Standardabstands zu ermöglichen.
    • Parameter in BackdropScaffold neu geordnet, um den API-Richtlinien zu entsprechen, wenn erforderliche Parameter vor optionalen Parametern liegen.
    • Der Parameter icon in BottomNavigationItem wurde so verschoben, dass er nach selected und onClick liegt.
    • Der Parameter alwaysShowLabels in BottomNavigationItem wurde in alwaysShowLabel umbenannt.
    • bodyContent-Parameter wurden in einigen Komponenten in nur content umbenannt.
    • Parameter in ButtonDefaults.buttonColors() neu geordnet. Da sich der Typ der Parameter nicht geändert hat, führt dies nicht zu einem Fehler in Ihrem Code. Stellen Sie sicher, dass Sie entweder benannte Parameter verwenden oder die Reihenfolge manuell aktualisieren. Andernfalls funktioniert der Code nicht wie zuvor.
    • Der Parameter secondaryVariant wurde zu darkColors() hinzugefügt. Diese Farbe hat in der Regel die gleiche Farbe wie secondary im dunklen Design, sie bietet aber mehr Einheitlichkeit und eine weitere Anpassung.
    • ElevationDefaults und animateElevation() wurden von der öffentlichen API-Oberfläche entfernt, da sie nicht häufig verwendet bzw. nützlich waren.
    • onValueChangeEnd wurde in Slider in onValueChangeFinished umbenannt und Nullwerte zulässig.
    • Der Parameter text in Snackbar wurde aus Gründen der Einheitlichkeit in content umbenannt.
    • Der Parameter contentPadding wurde zu DropdownMenuItem hinzugefügt, um das Anpassen des Standardabstands zu ermöglichen. Außerdem wurde content als Erweiterung für RowScope entwickelt.
    • ModalDrawerLayout wurde in ModalDrawer umbenannt.
    • BottomDrawerLayout wurde in BottomDrawer umbenannt.
    • (I1cc66)

Fehlerkorrekturen

  • Eine API zur Verwendung von animateVectorDrawable-Ressourcen in Compose wurde hinzugefügt. Verwenden Sie animatedVectorResource, um eine <animated-vector>-XML als animateImageVector zu laden, und animieren Sie ihn mit PainterFor (I8ea91).
  • Eine neue lokale Zusammensetzungs-API LocalSoftwareKeyboardController wurde 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 freigegeben. Version 1.0.0-alpha12 enthält diese Commits.

API-Änderungen

  • Die Unterstützung für ViewGroups wurde von UiApplier entfernt. Die veralteten zusammensetzbaren Funktionen „emitView“ wurden entfernt. (Ifb214)
  • Für Modifier.pointerInput sind nun Schlüssel zum Merken erforderlich, die angeben, wann die Koroutine für die Zeigereingabeerkennung bei neuen Abhängigkeiten neu gestartet werden soll. (I849cd)
  • CompositionReference wurde in CompositionContext umbenannt (I53fcb)
  • "Bounds" wurde in DpRect (I4b32a) umbenannt.
  • Testaktualisierung: hasText() prüft sowohl auf Eingabe- als auch auf Beschriftungs-/Hinweis-/Platzhaltertexte im Textfeld (Iab803)
  • Die zusammengesetzte Funktion viewModel() und „LocalViewModelStoreOwner“ wurden nach „androidx.lifecycle.viewmodel.compose“ verschoben. Sie müssen nun die separate Abhängigkeit androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 hinzufügen, um sie verwenden zu können. (I7a374)
  • Aktionen, bei denen Nullwerte zulässig sind, in AccessibilityAction zulassen, Aktionslabel in „AccessibilityAction“ und „CustomAccessibilityAction“ von „CharSequence“ in „String“ ändern (I0dc82)
  • Um die Namenskonventionen besser mit ImageBitmap und ImageVector abzugleichen, wurde ImagePainter in BitmapPainter umbenannt, damit parallel zu VectorPainter. (Iba381, b/174565889)
  • Bessere Teilstring-Test-APIs mit Teilstrings jetzt als Argument (Icbe78)
  • Es wurde ein Modifier.focusOrder() hinzugefügt, der einen FocusRequester akzeptiert, ohne eine benutzerdefinierte Fokusreihenfolge mit Lambda festzulegen. Dies ist nützlich, wenn wir nur eine Referenz, aber keine benutzerdefinierte Fokusreihenfolge für eine zusammensetzbare Funktion angeben müssen (I4f52a, b/179180978).
  • ComponentActivity.setContent wurde nach androidx.activity.compose.setContent im Modul androidx.activity:activity-compose verschoben. ICF416
  • Die Methoden "Destrukturierung" und "copy()" wurden aus mehreren Klassen entfernt, in denen sie nur selten verwendet wurden. (I26702, b/178659281)
  • Pop-up wurde nach plattformspezifisch verschoben. „AndroidPopupProperties“ wurde in „PopupProperties“ umbenannt und „isFocusable“ wurde in einen Parameter „focusable“ in PopupProperties (Ieeea5) verschoben
  • Dialogfeld wurde an eine plattformspezifische Version verschoben. AndroidDialogProperties wurde in DialogProperties umbenannt. (I4ef69, b/179138130)
  • LayoutNode intern verwendet (I8a7b1, b/175103944)
  • „Constraints.enforce“ wurde durch „Constraints.constrain“ ersetzt. (I8b8ea)
  • „loadFontResource“ wurde eingestellt. Verwenden Sie stattdessen fontResource. „imageResource“, „loadImageResource“, „vectorResource“ und „loadVectorResource“ wurden eingestellt. Verwenden Sie stattdessen PainterResource. (I6b809)
  • Aus Leistungsgründen akzeptiert die ScrollAxisRange-Semantik nun Lambdas, die Gleitkommazahlen zurückgeben, anstelle von direkten Gleitkommazahlen. (If4a35, b/178657186)
  • Es wurde eine „EditableText“-Semantik hinzugefügt, um bearbeitbaren Eingabetext des Textfeldes für Barrierefreiheit zu markieren, und entsprechende Testmethoden zum Überprüfen der Semantik (I8e07a).
  • Made OwnerLayer/OwnerScope/OwnerSnapshotObserver 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, damit sie den API-Richtlinien entspricht und interne Implementierungsklassen vor der öffentlichen API ausgeblendet wird. (Id9e32)
  • Semantische Aktionen zum Maximieren und Minimieren wurden hinzugefügt. In ModalBottomSheetState (Ib5064) wurden „expand“ und „HalfExpand“ hinzugefügt.
  • Modifier.dragGestenFilter wurden eingestellt. Verwende stattdessen Modifier.pointerInput { detectDragGestures (...)}. Alternativ können Sie Modifier.draggable für Ziehbewegungen einer Achse verwenden (I0ba93, b/175294473).
  • Ambients wurden umbenannt, sodass sie unter Ambient > CompositionLocal umbenannt werden. Ambients hießen früher „AmbientFoo“, jetzt heißt „CompositionLocals“ LocalFoo. (I2d55d)
  • Das eingestellte BaseTextField wurde entfernt. Verwenden Sie stattdessen „BasicTextField“. (I71368)
  • Die Auswahl wurde auf die Grundlage verschoben. (I7892b)
  • Ähnlich wie wir die zusammensetzbare Funktion state { 0 } zuvor entfernt haben und jetzt die Verwendung wie remember { mutableStateOf(0) } fördern, entfernen wir jetzt die zusammensetzbare Funktion savedInstanceState { 0 }. Sie sollten stattdessen rememberSaveable { mutableStateOf(0) } verwenden. Es wird automatisch gespeichert und wiederhergestellt, wenn der in „MuttableState“ verwendete Typ im Bundle gespeichert werden kann. Wenn Sie zuvor ein benutzerdefiniertes Saver-Objekt übergeben haben, müssen Sie jetzt eine neue Überlastung von savedSaveable mit dem Parameter stateSaver verwenden. Die Nutzung sieht so aus: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)
  • Zusätzliche Passwortsemantik für Barrierefreiheit (I231ce)
  • ProgressBarRangeInfo.Indeterminate wurde hinzugefügt, um unbestimmte Fortschrittsbalken für Barrierefreiheit zu markieren (I6fe05).
  • Die Dienstprogramme emptyContent() und (@Composable () -> Unit).orEmpty() wurden verworfen, da sie keine positiven Auswirkungen auf die Leistung oder ihren Wert mehr haben (I0484d).
  • snapshotFlow und withMutableSnapshot sind nicht mehr experimentell (I6a45f)
  • Recomposer können jetzt geschlossen werden. Bei geschlossenen Neuzusammensetzungen wird die Neuzusammensetzung so lange fortgesetzt, bis die untergeordneten Koroutinen abgeschlossen sind. Recomposer.shutDown wurde in „Abbrechen“ umbenannt, um einen Kontrast mit „Schließen“ zu bilden. (Ib6d76)
  • UiSavedStateRegistry wurde in SaveableStateRegistry, AmbientUiSavedStateRegistry in AmbientSaveableStateRegistry und beide in das Paket androidx.compose.runtime.saveable umbenannt. (I30224)
  • Artefakt „androidx:compose:runtime:runtime- saved-instance-state“ wurde in androidx:compose:runtime:runtime-saveable (I6dcac) umbenannt
  • Viele der seit Langem verworfenen APIs im UI-Paket werden gelöscht. I2f2dc.
  • Das Artefakt „compose:runtime-dispatch“ wurde jetzt eingestellt. MonotonicFrameClock ist jetzt in „compose:runtime“ und „AndroidUiDispatcher“ in „compose:ui“ zu finden. (Ib5c36)
  • Outline.*-Klassen sind keine Datenklassen mehr (I4879e, b/178001427)
  • view.captureToImage()“ wurde ersatzlos entfernt. I7fcd2:
  • Einführung der ColorMatrix API zum Ändern der RGB-Werte von Quellinhalten und der Refactored ColorFilter API als Schnittstelle, die der Implementierung von PathEffect entspricht (Ica1e8)
  • Fügen Sie den Parameter „ layoutDirection“ zu „createOutline“ der Form hinzu. Dies ermöglicht das Erstellen von richtungsabhängigen Formen. (I57c20, b/152756983)
  • „onImeActionPerformed“ wurde eingestellt. Verwenden Sie stattdessen KeyboardActions (If0bbd, b/179071523).
  • Das Koroutinen-Kontextelement InfiniteAnimationPolicy wurde eingeführt, das in Endlosanimationen angewendet wird. Standardmäßig ist keine Richtlinie installiert, außer wenn Tests mit ComposeTestRule ausgeführt werden. (I50ec4, b/151940543)
  • canDrag wurde aus Modifier.scrollable entfernt. (Id66e7, b/175294473)
  • LayoutCoordinates.parentCoordinates wurde in LayoutCoordinates.parentLayoutCoordinates umbenannt, um die neue Eigenschaft „parentCoordinates“ zu ermöglichen. In der Eigenschaft „parentCoordinates“ sind jetzt die LayoutCoordintes des übergeordneten Modifikators verfügbar. Dies führt zu umfassenderen Anwendungsfällen für onSizeChanged() und onGloballyPositioned() (Idfbfd, b/177926591).
  • tapGestenFilter, doubleTapGestenFilter, longPressGestenFilter und pressIndicaitonGMSFilter wurden eingestellt. Verwende stattdessen "Modifier.clickable" oder "Modifier.pointerInput" mit der Funktion detectTapTouch. (I6baf9, b/175294473)
  • „unregisterProvider“ von SaveableStateRegistry wurde entfernt. Stattdessen gibt recordProvider() jetzt ein SaveableStateRegistry.Entry-Objekt zurück, mit dem Sie die Registrierung aufheben können (Ic4274, b/178583739).
  • MemorystoreSavedInstanceState() wurde in noteSaveable() umbenannt und in das Paket „androidx.compose.runtime.saveable“ verschoben. (I1366e, b/177338004)
  • CoreText und CoreTextField wurden aus der öffentlichen API entfernt.
    • Verworfene SelectionContainer-Überlastung entfernt
    • (I99c19)
  • Tests, bei denen die Funktion „Compose“ in Hierarchien verwendet wird, die direkt zu „WindowManager“ hinzugefügt oder daraus entfernt werden, sind jetzt stabiler. (Ie81ed, b/175765614)
  • Recomposer.current() wurde entfernt. [Abstrakt]ComposeView werden jetzt standardmäßig auf verzögerte, fensterbezogene Recomposers verwendet, die vom ViewTreeLifecycleOwner für das Fenster gesteuert werden. Die Neuzusammensetzung und mit FrameNanos-basierte Animationsmarkierungen werden pausiert, während der Hostlebenszyklus angehalten wird. (I38e11)
  • Recomposer.runningRecomposers bietet jetzt einen globalen StateFlow mit schreibgeschütztem RecomposerInfo zur Beobachtung des laufenden Kompositionsstatus während des Prozesses. Bevorzugen Sie diese API Recomposer.current(), da diese mittlerweile eingestellt wurde. (If8ebe)
  • Saver, listSaver(), MapSaver(), autoSaver wurde von androidx.compose.runtime.savedinstancestate nach androidx.compose.runtime.saveable verschoben (I77fe6)
  • EditCommands akzeptieren AnnotatedString. Dabei handelt es sich jedoch um eine reine API-Änderung. Die Textbearbeitung mit mehreren Stilen wurde noch nicht implementiert. (I4c3ea)
  • Betriebszeit und Dauer wurden entfernt. (Ib9bf4, b/177420019)
  • CompositionData.asTree() und zugehörige APIs wurden in ein separates ui-tooling-data-Modul verschoben und als experimentell gekennzeichnet (Ic95b8).
  • Die Parameter von RounderCornerShape, CutCornerShape und CornerBasedShape wurden von links/rechts in Anfang/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 eine automatische Spiegelung nicht erwünscht ist. (I61040, b/152756983)
  • Die API, auf die das Compiler-Plug-in „Compose“ ausgerichtet ist, wurde umgestaltet, um eine Schnittstelle anstelle einer konkreten Klasse zu verwenden. In der Schnittstelle wird auch kein Typparameter mehr verwendet.

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

  • Unbeabsichtigt öffentliche Funktion StringBuilder.deleteAt entfernen (Id6ed9)

Fehlerkorrekturen

  • In Ansichtshierarchien platzierte ComposeViews, die untergeordnete Elemente einer anderen Komposition sind, hosten jetzt die untergeordneten Kompositionen ihrer Ancestors (I92883).
  • Die imageFromResource API von compose wurde so aktualisiert, dass beim Laden von ImageBitmap-Objekten der Ressourcen-Drawable-Cache wiederverwendet wird. (If3627, b/178751994)

Version 1.0.0-alpha11

28. Januar 2021

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

API-Änderungen

  • WithConstraints wurde in „BoxWithConstraints“ umgestaltet und nach „fundation.layout“ verschoben. (I9420b, b/173387208)
  • Key.DPadUp wurde eingestellt. Verwenden Sie stattdessen Key.DirectionUp. (Iab335, b/177954892)
  • Eigentümeroberfläche ab jetzt intern. (If8e35)
  • Die API „FocusManager.moveFocus()“ wurde hinzugefügt, um den Fokus programmatisch zu verschieben. (I045cb, b/177681839)
  • Ändert Pop-upPositionProvider so, dass fensterrelative Koordinaten verwendet werden, keine globalen Koordinaten. Benennt „parentGlobalBounds“ in „anchorBounds“ und ändert „windowGlobalBounds“ in „windowSize: IntSize“ (I2994a)
  • Dauer und Betriebszeit werden durch lange Millisekunden ersetzt. Mit diesem Schritt wird die Abhängigkeit der Zeigereingabe von diesen Klassen beseitigt. (Ia33b2, b/175142755, b/177420019)
  • „AmbientSavedStateRegistryOwner“ wurde ähnlich wie bereits vorhandene „AmbientLifecycleOwner“ und „AmbientViewModelStoreOwner“ hinzugefügt (I9a3e8, b/176756365).
  • Die Vektorgrafik-API wurde aktualisiert, um das Parsen von Tönungen zu unterstützen, die auf die Stamm von Vektorgrafiken angewendet werden. (Id9d53, b/177210509)
  • „toolType“ wurde zu PointerInputChange hinzugefügt, um Geräte zu unterscheiden (Iac787, b/175142755).
  • AmbientWindowManager wurde in AmbientWindowInfo (I2686a, b/177084714, b/177084983) umbenannt.
  • Globale Koordinatenmethoden wurden verworfen und neue fensterbasierte Koordinatenmethoden eingeführt. (Iee284)
  • Modifier.toolingGraphicsLayer wurde hinzugefügt, das einen Grafikebenen-Modifikator hinzufügt, wenn die Überprüfung aktiviert ist. (I315df)
  • FocusRequester.createRefs ist jetzt als experimentell gekennzeichnet, da es sich möglicherweise ä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 „horizontalAccessibilityScrollState“ umbenannt. „verticalAccessibilityScrollState“ wurde in „VerticalScrollAxisRange“ umbenannt. (Id3148)
  • PointerInputData wurde entfernt und PointerInputChange geändert, um alle Felder von PointerInputData bereitzustellen. PointerInputEvent und PointerInputEventData wurden intern erstellt, da sie in keiner öffentlichen API verwendet werden. (Ifff97, b/175142755)
  • Die aktualisierte GraphicsLayerScope implementiert die Dichte, um die Konvertierung von „dp“ in Rohpixel zu unterstützen. (Ied528, b/176819695)
  • Die Matrix API wurde aktualisiert, damit sie der Zeilenhauptreihenfolge folgt und Indexkonstanten zur Unterstützung bei Konvertierungen zwischen verschiedenen Matrixdarstellungen zur Verfügung steht, um die Framework-Conversion-Logik zwischen SkMatrix und Matrix4 intern anzupassen. (I432e6)
  • Die experimentellen monotonicFrameAnimationClockOf-Methoden (Ib753f, b/170708374) wurden entfernt.
  • Verschieben Sie String.fintPrecedingBreak und String.fingFollowingBreak nach InternalTextApi. (I657c4)
  • androidx.compose.ui.util.isSurrogatePair wurde aus der öffentlichen API entfernt. (Ia9494)
  • TransformedText.transformedText wurde in TransformedText.text umbenannt.
    • TransformedText ist keine Datenklasse mehr (Ie672a).
  • data class wurde aus den folgenden Klassen entfernt:
    • InlineTextContent
    • LocaleList (I605c7)
  • Die folgenden Klassen sind keine Datenklassen mehr:
    • AnnotatedString
    • Absatzstil
    • SpanStyle
    • Textstil
    • Schriftstärke
    • Textdekoration
    • TextGeometricTransform
    • Textindex
    • TextLayoutResult
    • TextLayoutInput (Iaff99)
  • VisualTransformation wurde in eine funktionsfähige Schnittstelle geändert (I3bba4)
  • Ein Funktionsverweis-Parametertyp wurde hinzugefügt (I5e1bd).
  • Transformierte Grenzen zu InspectorNode hinzufügen (Ice42f)

Fehlerkorrekturen

  • onCommit, onDispose und onActive wurden zugunsten der SideEffect und DisposableEffect APIs (If760e) eingestellt
  • Änderungen an den Werksfunktionen für Schriftart/Schriftart/Schriftart

    • Werksfunktionen hinzugefügt, die mit einem Großbuchstaben beginnen
    • Verworfene frühere Factory-Funktionen mit Kleinbuchstaben
    • Neue Factory-Funktionen geben die FontFamily anstelle von Unterklassen zurück.
    • Konstruktoren der abgeleiteten Klassen ausgeblendet, damit sie nur über Factory-Funktionen erstellt werden können
    • Font.asFontFamily wurde in Font.toFontFamily (I42aa7) umbenannt
  • ComposeContentTestRule wurde eingeführt, das ComposeTestRule erweitert und setContent definiert, das aus ComposeTestRule entfernt wurde. Die Factory-Methode createEmptyComposeRule() wurde hinzugefügt, die ein ComposeTestRule zurückgibt und keine Activity für Sie startet. Verwenden Sie diese Option, wenn Sie Ihre Activity während des Tests starten möchten, z. B. mit ActivityScenario.launch (I9d782, b/174472899).

  • "animateAsState" ist jetzt "animateFooAsState", wobei Foo der Typ der animierten Variablen ist, z. B. Float, Dp, Offset (Ie7e25)

  • Dem Bild und Symbol wurde der Parameter für die Inhaltsbeschreibung hinzugefügt. Es wird verwendet, um die Bedienungshilfen zu beschreiben (I2ac4c).

  • Entfernen Sie displaySize. Dies sollte vermieden werden. Normalerweise ist es besser, die Größe onRoot() oder mindestens die Fenstergröße zu verwenden. (I62db4)

  • „OnSizeChanged“ meldete die Größe des Layoutinhalts. Jetzt wird die Größe an ihrer Position in der Modifiziererkette angegeben. (I36b78, b/177562900)

  • Die emit() API und alle Überlastungen wurden verworfen und in ComposeNode umbenannt. Die APIs sind identisch, nur ein anderer Name, um den Namenskonventionen von Compose zu entsprechen (I4137b).

  • TextFieldValue akzeptiert AnnotatedString. Dabei handelt es sich jedoch um eine reine API-Änderung. Die Textbearbeitung mit mehreren Stilen wurde noch nicht implementiert.

    • initial wurde aus den Konstruktorparametern von EditingBuffer entfernt. (I326d5)
  • "invalid" und "compositionReference()" wurden zugunsten von "currentRecomposeScope" und "memoryCompositionReference" eingestellt. (I583a8)

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

  • MerkObserver ersetzt CompositionLifecycleObserver und CompositionLifecycleObserver wurde jetzt eingestellt.

    RememberObserver ist ein Ersatz für CompositionLifecycleObserver mit geänderter Semantik und umbenannten Methoden. Der Wechsel zur neuen API kann mechanisch für Objekte erfolgen, die nur einmal gespeichert werden. Dies ist und bleibt die empfohlene Vorgehensweise. Wenn eine Referenz jedoch in einer Komposition mehr als einmal gespeichert wurde, wird onRemembered für jede Referenz aufgerufen, wobei onEnter nur einmal aufgerufen wird. onEnter wurde mehrmals aufgerufen, wenn das Objekt in Unterzusammensetzungen wie WithConstraints und Scaffold verwendet wurde, wodurch die Garantie für einen einzelnen onEnter-Aufruf unzuverlässig wurde und für RememberObserver entfernt wurde.

    RememberObserver fügt onAbandoned hinzu, die aufgerufen wird, wenn die RememberObserver-Instanz von dem an remember übergebenen Callback zurückgegeben wird, aber im Zusammensetzungsstatus nicht gespeichert wurde. Daher wird onRemembered nie aufgerufen. Dies kann auftreten, wenn eine Ausnahme die Komposition vor dem Abschluss beendet oder die Zusammensetzung verworfen wird, weil der Status, für den eine Komposition erstellt wurde, nicht mehr aktuell ist oder nicht mehr benötigt wird. Wenn die Instanz von RememberObserver, die der oben genannten Referenzempfehlung folgt, eine externe Ressource sowohl onForgotten als auch onAbandoned verfolgt, weisen beide darauf hin, dass die Ressource nicht mehr benötigt wird. Wenn das Objekt die gestarteten Arbeitsschritte oder in onRemembered zugewiesenen Ressourcen verfolgt, kann onAbandoned ignoriert werden, da es bei onRemembered nicht aufgerufen wird. (I02c36)

  • Arithmetische Operationen zwischen 2 oder mehr TextUnits wurden verworfen. Die Funktionen TextUnit.Sp und TextUnit.Em wurden gegenüber Erweiterungsfunktionen wie Int.sp und Int.em vorgezogen. (I48369)

  • Ressourcen in Bibliotheken ohne explizit deklarierte öffentliche Ressourcen (z. B. über public.xml) sind jetzt standardmäßig privat. (Ia1dcc, b/170882230)

  • ScrollableColumn/Zeile wurde eingestellt. ScrollableColumn ist weniger effizient im Vergleich zu LazyColumn, wenn Sie einen großen Scroll-Inhalt haben, da wir mit LazyColumn nur sichtbare Elemente erstellen/messen/zeichnen können. Um zu verhindern, dass Nutzer uneffizient arbeiten, haben wir „ScrollableColumn“ und „ScrollableRow“ eingestellt und stattdessen die Nutzung von LazyColumn und LazyRow erhöht. Nutzer können trotzdem entscheiden, dass sie das Lazy-Verhalten nicht benötigen, und die Modifikatoren direkt wie folgt verwenden: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)

  • Neue Factory-Methode items(count: Int) für den Bereich von LazyColumn/LazyRow/LazyVerticalGrid. „items(items: List)“ und „itemsIndexed(items: List)“ sind jetzt Erweiterungsfunktionen. Sie müssen sie also manuell importieren, wenn sie verwendet werden. Neue Erweiterungsüberlastungen für Arrays: items(items: Array) und itemsIndexed(Array) (I803fc, b/175562574)

  • Verwenden Sie „ImeAction.None“ anstelle von „ImeAction.NoAction“.

    • Verwenden Sie „ImeAction.Default“ anstelle von „ImeAction.Unspecific“ (Ie1bcc).
  • TestCoroutineDispatcher beim Testen verwenden (I532b6)

  • TextInputService.onStateUpdated in updateState (Id4853) umbenannt

  • Die auf TransitionDefinition basierende Umstellung wurde eingestellt (I0ac57).

  • TextUnitType.Inherit wird entfernt. Verwenden Sie stattdessen „TextUnitType.Unspecific“. (I9ff64)

Version 1.0.0-alpha10

13. Januar 2021

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

Wichtige Änderung

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

    Dies ist eine Änderung, die das Verhalten beeinträchtigt und sich auf den Anwendungscode auswirken kann, da Knoten über interne und experimentelle APIs erst nach dem Anwenden von Änderungen verfügbar sind. Dies lässt sich normalerweise umgehen, indem Sie Code mit solchen Abhängigkeiten in eine zusammensetzbare SideEffect-Datei einfügen, um die Ausführung des Codes zu verzögern, bis die Knoten erstellt und initialisiert wurden. (I018da)

API-Änderungen

  • Modifier.focusOrder() wurde hinzugefügt, um eine benutzerdefinierte Durchlaufreihenfolge für den Fokus anzugeben (I90cf5, b/175899543, b/170155556, b/170155429).
  • Der verworfene FokusObserver, der stattdessen onFocusChanged oder onFocusEvent verwendet, wurde entfernt (I3ecb9, b/175156387).
  • Änderungen an der EditOperations API
    • EditOperation wurde in EditCommand umbenannt
    • Befehlssuffix für konkrete EditOperation-Implementierungen hinzugefügt
    • „EditCommand“ ist keine Datenklassen mehr
    • Funktion "EditOperation.process" wurde in "applyTo" umbenannt
    • InputEventListener wurde in InputEventCallback umbenannt.
    • (I0a366)
  • Nicht verwendete PxSquared, PxCubed und PxInverse wurden entfernt. „Size.center()“ wurde in eine Eigenschaft geändert. (I973f7)
  • Das ui-test-Modul kann jetzt die Erstellung von Recomposers für zu testende UIs konfigurieren (Ibebd8).
  • Die Geschwindigkeit wurde so geändert, dass Komponenten und mathematische Operationen enthalten sind. (Ib0447)
  • @ExperimentalTesting wurde in @ExperimentalTestApi umbenannt, damit sie mit ähnlichen experimentellen API-Annotationen übereinstimmt (Ia4502, b/171464963)
  • Color.useOrElse() wurde in Color.takeOrElse() (Ifdcf5) umbenannt.
  • Die nicht verwendeten Klassen DpInverse, DpSquared und DpCubed wurden entfernt. (I4d62b)
  • „Constraints#FreeBy“ wurde in „isSatisfiedBy“ umbenannt. (I9cf5c)
  • Fügen Sie einen Callback hinzu, der den Eigentümer benachrichtigt, wenn sich die Grenzen des Layoutknotens ändern. (I72fd1)
  • Für Inline-Klassen mit einer nicht spezifizierten Konstante wurden „isspezifiziert“, „isUnspecific“ und „useOrElse“ hinzugefügt. (I93f7b, b/174310811)
  • Erweitern Sie [Zusammenfassung]ComposeView APIs, um Compose-basierte Ansichten wiederverwenden zu können, deren Zusammensetzung entsorgt und später neu erstellt werden soll. Fügen Sie APIs hinzu, um fensterbezogene Recomposers und CompositionReferences zum Erstellen von untergeordneten Kompositionen zu installieren und zu erkennen.

    Fügen Sie ViewCompositionStrategy hinzu, um die Entsorgungsstrategie von [Abstrakt]ComposeViews zu konfigurieren. Das Standardverhalten ist beim Trennen des Fensters. (I860ab)

  • Öffentliche Any.identityHashCode() API (I025d7) entfernt

  • Die toStringAsFixed API wurde zugunsten der direkten Verwendung von String.format entfernt. (Iaba6b)

  • Ein/Aus-Schaltfläche zu Foundation Strings.kt hinzufügen (I4a5b7, b/172366489)

  • „nativeClass“ wurde in ein UI-Modul verschoben und intern gemacht. Die Verwendung von „nativeClass“ in gleich-Implementierungen wurde aktualisiert, um stattdessen „is MyClass“ zu verwenden. (I4f734)

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

  • Einführung von SelectionRegistrar.notifySelectableChange zur Benachrichtigung von Selectable-Updates für SelectionManager. (I6ff30, b/173215242)

  • Die Eigenschaft Outline.bounds wurde eingeführt, um das Begrenzungsrechteck für verschiedene Umrissimplementierungen zu erhalten. (I16e74, b/175093504)

  • TestUiDispatcher wurde eingestellt. Stattdessen „Dispatchers.Main“ verwenden (Ic171f, b/175385255)

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

  • Änderungen an der VisualTransformation API

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

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

Fehlerkorrekturen

  • Recomposer stellt jetzt einen Flow mit seinem aktuellen Status bereit, sodass seine Aktivität und die Aktivität der zugehörigen Effekte überwacht werden können. (Ifb2b9)
  • Auf das native keyEvent kann jetzt über keyEvent.nativeKeyEvent zugegriffen werden (I87c57, b/173086397).
  • animate() wird jetzt durch animateAsState() ersetzt, wodurch ein State<T> anstelle von T zurückgegeben wird. Dies führt zu einer besseren Leistung, da der Entwertungsbereich darauf beschränkt werden kann, wo der Statuswert gelesen wird. (Ib179e)
  • Fügen Sie die Semantics Role API und den klickbaren, auswählbaren und ein-/ausschaltbaren SemanticsModifier als Parameter hinzu. Modifizierer.progressSemantics geändert, sodass der Slider ihn ebenfalls verwenden kann. (I216cd)
  • Neue koroutinenbasierte API Animatable, die eine gegenseitige Exklusivität in den Animationen gewährleistet.
    • Neue DecayAnimationSpec-Unterstützung für mehrdimensionale Zerfallanimation
    • (I820f2, b/168014930)

Version 1.0.0-alpha09

16. Dezember 2020

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

API-Änderungen

  • Das eingestellte KeyEvent.Alt wurde entfernt. Verwenden Sie stattdessen „KeyEvent.isAltPressed“. (Idd695)
  • Modifier.keyInputFilter und Modifier.previewKeyInputFilter wurden eingestellt. Verwenden Sie stattdessen Modifier.onKeyEvent und Modifier.onPreviewKeyEvent (Idbf1b, b/175156384).
  • Modifier.focusObserver wurde eingestellt. Verwenden Sie stattdessen Modifier.onFocusChanged oder Modifier.onFocusEvent (I30f17, b/168511863, b/168511484).
  • Zum Anhalten von Pointer-Eingabe-APIs wurde HandlePointerInputScope in AwaitPointerEventScope und handlePointerInput() in awaitPointerEventScope() umbenannt. (Idf0a1, b/175142755)
  • Die Autofill API ist jetzt eine experimentelle API und erfordert eine Aktivierung (I0a1ec).
  • Destrukturierungsdeklarationen zum Erstellen von FocuSRequester-Instanzen hinzufügen (I35d84, b/174817008)
  • „AccessibilityLabel“ wurde in „contentDescription“ umbenannt. „accessibilityValue“ wurde in „stateDescription“ umbenannt. (I250f2)
  • Aus der API zum Anhalten der Zeigereingabe wurden benutzerdefinierte Ereignisse entfernt (Ia54d5, b/175142755)
  • Einführung mehrerer neuer Funktionen im SelectionRegistrar und Umbenennung von „onPositionChange“ in „benachrichtigungPositionChange“. (Ifbaf7)
  • Weitere Mitglieder von LayoutNode, die wir als intern gekennzeichnet haben (I443c6)
  • LayoutInfo wurde für die Verwendung von Tools und Tests eingeführt (I9b190).
  • Android-Inhaber intern (Ibcad0, b/170296980)
  • Die Annotation "ExperimentalPointerInput" (Ia7a24) wurde entfernt.
  • Ein verschachteltes Scrollsystem hinzugefügt. Weitere Informationen finden Sie unter „Modifier.nestedScroll“ (I36e15, b/162408885).
  • subcomposeInto(LayoutNode) wurde intern festgelegt (Id724a)
  • Die Oberfläche Applier wurde geändert, um das Erstellen von Bäumen von unten anstelle von Top-down zu vereinfachen.

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

    Die neue Methode insertBottomUp() wurde hinzugefügt.

    Ein Anwender fügt entweder mit insertTopDown() oder insertBottomUp() Knoten in die Baumstruktur ein, die er bearbeitet, je nachdem, welcher besser funktioniert.

    Einige Bäume wie LayoutNode und View sind beim Erstellen von Bottom-up-Anlagen viel effizienter als von Top-down. Vor dieser Änderung war ein Stapel von Einfügungen erforderlich, um die Bottom-up-Methode zu implementieren, die dann in jede Anwendung kopiert werden musste, die eine Bottom-up-Konstruktion für die Leistung erforderte. Mit dieser Änderung überschreibt ein Applier insertBottomUp(), um einen Baum von Bottom-up zu erstellen, und insertTopDown(), um den Baum von oben nach unten zu erstellen. (Icbdc2)

  • Die Eigenschaften cancelOnBackPress und cancelOnClickOutside wurden zu AndroidDialogProperties hinzugefügt. Damit können Sie konfigurieren, wann die onDismissRequest-Lambda-Funktion des Dialogfelds aufgerufen wird. (If5e17)

  • Die PainterResource API wurde hinzugefügt, um undurchsichtig geladene Painter-Objekte aus gerasterten Asset-Formaten (wie PNGs) oder VectorDrawables zu verarbeiten. Nutzer müssen den Asset-Typ nicht mehr im Voraus bestimmen und können diese Methode aufrufen, um ein Painter-Objekt für zusammensetzbare Bilder oder Painter-Modifikatoren abzurufen. (I2c703, b/173818471)

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

  • „ContentDrawScope“ wurde in das ui-graphics-Modul verschoben, (Iee043, b/173832789)

  • Pfadeffekt-Grafik-API wurde eingeführt, um verschiedene Muster für Strich-Formen bereitzustellen. Die Verwendung von NativePathEffect wurde zugunsten der erwarteten/tatsächlichen Implementierung von PathEffect eingestellt. (I5e976, b/171072166)

  • IdlingResource-Schnittstellen wurden zu Compose als eine von Compose unterstützte Variante der inaktiven Espresso-Ressourcen hinzugefügt. Sie können über ComposeTestRule (I433f3) registriert und wieder abgemeldet werden.

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

Fehlerkorrekturen

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

    CompositionData und CompositionGroup wurden als Ersatz für die UI-Tooling API hinzugefügt, mit der Informationen zur Zusammensetzung extrahiert werden können. Sie sind öffentlich, aber nicht für die Verwendung außerhalb der UI-Tooling API gedacht, da sie die Rohdaten bereitstellen, die die UI-Tooling API interpretiert (I31a9c).

  • Überarbeitetes ShaderBrush, um eine Shader-Instanz langsam zu erstellen, wenn Größeninformationen aus der Zeichenumgebung verfügbar sind. Dies ist nützlich, um Farbverläufe zu definieren, die zum Zeitpunkt der Erstellung die gesamten Zeichengrenzen einer zusammensetzbaren Funktion einnehmen, ohne benutzerdefinierte DrawModifier-Implementierungen zu implementieren.

    Die Konstruktor-APIs für Gradientenfunktionen wurden zugunsten von Factory-Methoden für ein Gradient-Objekt eingestellt. (I511fc, b/173066799)

  • LazyColumnFor, LazyRowFor, LazyColumnForIndexed und LazyRowForIndexed werden eingestellt. Stattdessen LazyColumn und LazyRow verwenden (I5b48c)

  • Verworfene BuildCompat.isAtLeastR (Idb37e)

  • Die Factory-Funktion buildAnnotatedString zum Erstellen eines AnnotatedString wurde hinzugefügt. Eingestellte Builder-Funktion für annotierteStrings. (Idfe0b)

  • Die Erweiterungsmethoden für Float und Double zur Umwandlung von Werten in Radianten wurden entfernt. In eine private Funktion in der Implementierung des PathParser verschoben, wo sie nur verwendet wurde (I25f52)

Version 1.0.0-alpha08

2. Dezember 2020

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

API-Änderungen

  • Semantische Aktion hinzufügen – Schließen (I2b706)
  • Die DrawModifier APIs wurden aus dem Paket „androidx.compose.ui“ in das Paket „androidx.compose.ui.draw“ verschoben. Erstellung der Datei DrawModifierveraltet.kt zur Einbindung von typealiases/helper-Methoden zur Unterstützung der Migration von den eingestellten zu den aktuellen APIs (Id6044, b/173834241)
  • Umbenennung von Modifier.drawLayer in Modifier.graphicsLayer. Verwandte Klassen wurden entsprechend dem API-Feedback in "GraphicsLayer" aktualisiert. (I0bd29, b/173834241)
  • Es wurden neue Methoden „placeable.placeWithLayer()“ und „placeable.placeRelativeWithLayer()“ hinzugefügt, die es benutzerdefinierten Layouts und Layoutmodifikatoren ermöglichen, einem Kind eine Grafikebene für seine Zeichnung hinzuzufügen. Da wir zunächst Neuzeichnungen optimieren können, müssen wir also nicht den Inhalt neu zeichnen, wenn wir ein untergeordnetes Element verschieben müssen. Zweitens können wir Zeichentransformationen für ein untergeordnetes Element anwenden (Ibd8f6, b/170296989, b/171493718, b/173030831).
  • <T> wurde aus der SubcomposeLayout-Deklaration entfernt. Sie können sie jetzt verwenden, ohne einen Typ anzugeben. (Ib60c8)
  • Modifier.scale/rotate APIs wurden als Funktionen fürdrawLayer hinzugefügt.
    • Modifier.drawOpacity wurde in Modifier.alpha umbenannt
    • Modifier.drawShadow wurde in Modifier.shadow umbenannt (I264ca, b/173208140)
  • Die Verfügbarkeits- und Positionsfelder von PointerInputData sind nicht mehr Nullwerte zulässig. (Id468a)
  • „MaterialTheme“ legt jetzt die richtigen Farben für Auswahlziehpunkte und Auswahlhintergrund fest. Nicht-Material-Apps können AmbientTextSelectionColors manuell verwenden, um die für die Auswahl verwendeten Farben anzupassen. (I1e6f4, b/139320372, b/139320907)
  • WindowManager.isWindowFocused wurde hinzugefügt, um zu überprüfen, ob das Host-Fenster im Fokus ist, sowie ein WindowFocusObserver, das einen onWindowFocusChanged-Callback bereitstellt. (I53b2a, b/170932874)
  • Aktualisierung der TransformOrigin API mit der Desstrukturierungssyntax, die pivotFractionX und pivotFractionY als component1 und component2 zurückgibt (If43c4, b/173586560)
  • Es wurde eine Lint-Prüfung für die Benennung und Position von zusammensetzbaren Lambda-Parametern hinzugefügt, um die Konsistenz mit den Erstellungsrichtlinien zu prüfen. Außerdem wurden einige APIs mit children als Name für die nachgestellte Lambda-Funktion gemäß Lint-Prüfung und Anleitung zu content migriert. (Iec48e)
  • Es wurde eine API hinzugefügt, mit der geprüft wird, ob beim Senden eines Tastaturereignisses die Modifikatortasten Alt, Strg, Meta oder Umschalttaste gedrückt wurden. (I50ed9)
  • Eine neue Modifier.drawLayer()-Überlastung wurde hinzugefügt. Dabei wird ein Lambda-Block auf einem neuen GraphicsLayerScope-Element verwendet, in dem die Ebenenparameter so definiert werden, dass bei einer Statusänderung Neuzusammensetzung und Layout übersprungen werden können. DrawLayerModifier ist jetzt intern verfügbar, um die Migration der Logik in die Methode „placeable.placeWithLayer()“ von LayoutModifier (I15e9f, b/173030831) durchzuführen.
  • Ambients mit dem Namen Ambient als Suffix wurden eingestellt und durch neue Properties mit dem Präfix „Ambient“ ersetzt. Dabei wurden andere Richtlinien für Ambients und die Compose API befolgt. (I33440)
  • androidx.compose.ui.text.Typeface nach androidx.compose.ui.text.font.Typeface (Ic2b81) verschoben
  • Das Semantics-Argument „mergeAllDescendants“ wurde in „mergeDescendants“ umbenannt. (Ib6250)
  • Neue API zur Erkennung von Ziehbewegungen, die die Zeigereingabe sperrt, einschließlich der Sperre der Ausrichtung. (Icef25)
  • VectorAsset wurde in ImageVector verschoben und VectorAsset wurde in Builder umbenannt, um gemäß den API-Richtlinien eine innere Klasse von ImageVector zu sein. typealias von VectorAssetBuilder wurde zur Verknüpfung mit ImageVector.Builder für Compat hinzugefügt. (Icfdc8)
  • Umbenennung von ImageAsset und zugehörigen Methoden in ImageBitmap. (Ia2d99)
  • Fügen Sie den Parameter „zIndex“ für „place()“ von PlacementScope hinzu, sodass „Modifier.zIndex()“ jetzt als LayoutModifier und jedes benutzerdefinierte Layout zIndexe für die untergeordneten Elemente direkt im Placement-Block festgelegt werden kann (I711f7, b/171493718).
  • Semantik-Eigenschaften der Grundlage in die Benutzeroberfläche verschoben (I6f05c)
  • „place(Offset)“ und „placeRelative(Offset)“ werden abgelehnt. Verwenden Sie stattdessen Überlastungen mit Ganzzahl-Offsets (I4c5e7).
  • Zuvor eingestellte APIs wurden entfernt: Modifier.onPositioned wurde entfernt. Verwende Modifier.onGloballyPositioned. Modifier.onDraw wurde entfernt. Verwende Modifier.onDrawBehind. Modifier.plus wurde entfernt. Verwende dann Modifier.then. „Farbe.Nicht festgelegt“ wurde entfernt. Verwenden Sie „Farbe.Nicht angegeben“. Die PxBounds-Klasse wurde entfernt. Verwenden Sie stattdessen Rect. (Ie9d02, b/172562222)
  • Die Ausrichtungsoberfläche wurde aktualisiert und funktionsfähig gemacht. (I46a07, b/172311734)
  • Die Bewegungserkennung für Tippen, Doppeltippen, langes Drücken und Drücken wurde mit der neuen Eingabe für den Anhalten des Zeigers hinzugefügt. Außerdem wurden einige Dienstprogramme hinzugefügt, mit denen Entwickler ihre eigenen Gestendetektoren einfacher schreiben können. (I00807)
  • id wurde für LayoutIdParentData in layoutId umbenannt. Measurable.id wurde in Measurable.layoutId umbenannt. (Iadbcb, b/172449643)
  • Neuer Multi-Touch-Gestenerkennung, einschließlich Hilfsprogrammen zum Erkennen von Drehung, Zoomen und Schwenken. (Ic459d)
  • Einführung der APIs SweepGradientShader und SweepGradientBrush. (Ia22c1)
  • Die Zeitsteuerung in Tests (TestAnimationClock und deren Nutzung) ist jetzt experimentell (I6ef86, b/171378521).
  • Fügen Sie koroutinebasierte Scroll-APIs hinzu:

    Es werden LazyListState.snapToItem und LazyListState.smoothScrollBy sowie untergeordnete APIs für die Scrollsteuerung hinzugefügt. Diese APIs stellen eine Schnittstelle zum Anhalten bereit, über die das Scrollen gesteuert wird, das erst nach dem Scrollen beendet wird. (Ie5642)

  • Für Modifier.focusable wurde ein Grund hinzugefügt. Hiermit können Sie einer Komponente fokussierbares Verhalten mit korrekter Semantik und Zugänglichkeit hinzufügen. (I41eb9, b/152525426, b/162865824)

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

  • AndroidComposeTestRule kann jetzt benutzerdefinierte Aktivitäts-Launcher akzeptieren (Ib8288, b/153623653, b/154135019).

  • „TextLayoutResult.getLinevisibleEnd“ wurde eingestellt. Als Ersatz verfügt TextLayoutResult.getLineEnd jetzt über den neuen Parameter visibleEnd. (I73282)

  • Aktualisierte TextFieldValue API

    • TextFieldValue.composition schreibgeschützt
    • Entfernte Ausnahme für ungültigen Auswahlbereich ausgelöst (I4a675, b/172239032)
  • Unterstützung von TtsAnnotation für die Sprachausgabe-Engine. (I54cc6)

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

Fehlerkorrekturen

  • Der Ausrichtungsparameter von Box wurde in contentAlignment umbenannt. (I2c957)
  • Die Modifikatoren „offsetPx“ wurden in „offset“ umbenannt. Sie verwenden jetzt Lambda-Parameter anstelle von „State“. (Ic3021, b/173594846)
  • Der Parameter „resetInput“ wurde zu TextInputService#onStateUpdated hinzugefügt (I3e8f5, b/172239032, b/171860947).
  • In den zusammensetzbaren Funktionen wurde eine Lint-Prüfung für Modifikatorparameter hinzugefügt. Mit dieser Lint-Prüfung werden Benennung, Rückgabetyp, Standardwert und Reihenfolge des Parameters auf Konsistenz mit den Erstellungsrichtlinien geprüft. (If493b)
  • Vorübergehend hinzugefügte Option, mit der TestAnimationClock von MonotonicFrameClock gesteuert werden kann (I1403b, b/173402197)
  • Android Typeface-Wrapper wurde hinzugefügt. Sie können ein Android-Schriftarten über die Funktion typeface laden, z.B. typeface(Typeface.DEFAULT). Auch typefaceFromFontFamily() in typeface() umbenannt (I52ab7)
  • Es wurde eine Lint-Prüfung hinzugefügt, mit der geprüft wird, ob die Werksfunktionen des Modifiers im Modifier als Erweiterungen definiert sind, sodass sie fließend miteinander verkettet werden können. (I07981)
  • Entfernen Sie das alte UI-Test-Modul und die zugehörigen Stubs (I3a7cb).
  • Recomposer akzeptiert keinen EmbeddingContext mehr. Erforderliche Planungsabhängigkeiten werden aus „EffectCoroutineContext“ abgerufen. FrameManager wurde eingestellt. Plattformintegrationen sollten ihre eigene globale Snapshot-Verarbeitung initialisieren. (I02369)
  • Stilinformationen an den Knoten für Bedienungshilfen übergeben. (If5e8d)
  • "TextUnit.Inherit" wird in "TextUnit.Unspecific" (TextUnit.Inherit) umbenannt. (Ifce19)

Compose UI-Version 1.0.0-alpha07

11. November 2020

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

API-Änderungen

  • Einführung der Inline-Klasse ScaleFactor zur Darstellung von Skalierungsfaktoren für die horizontale und vertikale Achse unabhängig voneinander, um Anwendungsfälle mit nicht einheitlicher Skalierung zu unterstützen.
    • Die Methode „computeScaleFactor“ wurde zu ContentScale hinzugefügt.
    • ContentScale.FillBounds wurde hinzugefügt, um eine uneinheitliche Skalierung durchzuführen und die Quellgrenzen so zu erweitern, dass das Ziel vollständig belegt ist.
    • Es wurden Operatormethoden zur Berechnung von ScaleFactor-Parametern mit Größenparametern hinzugefügt.
    • (Ic96a6, b/172291582)
  • Die Fabriken BiasAlignment und BiasAbsoluteAlignment zum Erstellen von Ausrichtungen wurden hinzugefügt. (Iac836, b/169406772)
  • Einem Entwickler ermöglichen, den Fokus klar zu machen (I90372)
  • Es wurde ein Fehler behoben, der dazu führte, dass für Ansichten innerhalb von „Compose“ keine Höhen gezeichnet wurden. (If7782)
  • Die onDrawBehind API wurde in ContentDrawScope erstellt, um der Namenskonvention "Modifier.drawBehind" zu entsprechen. (I4fc3a, b/171955269)
  • Zusätzlicher Support für den Kameraabstand wird zur Ergänzung der 3D-Transformationen RotationX/rotationY in Layer-APIs hinzugefügt. (I40213, b/171492100)
  • SelectionContainer ohne Callback (Ibfadb) hinzugefügt
  • Die Annotation 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“ (Ied2e7) verschoben
  • Die Deckkraft wurde aus dem Modifikator „drawShadow()“ entfernt, da er verwirrend war. (I82c62, b/171624638)
  • „MeasureResult“ wurde aus MeasureScope verschoben. (Ibf96d, b/171184002)
  • Einige Layout-Symbole wurden von androidx.compose.ui nach androidx.compose.layout.ui verschoben. (I0fa98, b/170475424)
  • Verworfenes FocusState2-Objekt entfernt (I686cb, b/168686446)
  • ZIndexModifier ist jetzt intern (I1808b, b/171493718)
  • Der Rückgabetyp der lerp-Methode für Größenparameter wurde aktualisiert, damit eine Größe ungleich null zurückgegeben wird, um unnötige Boxen zu vermeiden. (Ib0044)
  • TestMonotonicFrameClock wurde zum Testen von Code hinzugefügt, der auf der Funktion MonotonicFrameClock von Composer basiert, um auf Compositions-Frame-Ereignisse zu warten. Dazu wird der runBlockingTest (I4402f) von kotlinx-coroutines-test verwendet.
  • DrawingScope.localToGlobal wurde entfernt (I15299, b/171462785)
  • onAllNodesWithSubstring-Finder (I81dd7, b/171462889) hinzugefügt
  • Das Modul androidx.ui.test wurde eingestellt. Bitte migriere zu androidx.compose.ui.test und androidx.compose.ui.test.junit4 (I452e8)

Fehlerkorrekturen

  • „CaptureToBitmap“ wurde nach „CaptureToImage“ verschoben. (I86385)
  • „fundation.Text“ wurde eingestellt und durch „material.Text“ ersetzt. Eine einfache, neutrale Text-API, die keine Werte aus einem Design verwendet, finden Sie unter androidx.compose.foundation.BasicText. (If64cb)
  • Textfelder aktualisieren, damit KeyboardOptions unterstützt werden (Ida7f3)
  • Benennen Sie KeyboardOptions in ImeOptions um (I82f36).
  • KeyboardType und ImeAction wurden in KeyboardOptions (I910ce) verschoben.
  • „OfferDefault“ wurde als Alternative zur Angabe von Umgebungswerten hinzugefügt. Damit können Sie Umgebungswerte angeben, die nur festgelegt werden, wenn bereits kein Umgebungswert angegeben wurde. (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 paddingFromBaseline-Modifikator wurde hinzugefügt, um Abstände zwischen Layoutgrenzen und Textreferenzen einfacher angeben zu können. (I0440a, b/170633813)
  • LaunchedTask wurde aus Gründen der Konsistenz mit den SideEffect und DisposableEffect APIs in LaunchedEffect umbenannt. LaunchedEffect ohne Themenparameter ist nicht zulässig, um Best Practices zu fördern. (Ifd3d4)
  • Es wurden zusammensetzbare Ressourcen eingeführt, die sich neu zusammensetzen, wenn die Konfiguration aktualisiert wird. (I6387c, b/167352819)
  • Recomposer erfordert jetzt CoroutineContext beim Erstellen (Ic4610)
  • Summe der zIndex-Werte, wenn mehrere Modifier.zIndex() angewendet wurden. Zuvor hat die erste gespielt. (Ic514c, b/170623936)
  • Änderungen an der internen SlotTable-Implementierung, die sich nicht auf die öffentliche API auswirken sollte (If9828)
  • Autokorrektur für Tastatur-IME-Option (I57b8d) hinzugefügt
  • androidx.ui.test wurde nach 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 freigegeben. Version 1.0.0-alpha06 enthält diese Commits.

API-Änderungen

  • Recomposer ist jetzt eine CompositionReference und eine gültige übergeordnete Komposition. Die explizite Neuerstellung von Komponisten ist jetzt an weniger Stellen erforderlich. (I4036f)
  • Sie sollten VectorPainter zugunsten von MemorystorePainter abschaffen, um besser darauf hinzuweisen, dass die zusammensetzbare API intern das „Erinnern“ nutzt, um Daten über mehrere Kompositionen hinweg zu speichern. (Ifda43)
  • Die Modifier.drawWithCache API wurde aktualisiert, um ContentDrawScope als Empfängerbereich anstelle von DrawScope verfügbar zu machen. Dies ermöglicht Implementierungen, Zeichenbefehle neu anzuordnen. Das ist hilfreich beim Überblenden/Tönen von Anwendungsfällen, in denen Inhaltspixel zuerst gerendert werden müssen, damit der entsprechende Algorithmus des Mischmodus richtig angewendet wird. (Ie7ec8)
  • SimpleContainer nach PopTestUtils.kt (I78c57) verschieben
  • ConsumedData ist keine Datenklasse mehr. Weitere Informationen finden Sie unter https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f).
  • Position des Rtl-Ziehpunkts korrigieren. (I6e1e0)
  • DrawScope und ContentDrawScope wurden in Schnittstellen statt abstrakten Klassen umgestaltet.
    • Wir haben eine CanvasDrawScope- Implementierung von DrawScope erstellt,
    • Wir haben CanvasScope-Implementierungen refaktoriert, um stattdessen CanvasScope zu verwenden.
    • Wir haben DrawContext erstellt, um Abhängigkeiten für DrawScope
    • Verworfene Methoden in DrawScope entfernt (I56f5e)
  • Wichtige Änderung: Der Rückgabewert wurde aus PointerInputFilter.onPointerEvent(...) entfernt, da der einzige Wert, der in Zeigerereignissen geändert werden sollte, Verbrauchsdaten sind. Anstatt Daten von PointerInputFilter.onPointerEvent(...) zurückzugeben, können Sie jetzt nur die Verbrauchsdaten der übergebenen PointerEvents ändern. (I6acd0)
  • MeasureScope und IntrinsicMeasureScope wurden als Schnittstellen erstellt. (I1a087, b/170461665)
  • Die Zusammenführungsfunktion für „AlignLine“ wurde ausgeblendet. (I9da1a, b/170612900, b/170611568)
  • Möglichkeit hinzugefügt, Informationen zum Prüftool in zusammengesetzten Modifikatoren anzugeben (Idee08, b/163494569)
  • Option „SelectAll“ wurde dem Auswahlmenü hinzugefügt (Ief02b).
  • DrawTransform.rotate wurde aktualisiert, sodass der Standard-Pivot-Parameter center verwendet wird, der der Dokumentation entspricht.
    • DrawScope.rotateRad wurde so aktualisiert, dass ein Offset für den Pivot-Punkt verwendet wird, um anderen Transformationsmethoden zu entsprechen.
    • Die Überlastung „DawScope.rotateRad“ mit Gleitkommazahlen für die x- und y-Koordinaten des Drehpunkts wurde eingestellt.
    • (Iffcbb, b/170434992)

Fehlerkorrekturen

  • Die API-Lint-Prüfung für MissingGetterMatchingBuilder ist für Androidx aktiviert (I4bbea, b/138602561).
  • Test hinzufügen. (I6b8ae)
  • Übergänge in ComposeTestRule aktivieren und die Option zum Aktivieren des blinkenden Cursors in ComposeTestRule entfernen. (If0de3)
  • IME-Option für Großschreibung wurde hinzugefügt (I8ac38)
  • CoreTextField (I72e6d) bietet eine einzeilige Tastaturoption.
  • SimpleContainer nach PopTestUtils.kt (I65c3e) verschieben
  • Die Radius API wurde in CornerRadius umbenannt, um ihre Verwendung in der Funktion „Compose“ besser zu verdeutlichen. Die Dokumentation wurde aktualisiert, um anzugeben, dass negative Eckradien auf null gebunden sind. (I130c7, b/168762961)
  • Verbesserte Android-Interoperabilität, da weiterhin MotionEvents an untergeordnete Android-Datenansichten gesendet werden, die für onTouchEvent für alle Aktionen außer ACTION_DOWN den Wert „false“ zurückgeben (I94c5a, b/170320973)
  • Box wurde als Inline-Funktion erstellt. (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 freigegeben. Version 1.0.0-alpha05 enthält diese Commits.

API-Änderungen

  • DSL zum Angeben von Inspector-Informationen hinzufügen (Ic9a22)
  • Langes Drücken in Text verschieben. (Iff2bc)
  • Experimental Modifier.pointerInput sperrt Eingabemodifikator (Ia77d2)
  • Bedienungshilfeaktionen „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 eine Option hinzugefügt, um dies explizit zu konfigurieren (I64966, b/143778148, b/143778149).
  • Verbrauchsdaten sind jetzt änderbar. Außerdem wird bei Aufrufen von Erweiterungsfunktionen, die genutzt werden, keine neue PointerInputChange mehr zurückgegeben, sondern stattdessen die angegebene PointerInputChange geändert.

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

  • Deaktivieren Sie die Auswahl in Text und eine Demo. (Ie7e97)

  • Erstellt inGloballyPositioned eine Inline-Funktion (I15830)

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

  • Die Eigenschaft hasPendingMeasureOrLayout wurde dem Eigentümer hinzugefügt und gibt an, ob für den Eigentümer Layoutarbeiten ausstehen. (I3d9f8, b/169038599)

  • API für die programmatische Klarstellung hinzugefügt (Ie1dc2, b/161487952)

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

  • Größenänderungen

    • „Size.getFlipped“ wurde entfernt
    • „Size.rem“ wurde entfernt
    • „Size.truncDiv“ wurde entfernt (Ief44d, b/169790720)
  • Im Rahmen der Standardisierung von Sentinel-Werten für Inline-Klassen müssen Sie „Color.Unset“ in „Color.Unset“ umbenennen, um Konsistenz mit anderen Inline-Klassen zu gewährleisten (I97611, b/169797763).

  • TextOverflow.None wird eingeführt. Wenn der overflow-Objekt den Wert "None" hat, verarbeitet der Text den Überlauf nicht mehr und meldet seine tatsächliche Größe an LayoutNode. (I175c9, b/158830170)

  • Der Parameter „Scope“ in AnnotatedString.Builder.addStringAnnotation wird aus API-Konsistenz in „Tag“ umbenannt. (I7c8cb)

Fehlerkorrekturen

  • Die Scrollleistung von LazyColumn/Row wird verbessert, da bei jedem Scrollen weniger Arbeit in der Unterzusammensetzung ausgeführt wird. Die neue Methode hasUngültigeations() wurde für die Composition-Klasse hinzugefügt. Die Methode "hasPendingChanges()" von Recomposer wurde in "has Invalidations()" umbenannt (Ib2f32, b/168293643, b/167972292, b/165028371).
  • Die nicht spezifizierten „Size.Unspecific“-Parameter wurden auf Float.NaN anstelle von Float.POSITIVE_INFINITY aktualisiert. Painter-Implementierungen wurden aktualisiert, um sie auf „Size.Unspecific“ und nicht endliche Größen zu vergleichen. (I95a7e)
  • Die Reihenfolge der place()-Aufrufe in benutzerdefinierten Layouts definiert nun die Zeichenreihenfolge für die untergeordneten Elemente (Ibc9f6).
  • Unterstützung für die Barrierefreiheit von AnnotatedString in SpannableString (Ief907)
  • Es wurden Stubs für Android-Klassen auf älteren Plattformen hinzugefügt, um die Verwendung von Reflexionen nach Möglichkeit zu vermeiden. (Ia1790)
  • Behobener Fehler: Wenn die angezeigte Softwaretastatur die Übersetzung der App verursachte, wurden die Koordinaten der Zeigereingabe falsch. (Ic4cec, b/163077821)

Version 1.0.0-alpha04

1. Oktober 2020

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

API-Änderungen

  • "OwnerScope" wurde hinzugefügt, um die Sammlung von Layout- und Beobachtungsbereichen zuzulassen, sobald diese nicht mehr gültig sind. (Ic4cf8)
  • OnRemeasuredModifier und onSizeChanged() wurden hinzugefügt, um einen Callback zu empfangen, wenn das Inhaltslayout neu gemessen und die Größe entsprechend geändert wurde. (I657cf, b/154108792)
  • Semantikaktion für lange Klicks hinzufügen (I6281b, b/156468846)
  • FocusManager wurde auf privat gesetzt. (I7872f)
  • Die Implementierung wurde aktualisiert, um eine dedizierte DrawCacheModifier-Implementierung zu erstellen, anstatt optionale Eigenschaften für DrawModifier hinzuzufügen.

    Die Dokumentation für verschiedene Methoden wurde aktualisiert (Ibd166).

  • Machen Sie TextRange inline, um die Erstellung 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)

  • den Semantikeigenschaften „AccessibilityScrollState“ hinzufügen. (Ifeda9)

  • Einführung von Modifier.drawWithCache zur Unterstützung des Erstellens eines Zeichenobjekts, das Abhängigkeiten neu erstellt, die von Größen-/Statusinformationen abhängig sind (I376dc)

  • Absatzeinschränkungen wurden entfernt. Die Breite wird jetzt direkt an Absatz übergeben. (ICA712)

Fehlerkorrekturen

  • Viele Graphics APIs wurden aktualisiert.
    • Die APIs für Skalierungs- und Rotationstransformationen wurden aktualisiert, sodass ein einziger Offset-Parameter zur Darstellung der Pivot-Koordinaten anstelle separater Gleitkomma-Parameter für die x/y-Koordinaten in DrawScope und DrawTransform verwendet wird.
    • Die Methoden Rect.expandToInclude und Rect.join wurden entfernt.
    • Die Dokumentation für den Radius wurde aktualisiert, sodass jetzt neben dem Ellipsentrainer auch „Oval“ angezeigt wird.
    • Es wurde eine Dokumentation hinzugefügt, in der angegeben wird, dass der öffentliche Konstruktor für die Inline-Radius-Klasse nicht direkt aufgerufen werden soll. Radius-Objekte sollten stattdessen über ihre Funktionskonstruktoren instanziiert werden.
    • RoundRect APIs zur Abfrage von topRight, bottomRight, bottomCenter usw. wurden entfernt.
    • Rect.shift wurde zugunsten von Rect.translate eingestellt
    • RoundRect.grow und Rect.shrink APIs entfernt
    • RoundRect.outerRect wurde in Rect.boundingRect umbenannt
    • Die Methoden RoundRect.middleRect/tallMiddleRect/wideMiddleRect und Rect.isStadium wurden entfernt.
    • RoundRect.longestSide wurde umbenannt in RoundRect.maxDimension
    • RoundRect.shortestSide wurde in RoundRect.minDimension umbenannt
    • RoundRect.center wurde in eine Eigenschaft anstelle einer Funktion geändert
    • Der RoundRect-Konstruktor wurde so aktualisiert, dass Radiuseigenschaften anstelle einzelner Parameter für x/y-Radiuswerte verwendet werden.
    • APIs für die Größe, bei denen angenommen wurde, dass es sich um ein Rechteck mit dem Ursprung 0,0 handelt, wurden entfernt.
    • Zerstörende API zu Radius hinzugefügt
    • Verschiedene RoundRect-Erweiterungsfunktionen wurden zu Eigenschaften migriert
    • (I8f5c7, b/168762961)
  • Foundation.Box wurde eingestellt. Verwende stattdessen „Foundation.layout.Box“. (Ie5950, b/167680279)
  • Stack wurde in Box umbenannt. Die zuvor vorhandene Box wird zugunsten der neuen Box in compose.foundation.layout eingestellt. Das Verhalten des neuen Box besteht darin, untergeordnete Elemente übereinander zu stapeln, wenn es mehrere untergeordnete Elemente hat. Dies unterscheidet sich vom vorherigen Box, das sich ähnlich wie eine Column verhält. (I94893, b/167680279)
  • Parameter für die Dekoration von Boxen wurden eingestellt. Wenn Ihre Box Dekorationen/Füllungen enthalten soll, verwenden Sie stattdessen Modifiers (Modifier.background, Modifier.bound, Modifier.adding) (Ibae92, b/167680279).
  • Viele Graphics APIs wurden aktualisiert.
    • Wir haben die DrawScope APIs mit bereichsspezifischen Transformationsmethoden aktualisiert, um anzuzeigen, dass die Transformation nur innerhalb des Callbacks angewendet und entfernt wird, nachdem der Callback aufgerufen wurde.
    • Die „clipPath“-Dokumentation wurde aktualisiert, sodass jetzt auf „Pfad“ und nicht auf ein abgerundetes Rechteck verwiesen wird.
    • In der Dokumentation wurde der Abstand für den rechten Parameter in „clipPath“ festgelegt.
    • „DrawScope.drawCanvas“ wurde in „drawIntoCanvas“ umbenannt und der Größenparameter wurde entfernt.
    • Umbenennung der dx/dy-Parameter in der Einfügungsmethode in horizontal und vertikal
    • Zusätzliche Überlastung, die allen 4 Grenzen denselben Wert bietet,
    • Die Dokumentation zur Einfügungsmethode, die darauf hinweist, dass Einsatz auf alle 4 Seiten angewendet wird, wurde entfernt.
    • Aktualisierte Dokumentation für die Rect-Klasse
    • Die Kommentare zu den Rect-Parametern wurden aktualisiert, damit sie dem kdoc-Stil entsprechen.
    • Rect.join und Rect.expandToInclude entfernt
    • Überlastung für Rect.translate(offset) erstellt und Rect.shift eingestellt
    • (If086a, b/167737376)
  • Die annotierte „rootAnimationClockFactory“, „transitsEnabled“, „blinkingCursorEnabled“ und „textInputServiceFactory“ mit @visibleForTesting, die in die interne API umgewandelt und die KDOC-Datei ausgeblendet wird (I554eb, b/168308412)
  • Entfernen Sie SelectionContainer aus dem oberen Bereich, um die Standardauswahl zu deaktivieren und unerwartetes Verhalten zu vermeiden. Man kann insbesondere einen SelectionContainer verwenden, um den Inhalt zu umschließen, der stattdessen auswählbar sein muss. (I8dfe0, b/158459594)

Version 1.0.0-alpha03

16. September 2020

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

API-Änderungen

  • Aktionen zur Semantik zum Vor- und Zurückscrollen wurden entfernt. Schritte wurden in „AccessibilityRangeInfo“ hinzugefügt. (Ia47b0)
  • onInvalidate() wurde aus Owner entfernt: OwnedLayer verarbeitet die Entwertung. (Ica72b, b/162061312)
  • Operatormethoden, die Offset-Parameter verwenden, wurden aus der Größe API entfernt. Das Ergebnis dieser Vorgänge ist unklar und der Ergebnistyp dafür ist unerwartet. Soll z. B. „size-offset“ ein Offset- oder ein Größenergebnis mit der Differenz zurückgeben?

    Außerdem wurden eingestellte Methoden für die Größenklasse entfernt. (Iec902, b/166514214)

Fehlerkorrekturen

  • Ein Fehler wurde behoben, bei dem Elemente von LazyColumn manchmal falsch gezeichnet wurden. Dies führte unter einigen Bedingungen ebenfalls zu Abstürzen. (Ibcf17, b/163066980, b/165921895)
  • DpConstraints und APIs, die sie verwenden, wurden eingestellt. (I90cdb, b/167389835)
  • createAndroidComposeRule und AndroidInputDispatcher von androidx.ui.test.android nach androidx.ui.test verschoben (Idef08, b/164060572)
  • Die Nutzung der Gravitation wurde konsequent umbenannt, um die Layout-APIs auszurichten. (I2421a, b/164077038)
  • onNode und andere globale Methoden wurden zu ComposeTestRule hinzugefügt, da die aktuellen globalen Methoden nicht mehr unterstützt werden. (IEAe36)

Version 1.0.0-alpha02

2. September 2020

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

API-Änderungen

  • Entfernen Sie den Callback, um den Eigentümer zu benachrichtigen, wenn sich die Grenzen des Layoutknotens ändern. (If654e, b/166106882)
  • Unterstützung für Fülltypparameter in Vektorgrafikpfaden hinzugefügt, um Aussparungen von Formen gemäß den Füllregeln für gerade ungerade oder nicht-Null-Pfade zu unterstützen. (I43dd2)
  • Verfügbarkeit und Geschwindigkeit sind jetzt Inline-Klassen (I48f4a).
  • Dauer ist jetzt ein Inline-Kurs (I565eb)
  • Fügen Sie einen Callback hinzu, der den Eigentümer benachrichtigt, wenn sich die Grenzen des Layoutknotens ändern. (Ic40b3)
  • Ein Problem wurde behoben, bei dem der Rect-Funktionskonstruktor mit Offset und Radius das Rechteck in der Reihenfolge von links, rechts, oben, unten statt links, oben, rechts und unten erstellt hat.

    Die nicht mehr unterstützten Companion-Methoden für Rect wurden zugunsten von Funktionskonstruktoren entfernt.

    Tests zur Verifizierung von Methoden in Rect.kt hinzugefügt (I08460, b/165822356)

Fehlerkorrekturen

  • MutableRect wurde hinzugefügt, ein Rechteck, das geändert werden kann. (I71bd2, b/160140398)
  • Matrix4 wurde durch Matrix ersetzt. Alle anderen Teile des vectormath-Pakets wurden entfernt. (Ibd665, b/160140398)
  • Die Aufrufkonvention für zusammensetzbare 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 funktionsgefährdenden Änderung auf Quellebene, da die einzigen geänderten APIs Compiler APIs sind, für die eine ausdrückliche Zustimmung gilt. (I7afd2, b/158123185)

  • Es wurde ein Absturz behoben, der bei der Weiterleitung an einen PointerInputFilter dazu führen konnte, dass der PointerInputFilter synchron entfernt wurde. (I58f25)

Version 1.0.0-alpha01

26. August 2020

androidx.compose.ui:ui-*:1.0.0-alpha01 wird freigegeben. 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 freigegeben. Version 0.1.0-dev17 enthält diese Commits.

API-Änderungen

  • emitView“ wurde verworfen. Verwenden Sie nach Möglichkeit stattdessen AndroidView, um Ansichten innerhalb von „Compose“ auszugeben. Beachten Sie, dass das direkte Erstellen von Ansichten und ViewGroups in Zukunft nur noch unterstützt wird, wenn es sich um Blätter im Zusammensetzungsbaum handelt. In diesem Fall ist dies mit AndroidView möglich. (I29b1e, b/163871221)
  • FocusState2 wurde verworfen und durch FocusState ersetzt (Ia8b79, b/160822876, b/160923332)
  • Die eingestellten AndroidView-Überlastungen wurden entfernt. (I946b9, b/163802393)
  • Benutzerdefinierte Emits können jetzt deklarieren, dass einer oder mehrere ihrer Setter unabhängig vom Emit übersprungen und neu zusammengesetzt werden können. (Ibbd13)
  • Vektorklassen wurden so geändert, dass sie keine Datenklassen mehr sind, da dieselbe Objektinstanz für die Zusammensetzung verwendet wird.

    Das Flag „mutableStateOf“ wurde für VectorPainter hinzugefügt, damit es bedingt neu gezeichnet werden kann, wenn sich der Inhalt des Vektors ändert.

    Die VectorComponent-Instanz wurde umgestaltet, damit sie Teil von VectorPainter ist, da sie für verschiedene Kompositionen wiederverwendet wird.

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

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

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

  • Modifikatorparameter wurde zu SelectionContainer hinzugefügt (I4aada, b/161487952).

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

  • SemanticsPropertyKey wurde mergePolicy Lambda hinzugefügt. Damit kann eine benutzerdefinierte Richtlinie für die Zusammenführung von „MergeAllDescendants“ definiert werden. Standardmäßig wird der übergeordnete Wert verwendet, falls dieser bereits vorhanden ist. Andernfalls wird der untergeordnete Wert verwendet. (Iaf6c4, b/161979921)

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

  • FocusManager hinzugefügt, mit dem die allgemeine Fokuslogik aus AndroidComposeView verschoben wird (I528ef, b/161487952, b/162206799)

  • PointerEventPass-Namen für Alpha-Release aktualisiert. Ifda6f.

  • „IntOffset“ ist jetzt eine Inline-Klasse (Iac0bf)

  • IntSize ist jetzt eine Inline-Klasse (I2bf42)

  • PlacementScope.placeAbsolute() wurde in PlacementScope.place() umbenannt und die vorherige PlacementScope.place() wurde in PlacementScope.placeRelative() umbenannt. Daher spiegelt die Methode PlacementScope.place() die Position in linksläufigen Kontexten nicht mehr automatisch wider. Wenn dies gewünscht ist, verwenden Sie stattdessen PlacementScope.placeRelative(). (I873ac, b/162916675)

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

  • Einige Test-Dienstprogramme wurden nicht öffentlich gemacht, weil sie nicht da sind, wo sie gehören. Das Video wird in Zukunft öffentlich gemacht. (I32ab1)

  • Refaktorierte Organisation des Zeiger-Eingabecodes. (Ie3f45)

  • PxBounds wurde zugunsten von Rect eingestellt. Alle Verwendungen von PxBounds mit rect wurden aktualisiert und die korrekte Einstellung zum Verwerfen/Ersetzen durch Anmerkungen hinzugefügt, um die Migration zu erleichtern. (I37038, b/162627058)

  • Veraltetes KeyEvent2 wurde entfernt. Verwenden Sie stattdessen KeyEvent. (Ied2d0, b/162097587)

  • „KeyEvent“ hat eine Unicode-Eigenschaft, mit der das Unicode-Zeichen abgerufen werden kann, das von der angegebenen Kombination aus Schlüssel und Metaschlüsselstatus generiert wurde (If3afc).

  • Das benutzerdefinierte Ereignis DelayUp und verwandte Klassen wurden als Opt-in-API eingeführt, da diese wahrscheinlich geändert wird. (I56d6f)

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

  • Fügen Sie Paragraph.paint die Parameter color, shadow und TextDecoration hinzu, um unnötige Neuerstellung von Paragraph zu vermeiden. (I81689)

Fehlerkorrekturen

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

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

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

  • Ein Absturz, wenn ein Element, das den Status speichert, in der For-Schleife verwendet wurde, wird behoben. Jetzt ist der gleiche Schlüssel in savedInstanceState() zulässig. Die API von UiSavedStateRegistry ist jetzt an diese neue Anforderung angepasst (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561).

  • Die zusammensetzbare Funktion state { ... } wurde verworfen und durch explizite Aufrufe von remember { mutableStateOf(...) } ersetzt. Dies reduziert die API-Oberfläche insgesamt und die Anzahl der Konzepte für die Statusverwaltung und entspricht dem Muster by mutableStateOf() für die Delegierung von Klassenattributen. (Ia5727)

  • RRect wurde in RoundRect umbenannt, um besser zu Zusammensetzungsmustern zu passen. Ähnliche Funktionskonstruktoren wie RRect und eingestellte RRect-Funktionskonstruktoren wurden erstellt (I5d325).

Version 0.1.0-dev16

5. August 2020

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

API-Änderungen

  • „OnChildPositioned“ wurde eingestellt. Verwenden Sie stattdessen OnPositioned für das untergeordnete Element. (I87f95, b/162109766)
  • „setViewContent“ wurde eingestellt. Verwenden Sie stattdessen „setContent“. (I7e497, b/160335130)
  • Die AndroidViewBinding API zum Aufblasen und Zusammenstellen von Layoutressourcen basierend auf ViewBinding wurde hinzugefügt. (I081c6)
  • KeyEvent2 wird durch KeyEvent (I2d770, b/162097585) ersetzt.
  • Unterstützung für den 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 Benutzeroberfläche verschieben (I47fa6)
  • 2 PointerEventPasses, die nicht mehr benötigt werden, wurden entfernt. (I33ca7)
  • PointerInteropModifier implementiert, um MotionEvents zu empfangen und mit Compose zu interagieren, als ob es sich um eine Implementierung einer Android-Ansicht handelt. (Ieb08c)
  • Der eingestellte Tag-Modifikator wurde entfernt. Verwenden Sie stattdessen „layoutId“. (Idaa05, b/162023919)
  • Die APIs für die Unterstützung von rechts nach links wurden aktualisiert. LayoutDirectionAmbient wurde hinzugefügt, mit dem sich die Layoutrichtung lesen und ändern lässt. Modifier.rtl und Modifier.ltr wurden entfernt. (I080b3)
  • Unterstützung für das Schneiden von Pfaden in Vektorgrafiken (Ie16c9, b/158188351)
  • Modifier.layout() wurde hinzugefügt, mit dem benutzerdefinierte Layout-Modifikatoren bequem erstellt werden können (I73b69, b/161355194).
  • Eine neue AndroidView API wurde hinzugefügt und die vorhandenen wurden eingestellt. (I5bcfd)
  • Modifier.plus wurde eingestellt. Verwende stattdessen Modifier.then. „Dann“ gibt ein stärkeres Signal für die Sortierung, verhindert aber auch die Eingabe von Modifier.padding().background() + anotherModifier, wodurch die Kette unterbrochen wird und schwerer zu lesen ist (Iedd58, b/161529964).
  • Fügen Sie [ Abstrakt]abgeleitete Klassen von ComposeView-Ansicht zum Hosten von Compose-Inhalten in einer View-Hierarchie hinzu. (I46357)
  • Row und Column sind jetzt Inline-Funktionen, wodurch der Aufwand für ihre Verwendung erheblich reduziert wird. (I75c10)
  • SubcomposeLayout wird hinzugefügt. Es handelt sich um eine Low-Level-Primitive, mit der die untergeordneten Elemente während der Messung erstellt werden können, falls einige Werte verwendet werden sollen, die erst später während der Messung für die Unterstrukturzusammensetzung verfügbar sind. Zum Beispiel wird WithConstraints nicht mit SubcomposeLayout implementiert. (I25cc8)
  • SemanticsNode.positionInRoot wurde hinzugefügt, um die Position eines SemantikNode relativ zum Stamm der Compose-Hierarchie abzurufen (Icdf26, b/161336532).
  • MotionEvents wurde von Android über Compose und zurück zu Android übertragen. (I14be8, b/158034713)
  • Drop-down-Pop-up wurde entfernt. (I00430)
  • Die Pop-up-Position auf ausgeschnittenen Displays wurde korrigiert. (Idd7dd)
  • Bedienungshilfen-Aktion hinzufügen, um TextLayoutResult (I9d6e6) abzurufen
  • RemeasurementModifier wurde hinzugefügt. Damit kann das Layout synchron neu gemessen werden. Im Allgemeinen ist sie nie erforderlich, da Neuberechnungen bzw. Neuanordnungen automatisch erfolgen. Wir verwenden sie jedoch beim Scrollen in LazyColumnItems. (I5f331, b/160791058)
  • Entfernen Sie getLineEllipsisOffset/getLineEllipsisCount. Verwenden Sie stattdessen getLinevisibleEnd/getLineEnd/isLineEllipwidth. (I85aa2)
  • Fügen Sie als Best Practice einige Markierungen/Vermerke hinzu. (I66b20)
  • mehr Zeilen-APIs in TextLayoutResult verfügbar. (I79bd2)
  • Integrierte Vektorkonverter zum Konvertieren von integrierten Einheiten sind jetzt über Foo.VectorConverter zugänglich, z. B.Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter usw. (I3e273)

Fehlerkorrekturen

  • Umfangreiche API-Fehlerkorrekturen (I077bc)
    1. Nicht verwendete OffsetBase-Schnittstelle entfernen
    2. Die Klassen „Align Offset“ und „IntOffset“ für eine einheitliche API-Oberfläche
    3. Benennen Sie „IntOffset.Origin“ in „IntOffset.Zero“ um, um der Offset API zu entsprechen.
    4. Die nativeCanvas-Methode wurde aus der Canvas-Oberfläche verschoben, damit Nutzer ihre eigenen Canvas-Instanzen erstellen können.
    5. Die Stub-EmptyCanvas-Klasse wurde erstellt, um DrrawScope in einen Nicht-Null-Parameter anstelle von lateinit zu refaktorieren und eine Nicht-Null-Zulässigkeit des Felds zu gewährleisten.
    6. ClipOp-Enums wurden in Pascal Case umbenannt
    7. FilterQuality-Enums wurden in Pascal Case umbenannt
    8. Die StrokeJoin-Enums wurden in „Pascal Case“ umbenannt
    9. PointMode-Enums wurden in Pascal Case umbenannt
    10. PaintingStyle-Enums wurden in Pascal Case umbenannt
    11. PathFillType-Enums wurden in Pascal-Case-Schreibweise umbenannt
    12. Die StrokeCap-Enums wurden in „Pascal Case“ umbenannt
    13. Die DrawCache-Implementierung wurde so aktualisiert, dass latinit-Parameter nicht mehr verwendet werden.
    14. DrawScope aktualisiert, um die Lazy-Delegierung für die internen Parameter „fillPaint“ und „StrokePaint“ nicht mehr zu verwenden.
    15. Die zusammensetzbare Image-Funktion wurde aktualisiert, um die Nutzung von Box zu vermeiden und so den Aufwand zu reduzieren.
    16. Die Outline-Klasse wurde so aktualisiert, dass sie @Unmutable-Annotationen enthält.
    17. PathNode wurde aktualisiert und enthält nun @Immutable-Annotationen für jede Pfadanweisung.
    18. Die Vektorunterzusammensetzung wurde aktualisiert, um redundante bedingte Prüfungen auf Gleichheit zu entfernen, da sie in der Zusammensetzung bereits verarbeitet werden.
    19. Eingestellte Methoden des Companion-Konstruktors „Rect“ zugunsten von Funktionskonstruktoren
    20. Aktualisierte Brush-Klassen und Funktionskonstruktoren mit den APIs @Immutable und @Stable
    21. VertexMode-Enum wurde auf „PascalCase“ aktualisiert
    22. Wir haben die DrawScope selectPaint-Methode aktualisiert, damit Strichparameter der Farbdarstellung bedingt überschrieben werden, wenn sie sich geändert haben.
    23. „Größe“ wurde aktualisiert, um eine destruktive API hinzuzufügen, „UnspecificSize“ in „Nicht angegeben“ umzubenennen und nicht verwendete Methoden zu entfernen
  • Die Zusammensetzung der BlendMode API-Nutzung wurde aktualisiert, um je nach API-Level eine korrekte Zuordnung zwischen den BlendModes- und PorterDuff-Modi des Android-Frameworks zu erzielen. Die BlendMode#isSupported API wurde eingeführt, um vor der Verwendung als Funktionsabfrage zu ermitteln, ob BlendMode auf dem Gerät unterstützt wird. (I0ef42)
  • LazyItemScope wurde für den Parameter „itemContent“ von Lazy-Listen hinzugefügt. Sie bietet Modifikatoren zum Ausfüllen der maximalen Größe des übergeordneten Elements, wodurch der Anwendungsfall gelöst wird, in dem das Element den Darstellungsbereich ausfüllen sollte und die reguläre 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 (I84f84) umbenannt
  • foundation.shape.corner-Paket wurde auf foundation.share reduziert (I46491, b/161887429)
  • AndroidComposeTestRule wurde in createAndroidComposeRule umbenannt. (I70aaf)
  • TextLayoutResult wurden weitere APIs hinzugefügt. (Id7e04)
  • Material FilledTextField wurde in TextField umbenannt und die grundlegende TextField wurde in BaseTextField umbenannt, damit die gewünschte API am einfachsten zu finden und zu verwenden ist (Ia6242, b/155482676).
  • "Modifier.drawBackground" wurde in "Modifier.background" (I13677) umbenannt.

Version 0.1.0-dev15

22. Juli 2020

androidx.compose.ui:ui-*:0.1.0-dev15 wird freigegeben. Version 0.1.0-dev15 enthält diese Commits.

Abhängigkeiten aktualisieren

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

API-Änderungen

  • FocusModifizierer wurde zugunsten von Modifier.focus, Modifier.focusRequester, Modifier.focusObserver eingestellt. FocusState und FocusDetailState wurden zugunsten von FocusState2 eingestellt (I46919, b/160822875, b/160922136).
  • Ein Modifikator wurde hinzugefügt, um Änderungen des Fokusstatus zu beobachten. (I05866, b/160924455, b/160923326)
  • Modifikator hinzugefügt, um Fokusänderungen anzufordern (I8dd73, b/161182057, b/160924778)
  • Aktivieren Sie das Symbolleistenmenü, um die Funktionen „Kopieren“, „Ausschneiden“ und „Einfügen“ korrekt anzuzeigen. (Id3955)
  • Semantische Einzelwert-Attribute verwenden jetzt einen aufrufenden Stil. So wird beispielsweise „Semantik {hidden = true}“ so geschrieben: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412)
  • Der Modifikator Modifier.focus wurde hinzugefügt, der den FocusModifier ersetzt. (Ib852a, b/160924778)
  • Unverankerte Symbolleiste für die Textfeldauswahl hinzufügen. (Ie8b07)
  • Es wurde eine experimentelle API-Annotation für die schlüsseleingabebezogene API I53c0a hinzugefügt.
  • Es wurde eine experimentelle API-Annotation für die gesamte Focus-bezogene API hinzugefügt (I53b24, b/160903352).
  • FocusState2 hinzugefügt, das FocusDetailState (I0a3ba, b/160822595) ersetzt
  • ExperimentalFocus wurde hinzugefügt, eine @OptIn-Annotation für die Focus API. (I1544b, b/160820961)
  • Eine IntBounds-Einheitenklasse wurde hinzugefügt, die Ganzzahl-Pixel-Grenzen aus dem Layout darstellt. Die API von PopPositionProvider wurde aktualisiert, um sie zu verwenden. (I0d8d0, b/159596546)
  • Applier erfordert jetzt eine Methode „clear()“ zum Entsorgen von Kompositionen (Ibe697).
  • KeyEvent wurde eingestellt und durch KeyEvent2 (I68730) ersetzt.
  • Den Testfindern wurde das neue optionale Flag „useUnmergedTree“ hinzugefügt. (I2ce48)
  • Made LayoutNode experimentelle API (I4f2e9)
  • verschiedenen Inline-Klassentypen wurden Kopiermethoden hinzugefügt, darunter:

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

    • Veraltete Verwendung der Companion-Objekt-Methode „Size.copy“, bevor die Kopiermethode für Instanzen verwendet wird (Ife290, b/159905651)

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

  • TextDirection wird in ResolvedTextDirection (I3ff38) umbenannt

  • Der Layout-Richtungsparameter wurde aus dem Messungsblock der Layout()-Funktion entfernt. Die Layoutrichtung ist jedoch innerhalb des Callbacks über das Messwertbereich-Objekt (Ic7d9d) verfügbar.

  • Auswahlelemente zur Wiederverwendung refaktorieren. (I420e0)

  • Anklickbares Element wurde entfernt. Verwenden Sie Modifier.clickable (I84bdf).

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

  • Vor dieser Änderung konnte das Compose-Compiler-Plug-in Aufrufe an Konstruktoren innerhalb einer @Composable-Funktion nicht einfach abfangen, wenn eine (I5205a, b/158123804) vorhanden war.

  • "Modifier.tag" wurde in "Modifier.layoutId" umbenannt, um eine Verwechslung mit "Modifier.testTag" zu vermeiden. I995f0.

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

  • Der zusammensetzbaren Funktion AndroidView wurde ein Modifikatorparameter hinzugefügt. (I48a88, b/158746303)

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

  • Fügen Sie eine zusammensetzbare Funktion von viewModel() hinzu, mit der ein ViewModel-Modell ähnlich wie in „Activity“ oder „Fragment“ (I5fdd1) erstellt oder bereits erstellt werden kann.

  • Die Verwendung von „IntPx“ wurde durch „Int“ ersetzt. „IntPxPosition“ wurde durch „IntOffset“ ersetzt. IntPxSize durch IntSize ersetzt. (Ib7b44)

  • Wenn Sie die Anzahl der Klassen zur Darstellung von Größeninformationen konsolidieren möchten, sollten Sie die Verwendung der Klasse „Size“ anstelle von „PxSize“ standardisieren. Dies bietet die Vorteile einer Inline-Klasse, da ein „Long“ verwendet werden kann, um zwei Gleitkommawerte zu verpacken, um Breite und Höhe als Gleitkommazahlen darzustellen. (Ic0191)

  • Um die Anzahl der Klassen zur Darstellung von Positionierungsinformationen zu konsolidieren, sollten Sie die Verwendung der Offset-Klasse anstelle von PxPosition standardisieren. Dies bietet die Vorteile einer Inline-Klasse: Sie kann einen Long-Wert verwenden, um zwei Gleitkommawerte zu packen, um x- und y-Offsets als Gleitkommazahlen darzustellen. (I3ad98)

  • Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem nur Dp- und primitive Typen für Pixelparameter verwendet wurden. Px-Klasse vollständig gelöscht (I3ff33)

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

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

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

  • TestTag wurde eingestellt. Verwende stattdessen Modifier.testTag. (If5110, b/157173105)

  • Die standardmäßige No-op-Implementierung von ParentDataModifier#modifyParentData wurde entfernt. Es entsprach damit, die Schnittstelle überhaupt nicht zu implementieren. (I0deaa)

  • Zuvor verworfenes ScaleFit, wie entfernt. Verwenden Sie stattdessen ContentScale. (Ifbc5b)

  • Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen der umfangreichen Refaktorierungsversuche ersetzt, bei denen für Pixelparameter nur der Dp-Wert und primitive Typen verwendet wurden (I19d02).

  • Die Drop-down-Menü-Komponente wurde in ui-material hinzugefügt, einer Material Design-Menüimplementierung. (I9bb3d)

  • Das eingestellte LayoutTag() wurde entfernt. Bitte verwende stattdessen Modifier.tag(). Der eingestellte Modifier.matchParent() wurde entfernt. Verwende stattdessen „Modifier.matchParentSize()“. (If8044)

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

  • Die Einstellung von Modifier.semantics wurde eingestellt, um die Verwendung von übergeordneten Komponenten zu ermöglichen. (I4cfdc)

  • CanvasScope-Implementierungen wurden konsolidiert. Es gibt jetzt nur noch DrawScope und ContentDrawScope haben CanvasScope in DrawScope umbenannt. DrawScope wurde aktualisiert, um die Dichte-Schnittstelle zu implementieren und die LayoutDirection Deleted DrawScope Unterklasse in ContentDrawScope bereitzustellen. Painter und PainterModifier wurden aktualisiert, um eine RTL-Eigenschaft selbst nicht mehr zu verwalten.

  • DoubleTapGestenFilter trennt SingleTapGestenFilter jetzt über den Baum. (If92b1)

  • Die Ausrichtungs-API wurde aktualisiert und die absolute Ausrichtung wird jetzt unterstützt. Diese wird in Rtl-Kontext nicht automatisch gespiegelt (I38cd3).

  • Die DrawLayer-Modifikator-API wurde geändert: outlineShape wurde in „shape“ umbenannt und hat den Standardwert „RectangleShape“ und darf jetzt keine Null-Werte sein; „clipToOutline“ wurde in „clip“ umbenannt; „clipToBounds“ wurde entfernt, da es sich um das Gleiche wie „clip == true“ mit RectangleShape (I7ef11, b/155075735) handelt

  • Die APIs der höheren Ebene, die ein Canvas zur Freigabe von CanvasScope bereitstellen, wurden aktualisiert. Nutzer müssen dann ihre eigenen Paint-Objekte nicht mehr verwalten. Nutzer, die weiterhin Zugriff auf einen Canvas benötigen, können die DrawCanvas-Erweiterungsmethode verwenden. Diese bietet einen Callback, mit dem Zeichenbefehle mit dem zugrunde liegenden Canvas ausgeführt werden können. (I80afd)

  • Die nachgelagerte Lambda API WithConstraints wurde geändert. Statt zwei Parametern gibt es nun einen Empfängerbereich, der neben den Einschränkungen und layoutDirection der Eigenschaften minWidth, maxWidth, minHeight und maxHeight in Dp definiert ist (I91b9a, b/149979702)

  • LayoutModifier2 wurde in LayoutModifier umbenannt. (Id29f3)

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

  • Die intrinsischen Messfunktionen in Layout und LayoutModifier2 verfügen jetzt über einen IntrinsicMeasureScope-Empfänger, der eine intrinsische Abfrage-API mit implizit weitergegebener Layoutrichtung bietet. (Id9945)

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

  • Die neue Funktion Modifier.zIndex() wurde hinzugefügt, um die Zeichenreihenfolge der untergeordneten Elemente innerhalb desselben übergeordneten Layouts zu steuern. Die Elevation-Eigenschaft von DrawLayerModifier wurde in shadowElevation umbenannt und steuert nicht mehr die Zeichenreihenfolge. Die Reihenfolge der Parameter für DrawShadow wurde geändert: Elevation ist jetzt die erste und die Form die zweite, mit Standard-RectangleShape-Wert. (I20150, b/152417501)

  • "onSizeChange" und "onPositionChange" in "Owner" wurden entfernt. (I5c718)

  • Constraints2 wurde hinzugefügt. Dies ist eine Kopie von „Constraints“, die nur „Int“ einschränkt und nicht „IntPx“ unterstützt. IntPx wird entfernt und alle Ganzzahleinschränkungen werden als Pixel wie Android betrachtet.

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

  • „alignToSiblings“ akzeptiert jetzt „Measured“ anstelle von „Placeable“. (I5788d)

  • (I45f09, b/152842521)

    • ScaleFit wurde in ContentScale umbenannt
    • ContentScale wurde vom UI-Grafikformat zum UI-Core-Modul verschoben, das sich im selben Modul wie die Ausrichtungs API befindet.
    • FillMaxDimension wurde in „Zuschneiden“ umbenannt
    • FillMinDimension wurde in Fit umbenannt
    • Fit wurde für eine bessere Übereinstimmung in „Inside“ umbenannt
    • Äquivalente von ImageView.ScaleType
    • Es wurde eine Dokumentation hinzugefügt, die besagt, dass mit der Kombination von Zuschneiden und Ausrichtung.Center das gleiche Ergebnis erzielt wird wie bei ImageView.ScaleType.CENTER_CROP und Fit, die mit Ausrichtung.Center verwendet werden. Das Ergebnis ist dasselbe wie mit ImageView.ScaleType.FIT_CENTER.
  • Rtl-Unterstützung für Zeichenmodifikatoren. I0aaf9

  • Es wurde eine API zur Steigerung der Android-Aufrufe über XML veröffentlicht. Weitere Informationen finden Sie in der Demo zu ViewInCompose. (I42916)

  • DrawModifier API verbessern:

    • Der Empfängerbereich fürdraw() ContentDrawScope wurde erstellt.
    • Alle Parameter fürdraw() wurden entfernt
    • DrawScope hat die gleiche Oberfläche wie das frühere CanvasScope
    • ContentDrawScope verfügt über die MethodedrawContent() (Ibaced, b/152919067).
  • „positionInParent“ und „boundsInParent“ für LayoutCoordinates wurden hinzugefügt. (Icacdd, b/152735784)

  • In „DawLayerModifier“ und „drawLayer()“ sind jetzt die Standardeinstellungen „clipToBounds“ und „clipToOutline“ auf „false“ festgelegt. (I0eb8b, b/152810850)

  • LayoutResult wurde in MeasureResult umbenannt. (Id8c68)

  • LayoutModifier2 wurde hinzugefügt, eine neue API zum Definieren von Layout-Modifikatoren; „LayoutModifier2“ wurde eingestellt (If32ac)

  • Der Operator "Modifier Plus" wurde durch Erweiterungsfunktionen auf Werkseinstellungen ersetzt (I225e4).

  • Zusätzliche TranslationX/Y-Eigenschaften unterstützen das Versetzen der Anzeigeliste der Zeichenbefehle für eine bestimmte Ebene. Dies ist nützlich, um Inhalte als Reaktion auf Animationen oder Touch-Ereignisse zu verschieben. (I8641c)

  • Den Layer-APIs wurden die Parameter pivotX und pivotY hinzugefügt, um die Rotation und Skalierung um einen bestimmten Punkt einer Ebene zu unterstützen (Icf7c3).

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

  • LayerModifier, ein Modifikator, der das Hinzufügen eines RenderNode für ein Layout ermöglicht, wurde hinzugefügt. Damit lassen sich Beschneidung, Deckkraft, Drehung, Skalierung und Schatten festlegen. Dadurch wird RepaintBoundary ersetzt. (I7100d, b/150774014)

  • Die Layoutrichtung wurde vom übergeordneten Layoutknoten an untergeordnete Elemente weitergegeben. Modifikator für die Layoutrichtung hinzugefügt. (I3d955)

  • Die Stack-Komponente unterstützt die Schreibrichtung von rechts nach links (Ic9e00).

  • Erste Unterstützung von Rtl im Layout „Compose“ (Ia5519)

  • Density und DensityScope wurden in einer Schnittstelle zusammengeführt. Anstelle von „AmbientDensity()“ kannst du jetzt „DensityAmbient.current“ verwenden. Anstelle von withDensity(density) nur mit(density) (I11cb1)

  • LayoutCoordinates wurde geändert, um ProvidedAlignmentLines als Set anstelle einer Karte zu definieren und LayoutCoordinates zu implementieren, um stattdessen den get()-Operator zum Abrufen eines Werts zu implementieren. So ist es für Modifikatoren einfacher, einen oder mehrere Werte des Satzes zu ändern, ohne für jeden Modifikator eine neue Sammlung zu erstellen. (I0245a)

  • LayoutCoordinates weist keine Positionseigenschaft mehr auf. Die Eigenschaft "position" ist im Hinblick auf LayoutModifiers, Rotation oder Skalierung nicht sinnvoll. Stattdessen sollten Entwickler die Elemente „parentCoordinates“ und „childToLocal()“ verwenden, um die Transformation von LayoutCoordinate in eine andere zu berechnen.

    LayoutCoordinates verwendet für die Größeneigenschaft IntPxSize anstelle von PxSize. Bei Layouts werden für Layouts ganze Pixelgröß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)

  • Es wurde eine CanvasScope API erstellt, die ein Canvas-Objekt umschließt, um eine zustandslose, deklarative Zeichen-API-Oberfläche freizugeben. Transformationen sind in ihrem eigenen Empfängerbereich enthalten, und Größeninformationen werden ebenfalls auf die entsprechenden Einfügungsgrenzen beschränkt. Ein Nutzer muss kein eigenes Paint-State-Objekt zum Konfigurieren von Zeichenvorgängen verwalten.

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

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

  • Alle Farbverwendungen, bei denen Nullwerte zulässig sind, in der API durch Werte ohne Nullwerte ersetzt und „Color.Unset“ anstelle von null (Iabaa7) verwendet

  • Einführung eines zusätzlichen optionalen rect-Parameters in ImagePainter, der das Zeichnen eines Unterabschnitts des zugrunde liegenden ImageAsset (I0ea9e) unterstützt

  • „Unset Color“ wurde hinzugefügt, um einen nicht festgelegten Wert ohne „Colors Boxing“ darzustellen. (If901a)

  • Es wurden die Erweiterungsmethoden Canvas.rotate und Canvas.scale hinzugefügt, um optionale Pivot-Koordinaten für Transformationen zu verwenden. Diese befinden sich standardmäßig oben links in der aktuellen Canvas-Übersetzung.

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

  • Die PixelMap API wurde erstellt, um die Abfrage von Pixelinformationen aus einem ImageAsset zu unterstützen. (I69ad6)

  • Umbenannt inFrameworkRect/toFrameworkRectF in AndroidRect/toAndroidRectF, um der Namenskonvention für Objekt-Conversions zwischen compose und den Android-Framework-APIs zu entsprechen, auf denen sie basieren. Außerdem wurde die Dokumentation zu diesen APIs aktualisiert (I86337).

  • Die VectorPainter API wurde hinzugefügt, um die vorhandene Subcomposition API für Vektorgrafiken zu ersetzen. Das Ergebnis der Unterzusammensetzung ist ein VectorPainter-Objekt anstelle eines DrrawModifier. Wir haben vorherige DrawVector-Funktionen zugunsten von VectorPainter eingestellt.

    Image(Painter) API wurde in PaintBox(Painter) umbenannt Erstellte Vektor-zusammensetzbare Funktion, die sich wie die zusammensetzbare Bild-Funktion verhält, außer mit einem VectorAsset anstelle eines ImageAsset (I9af9a, b/149030271).

  • Umbenennung von „Image“ in „ImageAsset“, um den Unterschied zwischen den Bilddaten und der neuen zusammensetzbaren Funktion „Bild“ für das Layout und das Zeichnen von Inhalten besser zu unterscheiden. _Body:Erstellte Erweiterungsmethode auf android.graphics.Bitmap, Bitmap.asImageAsset(), um eine Instanz eines ImageAsset zu erstellen, das sich für die Kombination der traditionellen Android-Anwendungsentwicklung mit dem Compose-Framework eignet (Id5bbd)

  • TextDirection.Content wurde hinzugefügt (I48f36)

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

  • Force wird aus den enum-Werten von TextDirectionAlgorithm entfernt (Icc944)

  • TextDirectionAlgorithm wird in TextDirection (I75ce8) umbenannt

  • Implementiert LongPressAndDrag für die TextField-Auswahl. (I17919)

  • AnnotatedString.getStringAnnotations wurde hinzugefügt, das alle Anmerkungen innerhalb des Bereichs zurückgibt. (I1fa00)

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

  • Der Cursor von TextField hat eine blinkende Animation (Id10a7).

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

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

  • Benennen Sie AnnotatedString.Builder.addAnnotationString um in addStringAnnotation. (I5059e)

  • Jetzt ist es möglich, die Softwaretastatur mithilfe von SoftwareKeyboardController ein- oder auszublenden. Dafür wird der onTextInputStarted-Callback verwendet (I8dc44, b/151860051).

  • Ein Plus-Operator für (Text/Paragraph/Span)Style wurde hinzugefügt, der an die Funktion „merge()“ delegiert. (Ia1add)

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

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

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

  • Das Modul "ui-text" wird in "ui-text-core" (I57dec) umbenannt.

  • Die nicht verwendete Größenklasse wurde entfernt, da im ui-geometrie-Modul eine doppelte Größenklasse verwendet wird. (I1b602)

  • AdapterList wurde hinzugefügt, eine scrollbare Listenkomponente, die nur die sichtbaren Elemente zusammensetzt und darstellt. Derzeit bekannte Probleme bestehen darin, dass es nur vertikal ist und nicht alle Fälle von Änderungen an seinen untergeordneten Elementen vollständig verarbeitet. (Ib351b)

  • Parameter für Abstände, Rahmen, Form und Hintergrund zu Box hinzufügen (I05027, b/148147281)

Fehlerkorrekturen

  • onFocusChange-Callback in Textfeldern wurde in onFocusChanged (Ida4a1) umbenannt
  • VerticalScroller und HoriziontalScroller wurden eingestellt. Verwende ScrollableColumn und ScrollableRow, um integrierte Funktionen mit Spalten-/Zeilenverhalten und -parametern zu nutzen, oder Modifier.verticalScroll und Modifier.horizontalScroll für dein eigenes Element. In ähnlicher Weise wurde ScrollerPosition zugunsten von ScrollState verworfen (I400ce, b/157225838, b/149460415, b/154105299).
  • runOnIdleCompose umbenannt in runOnIdle (I83607)
  • Mehrere Test-APIs wurden umbenannt, um die Benutzerfreundlichkeit zu verbessern. Alle „findXYZ“ APIs wurden in „onNodeXYZ“ umbenannt. Alle doXYZ APIs wurden in „performanceXYZ“ umbenannt. (I7f164)
  • Die Benutzeroberfläche zum Schreiben kann jetzt innerhalb von ViewGroups erstellt werden, ohne dass eine neue Zusammensetzung erforderlich ist. Ein Beispiel finden Sie in der ViewInteropDemo. (I9ab0b, b/160455080)
  • sortWith und removeRange wurden zu MutableVector (Icccf7) hinzugefügt.
  • Implementieren Sie Ziehpunkte für die Ziehauswahl, um die Auswahl für TextField zu ändern. (I27032)
  • Die Inline-Klasse „Shader“ wurde entfernt, die die Erwartungsklasse von NativeShader umschlossen hat. „NativeShader“ wurde in „Shader“ umbenannt. Die gepackte Shader-Inline-Klasse hat der API-Oberfläche keine wertvollen Daten hinzugefügt und war eine Inline-Klasse. Verwenden Sie die NativeShader-Klasse daher direkt. (I25e4d)
  • Überarbeiteter PainterModifier, um keine Skalierung mehr auf der Grundlage der gegebenen Einschränkungen und des ContentScale-Parameters bereitzustellen Implementierungen von Painter umfassen das Skalieren des Zeichnungsinhalts anhand der gegebenen Größe des DrawScope, in den sie gezeichnet werden.

    Ein Problem wurde behoben, bei dem die Cache-Bitmap von VectorPainter auf ihre Standardgröße und nicht auf die angegebene Größe für die Darstellung skaliert wurde.

    ImagePainter wurde so aktualisiert, dass der Inhalt skaliert wird, anstatt sich auf PainterModifier zu verlassen. (I6ba90)

  • Fügen Sie die oberste Ebene der withFrameNanos-Funktion für das Timing der Animation hinzu (Ie34c5).

  • Die Annotation „@Untracked“ wurde eingestellt. Ersetzen durch @ComposableContract(tracked=false) (Id211e)

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

  • Ein Problem wurde behoben, bei dem die Weiterleitung von Zeigereingaben zu einem Absturz führte, wenn PointerInputFilters während der Verteilung über die Unterzusammensetzung entfernt wurden. Dieser Fehler wurde jetzt behoben. (I1f48b, b/157998762)

  • Ein Problem wurde behoben, bei dem die Weiterleitung von Zeigereingaben zu einem Absturz führte, wenn PointerInputFilters während der Verteilung über die Unterzusammensetzung entfernt wurden. Dieser Fehler wurde jetzt behoben. (Iab398, b/157998762)

  • Die Radiusklasse wurde in eine Inline-Klasse umgewandelt. Methoden zum Erstellen von Companion-Anzeigen wurden entfernt. Stattdessen wurde der Funktionskonstruktor mit Standardparametern entfernt, sodass der Radius entlang der Y-Achse mit dem des erforderlichen Radius-Parameters für die x-Achse übereinstimmt.

    DrawScope.drawRoundRect wurde so aktualisiert, dass ein einziger Radius-Parameter anstelle von zwei separaten Gleitkommawerten für den Radius entlang der x- und y-Achse verwendet wird (I46d1b).

  • Die Funktion „Recompose“ ist keine nützliche Abstraktion mehr. Ein Großteil der Neuzusammensetzung sollte das Ergebnis von MutableState-Zuweisungen sein. Für andere Aufgaben empfiehlt es sich, die Funktion invalidate zu verwenden, um eine Neuzusammensetzung des aktuellen Bereichs auszulösen. (Ifc992)

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

  • Ändert die Strategie zur Codegenerierung des Compilers von Compose. Vor dieser Änderung wandelte der Compose-Compiler Aufrufe in zusammensetzbare Funktionen um. Mit dieser Änderung transformieren wir nun den Hauptteil einer zusammensetzbaren Funktion und lassen die Aufrufseite unverändert (zumeist).

    Das bedeutet, dass der Großteil der Logik, die mit der Erstellungslaufzeit kommuniziert, zu Beginn des Funktionstexts und nicht auf der Aufrufseite stattfindet.

    Dies sollte eine quellkompatible Änderung für die gesamte Verwendung von „Compose“ sein. Die meisten Nutzer von compose dürften aufgrund dieser Änderung keinen Code aktualisieren müssen.

    Zu diesem Zweck wurde die JVM-Signatur aller zusammensetzbaren Funktionen geändert. Eine zusammensetzbare Funktion, die einen einzelnen Parameter akzeptiert, wird in eine Funktion umgewandelt, die drei Parameter akzeptiert. Die zusätzlichen Parameter sind die Composer-Ganzzahl, eine Schlüsselganzzahl. Eine Bitmasken-Ganzzahl, mit der Metadaten über Aufrufe weitergegeben werden.

    Compose wandelt jetzt auch Standardargumente in eine zusammensetzbare Funktion um. Dies geschieht, ohne eine zusätzliche synthetische Standardüberlastung der Funktion selbst einzurichten, sodass durch diese Änderung weniger Funktionen definiert werden.

    Bekannte bewusste Verhaltensänderungen, die daraus resultieren:

    1. Bei einigen Anrufen werden Anrufe im Hintergrund übersprungen.
    2. Zusammensetzbare Ausdrücke in Standardargumentausdrücken werden jetzt korrekt abonniert und verarbeitet

    Diese Arbeit beinhaltete einige Optimierungen: 1. Das Ergebnis von Vergleichen von Parametern wird über die Aufrufgrafik an andere zusammensetzbare Funktionen weitergegeben. Dies führt zu weniger Vergleichen während der Laufzeit, verringert die Größe der Slot-Tabelle und das Überspringen von zusammensetzbaren Funktionen, die zuvor nicht übersprungen wurden.2. Parameter, die bei der Kompilierung als „statisch“ eingestuft werden, werden nicht mehr in der Laufzeit verglichen oder gespeichert. Dies reduziert die Anzahl der Vergleiche und die Größe der Slottabelle. 3. Die Ablaufstruktur des Funktionskörpers wird verwendet, um die Anzahl der generierten Gruppen zu minimieren. Dies reduziert die Größe der Slottabelle und führt zu einem geringeren Aufwand für die Laufzeit.4. Nicht verwendete Weiterleitungs- und Empfängerparameter für Funktionen werden bei der Bestimmung der Überspringbarkeit der Funktion nicht berücksichtigt, wenn sie nicht innerhalb des Hauptteils der Funktion verwendet werden.

    Die meisten funktionsgefährdenden Änderungen bezogen sich auf APIs, die vom Compiler direkt angegriffen werden. Die typische Verwendung von „compose“ ist davon nicht betroffen: 1. Composer::startExpr wurde entfernt. 2. Composer::endExpr wurde entfernt. 3. Composer::call wurde eingestellt 4. Die nicht-varargs-Überlastungen von key wurden entfernt. Verwenden Sie ab sofort die Version vararg. 5. Die Pivotal-Anmerkung wurde eingestellt. Verwende key als Ersatz. 6. „ScopeUpdateScope::updateScope“ wurde geändert, sodass nun „Function3“ anstelle von „Function1“ erwartet wird. 7. „launchableFunction“ und „neustartableFunctionN“ wurden aktualisiert, um zusätzliche Parameter für die Kompilierungszeit einzubeziehen (I60756, b/143464846).

  • Die eingestellten LayoutAlign-Modifikatoren wurden entfernt. (I10877)

  • RepaintBoundary zugunsten von DrawLayerModifier (I00aa4) entfernt

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

  • ButtonStyle wurde durch eindeutige Funktionen ersetzt und Textüberlastung (String) beseitigt. Informationen zur Nutzung finden Sie in den aktualisierten Beispielen. (If63ab, b/146478620, b/146482131)

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

  • Das Verhalten der StandardtextDirection (TextDirection) wurde so geändert, dass es durch LayoutDirection (LayoutDirection) bestimmt wird. Wenn LayoutDirection (LayoutDirection) RTL (LayoutDirection) ist, ist der Standardwert für TextDirection (TextDirection) RTL (Rechtsnavigation). Bisher war dies TextDirection.ContentOrLtr/Rtl (I4e803).

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

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

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