Benutzeroberfläche zum Schreiben
Grundlegende Komponenten der Benutzeroberfläche zum Schreiben von E-Mails, die für die Interaktion mit dem Gerät erforderlich sind, darunter Layout, Zeichnen und Eingabe
Letzte Aktualisierung Stabile Version Releasekandidat Beta-Ausgabe Alpha-Release
26. Juni 2024 1.6.8 - 1.7.0-beta04 -

Gebäude

Compose besteht aus sieben Maven-Gruppen-IDs innerhalb von androidx. Jede Gruppe umfasst eine bestimmte Teilmenge von Funktionen mit jeweils eigenen Versionshinweisen.

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

GruppeBeschreibung
compose.animation:Animationen in den Jetpack Compose-Anwendungen erstellen, um die User Experience zu bereichern
compose.compiler@Composable-Funktionen transformieren und Optimierungen mit einem Kotlin-Compiler-Plug-in aktivieren.
compose.foundationSchreiben Sie Jetpack Compose-Anwendungen mit gebrauchsfertigen Bausteinen und erweitern Sie die Grundlage für den Aufbau Ihrer eigenen Designsysteme.
compose.materialJetpack Compose-UIs mit einsatzbereiten Material Design-Komponenten erstellen Dies ist der übergeordnete Einstiegspunkt von Compose. Hier werden Komponenten bereitgestellt, die den unter www.material.io beschriebenen Komponenten entsprechen.
compose.material3 einfügenJetpack Compose-UIs mit Material Design 3 Components erstellen, der nächsten Entwicklung des Material Design Material 3 enthält aktualisierte Designs und Komponenten sowie Funktionen zur Personalisierung von Material You wie dynamische Farben. Das Produkt wurde so entwickelt, dass es zum visuellen Stil und zur System-UI von Android 12 passt.
compose.runtimeGrundlegende Bausteine des Programmiermodells und der Statusverwaltung von Compose sowie die zentrale Laufzeit für das Compose-Compiler-Plug-in.
compose.uiGrundlegende Komponenten der Benutzeroberfläche zum Schreiben von E-Mails, die für die Interaktion mit dem Gerät erforderlich sind, darunter Layout, Zeichnen und Eingabe

Abhängigkeiten deklarieren

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

Fügen Sie der Datei build.gradle für Ihre Anwendung oder Ihr Modul die Abhängigkeiten für die Artefakte hinzu, die Sie benötigen:

Groovy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.14"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.14"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

Feedback

Dein Feedback hilft uns, Jetpack zu verbessern. Teilen Sie uns mit, wenn Sie neue Ausgaben entdecken oder Verbesserungsvorschläge für diese Bibliothek haben. Bitte sieh dir die vorhandenen Probleme in dieser Bibliothek an, bevor du eine neue erstellst. Sie können einem vorhandenen Problem Ihre Stimme hinzufügen, indem Sie auf die Sternschaltfläche klicken.

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zur Problemverfolgung.

Version 1.7

Version 1.7.0-beta04

26. Juni 2024

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

Fehlerkorrekturen

  • Abstürze bei sehr großen Textzeilen vermeiden (z. B. 10.000 Zeichen) (8157ab)
  • Software-Rendering-Unterstützung für die GraphicsLayer API deaktivieren (35ddd8)
  • Behebung eines Absturzes in der Ebenenpersistenzlogik. (70b13e)
  • Die Wiederverwendung der Optimierung von Ebenenobjekten wurde rückgängig gemacht, da sie Renderingprobleme verursacht hat. (70b13e)

Version 1.7.0-beta03

12. Juni 2024

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

Version 1.7.0-beta02

29. Mai 2024

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

API-Änderungen

  • SemanticsProperties.Editable wurde in IsEditable umbenannt und SemanticsPropertyReceiver.editable wird in einen Wert isEditable geändert. Die Eigenschaft ist jetzt ein boolescher Wert und wird immer durch Textfelder angegeben. (I8acd8)
  • Benchmark-Parameter für Bedienungshilfen umbenennen. (I3d440)
  • Die API zum Gestalten von Links wurde aktualisiert: TextLinkStyles ist jetzt Teil des LinkAnnotation-Konstruktors und der AnnotatedString.fromHtml-Methode (I90b2b). Außerdem wurde TextDefaults aus Material entfernt (I5477b).

Fehlerkorrekturen

  • LayoutCoordinates.introducesFrameOfReference wurde in LayoutCoordinates.introducesMotionFrameOfReference umbenannt, um den Zweck besser widerzuspiegeln. Die zugehörige Funktion wurde umbenannt, um Koordinaten basierend auf dieser Markierung zu berechnen. (I3a330)

Version 1.7.0-beta01

14. Mai 2024

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

API-Änderungen

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

Fehlerkorrekturen

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

Version 1.7.0-alpha08

1. Mai 2024

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

API-Änderungen

  • Unterstützt Implementierungen änderbarer Formen. Shape#createOutline wird jetzt innerhalb von Grafikebenen beobachtet. Das Lesen von Statuswerten im Inneren führt daher zu Entwertungen, wenn sich der Zustand ändert. Dies ermöglicht leistungsstärkere Formanimationen. (Id1629, b/326070216)
  • isPositionedByParentWithDirectManipulation wurde in introducesFrameOfReference umbenannt. Beachten Sie, dass dies jetzt den umgekehrten Effekt hat. Das bedeutet, dass die meisten LayoutCoordinates standardmäßig einen Referenzrahmen einführen und das Attribut nur bei direkter Bearbeitung den Wert „false“ hat. Um die Position nur mit solchen abzufragen, die einen Bezugsrahmen beinhalten, verwenden Sie positionInLocalFrameOfReference(...). Oder positionInLocalLookaheadFrameOfReference von einem LookaheadScope. (Ifc5f7)
  • LookaheadScope APIs sind jetzt stabil (I21507)
  • Aktionslambda für getScrollViewportLength gemäß Feedback des API-Council ändern. (Ibc74a)
  • GraphicsLayer Outline-APIs wurden aktualisiert, um float-Parameter anstelle von Ganzzahlen zu nutzen. UnsetOffset/UnsetSize IntSize Sentinel-Werte wurden zugunsten bereits vorhandener nicht angegebener Konstanten für Inline-Klassen mit Gleitkommazahl und Größe entfernt (I2fb03, b/333863462)
  • Beim Einfügen von Mauseingaben während Tests akzeptieren MouseInjectionScope.click(), MouseInjectionScope.doubleClick(), MouseInjectionScope.tripleClick() und MouseInjectionScope.longClick() jetzt einen button: MouseButton-Parameter, um sie allgemein anwendbar zu machen. Der Standardwert für alle Methoden ist MouseButton.Primary. (I31a23, b/190493367, b/261439695)
  • onClicked wurde in LinkInteractionListener in onClick umbenannt. (AA35c)
  • Benennen Sie TextInclusionStrategy.isInside in isIncluded um. Legen Sie fest, dass der Rückgabetyp Paragraph/MultiParagraph#getRangeForRect() nicht Nullwerte zulässig ist. (I51f26)

Fehlerkorrekturen

  • Das Erfassen langer Screenshots für scrollbare Container mit reverseScrolling=true wurde korrigiert. (I7c59c)

Externer Beitrag

  • Unterstützung für den Vorabruf von Elementen in verschachtelten LazyLists wurde hinzugefügt (z.B. ein LazyColumn, das verschachtelte LazyRows rendert). Durch diese Änderung wird erwartet, dass Frame-Einbrüche beim Scrollen für diese LazyLists reduziert werden. Standardmäßig werden die ersten beiden verschachtelten Elemente vorab abgerufen. Dieses Verhalten kann jedoch über die neuen APIs LazyLayoutPrefetchStrategy(nestedPrefetchItemCount) und LazyListPrefetchStrategy#onNestedPrefetch gesteuert werden. (I51952)

Version 1.7.0-alpha07

17. April 2024

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

API-Änderungen

  • ClickableText ist als veraltet markiert. Um dem Text Links hinzuzufügen, erstellen Sie ein AnnotatedString mit einem LinkAnnotation, das Ihrem Link entspricht, und übergeben Sie dieses AnnotatedString an die zusammensetzbare Textfunktion. (I34d4b, b/323346994)
  • Stelle ViewConfiguration.HandwritingGestureLineMargin für handschriftliche Gesten vor. Unterstützung von JoinOrSplit-Geste für BasicTextField (Ie6e13, b/325660505)
  • FocusProperties.enter und FocusProperties.exit befinden sich nicht mehr in der Testphase. FocusDirection.Enter und FocusDirection.Exit befinden sich nicht mehr in der Testphase. FocusRequester.Cancel ist nicht mehr experimentell (I461a1, b/261564106).
  • Bei der Abfrage von Layoutkoordinaten können Sie jetzt das Argument excludeDirectManipulationOffset verwenden, um den Versatz von übergeordneten Layouts auszuschließen, bei denen die untergeordneten Layouts mithilfe von Placeable.PlacementScope.withDirectManipulationPlacement platziert wurden. Ebenso kann ein Layout, bei dem sich die Position seiner untergeordneten Elemente häufig ändert, diese nun mithilfe von withDirectManipulationPlacement platzieren, wie z. B. „Scrollen“, das standardmäßig implementiert ist. Auf diese Weise sind die auf approachLayout basierenden Animationen intuitiver. Sie haben jetzt die Möglichkeit zu unterscheiden, welcher Offset animiert werden soll und was direkt angewendet werden soll, wenn es um die Animation des Ansatzes geht. (I60ec7)
  • Die Funktions-Flag für lange Screenshots wurde entfernt. (I28648, b/329128246)
  • LazyColumn rendert fixierte Überschriften in langen Screenshots jetzt korrekt. (I8d239, b/329296635)
  • NestedScroll-Quellen „Ziehen und Ziehen“ werden durch UserInput und SideEffect ersetzt, um die erweiterte Definition dieser Quellen zu ermöglichen, die jetzt Animationen (Seiteneffekt) sowie Mausrad und Tastatur (UserInput) umfassen. (I40579)
  • ApproachLayoutModifierNode und Modifier.approachLayout sind jetzt stabil. Das alte isMeasurementApproachComplete() bzw. isPlacementApproachComplete() wird durch die neuen isMeasurementApproachInProgress() und isPlacementApproachInProgress() ersetzt.
  • Eingestellter intermediateLayout-Modifikator wurde entfernt. (I3e91c)
  • Benennen Sie GraphicsLayer#buildLayer um, damit die Aufzeichnung die „begin“- und „endRecording“-Methoden der in Displaylist unterstützten APIs wie RenderNode und Picture widerspiegelt.
  • rememberGraphicsLayer wurde zur Nutzung von rememberObserver aktualisiert. (I312c1, b/288494724, b/330758155)
  • UrlAnnotation wurde verworfen. Verwenden Sie stattdessen LinkAnnotation.Url. Wenn Sie Material-Designs verwenden, erstellen Sie mit einem TextDefaults-Objekt die Anmerkung mit angewendeten Material-Designs (I8d180, b/323346545).
  • Textlinks wurden neben dem normalen Stil auch mit der Gestaltungsoption „gedrückt“ angezeigt (I5f864, b/139312671)
  • String.parseAsHtml wurde in AnnotatedString.Companion.fromHtml umbenannt. (I43dcd)
  • Stilargumente (linkStyle, focusedLinkStyle, hoveredLinkStyle) und ein Linkinteraktions-Listener für die parseAsHtml-Methode hinzugefügt. Wenn der HTML-getaggte String mit <a>-Tags geparst wird, erstellt die Methode für jedes dieser Tags ein LinkAnnotation.Url und übergibt die Stilobjekte und den Link-Interaktions-Listener an jede Annotation. (I7c977)
  • LinkAnnotation verwendet jetzt die zustandsbasierten Stilargumente und einen LinkInteractionListener. Fügen Sie diese Annotation zum AnnotatedString hinzu, um einen Hyperlink zu erhalten. Durch die Übergabe von focusedState und/oder hoveredState können Sie die visuelle configuration für Links definieren, wenn diese hervorgehoben sind und/oder der Mauszeiger darauf bewegt wird. (I81ce4, b/139312671)
  • Für ImeOptions.hintLocales können keine Nullwerte mehr eingegeben werden. Wenn Sie eine leere Gebietsschemaliste übergeben möchten, verwenden Sie LocaleList.Empty. (Ic5bc4)

Fehlerkorrekturen

  • Fehlerhafte/beschädigte historische Eingabeereignisdaten werden ordnungsgemäß verarbeitet (fehlerhafte Offsetdaten werden ignoriert).
  • Behebt unerwartete Zeigerereignisse, wenn ein Zeigereingabemodifikator dynamisch vor einem anderen Zeigereingabeereignis-Stream während eines aktiven Zeigereingabeereignisstreams hinzugefügt wird (z. B. zwischen einem Mouseover-Eingabe-Ereignis-Stream und einem Mouseover-Exit [Maus/Eingabestift]).

Version 1.7.0-alpha06

3. April 2024

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

Neue Funktionen

  • Es wurde die parseAsHtml-Methode für Strings mit benutzerdefinierten Stilen hinzugefügt: Sie ermöglicht das Konvertieren eines mit HTML-Tags markierten Strings in AnnotatedString. Beachten Sie, dass nicht alle Tags unterstützt werden. Zum Beispiel können Sie noch keine Aufzählungslisten anzeigen. (I84d3d, I30626, b/139326648)
  • Implementierung der experimentellen Unterstützung für lange Screenshots in Compose-Scrollcontainern mithilfe der offiziellen Android API (ScrollCaptureCallback). Diese Funktion ist experimentell und verarbeitet derzeit möglicherweise nicht alle Fälle richtig. Aus diesem Grund ist sie derzeit standardmäßig deaktiviert. Legen Sie zum Aktivieren das 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üfen Sie 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 zu leeren. (I7d2e9)
  • Es wurden Ressourcen-IDs zum Ausblenden von Ansichten hinzugefügt, die als Implementierungsdetails in Build-Tools verwendet werden (I99531).
  • Die Anhalten-Methode GraphicsLayer#toImageBitmap wurde hinzugefügt, um das Rendern von Bitmap-Inhalten in einem GraphicsLayer zu unterstützen. Dies ist ein hardwarebeschleunigter Renderingvorgang auf API-Level 22 und höher (einschließlich), der über 99% aller Android-Geräte unterstützt. Bei Android API-Level 21 wird dabei Software-Rendering verwendet. (I9e114)
  • Hilfsmethode zum Konvertieren eines Android-RectF in ComposeRect (I39925, b/325660505)
  • Alle KeyboardOptions-Parameter haben jetzt standardmäßig einen nicht angegebenen Wert. Methode KeyboardOptions.merge wurde hinzugefügt.
  • KeyboardOptions.autoCorrect wurde in autoCorrectEnabled umbenannt und dafür gesorgt, dass Nullwerte zulässig sind, wobei null bedeutet, dass kein Wert angegeben wurde. (Ia8ba0, b/295951492)
  • Die Variante „BasicTextField(state)“ und „BasicSecureTextField“ verwenden jetzt KeyboardActionHandler anstelle von KeyboardActions, um Aktionen über die Softwaretastatur zu verarbeiten. (I58dda)

Version 1.7.0-alpha05

20. März 2024

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

Neue Funktionen

  • Einführung der neuen GraphicsLayer API zur Aufzeichnung von Zeichenbefehlen in einer Anzeigeliste sowie zusätzlicher Attribute, die sich auf das Rendern der Anzeigeliste auswirken. Dies bietet eine isolierte Grenze, um eine komplexe Szene in kleinere Teile zu unterteilen, die einzeln nacheinander aktualisiert werden können, ohne die gesamte Szene nachzubilden. Transformationen an einem GraphicsLayer können durchgeführt werden, ohne die Anzeigeliste neu aufzuzeichnen. Im Gegensatz zu Modifier.graphicsLayer ermöglicht GraphicsLayer das Rendern von zusammensetzbaren Inhalten an anderer Stelle und ist nützlich in animierten Anwendungsfällen, bei denen davon ausgegangen wird, dass Inhalte in verschiedenen Szenen gerendert werden.

API-Änderungen

  • GraphicsLayer.draw(Canvas) ist keine öffentliche API mehr. Verwenden Sie stattdessen die Erweiterungsfunktion DrawScope.drawLayer(GraphicsLayer), um die Ebene zu zeichnen. (I7a7c0)
  • restrictedConstraints() in zwei Methoden aufteilen: fitPrioritizingWidth() und fitPrioritizingHeight() (I6d7fd)
  • Einführung des HardwareCanvas-Stubs zur Nutzung von Android L (I1c3b5, b/288494724)
  • Aktualisieren Sie das Editor-Framework, um eine lokale GraphicsContext-Komposition zusammen mit aktualisierten Inhaber-, DelegateableNode- und drawWithCache-Modifikatorimplementierungen bereitzustellen, um Zugriff auf das GraphicsContext für eingeschränkten Zugriff bereitzustellen. GraphicsLayer-Instanzen werden automatisch bereinigt, wenn Modifikatoren entfernt werden. (I64a2f, b/288494724)
  • Einführung von InterceptPlatformTextInput für das Schreiben von Low-Level-IME-Tests und anderen Low-Level-IME-Anwendungsfällen. PlatformTextInputTestOverride wurde verworfen. (I862ed, b/322680547)
  • Die Erweiterungsfunktion „GraphicsLayer.setOutline(Outline)“ wurde hinzugefügt. (Ib81f4)
  • Funktionskonstruktor GraphicsContext einführen, um eine Factory zum Erstellen von GraphicsLayer-Instanzen zu erstellen (Ib98d6, b/288494724)
  • Offengelegte GraphicsLayer API, um Entwicklern definierte Flexibilität bei der Erfassung von Zeichenbefehlen zu bieten, die zum Zeichnen an anderer Stelle und zum Anwenden verschiedener visueller Effekte auf das Endergebnis verwendet werden können. (I80245, b/288494724)
  • Führen Sie Paragraph#getRangeForRect ein, das einen Textbereich zurückgibt, der von einem bestimmten Rechteckbereich abgedeckt wird. (Iee516, b/325660505)
  • Die experimentelle Überschreibung von BasicText mit dem Argument onLinkClicked wurde entfernt. In Zukunft wird eine Ersatz-API für die Unterstützung von Hyperlinks folgen. (I107d5)

Fehlerkorrekturen

  • Die erwartete/tatsächliche API-Definition GraphicsLayer wurde hinzugefügt, um die Erfassung und Wiedergabe von Zeichenbefehlen mit optionalen visuellen Effekten und Transformationen zu unterstützen. Einführung 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-Element steckenblieb, das zwischen anderen Ansichten eingebettet war. (I08fd4)

Externer Beitrag

  • LocalLifecycleOwner wurde von der Compose-UI zu lifecycle-runtime-compose verschoben, damit die auf dem Compose-Tool basierenden Hilfs-APIs außerhalb der Compose-UI verwendet werden können. Vielen Dank an Jake Wharton für den Beitrag. (I6c41b, b/328263448)
  • Gleitkommazahlen-Eigenschaften für Verzerrungen werden bei allen Untertypen, die auf Verzerrungen basieren, einheitlich dargestellt. (I69f0f, b/328088992)

Version 1.7.0-alpha04

6. März 2024

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

API-Änderungen

  • Unterstützung der Handschriftfunktion mit Eingabestift für BasicTextField2 auf Geräten nach Android U. (I002e4)
  • In dieser CL wird die semantische Aktion GetScrollViewportLength hinzugefügt, damit Informationen zu den Komponenten, nach denen in der Zusammensetzung gescrollt wird, an das A11y-System weitergeleitet werden können. Diese CL wendet auch die Verwendung dieser Property in scrollbaren Foundation-Listen an. (Ic5fa2)
  • FocusRequester.createRefs ist jetzt stabil (I4d92c, b/261436820).
  • DelegatableNode.requireView() wurde eingeführt, damit Modifikatorknoten das aktuelle Android-View abrufen können, ohne eine lokale Zusammensetzung zu lesen. (I40768)
  • Neue API Path.reverse() zum Umkehren der Pfadrichtung (I36348)
  • hintLocales wurde zu KeyboardOptions hinzugefügt, damit TextFields IMEs mit bestimmten Sprachen als Hinweis auf eine bevorzugte Sprache angeben kann.
  • Machen Sie die platformLocale-Property aus 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 wurde veröffentlicht. Version 1.7.0-alpha03 enthält diese Commits.

API-Änderungen

  • Neu: ContextualFlowRow und erweiterte FlowRow/Column mit MaxLines und Overflow. Neben der Einführung von ContextualFlowRow und ContextualFlowColumn gibt es jetzt Verbesserungen an den experimentellen FlowRow und FlowColumn, die jetzt maxLines und die Überlauf-Unterstützung umfassen. Dieses Update wurde entwickelt, um Komponenten für eine optimale Leistung bereitzustellen, wobei ContextualFlow* perfekt für eine große Anzahl von Artikeln mit einer kleinen maxLines-Konfiguration und dynamischer +N-Schaltflächen für die Anzeige weiterer Schaltflächen und FlowRow und FlowColumn ideal für eine kleine Anzahl von Artikeln, also weniger als 100 Elemente, geeignet ist. Wichtig: Wenn Sie das bestehende Verhalten in FlowRow oder FlowColumn beibehalten möchten, bei dem alle Elemente unabhängig davon, ob sie zum Maximum der Querachse passen, zusammengehören, setzen Sie overflow während der Initialisierung auf FlowRowOverflow.Visible oder FlowColumnOverflow.Visible. Sehen Sie sich die Beispiele für diese neuen Funktionen in ContextualFlowRowSample und FlowRowSample an. (Ib9135, b/293577082)
  • Fügen Sie das Semantikattribut maxTextLength hinzu, das für Textfelder festgelegt werden soll, mit denen die maximal zulässige Anzahl von Zeichen gefiltert werden soll. (I24d9f, b/170648072)
  • Der Modifier.inspectable-Wrapper wurde eingestellt. Diese API führt zu mehr Entwertungen als notwendig, weshalb von ihrer Verwendung abgeraten wird. Entwicklern wird empfohlen, die inspectableProperties()-Methode auf ModifierNodeElement zu implementieren, wenn sie Tools Modifikatoreigenschaften zur Verfügung stellen möchten. (Ib3236)
  • Neuer Konstruktor für PopupProperties, der vollständige Kontrolle über WindowManager.LayoutParams-Flags ermöglicht. (Ibb33e, b/312485503)
  • DelegatableNode.requireLayoutCoordinates() wurde eingeführt, um den aktuellen LayoutCoordinates einer Modifier.Node abzurufen, ohne onPlaced überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Ia8657)
  • DelegatableNode.currentLayoutCoordinates wurde eingeführt, um den aktuellen LayoutCoordinates einer Modifier.Node abzurufen, ohne onPlaced überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Iaebaa)
  • BasicTextField2 und zugehörige APIs unter dem Paket androidx.compose.foundation.text2 werden nach androidx.compose.foundation.text verschoben. (I9f635)
  • Eine neue ApproachLayoutModifierNode API wurde hinzugefügt, um die Erstellung benutzerdefinierter Ansatzlogik in einem expliziten Modifikatorknoten zu unterstützen. Es wurde außerdem eine neue 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 eine Path einen bestimmten Punkt enthält. (I3b218)
  • TextLayoutResult macht jetzt die getLineBaseline(lineIndex)-Methode verfügbar. Dadurch kann zusätzlich zu den vorhandenen Convenience-Properties firstBaseline und lastBaseline die Baseline einer beliebigen Textzeile gelesen werden. (Ide4e8, b/237428541)
  • Es wurde eine Methode hinzugefügt, mit der nur die Annotationen von zwei AnnotatedStrings verglichen werden können. (I32659)

Fehlerkorrekturen

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

Version 1.7.0-alpha02

7. Februar 2024

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

API-Änderungen

  • Ein Problem mit der Binärkompatibilität von SemanticsPropertyReceiver.performImeAction wurde behoben. (I65865, b/322269946)
  • Der PopupProperties-Konstruktor, der einen usePlatformDefaultWidth-Parameter verwendet, ist nicht mehr experimentell. (I8f8d2)
  • Es wurde eine Überlastung von ComposeTestRule.waitUntil hinzugefügt, die eine Stringbeschreibung der Bedingung in die Zeitüberschreitungsnachricht einschließt. (I9413e)
  • Neue Semantik-API unset() zum Entfernen von Semantikeigenschaften, die in derselben Modifikatorkette hinzugefügt werden. Neue Semantikeigenschaft 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 Nicht-Tabs und Nicht-Optionsschaltflächen anklickbar waren, wenn sie ausgewählt wurden. (I2181c)
  • In VelocityTracker wird das Problem behoben, dass Punkte jetzt standardmäßig hinzugefügt werden. Die Fehlerbehebung kann immer noch deaktiviert werden, indem du VelocityTrackerAddPointsFix auf „false“ setzt, wenn Probleme auftreten. (Ib3877, b/269487059)
  • Das Problem mit der abwärtskompatiblen Binärinkompatibilität in 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 wurde veröffentlicht. Version 1.7.0-alpha01 enthält diese Commits.

API-Änderungen

  • ClipboardManager wurde um ClipEntry und ClipMetadata erweitert, um beliebige Inhalte wie Bilder zu unterstützen.
  • Fügt die DeviceConfigurationOverride API zu ui-test hinzu, um das lokale Überschreiben des Verhaltens der zu testenden Inhalte zu ermöglichen, z. B. um eine verfügbare Größe, Sprache, Layoutrichtung, Schriftgröße oder ein Design anzugeben.

Version 1.6

Version 1.6.8

12. Juni 2024

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

Fehlerkorrekturen

  • Inkonsistenzen in der Schriftskalierung, wenn die Schriftgröße unter der untersten definierten Tabelle lag, wurden behoben. In diesem Fall interpolieren wir nun zwischen der linearen 1x-Skala und der untersten definierten Tabelle, sodass die Schriftgröße mit zunehmenden Skalierungen kontinuierlich zunimmt. (Icbae3)

Version 1.6.7

1. Mai 2024

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

Version 1.6.6

17. April 2024

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

Fehlerkorrekturen

  • Ein seltener BasicTextField-Absturz wurde behoben.

Version 1.6.5

3. April 2024

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

Version 1.6.4

20. März 2024

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

Version 1.6.3

6. März 2024

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

Version 1.6.2

21. Februar 2024

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

Version 1.6.1

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

Fehlerkorrekturen

  • Ein Problem mit der Abwärtskompatibilität mit SemanticsPropertyReceiver.performImeAction und SemanticsActions.PerformImeAction wurde behoben. (Ie0bb2, b/322269946)
  • Bei Layouts tritt jetzt beim Messen ein Fehler auf, wenn eine ungewöhnlich große Größe zurückgegeben wird. Diese Art von Fehler tritt normalerweise auf, wenn für die Messung direkt maximale Grenzwerte angewendet werden, ohne nach Constraints.Infinity zu suchen. Die Prüfung hilft Entwicklern, Probleme zu finden, bei denen das Layout die falsche Größe hat und nicht das Layout, in dem es enthalten ist. (I339a9)

Version 1.6.0

24. Januar 2024

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

Version 1.6.0-rc01

10. Januar 2024

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

Fehlerkorrekturen

  • Optimierte Implementierung von Vektorgrafiken zur Verbesserung der Leistung durch Minimierung zusätzlicher Neuzusammensetzungen

Version 1.6.0-beta03

13. Dezember 2023

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

Neue Funktionen

  • Ein LayoutCoordinates kann jetzt getrennt werden, ohne dass der Knoten getrennt wird. Schützen Sie diese im Compose Layout Inspector (If693)

Fehlerkorrekturen

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

Version 1.6.0-beta02

29. November 2023

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

Version 1.6.0-beta01

15. November 2023

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

API-Änderungen

  • Der DragAndDropTarget-Modifikator übernimmt jetzt explizit die empfangende DragAndDropTarget und hat eine Lambda-Funktion, um eine Drag-and-drop-Sitzung zu aktivieren. Es gibt jetzt zwei Factory-Funktionen für eine DragAndDropModifierNode. einen für den Empfang von Übertragungen und einen für die Datenübertragung (I69481)
  • maximumFlingVelocity wurde so aktualisiert, dass es als Gleitkommazahl dargestellt wird. Die Dokumentation wurde aktualisiert, um klarere Angaben zur Einheit maximumFlingVelocity zu machen. (I8adc7)
  • onDragAndDropStart“ in der DragAndDropModifierNode-Factory wurde in „acceptDragAndDropTransfer“ umbenannt.acceptsDragAndDropTransfer wurde dem dragAndDropTarget-Modifikator hinzugefügt, damit er per Drag-and-drop akzeptiert. Diese Lambda-Funktion gibt einen gültigen DragAndDropTarget zurück, wenn sie an einer Drag-and-drop-Sitzung interessiert ist. Andere Lambdas zur Verarbeitung von Drag-Events wurden dadurch ersetzt. Eine DragAndDropTarget-Factory-Funktion wurde hinzugefügt, um von Drag-and-drop-Sitzungen zu empfangen (Iebf3a).
  • Der Typ "DragAndDropModifierNode.drag" für DragAndDropInfo wurde entfernt und akzeptiert jetzt Parameter für die Lambda-Funktion "transferData", die Dekorationsgröße und die Lambda-Funktion "Ziehen" DrawScope

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

    onDragAndDropEvent in der Factory-Funktion für 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)

  • Verbessert durchsuchbare Knoten-API-Namen, um sie verständlicher zu machen. (Ia4474)

  • OriginalText durch TextSubstitution ersetzen. (Ifa5a8)

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

  • Die untergeordneten Elemente von SubcomposeLayout (sowie 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 restlichen Test-APIs filtern deaktivierte Knoten standardmäßig heraus. (I2ef84, b/187188981)

  • FocusDirection.In und FocusDirection.Out wurden entfernt, 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) anstelle von datenklassenbasierten Instanzen, um diese Slots zu erstellen. Dies ist eine funktionsgefährdende Änderung. In der Demo und im Beispielcode finden Sie Beispiele zur Verwendung der neuen API. (Ia8943)

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

  • FontScalable-Schnittstelle wurde in FontScaling umbenannt (Ie804a)

Fehlerkorrekturen

  • SoftwareKeyboardController.show() zeigt die Softwaretastatur nicht mehr an, wenn kein Texteditor mehr im Fokus ist. (I2165a, b/301477279)
  • Ereignisse mit Aufwärtstaste auf der Hardware für Tasten, die in derselben Schreibansicht kein Down-Ereignis erhalten haben, werden jetzt ignoriert. (Ib37b4, b/305518328)
  • Renderer-Unterstützung für „Erledigen“-Gradient in ArcLine wurde hinzugefügt. (I4d5bb)
  • Implementiere Gleichheits- und Hashcode für PageSize.Fixed. (Ie3ede, b/300134276)
  • Binär-Kompatibilitätsproblem bei der Änderung von Window Inset beheben (Iee695)
  • Entferne die Materialkernschicht für den Material3-Chip/die Schaltfläche, da die Mikro-Benchmarks auch ohne sie eine bessere Leistung zeigen. (I55555)
  • TestDispatcher-Werte, die als effectContext-zu-Compose-Tests übergeben wurden, werden jetzt zum Erstellen der Test- und Frame-Uhren verwendet. (Ia7178)

Version 1.6.0-alpha08

18. Oktober 2023

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

API-Änderungen

  • Bei Modifier.dragAndDrawSource wurde die Lambda-Funktion onDrawDragShadow in drawDragDecoration umbenannt und bei DragAndDropInfo wurde der Größenparameter 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 oder nicht, ohne auch auf ihn zu beanspruchen. (I2c196, b/302100809)
  • Es wurde ein spezieller Unspecified-Wert für die Felder TextAlign, TextDirection, Hyphens und LineBreak von ParagraphTextStyle eingeführt, um null zu ersetzen. Da es sich bei diesen Klassen um Inline-Klassen handelt, vermeiden wir das Boxen primitiver Typen, indem wir die Option "Nullwerte zulässig" durch "UnAngegeben" ersetzen. Konstruktoren, Getter und andere Methoden in TextStyle und Absatzformat wurden aktualisiert, sodass die erwähnten Parameter als Nicht-Null-Typen akzeptiert werden. (I4197e, b/299490814)
  • Fügen Sie eine GoogleFont-Überlastung zum Lesen einer GoogleFont aus XML hinzu. (If8f59)
  • LoremIpsum PreviewParameterProvider wurde als offener Kurs hinzugefügt. (I41bf5, b/266918816, b/300116360)

Fehlerkorrekturen

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

Version 1.6.0-alpha07

4. Oktober 2023

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

API-Änderungen

  • Einführung von PlatformTextInputMethodTestOverride zum Schreiben von Tests für benutzerdefinierte Texteditoren. (ID159b)
  • Fügt den dragAndDropSource-Modifikator zum Starten von Drag-and-drop-Sitzungen und dragAndDropTarget für den Empfang von Drag-and-drop-Sitzungen hinzu. (Ib7828, b/286038936)
  • Die Sammlungen ColorList und ColorSet wurden hinzugefügt, bei denen Zuweisungen vermieden werden. (I744bd)
  • Temporäres Flag DisableNonLinearFontScalingInCompose zum Deaktivieren der nicht linearen Schriftskalierung hinzugefügt. Legen Sie DisableNonLinearFontScalingInCompose = true in Ihren Tests fest, wenn Sie Zeit zum Bereinigen benötigen. Dieses Flag wird in Compose 1.6.0-beta01 entfernt. (IC9486)

Fehlerkorrekturen

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

Version 1.6.0-alpha06

20. September 2023

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

API-Änderungen

  • Zusätzliche Optimierungen für Material-Symbole. (I3e08d)
  • Bietet die Möglichkeit, einen Modifikatorbaum nach oben/unten zu durchlaufen, um ähnliche Knoten zu finden. (I2d234)
  • onRestoreFailed()-Callback zum focusRestorer()-Modifikator hinzugefügt (Ie1d43)
  • Verschiedene Grafik-APIs wurden androidx-Anmerkungen hinzugefügt, um ColorInt, FloatRange, IntRange, Size und mehr anzugeben. (Id65c8, b/290950582)
  • showSystemUi=true zur PreviewScreenSizes-Definition hinzufügen (Ib61d3)

Änderungen im Verhalten

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

Version 1.6.0-alpha05

6. September 2023

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

API-Änderungen

  • Inhaltsaufnahme in AndroidComposeViewAccessibilityDelegateCompat aktivieren. (Ib2969)
  • Die Bewegungsgeschwindigkeiten in Komponenten der Datenansicht wie ScrollView und RecyclerView sind auf ViewConfiguration.ScaledMaximumFlingVelocity begrenzt. „Compose“ enthält jetzt eine eigene Version von maximumFlingVelocity, die jetzt für Draggable gilt. (Ibf974)
  • Fügt ein anfängliches Gerüst hinzu, um Drag-and-drop-APIs auf der Plattform zu unterstützen. (If84ce)
  • deviceId zu RotaryScrollEvent hinzufügen (Iba3bf)
  • Die ui-tooling Devices API wurde aktualisiert, sodass neuere Geräte (Ib25b4) einbezogen werden

Version 1.6.0-alpha04

23. August 2023

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

API-Änderungen

  • Es wurde eine Methode zum Deaktivieren von ReusableComposition hinzugefügt. Dabei werden Beobachtungen entfernt, aber Knoten beibehalten. Die deaktivierte Zusammensetzung kann durch Aufrufen von setContent wieder aktiviert werden. (Ib7f31)
  • ReusableComposition-Schnittstelle zur Verwaltung des Lebenszyklus und der Wiederverwendung von Unterzusammensetzungen hinzugefügt. (I812d1, b/252846775)
  • Modifier.focusGroup wurde zu stabilen APIs hochgestuft. (I7ffa3)
  • Verschiedene Grafik-APIs wurden androidx-Anmerkungen hinzugefügt, um ColorInt, FloatRange, IntRange, Size und mehr anzugeben. (I70487, b/290950582)
  • Die ColorFilter API wurde aktualisiert und enthält jetzt konkrete abgeleitete Klassentypen, um die Überprüfbarkeit von Parametern zu verbessern. (I5fe29)
  • Einführung der Wear-Tooling-Vorschaubibliothek zur Auflistung gültiger Wear-Geräte, die für UI-Vorschauen verwendet werden können (Ib036e)
  • Die FontScalable-Schnittstelle wurde erstellt, um die Schriftskalierung der Benutzeroberfläche für die Kompaktheitsgrad zu verarbeiten. (I2cf3f)

Version 1.6.0-alpha03

9. August 2023

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

API-Änderungen

  • Neue Art von Übergang zwischen Ein- und Ausstieg, bei der der Inhalt basierend auf der Größe des Animationscontainers während der Ein- und Ausstiegsanimation skaliert wird. LookaheadScope Der zusammensetzbare Spaß und die Benutzeroberfläche sind jetzt stabil. (Ifb2ce)
  • Unterstützung für die Konfiguration von privateImeOptions hinzugefügt (Idb772)

Fehlerkorrekturen

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

Version 1.6.0-alpha02

26. Juli 2023

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

API-Änderungen

  • Es wurde eine Schnittstelle für die Dienstsuche hinzugefügt, die von Implementierern von Kompositionen implementiert werden kann. Diese ermöglicht eine Implementierung von Kompositionen, die die Suche an einen anderen Kompositionsdelegatdienst auf die ursprüngliche Komposition delegiert. Dies sollte nicht als „directy“ bezeichnet werden und wird verwendet, um in der Laufzeit experimentelle APIs zu erstellen, die in verpackten Versionen des Composers zu finden sind, z. B. im UI-Modul. (I296b9)
  • Komplett überarbeitete PlatformTextInput* API. (I6c93a, b/274661182, b/267235947, b/277380808)
  • SoftwareKeyboardController und LocalSoftwareKeyboardController befinden sich nicht mehr in der Testphase. LocalSoftwareKeyboardController ist jetzt auch ein richtiger CompositionLocal. (I4c364)
  • LookaheadLayout und LookaheadLayoutScope wurden für einige Releases eingestellt und sind jetzt entfernt. Die Ersatz-APIs sind LookaheadScope und funktionieren mit jedem Layout. (I12ac3)
  • SemanticsNodeInteraction.requestFocus wurde hinzugefügt, um den Fokus bei Tests bequemer und auffindbarer zu machen. (Ie8722)
  • Fügen Sie experimentelle APIs zum Registrieren globaler Assertions hinzu, um sie in Zukunft für Framework-Tests zu verwenden. (I12d77)

Fehlerkorrekturen

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

Version 1.6.0-alpha01

21. Juni 2023

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

Neue Funktionen

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

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

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

includeFontPadding ist ein altes Attribut, das steuert, ob oberhalb der ersten und letzten Zeile des Textes ein zusätzlicher Abstand hinzugefügt werden soll, um Zeichen aufzunehmen, die über oder unter den Grundlinien des Textes stehen.

Wenn Sie diese Version von „Compose“ aktualisieren, wird die Darstellung aller Texte in Ihrer Benutzeroberfläche geändert, indem der zusätzliche Abstand oben in der ersten und letzten Zeile jedes angezeigten Texts entfernt wird.

Je nach Ihren UI-Anforderungen und den verwendeten Schriftmesswerten sollten die Änderungen minimal sein. Es können jedoch Probleme wie die folgenden auftreten: – Fehlerhafte Screenshot-Tests. Korrigieren Sie die Benutzeroberfläche, falls erforderlich, und generieren Sie die goldenen Bilder neu. - Der Text ist nicht korrekt ausgerichtet. Entfernen Sie gegebenenfalls benutzerdefinierte Abstände für ausgeschlossene Elemente oder fügen Sie einen zusätzlichen Abstand hinzu.

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

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

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

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

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

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

Sollten im Zusammenhang mit dieser Änderung Probleme auftreten, melden Sie diese bitte über die Problemverfolgung.

API-Änderungen

  • InputConnection#requestCursorUpdates unterstützen (I0c69b)
  • FocusRequester.saveFocusedChild und FocusRequester.restoreFocusedChild hinzugefügt (Ic557e, b/272302679, b/275157318)
  • Füge den Wurfables, die beim Laden von Bitmap-Assets mit einer Beschreibung des Asset-Pfads, der nicht geladen werden konnte, den Typ ResourceResolutionException hinzu. (I19f44, b/230166331, b/278424788)
  • Optimierte Zugänglichkeit für Leistung und Arbeitsspeicherzuweisung (Iede48)
  • Semantikeigenschaften und Aktionen zur Unterstützung der Textübersetzung wurden hinzugefügt. (I4a6bc)
  • Neue Property in IntrinsincMeasureScope und ihren Implementierungen (z.B. MeasureScope), die angibt, ob die aktuelle Messungskarte eine Lookahead-Karte ist. (I7a812)
  • Die DrawScope API wurde aktualisiert, um die Möglichkeit zu bieten, das Rendering auf einen anderen Canvas mit alternativer Dichte/Layoutrichtung und Größe zu übertragen.
  • DrawContext wurde aktualisiert, um die Konfiguration von Dichte und Layoutrichtung zu unterstützen und den Canvas konfigurierbar zu machen. (Ie1f9b, b/225408150)
  • Paragraph#fillBoundingBoxes wurde hinzugefügt, um Zeichenbegrenzungsrahmen zu berechnen. (If30ee)
  • Ein Satz gemeinsamer MultiPreviews (Ia5a27) wurde hinzugefügt.

Fehlerkorrekturen

  • Es wurde eine FocusTargetModifierNode-Oberfläche hinzugefügt, die zum Erstellen einer benutzerdefinierten FocusTarget verwendet werden kann. (I9790e)
  • Die fallback*-Parameter im 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 mit der Maus von einem Ziehen beim verschachtelten Scrollen (insbesondere in NestedScrollConnection) zu unterscheiden (Ie57e4).
  • Es wurde die asComposePaint API hinzugefügt, um toComposePaint zu ersetzen, da das zurückgegebene Objekt das ursprüngliche android.graphics.Paint umschließt (I22b4c).
  • SemanticsProperties.imeAction verwerfen und durch einen neuen Parameter für SemanticsActions.performImeAction ersetzen. (I4a587)
  • Die Auswahl per Maus wird jetzt unterstützt. Die berührungsbasierte Auswahl wird um Wort für Wort erweitert und um Zeichen verkleinert. (IC0c6c, b/180639271)
  • Paragraph-Methoden, die bisher AssertionError für Offsets außerhalb des gültigen Bereichs ausgelöst haben, geben jetzt IllegalArgumentException wie MultiParagraph aus. (I549d3, b/243338896)

Version 1.5

Version 1.5.4

18. Oktober 2023

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

Version 1.5.3

4. Oktober 2023

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

Fehlerkorrekturen

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

Version 1.5.2

27. September 2023

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

Fehlerkorrekturen

  • Es wurde eine Problemumgehung für Abstürze hinzugefügt, bei denen über einen Hintergrundthread auf die Accessibility Scroll API zugegriffen wurde.
  • Das Hinzufügen nicht angehängter Knoten zur Semantikstruktur wurde behoben.

Version 1.5.1

6. September 2023

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

Fehlerkorrekturen

  • Textfelder, die die Tastatur anzeigen und bearbeitbar sind, wenn readOnly auf „true“ gesetzt ist, wurden korrigiert. Außerdem wurde behoben, dass die Tastatur nicht angezeigt wurde, 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 wurde veröffentlicht. Version 1.5.0 enthält diese Commits.

Version 1.5.0-rc01

26. Juli 2023

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

Fehlerkorrekturen

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

Version 1.5.0-beta03

28. Juni 2023

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

Fehlerkorrekturen

  • Es wurde eine FocusTargetModifierNode-Oberfläche hinzugefügt, mit der ein benutzerdefiniertes FocusTarget erstellt werden kann. (Ifb1d6)
  • Es wurde ein Problem mit zusammensetzbaren Funktionen für Dialogfelder und Pop-ups behoben, die dazu führten, dass die Größe des untergeordneten Fensters bei usePlatformDefaultWidth=true nicht wie erwartet geändert wurde. (I112ee)

Version 1.5.0-beta02

7. Juni 2023

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

API-Änderungen

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

Fehlerkorrekturen

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

Version 1.5.0-beta01

24. Mai 2023

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

API-Änderungen

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

Fehlerkorrekturen

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

Externer Beitrag

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

Version 1.5.0-alpha04

10. Mai 2023

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

Neue Funktionen

  • Modifier.Node-Delegationsverbesserungen Es wurde eine verbesserte Möglichkeit zum Delegieren an andere Modifier.Node-Instanzen über eine DelegatingNode hinzugefügt. Dazu können die APIs delegate und undelegate verwendet werden. Vor dieser Änderung musste jede API des delegierenden Knotens explizit an den delegierten Knoten delegiert werden. Nach dieser Änderung werden Knotenschnittstellen implizit delegiert, es sei denn, DelegatingNode überschreibt sie explizit. (67352bc)

API-Änderungen

  • Stell NestedScrollModifierNode vor, ein NestedScroll Modifier.Node, das delegiert werden kann. (I69513)
  • Der zusammensetzbaren Funktion AndroidViewBinding wurden die Parameter onReset und onRelease hinzugefügt, was die zusammensetzbare Funktion AndroidView widerspiegelt und die Unterstützung für die Wiederverwendung von Ansichten mit ViewBinding aktiviert wurde. (I00b1e, b/276802519)
  • Die Compose Path API wurde aktualisiert, um Zurückspulen zu unterstützen, um Anwendungsfälle mit häufiger Pfadbearbeitung mit schnellerer Wiederverwendung zu unterstützen. (I7b797)
  • Der optimierte TextStyle.merge(...) mit vollständiger Parameterliste wurde hinzugefügt. (Iad234, b/246961787)
  • Viele Text-APIs wie Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush) und MultiParagraph.paint(Brush) wurden stabilisiert. (I2f740, b/261581564, b/261581931, b/261561245)
  • PlatformTextStyle.includeFontPadding wurde nicht mehr eingestellt. Ursprünglich wollten wir das Feld entfernen. Das Feedback zeigt jedoch, dass Entwickler diese Konfigurationsoption benötigen. Entfernen Sie daher die Einstellung aus dem Feld (I98e96, b/277703184).

Fehlerkorrekturen

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

Version 1.5.0-alpha03

19. April 2023

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

Neue Funktionen

  • Das neue Standardverhalten für SubcomposeLayout in LookaheadScope: SubcomposeLayouts ohne bedingte Slots (z. B. TabRow, Scaffold, BoxWithConstraints usw.) funktioniert jetzt gut mit Lookahead-Animationen.

API-Änderungen

  • Mit der neuen Standard-intermediateMeasurePolicy, die die Messungsrichtlinie aus dem Lookahead-Pass wiederverwendet, können SubcomposeLayout-Untertypen ohne bedingte Slots wie Scaffold, TabRow und BoxWithConstraints standardmäßig mit Lookaheads verwendet werden. (Id84c8)
  • Der für ein Android-Fenster erstellte Recomposer blockiert jetzt nur dann withFrameNanos-Aufrufe anstelle aller Kompositionen, wenn eine ON_STOP-Benachrichtigung eingeht. Das bedeutet, dass Fenster, die mit beendeten Aktivitäten verknüpft sind, bei Datenänderungen weiterhin neu zusammengesetzt werden, aber die Animationen oder andere Aufrufer von withFrameNanos werden blockiert. (Id9e7f, b/240975572)
  • Ändert „motionEventSpy“ in „Stabil“. (Ic5ec4, b/261560988)
  • Öffentliche Methode TextRange.constrain wurde hinzugefügt. (I97912)
  • PlatformTextStyle.includeFontPadding wurde nicht mehr verworfen, um Entwickler zu ermutigen, diese Kompatibilitäts-API zu verwenden, um die 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 wurde veröffentlicht. Version 1.5.0-alpha02 enthält diese Commits.

API-Änderungen

  • Neue SubcomposeLayout API, die eine zusätzliche Richtlinie für Zwischenwerte zum Verarbeiten von Mess-/Layoutlogik während Lookahead-Animationen verwendet. (I017d3)
  • PointerInput ist jetzt faul und verwendet Modifier.Node, um die Leistung zu verbessern. Weitere Informationen zur geringfügigen Verhaltensänderung (15 Tage)
  • Ändert experimentelle APIs mit Schlüsselereignissen in stabil. (I9c7d8, b/261566839, b/261567368)
  • Ändert experimentelle APIs in PointerInputChange in stabil. (I1b543, b/261560988, b/261565762, b/261565749)
  • Fügt eine Möglichkeit zum Instanziieren einer SuspendingPointerInputModifierNode für komplexere Modifier.Node-Implementierungen hinzu. (IC4933)
  • UrlAnnotation-Werte in AnnotatedString Sek. können jetzt über Bedienungshilfen wie TalkBack geöffnet werden. (If4d82, b/253292081)
  • Es wurde eine API hinzugefügt, um Hardwareschlüssel abzufangen, bevor sie an die Bildschirmtastatur gesendet werden (I4f4c6, b/186800395).
  • Die Semantikaktion InsertTextAtCursor für Textfelder wurde hinzugefügt. (I11ed5)
  • Bei textbezogenen Testaktionen (z.B. performTextInput) wird der Fokus jetzt direkt über die semantische Aktion angefordert, anstatt auf das Feld zu klicken. (I6ed05)

Fehlerkorrekturen

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

Version 1.5.0-alpha01

22. März 2023

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

API-Änderungen

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

Version 1.4

Version 1.4.3

3. Mai 2023

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

Fehlerkorrekturen

  • Es wurde ein Problem behoben, bei dem AndroidView bei Verwendung mit bestimmten Modifikatoren nicht korrekt dargestellt wurde. (I4dc77, b/274797771)
  • Ein Fehler in der 2D-Fokussuche wurde behoben, der DropDown-Menüs betraf (b/276811828).
  • Es wurde ein Fehler in den Eingabe-/Exit-Eigenschaften des benutzerdefinierten Fokus behoben, bei dem der Eingabe-/Exit-Block nur beim ersten Aufrufen der Lambda-Funktion ausgeführt wurde (b/277234245).
  • Eine Regression im Fokussystem, die beim Lesen von focusProperties zu einem Absturz geführt hat, wurde behoben. (b/271324781, b/274897776)

Version 1.4.2

19. April 2023

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

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem AndroidView seine Modifikatoren nicht korrekt wiederverwendet hat, was möglicherweise zu unerwartetem Verhalten und Abstürzen führte. (Ib67ee, b/275919849)
  • Problem behoben, bei dem die Tastatur für Textfelder in nicht mit der zusammensetzbaren Dialog-Funktion erstellten Dialogfeldern nicht angezeigt wurde (I82551, b/262140644)

Version 1.4.1

5. April 2023

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

Fehlerkorrekturen

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

Version 1.4.0

22. März 2023

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

Wichtige Änderungen seit Version 1.3.0

  • Es wurde eine neue PinnableContainer API hinzugefügt, mit der Lazy-List-Elemente angepinnt werden können, damit sie nicht verworfen werden, wenn sie außerhalb des gültigen Bereichs gescrollt werden. Modifier.focusable() verwendet diesen Mechanismus beispielsweise, um das Element anzupinnen, auf dem der Fokus gerade liegt. (Ib8881, b/259274257, b/195049010)
  • Das Fokussystem wird mithilfe der neuen experimentellen Modifier.Node APIs neu geschrieben. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/916/914{/151818)
  • In der IsContainer-Semantikeigenschaft auf Oberflächen hinzugefügt. Diese Eigenschaft wird in einer späteren Änderung verwendet, mit der die Durchquerungsreihenfolge basierend auf der semantischen Bedeutung von Elementen wie Oberflächen festgelegt wird. (I63379)
  • Die neue Bedienungshilfen-Rolle DropdownList wurde hinzugefügt. Damit kann das Verhalten von TalkBack beim Fokussieren auf android.widget.Spinner repliziert werden. (I177e5, b/236159001)
  • Du kannst jetzt PlatformTextStyle(emojiSupportMatch) verwenden, um die Verarbeitung der Emoji-Unterstützung für einen einzelnen Absatz zu deaktivieren. (Ia7100, b/139326806)
  • In Android Compose-UI-Tests werden jetzt Layoutübergänge für jeden Frame ausgeführt, wenn Frames ausgeführt werden, um inaktiv zu werden (z.B. über waitForIdle). Dies kann sich auf Tests auswirken, bei denen die Bestätigung einzelner Frames von Layoutanimationen durchgeführt wird. (I8ea08, b/222093277)
  • Die experimentelle Funktion TextMotion wurde zu TextStyle hinzugefügt, um für Text entweder Static(default) oder Animiert zu definieren. Verwenden Sie TextMotion.Animated, wenn der Text durch Animation skaliert, übersetzt oder gedreht werden soll. (I24dd7)

Version 1.4.0-rc01

8. März 2023

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

API-Änderungen

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

Fehlerkorrekturen

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

Version 1.4.0-beta02

22. Februar 2023

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

API-Änderungen

  • Die modifierElementOf() API wurde entfernt. Bitte verlängern Sie es stattdessen direkt von ModifierNodeElement. (I2256b)
  • Es wurde ein neuer Modifier.Node.onReset()-Callback hinzugefügt, mit dem du einen lokalen Status zurücksetzen kannst, damit der Fall bei der Wiederverwendung von Layout korrekt verarbeitet wird (z. B. als Element von LazyColumn). Das Problem FocusTargetModifierNode wurde behoben, damit der fokussierte Zustand korrekt zurückgesetzt wird. (I65495, b/265201972)
  • Der BlendMode-Parameter wurde den Methoden DrawScope.drawText, Paragraph.paint und MultiParagraph.paint hinzugefügt, um beim Zeichnen von Text auf Canvas verschiedene Mischalgorithmen zu unterstützen. (I57508)

Fehlerkorrekturen

  • Der Algorithmus für die Fokusreihenfolge von Bedienungshilfen wurde verbessert. So werden beispielsweise die oberen/unteren Balken häufiger zuerst bzw. zuletzt vorgelesen (74e9c5).

Version 1.4.0-beta01

8. Februar 2023

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

API-Änderungen

  • PinnableContainer.PinnedHandle.unpin() wurde in release() (I4667a) umbenannt
  • waitUntilNodeCount, waitUntilAtLeastOneExists, waitUntilExactlyOneExists und waitUntilDoesNotExist wurden als experimentelle API zu ComposeTestRule hinzugefügt, wodurch die waitUntil API so erweitert wird, dass sie alle Matcher und eine beliebige Anzahl von Knoten akzeptiert. 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 (I7d9e2) hinzufügen

Version 1.4.0-alpha05

25. Januar 2023

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

API-Änderungen

  • Einführung neuer experimenteller Überlastungen für die runComposeUiTest- und create*ComposeRule-Funktionen, die CoroutineContext-Parameter akzeptieren. Der Kontext wird für die Testzusammensetzung und alle LaunchedEffect- und rememberCoroutineScope()-Aufrufe in der Zusammensetzung verwendet. (I10614, b/265177763)
  • Neue API zum Erfassen der eindimensionalen Geschwindigkeit hinzufügen (If5a82)
  • FocusRequester ist jetzt als @Stable gekennzeichnet. (I580ee)
  • Entfernen Sie eine experimentelle Annotation aus dem DialogProperties-Konstruktor, die einen usePlatformDefaultWidth-Parameter verwendet. (IC4048)
  • Funktion zur Berechnung von Position und Tangente in einer Entfernung auf einem Pfad mit PathMeasure.getPosition() und PathMeasure.getTangent() (I3b47c) hinzugefügt
  • Der versehentlich offengelegte öffentliche Setter wurde am PlatformParagraphStyle entfernt. (I07f47)
  • Mehr Typen/Null-Zulässigkeit von Inline-/eingestellten/verborgenen Funktionen (I24f91)
  • Fügen Sie AnnotatedString.hasStringAnnotations hinzu, um Annotationen ohne Zuweisungen abzufragen. (I94dfe, b/246960758)
  • Es wurde eine neue Überlastung für die Funktion TextMeasurer.measure hinzugefügt, die eine String als Text annimmt. (I47b2d, b/242705342)
  • Die APIs LineBreak und Hyphens in TextStyle wurden auf die stabile Version umgestellt. (IC1e1d)

Externer Beitrag

  • notifyFocusedRect-Methoden in TextInputSession und TextInputService werden nicht mehr verworfen. (I23a04, b/262648050)

Version 1.4.0-alpha04

11. Januar 2023

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

Neue Funktionen

  • Es wurde eine neue PinnableContainer API hinzugefügt, mit der Lazy-List-Elemente angepinnt werden können, damit sie nicht verworfen werden, wenn sie außerhalb des gültigen Bereichs gescrollt werden. Modifier.focusable() verwendet diesen Mechanismus beispielsweise, um das Element anzupinnen, auf dem der Fokus gerade liegt. (Ib8881, b/259274257, b/195049010)
  • Das Fokussystem wird mithilfe der neuen experimentellen Modifier.Node APIs neu geschrieben. (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/916/914{/151818)
  • In der IsContainer-Semantikeigenschaft auf Oberflächen hinzugefügt. Diese Eigenschaft wird in einer späteren Änderung verwendet, mit der die Durchquerungsreihenfolge basierend auf der semantischen Bedeutung von Elementen wie Oberflächen festgelegt wird. (I63379)
  • Die neue Bedienungshilfe-Rolle DropdownList wurde hinzugefügt. Damit kann das TalkBack's-Verhalten bei der Fokussierung auf android.widget.Spinner repliziert werden. (I177e5, b/236159001)
  • Du kannst jetzt PlatformTextStyle(emojiSupportMatch) verwenden, um die Verarbeitung der Emoji-Unterstützung für einen einzelnen Absatz zu deaktivieren. (Ia7100, b/139326806)
  • In Android Compose-UI-Tests werden jetzt Layoutübergänge für jeden Frame ausgeführt, wenn Frames ausgeführt werden, um inaktiv zu werden (z.B. über waitForIdle). Dies kann sich auf Tests auswirken, bei denen die Bestätigung einzelner Frames von Layoutanimationen durchgeführt wird. (I8ea08, b/222093277)
  • Die experimentelle Funktion TextMotion wurde zu TextStyle hinzugefügt, um für Text entweder Static(default) oder Animiert zu definieren. Verwenden Sie TextMotion.Animated, wenn der Text durch Animation skaliert, übersetzt oder gedreht werden soll. (I24dd7)

API-Änderungen

  • Das Argument maxSize: IntSize in drawText wurde durch size: Size ersetzt, um es in andere DrawScope-Funktionen einzufügen. size ist standardmäßig auf Size.Unspecified gesetzt. Das sollte das vorherige Standardverhalten nicht ändern. (Icd27d)
  • Der eingestellte experimentelle Schriftartkonstruktor wurde entfernt. (I8a724, b/261435386)
  • Die UI-Tooling-Datenklasse Group hat jetzt das Feld isInline, das angibt, ob die Gruppe für einen Aufruf einer zusammensetzbaren Inline-Funktion vorgesehen ist. Wenn isInline auf true gesetzt ist, erfolgt der Aufruf an eine zusammensetzbare Inline-Funktion. Der Wert kann jedoch bei Aufrufen von zusammensetzbaren Inline-Funktionen auf „false“ gesetzt sein, die aus Modulen stammen, die mit einer Version des Compiler-Plug-ins kompiliert wurden, das keine Inline-Funktionsinformationen generiert. (Idb846)
  • Umstellung einer Reihe zuvor experimenteller APIs auf stabile Version
  • Rotary Scroll Event API ist jetzt stabil (I42ad3, b/261561229).
  • FontVariation API ist jetzt stabil (I8779f, b/241016309)
  • Alle Font()-Konstruktoren sind jetzt stabile API (I5948b, b/261435386).
  • DeviceFontFamilyName ist jetzt stabil (I8b640, b/261435386).
  • Der AndroidFont-Konstruktor 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. Damit lassen sich beim asynchronen Laden von Schriftarten nicht abgefangene Ausnahmen abfangen. (Ibb481, b/261435386)
  • Die Font.loadingStrategy API ist jetzt stabil. (I5937c, b/261435386)
  • Die GoogleFont API ist jetzt stabil. (IC90b0, b/261435386)
  • TextUnit(float, TextUnitType) ist jetzt eine stabile API. (I90c84, b/261561612)
  • pluralStringResource ist jetzt eine stabile API. (I09849, b/261439703)

Version 1.4.0-alpha03

7. Dezember 2022

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

API-Änderungen

  • ExperimentalComposeUiApi wird aus PointerIcon entfernt (I23af8)
  • Stell die Bedienungshilfen für Seiten vor: PageUp, PageDown, PageLeft, PageRight. Beachten Sie, dass diese erst ab API 29 verfügbar sind. (Ida4ab)
  • Die rememberNestedScrollConnection-Parameteransicht wurde von der Stammansicht auf die Hostansicht aktualisiert. (Ia5200)
  • Eine Modifier API wurde hinzugefügt, um die Scroll-Informationen von Ancestors abzufragen. (I2ba9d, b/203141462)
  • Wird in Clickable verwendet, um Interaktionen beim Drücken korrekt zu verzögern, wenn Gesten zu Scroll-Ereignissen werden können.
  • Das Problem, dass Clickables bei Verwendung innerhalb von Scrollable ViewGroup die Ripples nicht korrekt verzögerte, wurde behoben.
  • Leisten und Tabellen wurden aktualisiert, um das Drücken korrekt zu verzögern, falls Gesten zu Scroll-Ereignissen werden können.
  • CompositingStrategy.Always wurde in Offscreen umbenannt, um anzugeben, dass graphicsLayer immer in einem Zwischenpuffer gerendert wird (I47dc1).
  • Layoutüberlastung mit mehreren Inhaltsbereichen ist jetzt stabil (I10566, b/248294649).
  • Es wurden experimentelle neue APIs PerfettoTrace.record {} und PerfettoTraceRule hinzugefügt, um Perfetto-Traces (auch als System-Traces bezeichnet) im Rahmen eines Tests zu erfassen und so das Testverhalten und die Leistung zu prüfen. (I3ba16)
  • Bei UI-Tests mit einer Schreibregel werden Fortsetzungen, die während withFrameNanos-Callbacks fortgesetzt werden, erst abgesendet, nachdem alle Frame-Callbacks ausgeführt wurden. Dies entspricht dem Verhalten des Editors bei normaler Ausführung. Tests, die auf dem alten Verhalten basieren, können jedoch fehlschlagen. Dies sollte nur Code betreffen, der withFrameNanos oder withFrameMillis direkt aufruft und bei dem die Logik außerhalb des Callbacks an die Funktionen übergeben wird, die möglicherweise innerhalb der Callbacks verschoben werden müssen. Beispiele finden Sie in den Änderungen am Animationstest in dieser Änderungsliste.
  • Ein optionaler onPerformTraversals: (Long) -> Unit-Parameter wurde dem TestMonotonicFrameClock-Konstruktor und der Factory-Funktion 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 zu Compose hinzugefügt (Ibf6f9, b/139326806)
  • Neuer Hintergrundparameter für @Preview zur Unterstützung dynamischer Farben hinzugefügt (I9f512)

Fehlerkorrekturen

  • Benachrichtigungen zum Anwenden von Snapshots werden jetzt gesendet, nachdem Recomposer die Änderungen angewendet hat. (Iad6c0, b/222093277)
  • Es wurden Änderungen in captureToImage eingeführt, um die Aufnahme von Screenshots aus mehreren Fenstern zu ermöglichen. Dies ist nützlich für Screenshot-Tests, bei denen Pop-ups zum Erstellen von Pop-ups verwendet werden. (I169c5)

Aktualisierung der Abhängigkeiten

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

Version 1.4.0-alpha02

9. November 2022

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

API-Änderungen

  • GraphicsLayerScope wurde aktualisiert, um die aktuelle Größe von graphicsLayer bereitzustellen. Dies ist nützlich für die Berechnung von graphicsLayer-Transformationen als Funktion der zusammensetzbaren Größe. (If8c43,b/181387080)
  • CompositingStrategy wurde eingeführt, um zu bestimmen, wann eine nicht sichtbare Compositing-Ebene für das Rendern von graphicsLayer-Inhalten verwendet werden soll. Mit „Automatisch“ wird das Standardverhalten beibehalten, das bei Anwendung von Alpha oder einer RenderEffect/Overscroll intern eine Ebene verwendet. Es wird immer ein Offscreen-Zwischenspeicher eingeführt, bei dem ModulateAlpha die Verwendung eines Offscreen-Zwischenspeichers verhindert und stattdessen jede der aufgezeichneten Zeichenanweisungen innerhalb des graphicsLayer moduliert. Bei der Nutzung von ModulateAlpha wird für RenderEffect/Overscroll-Nutzung weiterhin ein Zwischenspeicher außerhalb des Bildschirms vorhanden (I25e82, b/256382834)
  • invalidateSubtree() wurde Modifier.Node hinzugefügt, damit ganze Hierarchien für Layout und Zeichnungen ungültig werden können. (I4bd90)
  • rememberNestedScrollInteropConnection auf stabile Version hochstufen. Die Möglichkeit wurde eingeführt, eine Stammansicht an rememberNestedScrollInteropConnection zu übergeben. So kann die benutzerdefinierte Ansicht besser auf Einschränkungen beim Scrollen reagieren, insbesondere in nicht standardmäßigen Ansichten (z.B. ModalBottomSheetDialog). (I9e107)
  • Es wurde eine ObserverNode-Schnittstelle hinzugefügt, die von Modifier.Node-Implementierungen verwendet werden kann, die benachrichtigt werden müssen, wenn sich ein zuvor gelesener Wert geändert hat (I5728b, b/247716483).
  • Wir haben Paint einen neuen Konstruktor hinzugefügt, der einen nativen android.graphics.Paint akzeptiert. Außerdem wurde die Erweiterungsfunktion toComposePaint() hinzugefügt, die ein vorhandenes natives Paint-Objekt in Compose Paint konvertiert. (Ica91b)
  • Neue FontFamily.Resolver.resolveAsTypeface zur Verwendung unter Android hinzufügen. (I8950b)
  • ToolingState hinzufügen, damit Tools den internen Status von Composable ändern können (Ie6614)
  • Refaktorierungstools, um neu hinzugefügte Animationen besser zu unterstützen (I8677b)
  • Der Parameter minLines wurde zu material und material3 Text, TextField und OutlinedTextField hinzugefügt. Damit kann die Mindesthöhe der Komponente in Bezug auf die Anzahl der Zeilen festgelegt werden (I4af1d).

Version 1.4.0-alpha01

24. Oktober 2022

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

API-Änderungen

  • Die neue Methode awaitEachGesture() für Bewegungsdetektoren wurde hinzugefügt. Sie funktioniert ähnlich wie forEachGesture(), aber die Loop-over-Gesten erfolgen vollständig innerhalb von AwaitPointerEventScope, sodass Ereignisse zwischen Iterationen nicht verloren gehen können.
  • forEachGesture() wurde zugunsten von awaitEachGesture() eingestellt, weil dadurch Ereignisse zwischen Gesten verloren gehen können. (Iffc3f, b/251260206)
  • Das Recycling von Zugänglichkeitsobjekten in Androidx wird eingestellt. Wir haben festgestellt, dass Leistungsänderungen selbst in den ältesten unterstützten Versionen vernachlässigbar sind. (I0a961)
  • DrawStyle wurde zu TextStyle und SpanStyle als experimentelles Attribut hinzugefügt, um das Zeichnen von umrandetem Text zu ermöglichen. (If24b8, b/155421273)
  • Mit AnnotatedString.Builder wird jetzt kotlin.text.Appendable implementiert. (I1a061, b/231030444)
  • AnnotatedString.Builder verfügt jetzt über eine append(AnnotatedString, start: Int, end: Int)-Methode, um einen Teilstring von AnnotatedString und den sich überschneidenden Stilen anzuhängen.
  • Der Parameter DrawStyle wurde den Zeichenfunktionen Paragraph und MultiParagraph hinzugefügt, die das Zeichnen von umrandetem Text ermöglichen. (IC8102, b/155421273)

Externer Beitrag

  • Vielen Dank, dass du vighnesh für das Hinzufügen von TV-Geräten zu Vorschauen hinzugefügt hast (Ie15cd)

Version 1.3

Version 1.3.3

11. Januar 2023

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

Fehlerkorrekturen

  • Behebung eines Absturzes, der manchmal unter Android 9 auftrat, wenn in der Aktivität den Status der Schreibansicht gespeichert wurde (I0b755, b/260322832)

Version 1.3.2

7. Dezember 2022

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

Fehlerkorrekturen

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

Version 1.3.1

9. November 2022

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

Version 1.3.0

24. Oktober 2022

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

Wichtige Änderungen seit Version 1.2.0

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

Version 1.3.0-rc01

5. Oktober 2022

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

API-Änderungen

  • Neue experimentelle API-Bindestriche zur Unterstützung der automatischen Bindestrichsetzung in Text hinzugefügt (Iaa869)

Fehlerkorrekturen

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

Version 1.3.0-beta03

21. September 2022

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

API-Änderungen

  • Optionen zum Anpassen des Zeilenumbruchs im Text hinzufügen. (I86907)
  • Das Argument size:IntSize wurde in der Methode TextMeasurer.measure mit constraints: Constraints geändert, um Einschränkungen für die minimale Breite zu unterstützen. (I37530, b/242707525)

Fehlerkorrekturen

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

Version 1.3.0-beta02

7. September 2022

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

API-Änderungen

  • Es wurde eine experimentelle Überlastung für das Layout hinzugefügt, die eine Liste mehrerer zusammensetzbarer Inhalts-Lambdas akzeptiert, wodurch bedrohliche Messbare in verschiedene Content-Lambdas unterschiedlich eingefügt werden können (Ic1b4e).

Änderungen an experimentellen Focus APIs:

  • FocusDirection.In und FocusDirection.Out wurden verworfen und durch FocusDirection.Enter und FocusDirection.Exit ersetzt. (Ia4262, b/183746982)
  • Zwei neue Fokuseigenschaften wurden hinzugefügt, um ein benutzerdefiniertes Verhalten für FocusManager.moveFocus(Enter) und FocusManager.moveFocus(Exit) anzugeben. (I5f3f9, b/183746982)
  • Sie können jetzt mit FocusRequester.Cancel eine Fokusbewegung abbrechen. FocusRequester.Cancel kann in jeder der folgenden Fokuseigenschaften verwendet werden: „Aufwärts“, „Abwärts“, „Links“, „Rechts“, „Weiter“, „Zurück“, „Start“, „Ende“, „Einstieg“ und „Beenden“. (Ib300f)

Version 1.3.0-beta01

24. August 2022

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

Modifikatorknoten-Refaktorierung

Die Ebene, die Modifier/Modifier.Element-Instanzen verarbeitet und ihr Verhalten auf LayoutNodes koordiniert, wurde umfassend refaktoriert. Derzeit handelte es sich um eine Refaktorierung, die sich nicht auf die öffentliche API einer der vielen Modifikatoren in Compose ausgewirkt hat und als reine Implementierungsänderung betrachtet werden kann. Trotzdem ist dies aus verschiedenen Gründen eine wichtige Änderung. (IE4313)

Änderungsübersicht

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

Im Großen und Ganzen bietet diese Abstraktion einen alternativen Mechanismus zur Erstellung zustandsorientierter Modifikatoren, ohne sich auf die Mechanismen der Modifier.composed API zu verlassen.

Risiko

Diese Änderung ist strikt binär mit früheren Releases kompatibel und soll im Hinblick auf das beobachtbare Verhalten so weit wie möglich und praktisch möglich sein, wenn sie abwärtskompatibel ist. Allerdings gibt es nur wenige Subsysteme für diese Refaktorierung, die nicht umgesetzt wurden. Wahrscheinlich hat sich das Verhalten in einer Weise geändert, die von unseren Tests nicht abgedeckt wurde und noch nicht gefunden und behoben wurde.

Führen Sie ein Upgrade auf diese Version daher mit Vorsicht durch. Wenn Sie der Meinung sind, dass dadurch ein Fehler aufgetreten ist, teilen Sie uns dies bitte mit.

Experimentelle APIs

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

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

Änderung des Verhaltens

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

Die maximal unterstützte Höhe für Dialogfelder und Pop-ups zum Schreiben wurde von 30 dp auf 8 dp reduziert. Diese Änderung betrifft sowohl benutzerdefinierte Dialogfelder als auch benutzerdefinierte Dialogfelder und Pop-ups der Benutzeroberfläche. Mit dieser Änderung soll ein Fehler in Bezug auf die Bedienungshilfen bei Android-Versionen unter S minimiert und sichergestellt werden, dass Bedienungshilfen in diesen Fenstern mit dem Inhalt des Dialogfelds oder Pop-ups interagieren können.

Sie sind nur von dieser Änderung betroffen, wenn Sie eine benutzerdefinierte Dialog- oder Pop-up-Implementierung mit einer Höhe von mehr als 8 dp erstellen. Ziehen Sie in Erwägung, die Höhe Ihres Dialogfelds oder Pop-ups zu verringern. Wenn Sie dieses neue Verhalten deaktivieren möchten, können Sie Ihr eigenes Dialogfeld oder Pop-up mit der gewünschten Höhe festlegen. Dies wird nicht empfohlen, da die Barrierefreiheit beeinträchtigt werden könnte und der Entwickler dafür sorgt, dass der untere Teil des Dialogfelds oder Pop-ups interaktiv und für Bedienungshilfen lesbar ist.

API-Änderungen

  • Es wurde ein Problem behoben, bei dem painterResource bei Konfigurationsänderungen nicht aktualisiert wurde (I58e73, b/228862715).
  • rememberTextMeasurer benötigt die Parameter FontFamily.Resolver, Density oder LayoutDirection nicht mehr. Verwenden Sie den TextMeasurer-Konstruktor, 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 dem letzten stabilen Release. (Ieb2f3)
  • Der unnötige Operator wurde aus mehreren Gleichheitsdefinitionen entfernt. Dies hat keine Auswirkungen. (I6c309)
  • FontVariation.Setting ist eine versiegelte Schnittstelle, die zukünftige Clamping APIs ermöglicht. (I11021, b/143703328)
  • CompositionGroup.findParameters zu SlotTree.kt hinzufügen. Dadurch können Tools Parameter für eine CompositionGroup abrufen, ohne die gesamte Slot-Tabelle analysieren zu müssen. (I124fe)

Version 1.3.0-alpha03

10. August 2022

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

API-Änderungen

  • LayoutCoordinates.findRootCoordinates() ist jetzt öffentlich (I7fa37, b/204723384).
  • Es wurde eine experimentelle API zum Abrufen von LayoutCoordinates in PlacementScope hinzugefügt. Dadurch wissen Entwickler, wo das aktuelle Layout untergeordnete Elemente relativ zu seiner Position platzieren soll. (I5482b, b/238632578)
  • LayoutCoordinates.transformFrom wurde hinzugefügt, um die Matrixtransformation von einem LayoutCoordinates zum anderen abzurufen. (Ic5ab1, b/238632578)
  • SemanticsModifier.id wurde eingestellt und die Semantik-ID wurde nach LayoutInfo.semanticsId verschoben. (Iac808, b/203559524)
  • Ressourcenschriftarten unterstützen jetzt das Festlegen von Einstellungen für Schriftvariationen (API 26 und höher). (I900dd, b/143703328)
  • Unterstützung für variable Schriftarten in DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • Schriftkonstruktoren akzeptieren jetzt eine Liste von FontVariation.Setting zum Konfigurieren variabler Schriftarten auf O+ Geräten. (I11a9d, b/143703328)
  • Fügen Sie die FontVariation API zum Definieren und Verwenden von variablen Schriftarten hinzu. (I3c40c, b/143703328)
  • LineHeightStyle.Alignment-Konstruktor ist jetzt öffentlich (experimentell) (I4bbbe, b/235876330)
  • Der Absatz wird nun für Android und Computer definiert. (Id387e, b/239962983)
  • „Interface Paragraph“ ist jetzt mit einer versiegelten Schnittstelle versehen. Es gibt keinen Anwendungsfall für das Erstellen von abgeleiteten Absätzen. Wir empfehlen Ihnen, sich mit uns in Verbindung zu setzen, falls Sie von dieser Änderung betroffen sind. (If5247, b/239962983)
  • Die experimentelle Annotation wurde aus PlatformTextStyle und LineHeightStyle entfernt. (I64bef)
  • TextInputService.show|hideSoftwareKeyboard einstellen. Verwende im App-Code stattdessen SoftwareKeyboardController und im IME-Verwaltungscode TextInputSession. (I14e4c, b/183448615)
  • Neue API für vorhandene Animationstypen hinzufügen (I26179)

Fehlerkorrekturen

  • @RequiresPermission wurde APIs hinzugefügt, für die die Berechtigung POST_NOTIFICATIONS ab SDK 33 erforderlich ist. (Ie542e, b/238790278)

Version 1.3.0-alpha02

27. Juli 2022

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

API-Änderungen

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

Fehlerkorrekturen

  • Beim Hinzufügen von InputEventChange-Ereignissen zum Velocity-Tracker berücksichtigen wir jetzt Deltas anstelle von Positionen. Dies garantiert, dass die Geschwindigkeit für alle Fälle korrekt berechnet wird, selbst wenn sich das Zielelement bewegt (Icea9d, b/216582726, b/223440806, b/227709803).
  • Durch AnnotatedString.toUpperCase verursachte NPE korrigieren, wenn Anmerkungen vorhanden sind. (I0aca2, b/210899140)

Version 1.3.0-alpha01

29. Juni 2022

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

API-Änderungen

  • Neue LookaheadLayout, die eine Lookahead-Passung vor der tatsächlichen Messung/dem tatsächlichen Layout unterstützt. So kann das Layout bei Änderungen vorab berechnet werden. Gleichzeitig kann der Post-Lookahead-Messwert bzw. das Post-Layout die vorab berechnete Größe/Position verwenden, um die Größe und die Positionen in Richtung des Ziels zu animieren. SubcomposeLayouts wird noch nicht unterstützt, ist aber in einer künftigen Version geplant. (I477f5)
  • Fügen Sie dem Pinsel-Flavor TextStyle und SpanStyle einen optionalen Alpha-Parameter hinzu, um die Deckkraft von Text zu ändern. (Ic2fac, b/234117635)
  • Einführung des Annotationstyps UrlAnnotation und der zugehörigen Methoden zur Unterstützung von TalkBack-Links in AnnotatedStrings. (I1c754, b/231495122)
  • Dienstprogrammfunktionen zur Laufzeit verschieben (I4f729)

Fehlerkorrekturen

Externer Beitrag

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

Version 1.2

Version 1.2.1

10. August 2022

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

Fehlerkorrekturen

  • Ein Nullpointer im Inspector wurde korrigiert (b/237987764)
  • Ein Fehler bei der Umwandlung der Klasse beim Erinnern im Prüftool wurde behoben (b/235526153).

Version 1.2.0

27. Juli 2022

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

Wichtige Änderungen seit Version 1.1.0

  • Verbesserungen beim Fokusdurchlauf:

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

    • Fenstereinlagen
    • Kernprimitive für gestengesteuerte, unendliche Animationen und Layoutanimationen
    • GraphicsLayer Funktionen, darunter RenderEffect
  • Viele Fehlerkorrekturen und Leistungsverbesserungen

Version 1.2.0-rc03

29. Juni 2022

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

  • Keine Änderungen seit 1.2.0 bis rc02.

Version 1.2.0-rc02

22. Juni 2022

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

Version 1.2.0-rc01

15. Juni 2022

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

API-Änderungen

  • Schnittstellen in Erstellungsbibliotheken werden jetzt mit jdk8-Standardschnittstellenmethoden erstellt (I5bcf1).
  • Wir haben KeyInjectionScope Funktionen für übergeordnete Elemente zum Einfügen von Tastendrucken hinzugefügt, während andere Tasten gedrückt gehalten oder aktiviert werden. Zu diesen Funktionen gehö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 Strg-Tasten gedrückt ist. Weitere Informationen zu den einzelnen Funktionen finden Sie unter KeyInjectionScope. (I9f6cd, b/229831515)
  • Es wurde eine experimentelle OverscrollEffect eingeführt, um neben den Modifier.scrollable-Überladungen, die diese Overscroll-Effekte akzeptieren, benutzerdefinierte Overscroll-Effekte zu ermöglichen.
  • Die experimentelle LocalOverScrollConfiguration wurde von foundation.gesture in das Foundation Package verschoben und in LocalOverscrollConfiguration umbenannt (If19fb, b/204650733)
  • Benennen Sie runComposeUiTestWithoutActivity {} in runEmptyComposeUiTest {} um, damit dies mit createEmptyComposeRule() übereinstimmt (I6fed7).

Version 1.2.0-beta03

1. Juni 2022

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

API-Änderungen

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

Fehlerkorrekturen

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

Version 1.2.0-beta02

18. Mai 2022

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

API-Änderungen

  • Funktionen in anderen Vorschautypen wiederverwenden (I19f39)

Fehlerkorrekturen

  • ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer wurde in DisposeOnDetachedFromWindowOrReleasedFromPool umbenannt, um besser widerzuspiegeln, dass Entsorgungen auftreten und nicht nur, wenn sie nicht verfügbar sind. (If15ca)

Version 1.2.0-beta01

11. Mai 2022

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

Neue Funktionen

  • Dies ist die erste Betaversion von Version 1.2.

API-Änderungen

  • Experimentelle BeyondBoundsInterval hinzugefügt, die von benutzerdefinierten Implementierungen von LazyList verwendet werden kann, wenn Elemente über die sichtbaren Grenzen hinaus angeordnet werden (Ifabfb, b/184670295)
  • Schlüsselversionen von Modifier.composed sind jetzt stabile API (Ie65e4, b/229988420)
  • Die rememberNestedScrollConnection API wurde vereinfacht, um die aktuellen Ansichtsinformationen mithilfe von Kompositionslokalen abzurufen (I67ca7).
  • Die Annotation @ComposableTarget und die mit @ComposableTargetMarker gekennzeichneten Annotationen können jetzt im Dateibereich mit dem Präfix @file verwendet werden. Bei Verwendung einer Zielannotation auf Dateiebene geht der Compiler davon aus, dass alle zusammensetzbaren Funktionen in der Datei auf den zugehörigen Applier ausgerichtet sein sollen. Mit @file:UiComposable wird beispielsweise deklariert, dass alle @Composable-Funktionen auf den Anwender der Benutzeroberfläche zum Erstellen ausgerichtet sind. Eine Funktion, die auf einen anderen Applier ausgerichtet ist, muss die Zielmarkierungsannotation für den gewünschten Applier explizit bereitstellen. (I40804)
  • Einführung einer neuen experimentellen, plattformunabhängigen, Test-API: interface ComposeUiTest und fun runComposeUiTest(block: ComposeUiTest.() -> Unit), mit denen Compose-UI-Tests ohne TestRule ausgeführt werden können. Wenn Sie einen Test ohne ComposeTestRule ausführen möchten, übergeben Sie den Test als Lambda an runComposeUiTest und verwenden Sie die Methoden und Mitglieder im Empfängerbereich ComposeUiTest. Das sind dieselben wie in ComposeContentTestRule.

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

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

    Das Migrieren eines Tests von einer ComposeTestRule zu ComposeUiTest kann so erfolgen (Android-Beispiel). Von:

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

    Sie haben folgende Optionen:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @Test
        @OptIn(ExperimentalTestApi::class)
        fun test() = runComposeUiTest {
            setContent {
                Text("Hello Compose!")
            }
            onNodeWithText("Hello Compose!").assertExists()
        }
    }
    
  • Derzeit stammen ComposeContentTestRule und ComposeTestRule nicht von ComposeUiTest. Das bedeutet, dass Erweiterungsfunktionen unter ComposeUiTest noch nicht auf der TestRule-Oberfläche aufgerufen werden können. Wenn ComposeUiTest auf die stabile API umgestellt wird, werden ComposeContentTestRule und ComposeTestRule geändert und von ComposeUiTest erweitert. (Ib4e90)

  • LineHeightBehavior wird in LineHeightStyle umbenannt.

  • LineVerticalAlignment wird in LineHeightStyle.Alignment umbenannt.

  • LineHeightTrim“ wird umbenannt in „LineHeightStyle.Trim

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

  • Brush wurde zu TextStyle und SpanStyle hinzugefügt, um eine Möglichkeit zum Zeichnen von Text mit Farbverlauf zu bieten. (I53869, b/187839528)

  • trimFirstLineTop wurden die trimLastLineBottom-Attribute von LineHeightBehavior zu einer einzigen Aufzählung geändert: LineHeightTrim. LineHeightTrim haben Werte aus vier Zuständen, die durch zwei boolesche Werte definiert werden: FirstLineTop, LastLineBottom, Beide und keiner (Ifc6a5, b/181155707)

  • LineHeightBehavior wurde zu TextStyle und ParagraphStyle hinzugefügt. Mit LineHeightBehavior wird festgelegt, ob die Zeilenhöhe am oberen und unteren Rand der letzten Zeile angewendet wird. Außerdem definiert er die Ausrichtung der Linie in dem durch TextStyle(lineHeight) vorgegebenen Feld.

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

  • Konfigurationen mit trimFirstLineTop und trimLastLineBottom 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

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

Externer Beitrag

  • MouseInjectionScope.scroll(delta = someDelta) wird jetzt unter Android umgekehrt, wenn wir vertikal scrollen. Wenn „someDelta“ positiv ist, wird nach unten gescrollt. (Ifb697, b/224992993)

Version 1.2.0-alpha08

20. April 2022

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

API-Änderungen

  • Die pluralStringResource-Funktionen wurden als experimentell gekennzeichnet, um die zukünftige Internationalisierung für die Weiterentwicklung zu ermöglichen. (If24e4)
  • Absatz und MultiParagraph akzeptieren jetzt Einschränkungen-Parameter. Wenn Constraints.maxHeight übergeben wird, ist dies derzeit nicht möglich, ermöglicht aber zukünftige Berechnungen, z. B. Ellipsen, die auf der Höhe basieren. (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() akzeptiert jetzt eine benutzerdefinierte MutableSet-ähnliche Klasse, mit der keine neuen Elemente hinzugefügt werden können. (ICD314)
  • PointerIcon ist jetzt eine @Stable-Schnittstelle (I9dafe).
  • Der Teilverbrauch (nach unten ODER in der Position) wurde in PointerInputChange eingestellt. Sie können consume() verwenden, um die Änderung vollständig zu übernehmen. Mit isConsumed können Sie feststellen, ob die Änderung bereits von einer anderen Person übernommen wurde.
  • PointerInputChange::copy() erstellt jetzt immer eine oberflächliche Kopie. Das bedeutet, dass Kopien von „PointerInputChange“ genutzt werden, sobald eines der Exemplare genutzt wurde. Wenn Sie eine ungebundene PointerInputChange erstellen möchten, verwenden Sie stattdessen den Konstruktor. (Ie6be4, b/225669674)
  • Aktivieren Sie die verschachtelte Scroll-Interoperabilität zwischen „Schreiben“ und „Ansehen“ in der Richtung „Schreiben“ > „Ansehen“. Das bedeutet, dass ein übergeordnetes Element des Typs „Schreiben“ verschachtelte Scroll-Deltas aus einer verschachtelten Scroll-Ansicht empfangen kann. (If7949, b/174348612)
  • Neue SemanticsProperty testTagsAsResourceId, mit der das Schreiben mit UIAutomator-Tests für das View-System übereinstimmt. (I39c20)
  • Alle verfügbaren Schriftstärken für Systemschriftarten unter Android anzeigen, wenn FontFamily.SansSerif verwendet wird. In API 21 bis 28 werden dann intern Fallback-Schriftnamen wie „serif-medium“ verwendet. Dies ist eine Verhaltensänderung, da bisher nur die Gewichtungen 400 und 700 von API 21 bis 28 unterstützt wurden. (I380fe, b/156048036, b/226441992)
  • Absatz- und Mehrabsatz-Lehrkräfte haben Positionsargumente vor optionalen Argumenten neu angeordnet. (Idafaa)
  • AndroidFont verwendet jetzt „typefaceLoader“ als Konstruktorparameter. (I2c971)

Version 1.2.0-alpha07

6. April 2022

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

API-Änderungen

  • Die neue Funktion Snapshot.withoutReadObservation { ... } wurde hinzugefügt. Damit können Nutzer die übergebene Lambda-Funktion ausführen, ohne die Änderungen der Statuswerte zu abonnieren, die während dieses Blocks gelesen werden. Dies kann in Anwendungsfällen nützlich sein, wenn Sie von den Snapshot-basierten Thread-sicheren Schreibvorgängen/Lesevorgängen profitieren möchten, aber den Wert lesen möchten, ohne eine unnötige Neuzusammensetzung oder erneute Messung zu verursachen. (I9f365, b/214054486)
  • Mit der Erweiterungseigenschaft consumeWindowInsets 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 beeinträchtigen. (I0ef08, b/220943142)
  • KeyboardType.Decimal wurde als Alternative zu Keyboard.Number hinzugefügt, um speziell ein Dezimaltrennzeichen in IME zu verwenden. (Iec4c8, b/209835363)
  • PointerEventType.Scroll und PointerEvent.scrollDelta sind jetzt stabile APIs (I574c5, b/225669674).
  • Aktiviert die verschachtelte Scroll-Interoperabilität zwischen View und Compose für zusammenarbeitende View-Klassen. Das bedeutet, dass das Editor-Tool jetzt Scroll-Deltas an ein übergeordnetes Element der übergeordneten Datenansicht (mitwirkend) senden kann. (I5d1ac, b/174348612)
  • FontFamily.Resolver wurde aktualisiert, um die systemweite Bedienungshilfe für fett formatierten Text zu integrieren (I6c1e7)
  • Font(AssetManager, String, ...) wurde verworfen und durch Font(String, AssetManager, ...) ersetzt. Dies ist eine experimentelle API. (I1c7a4)
  • Fügen Sie den neuen Schriftartdeskriptor Font(DeviceFontFamilyName) hinzu, um optional beim Suchen nach vom System installierten Schriftarten während der Fallback-Ketten zu suchen. (I30468, b/219754572)
  • Es wurde eine temporäre Kompatibilitätskonfiguration für includeFontPadding in TextStyle/ParagraphStyle hinzugefügt. includeFontPadding kann über TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)) geändert werden. Dies ist eine temporäre Konfigurationsoption, mit der die Migration aktiviert wird. Sie wird entfernt. (If47be, b/171394808)
  • GoogleFont.Provider.isAvailableOnDevice-Erweiterung für Hilfe bei der Fehlerbehebung hinzufügen. (I64e31)
  • GoogleFont.Provider-Konstruktor zur Verwendung mit @ArrayRes hinzufügen (Ic5ee1, b/225984280)
  • Compose GoogleFont heißt jetzt Font(GoogleFont), ansonsten bleibt die API stabil. (I125f2)

Fehlerkorrekturen

  • Dem Material/Gerüst wurde eine Lint-Prüfung hinzugefügt, um sicherzustellen, dass der innere Innenrand verwendet wird (Ifb111)

Version 1.2.0-alpha06

23. März 2022

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

API-Änderungen

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

  • Der Schatten-/Umgebungsfarbe in GraphicsLayerScope wurden Standardimplementierungen hinzugefügt, um abwärtskompatible API-Änderungen zu gewährleisten.

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

  • FocusOrder wurde mit FocusProperties zusammengeführt und focusProperties() verfügt jetzt über alle Funktionen von focusOrder(). FocusOrder und focusOrder() wurden verworfen. focusOrder(), der focusRequester akzeptiert, sollte durch einen focusRequester()-Modifikator in Kombination mit focusProperties() ersetzt werden. Dadurch können die Modifikatoren stärker getrennt werden. (I601b7)

  • Das Upgrade von RecyclerView und Compose führt nun zu einer viel besseren Scrollleistung für RecyclerViews mit untergeordneten Erstellungsansichten.

  • ViewCompositionStrategy.Default als Methode zum Abrufen der integrierten Standardstrategie hinzufügen

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

  • Zusätzliche Unterstützung für das Hinzufügen von Anmerkungen zu Anmerkungsklassen mit @Preview als erster Schritt zum Hinzufügen der Multipreview-Funktion. Solche Anmerkungen könnten verwendet werden, um zusammensetzbare Methoden oder andere Anmerkungsklassen zu annotieren, die dann als indirekt mit der gegebenen @Preview annotiert angesehen werden könnten. (I12eff)

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

Fehlerkorrekturen

  • Vektorgrafik-APIs wurden aktualisiert und verwenden nun die korrekte zusammensetzbare Anmerkung @VectorComposable anstelle von @UiComposable (I942bc).
  • Crossinline aus AnnotatedString.Builder.withStyle entfernen (If84d5)

Externer Beitrag

  • Compose-UI: Die Properties ambientShadowColor und spotShadowColor zu GraphicsLayerScope hinzufügen (I1ba1a, b/160665122)
  • Pluralformen werden jetzt über die pluralStringResource-Funktionen unterstützt. (Ib2f23, b/191375123)

Version 1.2.0-alpha05

9. März 2022

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

API-Änderungen

  • TextToolbar akzeptiert jetzt Lambda-Argumente anstelle von ActionCallback. (Ib2eb9, b/197950089)
  • Null-Zulässigkeit in Core und Appcompat aktualisiert, um Tiramisu DP2 zu entsprechen (I0cbb7)
  • Die Measured Interface zeigt jetzt die „parentData“-Property (I3313f) an
  • Modifier.onPlaced und die OnPlacedModifier-Schnittstelle sind jetzt stabil. (Ib5482)
  • Super! Bei der Erstellung von Animationen wird jetzt in den Entwickleroptionen die Einstellung „Skalierung der Animator-Dauer“ unterstützt. (I5a4fc, b/161675988)
  • Lokaler BeyondBoundsLayout-Modifikator hinzugefügt (If8b51, b/184670295)
  • Text: includeFontPadding ist jetzt standardmäßig deaktiviert. Die Clipping-Probleme infolge von includeFontPadding=false werden verarbeitet. Bei hohen Skripts sollte kein Zuschneiden auftreten. (I31c84, b/171394808)

Fehlerkorrekturen

  • ComposeContentTestRule.setContent gibt jetzt den Fehler IllegalStateException aus, wenn du versuchst, Inhalte festzulegen, obwohl bereits Inhalte vorhanden sind. (I888a5, b/199631334)
  • Ein Absturz wurde behoben, der beim Lesen aus der Zwischenablage unter Android durch Inhalte in der Zwischenablage verursacht wurde. (I06020, b/197769306)
  • Verbessern Sie die Scrollproben für das RSB. (I6a596)

Externer Beitrag

  • Aktualisiert für die Verwendung der Kotlinx-Koroutinen 1.6.0 (I3366d)

Version 1.2.0-alpha04

23. Februar 2022

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

API-Änderungen

  • ComposableTarget, ComposableTargetMarker und ComposableOpenTarget wurden hinzugefügt, um Berichte zur Kompilierungszeit darüber zu erstellen, wann eine zusammensetzbare Funktion aufgerufen wird, die auf einen nicht vorgesehenen Anwendungsfall ausgerichtet ist.

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

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

  • Font(resId, ...) übernimmt LoadingStrategy für die stabile API. (Ief3d2)

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

  • Asynchrones Laden von Schriftarten in Texten unterstützen (I77057, b/214587005)

  • Fügen Sie eine Bridge API zum Konvertieren von benutzerdefiniertem Font.ResourceLoader in FontFamily.Resolver hinzu. (Ia0060)

Fehlerkorrekturen

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

Version 1.2.0-alpha03

9. Februar 2022

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

API-Änderungen

  • notifyFocusedRect-Methoden in TextInputSession und TextInputService wurden verworfen und werden nicht aufgerufen. Verwende stattdessen BringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874)
  • Einführung der Methode destroyDisplayListData für die Stub-Klasse RenderNode (I1e659, b/216660268)
  • Es wurde eine neue API hinzugefügt, mit der untergeordnete Elemente von SubcomposeLayout vorab gemessen werden können. (I857ea)
  • movableContentOf wurde hinzugefügt. Damit wird eine zusammensetzbare Lambda-Funktion in eine Lambda-Funktion konvertiert, die den Status und entsprechende Knoten an jeden neu aufgerufenen Speicherort verschiebt. Wenn der vorherige Aufruf die Zusammensetzung verlässt, wird der Status vorübergehend beibehalten. Wenn ein neuer Aufruf der Lambda-Funktion in die Zusammensetzung eintritt, werden der Zustand und die zugehörigen Knoten an den Speicherort des neuen Aufrufs verschoben. Wenn kein neuer Aufruf hinzugefügt wird, wird der Status dauerhaft entfernt und Beobachter werden benachrichtigt.

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

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

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

  • Absatz und MultiParagraph nehmen jetzt FontFamily.Resolver

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

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

  • Vorabladen von Schriftarten über FontFamilyResolver.preload wird unterstützt

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

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

  • Die Font.ResourceLoaded API wurde erweitert, um das optionale und asynchrone Laden von Schriftarten zu unterstützen. Anwendungsentwickler sollten diese API nicht direkt verwenden. Informationen zum Hinzufügen neuer Schriftarten finden Sie unter AndroidFont.

  • Die Erweiterungsfunktion Font.AndroidResourceLoader ermöglicht die Konstruktion einer Font.ResourceLoader außerhalb der Zusammensetzung.

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

  • Der Typeface(FontFamily)-Konstruktor wurde verworfen. Dies wurde früher zum Vorabladen von Schriftarten verwendet, was bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern kann. Wenn Schriftarten zum Herunterladen heruntergeladen werden, kann dieser Aufruf für 10 Sekunden blockiert werden. Verwende stattdessen FontFamilyResolver.preload.

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

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

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

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

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

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

  • Das globale Ladeprogramm für Schriftarten heißt jetzt FontFamilyResolver. (I4f773, b/174162090)

  • Verwende ein neues System zum Laden von Schriftarten für den Desktop. (I9ce5c, b/174162090)

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

Fehlerkorrekturen

  • Textfelder bleiben jetzt über der Tastatur, wenn sie hervorgehoben und die Tastatur angezeigt wird und der Modus für die weiche Eingabe auf ADJUST_PAN gesetzt ist. (I8eaeb, b/190539358, b/192043120)
  • Auf dem Computer wird die lokale Zusammensetzung für „FontFamily.Resolver“ verwendet
  • FontLoader wurde für Computer eingestellt
  • Neue createFontFamilyResolver-Factory auf dem Computer (I6bbbb, b/174162090)
  • Der Eingabemethode „Softtastatur“ flackert nicht mehr, wenn der Fokus zwischen Textfeldern geändert wird. (I1bf50, b/187746439)

Version 1.2.0-alpha02

26. Januar 2022

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

API-Änderungen

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

Externer Beitrag

  • PointerEvent.scrollDelta.y ist jetzt unter Android umgekehrt. Wenn wir das Mausrad nach rechts neigen, wird 1 statt -1 zurückgegeben (Ia9811).

Version 1.2.0-alpha01

12. Januar 2022

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

API-Änderungen

  • FontFamily.canLoadSynchronously wurde verworfen. Diese Eigenschaft hat keine semantische Bedeutung. (Ica5ef)
  • CompositionData wurde ein Identitätsfeld zum Generieren von Invarianten-IDs im Layout Inspector hinzugefügt. (IC116e)
  • Wear OS-Geräte-IDs wurden zur Liste der Vorschaugeräte hinzugefügt (I93232).

Aktualisierung der Abhängigkeiten

  • Jetzt abhängig von Kotlin-1.6.10.

Version 1.1

Version 1.1.1

23. Februar 2022

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

Fehlerkorrekturen

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

Version 1.1.0

9. Februar 2022

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

Wichtige Änderungen seit Version 1.0.0

  • Stabile Unterstützung für den Overscroll-Effekt von Android 12
  • Verbesserungen bei der Größe von Berührungszielbereichen
    • In Bezug auf Compose 1.0 wird der Layoutbereich von Material-Komponenten so erweitert, dass sie den Richtlinien für Bedienungshilfen von Material für die Größe des Berührungszielbereichs entsprechen. Das Berührungsziel der Schaltfläche wird beispielsweise auf eine Mindestgröße von 48 x 48 dp erweitert, auch wenn Sie die Größe der Schaltfläche entsprechend verringern. Dadurch wird das Material Design auf das gleiche Verhalten wie die Material Design-Komponenten abgestimmt, was ein einheitliches Verhalten ermöglicht, wenn du „View“ und „Compose“ mischst. Durch diese Änderung wird außerdem sichergestellt, dass beim Erstellen der Benutzeroberfläche mit „Material erstellen“-Komponenten die Mindestanforderungen für die Barrierefreiheit auf Berührungszielbereichen erfüllt sind.
  • Stabile Unterstützung für den Navigationsschienen
  • Umstellung einer Reihe zuvor experimenteller APIs auf stabile Version
  • Support für neuere Versionen von Kotlin

Version 1.1.0-rc03

26. Januar 2022

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

Fehlerkorrekturen

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

Version 1.1.0-rc01

15. Dezember 2021

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

Fehlerkorrekturen

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

Version 1.1.0-beta04

1. Dezember 2021

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

Neue Funktionen

  • Aktualisiert, um mit Kotlin-1.6.0 kompatibel zu sein

API-Änderungen

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

Fehlerkorrekturen

  • Ein Problem wurde behoben, durch das sich die Text-Ziehpunkte nicht bewegen, wenn sich die Sichtbarkeit des IME ändert. (I25f2e)

Version 1.1.0-beta03

17. November 2021

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

API-Änderungen

  • Der neue Modifikator "Modifier.onPlaced" wurde hinzugefügt, damit die Placement-Änderungen beobachtet werden können. Daher können auf Grundlage der beobachteten Platzierungsänderung weitere Änderungen am Offset des untergeordneten Modifizierers vorgenommen werden. (I558fd)
  • InjectionScope.flush() und InjectionScope.dispose() wurden entfernt. Das Leeren aller Ereignisse und das Löschen des Bereichs erfolgen jetzt wie zuvor am Ende der aufgerufenen Methode perform*Input(). (I2bed8)
  • MultiModalInjectionScope.Touch und MultiModalInjectionScope.Mouse wurden entfernt. Zum Einfügen von Berührungs- und Mausereignissen für multimodale Gesten können Sie jetzt MultiModalInjectionScope.touch() und MultiModalInjectionScope.mouse() verwenden. Beide akzeptieren eine Lambda-Funktion, die den Empfängerbereich dieser Modalität hat. (Idde18)

Fehlerkorrekturen

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

Version 1.1.0-beta02

3. November 2021

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

API-Änderungen

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

Externer Beitrag

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

Version 1.1.0-beta01

27. Oktober 2021

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

API-Änderungen

  • Es wurde eine experimentelle BringIntoView API hinzugefügt, mit der Sie eine Anfrage an übergeordnete Elemente senden können, damit diese scrollen, um ein Element sichtbar zu machen (Ib918d, b/195353459).
  • Neue Animations-APIs zur Unterstützung von Tools Insbesondere ermöglichen sie es Tools, die Animationen und ihre Konfigurationen in „Übergänge“ zu prüfen. (I4116e)

Version 1.1.0-alpha06

13. Oktober 2021

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

API-Änderungen

  • Entfernen Sie ExperimentalComposeUiApi aus ViewRootForInspector und LayoutInfo.ownerViewId (I5c2e3)
  • Eine Überlastung ohne Kinder für das Layout wurde mit verbesserter Effizienz hinzugefügt (Ib0d9a).
  • InternalCompilerApi aus Composer-Methoden entfernt, die modulübergreifend aufgerufen werden müssen (I1aa0b).
  • SemanticsNodeInteraction.performSemanticsAction gibt jetzt den SemanticsNodeInteraction-Wert zurück, auf dem die Funktion aufgerufen wurde. (I9e5db)
  • LocalInputModeManager CompositionLocal wurde hinzugefügt, um TouchMode/NonTouchMode zu erkennen. (I6a83c, b/175899786)
  • viewConfiguration: ViewConfiguration wurde zu LayoutInfo hinzugefügt, damit Nutzer für Dinge wie eine Zeitüberschreitung beim langen Drücken den richtigen Wert sehen. (I76ca6)
    • viewConfiguration: ViewConfiguration wurde zu InjectionScope hinzugefügt, damit Tests die Eingabe von Eingaben anhand von Faktoren wie dem Zeitlimit für langes Drücken oder Touch-Slop anpassen können.
    • Die Standarddauer für langes Drücken und Doppeltippen für Touch- und Mauseingaben wurde so geändert, dass sie auf den Werten in InjectionScope.viewConfiguration basiert.
  • Implementierung von „ExposedDropdownMenu“ basierend auf „ExposedDropdownMenuBox“ mit TextField und DropdownMenu (If60b2)
  • „closeOnOutsideClick“ wurde zu PopupProperties hinzugefügt, wodurch die eingestellte Funktion „ „ „ „distOnOutsideClick“" ersetzt wurde. Die neue Eigenschaft empfängt die Klickposition und die Ankergrenzen und ermöglicht so eine genauere Kontrolle darüber, ob onDismissRequest aufgerufen werden soll oder nicht. So lässt sich beispielsweise verhindern, dass der Anker bei Berührungen geschlossen wird.
    • updateAndroidWindowManagerFlags wurde zu PopupProperties hinzugefügt, um eine Low-Level-Steuerung über die Flags zu bieten, die vom Pop-up an Android WindowManager übergeben werden. Der Parameter der Lambda-Funktion sind die Flags, die aus den PopupProperties-Werten berechnet werden, die zu WindowManager-Flags führen, z.B. „fokusable“. Das Ergebnis der Lambda-Funktion sind die endgültigen Flags, die an den Android WindowManager übergeben werden. Standardmäßig lässt updateAndroidWindowManagerFlags die aus Parametern berechneten Flags unverändert. Diese API sollte nur mit Vorsicht verwendet werden, wenn das Pop-up sehr spezifische Anforderungen an das Verhalten stellt. (I6e9f9)
  • Recomposer.state wurde verworfen und durch Recomposer.currentState ersetzt, um seinen Typ in einen StateFlow zu ändern (Ic2ab3, b/197773820).
  • flush() und dispose() wurden zu InjectionScope hinzugefügt. Verwenden Sie sie, wenn Sie alle in der Warteschlange befindlichen Ereignisse sofort leeren bzw. den Bereich entfernen möchten. (Ifb73a)
  • performScrollToNode(matcher: SemanticsMatcher) wurde hinzugefügt, mit dem ein scrollbarer Container zu dem Inhalt scrollt, der vom jeweiligen Matcher abgeglichen wird. (Ic1cb8)
  • InjectionScope implementiert jetzt Density, sodass du in performTouchInput und Freunden ganz einfach zwischen „px“ und „dp“ konvertieren kannst. (I8fe1f)

Fehlerkorrekturen

  • AndroidView gibt jetzt „LocalLifecycleOwner“ und „LocalSavedStateRegistryOwner“ über „ViewTreeLifecycleOwner“ und „ViewTreeSavedStateRegistryOwner“ weiter. (I38f96, b/179708470)
  • Das Problem mit Wear OS SwipeToDismissBox wurde behoben, wenn das Wischen manchmal nicht funktionierte. (I9387e)
  • Die Standardzeit zwischen injizierten Eingabeereignissen wurde von 10 ms in 16 ms geändert. Dies kann sich auf das Ergebnis von Tests auswirken, bei denen Eingabegesten wie ein bestimmtes Wischen ausgeführt werden. (I829fd)

Version 1.1.0-alpha05

29. September 2021

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

API-Änderungen

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

Fehlerkorrekturen

  • Die Unterstützung von Bedienungshilfen für Scrollables (sowohl Lazy als auch Lazy) in Bezug auf Scrollen wurde korrigiert (I6cdb0).
  • TouchInjectionScope.swipeWithVelocity verbessert. Sie akzeptiert jetzt mehr Eingabevariablen und schlägt Änderungen an der Eingabe vor, wenn kein Wischen erstellt werden kann (I40fbe, b/182477143).

Version 1.1.0-alpha04

15. September 2021

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

API-Änderungen

  • PointerEvent hat jetzt eine PointerEventType, um Hover-Ereignisse zu unterstützen. (I091fa)
  • Erlauben Sie untergeordneten Elementen, Zeigereingaben außerhalb der Zeigereingabegrenzen des übergeordneten Elements zu akzeptieren. Übergeordnete Elemente können diese Aufrufe mit der Eigenschaft PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655) abfangen.
  • Verworfene performGesture und GestureScope, die durch performTouchInput und TouchInjectionScope ersetzt wurden. (Ia5f3f, b/190493367)
  • touchBoundsInRoot wurde zu SemanticsNode hinzugefügt. Es enthält die Mindestgröße für Berührungszielbereiche, damit Entwickler dafür sorgen können, dass Berührungszielbereiche die Mindestanforderungen für die Barrierefreiheit erfüllen. (I2e14b, b/197751214)
  • Implementierung von Inspectable wiederholen (I927bc, b/191017532)
  • Parametername des Inspectable-Tags wurde so geändert, dass es zusammengefügt wird (I3a482, b/191017532)
  • performTouchInput und TouchInjectionScope wurden als Ersatz für performTouchInput und TouchInjectionScope eingeführt, um den Weg für andere Modalitäten (z. B. die Maus) zu ebnen.

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

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

    1. Wenn ein Down-Ereignis gesendet wurde, während Zeiger bewegt wurden, ohne ein Move-Ereignis zu senden (mit anderen Worten, updatePointerTo() wurde verwendet, aber nicht move() und dann wird down() aufgerufen), hat die vorherige Implementierung die Ereigniszeit verschoben und ein Bewegungsereignis gesendet, bevor das Down-Ereignis gesendet wurde. Die neue Implementierung sendet weiterhin das Verschiebungsereignis, verlängert jedoch in diesem speziellen Szenario nicht die Ereigniszeit.
    2. Beim Senden eines Aufwärtsereignisses, während Zeiger bewegt wurden, ohne ein Move-Ereignis zu senden (ähnlich wie oben), würde die vorherige Implementierung die Ereigniszeit verschieben und vor dem Senden des Aufwärtsereignisses ein Bewegungsereignis senden. Die neue Implementierung tut dies auch nicht. Die neuen Positionen der Zeiger werden nur durch das Ereignis "up" widergespiegelt.

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

Fehlerkorrekturen

  • Der Clip darf die Grenzen des Berührungszielbereichs über den Clipbereich hinaus erweitern, um ein Mindestmaß an Berührungsziel zu erreichen. (I43e10, b/171509422)
  • Auf Geräten mit Android 12 wird das Overscroll-Format unterstützt. (Iccf3c, b/171682480)

Version 1.1.0-alpha03

1. September 2021

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

Neue Funktionen

  • Die Funktion „Compose“ (1.1.0-alpha03) wurde so aktualisiert, dass sie von „1.5.30“ in Kotlin abhängig ist. (I74545)

API-Änderungen

  • Modifier.inspectable zum Einbinden anderer Modifikatoren hinzugefügt. (I1909b, b/191017532)
  • Die BlurredEdgeTreatment API wurde hinzugefügt, um Anwendungsfälle mit Unkenntlichmachen in häufiger verwendeten Kombinationen von Clip-Flags und Kachelmodi zu vereinfachen. In den meisten Anwendungsfällen werden unkenntlich gemachte Inhalte entweder außerhalb der ursprünglichen Inhaltsgrenzen gerendert und Bereiche außerhalb dieser Grenzen mit transparentem Schwarz unkenntlich gemacht. Oder Sie beschneiden Inhalte auf Inhaltsgrenzen, indem sie den nächstgelegenen Rand für Weichzeichner-Kernel abtasten, die über die Inhaltsgrenzen hinausgehen. (I6b4b7, b/166927547)
  • Unterstützung für RenderEffect in Compose-Desktop Einführung von OffsetEffect und des Unschärfemodifikators als einfache Möglichkeit, in einem Teil der Kompositionshierarchie visuelle Weichzeichnereffekte einzuführen. (I0f6aa, b/166927547)
  • Einführung der RenderEffect API, die optional auf einem Modifier.graphicsLayer konfiguriert werden kann, um den Inhalt der Ebene selbst zu ändern. Damit können Inhalte einer zusammensetzbaren und untergeordneten zusammensetzbaren Funktion innerhalb einer Zusammensetzungshierarchie unkenntlich gemacht werden. (I47c4d, b/166927547)
  • AwaitPointerEventScope enthält jetzt withTimeout() und withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
  • ViewConfiguration wurde eine Mindestgröße für Berührungszielbereiche hinzugefügt, die für die Semantik und die Zeigereingabe verwendet werden kann, um die Zugänglichkeit zu gewährleisten. (Ie861c)
  • TileMode.Decal-Unterstützung hinzufügen, die beim Definieren des Randverhaltens für Weichzeichner-basierte RenderEffects nützlich ist (I7e8ed, b/166927547)
  • performScrollToIndex, performScrollToKey, hasScrollToIndexAction und hasScrollToKeyAction sind jetzt stabile API (I142ae, b/178483889)
  • Es wurde eine Testmethode zum Abrufen der abgeschnittenen Grenzen hinzugefügt. (I6b28e)

Fehlerkorrekturen

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

Version 1.1.0-alpha02

18. August 2021

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

API-Änderungen

  • PointerEvent unterstützt jetzt das Lesen von Mausschaltflächen und Modifizierern. (I6310c, b/180075467)
  • Eingefügte Gesten verwenden jetzt die Zeit der MainTestClock als Informationsquelle für die Zeit. Die aktuelle Zeit für eingefügte Ereignisse in performGesture wird mit der aktuellen Zeit der MainTestClock initialisiert. (Ifb364, b/192064452)
  • DpRect(DpOffset, DpSize)-Konstruktor hinzugefügt (I2cf16, b/194219828)
  • DpSize-Klasse hinzugefügt (I7abb1, b/194219828)

Fehlerkorrekturen

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

Version 1.1.0-alpha01

4. August 2021

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

API-Änderungen

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

    Brush API wurde aktualisiert, sodass jetzt ein Parameter für die Größe vorhanden ist, der in BrushPainter abgefragt wird (Ia2752, b/189466433).

  • Aktualisierung der Methode DrawScope#drawImage, die Quell- und Zielabfragen zur Verarbeitung eines optionalen FilterQuality-Parameters verwendet. Dies ist nützlich für Pixelkunst, die verpixelt werden soll, wenn sie für pixelbasierte Grafiken verkleinert wird. BitmapPainter und zusammensetzbare Funktion für Bilder wurden aktualisiert, um auch einen optionalen FilterQuality-Parameter zu nutzen (Ie4fb0, b/180311607).

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

Fehlerkorrekturen

  • Damit die Verkettung von Draw-Modifikatoren besser unterstützt werden kann, muss die Modifier.paint-Implementierung "drawsContent" aufrufen. Bisher wurde „Modifier.paint“ für einen Blattknoten in der Modifikatorkette erwartet. Dadurch wird jedoch verhindert, dass er in einem zusammensetzbaren Container (z. B. box) konfiguriert wird oder zusätzliche Dekorationen wie Modifier.paint().border() darüber hinzugefügt werden. Indem Sie mit Modifier.paintdrawContent aufrufen, nachdem der Inhalt des jeweiligen Malers gezeichnet wurde, haben wir eine bessere Konsistenz des Verhaltens mit dem Modifikatormuster. (Ibb2a7, b/178201337, b/186213275)
  • Dialogfelder folgen jetzt dem Verhalten bei der Plattformgröße. Setzen Sie usePlatformDefaultWidth auf „false“, um dieses Verhalten zu überschreiben. (Iffaed, b/192682388)
  • InfiniteAnimationPolicy wurde nach :compose:ui (I5eb09, b/160602714) verschoben
  • Das Scrollen über Semantikaktionen für Lazy Listen und Komponenten für reguläres Scrollen ist jetzt animiert (Id9066, b/190742024).

Version 1.0

Version 1.0.5

3. November 2021

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

Fehlerkorrekturen

  • Ein Absturz-Tracking von RelatedStateOf-Instanzen wurde behoben. (aosp/1792247)

Version 1.0.4

13. Oktober 2021

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

Aktualisierung der Abhängigkeiten

  • Aktualisiert und abhängig von Kotlin 1.5.31

Version 1.0.3

29. September 2021

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

Aktualisierung der Abhängigkeiten

  • Aktualisiert und abhängig von Kotlin 1.5.30

Version 1.0.2

1. September 2021

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

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

Version 1.0.1

4. August 2021

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

Aktualisierung der Abhängigkeiten

  • Aktualisiert und abhängig von Kotlin-1.5.21.

Version 1.0.0

28. Juli 2021

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

Hauptfunktionen von Version 1.0.0

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

Bekannte Probleme

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

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

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

Version 1.0.0-rc02

14. Juli 2021

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

Fehlerkorrekturen

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

Version 1.0.0-rc01

1. Juli 2021

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

Neue Funktionen

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

API-Änderungen

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

Änderungen im Verhalten

  • Durch das Erstellen von @Preview ist jetzt ein LocalActivityResultRegistryOwner verfügbar, mit dem Sie Composables als Vorschau anzeigen können, die APIs wie rememberLauncherForActivityResult() verwenden, die von diesem Inhaber abhängen. (Ib13d1, b/185693006)
  • Durch das Erstellen von @Preview ist jetzt ein LocalOnBackPressedDispatcherOwner verfügbar, mit dem Sie Composables in der Vorschau anzeigen können, die APIs wie BackHandler verwenden, die von diesem Inhaber abhängen. (Ia1c05, b/185693006)

Fehlerkorrekturen

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

Version 1.0.0-beta09

16. Juni 2021

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

API-Änderungen

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

Fehlerkorrekturen

  • Die Schlüsselkonstanten sind vorerst @ExperimentalComposeUiApi. Bei der Codeaufnahme können private Konstanten vor der Stabilisierung deklariert werden. (Ia5d48)
  • Compose-Tests können jetzt mit Robolectric ausgeführt werden. Bisher wurden folgende Einschränkungen identifiziert:
    • Da es keine native Bitmap gibt, führt ImageBitmap() zu einer NullPointerException.
    • Da es keine Zeichnung gibt, wartet captureToImage() auf unbestimmte Zeit auf den nächsten Ziehdurchlauf (d.h., es wird ein Deadlock ausgelöst).
    • Es ist keine Schriftart geladen, daher wird jeglicher Text falsch gemessen. Alle Zeichen haben eine feste Höhe von etwa 20 Pixel und eine Breite von 1 Pixel.
    • ComposeTestRule.waitUntil {} führt den Hauptthread nicht aus, während er im Wartezustand ist. Damit ist er praktisch identisch mit ComposeTestRule.mainClock.advanceTimeUntil {}. Weitere Einschränkungen werden in Zukunft geplant. (I284fa)

Regeln für Profil hinzugefügt

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

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

Was sind Profilregeln?

  • Profilregeln für eine Bibliothek werden in der Textdatei baseline-prof.txt 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 visuell lesbaren ART-Profilformats, das bei Verwendung von adb shell profman --dump-classes-and-methods ... verwendet wird. Für die Ausrichtung auf Methoden oder Klassen gibt es zwei Arten dieser Regeln.

  • Eine Methodenregel hat das folgende Muster:

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

    <CLASS_DESCRIPTOR>
    
  • Hier steht <FLAGS> für mindestens eines der 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 sowie 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 und im Voraus kompiliert werden sollte, um die Kosten für die Kompilierung und die Interpretation der Methode beim Start zu vermeiden.

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

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

So funktioniert's

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

Version 1.0.0-beta08

2. Juni 2021

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

API-Änderungen

  • NestedScrollSource-Enum wird durch eine Inline-Klasse ersetzt. (Ie321b, b/187055290)
  • FocusManager.clearFocus(forcedClear = true) wird in FocusManager.clearFocus(force = true) umbenannt (Ia0c41).
  • Die Verwendung von enum-Werten in Inline-Klassen wurde umgestaltet, um Probleme mit vollständigen Anweisungen zu vermeiden, wenn neue Enum-Werte hinzugefügt werden. (I2b5eb)
  • @ExperimentalComposeUiApi aus PopupProperties entfernen. (I01fa6)
  • PointerType wurde von einer Aufzählung in eine Inline-Klasse geändert (If5058)
  • „ContentDescription“ und „Text Semantik“ sind keine einzelnen Werte, sondern Listen. Dies ermöglicht es, sie unverändert zusammenzuführen, anstatt Verkettungen zu verwenden. Außerdem wurden bessere Test-APIs zur Nutzung dieser Änderungen bereitgestellt (Ica6bf, b/184825850).
  • Modifier.focusModifier() wurde verworfen und durch Modifier.focusTarget() (I6c860) ersetzt
  • Modifier.onSizeChanged() und Modifier.onGloballyPositioned() sind keine Inline-Funktionen mehr (I727f6, b/186109675).
  • KeyboardType-Enum wird durch eine Inline-Klasse ersetzt. (I73045, b/187055290)
  • FocusState-Enum durch 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 anstelle von ExperimentalComposeApi. (I0cd0a)
    • Der TextUnit-Konstruktor mit TextUnitType ist jetzt ExperimentalTextApi anstelle von ExperimentalComposeApi.

Fehlerkorrekturen

  • Der in Beta07 eingeführte Fehler wurde behoben, bei dem LazyColumn-/Row-Elemente nach dem Scrollen teilweise angezeigt wurden (I8c9ac, b/188566058).
  • Die Positionsänderung wird jetzt von detectDragGesures, detectVerticalGestures und detectHorizontalGestures automatisch übernommen, sodass man change.consumePositionChange in den onDrag-Callbacks nicht aufrufen muss (I42fc4, b/185096350, b/187320697).
  • LayoutModifiers mit Ausrichtungslinien wurden korrigiert. Ein Fehler, der dazu führte, dass das übergeordnete Element nicht erneut gemessen wurde, als sich die Ausrichtungslinien der untergeordneten Elemente änderten, wurde behoben. (I4401f, b/174315652)
  • Modifier.onGloballyPositioned() wurde geändert, um die Koordinaten dieses Modifikators in der Modifikatorkette anzugeben, und nicht die Layoutkoordinaten, nachdem alle Modifikatoren angewendet wurden. Das bedeutet, dass sich jetzt die Reihenfolge der Modifikatoren darauf auswirkt, welche Koordinaten im Bericht angezeigt werden. (Ieb67d, b/177926591)

Version 1.0.0-beta07

18. Mai 2021

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

API-Änderungen

  • ViewRootForInspector-Schnittstelle zur Verwendung im Inspector hinzugefügt (Ib70df)
  • SubcomposeLayoutState unterstützt jetzt die Festlegung der Anzahl von wiederverwendbaren Slots. Im Layout bleibt diese Anzahl von Slots aktiv. Sie werden nicht entsorgt, damit sie wiederverwendet werden können, wenn ein neuer Slot benötigt wird (Ieb981).
  • KeyEventType-Enum durch eine Inline-Klasse ersetzt (Id670a, b/187055290)
  • FocusDirection-Enum wird durch eine Inline-Klasse ersetzt. (Ib6d03, b/187055290, b/184086802)
  • Bietet die Möglichkeit, den SubcomposeLayout-Zustand zu heben, mit der Sie den Inhalt in eine erforderliche Slot-ID vorversetzen können, wodurch der nächste Messwert schneller übergeben wird, da beim nächsten Mal keine Zusammensetzung mit der angegebenen SlotId versucht wird. (I42580, b/184940225)
  • Ziehpunkt für Clip-Auswahl hinzugefügt (Iff80d, b/183408447)
  • Nicht verwendete APIs für die Unterstützung von LayoutInspector wurden entfernt. (I2ac78)

Fehlerkorrekturen

  • In LazyColumn/Row bleiben jetzt bis zu zwei zuvor sichtbare Elemente aktiv (nicht entsorgt), auch wenn sie bereits herausgescrollt werden. Dadurch kann die Komponente die aktiven Unterzusammensetzungen wiederverwenden, wenn ein neues Element erstellt werden muss, was das Scrollen verbessert. (IE5555)
  • TextGeomerticTransform 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 wurde veröffentlicht. Version 1.0.0-beta06 enthält diese Commits.

API-Änderungen

  • Konflikt mit Navigationsbewegung lösen (I1145e)
  • @ComposeCompilerApi nicht mehr @RequiresOptIn (Iab690)
  • Die Bedienungshilfen „CollectionInfo“ und „CollectionItemInfo“ wurden hinzugefügt, mit denen eine Sammlung und ihre Elemente für Bedienungshilfen markiert werden können (Id54ef, b/180479017).
  • SemanticsActions.ScrollToIndex wurde hinzugefügt, um eine Liste mit indexierten Elementen zu dem Element mit einem bestimmten Index zu scrollen, und SemanticsProperties.IndexForKey, um den Index eines Elements in einer Liste mit verknüpften Elementen abzurufen. Beide Aktionen werden von LazyList implementiert.
    • Es wurde SemanticsNodeInteraction.performScrollToIndex hinzugefügt, das eine Liste zum angegebenen Index scrollt, und SemanticsNodeInteraction.performScrollToKey, das eine Liste zum Element mit dem angegebenen Schlüssel scrollt. (I4fe63, b/178483889, b/161584524)
  • "ownerViewId" wurde zu GraphicLayerInfo (I19f62) hinzugefügt.
  • Es wurde eine Font()-Überladung hinzugefügt, um Schriftarten aus Assets, der Datei und FileDescriptor zu laden (I5d382).
  • Die Accessibility API error wurde hinzugefügt, mit der ein Knoten markiert werden kann, der eine ungültige Eingabe enthält (I12997, b/180584804, b/182142737).
  • Font()-Überladungen hinzugefügt, um Schriftarten aus Assets, der Datei und dem FileDescriptor zu laden (I43007)
  • Die Speicherung von AnnotatedString wird unter TextFieldValue.Saver unterstützt. addTtsAnnotation und mit Annotation-Dienstprogrammfunktionen wurden zu AnnotatedString.Builder hinzugefügt (I8cbdc, b/178446304).
  • TextUnit-Konstruktorfunktion TextUnit(value: Float, type: TextUnitType) (I7ecce, b/178446304) hinzugefügt

Version 1.0.0-beta05

21. April 2021

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

API-Änderungen

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

Fehlerkorrekturen

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

Version 1.0.0-beta04

7. April 2021

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

API-Änderungen

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

Fehlerkorrekturen

  • Das Problem, dass Elemente von LazyColumn/LazyRow, die sich an den Kanten befanden, nach schnellem Wischen falsch positioniert wurden (Ie4d13, b/183877420) wurde behoben.
  • AndroidViewBinding entfernt jetzt ordnungsgemäß Fragmente, die über FragmentContainerView aufgebläht wurden, wenn AndroidViewBinding aus der Zusammensetzungshierarchie entfernt wird. (Ib0248, b/179915946)
  • AndroidViewBinding verschachtelt jetzt über FragmentContainerView aufgeblähte Fragmente korrekt, wenn sich ComposeView innerhalb eines Fragment befindet. Dadurch werden Probleme beim Speichern und Wiederherstellen des Zustands dieser Fragmente behoben. (I70eb0, b/179915946)
  • Die Erstellung von ViewBinding hängt jetzt von Fragment 1.3.2 ab und zeigt jetzt einheitlich Fragmente an, die nach Konfigurationsänderungen über FragmentContainerView aufgebläht wurden. (I0743d, b/179915946)

Version 1.0.0-beta03

24. März 2021

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

API-Änderungen

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

Version 1.0.0-beta02

10. März 2021

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

API-Änderungen

  • Neue lokale API zur LocalSoftwareKeyboardController-Kompositionierung hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I5951e, b/168778053)
  • Neue lokale API zur LocalSoftwareKeyboardController-Kompositionierung hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I84472, b/168778053)
  • Die folgenden 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 ein ComposeView-Objekt und Fragment und/oder AppCompat verwenden, stellen Sie sicher, dass Sie AppCompat 1.3 und höher bzw. Fragment 1.3 oder höher verwenden. Diese Versionen sind erforderlich, um den Lebenszyklus und die für ComposeView erforderlichen Inhaber von gespeicherten Status korrekt festzulegen. (I1d6fa, b/161814404)
  • Behebung des fehlerhaften rememberSaveable { mutableStateOf(0) }, der innerhalb eines Ziels von navigation-compose verwendet wurde. (I1312b, b/180042685, b/180701630)
  • Neue lokale API zur LocalSoftwareKeyboardController-Kompositionierung hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I658b6, b/168778053)
  • Die seltene Ausnahme NoSuchElementException in tearDownRegistry() von ComposeRootRegistry (Iddce1) wurde behoben.

Version 1.0.0-beta01

24. Februar 2021

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

Dies ist die erste Version der Betaversion von Compose 1.0.0.

API-Änderungen

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

    Diese Änderung beseitigt einen potenziellen Typfehler für Typen, die keine Nullwerte zulassen können und für die keine Standard-Factory angegeben wurde. Bisher wurde dadurch eine Nullreferenz für einen Typ bereitgestellt, der keine Nullwerte zulässt.

    Für Typen, für die Nullwerte zulässig sind, sollten Sie { null } als Standardwerkstatt angeben.

    Wir raten davon ab, Local Guides mit Typen zu verwenden, die keine Nullwerte zulassen, es sei denn, es kann ein vernünftiger Standardwert angegeben werden. Wenn kein sinnvoller Standardwert vorhanden ist, sollte die Lambda-Funktion defaultFactory eine Ausnahme auslösen. Das Auslösen einer Ausnahme bedeutet jedoch, dass für lokale Nutzer eine implizite Abhängigkeit besteht, die vom Typsystem nicht erzwungen wird. (Ifbd2a)

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

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

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

  • ein teilweiser Verbrauch wurde aus dem Zeiger-Eingabesystem entfernt. Die empfohlene Methode zur Koordination der teilweisen Nutzung ist Modifier.nestedScroll. (Ie9c9b)

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

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

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

  • „Providers“ wurde in CompositionLocalProvider umbenannt

    • Der Kompositionskonstruktor akzeptiert keinen Schlüsselparameter mehr und wurde eingestellt.
    • currentCompositeKeyHash wurde in eine zusammensetzbare Top-Level-Eigenschaft anstelle einer zusammensetzbaren Top-Level-Funktion umgewandelt.
    • CompositionData und CompositionGroup wurden in den Namespace „androidx.compose.runtime.tooling“ verschoben
    • ComposableLambda wurde zu einer Schnittstelle anstelle einer konkreten Klasse gemacht und verfügt nicht mehr über Typparameter.
    • ComposableLambdaN ist jetzt eine Schnittstelle anstelle einer konkreten Klasse und hat keine Typparameter mehr.
    • Die Funktion „SnapshotFlow“ wurde in den Namespace „androidx.compose.runtime“ verschoben
    • Die Zusammenführungsmethode von SnapshotMutationPolicy ist nicht mehr experimentell
    • Die @TestOnly-Funktion „clearRoots“ der obersten Ebene wurde entfernt. Es ist nicht mehr notwendig.
    • Die Funktionen „keySourceInfoOf“ und „resetSourceInfo“ wurden entfernt. Sie werden nicht mehr benötigt.
    • Composer.collectKeySourceInformation wurde entfernt. Es ist nicht mehr notwendig.
    • Die Methoden „isJoinedKey“, „joinKeyLeft“ und „joinKeyRight“ wurden entfernt. Sie werden nicht mehr benötigt.
    • Verschiedene APIs der obersten Ebene wurden verschoben und in verschiedene Dateien neu organisiert. Aufgrund der Semantik der Dateiklassen von Kotlin wird die Kompatibilität der Binärdateien, aber nicht der Quelldateien beeinträchtigt. Daher sollte es für die meisten Nutzer kein Problem sein.
    • (I99b7d, b/177245490)
  • ComponentActivity.setContent() wurde aus „Compose:ui“ entfernt. Du kannst die von androidx.activity:activity-compose:1.3.0-alpha01 verwenden. viewModel() und LocalViewModelStoreOwner wurden aus „Compose:ui“ entfernt. Verwenden Sie die aus androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 (I6f36b).

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

  • CustomEvens von PointerInputModifier wurde entfernt (I02707, b/175294473)

  • SnapshotStateObserver ist nicht mehr experimentell (Id2e6a).

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

  • longPressUnlockGestenFilter und DoubleClickGestenFilter wurden entfernt. Verwenden Sie Modifier.pointerInput mit Hilfsfunktionen, z. B. detectTapGestens (I2fedf, b/175294473).

  • Die refaktorierte Verwendung der String.format API in verschiedenen toString-Methoden wurde entfernt, um String.format nicht intern zu nutzen. (ID1290)

  • dp-Assertions entfernt (I798d2)

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

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

  • runBlockingWithManualClock (I15cdc, b/179664814) entfernt

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

  • FlingConfig wurde in FlingBehavior umbenannt. Sie ermöglicht jetzt die Anpassung von Stoppanimationen anstelle von vordefinierten Decays. (I02b86, b/175294473)

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

  • Der SoftwareKeyboardController-Callback wurde aus allen Textfeldern entfernt, der demnächst durch eine neue API ersetzt wird. (Iae869, b/168778053)

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

  • Folgende Änderungen an der Material API wurden vorgenommen:

    • Der Parameter "contentPadding" wurde zu Top/BottomAppBar hinzugefügt, um das Standard-Padding anzupassen.
    • Die Parameter in BackdropScaffold wurden neu angeordnet, um den API-Richtlinien für erforderliche Parameter vor optionalen Parametern zu entsprechen.
    • Der Parameter icon wurde in BottomNavigationItem hinter selected und onClick verschoben.
    • Der Parameter alwaysShowLabels in BottomNavigationItem wurde in alwaysShowLabel umbenannt.
    • bodyContent-Parameter in einigen Komponenten in content umbenannt.
    • Parameter in ButtonDefaults.buttonColors() neu angeordnet. Bitte beachten Sie, dass dies keinen Fehler in Ihrem Code verursacht, da sich der Typ der Parameter nicht geändert hat. Stellen Sie sicher, dass Sie entweder benannte Parameter verwenden oder die Reihenfolge manuell aktualisieren. Andernfalls funktioniert der Code nicht wie zuvor.
    • Der Parameter secondaryVariant wurde zu darkColors() hinzugefügt. Diese Farbe hat in der Regel die gleiche Farbe wie secondary im dunklen Design, sorgt aber für Einheitlichkeit und eine weitere Anpassung.
    • ElevationDefaults und animateElevation() wurden von der öffentlichen API-Oberfläche entfernt, da sie im Allgemeinen nicht verwendet wurden bzw. nicht nützlich waren.
    • onValueChangeEnd in Slider wurde in onValueChangeFinished umbenannt und Nullwerte zulässig.
    • Der Parameter text in Snackbar wurde aus Konsistenzgründen in content umbenannt.
    • Der Parameter contentPadding wurde zu DropdownMenuItem hinzugefügt, um das Anpassen des Standardabstands zu ermöglichen. content wurde zu einer Erweiterung von RowScope.
    • ModalDrawerLayout wurde in ModalDrawer umbenannt.
    • BottomDrawerLayout wurde in BottomDrawer umbenannt.
    • (I1cc66)

Fehlerkorrekturen

  • Es wurde eine API zur Verwendung von animateVectorDrawable-Ressourcen in Compose hinzugefügt. Verwenden Sie "animatedVectorResource", um eine <animated-vector>-XML als animatedImageVector zu laden und mit "painterFor" (I8ea91) zu animieren.
  • Neue lokale LocalSoftwareKeyboardController-Zusammensetzungs-API hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I658b6, b/168778053)

Version 1.0.0-alpha12

10. Februar 2021

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

API-Änderungen

  • ViewGroups werden aus UiApplier nicht mehr unterstützt. Die verworfenen zusammensetzbaren Funktionen von emitView wurden entfernt. (Ifb214)
  • Modifier.pointerInput erfordert jetzt das Speichern von Schlüsseln, um anzugeben, wann die Koroutine zur Erkennung der Zeigereingabe für neue Abhängigkeiten neu gestartet werden soll. (I849cd)
  • CompositionReference wurde in CompositionContext (I53fcb) umbenannt
  • „Bounds“ wurde in „DpRect“ umbenannt (I4b32a).
  • Test-Update: hasText() sucht im Textfeld sowohl nach Eingabe- als auch Label-/Hinweisen/Platzhaltern (Iab803)
  • viewModel() zusammensetzbar und LocalViewModelStoreOwner wurden nach androidx.lifecycle.viewmodel.compose verschoben. Jetzt müssen Sie die separate Abhängigkeit „androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01“ hinzufügen, um sie zu verwenden. (I7a374)
  • Aktion, für die Nullwerte zulässig sind, in AccessibilityAction zulassen, Aktionslabel in AccessibilityAction und CustomAccessibilityAction von CharSequence in String ändern (I0dc82)
  • Damit die Namenskonventionen besser mit ImageBitmap und ImageVector übereinstimmen, wurde ImagePainter in BitmapPainter in paralleles VectorPainter umbenannt. (Iba381, b/174565889)
  • Bessere Teilstring-Test-APIs mit Teilstring jetzt als Argument (Icbe78)
  • Ein Modifier.focusOrder() wurde hinzugefügt, der einen FocusRequester akzeptiert, ohne eine benutzerdefinierte Fokusreihenfolge (Lambda) anzugeben. Dies ist nützlich, wenn wir nur eine Referenz, aber keine benutzerdefinierte Fokusreihenfolge für eine zusammensetzbare Funktion angeben müssen (I4f52a, b/179180978).
  • "ComponentActivity.setContent" wurde nach "androidx.activity.compose.setContent" im Modul "androidx.activity:activity-compose" verschoben. (Icf416)
  • Die Methoden zum Löschen und copy() wurden aus mehreren Klassen entfernt, in denen sie selten verwendet wurden. (I26702, b/178659281)
  • Pop-up wurde zu plattformspezifisch verschoben. AndroidPopupProperties wurde in PopupProperties umbenannt und isFocusable wurde in PopupProperties (Ieeea5) in einen focusable-Parameter verschoben.
  • Dialogfeld wurde zu plattformspezifischen Angaben verschoben. AndroidDialogProperties wurde in DialogProperties umbenannt. (I4ef69, b/179138130)
  • LayoutNode intern erstellt (I8a7b1, b/175103944)
  • „Constraints.enforce“ wurde durch „Constraints.constrain“ ersetzt. (I8b8ea)
  • „loadFontResource“ wurde eingestellt. Verwenden Sie stattdessen „fontResource“. Die Attribute „imageResource“, „loadImageResource“, „vectorResource“ und „loadVectorResource“ wurden eingestellt. Verwenden Sie stattdessen PainterResource. (I6b809)
  • Aus Leistungsgründen verwendet die ScrollAxisRange-Semantik jetzt Lambdas, die Gleitkommazahlen zurückgeben, anstelle von direkten Gleitkommawerten. (If4a35, b/178657186)
  • Es wurde eine EditableText-Semantik hinzugefügt, um bearbeitbaren Eingabetext des Textfeldes zur Barrierefreiheit zu markieren, und entsprechende Testmethoden zur Prüfung der Semantik (I8e07a).
  • InhaberLayer/OwnerScope/OwnerSnapshotObserver intern geändert (I4ffaf, b/175103944)
  • toIntPx() wurde inroundToPx() umbenannt. (I9b7e4, b/173502290)
  • IntBounds wurde in IntRect umbenannt und die API wurde verbessert. (I1f6ff)
  • Die Snapshot API wurde aktualisiert, um sie an die API-Richtlinie anzupassen und interne Implementierungsklassen von der öffentlichen API auszublenden. (Id9e32)
  • Semantikaktionen zum Maximieren und Minimieren wurden hinzugefügt. Einblendung und halber Maximierung in ModalBottomSheetState (Ib5064) hinzugefügt
  • „Modifier.dragGestenFilter“ wurde eingestellt. Verwende stattdessen Modifier.pointerInput { detectDragGestures (...)}. Alternativ können Sie „Modifier.draggable“ für das Ziehen um eine Achse verwenden (I0ba93, b/175294473).
  • Ambients wurden umbenannt, damit sie der Umbenennung von Ambient -> CompositionLocal entsprechen. Ambients hießen früher AmbientFoo, CompositionLocals heißt jetzt LocalFoo. (I2d55d)
  • Das verworfene BaseTextField wurde entfernt. Verwenden Sie stattdessen BasicTextField. (I71368)
  • Auswahl wurde auf Fundament verschoben. (I7892b)
  • Ähnlich wie zuvor entfernte die zusammensetzbare Funktion state { 0 } und jetzt die Verwendung wie remember { mutableStateOf(0) }, entfernen wir die zusammensetzbare Funktion savedInstanceState { 0 }. Sie sollten stattdessen rememberSaveable { mutableStateOf(0) } verwenden. Die Speicherung und Wiederherstellung erfolgen automatisch, wenn der im MutableState verwendete Typ im Bundle gespeichert werden kann. Wenn Sie bisher ein benutzerdefiniertes Saver-Objekt übergeben haben, müssen Sie eine neue Überlastung von „merkSaveable“ mit dem Parameter stateSaver verwenden. Die Nutzung sieht so aus: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)
  • Passwortsemantik für Bedienungshilfen hinzugefügt (I231ce)
  • "ProgressBarRangeInfo.Indeterminate" wurde hinzugefügt, um indeterminate Fortschrittsbalken für Bedienungshilfen zu kennzeichnen (I6fe05).
  • Die Dienstprogramme emptyContent() und (@Composable () -> Unit).orEmpty() wurden eingestellt, da sie sich nicht mehr positiv auf die Leistung auswirken (I0484d)
  • snapshotFlow und withMutableSnapshot sind nicht mehr experimentell (I6a45f).
  • Recomposeren können jetzt geschlossen werden. Geschlossene Recomposeren setzen die Neuzusammensetzung fort, bis die untergeordneten Koroutinen der Komposition abgeschlossen sind. Recomposer.shutDown wurde umbenannt, um den Vorgang abzubrechen und einen Kontrast mit dem Schließen zu bilden. (Ib6d76)
  • UiSavedStateRegistry wurde in SaveableStateRegistry, AmbientUiSavedStateRegistry in AmbientSaveableStateRegistry umbenannt und beide in das Paket „androidx.compose.runtime.saveable“ verschoben. (I30224)
  • Das Artefakt „androidx:compose:runtime:runtime-saved-instance-state“ wurde in „androidx:compose:runtime:runtime-saveable“ (I6dcac) umbenannt
  • Viele veraltete APIs im ui-Paket werden gelöscht. (I2f2dc)
  • Das Artefakt „Compose:runtime-Dispatch“ wurde verworfen. MonotonicFrameClock befindet sich jetzt in Composer:runtime und AndroidUiDispatcher ist in Composer:ui. (Ib5c36)
  • Outline.*-Klassen sind keine Datenklassen mehr (I4879e, b/178001427).
  • view.captureToImage() ohne Ersatz entfernt. (I7fcd2)
  • Einführung der ColorMatrix API, mit der die RGB-Werte des Quellinhalts geändert werden können. Die Refactored ColorFilter API ist eine Schnittstelle und entspricht der Implementierung von PathEffect. (Ica1e8)
  • Fügen Sie den LayoutDirection-Parameter zu createOutline der Form hinzu. Dies ermöglicht das Erstellen von richtungsabhängigen Formen für das Layout. (I57c20, b/152756983)
  • „onImeActionPerformed“ wurde eingestellt. Verwenden Sie stattdessen KeyboardActions (If0bbd, b/179071523).
  • Ein InfiniteAnimationPolicy-Kontextelement für die Koroutine wurde eingeführt, das in unendlichen Animationen angewendet wird. Standardmäßig ist keine Richtlinie installiert, außer wenn Tests 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 „parentCoordinates“-Eigenschaft zu ermöglichen. Die Eigenschaft "parentCoordinates" bietet jetzt die LayoutCoordintes des übergeordneten Modifikators an. Dies ermöglicht umfassendere Anwendungsfälle für onSizeChanged() und onGloballyPositioned() (Idfbfd, b/177926591).
  • „touchGestenFilter“, „doubleTapUnlockGesteFilter“, „longPress potenziellenFilter“ und „PressIndicaitonTouchFilter“ werden nicht mehr unterstützt. Verwenden Sie stattdessen Modifier.clickable oder Modifier.pointerInput mit der Funktion detectTapGestens. (I6baf9, b/175294473)
  • UnregisterProvider von SaveableStateRegistry wurde entfernt. „RegisterProvider()“ gibt jetzt das Objekt „SaveableStateRegistry.Entry“ zurück, mit dem Sie die Registrierung aufheben können (Ic4274, b/178583739).
  • memorySavedInstanceState() wurde in „memorySaveable()“ umbenannt und in das Paket „androidx.compose.runtime.saveable“ verschoben. (I1366e, b/177338004)
  • CoreText und CoreTextField wurden aus der öffentlichen API entfernt
    • Veraltete Auswahlcontainer-Überlastung entfernt
    • (I99c19)
  • Tests, in denen „Compose“ in Hierarchien verwendet wird, die direkt dem WindowManager hinzugefügt/entfernt werden, sind jetzt stabiler. (Ie81ed, b/175765614)
  • Recomposer.current() wurde entfernt. [Zusammenfassung]ComposeView verwendet jetzt standardmäßig verzögert erstellte, fensterbezogene Recomposers, die vom ViewTreeLifecycleOwner für das Fenster gesteuert werden. Neuzusammensetzung und mit FrameNanos basierende Animationsticks werden pausiert, während der Hostlebenszyklus gestoppt wird. (I38e11)
  • Recomposer.runningRecomposers bietet jetzt einen globalen StateFlow aus schreibgeschütztem RecomposerInfo zur Beobachtung des aktuellen Kompositionsstatus im Prozess. Ziehen Sie diese API der mittlerweile verworfenen API Recomposer.current() vor. (If8ebe)
  • Saver, listSaver(), mapSaver(), autoSaver wurde von androidx.compose.runtime.savedinstancestate nach androidx.compose.runtime.saveable (I77fe6) verschoben
  • EditCommands akzeptieren AnnotatedString. Dies ist jedoch nur eine API-Änderung und die Textbearbeitung mit mehreren Stilen ist noch nicht implementiert. (I4c3ea)
  • Verfügbarkeit und Dauer wurden entfernt. (Ib9bf4, b/177420019)
  • CompositionData.asTree() und zugehörige APIs wurden in ein separates UI-Tooling-Datenmodul verschoben und als experimentell gekennzeichnet (Ic95b8).
  • Die Parameter für RounderCornerShape, CutCornerShape und CornerBasedShape wurden von links/rechts in Start/End umbenannt, um die automatische Spiegelung der Form in rtl-Richtung zu unterstützen. AbsoluteRounderCornerShape und AbsoluteCutCornerShape wurden für Fälle eingeführt, in denen die automatische Spiegelung nicht erwünscht ist. (I61040, b/152756983)
  • Die API, auf die das Compiler-Plug-in ausgerichtet ist, wurde so umgestaltet, dass anstelle einer konkreten Klasse eine Schnittstelle verwendet wird. Auf der Benutzeroberfläche wird auch kein Typparameter mehr verwendet.

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

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

Fehlerkorrekturen

  • ComposeViews in Ansichtshierarchien, die untergeordnete Elemente einer anderen Komposition sind, hosten jetzt untergeordnete Zusammensetzungen ihrer Ancestors (I92883).
  • Die imageFromResource API beim Erstellen wurde aktualisiert, damit der Drawable-Cache der Ressource beim Laden von ImageBitmap-Objekten wiederverwendet wird. (If3627, b/178751994)

Version 1.0.0-alpha11

28. Januar 2021

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

API-Änderungen

  • WithConstraints wurde als BoxWithConstraints überarbeitet und zu "foundation.layout" verschoben. (I9420b, b/173387208)
  • Key.DPadUp wurde eingestellt. Verwenden Sie stattdessen „Key.DirectionUp“. (Iab335, b/177954892)
  • ab jetzt intern. (If8e35)
  • Die API FocusManager.moveFocus() wurde hinzugefügt, um den Fokus programmatisch zu verschieben. (I045cb, b/177681839)
  • Ändert PopupPositionProvider so, dass fensterbezogene Koordinaten und keine globalen Koordinaten verwendet werden. Benennt „parentGlobalBounds“ in „anchorBounds“ um und ändert „windowGlobalBounds“ in „windowSize: IntSize“ (I2994a).
  • Dauer und Verfügbarkeit werden durch lange Millisekunden ersetzt. Mit diesem Schritt wird die Abhängigkeit der Zeigereingabe von diesen Klassen entfernt. (Ia33b2, b/175142755, b/177420019)
  • AmbientSavedStateRegistryOwner wurde auf ähnliche Weise hinzugefügt wie die bereits vorhandenen AmbientLifecycleOwner und AmbientViewModelStoreOwner (I9a3e8, b/176756365).
  • Die API für Vektorgrafiken wurde aktualisiert und unterstützt nun das Parsen von Tönungen, die auf die Wurzel von Vektorgrafiken angewendet werden. (Id9d53, b/177210509)
  • ToolType wurde zu PointerInputChange zur Unterscheidung von Geräten hinzugefügt (Iac787, b/175142755).
  • AmbientWindowManager wurde in AmbientWindowInfo umbenannt (I2686a, b/177084714, b/177084983).
  • Die globalen Koordinatenmethoden wurden eingestellt und neue fensterbasierte Koordinatenmethoden eingeführt. (Iee284)
  • Modifier.toolingGraphicsLayer wurde hinzugefügt, der beim Einschalten der Prüfung einen Grafikebenen-Modifikator hinzufügt. (I315df)
  • FocusRequester.createRefs ist jetzt als experimentell gekennzeichnet, da sich dies noch ändern kann. (I2d898, b/177000821)
  • SemanticsPropertyReceiver.hidden wurde in „invisibleToUser“ umbenannt und als „@ExperimentalComposeUiApi“ gekennzeichnet. „AccessibilityRangeInfo“ wurde in „ProgressBarRangeInfo“ umbenannt. „stateDescriptionRange“ wurde in „progressBarRangeInfo“ umbenannt. AccessibilityScrollState wurde in ScrollAxisRange umbenannt. horizontalAccessibilityScrollState wurde in horizontalScrollAxisRange umbenannt. verticalAccessibilityScrollState wurde in verticalScrollAxisRange umbenannt. (ID3148)
  • PointerInputData wurde entfernt und PointerInputChange geändert, um alle Felder von PointerInputData bereitzustellen. PointerInputEvent und PointerInputEventData wurden intern gemacht, da sie in keiner öffentlichen API verwendet werden. (Ifff97, b/175142755)
  • Die Implementierungsdichte von GraphicsLayerScope wurde aktualisiert, um die Konvertierung von dp in Rohpixel zu unterstützen. (Ied528, b/176819695)
  • Die Matrix API wurde aktualisiert, um der Hauptreihenfolge von Zeilen zu folgen und Indexkonstanten bereitzustellen, um die Konvertierung zwischen verschiedenen Matrixdarstellungen zu erleichtern und die Framework-Konvertierungslogik zwischen SkMatrix und Matrix4 intern anzupassen. (I432e6)
  • Die experimentellen monotonicFrameAnimationClockOf-Methoden wurden entfernt (Ib753f, b/170708374).
  • Verschiebt String.fintPrecedingBreak und String.fingFollowingBreak in InternalTextApi. (I657c4)
  • androidx.compose.ui.util.isSurrogatePair wurde aus der öffentlichen API entfernt. (Ia9494)
  • TransformedText.transformedText wurde in TransformedText.text umbenannt
    • TransformedText ist keine Datenklasse mehr (Ie672a).
  • data class wurde aus den folgenden Klassen entfernt:
    • InlineTextContent
    • Gebietsschemaliste (I605c7)
  • Die folgenden Klassen sind keine Datenklassen mehr:
    • AnnotatedString
    • Absatzstil
    • Span-Stil
    • TextStyle
    • Schriftstärke
    • Textdekoration
    • TextGeometricTransform
    • Textindex
    • TextLayoutErgebnis
    • TextLayoutInput (Iaff99)
  • VisualTransformation wurde zu einer funktionalen Schnittstelle geändert (I3bba4)
  • Ein Funktionsreferenzparametertyp wurde hinzugefügt (I5e1bd).
  • Transformierte Grenzen zu InspectorNode (Ice42f) hinzufügen

Fehlerkorrekturen

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

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

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

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

  • Entfernen Sie displaySize, da dies vermieden werden sollte. In der Regel ist es besser, die Größe von onRoot() oder mindestens die Fenstergröße zu verwenden. (I62db4)

  • OnSizeChanged meldete die Größe des Layoutinhalts. Sie meldet jetzt die Größe an ihrer Position innerhalb der Modifikatorkette. (I36b78, b/177562900)

  • Die emit() API und alle Überlastungen wurden verworfen und in ComposeNode umbenannt. Die APIs sind identisch, nur unter einem anderen Namen, um den Namenskonventionen in „Compose“ (I4137b) zu entsprechen.

  • TextFieldValue akzeptiert AnnotatedString. Dies ist jedoch nur eine API-Änderung und die Textbearbeitung mit mehreren Stilen ist noch nicht implementiert.

    • initial wurde aus den Konstruktorparametern „EditingBuffer“ entfernt. (I326d5)
  • invalid und summaryReference() wurden zugunsten von currentRecomposeScope bzw. memoryCompositionReference verworfen. (I583a8)

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

  • SaveObserver ersetzt CompositionLifecycleObserver und CompositionLifecycleObserver wird jetzt eingestellt.

    RememberObserver ersetzt CompositionLifecycleObserver mit geänderter Semantik und umbenannten Methoden. Der Wechsel zur neuen API kann mechanisch für Objekte erfolgen, die nur einmal im Gedächtnis bleiben. Dies ist und ist die empfohlene Vorgehensweise. Wenn jedoch eine Referenz in einer Zusammensetzung mehrmals gespeichert wurde, 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 der einzelne onEnter-Aufruf garantiert unzuverlässig war und für RememberObserver entfernt wurde.

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

  • Verworfene arithmetische Operationen zwischen 2 oder mehr TextUnits. Die veralteten TextUnit.Sp- und TextUnit.Em-Funktionen haben Vorrang vor den Erweiterungsfunktionen wie Int.sp und Int.em. (I48369)

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

  • „ScrollableColumn/Zeile“ wurde eingestellt. Die Verwendung von ScrollableColumn ist im Vergleich zu LazyColumn bei großen scrollbaren Inhalten weniger effizient, da wir mit LazyColumn nur sichtbare Elemente zusammensetzen/messen/zeichnen können. Um zu verhindern, dass Nutzer auf die ineffiziente Weise vorgehen, haben wir uns entschieden, ScrollableColumn und ScrollableRow einzustellen und stattdessen LazyColumn und LazyRow zu verwenden. Nutzer können dennoch entscheiden, dass sie kein Lazy-Verhalten benötigen, und die Modifikatoren direkt wie folgt verwenden: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)

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

  • Verwende ImeAction.None anstelle von ImeAction.NoAction.

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

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

  • Die auf „TransitionDefinition“ basierende Umstellung wurde eingestellt (I0ac57)

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

Version 1.0.0-alpha10

13. Januar 2021

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

funktionsgefährdende Änderung

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

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

API-Änderungen

  • Modifier.focusOrder() wurde hinzugefügt, um eine benutzerdefinierte Fokusdurchlaufreihenfolge anzugeben (I90cf5, b/175899543, b/170155556, b/170155429).
  • Die eingestellte Funktion „fokusObserver“ wurde entfernt. Verwenden Sie stattdessen „onFocusChanged“ oder „onFocusEvent“ (I3ecb9, b/175156387).
  • Änderungen an der EditOperations API
    • EditOperation in EditCommand umbenannt
    • Zusätzliches Befehlssuffix für EditOperation-konkrete Implementierungen
    • EditCommands sind keine Datenklassen mehr
    • Die Funktion „EditOperation.process“ wurde in „applyTo“ umbenannt.
    • InputEventListener wurde in InputEventCallback umbenannt
    • (I0a366)
  • Nicht verwendete PxSquared, PxCubed und PxInverse wurden entfernt. "Size.center()" wurde zu einer Eigenschaft geändert. (I973f7)
  • Im ui-test-Modul kann jetzt die Erstellung von Recomposers für zu testende UIs (Ibebd8) konfiguriert werden.
  • Die Geschwindigkeit wurde so geändert, dass sie Komponenten und mathematische Operationen enthält. (Ib0447)
  • @ExperimentalTesting wurde in @ExperimentalTestApi umbenannt, damit sie mit ähnlichen Annotationen der experimentellen API übereinstimmt (Ia4502, b/171464963).
  • Color.useOrElse() wurde in Color.takeOrElse() umbenannt (Ifdcf5)
  • Nicht verwendete Klassen „DpInverse“, „DpSquared“ und „DpCubed“ wurden entfernt. (I4d62b)
  • „Constraints#expectedBy“ wurde in „isSatisfiedBy“ umbenannt. (I9cf5c)
  • Fügen Sie einen Callback hinzu, um den Inhaber zu benachrichtigen, wenn sich die layoutnode-Grenzen ändern. (I72fd1)
  • Für Inline-Klassen mit einer Konstante „Unspezifikation“ wurden die Attribute „is„angegeben“, „isUnspezifisch“ und „useOrElse“ hinzugefügt. (I93f7b, b/174310811)
  • Erweitern Sie [Zusammenfassung]ComposeView-APIs, um das Recycling von Erstellungsansichten zu ermöglichen. Die Zusammensetzung wird später entsorgt, um sie neu zu erstellen. APIs zum Installieren und Erkennen von fensterbezogenen Recomposers und CompositionReferences zum Erstellen untergeordneter Kompositionen hinzufügen

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

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

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

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

  • NativeClass wurde ins UI-Modul verschoben und intern geändert. Die Verwendung von nativeClass in Gleich-Implementierungen wurde so aktualisiert, dass stattdessen „is MyClass“ verwendet wird. (I4f734)

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

  • Das Tool „Selectable“.notifySelectableChange wurde eingeführt, um „Selectable“-Updates für „Selectable“ zu benachrichtigen. (I6ff30, b/173215242)

  • Die Property Outline.bounds wurde eingeführt, um das Begrenzungsrechteck für verschiedene Outline-Implementierungen abzurufen. (I16e74, b/175093504)

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

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

  • Änderungen an der VisualTransformation API

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

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

Fehlerkorrekturen

  • Recomposer zeigt jetzt einen Ablauf mit seinem aktuellen Status an, sodass die Aktivitäten und die Aktivität der zugehörigen Auswirkungen überwacht werden können. (Ifb2b9)
  • Auf das native "keyEvent" kann jetzt über "keyEvent.nativeKeyEvent" (I87c57, b/173086397) zugegriffen werden.
  • animate() wird jetzt durch animateAsState() ersetzt, das anstelle von T einen State<T>-Wert zurückgibt. Dies ermöglicht eine bessere Leistung, da der Entwertungsbereich darauf eingegrenzt werden kann, wo der Statuswert gelesen wird. (Ib179e)
  • Fügen Sie die Semantics Role API und die Rolle als Parameter zu anklickbarer, auswählbarer und ein-/ausschaltbarer SemanticsModifier hinzu. Modifier.progressSemantics wurde so geändert, dass der Slider auch darauf zugreifen kann. (I216cd)
  • Neue koroutinebasierte API Animatable, die die gegenseitige Exklusivität der Animationen gewährleistet.
    • Neue DecayAnimationSpec zur Unterstützung mehrdimensionaler Abklinganimationen
    • (I820f2, b/168014930)

Version 1.0.0-alpha09

16. Dezember 2020

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

API-Änderungen

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

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

    Die neue Methode insertBottomUp() wurde hinzugefügt.

    Ein Applier fügt entweder Knoten mit insertTopDown() oder insertBottomUp() in den Baum ein, den er bearbeitet, je nachdem, was besser ist.

    Einige Bäume, z. B. LayoutNode und View, lassen sich viel effizienter als Draufsicht erstellen. Vor dieser Änderung war ein Stack von Einfügungen erforderlich, um Bottom-up-Ansätzen zu entsprechen. Diese mussten dann in alle Anwendungen kopiert werden, für die eine Bottom-up-Konstruktion erforderlich war, um die Leistung zu verbessern. Mit dieser Änderung überschreibt ein Applier insertBottomUp(), um einen Baum von unten nach oben zu erstellen, und insertTopDown(), um ihn von oben nach unten zu erstellen. (Icbdc2)

  • AndroidDialogProperties-Eigenschaften wurden zu den Eigenschaften "schließenOnBackPress" und "schließenOnClickOutside" hinzugefügt. Damit kann konfiguriert werden, wann die Lambda-Funktion „onDismissRequest“ des Dialogfelds aufgerufen wird. (If5e17)

  • Die PainterResource API wurde hinzugefügt, um das undurchsichtige Laden von Painter-Objekten aus Raster-Asset-Formaten (z. B. PNGs) oder VectorDrawables zu verarbeiten. Nutzer müssen den Asset-Typ nicht mehr im Voraus bestimmen und können diese Methode aufrufen, um ein Painter-Objekt zu erhalten, das in zusammensetzbaren Bildern oder in Painter-Modifikatoren verwendet werden kann. (I2c703, b/173818471)

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

  • ContentDrawScope wurde für DrawScope in das Modul "ui-graphics" verschoben. (Iee043, b/173832789)

  • Die PathEffect Graphics API ermöglicht die Bereitstellung verschiedener Muster für gestrichelte Formen. Die Verwendung von NativePathEffect zugunsten der erwarteten/tatsächlichen Implementierung von PathEffect wurde eingestellt. (I5e976, b/171072166)

  • In Compose wurden IdlingResource-Oberflächen als von Compose unterstützte Variante der inaktiven Ressourcen von Espresso hinzugefügt. Sie können mithilfe der ComposeTestRule (I433f3) registriert und abgemeldet werden.

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

Fehlerkorrekturen

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

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

  • ShaderBrush wurde so überarbeitet, dass eine Shader-Instanz langsam erstellt wird, wenn Größeninformationen der Zeichenumgebung verfügbar sind. Dies ist nützlich, um Gradienten zu definieren, die die vollständigen Zeichengrenzen einer zusammensetzbaren Funktion zum Zeitpunkt der Erstellung einnehmen, ohne dass benutzerdefinierte DrawModifier-Implementierungen implementiert werden müssen.

    APIs für Gradientenfunktionskonstruktoren wurden durch Factory-Methoden für ein Gradient-Objekt ersetzt. (I511fc, b/173066799)

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

  • Verworfene BuildCompat.isAtLeastR (Idb37e)

  • Die Factory-Funktion "buildAnnotatedString" wurde hinzugefügt, um einen AnnotatedString zu erstellen. Die Builder-Funktion annotatedString wurde verworfen. (Idfe0b)

  • Erweiterungsmethoden für Float und Double wurden entfernt, um Werte in Radianten umzuwandeln. Wurde als private Funktion im PathParser-Implementierungsbereich verschoben, wo sie ausschließlich verwendet wurde (I25f52).

Version 1.0.0-alpha08

2. Dezember 2020

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

API-Änderungen

  • Semantikaktion hinzufügen. Schließen (I2b706)
  • DrawModifier APIs wurden vom Paket androidx.compose.ui in das Paket androidx.compose.ui.draw verlegt. Die Datei DrawModifierdeprecation.kt enthält Typaliases/Hilfsmethoden, die die Migration von den verworfenen zu den aktuellen APIs unterstützen. (Id6044, b/173834241)
  • Umbenennung von Modifier.drawLayer in Modifier.graphicsLayer Änderungen der zugehörigen Klassen in GraphicsLayer gemäß API-Feedback (I0bd29, b/173834241)
  • Die neuen Methoden „placeable.placeWithLayer()“ und „placeable.placeRelativeWithLayer()“ wurden hinzugefügt, mit denen benutzerdefinierte Layouts und Layoutmodifikatoren ein untergeordnetes Element mit der Einführung einer Grafikebene für seine Zeichnung platzieren können. So können wir zuerst Neuzeichnungen optimieren. Wenn wir also ein untergeordnetes Element verschieben müssen, müssen wir seinen Inhalt nicht neu zeichnen. Zweitens können wir Zeichentransformationen auf ein untergeordnetes Element anwenden (Ibd8f6, b/170296989, b/171493718, b/173030831).
  • <T> wurde aus der SubcomposeLayout-Deklaration entfernt. Sie können sie jetzt verwenden, ohne einen Typ anzugeben. (Ib60c8)
  • Modifier.scale/rotate APIs wurden als praktische Funktionen fürdrawLayer hinzugefügt.
    • Modifier.drawOpacity wurde in Modifier.alpha umbenannt
    • Modifier.drawShadow wurde in Modifier.shadow umbenannt (I264ca, b/173208140)
  • Die Verfügbarkeits- und Positionsfelder von PointerInputData können jetzt nicht mehr null sein. (ID468a)
  • MaterialTheme legt jetzt die richtigen Farben für Auswahlziehpunkte und den Auswahlhintergrund fest. Nicht-Material-Apps können manuell „AmbientTextSelectionColors“ verwenden, um die für die Auswahl verwendeten Farben anzupassen. (I1e6f4, b/139320372, b/139320907)
  • WindowManager.isWindowFocused wurde hinzugefügt, um zu überprüfen, ob das Host-Fenster im Fokus ist, sowie einen WindowFocusObserver, der einen onWindowFocusChanged-Callback bereitstellt. (I53b2a, b/170932874)
  • Die TransformOrigin API wurde mit einer destruktiven Syntax aktualisiert, um pivotFractionX und pivotFractionY als component1 und component2 zurückzugeben (If43c4, b/173586560)
  • Es wurde eine Lint-Prüfung für die Benennung und Position von zusammensetzbaren Lambda-Parametern hinzugefügt, um die Konsistenz mit den Richtlinien zum Schreiben zu prüfen. Außerdem wurden einige APIs gemäß der Lint-Prüfung und der Anleitung mit children als Namen für das nachgestellte Lambda zu content migriert. (Iec48e)
  • Es wurde eine API hinzugefügt, die überprüft, ob Alt-, Strg-, Meta- oder Umschalttaste-Modifikatortasten bei der Auslösung eines Schlüsselereignisses gedrückt wurden. (I50ed9)
  • Neue Modifier.drawLayer()-Überlastung hinzugefügt. Dabei wird ein Lambda-Block auf einem neuen GraphicsLayerScope -Element verwendet, bei dem Sie die Ebenenparameter so definieren, dass die Neuzusammensetzung und das Neulayout übersprungen werden können, wenn die Statusänderung erfolgt. DrawLayerModifier ist jetzt intern für die Migration seiner Logik in die Methode "placeable.placeWithLayer()" von LayoutModifier (I15e9f, b/173030831).
  • Die eingestellten Ambients mit dem Suffix Ambient wurden gemäß den anderen Richtlinien für Ambients und Compose API durch neue Properties mit dem Präfix „Inaktiv“ ersetzt. (I33440)
  • androidx.compose.ui.text.Typeface wurde nach androidx.compose.ui.text.font.Typeface verschoben (Ic2b81)
  • Das Semantik-Argument „mergeAllDescendants“ wurde in „mergeDescendants“ umbenannt. (Ib6250)
  • Neue Drag-Gesten-Erkennung, die die Zeigereingabe-API anhält, einschließlich Ausrichtungssperre. (Icef25)
  • Umbenennung von VectorAsset in ImageVector Gemäß den API-Richtlinien wurde VectorAsset in "Builder" verschoben und in "Builder" umbenannt. Der Typalias von VectorAssetBuilder wurde hinzugefügt, um zur Kompatibilität mit ImageVector.Builder zu verlinken. (Icfdc8)
  • „ImageAsset“ und zugehörige Methoden wurden in „ImageBitmap“ umbenannt. (Ia2d99)
  • Fügen Sie den Parameter „zIndex“ für „place()“ von PlacementScope hinzu, damit „Modifier.zIndex()“ jetzt als LayoutModifier funktioniert und in jedem benutzerdefinierten Layout zIndexes für die untergeordneten Elemente direkt im Placement-Block festgelegt werden können (I711f7, b/171493718).
  • Fundamentsemantikeigenschaften wurden in die Benutzeroberfläche verschoben (I6f05c)
  • „place(Offset)“ und „placeRelative(Offset)“ verwerfen. Verwenden Sie stattdessen Überlastungen mit Ganzzahl-Offsets (I4c5e7).
  • Zuvor eingestellte APIs wurden entfernt: Modifier.onPositioned wurde entfernt. Verwenden Sie "Modifier.onGloballyPositioned". Modifier.onDraw wurde entfernt. Verwenden Sie "Modifier.onDrawBehind". Modifier.plus wurde entfernt. Verwenden Sie Modifier.then. „Color.Unset“ wurde entfernt. Verwenden Sie „Color.Unspecific“. Die PxBounds-Klasse wurde entfernt. Verwenden Sie stattdessen Rect. (Ie9d02, b/172562222)
  • Die Benutzeroberfläche für die Ausrichtung wurde aktualisiert und funktionsfähig gemacht. (I46a07, b/172311734)
  • Die Bewegungserkennung für Tippen, Doppeltippen, langes Drücken und Drücken der Anzeige wurde mit der neuen Eingabe für den Haltepunkt hinzugefügt. Außerdem wurden einige Dienstprogramme hinzugefügt, die Entwicklern das Schreiben eigener Gestendetektoren erleichtern. (I00807)
  • id wurde für LayoutIdParentData in layoutId umbenannt. Measurable.id wurde in Measurable.layoutId umbenannt. (Iadbcb, b/172449643)
  • Neuer Multi-Touch-Gestendetektor mit Hilfsfunktionen zum Erkennen von Drehung, Zoomen und Schwenken. (IC459d)
  • Einführung der APIs SweepGradientShader und SweepGradientBrush (Ia22c1)
  • Die Zeitsteuerung in Tests (TestAnimationClock und ihre Nutzung) befindet sich jetzt in der Testphase (I6ef86, b/171378521).
  • Fügen Sie koroutinebasierte Scroll-APIs hinzu:

    Es wurden LazyListState.snapToItem und LazyListState.smoothScrollBy sowie untergeordnete APIs für die Scroll-Steuerung hinzugefügt. Diese APIs bieten eine Schnittstelle zum Anhalten zum Steuern des Scrollens, das erst nach dem Scrollen zurückkehrt. (Beispielsweise 5642)

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

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

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

  • „TextLayoutResult.getLineVisibleEnd“ wurde eingestellt. Als Ersatz hat TextLayoutResult.getLineEnd jetzt den neuen Parameter "visibleEnd". (I73282)

  • Aktualisierte TextFieldValue API

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

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

Fehlerkorrekturen

  • Der Ausrichtungsparameter von Box wurde in contentAlignment umbenannt. (I2c957)
  • Die „offsetPx“-Modifikatoren wurden in „offset“ umbenannt. Sie verwenden jetzt Lambda-Parameter anstelle von Status. (IC3021, b/173594846)
  • Der Parameter "resetInput" wurde zu TextInputService#onStateUpdated hinzugefügt (I3e8f5, b/172239032, b/171860947).
  • Lint-Prüfung für Modifikatorparameter in zusammensetzbaren Funktionen wurde hinzugefügt. Bei dieser Lint-Prüfung werden Name, Rückgabetyp, Standardwert und Reihenfolge des Parameters auf Konsistenz mit den Richtlinien zum Schreiben geprüft. (If493b)
  • Vorübergehend hinzugefügte Option, mit der TestAnimationClock von MonotonicFrameClock gesteuert wird (I1403b, b/173402197)
  • Android-Schriftart-Wrapper hinzugefügt. Sie können eine Android-Schriftart über die typeface-Funktion (typeface(Typeface.DEFAULT)) laden. typefaceFromFontFamily() auch in typeface() (I52ab7) umbenannt
  • Es wurde eine Lint-Prüfung hinzugefügt, um zu prüfen, ob die Modifikator-Factory-Funktionen als Erweiterungen in Modifier definiert sind, damit sie fließend miteinander verkettet werden können. (I07981)
  • Entfernen Sie das alte UI-Test-Modul und die zugehörigen Stubs (I3a7cb).
  • Recomposer akzeptiert einen „EmbeddingContext“ nicht mehr; die erforderlichen Planungsabhängigkeiten werden aus „EffectCoroutineContext“ abgerufen. FrameManager wurde eingestellt. Plattformintegrationen sollten ihre eigene globale Snapshot-Verarbeitung initialisieren. (I02369)
  • Übergeben Sie Stilinformationen an den Barrierefreiheitsknoten. (If5e8d)
  • Aus Konsistenz mit anderen Einheiten wurde „TextUnit.Inherit“ in „TextUnit.Nicht angegeben“ umbenannt. (Ifce19)

Compose UI Version 1.0.0-alpha07

11. November 2020

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

API-Änderungen

  • Einführung der Inline-Klasse ScaleFactor zur Darstellung von Skalierungsfaktoren für die horizontalen und vertikalen Achsen unabhängig voneinander, um uneinheitliche Skalierungsanwendungsfälle zu unterstützen.
    • Die Methode "computeScaleFactor" wurde zu ContentScale hinzugefügt.
    • ContentScale.FillBounds wurde hinzugefügt, um eine uneinheitliche Skalierung auszuführen und die src-Grenzen so zu erweitern, dass das Ziel vollständig belegt wird.
    • Operatormethoden zur Berechnung von ScaleFactor-Parametern mit Größenparametern hinzugefügt.
    • (Ic96a6, b/172291582)
  • Die Faktoren BiasAlignment und BiasAbsoluteAlignment zum Erstellen von Ausrichtungen wurden hinzugefügt. (Iac836, b/169406772)
  • Ermöglichen Sie einem Entwickler, den Fokus klar zu definieren. (I90372)
  • Ein Fehler, der dazu führte, dass für Views in „Compose“ keine Höhenangaben gezeichnet wurden, wurde behoben. (If7782)
  • "onDrawBehind" wurde in ContentDrawScope erstellt, um die Namenskonvention mit "Modifier.drawBehind" zu erfüllen. (I4fc3a, b/171955269)
  • Unterstützung für den Kameraabstand zur Ergänzung der 3D-Transformationen RotationX/DrehungY in Layer-APIs. (I40213, b/171492100)
  • "SelectionContainer" wurde ohne den Callback hinzugefügt (Ibfadb).
  • Die Annotation ExperimentalSubcomposeLayoutApi wurde entfernt. SubcomposeLayout kann jetzt ohne Hinzufügen von @OptIn (I708ad) verwendet werden.
  • FirstBaseline und LastBaseline wurden in das Paket „androidx.compose.ui.layout“ (Ied2e7) verschoben.
  • Die Deckkraft wurde aus demdrawShadow()-Modifikator entfernt, da dies verwirrend war. (I82c62, b/171624638)
  • MeasureResult wurde aus MeasureScope verschoben. (Ibf96d, b/171184002)
  • Mehrere Layoutsymbole wurden von androidx.compose.ui nach androidx.compose.layout.ui verschoben. (I0fa98, b/170475424)
  • Veraltetes FocusState2 (I686cb, b/168686446) entfernt
  • ZIndexModifier ist jetzt intern (I1808b, b/171493718)
  • Der Rückgabetyp der LOP-Methode für Größenparameter wurde aktualisiert, um eine Größe ungleich null zurückzugeben, um unnötiges Boxing zu vermeiden. (Ib0044)
  • TestMonotonicFrameClock wurde hinzugefügt, um Code zu testen, der auf Kompositions-Frame-Ereignissen von Composer basiert und auf der Verwendung von runBlockingTest von kotlinx-coroutines-test (I4402f) erfolgt.
  • GesteScope.localToGlobal entfernt (I15299, b/171462785)
  • onAllNodesWithSubstring-Finder hinzugefügt (I81dd7, b/171462889)
  • Das Modul androidx.ui.test wurde eingestellt. Migrieren Sie zu androidx.compose.ui.test und androidx.compose.ui.test.junit4 (I452e8).

Fehlerkorrekturen

  • ErfassungToBitmap wurde zu SnapshotToImage verschoben. (I86385)
  • Foundation.Text wurde eingestellt und durch material.Text ersetzt. Eine einfache, uneindeutige Text-API, die keine Werte aus einem Design verwendet, finden Sie unter androidx.compose.foundation.BasicText. (If64cb)
  • Textfelder aktualisieren, um KeyboardOptions zu akzeptieren (Ida7f3)
  • KeyboardOptions umbenennen in ImeOptions (I82f36)
  • KeyboardType und ImeAction wurden in KeyboardOptions verschoben (I910ce).
  • „deployDefault“ wurde als Alternative zur Bereitstellung von Umgebungswerten hinzugefügt. Damit können Umgebungswerte angegeben werden, die nur festgelegt werden, wenn noch kein Umgebungswert angegeben wurde. (Id6635, b/171024925)
  • „BaseTextField“ wurde eingestellt. Verwenden Sie stattdessen BasicTextField. (I896eb)
  • Modul ui-test-junit4 (Ib91f8) einführen
  • relativePaddingFrom wurde in paddingFrom umbenannt. Der paddingFromBaseline-Modifikator wurde hinzugefügt, um die Abstände von Layoutgrenzen zu Textbasislinien anzugeben. (I0440a, b/170633813)
  • „LaunchedTask“ wurde in „LaunchedEffect“ umbenannt, um die Konsistenz mit den SideEffect und DisposableEffect APIs zu verbessern. "LaunchedEffect" ohne Subjektparameter ist nicht zulässig, um Best Practices zu fördern. (Ifd3d4)
  • Einführung von zusammensetzbaren Ressourcen, die bei Aktualisierung der Konfiguration neu zusammengefügt werden. (I6387c, b/167352819)
  • Recomposer erfordert jetzt bei der Erstellung einen CoroutineContext (Ic4610).
  • zIndex-Werte addieren, wenn mehrere Modifier.zIndex() angewendet wurden. Zuvor hat der erste gewonnen. (IC514c, b/170623936)
  • Änderungen an der internen SlotTable-Implementierung, die sich nicht auf die öffentliche API auswirken sollten (If9828)
  • Auto-Korrektur IME-Option für Tastatur hinzugefügt (I57b8d)
  • androidx.ui.test wurde nach androidx.compose.ui.test (I9ffdb) verschoben
  • KeyboardOptions.toImeOptions wurden aus der öffentlichen API entfernt. (Ic2e45)

Externer Beitrag

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

Version 1.0.0-alpha06

28. Oktober 2020

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

API-Änderungen

  • Recomposer ist jetzt eine CompositionReference und ein gültiges übergeordnetes Kompositionselement. Expliziter Recomposer ist jetzt an weniger Stellen erforderlich. (I4036f)
  • Sie können VectorPainter durch die Verwendung von „memoryVectorPainter“ einstellen. So lässt sich besser erkennen, dass die zusammensetzbare API intern „remember“ nutzt, um Daten über mehrere Kompositionen hinweg beizubehalten. (Ifda43)
  • Die Modifier.drawWithCache API wurde aktualisiert, um ContentDrawScope anstelle von DrawScope als Empfängerbereich bereitzustellen. So können Implementierungen Zeichenbefehle neu anordnen. Dies ist nützlich für Anwendungsfälle mit Überblendung/Färbung, bei denen zuerst Inhaltspixel gerendert werden müssen, damit der entsprechende Mischmodus-Algorithmus richtig angewendet wird. (Ie7ec8)
  • SimpleContainer in PopupTestUtils.kt verschieben (I78c57)
  • ConsumedData ist keine Datenklasse mehr. Weitere Informationen finden Sie unter https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 (I1737f).
  • Position des Rtl-Ziehpunkts fixieren. (I6e1e0)
  • DrawScope und ContentDrawScope wurden zu Schnittstellen anstelle von abstrakten Klassen überarbeitet.
    • Die CanvasDrawScope-Implementierung von DrawScope wurde erstellt.
    • Refaktorierte Implementierungen von DrawScope, um stattdessen CanvasScope zu verwenden
    • Wir haben DrawContext erstellt, um Abhängigkeiten für DrawScope
    • Verworfene Methoden aus DrawScope entfernt (I56f5e)
  • Wichtige Änderung: Der Rückgabewert wurde aus PointerInputFilter.onPointerEvent(...) entfernt, da der einzige Wert, der in Zeigerereignissen geändert werden sollte, Verbrauchsdaten sind. Anstatt Daten von PointerInputFilter.onPointerEvent(...) zurückzugeben, können Sie jetzt einfach die Verbrauchsdaten der übergebenen PointerEvents ändern. (I6acd0)
  • MeasureScope und IntrinsicMeasureScope wurden als Schnittstellen erstellt. (I1a087, b/170461665)
  • Die Zusammenführungsfunktion für "AlignLine" wurde ausgeblendet. (I9da1a, b/170612900, b/170611568)
  • Zusätzliche Möglichkeit zur Angabe von Inspector-Informationen in einem zusammengesetzten Modifikator (Idee08, b/163494569)
  • Die Option „SelectAll“ wurde dem Auswahlmenü hinzugefügt (Ief02b).
  • DrawTransform.rotate wurde so aktualisiert, dass entsprechend der Dokumentation ein Standard-Pivot-Parameter „center“ verwendet wird.
    • DrawScope.rotateRad wurde so aktualisiert, dass ein Offset für den Drehpunkt verwendet wird, um anderen Transformationsmethoden zu entsprechen.
    • Die DrawScope.rotateRad-Überlastung, für die Gleitkommazahlen für die X- und Y-Koordinaten des Drehpunkts genutzt wurden, wurde eingestellt.
    • (Iffcbb, b/170434992)

Fehlerkorrekturen

  • API-Lint-Prüfung für MissingGetterMatchingBuilder ist für Androidx aktiviert (I4bbea, b/138602561).
  • Fügen Sie einen Test hinzu. (I6b8ae)
  • Aktivieren Sie Übergänge in ComposeTestRule; entfernen Sie die Option, um den blinkenden Cursor in ComposeTestRule zu aktivieren. (If0de3)
  • IME-Option für die Großschreibung der Tastatur wurde hinzugefügt (I8ac38)
  • Einzeilige Tastaturoption für CoreTextField (I72e6d) hinzugefügt
  • SimpleContainer in PopupTestUtils.kt verschieben (I65c3e)
  • Die Radius API wurde in „CornerRadius“ umbenannt, um die Verwendung in Compose besser zu verdeutlichen. Die Dokumentation wurde aktualisiert, um anzugeben, dass negative Eckenradien auf null gesetzt sind. (I130c7, b/168762961)
  • Verbesserte Android-Interoperabilität, indem weiterhin MotionEvents an untergeordnete Android-Ansichten gesendet werden, die für alle Aktionen außer ACTION_DOWN den Wert „false“ zurückgeben (I94c5a, b/170320973)
  • Für Box wurde eine Inline-Funktion erstellt. (Ibce0c, b/155056091)

Externer Beitrag

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

Version 1.0.0-alpha05

14. Oktober 2020

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

API-Änderungen

  • DSL zum Angeben von Inspector-Informationen hinzufügen (Ic9a22)
  • Langes Drücken in Text verschieben. (Iff2bc)
  • Experimental Modifier.pointerInput zum Sperren des Eingabemodifikators (Ia77d2)
  • Bedienungshilfen zum Kopieren/Einfügen/Ausschneiden hinzugefügt (I6db4f)
  • Öffentlicher Konstruktor für AndroidOwner wurde entfernt (Iacaef).
  • Pop-ups und Dialogfelder übernehmen jetzt FLAG_SECURE vom übergeordneten Fenster. Zusätzliche Option zur expliziten Konfiguration (I64966, b/143778148, b/143778149)
  • Die Verbrauchsdaten können jetzt geändert werden. Außerdem geben Aufrufe von Erweiterungsfunktionen, die Daten nutzen, jetzt keine neue PointerInputChange mehr zurück, sondern mutieren stattdessen die bereitgestellte PointerInputChange.

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

  • Deaktivierung der Textauswahl und Demo (Ie7e97)

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

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

  • Die Eigenschaft hasPendingMeasureOrLayout wurde zum Eigentümer hinzugefügt. Diese gibt an, ob für den Eigentümer noch Layoutänderungen ausstehen. (I3d9f8, b/169038599)

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

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

  • Größenänderungen

    • "Size.getFlipped" entfernt
    • Size.rem entfernt
    • Size.truncDiv (Ief44d, b/169790720) entfernt
  • Im Rahmen der Standardisierung von Sentinel-Werten für Inline-Klassen wird „Color.Unset“ in „Color.Unspecific“ umbenannt, um eine Konsistenz mit anderen Inline-Klassen zu erreichen (I97611, b/169797763).

  • TextOverflow.None wird eingeführt. Wenn overflow auf "None" gesetzt ist, kann Text den Überlauf nicht mehr verarbeiten, und er meldet seine tatsächliche Größe an LayoutNode. (I175c9, b/158830170)

  • Der Bereichsparameter in AnnotatedString.Builder.addStringAnnotation wird aus API-Konsistenz in ein Tag umbenannt. (I7c8cb)

Fehlerkorrekturen

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

Version 1.0.0-alpha04

1. Oktober 2020

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

API-Änderungen

  • "OwnerScope" wurde hinzugefügt, um das Erfassen von Layout- und Zeichnen von Beobachtungsbereichen zu ermöglichen, sobald diese nicht mehr gültig sind. (Ic4cf8)
  • OnRemeasuredModifier und onSizeChanged() wurden hinzugefügt, um einen Callback zu erhalten, wenn das Inhaltslayout neu gemessen und die Größe entsprechend geändert wurde. (I657cf, b/154108792)
  • Semantik für lange Klicks hinzufügen (I6281b, b/156468846)
  • FocusManager wurde auf „Privat“ gesetzt. (I7872f)
  • Die Implementierung wurde aktualisiert, um eine dedizierte DrawCacheModifier-Implementierung zu erstellen, anstatt DrawModifier optional mit optionalen Eigenschaften zu versehen.

    Aktualisierte Dokumentation für verschiedene Methoden (Ibd166)

  • Erstellen Sie TextRange inline, um das Erstellen von Objekten zu vermeiden. (Id034b)

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

  • AccessibilityScrollState wird den Semantikeigenschaften hinzugefügt. (Ifeda9)

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

  • Absatzbeschränkungen wurden entfernt. Die Breite wird jetzt direkt an den Absatz übergeben. (Ica712)

Fehlerkorrekturen

  • Aktualisierung vieler Grafik-APIs
    • APIs zur Transformation von Skalierung und Rotation wurden aktualisiert, sodass ein einzelner Offset-Parameter zur Darstellung der Pivot-Koordinaten anstelle von separaten Gleitkommaparametern für die x/y-Koordinaten in DrawScope und DrawTransform verwendet wird.
    • Entfernung der Methoden Rect.expandToInclude und Rect.join
    • Die Dokumentation für den Radius wurde aktualisiert: „oval zusätzlich zum elliptischen
    • Es wurde eine Dokumentation hinzugefügt, in der angegeben wird, dass der öffentliche Konstruktor für die Inline-Radiusklasse nicht direkt aufgerufen werden soll. Stattdessen sollten Radius-Objekte über ihre Funktionskonstruktoren instanziiert werden.
    • RoundRect-APIs für die Abfrage von topRight,bottomRight, bottomCenter usw. wurden entfernt.
    • Eingestellte Rect.shift-Funktion zugunsten von Rect.translate
    • RoundRect.grow und Rect.shrink APIs entfernt
    • Umbenennung von RoundRect.outerRect in Rect.boundingRect
    • Die Methoden "RoundRect.middleRect/tallMiddleRect/wideMiddleRect" und "Rect.isStadium" wurden entfernt.
    • „RoundRect.longestSide“ wurde in „RoundRect.maxDimension“ umbenannt
    • „RoundRect.shortestSide“ wurde in „RoundRect.minDimension“ umbenannt
    • RoundRect.center ist jetzt eine Eigenschaft anstelle einer Funktion.
    • Der RoundRect-Konstruktor verwendet jetzt Radius-Attribute anstelle einzelner Parameter für x/y-Radiuswerte.
    • Größen-APIs, die von einem Rectangle mit Ursprung bei 0,0 angenommen wurden, wurden entfernt.
    • Zerstörungs-API zu Radius hinzugefügt
    • Migration verschiedener RoundRect-Erweiterungsfunktionen zu Eigenschaften
    • (I8f5c7, b/168762961)
  • Foundation.Box wurde eingestellt. Verwende stattdessen „foundation.layout.Box“. (Ie5950, b/167680279)
  • Stack wurde in Box umbenannt. Die bisherige Box wird zugunsten der neuen Box in „Compose.foundation.layout“ eingestellt. Das Verhalten des neuen Box besteht darin, untergeordnete Elemente übereinander zu stapeln, wenn sie mehrere untergeordnete Elemente hat. Dies unterscheidet sich vom vorherigen Box, das sich ähnlich wie eine Column verhielt. (I94893, b/167680279)
  • Die Parameter „Box decoration“ wurden eingestellt. Wenn Sie Ihre Box mit Verzierungen/Padding versehen möchten, verwenden Sie stattdessen Modifikatoren (Modifier.background, Modifier.Border, Modifier.padding) (Ibae92, b/167680279).
  • Aktualisierung vieler Grafik-APIs
    • DrawScope APIs wurden mit Bereichstransformationsmethoden aktualisiert, um anzuzeigen, dass die Transformation nur innerhalb des Callbacks angewendet und nach dem Aufrufen des Callbacks entfernt wird.
    • Die ClipPath-Dokumentation wurde aktualisiert, sodass sie auf „Path“ (Pfad) statt auf ein abgerundetes Rechteck verweist.
    • Fester Abstand in der Dokumentation für den rechten Parameter in „clipPath“.
    • DrawScope.drawCanvas wurde indrawIntoCanvas umbenannt und der Größenparameter wurde entfernt.
    • Umbenennung der dx/dy-Parameter in der Inset-Methode in horizontal und vertikal
    • Es wurde eine eingefügte Überlastung hinzugefügt, die für alle vier Grenzen denselben Eingabewert bereitstellt.
    • Die Dokumentation zur Inset-Methode, die darauf hinweist, dass die Inset-Methode auf alle vier Seiten angewendet wird,
    • Dokumentation für die Rect-Klasse aktualisiert
    • Kommentare zu Rect-Parametern wurden an den kdoc-Stil angepasst.
    • Rect.join und Rect.expandToInclude wurden entfernt.
    • Überlastung für Rect.translate(offset) erstellt und Rect.shift verworfen
    • (If086a, b/167737376)
  • Annotierte „rootAnimationClockFactory“, „transitsEnabled“, „blinkingCursorEnabled“ und „textInputServiceFactory“ mit @VisibleForTesting, machen sie zu einer internen API und verbergen ihre kdoc-Dateien (I554eb, b/168308412).
  • Entfernen Sie SelectionContainer aus dem oberen Bereich, um die Standardauswahl zu deaktivieren und unerwartetes Verhalten zu vermeiden. Speziell kann ein SelectionContainer-Element verwendet werden, um den Inhalt zu kapseln, der stattdessen auswählbar sein muss. (I8dfe0, b/158459594)

Version 1.0.0-alpha03

16. September 2020

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

API-Änderungen

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

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

Fehlerkorrekturen

  • Ein Fehler wurde behoben, durch den LazyColumn-Elemente manchmal falsch gezeichnet wurden. Dies führte auch zu Abstürzen unter bestimmten Bedingungen. (Ibcf17, b/163066980, b/165921895)
  • DpConstraints und APIs, die es verwenden, wurden eingestellt. (I90cdb, b/167389835)
  • createAndroidComposeRule und AndroidInputDispatcher wurden von androidx.ui.test.android nach androidx.ui.test verschoben (Idef08, b/164060572)
  • Die Verwendung der Schwerkraft wurde konsequent zur Ausrichtung oder Ausrichtung in Layout-APIs umbenannt. (I2421a, b/164077038)
  • OnNode und andere globale Methoden wurden zu ComposeTestRule hinzugefügt, da die aktuellen globalen Methoden nicht mehr unterstützt werden. (Ieae36)

Version 1.0.0-alpha02

2. September 2020

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

API-Änderungen

  • Entfernen Sie den Callback, um den Inhaber zu benachrichtigen, wenn sich die layoutnode-Grenzen ändern. (If654e, b/166106882)
  • Zusätzliche Unterstützung für filltype-Parameter in Vektorgrafikpfaden, um Aussparungen von Formen gemäß EvenOdd- oder Non-Zero-Füllregeln zu unterstützen. (I43dd2)
  • Verfügbarkeitsdiagnose und Velocity sind jetzt Inline-Klassen (I48f4a).
  • Die Dauer ist jetzt eine Inline-Klasse (I565eb).
  • Fügen Sie einen Callback hinzu, um den Inhaber zu benachrichtigen, wenn sich die layoutnode-Grenzen ändern. (IC40b3)
  • Ein Problem wurde behoben, bei dem Rect-Funktionskonstruktor mit Versatz und Radius das Rechteck in der Reihenfolge links, rechts, oben, unten statt links, oben, rechts, unten erstellt hat.

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

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

Fehlerkorrekturen

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

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

  • Ein Absturz wurde behoben, der auftreten konnte, wenn die Weiterleitung an einen PointerInputFilter dazu führte, dass der PointerInputFilter synchron entfernt wurde. (I58f25)

Version 1.0.0-alpha01

26. August 2020

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

Version 0.1.0-dev

Version 0.1.0-dev17

19. August 2020

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

API-Änderungen

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

    Das Flag mutableStateOf wurde für VectorPainter hinzugefügt, damit es unter bestimmten Bedingungen neu gezeichnet werden kann, wenn sich die Inhalte des Vektors ändern.

    Refaktorierte VectorComponent-Instanz wurde zu VectorPainter geändert, da sie für mehrere Kompositionen wiederverwendet wird.

    GroupComponent und PathComponent aktualisiert, sodass ihre Namensfelder änderbar sind (Ieae45, b/151378808).

  • onChildPositioned und OnChildPositionedModifier wurden entfernt. Entwickler sollten stattdessen onPositioned und OnPositionedModifier für das untergeordnete Layout verwenden. (I4522e, b/162109766)

  • Der Offset ist jetzt eine Inline-Klasse (Iaec70).

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

  • Veraltete FocusModifier (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940) entfernt

  • mergePolicy Lambda wurde zu SemanticsPropertyKey hinzugefügt. Damit kann eine benutzerdefinierte Richtlinie für das Zusammenführen der Semantiken „mergeAllDescendants“ definiert. Die Standardrichtlinie sieht vor, den übergeordneten Wert zu verwenden, falls dieser bereits vorhanden ist, andernfalls den untergeordneten Wert. (Iaf6c4, b/161979921)

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

  • FocusManager wurde hinzugefügt, der eine allgemeine Fokuslogik aus AndroidComposeView verschiebt (I528ef, b/161487952, b/162206799).

  • PointerEventPass-Namen für die Alpha-Version wurden aktualisiert. (Ifda6f)

  • IntOffset ist jetzt eine Inline-Klasse (Iac0bf).

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

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

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

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

  • Refaktorierte Organisation des Zeiger-Eingabecodes. (Ie3f45)

  • Eingestellte PxBounds zugunsten von Rect. Aktualisierung aller Verwendungen von PxBounds mit rect und Hinzufügen der geeigneten Verwerfen/Ersetzen mit Annotationen zur Unterstützung der Migration. (I37038, b/162627058)

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

  • KeyEvent hat ein Unicode-Attribut, mit dem das Unicode-Zeichen abgerufen werden kann, das von der angegebenen Kombination aus Schlüssel und Meta-Schlüsselstatus (If3afc) generiert wurde.

  • Das benutzerdefinierte Ereignis DelayUp und die zugehörigen Klassen wurden zu einer API mit Opt-in geändert, da es höchstwahrscheinlich geändert werden wird. (I56d6f)

  • Zwei nicht mehr benötigte PointerEventPasses wurden entfernt. (I3dd9d)

  • Parameter color, shadow und TextDecoration zu Paragraph.paint hinzufügen. Diese Funktion hilft, die unnötige Neuerstellung von Absätzen zu vermeiden. (I81689)

Fehlerkorrekturen

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

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

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

  • Absturz, wenn ein Problem behoben wurde, das den Status in der For-Schleife speichert. Da nun derselbe Schlüssel in savedInstanceState() zulässig ist, ist die API von UiSavedStateRegistry an diese neue Anforderung angepasst (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561).

  • Die zusammensetzbare Funktion state { ... } wurde zugunsten expliziter Aufrufe von remember { mutableStateOf(...) } eingestellt. Dies reduziert die API-Oberfläche insgesamt und die Anzahl der Konzepte für die Statusverwaltung. Außerdem entspricht es dem Muster by mutableStateOf() für die Delegierung von Klassenattributen. (Ia5727)

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

Version 0.1.0-dev16

5. August 2020

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

API-Änderungen

  • „OnChildPositioned“ wurde eingestellt. Verwenden Sie stattdessen „OnPositioned“ für das untergeordnete Element. (I87f95, b/162109766)
  • „setViewContent“ wurde eingestellt. Verwenden Sie stattdessen „setContent“. (I7e497, b/160335130)
  • Die AndroidViewBinding API zum Aufblähen und Zusammenstellen von Layoutressourcen basierend auf ViewBinding wurde hinzugefügt. (I081c6)
  • KeyEvent2 wird durch KeyEvent ersetzt (I2d770, b/162097585).
  • Unterstützung für Alt-Hardwaretaste hinzugefügt (I9036b)
  • FocusManager wurde eingestellt. Verwenden Sie stattdessen Modifier.focus(), Modifier.focusObserver() und Modifier.focusRequester() . (I74ae4, b/162211322)
  • "loadVectorResource" unterstützt "trimmPath"-Attribute (I808fe).
  • Dialogfeld in Benutzeroberfläche verschieben (I47fa6)
  • Zwei nicht mehr benötigte PointerEventPasses wurden entfernt. (I33ca7)
  • Implementierung von PointerInteropModifier, der die Möglichkeit bietet, MotionEvents zu empfangen und mit Compose zu interagieren, als wäre es eine Implementierung einer Android-Ansicht. (Ieb08c)
  • Der eingestellte Tag-Modifikator wurde entfernt. Verwenden Sie stattdessen die Layout-ID. (Idaa05, b/162023919)
  • Die APIs für die Unterstützung von Rechts-nach-links wurden aktualisiert. LayoutDirectionAmbient wurde hinzugefügt, um die Layoutrichtung zu lesen und zu ändern. Modifier.rtl und Modifier.ltr wurden entfernt. (I080b3)
  • Das Zuschneiden von Pfaden in Vektorgrafiken wird unterstützt (Ie16c9, b/158188351)
  • Modifier.layout() wurde hinzugefügt, mit dem Sie bequem einen benutzerdefinierten Layoutmodifikator erstellen können (I73b69, b/161355194).
  • Eine neue AndroidView API wurde hinzugefügt und die vorhandenen wurden eingestellt. (I5bcfd)
  • Modifier.plus wurde eingestellt. Verwenden Sie stattdessen "Modifier.then". „Then“ (Dann) hat ein stärkeres Signal für die Reihenfolge, während gleichzeitig die Eingabe von Modifier.padding().background() + anotherModifier verhindert wird, wodurch die Kette unterbrochen wird und schwerer zu lesen ist (Iedd58, b/161529964).
  • Abgeleitete [Zusammenfassung]ComposeView-Klassen zum Hosten von „Compose-Inhalt“ in einer View-Hierarchie hinzufügen (I46357)
  • Row und Column sind jetzt Inline-Funktionen, die den Aufwand für ihre Verwendung erheblich reduzieren. (I75c10)
  • SubcomposeLayout hinzugefügt. Es handelt sich um ein Low-Level-Primitive, mit dem die untergeordneten Elemente während der Messung zusammengefügt werden können, wenn einige Werte verwendet werden sollen, die erst später während des Messwerts für die Zusammensetzung der Unterstruktur verfügbar sind. WithConstraints wird beispielsweise nicht mit SubcomposeLayout implementiert. (I25cc8)
  • SemanticsNode.positionInRoot wurde hinzugefügt, um die Position eines Semantikknotens relativ zum Stamm der Compose-Hierarchie abzurufen (Icdf26, b/161336532).
  • MotionEvents wurde von Android in Compose und zurück an Android übergeben. (I14be8, b/158034713)
  • „Drop-down-Pop-up“ wurde entfernt. (I00430)
  • Pop-up-Position in ausgeschnittenen Displays wurde fixiert. (Idd7dd)
  • Bedienungshilfen-Aktion hinzufügen, um TextLayoutResult abzurufen (I9d6e6)
  • RemeasurementModifier wurde hinzugefügt. Damit kann das Layout synchron neu gemessen werden. Im Allgemeinen benötigen Sie dies nie, da die Neumessung/das Layout automatisch erfolgt. Wir verwenden sie jedoch beim Scrollen in LazyColumnItems. (I5f331, b/160791058)
  • Entfernen Sie getLineEllipsisOffset/getLineEllipsisCount. Verwenden Sie stattdessen getLineVisibleEnd/getLineEnd/isLineEllipsize. (I85aa2)
  • Füge als Best Practice einige Markierungen/Anmerkungen hinzu. (I66b20)
  • werden in TextLayoutResult weitere Zeilen-APIs angezeigt. (I79bd2)
  • Integrierte Vektorkonverter zum Umwandeln integrierter Einheiten sind jetzt über Foo.VectorConverter verfügbar. Beispiel: Dp.VectorConverter, Color.VectorConverter, Floating.VectorConverter usw. konvertieren (I3e273)

Fehlerkorrekturen

  • Umfassende API-Fehlerkorrekturen (I077bc)
    1. Nicht verwendete OffsetBase-Schnittstelle entfernen
    2. Richten Sie die Offset- und IntOffset-Klassen so aus, dass sie eine einheitliche API-Oberfläche haben.
    3. Benennen Sie IntOffset.Origin in IntOffset.Zero um, um mit der Offset API konsistent zu sein.
    4. Die nativeCanvas-Methode wurde aus der Canvas-Oberfläche entfernt, damit Nutzer ihre eigenen Canvas-Instanzen erstellen können.
    5. EmptyCanvas-Stub-Klasse erstellt, um DrawScope zu einem Nicht-Null-Parameter anstelle von lateinit zu refaktorieren und sicherzustellen, dass das Feld keine Nullwerte enthält.
    6. ClipOp-Enums wurden in Pascal Case umbenannt
    7. FilterQuality-Enums wurden in Pascal Case umbenannt
    8. 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 umbenannt
    12. StrokeCap-Enums wurden in Pascal Case umbenannt
    13. Die DrawCache-Implementierung wurde aktualisiert, sodass lateinit-Parameter nicht mehr verwendet werden.
    14. DrawScope wurde so aktualisiert, dass für die internen Parameter "fillPaint" und "strokePaint" kein Lazy Delegierung mehr verwendet wird.
    15. Die Funktion „Bild zusammensetzbar“ wurde aktualisiert, um die Nutzung von Box zu vermeiden und so den Verwaltungsaufwand zu reduzieren.
    16. Outline-Klasse wurde aktualisiert und enthält jetzt @Unveränderliche Annotationen.
    17. PathNode mit @Unveränderlichen Annotationen für jede Pfadanweisung aktualisiert
    18. Die Vektorunterzusammensetzung wurde aktualisiert, um redundante bedingte Prüfungen auf Gleichheit zu entfernen, da diese von der Erstellung bereits verarbeitet werden.
    19. Verworfene Rect-Companion-Konstruktormethoden zugunsten von Funktionskonstruktoren
    20. Aktualisierung der Brush-Klassen und Funktionskonstruktoren mit den APIs @Immutable und @Stable.
    21. VertexMode-Enum wurde auf PascalCase aktualisiert
    22. Die DrawScope selectPaint-Methode wurde aktualisiert, um Strichparameter für die Darstellung bedingt zu überschreiben, wenn sie sich geändert haben.
    23. Wir haben die Größe aktualisiert, um eine destruktive API hinzuzufügen, „Nicht angegeben“ in „Nicht angegeben“ umbenannt und nicht verwendete Methoden entfernt
  • Der Verbrauch der Erstellung der BlendMode API wurde aktualisiert, um je nach API-Ebene korrekt zwischen den Modi „BlendModes“ und „PorterDuff“ des Android-Frameworks zuzuordnen. Die BlendMode#isSupported API kann als Funktionsabfrage verwendet werden, um vor ihrer Nutzung festzustellen, ob BlendMode auf dem Gerät unterstützt wird. (I0ef42)
  • LazyItemScope wurde für den Parameter „itemContent“ von Lazy-Listen hinzugefügt. Sie bietet Modifikatoren zum Füllen der maximalen Größe des übergeordneten Elements. Dies löst den Anwendungsfall, in dem das Element den Darstellungsbereich ausfüllen soll und die reguläre Modifier.fillMaxSize()-Methode nicht funktioniert, da das Element mit Grenzen für unendliche Werte gemessen wird. (Ibd3b2, b/162248854)
  • SemanticsNodeInteraction.performPartialGesture wurde entfernt. Verwenden Sie stattdessen SemanticsNodeInteraction.performGesture. (Id9b62)
  • LazyColumnItems wurde in LazyColumnFor umbenannt. LazyRowItems wurde in LazyRowFor umbenannt (I84f84).
  • 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 einfachste gewünschte API leicht zu finden und zu verwenden ist (Ia6242, b/155482676).
  • "Modifier.drawBackground" wurde in "Modifier.background" umbenannt (I13677).

Version 0.1.0-dev15

22. Juli 2020

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

Abhängigkeiten aktualisieren

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

API-Änderungen

  • FocusModifier wird zugunsten von Modifier.focus, Modifier.focusRequester und Modifier.focusObserver eingestellt. FocusState und FocusdetailState wurden zugunsten von FocusState2 eingestellt (I46919, b/160822875, b/160922136).
  • Ein Modifikator wurde hinzugefügt, um Veränderungen des Fokuszustands zu beobachten. (I05866, b/160924455, b/160923326)
  • Es wurde ein Modifikator hinzugefügt, um Fokusänderungen anzufordern (I8dd73, b/161182057, b/160924778).
  • Verschieben Sie das Symbolleisten-Menü an die gewünschte Position, um die Optionen zum Kopieren, Ausschneiden und Einfügen richtig anzuzeigen. (ID3955)
  • Für Einzelwert-Semantikeigenschaften wird jetzt ein Aufrufstil verwendet. Beispiel: Semantik {hidden = true } wird jetzt so geschrieben: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412)
  • Modifier.focus wurde hinzugefügt, der FocusModifier ersetzt. (Ib852a, b/160924778)
  • Fügen Sie FloatingToolbar für die TextField-Auswahl hinzu. (Ie8b07)
  • Es wurde eine experimentelle API-Anmerkung für die API zur Schlüsseleingabe hinzugefügt (I53c0a).
  • Es wurde eine experimentelle API-Anmerkung für alle Focus-bezogenen APIs hinzugefügt (I53b24, b/160903352).
  • FocusState2 wurde hinzugefügt und ersetzt FocusdetailState (I0a3ba, b/160822595).
  • ExperimentalFocus wurde hinzugefügt, eine @OptIn-Anmerkung für die Focus API. (I1544b, b/160820961)
  • Es wurde eine IntBounds-Einheitenklasse hinzugefügt, die Ganzzahl-Pixelgrenzen aus dem Layout darstellt. Die API von PopupPositionProvider wurde für die Verwendung aktualisiert. (I0d8d0, b/159596546)
  • Applier erfordert jetzt eine Clear()-Methode zum Entfernen von Kompositionen (Ibe697).
  • KeyEvent wurde eingestellt und durch KeyEvent2 (I68730) ersetzt
  • Für Test-Finder wurde das optionale Flag „useUnmergedTree“ hinzugefügt. (I2ce48)
  • Experimentelle LayoutNode-API erstellt (I4f2e9)
  • Kopiermethoden wurden zu verschiedenen Inline-Klassentypen hinzugefügt, darunter:

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

    • Verworfene Methode für das Companion-Objekt „Size.copy“ durch Verwendung der Instanzkopiermethode (Ife290, b/159905651)

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

  • TextDirection wurde in ResolvedTextDirection umbenannt (I3ff38).

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

  • Auswahlgriffe zur Wiederverwendung refaktorieren. (I420e0)

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

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

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

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

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

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

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

  • Fügen Sie die zusammensetzbare Funktion viewModel() hinzu, um ViewModel ähnlich wie in Activity oder Fragment (I5fdd1) zu erstellen oder bereits vorhandene ViewModel-Modelle zu erstellen.

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

  • Um die Anzahl der Klassen zur Darstellung von Größeninformationen zu konsolidieren, sollten Sie die Verwendung der Klasse "Size" anstelle von "PxSize" standardisieren. Dies bietet die Vorteile einer Inline-Klasse, um einen Long-Wert zu verwenden, um 2 Gleitkommawerte zu verpacken, um Breite und Höhe als Gleitkommazahlen darzustellen. (IC0191)

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

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

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

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

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

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

  • Die standardmäßige No-op-Implementierung von ParentDataModifier#modifyParentData wurde entfernt. Dies entsprach eigentlich der gar keiner Implementierung der Schnittstelle. (I0deaa)

  • ScaleFit wurde zuvor als entfernt eingestellt. Verwenden Sie stattdessen ContentScale. (Ifbc5b)

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

  • Die Komponente "Dropdown-Menü" wurde zu UI-Material hinzugefügt, einer Implementierung des Material Design-Menüs. (I9bb3d)

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

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

  • „modifier.semantics“ wurde nicht mehr eingestellt, um die Verwendung von übergeordneten Komponenten zu ermöglichen. (I4cfdc)

  • CanvasScope-Implementierungen wurden konsolidiert, sodass es jetzt nur noch DrawScope und ContentDrawScope gibt. CanvasScope wurde in DrawScope umbenannt. DrawScope wurde aktualisiert, um die Dichte-Oberfläche zu implementieren und die Unterklasse „LayoutDirection“ von „Deleted DrawScope“ in ContentDrawScope zu implementieren. Die Funktionen „Painter“ und „PainterModifier“ werden jetzt nicht mehr selbst beibehalten, da DrawScope diese Eigenschaft bereits zur Verfügung stellt, ohne sie manuell anzugeben (I1798e).

  • Mit DoubleTapGestenFilter wird jetzt „SingleTap einzusten“-Filter in der Baumstruktur unterschieden. (If92b1)

  • Ausrichtungs-API wurde aktualisiert und Unterstützung für die absolute Ausrichtung hinzugefügt (die im Rtl-Kontext nicht automatisch gespiegelt wird) (I38cd3).

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

  • Wir haben die Erstellung von APIs auf höherer Ebene aktualisiert, die einen Canvas zur Verfügung stellen, um stattdessen CanvasScope bereitzustellen. Nutzer müssen dadurch ihre eigenen Paint-Objekte nicht mehr verwalten. Nutzer, die weiterhin Zugriff auf einen Canvas benötigen, können die Erweiterungsmethode „drawCanvas“ verwenden. Sie bietet einen Callback, um Zeichenbefehle mit dem zugrunde liegenden Canvas auszugeben. (I80afd)

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

  • LayoutModifier2 wurde in LayoutModifier umbenannt. (Id29f3)

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

  • Die Funktionen für intrinsische Messungen in Layout und LayoutModifier2 verfügen jetzt über einen IntrinsicMeasureScope-Empfänger, der nun eine intrinsische Abfrage-API mit implizit übernommener Layout-Richtung bereitstellt. (ID9945)

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

  • Neu wurde Modifier.zIndex() hinzugefügt, um die Zeichenreihenfolge der untergeordneten Elemente innerhalb desselben übergeordneten Layouts zu steuern. Die Höheneigenschaft von DrawLayerModifier wurde in shadowElevation umbenannt und steuert die Zeichenreihenfolge nicht mehr. Die Reihenfolge der Parameter in DrawShadow wurde geändert: Die Höhe ist jetzt die erste und die Form ist die zweite. Die Standardform lautet RectangleShape. (I20150, b/152417501)

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

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

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

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

  • (I45f09, b/152842521)

    • ScaleFit wurde in ContentScale umbenannt
    • ContentScale wurde von UI-Graphics zum UI-Core-Modul verschoben und befindet sich nun im selben Modul wie die Ausrichtung API.
    • FillMaxDimension wurde in „Zuschneiden“ umbenannt
    • FillMinDimension wurde umbenannt in Fit
    • Fit wurde zur besseren Übereinstimmung in Inside umbenannt
    • ImageView.ScaleType-Entsprechungen
    • Es wurde eine Dokumentation hinzugefügt, aus der hervorgeht, dass die Kombination von „Zuschneiden“ und „Ausrichtung.Center“ dasselbe Ergebnis wie „ImageView.ScaleType.CENTER_CROP“ und „Fit“ bei Verwendung von „Align.Center“ erzielt.
  • Rtl-Unterstützung für Zeichenmodifikatoren. (I0aaf9)

  • Veröffentlichung einer API zum Aufblähen von Android Views aus XML. Weitere Informationen finden Sie in der ViewInCompose-Demo. (I42916)

  • DrawModifier API verbessern:

    • Der Empfängerumfang für „draw() ContentDrawScope“ wurde erstellt.
    • Alle Parameter fürdraw() wurden entfernt.
    • DrawScope hat dieselbe Oberfläche wie der frühere CanvasScope.
    • ContentDrawScope verfügt über die Methode „drawContent()“ (Ibaced, b/152919067).
  • PositionInParent und boundsInParent für LayoutCoordinates wurden hinzugefügt. (Icacdd, b/152735784)

  • „DawLayerModifier“ und „drawLayer()“ sind jetzt standardmäßig von „clipToBounds“ und „clipToOutline“ auf „false“ gesetzt. (I0eb8b, b/152810850)

  • LayoutResult wurde in MeasureResult umbenannt. (Id8c68)

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

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

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

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

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

  • Wir haben LayerModifier hinzugefügt, einen Modifikator, mit dem ein RenderNode für ein Layout hinzugefügt werden kann. Sie können Beschnitte, Deckkraft, Drehung, Skalierung und Schatten festlegen. Dadurch wird RepaintBoundary ersetzt. (I7100d, b/150774014)

  • Die Layoutrichtung wird vom übergeordneten Layoutknoten auf die untergeordneten Elemente übertragen. Modifikator für Layoutrichtung wurde hinzugefügt. (I3d955)

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

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

  • Density und DensityScope wurden in einer Schnittstelle zusammengeführt. Anstelle von „AmbientDensity()“ können Sie jetzt „DensityAmbient.current“ verwenden. Anstelle von mitDensity(density) nur mit(density) (I11cb1)

  • LayoutCoordinates wurde geändert, um providedAlignmentLines zu einem Set statt zu einer Karte zu machen und durch LayoutCoordinates stattdessen den Operator get() zum Abrufen eines Werts zu implementieren. So können Modifikatoren einen oder mehrere Werte des Satzes leichter ändern, ohne für jeden Modifikator eine neue Sammlung erstellen zu müssen. (I0245a)

  • LayoutCoordinates verfügt nicht mehr über eine Positionseigenschaft. Die Positionseigenschaft ist in Bezug auf LayoutModifier, Rotation oder Skalierung nicht sinnvoll. Stattdessen sollten Entwickler die Umwandlung von LayoutCoordinates in ein anderes mit „parentCoordinates“ und „childToLocal()“ verwenden.

    LayoutCoordinates verwendet IntPxSize für die Größeneigenschaft anstelle von PxSize. Layouts verwenden ganzzahlige Pixelgrößen für Layouts. Daher sollten alle Layoutgrößen Ganzzahlen und keine Gleitkommawerte verwenden. (I9367b)

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

  • Es wurde eine CanvasScope API erstellt, die ein Canvas-Objekt umschließt, um eine zustandslose, deklarative API-Oberfläche zum Zeichnen bereitzustellen. Transformationen sind in ihrem eigenen Empfängerbereich enthalten und Größeninformationen gelten auch für entsprechende eingefügte Grenzen. Der Nutzer muss zum Konfigurieren von Zeichenvorgängen kein eigenes Paint-Statusobjekt verwalten.

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

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

  • Alle Farbverwendungen, für die Nullwerte zulässig sind, in der API durch eine Funktion ersetzt, die keine Nullwerte zulässt, und Color.Unset anstelle von null verwenden (Iabaa7)

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

  • "Farbe festlegen" wurde hinzugefügt, um einen nicht festgelegten Wert ohne Rahmenfarben darzustellen. (If901a)

  • Die Erweiterungsmethoden Canvas.rotate und Canvas.scale wurden hinzugefügt, um optionale Pivot-Koordinaten für Transformationen zu nutzen. Diese werden standardmäßig links oben in der aktuellen Canvas-Übersetzung angezeigt.

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

  • Erstellung der PixelMap API zur Unterstützung der Abfrage von Pixelinformationen aus einem ImageAsset. (I69ad6)

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

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

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

  • Umbenennung von Bild in ImageAsset, um den Unterschied zwischen den Bilddaten und der zukünftigen zusammensetzbaren Funktion für das Layout und die Zeichnungen besser zu unterscheiden _Body:Erweiterungsmethode für „android.graphics.Bitmap“ und „Bitmap.asImageAsset()“ erstellt, um eine Instanz eines ImageAsset zu erstellen, mit dem sich die herkömmliche Android-Anwendungsentwicklung mit dem Compose-Framework kombinieren lässt (Id5bbd).

  • TextDirection.Content wurde hinzugefügt (I48f36)

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

  • Force wird aus den Aufzählungswerten von TextDirectionAlgorithm (Icc944) entfernt

  • TextDirectionAlgorithm wurde in TextDirection (I75ce8) umbenannt

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

  • AnnotatedString.getStringAnnotations hinzugefügt, die alle Annotationen innerhalb des Bereichs zurückgibt. (I1fa00)

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

  • Der Cursor von TextField blinkt (Id10a7).

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

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

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

  • Es ist jetzt möglich, die Softwaretastatur mithilfe des Callbacks „onTextInputStarted“ (I8dc44, b/151860051) mit „SoftwareKeyboardController“ ein- und auszublenden.

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

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

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

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

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

  • Die nicht verwendete Klasse "Size" wurde entfernt, da das verwendete UI-Geometriemodul eine doppelte "Size"-Klasse enthält. (I1b602)

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

  • Abstände, Rahmen, Form und Hintergrundparameter zu Box hinzufügen (I05027, b/148147281)

Fehlerkorrekturen

  • "onFocusChange"-Callback in Textfeldern wurde in "onFocusChanged" umbenannt (Ida4a1).
  • VerticalScroller und HoriziontalScroller wurden eingestellt. Verwenden Sie „ScrollableColumn“ und „ScrollableRow“, um das Spalten-/Zeilenverhalten und die Parameter zu integrieren, oder verwenden Sie „Modifier.verticalScroll“ und „Modifier.horizontalScroll“ für Ihr eigenes Element. In ähnlicher Weise wurde ScrollerPosition zugunsten von ScrollState eingestellt. (I400ce, b/157225838, b/149460415, b/154105299)
  • runOnIdleCompose umbenannt in runOnIdle (I83607)
  • Mehrere Test-APIs wurden umbenannt, um die Intuitivität zu verbessern. Alle findenXYZ APIs wurden in onNodeXYZ umbenannt. Alle doXYZ APIs wurden umbenannt, um XYZ auszuführen. (I7f164)
  • Die Benutzeroberfläche zum Erstellen kann jetzt in ViewGroups erstellt werden, ohne dass eine neue Komposition erforderlich ist. Ein Beispiel finden Sie unter ViewInteropDemo. (I9ab0b, b/160455080)
  • "sortWith" und "removeRange" wurden zu MutableVector hinzugefügt (Icccf7).
  • Implementieren Sie Ziehpunkte zum Ziehen, um die Auswahl für das Textfeld zu ändern. (I27032)
  • Die Shader-Inline-Klasse, mit der die NativeShader-Erwartungsklasse umschlossen wurde, wurde in "Shader" umbenannt. Die eingebundene Shader-Inline-Klasse hat der API-Oberfläche keine wertvollen Informationen hinzugefügt und war eine Inline-Klasse. Verwenden Sie die NativeShader-Klasse daher direkt. (I25e4d)
  • PainterModifier wurde so überarbeitet, dass keine Skalierung mehr basierend auf den angegebenen Einschränkungen und dem Parameter „ContentScale“ möglich ist. Painter skaliert den Zeicheninhalt selbst an die angegebene Größe des DrawScope, in den er eingespeist wird.

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

    ImagePainter wurde aktualisiert, um den Inhalt zu skalieren, anstatt sich auf PainterModifier zu verlassen. (I6ba90)

  • Übergeordnete withFrameNanos-Funktion für das Animations-Timing hinzufügen (Ie34c5)

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

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

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

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

  • Die Radiusklasse wurde in eine Inline-Klasse geändert. Methoden zur Companion-Erstellung wurden zugunsten des Funktionskonstruktors mit Standardparametern entfernt, sodass der Radius entlang der Y-Achse dem obligatorischen Radiusparameter der X-Achse entspricht.

    DrawScope.drawRoundRect verwendet jetzt einen einzelnen Radius-Parameter anstelle von zwei separaten Gleitkommawerten für den Radius entlang der x- und y-Achse (I46d1b).

  • Die zusammensetzbare Funktion „Neu zusammensetzen“ ist keine nützliche Abstraktion mehr. Die Neuzusammensetzung sollte in der Regel als Ergebnis von MutableState-Zuweisungen erfolgen. Für alle anderen Bereiche wird empfohlen, die invalidate-Funktion zu verwenden, um eine Neuzusammensetzung des aktuellen Bereichs auszulösen. (Ifc992)

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

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

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

    Die Änderung sollte mit der Quelle kompatibel sein, wenn Sie den Editor verwenden. Die meisten Nutzer des Editors sollten aufgrund dieser Änderung keinen Code aktualisieren müssen.

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

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

    Bekannte beabsichtigte Verhaltensänderungen, die sich daraus ergeben:

    1. Einige Anrufe werden an der Stelle übersprungen, an der sie vorher nicht gekommen wären
    2. Zusammensetzbare Ausdrücke in Standardargumentausdrücken werden jetzt korrekt abonniert und verarbeitet

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

    Die meisten funktionsgefährdenden Änderungen betreffen APIs, auf die der Compiler direkt abzielt. Die typische Verwendung des Editors ist davon nicht betroffen: 1. Composer::startExpr wurde entfernt. 2. Composer::endExpr wurde entfernt. 3. Composer::call wurde eingestellt. 4. Die Nicht-varargs-Überlasten von key wurden entfernt. Verwende ab sofort die vararg-Version. 5. Die Pivotal-Anmerkung wurde eingestellt. Du kannst key als Ersatz verwenden. 6. „ScopeUpdateScope::updateScope“ wurde geändert und erwartet nun eine „Function3“ anstelle von „Function1“. 7. „renewableFunction“ und „renewableFunctionN“ wurden um zusätzliche Parameter für die Kompilierungszeit aktualisiert (I60756, b/143464846).

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

  • "RepaintBoundary" wurde zugunsten von DrawLayerModifier (I00aa4) entfernt.

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

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

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

  • Das Verhalten von „TextDirection“ wurde durch LayoutDirection geändert. Wenn „LayoutDirection“ also RTL ist, ist die Standardeinstellung für TextDirection RTL. Bisher war es TextDirection.ContentOrLtr/Rtl (I4e803).

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

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

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