Compose-Grundlagen

Schreiben Sie Jetpack Compose-Anwendungen mit einsatzbereiten Bausteinen und erweitern Sie die Grundlage, um Ihre eigenen Designsystemteile zu erstellen.
Letzte Aktualisierung Stabile Version Releasekandidat Beta-Ausgabe Alpharelease
3. April 2024 1.6.5 - - 1.7.0-alpha06

Struktur

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

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

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

Abhängigkeiten deklarieren

Zum Hinzufügen einer Abhängigkeit von Compose müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.

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

Groovig

dependencies {
    implementation "androidx.compose.foundation:foundation:1.6.5"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.11"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.foundation:foundation:1.6.5")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.11"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

Feedback

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

Neues Problem erstellen

Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.

Version 1.7

Version 1.7.0-alpha06

3. April 2024

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

Neue Funktionen

  • Unter „LazyColumn“ und „LazyRow“ wurde die Unterstützung für das Erscheinungsbild und das Verschwinden von Elementen unterstützt. Bisher war es möglich, den Modifier.animateItemPlacement()-Modifikator hinzuzufügen, um Animationen für die Platzierung (Neuanordnung) zu unterstützen. Wir haben diesen Modifikator eingestellt und einen neuen, nicht experimentellen Modifikator namens Modifier.animateItem() eingeführt, mit dem alle drei Animationstypen unterstützt werden: Darstellung (Einblenden), Verschwinden (Ausblenden) und Neuanordnen. (I2d7f7, b/150812265)
  • Clients von LazyColumn/LazyRow können jetzt die Verwaltung eines Index basierend auf dem Schlüssel für den anstehenden Messwertdurchlauf ablehnen, indem sie eine LazyListState.requestToScroll ohne Sperrung aufrufen. (I98036, b/209652366)
  • Die parseAsHtml-Methode für Strings mit benutzerdefinierten Stilen wurde hinzugefügt: Mit ihr kann ein mit HTML-Tags gekennzeichneter String in AnnotatedString konvertiert werden. Nicht alle Tags werden unterstützt. Sie können beispielsweise noch keine Aufzählungslisten anzeigen. (I84d3d)
  • Implementierung der experimentellen Unterstützung für lange Screenshots in Compose-Scrollcontainern mit der offiziellen Android API (ScrollCaptureCallback). Diese Funktion ist experimentell und wird möglicherweise nicht in allen Fällen richtig verarbeitet. Aus diesem Grund ist sie derzeit standardmäßig deaktiviert. Legen Sie für die Aktivierung das Flag ComposeFeatureFlag_LongScreenshotsEnabled auf „true“ fest. Dieses Flag wird vor der Betaversion 1.7 entfernt. (I2b055, b/329296471)
  • Führen Sie die neue GraphicsLayer API ein, um mehr Flexibilität beim Placement und Rendern von GraphicsLayer-Instanzen zu bieten und intrinsische Renderingfunktionen zu unterstützen, ohne dass eine Koordination mit zusammensetzbaren Implementierungen erforderlich ist, um GraphicsLayer-Modifikatorinstanzen anzugeben.

API-Änderungen

  • Alle KeyboardOptions-Parameter haben jetzt standardmäßig einen nicht angegebenen Wert. Die Methode KeyboardOptions.merge wurde hinzugefügt.
  • KeyboardOptions.autoCorrect wurde in autoCorrectEnabled umbenannt und Nullwerte zulässig, wobei null anzeigt, dass kein Wert angegeben wurde. (Ia8ba0, b/295951492)
  • outOfBoundsPageCount wurde in beyondViewportPageCount umbenannt. (I129c6)
  • fun ClipEntry.getMetadata()“ wird in „val ClipEntry.clipMetadata“ geändert. (I50155)
  • TextFieldState.valueAsFlow() wurde entfernt. Bevorzugen snapshotFlow { state.text } oder snapshotFlow { TextFieldCharSequence(state.text, state.selection) } (I7d629)
  • InputTransformation.transformInput-Parameter neu strukturiert. „originalValue: TextFieldCharSequence“ wurde entfernt. Stattdessen hat TextFieldBuffer diesen Wert jetzt unter demselben Namen. Außerdem wurde der Parameter valueWithChanges: TextFieldBuffer entfernt. TextFieldBuffer ist jetzt der Empfängerbereich für die Funktion. (I919cc)
  • Die Variante BasicTextField(state) und BasicSecureTextField verwenden jetzt KeyboardActionHandler anstelle von KeyboardActions, um Aktionen der Softwaretastatur zu verarbeiten. (I58dda)
  • APIs für die Delegierung der Eingabestift-Handschrift, um die Eingabe falscher Texteingabefelder mit Eingabestiften zu unterstützen (I9c09c, b/327271923)
  • KeyboardOptions.shouldShowKeyboardOnFocus wurde in showKeyboardOnFocus umbenannt. (Ib4b7a, b/295951492)
  • Der Parameter hintMediaTypes wurde aus Modifier.contentReceiver entfernt. Entwickler wurden bereits empfohlen, den Medientyp des empfangenen TransferableContent zu prüfen, da er möglicherweise nicht mit der konfigurierten hintMediaTypes kompatibel ist. (I82f99)
  • Die Parameter von BasicSecureTextField wurden neu geordnet. Die keyboardType- und imeAction-Parameter wurden zugunsten der vollständigen KeyboardOptions-Klasse entfernt, aber die Standardwerte für BasicSecureTextField wurden beibehalten. Außerdem wurde der Parameter scrollState entfernt. (Ibbfa9)
  • Der Typ von TextFieldState.text wird von TextFieldCharSequence in nur CharSequence geändert. Daher wurden TextFieldState.selection: TextRange und TextFieldState.composition: TextRange? hinzugefügt, um die aktuellen Auswahl- und Zusammensetzungswerte direkt aus dem Statusobjekt zu lesen.
  • TextFieldState.forEachTextValue wurde entfernt. (Idb2a2)
  • Die Funktionen ClipboardManager.getClipMetadata und ClipboardManager.hasClip wurden entfernt. Verwende clipEntry.getMetadata(), um die Metadaten des aktuellen Clipeintrags zu lesen. Prüfe auch das Ergebnis von ClipboardManager.getClip, wenn es null ist oder nicht, um festzustellen, ob die Zwischenablage einen aktuellen Clip enthält. (I50498)
  • ClipboardManager.setClip akzeptiert jetzt null, um die Zwischenablage löschen zu können. (I7d2e9)
  • ReceiveContentListener wird in eine Funktionsschnittstelle konvertiert. Außerdem wird die Modifier.receiveContent-Überlastung, die ein Lambda aufnimmt, entfernt, da ReceiveContentListener jetzt eine Funktionsschnittstelle ist.
  • Modifier.receiveContent wurde in Modifier.contentReceiver umbenannt. (I1e6af)
  • TransferableContent.consumeEach wurde in TransferableContent.consume umbenannt. (I1e462)
  • rememberTextFieldState wurde auf eine stabile API umgestellt. (I37999)

Fehlerkorrekturen

  • Ein Fehler wurde behoben, bei dem die Variante BasicTextField(state) nicht mit CJK-Tastaturen(auf Kompositionsbasis) funktionierte. (I54425)
  • Es wurde ein Fehler behoben, bei dem Modifier.dragAndDropTarget() in bestimmten Szenarien auf veraltete Daten verweisen konnte, wobei Modifier.Node wiederverwendet wurde. (I05bb1)
  • Es wurde eine kürzlich erfolgte Vertragsänderung rückgängig gemacht, bei der AnchoredDraggableState#anchoredDrag-Aufrufe am Ende eines anchoredDrag-Vorgangs ausgelöst wurden. (I95715)

Version 1.7.0-alpha05

20. März 2024

androidx.compose.foundation:foundation-*:1.7.0-alpha05 wird freigegeben. Version 1.7.0-alpha05 enthält diese Commits.

API-Änderungen

  • Die lokale experimentelle LocalTextLinkStyle-Komposition für die Gestaltung von Hyperlinks wurde entfernt. (Iebfa7)
  • Die experimentelle Überschreibung von BasicText mit dem Argument onLinkClicked wurde entfernt. Eine Ersatz-API für die Unterstützung von Hyperlinks wird in Zukunft folgen. (I107d5)
  • Methoden und Eigenschaften für Codepunkte unter TextFieldState und TextFieldBuffer wurden entfernt. Außerdem wurden die inChars-Suffixe aus den verbleibenden auswahl- und zusammensetzungsbezogenen APIs entfernt. (Ief7ce)
  • currentValue von AnchoredDraggable wird jetzt beim Durchlaufen eines Ankerpunkts aktualisiert. Verwenden Sie settledValue, um die vorherige currentValue-Semantik zu erhalten. Wird nur aktualisiert, wenn Sie sich an einem Anker befinden. Der Fortschritt wird jetzt als Funktion angezeigt, die einen Start- und Endpunkt erfordert, und nicht mehr als eine Eigenschaft. (Ibe6e8, b/318707189, b/298271489, b/294991954)
  • BasicTextField(state), TextFieldState, InputTransformation, OutputTransformation, TextFieldLineLimits und TextFieldDecorator wurden auf die stabile Version umgestellt. (I9582b)
  • Einführung von InterceptPlatformTextInput zur Unterstützung beim Schreiben von Low-Level-IME-bezogenen Tests und anderen Low-Level-IME-Anwendungsfällen. PlatformTextInputTestOverride wurde eingestellt. (I862ed, b/322680547)
  • restrictedConstraints() in zwei Methoden aufteilen: fitPrioritizingWidth() und fitPrioritizingHeight() (I6d7fd)

Externer Beitrag

  • Zwei neue API isLastScrollForward/isLastScrollBackward hinzugefügt, um die Scrollrichtung für die letzte Scrollaktion zu prüfen. Gib „false“ zurück, wenn noch keine Scrollaktion vorhanden ist. (I63a0e)

Version 1.7.0-alpha04

6. März 2024

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

API-Änderungen

  • Unterstützung für die Handschriftfunktion mit Eingabestift auf Geräten ab Android U. (I002e4)
  • hintLocales wurde zu KeyboardOptions hinzugefügt, um TextFields die Möglichkeit zu geben, IMEs mit bestimmten Gebietsschemata anzugeben, um eine bevorzugte Sprache vorzugeben. (Id18c2)
  • Die experimentellen BasicTextField2- und BasicSecureTextField-Überlastungen, für die die Parameter value: String und onValueChange: () -> String erforderlich waren, wurden entfernt. (I568b4)
  • Fügen Sie InputTransformation eine optionale applySemantics-Funktion hinzu, um die Semantik der BasicTextField2 zu beeinflussen, auf die sie angewendet wird. (I74a2f, b/170648072)
  • In dieser Änderungsliste fügen wir die semantische Aktion GetScrollViewportLength hinzu, damit wir Informationen über die Komponenten, die beim Schreiben gescrollt werden, an das a11y-System übergeben können. In dieser Änderungsliste wird die Verwendung dieser Eigenschaft auch in scrollbaren Fundament-Listen angewendet. (Ic5fa2)
  • BasicTextField2 wurde in BasicTextField umbenannt. (Ie5713)
  • FocusRequester.createRefs ist jetzt stabil (I4d92c, b/261436820)
  • DelegatableNode.scrollIntoView() wurde eingeführt, damit Modifikatorknoten scrollIntoView-Anfragen direkt senden können. (I2b3b7, b/299939840)
  • DelegatableNode.requireView() wurde eingeführt, damit Modifikatorknoten die aktuelle Android-View abrufen können, ohne eine lokale Komposition zu lesen. (I40768)
  • Einführung von kontextbezogenen Layoutinformationen im Zeilenbereich des Kontexts und Spaltenbereich des Kontexts mit Linienindex, Position und Einschränkungen für maximale Breite und Höhe, um an der angegebenen Position zu bleiben. Elemente, die die maximale Breite/Höhe überschreiten, können in die nächste Zeile übergehen oder aufgrund von Überlaufeinstellungen weggelassen werden. (Id13f8, b/292114798)

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, bei dem das Umschalten der enabled- oder readOnly-Attribute von TextField unter bestimmten Bedingungen einen Absturz verursachte. (Iae17b)

Version 1.7.0-alpha03

21. Februar 2024

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

API-Änderungen

  • DelegatableNode.requireLayoutCoordinates() wurde eingeführt, um den aktuellen LayoutCoordinates einer Modifier.Node zu erhalten, ohne onPlaced überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Ia8657)
  • DelegatableNode.currentLayoutCoordinates wurde eingeführt, um den aktuellen LayoutCoordinates einer Modifier.Node zu erhalten, ohne onPlaced überschreiben und die Koordinaten selbst in einer Property speichern zu müssen. (Iaebaa)
  • Leistungsoptimierungen in DraggableAnchors werden von AnchoredDraggable verwendet. (I89cff)
  • BasicTextField2 und zugehörige APIs unter dem Paket androidx.compose.foundation.text2 wurden nach androidx.compose.foundation.text verschoben. (I9f635)
  • BasicTextField2 akzeptiert keinen CodepointTransformation-Parameter mehr. Verwenden Sie BasicSecureTextField oder OutputTransformation. (Id34ff)
  • Es wurde eine Methode hinzugefügt, um nur die Anmerkungen von zwei AnnotatedStrings zu vergleichen. (I32659)
  • Jetzt neu: ContextualFlowRow und erweiterte FlowRow/Column mit MaxLines und Overflow. Wir freuen uns, neben der Einführung von ContextualFlowRow und ContextualFlowColumn Verbesserungen an den experimentellen Funktionen von FlowRow und FlowColumn ankündigen zu können, die jetzt maxLines- und Überlauf-Unterstützung enthalten. Mit diesem Update sollen Komponenten zur Leistungsoptimierung bereitgestellt werden. Dabei ist ContextualFlow* perfekt für eine große Anzahl von Elementen, bei denen eine kleine maxLines-Konfiguration verwendet wird und die dynamische + N mehr Schaltflächen sehen. FlowRow und FlowColumn eignen sich perfekt für eine kleine Anzahl von Elementen (unter 100 Elementen). Wichtig: Um das vorhandene Verhalten in FlowRow oder FlowColumn beizubehalten, wo sich alle Elemente unabhängig davon zusammensetzen, ob sie auf das Maximum der Kreuzachse passen, setzen Sie overflow während der Initialisierung auf FlowRowOverflow.Visible oder FlowColumnOverflow.Visible. Sieh dir ContextualFlowRowSample und FlowRowSample an, um Beispiele für diese neuen Funktionen in Aktion zu sehen. (Ib9135, b/293577082)

Fehlerkorrekturen

  • Bei der Cursoranimation werden keine Frames zwischen Ein- und Aus-Zustand mehr angefordert. (Ia2253)
  • Die verworfenen Kopierkonstruktoren von KeyboardOptions kopieren jetzt alle Attribute korrekt. (If12de)

Version 1.7.0-alpha02

7. Februar 2024

androidx.compose.foundation:foundation-*:1.7.0-alpha02 wird freigegeben. Version 1.7.0-alpha02 enthält diese Commits.

API-Änderungen

  • HorizontalPager, VerticalPager und PagerState werden zur stabilen Version hochgestuft. (I67660, b/316966909)
  • Lokal zur LocalTextLinkStyle-Komposition wurde hinzugefügt, mit dem der Stil der Links im Text in der gesamten App geändert werden kann. Wenn Sie in der App ein eigenes Design verwenden, sollten Sie diese lokale Komposition entsprechend Ihrem Design festlegen. Wenn du das Material Design verwendest, wird die Farbe des Links standardmäßig auf die Hauptfarbe von Material festgelegt. (I7eb10)
  • Einführung des receiveContent-Modifikators, mit dem Entwickler Rich-Content in Jetpack Compose empfangen können.
  • receiveContent lässt sich in BasicTextField2 einbinden, um Rich-Media-Inhalte anzunehmen, die von der Softwaretastatur oder über das Einfügen in der Zwischenablage bereitgestellt werden. (I81b72)
  • Im Rahmen dieser Änderung ersetzen wir auf Pager SnapFlingBehavior durch TargetedFlingBehavior, um weitere Anwendungsfälle freizuschalten und mehr Flexibilität zu bieten. (I762ea)
  • Durch diese Änderung machen wir Snapping APIs stabil. Außerdem bereinigen wir einen Teil des Testcodes und fügen weitere Beispiele zu „Snapping“ hinzu. (Id8da9)
  • Stell TargetedFlingBehavior ein, ein FlingBehavior-Element, mit dem Informationen über den Status der laufenden Animation und den Ziel-Scrollversatz übertragen werden können. (I6a207)

Fehlerkorrekturen

  • BasicTextField2 behält den Cursor bei der Eingabe jetzt in der Ansicht, wenn er aus dem sichtbaren Bereich gescrollt oder aufgrund einer Eingabe aus dem sichtbaren Bereich verschoben wurde. (Ieb856, b/237190748)

Externer Beitrag

  • Fügt eine experimentelle API zum Konfigurieren des Prefetch-Verhaltens von LazyLists hinzu. (I022a4)

Version 1.7.0-alpha01

24. Januar 2024

androidx.compose.foundation:foundation-*:1.7.0-alpha01 wird freigegeben. Version 1.7.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Indication API wurde neu hinzugefügt: IndicationNodeFactory. Dies führt zu leistungsstärkeren Indication-Implementierungen im Vergleich zur vorherigen (inzwischen eingestellten) rememberUpdatedInstance API. Informationen zur Migration finden Sie unter developer.android.com.
  • clickable / combinedClickable / selectable / toggleable akzeptiert jetzt einen MutableInteractionSource-Parameter, für den Nullwerte zulässig sind. Wenn der Wert null ist und die angegebene Indication ein IndicationNodeFactory ist, kann die Indication nur bei Bedarf verzögert erstellt werden, wodurch die Leistung verbessert wird. Wenn Sie MutableInteractionSource nicht aufziehen und verwenden, wird empfohlen, null zu übergeben.

API-Änderungen

  • Stell DecayAnimation in AnchoredDraggable vor. Durch diese Änderung wird AnchoredDraggable der decayAnimationSpec-Parameter hinzugefügt, mit dem die Auslaufanimation verwendet werden kann, wenn der Ankerpunkt festgelegt wird. Die Änderung umfasst auch die Umbenennung des vorhandenen animationSpec in snapAnimationSpec, damit der Anwendungsfall der einzelnen Spezifikationen besser verstanden werden kann.
  • BasicTextField2 ist für experimentelle Zwecke verfügbar. Das Feature sollte ungefähr gleich mit dem Feature von BasicTextField sein und das Verhalten sollte produktionsreif sein. Die API ist vorerst aber experimentell. Vor dem Stabilisieren wird es in BasicTextField umbenannt und in dasselbe Paket verschoben.
  • Vorstellung des ersten Entwurfs der OutputTransformation API für BasicTextField2. Diese API ersetzt die meisten Anwendungsfälle von VisualTransformation aus der alten BasicTextField. Sie ist jedoch noch nicht vollständig und einige Vorgänge werden nicht richtig funktionieren. Wir freuen uns jedoch über Feedback zur Nutzungsfreundlichkeit der API in Ihren Anwendungsfällen. (aosp/2708848)
  • LinkAnnotation wurde eingeführt, mit dem Links und anklickbare Elemente in Text eingefügt werden können. Die Verknüpfungsfunktion ist noch nicht vollständig und weitere API-Änderungen sind geplant.
  • Einführung des receiveContent-Modifikators, mit dem Entwickler Rich-Content in Jetpack Compose empfangen können.
  • receiveContent lässt sich in BasicTextField2 einbinden, um Rich-Content zu akzeptieren, der über die Softwaretastatur oder per Einfügen aus der Zwischenablage bereitgestellt wird.
  • Mit KeyboardOptions.shouldShowKeyboardOnFocus kannst du das Standardverhalten von BasicTextField zum Anfordern einer Softwaretastatur deaktivieren.
  • TextInputService und LocalTextInputService wurden eingestellt. Verwenden Sie stattdessen PlatformTextInputModifierNode, um die IME APIs der Plattform direkt einzubinden. (aosp/2862698)
  • Indication#rememberUpdatedInstance wurde eingestellt. Sie weist eine unvermeidbare Leistungseinbußen auf und verhindert andere Optimierungen. Stattdessen sollten Sie die neue IndicationNodeFactory API verwenden.

Fehlerkorrekturen

  • BasicTextField validiert jetzt eine kleine Auswahl von Offset-Zuordnungen vorab, wenn VisualTransformation übergeben wird. Dadurch können häufige Codierungsfehler abgefangen werden, die in späteren Messungen oder Zeichnungen zu nicht wiederherstellbaren Ausnahmen führen. Durch das Auslösen während der Zusammensetzung ist die Wahrscheinlichkeit höher, dass Entwickler diese Fehler während der Entwicklung erkennen und so Produktionsabstürze vermeiden können. (I0fd42)
  • VisualTransformation wird nicht ausgelöst, wenn Sie einen ungültigen Index für einen ungültigen Index zurückgeben (b/316401857 ).

Version 1.6

Version 1.6.5

3. April 2024

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

Fehlerkorrekturen

  • Fügt Debugging-Protokolle zu schwer reproduzierbaren Fehlern in Zeile/Spalte hinzu (b/300280216 und b/297974033)

Version 1.6.4

20. März 2024

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

Fehlerkorrekturen

  • Eine Auswahl durch langes Drücken und Ziehen, die sich im ersten Frame des Ziehens aus den Layoutgrenzen des Textes hinausbewegt, stürzt nicht mehr ab. (Icdf90, b/325307463)

Version 1.6.3

6. März 2024

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

Version 1.6.2

21. Februar 2024

androidx.compose.foundation:foundation-*:1.6.2 wird freigegeben. Version 1.6.2 enthält diese Commits.

Fehlerkorrekturen

  • Fehler beim Zurücksetzen von AnimateContentSize beheben. (I07051)
  • Problem behoben, bei dem unter bestimmten Umständen intrinsicHeight des Textes zu viel im Cache gespeichert wurden. (3cd398, b/217910352)

Version 1.6.1

7. Februar 2024

androidx.compose.foundation:foundation-*:1.6.1 wird freigegeben. Version 1.6.1 enthält diese Commits.

Fehlerkorrekturen

  • Das Problem mit der gestaffelten Rastermessung beim Scrollen über das Limit wurde behoben. (bffc39)
  • Prüfung auf Layouts mit großen Abmessungen hinzufügen. e74af5:
  • Position von Elementen der Größe 0 am Anfang des abgesetzten Rasters wurde korrigiert. (785f94)
  • Rufe den onRelease-Callback in der gleichen Reihenfolge wie onForgotten auf. (31ce3b)

Version 1.6.0

24. Januar 2024

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

Wichtige Änderungen seit Version 1.5.0

  • Neuer Modifikator Modifier.anchoredDraggable, der das Ziehen und Animieren zwischen vordefinierten Ankern freischaltet. Dieser Modifikator ist ein Ersatz für Modifier.swipeable. Wie es verwendet und von Modifier.swipeable migriert wird, erfahren Sie in der Migrationsanleitung.
  • Es wurde eine Drag-and-drop-Funktion für Apps und Komponenten hinzugefügt. Informationen für den Einstieg finden Sie unter DragAndDropTarget, Modifier.dragAndDropSource und andere APIs.
  • Modifier.draggable2D ist der neue Modifikator, der das Ziehen von 2D einfach unterstützt. Siehe Beispiel.
  • AndroidExternalSurface und AndroidEmbeddedExternalSurface wurden hinzugefügt, um das Hinzufügen oberflächengesteuerter Komponenten in Compose zu vereinfachen
  • Verschiedene API-Änderungen und -Verbesserungen in Pager und snapFlingBehaviour
  • Verschiedene APIs für Fokus, Text und Einsätze wurden zu stabilen APIs hochgestuft.

Version 1.6.0-rc01

10. Januar 2024

androidx.compose.foundation:foundation-*:1.6.0-rc01 wird freigegeben. Version 1.6.0-rc01 enthält diese Commits.

API-Änderungen

  • Der Konstruktor der DragAndDropTarget()-Erweiterung wurde entfernt. Erstellen Sie mit object: DragAndDropTarget {} eine neue Instanz. (I32318)

Version 1.6.0-beta03

13. Dezember 2023

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

Fehlerkorrekturen

  • Ein Absturz wurde behoben, der sich auf sehr großen Text mit unendlichen Einschränkungen ausgewirkt hat. (I1a7df, b/312294386)
  • PlatformImeOptions ist jetzt eine konkrete Klasse anstelle einer Schnittstelle. (If40a4)

Version 1.6.0-beta02

29. November 2023

androidx.compose.foundation:foundation-*:1.6.0-beta02 wird freigegeben. Version 1.6.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • Problem behoben, bei dem canScroll nach dem Scrollen nur für das Layout nicht aktualisiert wurde. (I60a86)
  • Korrektur für Modifier.animateItemPlacement() und LookaheadScope nach kleinen Scrollvorgängen. (I3a2b7)

Version 1.6.0-beta01

15. November 2023

androidx.compose.foundation:foundation-*:1.6.0-beta01 wird freigegeben. Version 1.6.0-beta01 enthält diese Commits.

API-Änderungen

  • Der DragAndDropTarget-Modifikator übernimmt jetzt die empfangende DragAndDropTarget explizit und hat eine Lambda-Funktion, um eine Drag-and-drop-Sitzung zu aktivieren. Es gibt jetzt zwei Werksfunktionen für DragAndDropModifierNode. einen für den Empfang von Übertragungen und einen zum Übertragen von Daten (I69481)
  • maximumFlingVelocity wurde aktualisiert und als Gleitkommazahl dargestellt. Die Dokumentation wurde aktualisiert, um die Einheit maximumFlingVelocity klarer darzustellen. (I8adc7)
  • onDragAndDropStart im Werk DragAndDropModifierNode wurde in acceptDragAndDropTransfer umbenannt.

    acceptsDragAndDropTransfer wurde zu dragAndDropTarget Modifier hinzugefügt, um sie aus einer Drag-and-drop-Sitzung zu akzeptieren. Dieses Lambda gibt ein realisierbares DragAndDropTarget zurück, wenn an einer Drag-and-drop-Sitzung interessiert ist. Andere Lambdas zur Verarbeitung von Drag-Ereignissen wurden dadurch ersetzt.

    Für den Empfang von Drag-and-drop-Sitzungen wurde eine DragAndDropTarget-Factory-Funktion hinzugefügt (Iebf3a).

  • Wenn startDragImmediately in AnchoredDraggable verfügbar ist, kann festgelegt werden, ob Ziehbewegungen bei der Verwendung erkannt werden. Es ist nützlich, ihn festzulegen, wenn das Widget einen Zielanker animiert. Siehe Beispiel. (Ie6d13, b/285139987)

  • Basis-Kurzinfo-APIs sind jetzt @ExperimentalFoundationApi (I30b0b)

  • Entfernte DragAndDropInfo als Typ DragAndDropModifierNode.drag akzeptiert jetzt Parameter für transferData, die Dekorationsgröße und das Drag-Dekorations-Lambda DrawScope

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

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

    DragAndDropEventType wurde entfernt (I645b1)

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

  • OriginalText durch TextSubstitution ersetzen. (Ifa5a8)

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

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

  • Der Parameter clippingEnabled von Modifier.magnifier wurde in clip umbenannt.

  • Für den magnifierCenter-Parameter von Modifier.magnifier werden Nullwerte zulässig, wobei dasselbe Standardverhalten beibehalten wird. (I6aa66)

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

Fehlerkorrekturen

  • Implementieren Sie Gleichheitszeichen und Hashcode für PageSize.Fixed. (Ie3ede, b/300134276)
  • Es wurde ein Fehler behoben, der dazu führte, dass das BasicText-Layout nicht verkleinert wurde, wenn minWidth geändert wurde und minWidth weniger als die anfänglichen Beschränkungen für Messwerte maxWidth (Idb19c) geändert wurde
  • Renderer-Unterstützung für die Funktion „Sweep-Gradient“ in ArcLine wurde hinzugefügt. (I4d5bb)
  • Problem mit der Binärkompatibilität bei Änderung des Fenstereinsatzes beheben (Iee695)
  • Entfernen Sie die Materialkernschicht für den Material3-Chip bzw. die Material 3-Schaltfläche, da die Mikro-Benchmarks ohne diese eine bessere Leistung zeigen. (I55555)

Version 1.6.0-alpha08

18. Oktober 2023

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

Neue Funktionen

API-Änderungen

  • Das Lambda „onDrawDragShadow“ von Modifier.dragAndDrawSource wurde in „drawDragDecoration“ umbenannt und der Größenparameter „DragAndDropInfo“ wurde in „dragDecorationSize“ umbenannt. (Id0e30, b/303904810)
  • Der Parameter decorationBox von BasicTextField2 wird in decorator umbenannt. Der Typ wird ebenfalls in die entsprechende unterhaltsame Benutzeroberfläche TextFieldDecorator geändert. (I23c1c)

Fehlerkorrekturen

  • Die Dokumentation zu BasicTextField bezüglich der onValueChange-Anforderungen wurde verbessert. (I90fc9, b/160257648)

Version 1.6.0-alpha07

4. Oktober 2023

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

API-Änderungen

  • Zum Schreiben von Tests für benutzerdefinierte Texteditoren wurde PlatformTextInputMethodTestOverride eingeführt. (Id159b)
  • GraphicsSurface wurde in AndroidExternalSurface (I11680) umbenannt
  • Temporäres Flag DisableNonLinearFontScalingInCompose zum Deaktivieren der nicht linearen Schriftskalierung hinzugefügt. Legen Sie DisableNonLinearFontScalingInCompose = true in Ihren Tests fest, wenn Sie Zeit für die Bereinigung benötigen. Dieses Flag wird in Compose 1.6.0-beta01 entfernt. (Ic9486)
  • ColorList- und ColorSet-Sammlungen, die Zuweisungen vermeiden, wurden hinzugefügt. (I744bd)
  • Durch diese Änderung wird shortSnapVelocityThreshold entfernt, das in ein Implementierungsdetail der Implementierungen von SnapLayoutInfoProvider umgewandelt wurde. (I65f6d)
  • Fügt den Modifizierer dragAndDropSource für das Starten von Drag-and-drop-Sitzungen und den dragAndDropTarget-Modifikator für den Empfang von Drag-and-drop-Sitzungen hinzu (Ib7828, b/286038936)
  • SnapPositionInLayout-Dokumentation und Positionierungsmethode aktualisieren. Fügen Sie der Positionsmethode in SnapPositionInLayout die Verwendung von Innenabständen für Inhalte hinzu. (Id7938, b/300116110)
  • UndoState wurde zu TextFieldState hinzugefügt. Mit dieser Funktion können vom Nutzer vorgenommene Änderungen rückgängig gemacht bzw. wiederholt werden. (ICC024)

Fehlerkorrekturen

  • Problem behoben, das basicMarquee nach einer Änderung der Geschwindigkeit nicht animiert wurde. (Id2e77, b/297974036)

Version 1.6.0-alpha06

20. September 2023

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

Neue Funktionen

  • Neue zusammensetzbare Wrapper für SurfaceView, TextureView: GraphicsSurface() und EmbeddedGraphicsSurface(). Es handelt sich um eine experimentelle API, die jederzeit geändert werden kann. I9ddb2:
  • Modifier.magnifier() ist jetzt eine stabile API. Dazu gehört das Entfernen von MagnifierStyle zugunsten von Inline-Parametern im Modifikator selbst. (I83bec, b/298381260, b/262367109, b/261438887)

API-Änderungen

  • updateCurrentPage und updateTargetPage wurden in ScrollScope eingeführt. Dies sind die letzten Elemente, die für die Anpassung des animierten Scrollens durch PagerState.scroll erforderlich sind. (I9cad5, b/267744105, b/243786897)
  • Dichte von SnapFlingBehavior entfernen. Alle Implementierungen von SnapLayoutInfoProvider haben bereits eine Möglichkeit, auf die Dichte zuzugreifen. Der Empfängerbereich könnte entfernt werden, was zu einer weniger komplexen Implementierung von SnapFlingBehavior und SnapLayoutInfoProviders führt. (I153c3)
  • Weitere Modifikatoren sind als stabil gekennzeichnet. (I56af1, b/298046462)
  • SnapStepSize“ wurde aus „SnapLayoutInfoProvider“ entfernt. Die Berechnung sollte mithilfe der Layout-Informationen erfolgen und durch die Annäherung oder das Einrasten-Versatz bereitgestellt werden. (If320c)

Änderungen des Verhaltens

  • In der Funktion „Compose“ wird jetzt eine nicht lineare Schriftskalierung verwendet, um die Lesbarkeit und Barrierefreiheit zu verbessern. Wenn die Schriftgröße in den Systemeinstellungen über 100% liegt, wird kleiner Text normal großgeschrieben, bereits großer Text nimmt jedoch nur ein wenig zu. Außerdem werden die Zeilenhöhen, die in SP definiert wurden, automatisch proportional zur für die Skalierung von 100% vorgesehenen Höhe angepasst. Weitere Informationen finden Sie in den Best Practices für die Schriftskalierung. (I11518)

Fehlerkorrekturen

  • Entfernen Sie die Verwendung von rememberSaveable für Kurzinfos. (Icc131, b/299500338)

Version 1.6.0-alpha05

6. September 2023

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

API-Änderungen

  • Fügen Sie Überlastungen für BasicSecureTextField hinzu, die einen unveränderlichen Wert akzeptieren, und einen Callback zum Ändern dieses Werts, genau wie bei der aktuellen BasicTextField API. (Ia4882)
  • Fügen Sie Modifier.preferKeepClear() hinzu, um sie als zusammensetzbar zu markieren, um unverankerte Fenster in API 33 und höher zu vermeiden. (Ib51d5, b/297260115)
  • Die Verschiebungsgeschwindigkeiten in Ansichtskomponenten wie ScrollView und RecyclerView sind auf ViewConfiguration.ScaledMaximumFlingVelocity begrenzt. Die Funktion „Schreiben“ enthält jetzt eine eigene Version von maximumFlingVelocity, die jetzt für Draggable gilt. (Ibf974)
  • Verworfene Pager- und PagerState-Überlastungen wurden entfernt. (Iea07e)
  • BasicTooltipBox wurde compose.foundation hinzugefügt und PlainTooltipBox und RichTooltipBox aktualisiert, um TooltipBox mit den neuen zusammensetzbaren Funktionen PlainTooltip und RichTooltip zu verwenden. (I79e1d)

Version 1.6.0-alpha04

23. August 2023

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

API-Änderungen

  • ReusableComposition-Schnittstelle zum Verwalten des Lebenszyklus und zur Wiederverwendung von Unterzusammensetzungen wurde hinzugefügt. (I812d1, b/252846775)
  • Modifier.focusGroup wurde zu stabilen APIs hochgestuft. (I7ffa3)
  • Fügen Sie Überlastungen für BasicTextField2 hinzu, die einen unveränderlichen Wert akzeptieren, und einen Callback zum Ändern dieses Werts, genau wie bei der aktuellen BasicTextField API. (I3f2b8)
  • GridItemSpan::currentLineSpan ist jetzt eine stabile API. (ICC29c)
  • Canvas, das contentDescription akzeptiert, ist jetzt eine stabile API. (Ib3d29)
  • In ScrollState wurde viewportSize eingeführt, um die viewPort-Größe der Komponente zu ermitteln, die ScrollState nach dem Messen verwendet. (I8b85a, b/283102682)
  • Der Vorabruf in Pager entsprach nicht dem Verhalten in Views. Das Problem wurde behoben. (I93352, b/289088847)
  • Modifier.consumeWindowInsets(PaddingValues) ist jetzt stabil.
    • Die Deprecated Modifier.consumedWindowInsets API wurde entfernt. Verwende stattdessen Modifier.consumeWindowInsets. (Id72bb)

Version 1.6.0-alpha03

9. August 2023

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

API-Änderungen

  • Die Überlastung von LazyLayout wurde hinzugefügt. Es akzeptiert ein Lambda von LazyLayoutItemProvider und kein einfaches Objekt wie zuvor. Die vorherige Überlastung wurde verworfen. (I42a5a)
  • Unterstützung für die Konfiguration von privateImeOptions (Idb772) hinzugefügt

Fehlerkorrekturen

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

Version 1.6.0-alpha02

26. Juli 2023

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

API-Änderungen

  • Einführung von PagerLayoutInfo mit Informationen, die im Pager nach einer Maßnahme erfasst wurden. Außerdem wurde PageInfo eingeführt, die Informationen zu einer einzelnen gemessenen Seite in Pager. (Iad003, b/283098900)
  • Zusätzliche Annotationen zur Angabe zulässiger Eingaben für zusammensetzbare Funktionen (I51109)
  • SemanticsNodeInteraction.requestFocus wurde hinzugefügt, damit der Fokus bei Tests noch einfacher und leichter auffindbar ist. (Ie8722)
  • Die PlatformTextInput* API wurde komplett neu gestaltet. (I6c93a, b/274661182, b/267235947, b/277380808)
  • SoftwareKeyboardController und LocalSoftwareKeyboardController sind keine experimentellen Funktionen mehr. LocalSoftwareKeyboardController ist jetzt auch eine korrekte CompositionLocal. (I4c364)
  • In Modifier.transformable wird jetzt im Parameter canPan das Schwenkdelta angegeben, um festzulegen, in welche Richtung die Schwenkbewegung erlaubt oder nicht zugelassen werden soll. (I692aa, b/266829800)
  • Aktualisiert den Modifikator consumeWindowInsets, um die Basisklasse AbstractComposeView zu erweitern (Iacd74, b/269479941)

Version 1.6.0-alpha01

21. Juni 2023

androidx.compose.foundation:foundation-*:1.6.0-alpha01 wird freigegeben. Version 1.6.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Einführung einer neuen AnchoredDraggable API in Foundation. Damit können Komponenten erstellt werden, die zwischen verschiedenen Stadien verschoben werden können, z. B. modale Blätter am unteren Rand. Diese API ersetzt die Swipeable API von Material. (I4a2ed)

API-Änderungen

  • InputConnection#requestCursorUpdates (I0c69b) unterstützen
  • Einführung von scrollAnimationSpec, um benutzerdefinierte Animationsspezifikationen zu ermöglichen. „BringIntoViewCalculator“ wurde auf „BringIntoViewScroller“ aktualisiert. (Idb741)
  • Hinzufügen des ResourceResolutionException-Typs zu Wrappern von Werfen, die ausgelöst werden, wenn versucht wird, Bitmap-Assets mit einer Beschreibung des Asset-Pfads zu laden, der nicht geladen werden konnte. (I19f44, b/230166331, b/278424788)
  • Es wurden semantische Attribute und Aktionen zur Unterstützung der Textübersetzung hinzugefügt. (I4a6bc)
  • Es wurde eine BringIntoViewCalculator API eingeführt, mit der sich anpassen lässt, wie Komponenten wie Scrollable auf bringIntoView-Anfragen reagieren. Die Überlastung von „scrollable“ wurde geändert, sodass optional eine Instanz von BringIntoViewCalculator akzeptiert wird. Iaf5af

Fehlerkorrekturen

  • Eine Lint-Prüfung wurde hinzugefügt, um zu warnen, wenn Sie eine MutableInteractionSource in der Zusammensetzung erstellen, ohne sie sich zu merken, ähnlich wie die Lint-Prüfungen zum Erstellen eines änderbaren Status / Animatable. (I5daae)
  • Die Auswahl per Maus wird jetzt unterstützt. Die berührungsbasierte Auswahl wird um Wort erweitert und wird um Zeichen verkleinert. (Ic0c6c, b/180639271)
  • FocusTargetModifierNode-Schnittstelle hinzugefügt, mit der eine benutzerdefinierte FocusTarget erstellt werden kann. (I9790e)

Version 1.5

Version 1.5.4

18. Oktober 2023

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

Version 1.5.3

4. Oktober 2023

androidx.compose.foundation:foundation-*:1.5.3 wird freigegeben. Diese Version hat keine Änderungen.

Version 1.5.2

27. September 2023

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

Fehlerkorrekturen

  • Es wurde ein Fehler im Text behoben, der unter bestimmten Umständen zu Abstürzen führte, wenn die Semantik ungültig wurde.

Version 1.5.1

6. September 2023

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

Fehlerkorrekturen

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

Version 1.5.0

9. August 2023

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

Wichtige Änderungen seit Version 1.4.0

  • Viele grundlegende Modifizierer, darunter Modifier.clickable, Modifier.draggable, Modifier.scrollable und Layoutmodifikatoren, wurden zur Modifier.Node API migriert. Dadurch wird der Aufwand bei der ersten Komposition reduziert.
  • Verbesserungen bei der Stabilität der Pager Viele Fehler wurden behoben.
  • pageCount-Parameter befinden sich jetzt in PagerState und nicht im Pager selbst

Version 1.5.0-rc01

26. Juli 2023

androidx.compose.foundation:foundation-*:1.5.0-rc01 wird freigegeben. Version 1.5.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Es ist eine optionale Prüfung verfügbar, mit der empfohlen wird, mutableStateOf()-Aufrufe zu den entsprechenden spezialisierten Typen für Primitive zu migrieren. Die Lint-ID lautet AutoboxingStateCreation. Bisher war diese Prüfung standardmäßig für alle Projekte aktiviert. Wenn Sie diese Warnung im Editor von Android Studio und in den Lint-Ausgaben Ihres Projekts sehen möchten, ändern Sie den Schweregrad von „Informational“ in „Warnung“ (oder höher), indem Sie warning "AutoboxingStateCreation" in der build.gradle- oder build.gradle.kts-Konfiguration Ihres Moduls wie hier gezeigt (I34f7e) deklarieren:

        android {
            lint {
                warning "AutoboxingStateCreation"
            }
            ...
        }
    

Version 1.5.0-beta03

28. Juni 2023

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

Version 1.5.0-beta02

7. Juni 2023

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

Version 1.5.0-beta01

24. Mai 2023

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

API-Änderungen

  • Implementiere PlatformDataProvider, um die Herzfrequenz und tägliche Schritte anzugeben. Die SensorGateway-Schnittstelle wird aus der öffentlichen API entfernt. (I55b84)

Fehlerkorrekturen

  • Weniger Zuweisungen bei Messungen von Lazy List/grids usw. (Iaf9e2)
  • Weniger Zuweisungen beim Anwenden von Snapshots (I65c09)
  • Zuweisungen aus Frühlingsanimationen entfernt (Ie9431)
  • Zuweisung aus TextLayout entfernt (I0fd11)
  • Mehrere Zuweisungen bei der Zeigergeschwindigkeitsverfolgung entfernt (I26bae)

Version 1.5.0-alpha04

10. Mai 2023

androidx.compose.foundation:foundation:1.5.0-alpha04 und androidx.compose.foundation:foundation-layout:1.5.0-alpha04 werden veröffentlicht. Version 1.5.0-alpha04 enthält diese Commits.

API-Änderungen

  • Optimierter TextStyle.merge(...) mit vollständiger Parameterliste wurde hinzugefügt. (Iad234, b/246961787)
  • Stell einen SnapLayoutInfoProvider vor, der mit LazyGridState verwendet werden kann. (I92134, b/269237141, b/260914964)
  • Für den Elementbereich „Versetzte Raster“ wurde der experimentelle Modus „Modifier.animateItemPlacement()“ hinzugefügt. Sie können sie auf die Elemente anwenden, um die Animationen für die Automatisierung von Positionsänderung/Neuanordnung zu erreichen. (I4b62d, b/257034719)
  • GridCells.FixedSize in „stabile“ hochstufen. FixedSize definiert eine LazyGrid, bei der jede Zelle auf der Querachse exakte Größe annimmt, wobei der verbleibende Raum durch Achsenanordnung verteilt ist. (I8542f)
  • Einführung des Empfängerbereichs PagerScope für Pager und einer Dienstfunktion zur Berechnung eines bestimmten Seitenversatzes. (If2577)
  • Führe die snapPositionalThreshold ein, wenn du ein Snap-Finger-Verhalten erstellst. Verwenden Sie diesen Parameter, um einen Positionsschwellenwert für das kurze Einrasten in Pager anzugeben. (If8f7f)
  • SnapLayoutInfoProvider.calculateSnappingOffsetBounds“ wurde durch „calculateSnappingOffset“ ersetzt. Bei dieser neuen Methode fordern wir einfach den nächsten Offset an, an den wir andocken sollen. Die Berechnung der Grenzen sollte auf Implementierungsebene durchgeführt werden, da dies je nachdem, wie eine Ausrichtung erforderlich ist, variieren kann. (I923a4)
  • LazyStaggeredGrid APIs wurden auf die stabile Version hochgestuft. (I633a5)
  • pageCount aus Horizontal/VerticalPager entfernen. Dies sollte beim Erstellen des Status angegeben werden. Wir haben PagerState und rememberPagerState aktualisiert, um die pageCount zu akzeptieren. (Ieb52d, b/266965072)
  • pageCount aus Horizontal/VerticalPager entfernen. Dies sollte beim Erstellen des Status angegeben werden. Wir haben PagerState und rememberPagerState aktualisiert, um die pageCount zu akzeptieren. (Ifa3cb, b/266965072)
  • Stelle shortSnapVelocityThreshold in „SnapFlingBehavior“ von Pager vor. (I7379e, b/275579012)
  • Fügt FlowRowScope und FlowColumnScope hinzu. (I54fe2)

Fehlerkorrekturen

  • Aufrufe zum Abrufen der Semantik für Text, wenn die Einschränkungen minWidth und minHeight nicht mehr abstürzen. (ibd072)
  • Die Regression wurde behoben, bei der die Tastatur für Textfelder in Dialogfeldern nicht angezeigt wurde, die nicht von der zusammensetzbaren Funktion Dialog erstellt wurden. (I82551, b/262140644)

Version 1.5.0-alpha03

19. April 2023

androidx.compose.foundation:foundation:1.5.0-alpha03 und androidx.compose.foundation:foundation-layout:1.5.0-alpha03 werden veröffentlicht. Version 1.5.0-alpha03 enthält diese Commits.

In dieser Version wird der neue Text-Rendering-Stack für die Funktion "Compose" aktiviert. Der neue Stapel ist leistungsoptimiert und Sie sollten keine sichtbaren Änderungen feststellen.

Wenn du Änderungen am gerenderten Text feststellst, kannst du diesen Fehler beheben, indem du NewTextRendering1_5 = false festlegst, um den Verhaltensunterschied zu bestätigen. Wenn Sie dies festlegen, wird die Neuzusammensetzung erzwungen. Melden Sie alle Verhaltensunterschiede als Fehler.

Das Debug-Flag wird vor dem Release 1.5 beta01 entfernt.(Iada23, b/246960758)

API-Änderungen

  • FlowColumn/FlowRow inline einbinden. (Idab37)

Version 1.5.0-alpha02

5. April 2023

androidx.compose.foundation:foundation:1.5.0-alpha02 und androidx.compose.foundation:foundation-layout:1.5.0-alpha02 werden veröffentlicht. Version 1.5.0-alpha02 enthält diese Commits.

API-Änderungen

  • In LazyGrid werden Zellen mit fester Größe unterstützt und auch deren achsenübergreifende Anordnung möglich. (I83ed9, b/235121277, b/267942510)
  • In LazyStaggeredGrid werden Fahrspuren mit fester Größe und achsenübergreifende Anordnungen jetzt unterstützt. (I7d519)
  • UrlAnnotations in AnnotatedString Sekunden können jetzt über Bedienungshilfen wie TalkBack geöffnet werden. (If4d82, b/253292081)
  • Die Semantikaktion InsertTextAtCursor für Textfelder wurde hinzugefügt. (I11ed5)
  • Textbezogene Testaktionen (z.B. performTextInput) fordern jetzt mithilfe der Semantikaktion direkt den Fokus an, anstatt auf das Feld zu klicken. (I6ed05)
  • Zusätzliche Unterstützung für Achsenabstände bzw. -anordnungen mit verticalArrangement in FlowRow und horizontalArrangement in FlowColumn. Außerdem werden die verticalAlignment und horizontalAlignment der obersten Ebene aus FlowRow/FlowColumn entfernt. Entwickler können stattdessen Modifier.align verwenden. Dadurch wird die Verwechslung zwischen den Namenskonventionen verticalAlignment und verticalArrangement reduziert. (I87b60, b/268365538)

Version 1.5.0-alpha01

22. März 2023

androidx.compose.foundation:foundation:1.5.0-alpha01 und androidx.compose.foundation:foundation-layout:1.5.0-alpha01 werden veröffentlicht. Version 1.5.0-alpha01 enthält diese Commits.

API-Änderungen

  • Text und BasicText wurden zur Verwendung des neuen Modifikatorsystems umgestaltet. Das führt in vielen Fällen zu erheblichen Leistungsverbesserungen. Es sollten keine Änderungen sichtbar sein. (If1d17, b/246961435)
  • Die Semantikaktion PerformImeAction wurde hinzugefügt, um die IME-Aktion auf Texteditorknoten aufzurufen. (Ic606f, b/269633506)

Fehlerkorrekturen

  • Die interne Struktur von Modifier.hoverable wurde aktualisiert. Der hoverable-Modifikator wird nur im Inspector angezeigt, wenn er aktiviert ist. (I82103)

Version 1.4

Version 1.4.3

3. Mai 2023

androidx.compose.foundation:foundation:1.4.3 und androidx.compose.foundation:foundation-layout:1.4.3 werden ohne Änderungen (nur ein Versions-Bump) veröffentlicht.

Version 1.4.2

19. April 2023

androidx.compose.foundation:foundation:1.4.2 und androidx.compose.foundation:foundation-layout:1.4.2 werden veröffentlicht. Version 1.4.2 enthält diese Commits.

Version 1.4.1

5. April 2023

androidx.compose.foundation:foundation:1.4.1 und androidx.compose.foundation:foundation-layout:1.4.1 werden veröffentlicht. Version 1.4.1 enthält diese Commits.

Version 1.4.0

22. März 2023

androidx.compose.foundation:foundation:1.4.0 und androidx.compose.foundation:foundation-layout:1.4.0 werden veröffentlicht. Version 1.4.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.3.0

  • Emoji-Kompatibilität wurde für Text und TextField sowie für den Absatz auf niedrigerer Ebene hinzugefügt. Es ist standardmäßig aktiviert, wenn Emojicompat konfiguriert ist.
  • EmojiCompat kann mit PlatformParagraphStyle für einen bestimmten Text konfiguriert werden.
  • Unterstützung für vollständige Spannweite wurde zu LazyStaggeredGrid(I28252) hinzugefügt.
  • Hinzufügen von experimentellen onHover zu ClickableText (I6938f)
  • Einführung neuer experimenteller Überlastungen für die Funktionen runComposeUiTest und create*ComposeRule, die CoroutineContext-Parameter akzeptieren. Der Kontext wird für die Testzusammensetzung und alle LaunchedEffect- und rememberCoroutineScope()-Aufrufe in der Komposition verwendet. (I10614, b/265177763)
  • FlowRow und FlowColumn sind jetzt als @ExperimentalFoundationApi verfügbar. Dies ermöglicht ein flexibles zeilen- und spaltenbasiertes Layout von Komponenten, bei denen in einer neuen Zeile umgebrochen wird, wenn auf der Hauptachse nicht genügend Platz vorhanden ist. (I3a7b2)
  • Modifier.basicMarquee() ist als experimentelle Funktion für die Anzeige von Inhalten mit einem Laufrahmen-Effekt verfügbar. (I2df44, b/139321650)

Version 1.4.0-rc01

8. März 2023

androidx.compose.foundation:foundation:1.4.0-rc01 und androidx.compose.foundation:foundation-layout:1.4.0-rc01 werden veröffentlicht. Version 1.4.0-rc01 enthält diese Commits.

API-Änderungen

  • Es wurde eine neue Low-Level-PlatformTextInputAdapter API zum Erstellen benutzerdefinierter Texteingabeimplementierungen eingeführt, die direkt mit Plattform-APIs kommunizieren. (I58df4)
  • Unterstützung für das umgekehrte Layout zu LazyStaggeredGrid hinzufügen. (I3ef4a)

Fehlerkorrekturen

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

Version 1.4.0-beta02

22. Februar 2023

androidx.compose.foundation:foundation:1.4.0-beta02 und androidx.compose.foundation:foundation-layout:1.4.0-beta02 werden veröffentlicht. Version 1.4.0-beta02 enthält diese Commits.

API-Änderungen

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

Fehlerkorrekturen

  • Durch Anpassen der Auswahlziehpunkte können keine Teilzeichen mehr ausgewählt werden. (Idedd1)
  • Behebung eines Absturzes bei leerem TextField-Element mit Strg + Rücktaste (I0427f, b/244185537)

Version 1.4.0-beta01

8. Februar 2023

androidx.compose.foundation:foundation:1.4.0-beta01 und androidx.compose.foundation:foundation-layout:1.4.0-beta01 werden veröffentlicht. Version 1.4.0-beta01 enthält diese Commits.

Neue Funktionen

  • Seit Version 1.3 wurde die Emoji-Kompatibilität in Text und TextField sowie in Absatz auf niedrigerer Ebene hinzugefügt. Es ist standardmäßig aktiviert, wenn Emojicompat konfiguriert ist.
  • EmojiCompat kann mit PlatformParagraphStyle für einen bestimmten Text konfiguriert werden.

API-Änderungen

  • Es wurde eine gemeinsame Implementierung der PinnableContainer API hinzugefügt, die in allen LazyLayouts verwendet wird, um Elemente beizubehalten, die nicht zusammengehören, aber weiterhin aktiv sein müssen. (If45a4)
  • PinnableContainer.PinnedHandle.unpin() wurde in release() (I4667a) umbenannt

Externer Beitrag

  • mainAxisItemSpacing-Property zu LazyListLayoutInfo, LazyGridLayoutInfo und LazyStaggeredGridItemInfo hinzugefügt (I52fad)

Version 1.4.0-alpha05

25. Januar 2023

androidx.compose.foundation:foundation:1.4.0-alpha05 und androidx.compose.foundation:foundation-layout:1.4.0-alpha05 werden veröffentlicht. Version 1.4.0-alpha05 enthält diese Commits.

Neue Funktionen

  • Unterstützung für vollständige Spannweite zu LazyStaggeredGrid (I28252) hinzugefügt
  • onHover wird zu ClickableText (I6938f) hinzugefügt
  • Einführung neuer experimenteller Überlastungen für die Funktionen runComposeUiTest und create*ComposeRule, die CoroutineContext-Parameter akzeptieren. Der Kontext wird für die Testzusammensetzung und alle LaunchedEffect- und rememberCoroutineScope()-Aufrufe in der Komposition verwendet. (I10614, b/265177763)

API-Änderungen

  • Führt die Vorher/Nachher-APIs von OverscrollEffect in die kombinierten applyToScroll- und applyToFling-Funktionen von „decorator“ zusammen. In den aktualisierten Beispielen in der Dokumentation finden Sie Beispiele dafür, wie Sie mit der neuen API-Form einen Overscroll-Effekt implementieren können. (I8a9c4, b/255554340)
  • Mehr Typ-/Null-Zulässigkeit von Inline-/Verworfen-hidden-Funktionen (I24f91)
  • LineBreak und Hyphens APIs in TextStyle wurden auf die stabile Version umgestellt. (Ic1e1d)

Fehlerkorrekturen

  • Der Cursor in Textfeldern blinkt jetzt auch dann weiter, wenn Animationen deaktiviert sind. (I95e70, b/265177763)
  • Modifier.basicMarquee wird jetzt auch dann animiert, wenn Animationen in den Systemeinstellungen deaktiviert sind. (I23389, b/262298306, b/265177763)

Externer Beitrag

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

Version 1.4.0-alpha04

11. Januar 2023

androidx.compose.foundation:foundation:1.4.0-alpha04 und androidx.compose.foundation:foundation-layout:1.4.0-alpha04 werden veröffentlicht. Version 1.4.0-alpha04 enthält diese Commits.

Neue Funktionen

  • FlowRow und FlowColumn sind jetzt als @ExperimentalFoundationApi verfügbar. Dies ermöglicht ein flexibles zeilen- und spaltenbasiertes Layout von Komponenten, bei denen in einer neuen Zeile umgebrochen wird, wenn auf der Hauptachse nicht genügend Platz vorhanden ist. (I3a7b2)
  • Modifier.basicMarquee() steht als experimentelle Funktion zur Anzeige von Inhalten mit einem Laufrahmen-Effekt zur Verfügung. (I2df44, b/139321650)

API-Änderungen

  • FocusRequesterModifier wurde zugunsten von FocusRequesterNode verworfen (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, 251529934, 25175{/1819, 2515}, 254529934, 254529934
  • Der AndroidFont-Konstruktor mit variationSettings ist jetzt eine stabile API und kann zum Erstellen neuer Arten von Schriftdeskriptoren verwendet werden. (I5adcc, b/261565807)
  • Einführung der PinnableContainer API, die durch Lazy-Listen über eine lokale Kompositionslösung weitergegeben wird, mit der aktuelle Elemente angepinnt werden können. Das bedeutet, dass solche Elemente nicht entfernt werden, wenn sie aus der Ansicht weggescrollt werden. Wenn Sie zum Beispiel Modifier.focusable() auswählen, wird das aktuell fokussierte Element über diese Methode angepinnt. (Ib8881, b/259274257, b/195049010)
  • Die Art und Weise, wie Scrollables auf bringIntoViewRequesters und fokussierbare Elemente reagieren, wurde geändert, um die Komplexität dieser Vorgänge besser zu modellieren und mehr Grenzfälle zu bewältigen. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114)
  • Mehr Rückgabemöglichkeit für nicht unterstützte Funktionen, die nicht mehr unterstützt werden (Ibf7b0)
  • TextStyle wurde ein experimentelles TextMotion hinzugefügt, um den Text entweder als Static(default) oder als animiert zu definieren. Verwende TextMotion.Animated, wenn Text skaliert, übersetzt oder gedreht werden soll. (I24dd7)
  • Füge TextFieldFocusModifier hinzu, um das Navigationsverhalten für die Android-Plattform zu korrigieren (I00303)
  • Das Argument maxSize: IntSize in drawText wurde durch size: Size ersetzt, damit es inline mit anderen DrawScope-Funktionen ist. size ist standardmäßig auf Size.Unspecified gesetzt, wodurch das vorherige Standardverhalten nicht geändert werden sollte. Icd27d

Fehlerkorrekturen

  • Das Andocken der Funktion „SnapFlingBehaviour“ wurde angepasst, um ein natürlicheres Bild zu erzeugen.

Bekanntes Problem

  • Beim Aktualisieren von androidx.compose.foundation:1.4.0-alpha03 auf androidx.compose.foundation:1.4.0-alpha04 kann ein java.lang.NoSuchFieldError-Fehler auftreten. Hier finden Sie die Seite, in der das Problem ursprünglich gemeldet wurde. Eine Fehlerkorrektur wurde gesendet. Sie ist mit dem nächsten Update der Funktion „Compose“ verfügbar. Aktualisieren Sie zur Problemumgehung die androidx.compose.material- und androidx.compose.material3-Bibliotheken auf die neueste Version(1.1.0-alpha04) oder führen Sie ein Downgrade von androidx.compose.foundation auf 1.4.0-alpha03 aus.

Version 1.4.0-alpha03

7. Dezember 2022

androidx.compose.foundation:foundation:1.4.0-alpha03 und androidx.compose.foundation:foundation-layout:1.4.0-alpha03 werden veröffentlicht. Version 1.4.0-alpha03 enthält diese Commits.

API-Änderungen

  • Bei UI-Tests, die eine Erstellungsregel verwenden, werden Fortsetzungen während withFrameNanos-Callbacks erst dann weitergeleitet, wenn alle Frame-Callbacks ausgeführt wurden. Dies entspricht dem Verhalten von „Compose“ bei normaler Ausführung. Tests, die auf dem alten Verhalten basieren, können jedoch fehlschlagen. Dies sollte sich nur auf Code auswirken, der withFrameNanos oder withFrameMillis direkt aufruft und bei dem die Logik außerhalb des Callbacks an die Funktionen übergeben wird, die innerhalb der Callbacks verschoben werden müssen. Informationen zu den Änderungen am Animationstest finden Sie in dieser Änderungsliste.
  • Dem TestMonotonicFrameClock-Konstruktor und der Werksfunktion wurde ein optionaler onPerformTraversals: (Long) -> Unit-Parameter hinzugefügt, um Code nach withFrameNanos-Callbacks auszuführen, aber bevor die Koroutinen der Aufrufer fortgesetzt werden. (Idb413, b/254115946, b/222093277, b/255802670)
  • Leite die Aktionen für Bedienungshilfen für Seiten ein: PageUp, PageDown, PageLeft, PageRight. Diese sind nur ab API 29 verfügbar. (Ida4ab)
  • Stell HorizontalPager und VerticalPager vor, um zusammensetzbare Funktionen auf Pager-Art darzustellen. PagerState wurde eingeführt, um die Pager zu steuern und Informationen zum aktuellen Status des Pagers abzufragen. PageSize wurde eingeführt, eine Möglichkeit, die Größe einer Pager-Seite zu steuern. Damit kann ein Karussell wie Pager erstellt werden. PagerSnapDistance wurde eingeführt, mit der Sie steuern können, wie das Andocken beim Fling-Verhalten von Pager funktioniert. (I01120)
  • In SnapFlingBehavior.performFling wurde eine Überlastung eingeführt, um besser zu verstehen, wo sich die Schleudergewöhnung beruhigt. (I569f6)
  • OverscrollEffect#isEnabled wurde entfernt. Sie müssen sich dieses Flag nicht merken und festlegen, sondern es dürfen in Fällen, in denen das Overscroll-Effekt nicht angezeigt werden soll, keine Ereignisse für den Overscroll-Effekt ausgelöst werden (z. B. wenn für ScrollableState#canScrollForward/backward beide „false“ zurückgegeben werden). (I1a4b0, b/255554340, b/255557085)
  • ScrollableState#canScrollForward und ScrollableState#canScrollBackward wurden hinzugefügt, um abzufragen, ob bei einem ScrollableState-Element ausreichend Platz für das Scrollen in beide Richtungen besteht. Die Standardeinstellung ist „true“ für die Abwärtskompatibilität mit vorhandenen Implementierungen von ScrollableState. Nutzer können so darauf hinweisen, dass noch Platz zum Scrollen vorhanden ist. Außerdem lässt sich so vermeiden, dass Deltas an ScrollableStates gesendet werden, die keinen Platz zum Scrollen in eine bestimmte Richtung haben, um unnötigen Aufwand zu reduzieren. (Idf1a0, b/255557085)
  • Es wurde eine Modifier API hinzugefügt, um Scrollinformationen zu Ancestors abzufragen. (I2ba9d, b/203141462)
  • Wird in Clickable verwendet, um Interaktionen beim Drücken korrekt zu verzögern, wenn Touch-Gesten zu Scroll-Ereignissen werden können.
  • Es wurde behoben, dass Clickables die Wellen nicht korrekt verzögert, wenn sie innerhalb eines Scrollable ViewGroup verwendet wurde.
  • Schubladen und Tabellen wurden aktualisiert, um das Drücken korrekt zu verzögern, falls Touch-Gesten zu Scroll-Ereignissen werden können.
  • Passen Sie die snapStepSize-Benennung so an, dass sie anderen Methoden in SnapLayoutInfoProvider entspricht. (Ife67c)
  • EmojiCompat zu Compose hinzugefügt (Ibf6f9, b/139326806)
  • consumedWindowInsets() wurde in consumeWindowInsets() und withConsumedWindowInsets() in onConsumedWindowInsetsChanged() umbenannt und die Modifikatoren wurden öffentlich gemacht. (Ie44e1)

Fehlerkorrekturen

  • Der Absturz mit Modifier.animateItemPlacement() und Lazy Grids wurde behoben. Dies trat unter bestimmten Bedingungen auf, wenn die Anzahl der neuen Elemente kleiner war als die vorherige. (I0bcac, b/253195989)

Version 1.4.0-alpha02

9. November 2022

androidx.compose.foundation:foundation:1.4.0-alpha02 und androidx.compose.foundation:foundation-layout:1.4.0-alpha02 werden veröffentlicht. Version 1.4.0-alpha02 enthält diese Commits.

API-Änderungen

  • awaitFirstDown und waitForUpOrCancellation akzeptieren jetzt eine PointerEventPass, um noch flexibler zu sein. (I7579a, b/212091796)
  • beyondBoundCount API von Lazy* APIs (I12197) zurücksetzen
  • Parameter in Lazy APIs eingeführt, um Elemente außerhalb des Darstellungsbereichs zu erstellen und zu platzieren (I69e89, b/172029355)
  • Der Parameter minLines wurde zu BasicText und BasicTextField hinzugefügt. Sie können damit die Mindesthöhe dieser zusammensetzbaren Funktionen in Bezug auf die Anzahl der Zeilen festlegen (I24294, b/122476634).

Version 1.4.0-alpha01

24. Oktober 2022

androidx.compose.foundation:foundation:1.4.0-alpha01 und androidx.compose.foundation:foundation-layout:1.4.0-alpha01 werden veröffentlicht. Version 1.4.0-alpha01 enthält diese Commits.

API-Änderungen

  • Die neue Methode awaitEachGesture() für Gestendetektoren wurde hinzugefügt. Sie funktioniert ähnlich wie forEachGesture(), aber die Loop-over-Touch-Gesten funktionieren vollständig innerhalb des AwaitPointerEventScope, sodass Ereignisse zwischen den Iterationen nicht verloren gehen können.
  • forEachGesture() wurde zugunsten von awaitEachGesture() eingestellt, da hiermit Ereignisse zwischen Touch-Gesten verloren gehen können. (Iffc3f, b/251260206)
  • WindowInsets.imeAnimationSource und WindowInsets.imeAnimationTarget wurden hinzugefügt, um den Fortschritt der Animation zu bestimmen und zu wissen, wo sich der IME nach Abschluss der Animation befindet. (I356f1, b/217770337)

Version 1.3

Version 1.3.1

9. November 2022

androidx.compose.foundation:foundation:1.3.1 und androidx.compose.foundation:foundation-layout:1.3.1 werden veröffentlicht. Version 1.3.1 enthält diese Commits.

Fehlerkorrekturen

  • Leistungsprobleme in BeyondBoundsLayout (aosp/2255266) beheben
  • ContentInViewModifier liest Layoutkoordinaten nur dann, wenn es angehängt ist (aosp/2241316).

Version 1.3.0

24. Oktober 2022

androidx.compose.foundation:foundation:1.3.0 und androidx.compose.foundation:foundation-layout:1.3.0 werden veröffentlicht. Version 1.3.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.2.0

  • Es wurden experimentelle Versionen von LazyVerticalStaggeredGrid und LazyHorizontalStaggeredGrid eingeführt.
  • SnapFlingBehavior, rememberSnapFlingBehavior und weitere zugehörige APIs wurden als experimentell hinzugefügt.
  • Modifier.clickable, Modifier.toggleable und Modifier.selectable zeigen jetzt Wellen an, wenn sie mit der Tastatur oder dem Steuerkreuz einer Fernbedienung angeklickt werden.

Version 1.3.0-rc01

5. Oktober 2022

androidx.compose.foundation:foundation:1.3.0-rc01 und androidx.compose.foundation:foundation-layout:1.3.0-rc01 werden veröffentlicht. Version 1.3.0-rc01 enthält diese Commits.

API-Änderungen

  • Für den Ansatzschritt wurde lowVelocityAnimationSpec eingeführt, wenn nicht genügend Schleppgeschwindigkeit zum Zerfall vorhanden ist. (Iaeb27)
  • Es wurden neue experimentelle API-Bindestriche hinzugefügt, um die automatische Bindestriche im Text zu unterstützen (Iaa869).

Version 1.3.0-beta03

21. September 2022

androidx.compose.foundation:foundation:1.3.0-beta03 und androidx.compose.foundation:foundation-layout:1.3.0-beta03 werden veröffentlicht. Version 1.3.0-beta03 enthält diese Commits.

API-Änderungen

  • Fügen Sie Optionen zum Anpassen von Zeilenumbrüchen im Text hinzu. (I86907)
  • BringIntoViewResponder können jetzt die aktuellen Grenzen einer Anfrage abrufen, während sie verarbeitet werden. (If86a5, b/241591211)
  • Einführung der Unterstützung für Abstände zwischen Elementen in der experimentellen Version von Staggered Grid (I10b82)
  • Einführung von Innenabstände zwischen Inhalten in experimentellen Staggered Grid (I342ea)
  • Das Argument size:IntSize mit constraints: Constraints in der Methode TextMeasurer.measure wurde geändert, um Einschränkungen für die Mindestbreite zu unterstützen. (I37530, b/242707525)
  • Modifier.withConsumedWindowInsets() wurde hinzugefügt, um WindowInsets für die Nutzung außerhalb von windowInsetsPadding verbraucht zu werden.
  • MutableWindowInsets wurde hinzugefügt, um WindowInsets ohne Neuzusammensetzung ändern zu können. (I7fd28, b/237019262, b/243119659)

Version 1.3.0-beta02

7. September 2022

androidx.compose.foundation:foundation:1.3.0-beta02 und androidx.compose.foundation:foundation-layout:1.3.0-beta02 werden veröffentlicht. Version 1.3.0-beta02 enthält diese Commits.

API-Änderungen

  • Anfängliche Version der experimentellen Version von StaggeredGrid (Ia48be)
  • FocusDirection.In und FocusDirection.Out wurden in FocusDirection.Enter und FocusDirection.Exit umbenannt (Ia4262, b/183746982)
  • Eine rememberSnapFlingBehavior-Überlastung wurde eingeführt, um das Andocken in LazyLists schnell zu aktivieren. (Ifb48a)
  • Die snapFlingBehavior-Fabrik wurde durch eine Betonklasse SnapFlingBehavior ersetzt. Es wurden SnapLayoutInfoProvider-Methoden auf Dichte festgelegt, um dp<->Px-Conversions für die API-Nutzer einfacher zu gestalten. (I54a11)
  • Aktualisieren Sie LazyLayoutMeasureScope.measure, um eine Liste der platzierbaren Werte zurückzugeben. Dabei wird die gewünschte Unveränderlichkeit des zurückgegebenen Werts hervorgehoben. (I48b7c)
  • SnapLayoutInfoProvider wurde eingeführt, das ein LazyListState benötigt, um eine Instanz von SnapLayoutInfoProvider zu erstellen, mit der ein Snap-FlingBehavior für LazyLists aktiviert werden kann. (I2dd10)

Fehlerkorrekturen

  • Refaktoriert AwaitPointerEventScope#awaitLongPressOrCancellation entsprechend anderen „await“-Funktionen (I646e6)

Version 1.3.0-beta01

24. August 2022

androidx.compose.foundation:foundation:1.3.0-beta01 und androidx.compose.foundation:foundation-layout:1.3.0-beta01 werden veröffentlicht. Version 1.3.0-beta01 enthält diese Commits.

API-Änderungen

  • pointerPosition wurde aus OverscrollEffect entfernt: Effekte, die die Zeigerposition betreffen, können stattdessen Modifier.pointerInput { } in effectModifier verwenden, um die aktuelle Zeigerposition abzurufen. (I9f606, b/241239306)
  • AwaitPointerEventScope#awaitLongPressOrCancellation als zusätzlicher Baustein für eine komplexere Bewegungserkennung sichtbar (I04374, b/181577176)
  • lazyListSnapLayoutInfoProvider wurde eingeführt, um das Andocken in Lazy-Listen zu ermöglichen. (I3ecdf)
  • SnapFlingBehavior wurde eingeführt, ein FLing-Verhalten, das das Anordnen von Listen ermöglicht. Geben Sie eine Instanz von SnapLayoutInfoProvider mit Informationen zu Ihrem Andock-Layout an. (Ie754c)

Version 1.3.0-alpha03

10. August 2022

androidx.compose.foundation:foundation:1.3.0-alpha03 und androidx.compose.foundation:foundation-layout:1.3.0-alpha03 werden veröffentlicht. Version 1.3.0-alpha03 enthält diese Commits.

API-Änderungen

  • Resource Fonts unterstützt jetzt das Festlegen von Einstellungen für Schriftartvariationen (API 26 und höher). (I900dd, b/143703328)
  • Unterstützung variabler Schriftarten in DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • Experimentelle Annotation wurde aus PlatformTextStyle und LineHeightStyle entfernt. (I64bef)
  • Textfelder geben jetzt detailliertere Ausnahmen aus, wenn das von einem VisualTransformation bereitgestellte OffsetMapping ungültige Indexe zurückgibt. (Ie73f9, b/229378536)
  • Experimentelle APIs einführen, um die Elementanbieterlogik für Lazy-Layouts gemeinsam zu nutzen (Ic891c)
  • ScrollableDefaults.reverseDirection() ist keine experimentelle Funktion mehr. (Iba646)
  • SemanticsModifier.id wurde verworfen und die Semantik-ID wurde nach LayoutInfo.semanticsId verschoben. (Iac808, b/203559524)
  • checkScrollableContainerConstraints() ist keine experimentelle Funktion mehr. (I2c290)
  • Modifier.clipScrollableContainer() ist keine experimentelle Funktion mehr. (Ia2b44)
  • TextInputService.show|hideSoftwareKeyboard wird eingestellt. Verwenden Sie stattdessen SoftwareKeyboardController im App-Code und TextInputSession im IME-Verwaltungscode. (I14e4c, b/183448615)

Version 1.3.0-alpha02

27. Juli 2022

androidx.compose.foundation:foundation:1.3.0-alpha02 und androidx.compose.foundation:foundation-layout:1.3.0-alpha02 werden veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.

API-Änderungen

  • Es wurde eine drawText-Erweiterungsfunktion für DrawScope hinzugefügt, die eine Möglichkeit bietet, Text mit mehreren Stilen auf zusammensetzbaren Funktionen und Modifikatoren zu zeichnen, die auf DrawScope wie Canvas und drawBehind angewendet werden. (I16a62, b/190787898)

Fehlerkorrekturen

  • Die Option „Softtastatur“ wird jetzt ausgeblendet, wenn ein Textfeld im Fokus deaktiviert ist. (I6e3e4, b/237308379)
  • Beim Hinzufügen von InputEventChange-Ereignissen zu Velocity Tracker werden jetzt Deltas anstelle von Positionen berücksichtigt. Dadurch wird sichergestellt, dass die Geschwindigkeit für alle Fälle korrekt berechnet wird, auch wenn sich das Zielelement bewegt (Icea9d, b/216582726, b/223440806, b/227709803).
  • Wenn ein scrollbares untergeordnetes Element im Fokus ist, scrollt es jetzt korrekt, sodass das untergeordnete Element im Fokus jetzt bleibt, wenn seine Größe verringert wird, auch wenn die Größe animiert ist. (I80867, b/230756508, b/220119990)
  • Ein Absturz wurde behoben, bei dem TextField gelöscht und wieder aufgefüllt wurde, während die Auswahl aktiv war. (I1235b, b/208655565, b/214253689)

Version 1.3.0-alpha01

29. Juni 2022

androidx.compose.foundation:foundation:1.3.0-alpha01 und androidx.compose.foundation:foundation-layout:1.3.0-alpha01 werden veröffentlicht. Version 1.3.0-alpha01 enthält diese Commits.

API-Änderungen

  • Der Annotationstyp UrlAnnotation und die zugehörigen Methoden wurden eingeführt, um die Unterstützung von TalkBack-Links in AnnotatedStrings zu unterstützen. (I1c754, b/231495122)

Fehlerkorrekturen

  • BasicTextField cursorBrush darf jetzt animiert werden, ohne dass der Cursor-Timer neu gestartet wird. (I812e6, b/236383522)

Version 1.2

Version 1.2.1

10. August 2022

androidx.compose.foundation:foundation:1.2.1 und androidx.compose.foundation:foundation-layout:1.2.1 werden veröffentlicht. Version 1.2.1 enthält diese Commits.

Version 1.2.0

27. Juli 2022

androidx.compose.foundation:foundation:1.2.0 und androidx.compose.foundation:foundation-layout:1.2.0 werden veröffentlicht. Version 1.2.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.1.0

  • LazyVerticalGrid und LazyHorizontalGrid sind jetzt stabil.
  • Sie können jetzt einen Inhaltstyp für Elemente in Lazy-Listen und -Rastern angeben. Auf diese Weise können die Komponenten Elemente effizienter wiederverwenden.
  • Verzögerte Listen und Raster haben jetzt den Parameter userScrollEnabled, mit dem das Scrollen über Nutzergesten deaktiviert werden kann.
  • Eine neue experimentelle API mit dem Namen LazyLayout wurde hinzugefügt. Es ist die API, die wir intern für Lazy-Listen und -Raster verwenden.
  • Die OverscrollEffect API wurde in der Testphase eingeführt. Sie können benutzerdefinierte Overscroll-Effekte definieren und benutzerdefinierten scrollbaren Containern einen Standard-Plattform-1 hinzufügen.
  • Verschachtelte Scroll-Interoperabilitäts-APIs wurden eingeführt, um die Interoperabilität zwischen Ansichten zu ermöglichen und Scroll-Akteure zu erstellen.
  • Allen Scroll-Containern wurde das Scrollen per Maus und Touchpad hinzugefügt.

Version 1.2.0-rc03

29. Juni 2022

androidx.compose.foundation:foundation:1.2.0-rc03 und androidx.compose.foundation:foundation-layout:1.2.0-rc03 werden veröffentlicht. Version 1.2.0-rc03 enthält diese Commits.

  • Keine Änderungen seit 1.2.0-rc02.

Version 1.2.0-rc02

22. Juni 2022

androidx.compose.foundation:foundation:1.2.0-rc02 und androidx.compose.foundation:foundation-layout:1.2.0-rc02 werden veröffentlicht. Version 1.2.0-rc02 enthält diese Commits.

Version 1.2.0-rc01

15. Juni 2022

androidx.compose.foundation:foundation:1.2.0-rc01 und androidx.compose.foundation:foundation-layout:1.2.0-rc01 werden veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.

API-Änderungen

  • Es wurde ein experimenteller OverscrollEffect eingeführt, der neben den Modifier.scrollable-Überlastungen, die diese zulassen, benutzerdefinierte Overscroll-Effekte ermöglicht.
  • Das experimentelle LocalOverScrollConfiguration wurde von foundation.gesture in das Foundation-Paket verschoben und in LocalOverscrollConfiguration umbenannt (If19fb, b/204650733).
  • Schnittstellen in compose-Bibliotheken werden jetzt mit den jdk8-Standardschnittstellenmethoden (I5bcf1) erstellt.
  • Es wurde eine experimentelle API (checkScrollableContainerConstraints()) eingeführt, mit der geprüft werden kann, ob scrollbare Container nicht verschachtelt werden. Du kannst es verwenden, wenn du über LazyLayout eigene scrollbare Lazy-Layouts erstellst. (Id6fab, b/233352497)
  • Die eingestellte LazyVerticalGrid wurde aus dem Paket androidx.compose.foundation.lazy entfernt. Die neue stabile API befindet sich in androidx.compose.foundation.lazy.grid (I73c76, b/225192009).

Version 1.2.0-beta03

1. Juni 2022

androidx.compose.foundation:foundation:1.2.0-beta03 und androidx.compose.foundation:foundation-layout:1.2.0-beta03 werden veröffentlicht. Version 1.2.0-beta03 enthält diese Commits.

API-Änderungen

  • Neue experimentelle IntervalList und MutableIntervalList wurden hinzugefügt. Sie ermöglicht es, eine Liste von Werten über mehrere Intervalle darzustellen. Dies ist nützlich, wenn Sie Ihr eigenes DSL-Objekt definieren möchten, ähnlich dem, das von LazyColumn verwendet wird. Hier können Listenelemente über mehrere Elemente/Elemente definiert werden. (I2d05e, b/228580728)

Fehlerkorrekturen

  • Die Dokumentation für WindowInsets.ime wurde klarer formuliert, um zu verdeutlichen, dass ime-Einsätze bis API 23 zurückgemeldet sind, aber nur ab 30 animiert werden. (Ia7fc0, b/230756508)
  • Das Drücken der Vorwärts-Löschtaste, wenn sich der Cursor am Ende eines Textfelds befindet, stürzt nicht mehr ab.
  • Die Konstruktorargumente von DeleteSurroundingTextCommand und DeleteSurroundingTextInCodePointsCommand dürfen jetzt nicht negativ sein. (Ica8e6, b/199919707)

Version 1.2.0-beta02

18. Mai 2022

androidx.compose.foundation:foundation:1.2.0-beta02 und androidx.compose.foundation:foundation-layout:1.2.0-beta02 werden veröffentlicht. Version 1.2.0-beta02 enthält diese Commits.

  • Die Auflösung von herunterladbaren Schriftarten, durch die die Layoutgröße von „Text“ oder „TextField“ nicht geändert wird, wurde zuvor nicht neu gezeichnet, sodass die Schrift veraltet ist. Durch diesen Fehler wird sichergestellt, dass das Textlayout immer eine Neuzeichnung auslöst (b/229727404). (I1d49e, b/229727404)

Version 1.2.0-beta01

11. Mai 2022

androidx.compose.foundation:foundation:1.2.0-beta01 und androidx.compose.foundation:foundation-layout:1.2.0-beta01 werden veröffentlicht. Version 1.2.0-beta01 enthält diese Commits.

Neue Funktionen

  • Dies ist die erste Betaversion von 1.2.

API-Änderungen

  • Es wurde eine experimentelle BeyondBoundsInterval hinzugefügt, die von benutzerdefinierten Implementierungen von LazyList verwendet werden kann, wenn sie Elemente über die sichtbaren Grenzen hinaus anordnen (Ifabfb, b/184670295).
  • LineHeightBehavior wird in LineHeightStyle umbenannt.
  • LineVerticalAlignment wird in LineHeightStyle.Alignment umbenannt.
  • Umbenennung von LineHeightTrim wird in LineHeightStyle.Trim umbenannt
  • Die Standardkonstruktorwerte aus LineHeightStyle werden entfernt (I582bf, b/181155707).
  • Standardwerte für die optionalen Mitglieder der LazyLayoutItemProvider-Schnittstelle wurden hinzugefügt. (Iba8a0)
  • In der LazyLayoutItemProvider-API gibt es anstelle einer Factory, die die zusammensetzbare Lambda-Funktion nach Index zurückgibt, eine einfachere zusammensetzbare Funktion, die den Index akzeptiert. (Id2196)
  • LazyLayoutItemsProvider wurde in LazyLayoutItemProvider (I0638c) umbenannt
  • LazyLayoutItemsProvider.itemsCount wurde in itemCount (Id409c) umbenannt
  • Für TextStyle und SpanStyle wurde der Pinsel hinzugefügt, um Text mit Farbverlauf zu zeichnen. (I53869, b/187839528)
  • Die Attribute trimFirstLineTop und trimLastLineBottom von LineHeightBehavior wurden in eine einzelne Aufzählung geändert: LineHeightTrim. LineHeightTrim haben Werte für vier Zustände, die durch zwei boolesche Werte definiert sind: FirstLineTop, LastLineBottom, Beide und Keine (Ifc6a5, b/181155707)
  • LineHeightBehavior wurde den TextStyle- und ParagraphStyle. LineHeightBehavior-Steuerelementen hinzugefügt, um festzulegen, ob die Zeilenhöhe oben und unten in der letzten Zeile angewendet wird. Außerdem definiert sie die Ausrichtung der Linie in dem von TextStyle(lineHeight) angegebenen Bereich.

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

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

  • Es wurde ein experimenteller imeNestedScroll()-Modifikator hinzugefügt, damit Entwickler den IME durch Scrollen steuern können. (I60759)

Fehlerkorrekturen

  • Die Regression wurde behoben, bei der Textfelder die Tastatur nicht ausblenden konnten, wenn sie im Fokus aus der Komposition entfernt wurden. (I7a410, b/230536793, b/225541817)
  • Auslassungspunkte werden unterstützt, wenn die Höhe begrenzt ist und nicht in alle Textzeilen passt (Ie528c, b/168720622)
  • BringIntoViewRequester.bringIntoView wird jetzt immer angehalten, bis die Anfrage entweder abgeschlossen ist oder durch eine neuere, sich nicht überschneidende Anfrage unterbrochen wurde. Sich überschneidende Anfragen werden in die Warteschlange gestellt. (I43e7f, b/216790855)
  • Gleichzeitige BringIntoViewRequester.bringIntoView-Aufrufe für vollständig überlappende Rechtecke berücksichtigen jetzt nur die Anfrage des größeren Rechtecks. (I34be7, b/216790855, b/184760918)
  • includeFontPadding ist standardmäßig aktiviert. Sie können das includeFontPadding-Objekt mit dem Attribut TextStyle.platformTextStyle deaktivieren. Demnächst werden wir das Standardverhalten ändern. Bis dahin können wir Verbesserungen der Zeilenhöhe (aosp/2058653) jedoch besser einbinden und Probleme mit TextField-Clippings beheben. (I01423, b/171394808)
  • Modifier.bringIntoViewRequester verwendet onGloballyPositioned nicht mehr. (I630f5)

Externer Beitrag

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

Version 1.2.0-alpha08

20. April 2022

androidx.compose.foundation:foundation:1.2.0-alpha08 und androidx.compose.foundation:foundation-layout:1.2.0-alpha08 werden veröffentlicht. Version 1.2.0-alpha08 enthält diese Commits.

API-Änderungen

  • Bei Verwendung von FontFamily.SansSerif werden alle verfügbaren Schriftstärken für Systemschriftarten unter Android angezeigt. Dadurch werden Fallback-Schriftarten wie Sans-Serif-Medium intern in API 21–28 verwendet. Dies ist eine Verhaltensänderung, da bisher nur die Gewichtungen 400 und 700 in den APIs 21–28 unterstützt wurden. (I380fe, b/156048036, b/226441992)
  • „Absatz“ und „MultiParagraph“ akzeptieren jetzt den Parameter „Constraints“. Das Übergeben von Constraints.maxHeight ist derzeit ein Leerbefehl, ermöglicht aber in Zukunft eine Berechnung, z. B. die Auslassung basierend auf der Höhe. (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() akzeptiert jetzt eine benutzerdefinierte MutableSet-ähnliche Klasse, in die keine neuen Elemente hinzugefügt werden können. Icd314
  • Der teilweise Verbrauch (Position unten ODER unten) wurde in PointerInputChange eingestellt. Mit consume() können Sie die Änderung vollständig übernehmen. Mit isConsumed können Sie feststellen, ob eine andere Person die Änderung bereits übernommen hat.
  • PointerInputChange::copy() erstellt jetzt immer eine oberflächliche Kopie. Das bedeutet, dass Kopien von PointerInputChange verbraucht sind, sobald eine der Kopien verbraucht ist. Wenn Sie ein ungebundenes PointerInputChange erstellen möchten, verwenden Sie stattdessen den Konstruktor. (Ie6be4, b/225669674)
  • Es wird eine neue experimentelle LazyLayout API eingeführt. So können Sie eigene Komponenten wie LazyColumn von LazyVerticalGrid erstellen. Die API befindet sich noch in der Anfangsphase und kann in zukünftigen Versionen geändert werden. (Iba2bc, b/166591700)
  • AndroidFont verwendet jetzt typefaceLoader als Konstruktorparameter. (I2c971)
  • WindowInsets-Companions zeigt jetzt die Sichtbarkeit (unabhängig davon, ob sie auf dem Bildschirm angezeigt werden, unabhängig davon, ob sie sich mit dem Fenster schneiden) und die mögliche Größe an, wenn sie auf dem Gerät verfügbar, aber derzeit nicht aktiv sind. (I65182, b/217770337)

Version 1.2.0-alpha07

6. April 2022

androidx.compose.foundation:foundation:1.2.0-alpha07 und androidx.compose.foundation:foundation-layout:1.2.0-alpha07 werden veröffentlicht. Version 1.2.0-alpha07 enthält diese Commits.

API-Änderungen

  • Eine PinnableParent API wurde hinzugefügt, mit der untergeordnete Elemente von Lazy-Layouts nicht entsorgt werden können (Ibbdd0, b/184670295).
  • LazyListLayoutInfo und LazyGridLayoutInfo haben jetzt die Felder beforeContentPadding und afterContentPadding (I3b628, b/200920410).
  • KeyboardType.Decimal wurde als Alternative zu Keyboard.Number hinzugefügt, um das Dezimaltrennzeichen in IME speziell einzubeziehen. (Iec4c8, b/209835363)
  • Fügen Sie den neuen Schriftartdeskriptor „Font(DeviceFontFamilyName)“ hinzu, um vom System installierte Schriftarten während Schriftart-Fallback-Ketten optional nachzuschlagen. (I30468, b/219754572)
  • PointerEventType.Scroll und PointerEvent.scrollDelta sind jetzt stabile APIs (I574c5, b/225669674)
  • Die hinzugefügte temporäre Kompatibilitätskonfiguration für includeFontPadding in TextStyle/ParagraphStyle. includeFontPadding kann über TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)) geändert werden. Dies ist eine temporäre Konfigurationsoption zur Aktivierung der Migration. Sie wird entfernt. (If47be, b/171394808)
  • FontFamily.Resolver wurde aktualisiert, um die systemweite Einstellung für Fett-Text-Bedienungshilfen zu integrieren (I6c1e7).
  • Mit der consumeWindowInsets-Erweiterungseigenschaft von ComposeView können Entwickler die Nutzung von Android-WindowInsets deaktivieren. Dadurch können separate ComposeViews in der Hierarchie jeweils WindowInsets anwenden, ohne sich gegenseitig zu stören. (I0ef08, b/220943142)

Version 1.2.0-alpha06

23. März 2022

androidx.compose.foundation:foundation:1.2.0-alpha06 und androidx.compose.foundation:foundation-layout:1.2.0-alpha06 werden veröffentlicht. Version 1.2.0-alpha06 enthält diese Commits.

API-Änderungen

  • Die Semantikaktion RequestFocus wurde hinzugefügt, um den Fokus auf das fokussierbare Ziel anzufordern. (I17b71)
  • FocusOrder wurde mit FocusProperties zusammengeführt und focusProperties() verfügt jetzt über alle Funktionen von focusOrder(). FocusOrder und focusOrder() wurden verworfen. focusOrder(), das focusRequester akzeptiert, sollte durch einen focusRequester()-Modifikator in Kombination mit focusProperties() ersetzt werden. Dies ermöglicht eine stärkere Trennung von Belangen durch die Modifikatoren. (I601b7)
  • WindowInsets.asPaddingValues(Density) wurde hinzugefügt, damit Entwickler die Konvertierung vornehmen können, ohne in der Zusammensetzung sein zu müssen. (I94c35)
  • Das Parsen von Vektor-Drawables wurde aktualisiert, um die automatische Spiegelung zu unterstützen, um den Inhalt eines VectorPainter umzudrehen, wenn die aktuelle Layoutrichtung RTL ist. (I79cd9, b/185760237)

Fehlerkorrekturen

  • Mit den Scroll-Modifikatoren (Modifier.verticalScroll(), Modifier.horizontalScroll() und Modifier.scrollable()) scrollen Sie jetzt, damit die fokussierte zusammensetzbare Funktion sichtbar bleibt, auch wenn die Größe des Scrollbereichs geändert wird und die fokussierte zusammensetzbare Funktion zuvor sichtbar war.
  • Textfelder werden jetzt über der Tastatur angezeigt, wenn sie fokussiert sind und die Tastatur eingeblendet wird, wenn sich das Feld in einem nicht Lazy Scrolling aufrufbaren Bereich und im Soft Input-Modus auf ADJUST_RESIZE befindet. (I4a485, b/190539358, b/192043120, b/216842427)

Version 1.2.0-alpha05

9. März 2022

androidx.compose.foundation:foundation:1.2.0-alpha05 und androidx.compose.foundation:foundation-layout:1.2.0-alpha05 werden veröffentlicht. Version 1.2.0-alpha05 enthält diese Commits.

API-Änderungen

  • LazyVerticalGrid und LazyHorizontalGrid sind jetzt stabil. (I307c0)
  • LazyGridItemInfo.Unknown wurde durch separate LazyGridItemInfo.UnknownRow und LazyGridItemInfo.UnknownColumn ersetzt (I56d51)
  • LazyVerticalGrid/LazyHorizontalGrid und alle zugehörigen APIs wurden in das Teilpaket .grid verschoben. Bitte aktualisieren Sie Ihre Importe von androidx.compose.foundation.lazy in androidx.compose.foundation.lazy.grid. (I2d446, b/219942574)
  • Text: includeFontPadding ist jetzt standardmäßig deaktiviert. Die Clipping-Probleme als Ergebnis von includeFontPadding=false werden behandelt und bei großen Skripts sollte keine Clipping-Funktion auftreten. (I31c84, b/171394808)
  • Measured Interface gibt jetzt die Eigenschaft „parentData“ (I3313f) an
  • Einführung von experimentellen Modifier.onFocusedBoundsChangeds, um die Beobachtung der Grenzen von untergeordneten Fokussierbaren zu beobachten. (I14283, b/220030968, b/190539358, b/192043120, b/216842427)
  • LazyHorizontalGrid wurde hinzugefügt. (I61ae7, b/191238807)
  • Neue LazyVerticalGrid API zum Definieren von Querachsgrößen (I17723) hinzugefügt
  • „FocusGroup“-Modifikator hinzugefügt (I64bc0, b/213508274, b/184670295)

Fehlerkorrekturen

  • WindowInsets.toString() zeigt jetzt die richtigen Werte an. (I1585d)

Externer Beitrag

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

Version 1.2.0-alpha04

23. Februar 2022

androidx.compose.foundation:foundation:1.2.0-alpha04 und androidx.compose.foundation:foundation-layout:1.2.0-alpha04 werden veröffentlicht. Version 1.2.0-alpha04 enthält diese Commits.

API-Änderungen

  • BringIntoViewResponders müssen Anfragen nicht mehr manuell an übergeordnete Antworten übergeben. Stattdessen muss sofort das Rechteck zurückgegeben werden, das ihr übergeordnetes Element sichtbar machen soll. (I8e66a)
  • Asynchrones Laden von Schriftarten im Text unterstützen (I77057, b/214587005)
  • LazyVerticalGrid unterstützt jetzt line breaking vor Elementen, deren Span nicht in die aktuelle Zeile passt. (I05c40, b/207462103)
  • excludeFromSystemGestures wurde in systemGesturesExclusion (I19526) umbenannt
  • LazyVerticalGrid unterstützt jetzt ReverseLayout. (I6d7d7, b/215572963, b/211753558)
  • Fügen Sie die Methode WindowInsets.only() hinzu, damit Entwickler nur Dimensionen aus WindowInsets einschließen können. (I14c94, b/217768486)
  • ComposableTarget, ComposableTargetMarker und ComposableOpenTarget wurden hinzugefügt. Damit können während der Kompilierungszeit Berichte dazu erstellt werden, wann eine zusammensetzbare Funktion aufgerufen wird, die auf eine Anwendung ausgerichtet ist, für die sie nicht vorgesehen ist.

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

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

Fehlerkorrekturen

  • Jetzt dürfen negative Scroll-Offsets an LazyGridState.scrollToItem() und LazyGridState.animateScrollToItem() übergeben werden. (I025c6, b/211753558)
  • Asynchrones Laden von Schriftarten für TextField unterstützt. (Icc4bf, b/214587005)

Version 1.2.0-alpha03

9. Februar 2022

androidx.compose.foundation:foundation:1.2.0-alpha03 und androidx.compose.foundation:foundation-layout:1.2.0-alpha03 werden veröffentlicht. Version 1.2.0-alpha03 enthält diese Commits.

API-Änderungen

  • Die notifyFocusedRect-Methoden in TextInputSession und TextInputService wurden verworfen und werden nicht aufgerufen. Verwenden Sie stattdessen BringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874)
  • Animationen wurden für Elemente von Lazy Grids mit Modifier.animateItemPlacement() aktiviert. (Ib6621, b/211753218)
  • BringIntoViewRequester leitet jetzt Anfragen an die gehostete Android View weiter. (Ia7a51)
  • FontFamilyResolver ist jetzt verfügbar über LocalFontFamilyResolver.current
    • createFontFamilyResolver(context) und createFontFamilyResolver(context, coroutineScope) wurden hinzugefügt, um neue FontFamily-Resolver zu erstellen, die außerhalb der Verwendung von „Compose“ verwendet werden.
    • „Paragraph“ und „MultiParagraph“ nehmen jetzt FontFamily.Resolver
    • TextLayoutResult.layoutInput.fontFamilyResolver enthält jetzt den für dieses Layout verwendeten Resolver TextLayoutResult.layoutInput.resourceLoader, da er nicht mehr verwendet wird. (Id5a45, b/174162090)
  • AndroidFont wurde hinzugefügt, eine neue untergeordnete API zur Bereitstellung neuer Typen von Ressourcendeskriptoren für Schriftarten unter Android. Beispielsweise können Sie Schriftarten aus einem app-spezifischen Back-End laden, nach vorinstallierten Schriftarten auf dem Gerät suchen oder eine Schriftart aus einer Ressource laden, die nicht von den aktuellen Font Factorys bereitgestellt wird.
    • Die Font.ResourceLoaded API wurde erweitert, um das optionale und asynchrone Laden von Schriftarten zu unterstützen. Es wird nicht empfohlen, dass Anwendungsentwickler diese API direkt verwenden. Informationen zum Hinzufügen neuer Schriftarten finden Sie unter AndroidFont.
    • Die Erweiterungsfunktion Font.AndroidResourceLoader ermöglicht die Erstellung einer Font.ResourceLoader, wenn diese außerhalb der Zusammensetzung liegt.
    • Der loadingStrategy-Parameter wurde zu ressourcenbasierten Schriftarten hinzugefügt, um ein asynchrones Laden zu ermöglichen, wenn Ressourcenschriftarten auf herunterladbare XML-Schriftarten verweist. (Ie5aea, b/174162090)
  • Der Typeface(FontFamily)-Konstruktor wurde verworfen. Bisher wurden damit Schriftarten vorab geladen, was bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern kann. Bei herunterladbaren Schriftarten kann dieser Aufruf 10 Sekunden lang blockiert sein. Verwenden Sie stattdessen FontFamilyResolver.preload.
    • fontResource(FontFamily): Typeface wurde verworfen. Bisher wurden damit Schriftarten vorab geladen, was bei herunterladbaren Schriftarten bis zu 10 Sekunden dauern kann. Verwenden Sie stattdessen FontFamilyResolver.preload (If8e7c, b/174162090)
  • Du kannst jetzt den Inhaltstyp für die Elemente von LazyVerticalGrid angeben. Die Funktionen „item/items“ in LazyGridScope akzeptieren jetzt solche Parameter. Die Bereitstellung solcher Informationen trägt dazu bei, dass die Logik der Artikelkomposition wiederverwendet werden kann, wodurch diese effizienter und nur der Inhalt zwischen Elementen ähnlicher Art wiederverwendet werden kann. (I7b355, b/215372836)
  • LazyListLayoutInfo und LazyGridLayoutInfo haben jetzt neue Properties: viewportSize, orientation, reverseLayout (Ifc8ed, b/200920410)
  • Sie können jetzt den Inhaltstyp für die Elemente der LazyColumn-/LazyRow-Funktionen angeben. Für item/items in LazyListScope werden jetzt solche Parameter akzeptiert. Die Bereitstellung solcher Informationen trägt dazu bei, dass die Logik der Artikelkomposition wiederverwendet werden kann, wodurch diese effizienter und nur der Inhalt zwischen Elementen ähnlicher Art wiederverwendet werden kann. (I26506)
  • Der SubcomposeLayoutState-Konstruktor, der maxSlotsToRetainForReuse akzeptiert, wurde verworfen. Stattdessen gibt es einen neuen Konstruktor, der SubcomposeSlotReusePolicy akzeptiert. Dies ist eine neue Schnittstelle, die eine genauere Kontrolle darüber ermöglicht, welche Slots für die zukünftige Wiederverwendung beibehalten werden sollen. (I52c4d)
  • Fügt Modifikatoren für WindowInsets hinzu, sowohl für die Füllung als auch für die Größe. Dadurch können sich einige Inhalte in den Zusatzbereich erstrecken, der Hauptinhalt aber bleibt außerhalb dieses Bereichs. Mit „windowInsetsPadding“ kann beispielsweise der Inhaltsbereich aufgefüllt werden, um Bereiche zu vermeiden, die möglicherweise vollständig oder teilweise verdeckt sind. (Id0395, b/213942085)

Fehlerkorrekturen

  • Textfelder werden jetzt über der Tastatur angezeigt, wenn sie fokussiert sind und die Tastatur eingeblendet wird, wenn der Soft Input-Modus ADJUST_PAN ist. (I8eaeb, b/190539358, b/192043120)
  • Desktop verwendet die lokale Komposition für FontFamily.Resolver
    • Computer „FontLoader“ wurde eingestellt
    • Neue createFontFamilyResolver-Fabrik auf dem Computer (I6bbbb, b/174162090)
  • Der Eingabetyp „Softtastatur“ flackert nicht mehr, wenn der Fokus zwischen Textfeldern gewechselt wird. (I1bf50, b/187746439)
  • In Textfeldern ist kein zusätzliches Zurückdrücken mehr erforderlich, wenn der Cursor-Ziehpunkt angezeigt wird. (Ideb4b, b/205726883)
  • Das Verhalten der Lupe für die Textauswahl wurde an die Lupenfunktion der Plattform angepasst. (Idd918, b/206833278)

Version 1.2.0-alpha02

26. Januar 2022

androidx.compose.foundation:foundation:1.2.0-alpha02 und androidx.compose.foundation:foundation-layout:1.2.0-alpha02 werden veröffentlicht. Version 1.2.0-alpha02 enthält diese Commits.

API-Änderungen

  • NonRestartableComposable wurde Methoden hinzugefügt, die Überlastungen vorhandener Methoden ohne komplexe Logik darstellen. Dadurch werden die vom Compiler generierten Memoisierungsprüfungen (gleich) für alle Parameter reduziert, die in der inneren Funktion, die aufgerufen wird, wiederholt werden. (I90490)
  • excludeFromSystemGesture-Modifikatoren für einfachen Zugriff auf setSystemGestureExclusionRects (I46f07) von Android hinzugefügt

Fehlerkorrekturen

  • Das Verhalten der Lupe für die Textauswahl wurde an die Lupenfunktion der Plattform angepasst. (Idd918, b/206833278)
  • LazyColumn, LazyRow, Modifier.verticalScroll und andere Container, die Modifier.scrollable verwenden, unterstützen jetzt das Scrollen mit dem Mausrad. (I2b5e1, b/198214718)

Version 1.2.0-alpha01

12. Januar 2022

androidx.compose.foundation:foundation:1.2.0-alpha01 und androidx.compose.foundation:foundation-layout:1.2.0-alpha01 werden veröffentlicht. Version 1.2.0-alpha01 enthält diese Commits.

API-Änderungen

  • Der neue Parameter userScrollEnabled wurde zu LazyColumn, LazyRow und LazyVerticalGrid hinzugefügt, damit Nutzer das vom Nutzer initiierte Scrollen über Touch-Gesten oder Aktionen für Bedienungshilfen vorübergehend oder dauerhaft deaktivieren können. Programmatisches Scrollen mithilfe der Methoden für den Status ist weiterhin zulässig. (I7eae9, b/201150093)
  • Füge dem Lupenmodifikator einen onSizeChanged-Callback hinzu. (I6879f)
  • Das Lupen-Widget wird jetzt angezeigt, wenn Auswahlziehpunkte in einem SelectionContainer ziehen. (I30b38, b/139320979)

Fehlerkorrekturen

  • Das Problem, dass der TextField-Cursor-Ziehpunkt nicht ausgeblendet wird, wenn er aus der Ansicht gescrollt wird, wurde behoben. (I14552, b/208883748)

Aktualisierungen von Abhängigkeiten

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

Version 1.1

Version 1.1.1

23. Februar 2022

androidx.compose.foundation:foundation:1.1.1 und androidx.compose.foundation:foundation-layout:1.1.1 werden veröffentlicht. Version 1.1.1 enthält diese Commits.

Fehlerkorrekturen

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

Version 1.1.0

9. Februar 2022

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

Version 1.1.0-rc03

26. Januar 2022

androidx.compose.foundation:foundation:1.1.0-rc03 und androidx.compose.foundation:foundation-layout:1.1.0-rc03 werden veröffentlicht. Version 1.1.0-rc03 enthält diese Commits.

Fehlerkorrekturen

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

Version 1.1.0-rc01

15. Dezember 2021

androidx.compose.foundation:foundation:1.1.0-rc01 und androidx.compose.foundation:foundation-layout:1.1.0-rc01 werden veröffentlicht. Version 1.1.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Jetzt dürfen negative Scroll-Offsets an LazyListState.scrollToItem() und LazyListState.animateScrollToItem() übergeben werden. (Iceb90, b/184252837)
  • Es wurde ein Fehler behoben, der zu fehlenden Scrollaktionen für Bedienungshilfen führte (I7cbfb).

Version 1.1.0-beta04

1. Dezember 2021

androidx.compose.foundation:foundation:1.1.0-beta04 und androidx.compose.foundation:foundation-layout:1.1.0-beta04 werden veröffentlicht. Version 1.1.0-beta04 enthält diese Commits.

Neue Funktionen

  • Für Kotlin-Kompatibilität aktualisiert 1.6.0

API-Änderungen

  • Null-Zulässigkeit in androidx.core.view bereinigt(I7078a, b/204917439)
  • Es wurden experimentelle APIs hinzugefügt, mit denen PointerInputchange als Ganzes genutzt oder geprüft werden kann, ob es genutzt wurde. (I2e59d)
  • Beim Ziehen des Cursors oder der Auswahlziehpunkte in Textfeldern wird ein Lupen-Widget angezeigt. (I5391e, b/203781358)

Fehlerkorrekturen

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

Version 1.1.0-beta03

17. November 2021

androidx.compose.foundation:foundation:1.1.0-beta03 und androidx.compose.foundation:foundation-layout:1.1.0-beta03 werden veröffentlicht. Version 1.1.0-beta03 enthält diese Commits.

API-Änderungen

  • LazyVerticalGrid unterstützt jetzt horizontale Spans. (I7e2fa, b/176758183)
  • Es wurde eine experimentelle Funktion zum Animieren von Positionen von Lazy-Listen-Elementen hinzugefügt. In LazyItemScope gibt es den neuen Modifikator Modifier.animateItemPlacement(). Verwendungsbeispiel:

      var list by remember { mutableStateOf(listOf("A", "B", "C")) }
      LazyColumn {
          item {
              Button(onClick = { list = list.shuffled() }) {
                  Text("Shuffle")
              }
          }
          items(list, key = { it }) {
              Text("Item $it", Modifier.animateItemPlacement())
          }
      }
    
    • Wenn du über LazyListScope.item oder LazyListScope.items einen Schlüssel angibst, aktiviert dieser Modifikator Animationen für die Reihenfolge der Elemente. Neben der Neuanordnung von Elementen sind auch alle anderen Positionsänderungen, die durch Ereignisse wie Anordnungs- oder Ausrichtungsänderungen verursacht werden, animiert. (I59e7b, b/150812265)

Version 1.1.0-beta02

3. November 2021

androidx.compose.foundation:foundation:1.1.0-beta02 und androidx.compose.foundation:foundation-layout:1.1.0-beta02 werden veröffentlicht. Version 1.1.0-beta02 enthält diese Commits.

Fehlerkorrekturen

  • Ripples und andere Hinweise werden jetzt nur dann verzögert, wenn sie sich in einem Modifier.scrollable()-Container befinden, und nicht mehr bei einem Down-Ereignis. (Ibefe0, b/203141462)
  • Es wurde eine experimentelle BringIntoView API hinzugefügt, mit der Sie eine Anfrage an Eltern senden können, damit diese scrollen können, um ein Element sichtbar zu machen (Ib918d, b/195353459).

Externer Beitrag

  • Modifier.pointerHoverIcon (I95f01) hinzugefügt

Version 1.1.0-beta01

27. Oktober 2021

androidx.compose.foundation:foundation:1.1.0-beta01 und androidx.compose.foundation:foundation-layout:1.1.0-beta01 werden veröffentlicht. Version 1.1.0-beta01 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde eine experimentelle BringIntoView API hinzugefügt, mit der Sie eine Anfrage an Eltern senden können, damit diese scrollen können, um ein Element sichtbar zu machen (Ib918d, b/195353459).

Version 1.1.0-alpha06

13. Oktober 2021

androidx.compose.foundation:foundation:1.1.0-alpha06 und androidx.compose.foundation:foundation-layout:1.1.0-alpha06 werden veröffentlicht. Version 1.1.0-alpha06 enthält diese Commits.

API-Änderungen

  • Für das Layout wurde eine Überlastung ohne untergeordnete Elemente mit verbesserter Effizienz hinzugefügt (Ib0d9a).
  • SemanticsNodeInteraction.performSemanticsAction gibt jetzt das SemanticsNodeInteraction zurück, für das die Funktion aufgerufen wurde. I9e5db:
  • performScrollToNode(matcher: SemanticsMatcher) wurde hinzugefügt, das einen scrollbaren Container zu dem Inhalt scrollt, der mit dem angegebenen Matcher übereinstimmt. (Ic1cb8)

Version 1.1.0-alpha05

29. September 2021

androidx.compose.foundation:foundation:1.1.0-alpha05 und androidx.compose.foundation:foundation-layout:1.1.0-alpha05 werden veröffentlicht. Version 1.1.0-alpha05 enthält diese Commits.

API-Änderungen

Fehlerkorrekturen

  • Die Unterstützung von Bedienungshilfen für scrollbare Elemente (sowohl Lazy als auch nicht Lazy) in Bezug auf das Scrollen wurde korrigiert (I6cdb0).

Version 1.1.0-alpha04

15. September 2021

androidx.compose.foundation:foundation:1.1.0-alpha04 und androidx.compose.foundation:foundation-layout:1.1.0-alpha04 werden veröffentlicht. Version 1.1.0-alpha04 enthält diese Commits.

API-Änderungen

  • performGesture und GestureScope wurden verworfen und durch performTouchInput und TouchInjectionScope ersetzt. (Ia5f3f, b/190493367)
  • touchBoundsInRoot zu SemanticsNode hinzugefügt, die die Mindestgröße für Berührungszielbereiche enthält, damit Entwickler sicherstellen können, dass Berührungszielbereiche die Mindestanforderungen für die Barrierefreiheit erfüllen. (I2e14b, b/197751214)

Fehlerkorrekturen

  • Auf Android 12-Geräten wird Stretch-Overscroll unterstützt. (Iccf3c, b/171682480)

Version 1.1.0-alpha03

1. September 2021

androidx.compose.foundation:foundation:1.1.0-alpha03 und androidx.compose.foundation:foundation-layout:1.1.0-alpha03 werden veröffentlicht. Version 1.1.0-alpha03 enthält diese Commits.

Neue Funktionen

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

API-Änderungen

  • Glow-Effekt für das Scrollen wurde hinzugefügt. Es wurde eine neue experimentelle OverScrollConfiguration API hinzugefügt, um die Konfiguration des visuellen Overscroll-Effekts zu ermöglichen. Geben Sie null an, um den Overscroll-Effekt zu deaktivieren. (I0c304, b/171682480)
  • AwaitPointerEventScope hat jetzt withTimeout() und withTimeoutOrNull() (I507f0, b/179239764, b/182397793).
  • Eine Testmethode zum Abrufen der verkürzten Grenzen wurde hinzugefügt. (I6b28e)
  • Zur Gewährleistung der Zugänglichkeit wurde die Mindestgröße des Berührungszielbereichs zur Verwendung in der Semantik und der Zeigereingabe zu ViewConfiguration hinzugefügt. (Ie861c)

Version 1.1.0-alpha02

18. August 2021

androidx.compose.foundation:foundation:1.1.0-alpha02 und androidx.compose.foundation:foundation-layout:1.1.0-alpha02 werden veröffentlicht. Version 1.1.0-alpha02 enthält diese Commits.

API-Änderungen

  • DpSize-Versionen für Modifier.size und requiredSize hinzugefügt (I3fc7e, b/194219828)

Version 1.1.0-alpha01

4. August 2021

androidx.compose.foundation:foundation:1.1.0-alpha01 und androidx.compose.foundation:foundation-layout:1.1.0-alpha01 werden veröffentlicht. Version 1.1.0-alpha01 enthält diese Commits.

API-Änderungen

  • Aktualisierte Methode DrawScope#drawImage, die Quell- und Zielrekte nutzt, um einen optionalen Parameter „FilterQuality“ zu verarbeiten. Dies ist nützlich für Pixelart, die verpixelt werden soll, wenn sie für pixelbasierte Grafiken hochskaliert werden. Die zusammensetzbare Funktion „BitmapPainter + Image“ wurde aktualisiert, sodass auch ein optionaler Parameter „FilterQuality“ verwendet wird (Ie4fb0, b/180311607).
  • TextField löscht jetzt die Auswahl, wenn die Schaltfläche „Zurück“ gedrückt wird, was dem Verhalten von Android EditText entspricht. (I3ca16, b/174173645)
  • Cursor-Ziehpunkt hinzufügen. (I07a82, b/173016579)

Fehlerkorrekturen

  • Das Scrollen über semantische Aktionen für Lazy-Listen und reguläre Scroll-Komponenten ist jetzt animiert (Id9066, b/190742024).

Externer Beitrag

  • LazyVerticalGrid akzeptiert jetzt sowohl horizontale als auch vertikale Anordnungsparameter. (If9c92)

Version 1.0

Version 1.0.5

3. November 2021

androidx.compose.foundation:foundation:1.0.5 und androidx.compose.foundation:foundation-layout:1.0.5 werden veröffentlicht. Version 1.0.5 enthält diese Commits.

Fehlerkorrekturen

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

Version 1.0.4

13. Oktober 2021

androidx.compose.foundation:foundation:1.0.4 und androidx.compose.foundation:foundation-layout:1.0.4 werden veröffentlicht. Version 1.0.4 enthält diese Commits.

Aktualisierungen von Abhängigkeiten

  • Aktualisiert und hängt von Kotlin ab 1.5.31

Version 1.0.3

29. September 2021

androidx.compose.foundation:foundation:1.0.3 und androidx.compose.foundation:foundation-layout:1.0.3 werden veröffentlicht. Version 1.0.3 enthält diese Commits.

Aktualisierungen von Abhängigkeiten

  • Aktualisiert und hängt von Kotlin ab 1.5.30

Version 1.0.2

1. September 2021

androidx.compose.foundation:foundation:1.0.2 und androidx.compose.foundation:foundation-layout:1.0.2 werden veröffentlicht. Version 1.0.2 enthält diese Commits.

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

Version 1.0.1

4. August 2021

androidx.compose.foundation:foundation:1.0.1 und androidx.compose.foundation:foundation-layout:1.0.1 werden veröffentlicht. Version 1.0.1 enthält diese Commits.

Aktualisierungen von Abhängigkeiten

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

Version 1.0.0

28. Juli 2021

androidx.compose.foundation:foundation:1.0.0 und androidx.compose.foundation:foundation-layout:1.0.0 werden 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 Blog zur Compose-Version.

Bekannte Probleme

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

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

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

Version 1.0.0-rc02

14. Juli 2021

androidx.compose.foundation:foundation:1.0.0-rc02 und androidx.compose.foundation:foundation-layout:1.0.0-rc02 werden veröffentlicht. Version 1.0.0-rc02 enthält diese Commits.

  • Das Rahmen-Rendering für allgemeine Formen wurde aktualisiert, um Probleme mit Pfaden zu beheben, die mit festen Abmessungen definiert sind. (aosp/1748871, b/191817116)

Version 1.0.0-rc01

1. Juli 2021

androidx.compose.foundation:foundation:1.0.0-rc01 und androidx.compose.foundation:foundation-layout:1.0.0-rc01 werden veröffentlicht. Version 1.0.0-rc01 enthält diese Commits.

API-Änderungen

  • Canvas unterstützt jetzt den Parameter „contentDescription“ für Barrierefreiheit. (Ib547c)

Fehlerkorrekturen

  • Deaktivierte Schaltflächen, Infokarten, Kästchen und die gesamten Modifier.clickable(enabled=false) verhindern, dass Klicks zum übergeordneten Element weitergeleitet werden. (Ic2c3b, b/183908811)

Version 1.0.0-beta09

16. Juni 2021

androidx.compose.foundation:foundation:1.0.0-beta09 und androidx.compose.foundation:foundation-layout:1.0.0-beta09 werden veröffentlicht. Version 1.0.0-beta09 enthält diese Commits.

API-Änderungen

  • ManualFrameClock wurde entfernt. Wenn Sie Animationen steuern müssen, verwenden Sie stattdessen composeTestRule.mainClock. (I3c3e8, b/189951065)
  • die Rollen „enum“ und „LiveRegionMode“ in Inline-Klassen mit privatem Konstruktor (Id1890) ändern.
  • KeyboardCapitalization wird in Inline-Klasse konvertiert. (Id5a1c)
  • TextOverflow wird in eine Inline-Klasse geändert. (I433af)

Fehlerkorrekturen

  • Wenn Sie nun eindeutige Schlüssel für LazyColumn/Row-Elemente angeben, wird die Scrollposition auf Grundlage des Schlüssels beibehalten. Das heißt, wenn Sie Elemente vor dem aktuell sichtbaren Element hinzufügen/entfernen, wird das Element mit dem angegebenen Schlüssel als erstes sichtbares Element beibehalten. (Id263f, b/184257857)
  • Die Schlüsselkonstanten sind vorerst @ExperimentalComposeUiApi. Durch die Verarbeitung von Code können vor der Stabilisierung private Konstanten deklariert werden. (Ia5d48)
  • IdlingStrategy wurde zu AndroidComposeTestRule hinzugefügt. Damit können Frameworks getestet werden, um einen alternativen Mechanismus zu installieren, der auf Ruhe wartet oder stillgelegt wird. Verwenden Sie AndroidComposeTestRule.setIdlingStrategyFactory(), bevor Sie mit dem Test beginnen, um Ihre eigene Strategie zu implementieren. (I608fa)

Hinzugefügte Profilregeln

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

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

Was sind Profilregeln?

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

  • Eine Methodenregel hat das folgende Muster:

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

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

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

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

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

Wozu dienen die Regeln?

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

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

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

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

So funktioniert's

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

Version 1.0.0-beta08

2. Juni 2021

androidx.compose.foundation:foundation:1.0.0-beta08 und androidx.compose.foundation:foundation-layout:1.0.0-beta08 werden veröffentlicht. Version 1.0.0-beta08 enthält diese Commits.

API-Änderungen

  • Die Enum „NestedScrollSource“ wird durch eine Inline-Klasse ersetzt. (Ie321b, b/187055290)
  • Die Verwendung von Aufzählungen wurde auf Inline-Klassen umgestaltet, um Probleme mit Vollständigkeit bei Anweisungen zu vermeiden, wenn neue Aufzählungswerte hinzugefügt werden. (I2b5eb)
  • Fügt ein Zeitlimit für Tippvorgänge für anklickbar bzw. ein-/ausschaltbar hinzu, um zu verhindern, dass beim Scrollen / Ziehen eine Welle angezeigt wird (Ia2704, b/168524931)
  • Die Attribute „ContentDescription“ und „Text“ sind keine einzelnen Werte mehr, sondern Listen. Auf diese Weise können sie unverändert zusammengeführt werden, anstatt Verkettungen. Außerdem wurden bessere Test-APIs zur Nutzung dieser Änderungen bereitgestellt (Ica6bf, b/184825850).
  • Modifier.focusModifier() wurde verworfen und durch Modifier.focusTarget() (I6c860) ersetzt
  • Die KeyboardType-Enum wird durch eine Inline-Klasse ersetzt. (I73045, b/187055290)
  • FocusState-Enum durch eine FocusState-Schnittstelle ersetzt (Iccc1a, b/187055290)
  • ImeAction-Enum wird durch eine Inline-Klasse ersetzt. (I18be5, b/187055290)
  • AnnotatedString.withAnnotation-Funktionen heißen jetzt ExperimentalTextApi und nicht ExperimentalComposeApi. (I0cd0a)
    • Der TextUnit-Konstruktor mit TextUnitType ist jetzt „ExperimentalTextApi“ anstelle von „ExperimentalComposeApi“.
  • PaddingValues ist jetzt @Stable statt @Immutable (I88c50)

Fehlerkorrekturen

  • Abstürze durch langes Drücken auf den leeren Bereich in nicht leerem Text wurden behoben. (I33ab5, b/187437299)
  • Symbolleiste nach „SelectAll“ anzeigen (I495d9, b/185919613)
  • Ein Problem mit scrollbaren Containern, bei denen die untergeordneten Elemente an der Kreuzachse abgeschnitten wurden, wurde behoben. Es war leicht reproduzierbar, wenn Sie eine LazyRow mit Kartenelementen haben. Jetzt wird der Schatten nicht abgeschnitten. (Icb635, b/186318448)
  • Problem behoben, bei dem Wellen / andere Hinweise bei einem langen Klick manchmal hängen geblieben sind, wenn Modifier.combinedClickable verwendet wurde (I2298c, b/186223077)
  • detectDragGesures, detectVerticalGestures und detectHorizontalGestures nutzen jetzt die Positionsänderung automatisch. Ein Aufruf von change.consumePositionChange in den onDrag-Callbacks ist nicht mehr erforderlich (I42fc4, b/185096350, b/187320697).
  • Modifier.onGloballyPositioned() wurde geändert, um nach Anwendung aller Modifikatoren die Koordinaten dieses Modifikators in die Ausgabe aufzunehmen, nicht die Layoutkoordinaten. Das bedeutet, dass sich jetzt die Reihenfolge der Modifikatoren darauf auswirkt, welche Koordinaten gemeldet werden. (Ieb67d, b/177926591)

Version 1.0.0-beta07

18. Mai 2021

androidx.compose.foundation:foundation:1.0.0-beta07 und androidx.compose.foundation:foundation-layout:1.0.0-beta07 werden veröffentlicht. Version 1.0.0-beta07 enthält diese Commits.

API-Änderungen

Fehlerkorrekturen

  • LazyColumn/Row sorgt nun dafür, dass bis zu zwei zuvor sichtbare Elemente aktiv (nicht verworfen) bleiben, auch wenn sie bereits herausgescrollt werden. Auf diese Weise kann die Komponente die aktiven Unterzusammensetzungen wiederverwenden, wenn wir ein neues Element zusammensetzen müssen, was die Scroll-Leistung verbessert. (Ie5555)
  • PaintBackground entfernen. (I38660)
  • Hintergrund für Auswahl mit DrawScope zeichnen (I73c61, b/186674472)
  • Eine Beta06-Regression, die Zeilen/Spalten unter Verwendung von SpacedBy-Anordnungen für das Layout gewichteter untergeordneter Elemente betrifft, wurde behoben. (Ifaf8c, b/187326588)

Version 1.0.0-beta06

5. Mai 2021

androidx.compose.foundation:foundation:1.0.0-beta06 und androidx.compose.foundation:foundation-layout:1.0.0-beta06 werden veröffentlicht. Version 1.0.0-beta06 enthält diese Commits.

API-Änderungen

  • Konflikte mit Bedienungsgeste lösen (I1145e)
  • Bedienungshilfen-APIs für CollectionInfo und CollectionItemInfo wurden hinzugefügt, mit denen Sammlungen und zugehörige Elemente für Bedienungshilfen markiert werden können (Id54ef, b/180479017).
  • SemanticsActions.ScrollToIndex wurde hinzugefügt, um eine Liste mit indexierten Elementen zu einem Element mit einem bestimmten Index zu scrollen, und SemanticsProperties.IndexForKey, um den Index eines Elements in einer Liste mit Schlüsselelementen abzurufen. Beide Aktionen werden von LazyList implementiert.
    • SemanticsNodeInteraction.performScrollToIndex wurde hinzugefügt, das eine Liste zum angegebenen Index scrollt, und SemanticsNodeInteraction.performScrollToKey, das eine Liste zum Element mit dem angegebenen Schlüssel scrollt. (I4fe63, b/178483889, b/161584524)
  • AnnotatedString-Speicherunterstützung in TextFieldValue.Saver. Zusätzliche Funktionen des Dienstprogramms addTtsAnnotation und withAnnotation zu AnnotatedString.Builder (I8cbdc, b/178446304)
  • 0.dp-Standardparameterwerte wurden zu PaddingValues(horizontal, vertical) hinzugefügt (I05571, b/181336792)

Fehlerkorrekturen

  • Untergeordnete Zeilen und Spalten mit weight(fill = false) füllen nicht mehr den gesamten verfügbaren Bereich der Hauptachse aus. (Ied94d, b/186012444, b/184355105)

Version 1.0.0-beta05

21. April 2021

androidx.compose.foundation:foundation:1.0.0-beta05 und androidx.compose.foundation:foundation-layout:1.0.0-beta05 werden veröffentlicht. Version 1.0.0-beta05 enthält diese Commits.

API-Änderungen

  • Die FlingBehavior-Oberfläche ist jetzt als @Stable markiert. Alle Implementierungen müssen dem @Stable-Vertrag entsprechen. (I93354, b/184830577)

Fehlerkorrekturen

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

Version 1.0.0-beta04

7. April 2021

androidx.compose.foundation:foundation:1.0.0-beta04 und androidx.compose.foundation:foundation-layout:1.0.0-beta04 werden 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.
    • Die vollständige CompositionLocal-Schnittstelle für LocalSoftwareKeyboardController bereitstellen, um diese festzulegen (besonders bei Tests nützlich) (I579a6)
  • TextOverflow.Visible wird eingeführt. (Ic8f89)
  • Öffentliche Instanzen von RowScope, ColumnScope, BoxScope und BoxWithConstraintsScope wurden entfernt. (I4e83e, b/181869067)

Fehlerkorrekturen

  • Ein Problem wurde behoben, bei dem Elemente von LazyColumn/LazyRow, die sich an den Rändern befinden, nach dem schnellen Ziehen falsch positioniert wurden (Ie4d13, b/183877420).
  • Bisher waren lokale zusammensetzbare Funktionen aufgrund ihrer Parameter überspringbar. Nach dieser Änderung werden keine lokalen zusammensetzbaren Funktionen mehr übersprungen. Diese Änderung wurde vorgenommen, da es üblich ist und erwartet wird, dass lokale Funktionen Parameter aus der übergeordneten Funktion erfassen. Wenn sie übersprungen werden, kommt es häufig zu Programmfehlern.

    Schauen wir uns das Beispiel an:

    @Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) {
      @Composable fun ShowCount() { Text("Count: $count") }
      ShowCount()
      Button(onClick={ onCountChange(count + 1) }) {
        Text("Increment")
      }
    }
    

    Vor dieser Änderung wurde die zusammensetzbare Funktion ShowCount immer übersprungen, auch wenn der Parameter count aktualisiert wurde. Diese Änderungen haben wir jedoch nicht vorgenommen (I5648a)

Version 1.0.0-beta03

24. März 2021

androidx.compose.foundation:foundation:1.0.0-beta03 und androidx.compose.foundation:foundation-layout:1.0.0-beta03 werden veröffentlicht. Version 1.0.0-beta03 enthält diese Commits.

API-Änderungen

  • DefaultMonotonicFrameClock wurde verworfen. Durch den Aufruf von withFrameNanos oder Recomposer.runRecomposeAndApplyChanges ohne MonotonicFrameClock wird jetzt IllegalStateException ausgegeben. (I4eb0d)

Fehlerkorrekturen

  • FlingBehavior.performFling() wird jetzt auch dann aufgerufen, wenn die Geschwindigkeit 0 ist (I0b6e5, b/181237123).

Version 1.0.0-beta02

10. März 2021

androidx.compose.foundation:foundation:1.0.0-beta02 und androidx.compose.foundation:foundation-layout:1.0.0-beta02 werden veröffentlicht. Version 1.0.0-beta02 enthält diese Commits.

API-Änderungen

  • In der LazyColumn-Messlogik wurden mehrere kleine Optimierungen hinzugefügt (Ic6889).
  • Eine neue lokale LocalSoftwareKeyboardController-Zusammensetzungs-API wurde hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I5951e, b/168778053)
  • Eine neue lokale LocalSoftwareKeyboardController-Zusammensetzungs-API wurde hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I84472, b/168778053)

Fehlerkorrekturen

  • Einschränkungen für die öffentliche Nutzung experimenteller APIs erzwingen (I6aa29, b/174531520)

Version 1.0.0-beta01

24. Februar 2021

androidx.compose.foundation:foundation:1.0.0-beta01 und androidx.compose.foundation:foundation-layout:1.0.0-beta01 werden 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 zu detectDragGestures hinzugefügt (I67269, b/179995594)
  • Modifikatoren zur Größenanpassung an intrinsische Elemente sind nicht mehr experimentell. (I15744)
  • dp-Assertions entfernt (I798d2)
  • Der SoftwareKeyboardController-Callback wurde aus allen Textfeldern entfernt, der bald durch eine neue API ersetzt werden soll. (Iae869, b/168778053)
  • MeasureBlocks wurde in MeasurePolicy umbenannt und bietet jetzt eine unterhaltsame Benutzeroberfläche. Layout-APIs wurden für die Verwendung von MeasurePolicy aktualisiert bzw. vereinfacht. (Icab48, b/167662468, b/156751158)
  • InteractionState wurde durch [Mutable]InteractionSource ersetzt.
    • Schnittstellen sind für das Senden und Erfassen von Interaktionsereignissen verantwortlich.
    • Verwenden Sie interactionSource = remember { MutableInteractionSource() }, anstatt interactionState = remember { InteractionState() } an Komponenten wie Button und Modifier.clickable() zu übergeben.
    • Verwenden Sie statt Interaction.Pressed in interactionState die Erweiterungsfunktionen für InteractionSource, z. B. InteractionSource.collectIsPressedAsState().
    • Bei komplexen Anwendungsfällen können Sie mit InteractionSource.interactions den Stream von Interaktionen beobachten. Weitere Informationen finden Sie in der Dokumentation zu InteractionSource und in Beispielen.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • Die nicht mehr unterstützten LayoutCoordinates-Methoden wurden entfernt. Verwenden Sie die Funktion „function“ anstelle der Eigenschaft für „positionInParent“ und „boundsInParent“ (I580ed, b/169874631, b/175142755).
  • Für Eingabesitzungen über Low-Level-Textkomponenten wie CoreTextField wurde eine neue TextInputSession erstellt. (I8817f, b/177662148)
  • „Placeable“ zeigt jetzt „measureSize“ an, der die Größe darstellt, die das untergeordnete Layout tatsächlich gemessen hat. Bei dieser Größe werden möglicherweise die Einschränkungen für die Messung nicht berücksichtigt. (Ib2729, b/172560206, b/172338608)
  • Modifikator „selectGroup“ hinzufügen, mit dem eine Sammlung von Tabs oder Optionsfeldern für Bedienungshilfen markiert werden kann (Ie5c29)
  • LazyListState.animateScrollToItem hinzufügen

    Mit dieser Methode wird automatisch zu einem bestimmten Element in der Liste gescrollt. I4bfd7.

  • ScrollableState.smoothScrollBy() wurde in animateScrollBy() umbenannt. „LazyListState.snapToItemIndex()“ wurde in „scrollToItem()“ umbenannt ScrollState.smoothScrollTo() wurde in „animateScrollTo()“ (I35ded) umbenannt

  • Modifier.zoomable wurde durch Modifier.transformable ersetzt. smoothPanBy, smoothRotationBy wurde als Funktion hinzugefügt. (Ifc32b, b/175294473)

  • defaultFactory für compositionLocalOf und staticCompositionLocalOf ist jetzt erforderlich und nicht mehr optional.

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

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

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

  • Indication#createIndication() in Indication#rememberUpdatedIndication(InteractionState) geändert und Parameter InteractionState aus IndicationInstance#drawIndication() entfernt. IndicationInstance sollte nur für das Zeichnen von visuellen Effekten zuständig sein und nicht das Starten von Animationen bzw. das Schreiben des Status als Reaktion auf InteractionState-Änderungen. Diese Animationen und Schreibvorgänge für Status sollten stattdessen innerhalb von rememberUpdatedIndication() erfolgen. Der Parameter indication in Modifier.indication wurde ebenfalls in einen erforderlichen Parameter geändert. (Ic1764, b/152525426)

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

  • runBlockingWithManualClock (I15cdc, b/179664814) entfernt

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

  • Die Pakete der Methoden „smoothScrollBy“ und „scrollBy“ wurden in androidx.compose.foundation.gestures.* (I3f7c1, b/175294473) geändert

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

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

  • „defaultMinSizeConstraints“ wurde in „defaultMinSize“ umbenannt. (I4eaae)

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

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

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

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

  • „DrawerState.open()“ und „drawerState.close()“ sind jetzt angehaltene Funktionen. Mit MemorystoreScope() können Sie den Umfang der Zusammensetzung ermitteln, um sie aufzurufen (I16f60, b/175294473).

  • Provider wurde in CompositionLocalProvider umbenannt

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

  • Modifier.draggable akzeptiert jetzt DraggableState anstelle eines einfachen Lambda-Elements. Du kannst einen Status über rememberDraggableState { delta -> } erstellen, um das gleiche Verhalten wie zuvor zu erhalten (Ica70f, b/175294473).

  • Die Modifikatoren requiredWidth(IntrinsicSize) und requiredHeight(IntrinsicSize) wurden für die erforderliche Größenanpassung zu internen Größen hinzugefügt. (I0a6b4)

  • Das eingestellte emptyContent() wird entfernt. Verwende stattdessen {}. (Idb33f, b/179432510)

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

Fehlerkorrekturen

  • Eine neue lokale Zusammensetzungs-API LocalSoftwareKeyboardController wurde hinzugefügt, um die vorherige SoftwareKeyboardController-Schnittstelle in TextField zu ersetzen. (I658b6, b/168778053)

Version 1.0.0-alpha12

10. Februar 2021

androidx.compose.foundation:foundation:1.0.0-alpha12 und androidx.compose.foundation:foundation-layout:1.0.0-alpha12 werden veröffentlicht. Version 1.0.0-alpha12 enthält diese Commits.

API-Änderungen

  • Für Modifier.pointerInput sind nun Schlüssel zum Merken erforderlich, die angeben, wann die Koroutine für die Zeigereingabeerkennung bei neuen Abhängigkeiten neu gestartet werden soll. (I849cd)
  • Testaktualisierung: hasText() prüft sowohl auf Eingabe- als auch auf Beschriftungs-/Hinweis-/Platzhaltertexte im Textfeld (Iab803)
  • PaddingValues.Absolute wurde hinzugefügt und kann in APIs verwendet werden, die PaddingValues akzeptieren. (Ia5f30)
  • „onImeActionPerformed“ wurde eingestellt. Verwenden Sie stattdessen KeyboardActions (If0bbd, b/179071523).
  • Um die Namenskonventionen besser mit ImageBitmap und ImageVector abzugleichen, wurde ImagePainter in BitmapPainter umbenannt, damit parallel zu VectorPainter. (Iba381, b/174565889)
  • Bessere Teilstring-Test-APIs mit Teilstrings jetzt als Argument (Icbe78)
  • Das Koroutinen-Kontextelement InfiniteAnimationPolicy wurde eingeführt, das in Endlosanimationen angewendet wird. Standardmäßig ist keine Richtlinie installiert, außer wenn Tests mit ComposeTestRule ausgeführt werden. (I50ec4, b/151940543)
  • Animatable.snapTo und Animatable.stop sind jetzt Funktionen zum Anhalten (If4288)
  • ComponentActivity.setContent wurde nach androidx.activity.compose.setContent im Modul androidx.activity:activity-compose verschoben. ICF416
  • Die Methoden "Destrukturierung" und "copy()" wurden aus mehreren Klassen entfernt, in denen sie nur selten verwendet wurden. (I26702, b/178659281)
  • Unterstützung für benutzerdefinierte Schlüssel für LazyColumn/LazyRow wurde hinzugefügt. So können wir Artikel besser neu anordnen. Der Status, den Sie in {}-Blöcken gespeichert haben, verschiebt sich also zusammen mit dem Element, wenn Sie Elemente neu anordnen oder das Element aus der Mitte entfernen.

    LazyColumn {
        items(users, key = { user -> user.id }) { ... }
    }
    
  • Indication#createInstance wurde in @Composable geändert und LocalIndication in einen Indication geändert, nicht () -> Indication. (I5eeea, b/157150564)

  • Constraints.enforce“ wurde durch „Constraints.constrain“ ersetzt. (I8b8ea)

  • „loadFontResource“ wurde eingestellt. Verwenden Sie stattdessen fontResource. „imageResource“, „loadImageResource“, „vectorResource“ und „loadVectorResource“ wurden eingestellt. Verwenden Sie stattdessen PainterResource. (I6b809)

  • Aus Leistungsgründen akzeptiert die ScrollAxisRange-Semantik nun Lambdas, die Gleitkommazahlen zurückgeben, anstelle von direkten Gleitkommazahlen. (If4a35, b/178657186)

  • Es wurde eine „EditableText“-Semantik hinzugefügt, um bearbeitbaren Eingabetext des Textfeldes für Barrierefreiheit zu markieren, und entsprechende Testmethoden zum Überprüfen der Semantik (I8e07a).

  • Modifier.clickable bietet jetzt keine Unterstützung für Mehrfach- und Langklicks. Verwenden Sie Modifier.combinedClickable, um diese Funktionalität zu erreichen. (Iafad1)

  • „toIntPx()“ wurde in „roundToPx()“ umbenannt. (I9b7e4, b/173502290)

  • IntBounds wurde in IntRect umbenannt und die API wurde verbessert. (I1f6ff)

  • Modifier.dragGestenFilter wurden eingestellt. Verwende stattdessen Modifier.pointerInput { detectDragGestures (...)}. Alternativ können Sie Modifier.draggable für Ziehbewegungen einer Achse verwenden (I0ba93, b/175294473).

  • Ambients wurden umbenannt, sodass sie unter Ambient > CompositionLocal umbenannt werden. Ambients hießen früher „AmbientFoo“, jetzt heißt „CompositionLocals“ LocalFoo. (I2d55d)

  • Die Auswahl wurde auf die Grundlage verschoben. (I7892b)

  • Ähnlich wie wir die zusammensetzbare Funktion state { 0 } zuvor entfernt haben und jetzt die Verwendung wie remember { mutableStateOf(0) } fördern, entfernen wir jetzt die zusammensetzbare Funktion savedInstanceState { 0 }. Sie sollten stattdessen rememberSaveable { mutableStateOf(0) } verwenden. Es wird automatisch gespeichert und wiederhergestellt, wenn der in „MuttableState“ verwendete Typ im Bundle gespeichert werden kann. Wenn Sie bisher ein benutzerdefiniertes Saver-Objekt übergeben haben, müssen Sie jetzt eine neue Überlastung von savedSaveable mit dem Parameter stateSaver verwenden. Die Nutzung sieht so aus: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)

  • Zusätzliche Passwortsemantik für Barrierefreiheit (I231ce)

  • ProgressBarRangeInfo.Indeterminate wurde hinzugefügt, um unbestimmte Fortschrittsbalken für Barrierefreiheit zu markieren (I6fe05).

  • Die Abspielzeit in der Animation ist jetzt auf Nanosekunden abgestimmt (If776a)

  • @ComposableContract wurde eingestellt und durch drei spezifischere Annotationen ersetzt.

    @ComposableContract(restartable = false) wurde zu @NonRestartableComposable @ComposableContract(readonly = true) wurde zu @ReadOnlyComposable @ComposableContract(preventCapture = true) wurde zu @DisallowComposableCalls @ComposableContract(tracked = true) wurde entfernt. (I60a9d)

  • Die Dienstprogramme emptyContent() und (@Composable () -> Unit).orEmpty() wurden verworfen, da sie keine positiven Auswirkungen auf die Leistung oder ihren Wert mehr haben (I0484d).

  • Recomposer können jetzt geschlossen werden. Bei geschlossenen Neuzusammensetzungen wird die Neuzusammensetzung so lange fortgesetzt, bis die untergeordneten Koroutinen abgeschlossen sind. Recomposer.shutDown wurde in „Abbrechen“ umbenannt, um einen Kontrast mit „Schließen“ zu bilden. (Ib6d76)

  • APIs im Zusammenhang mit LazyVerticalGrid sind als experimentell gekennzeichnet (Ia53e3, b/178519862).

  • MemorystoreSavedInstanceState() wurde in noteSaveable() umbenannt und in das Paket „androidx.compose.runtime.saveable“ verschoben. (I1366e, b/177338004)

  • RestorableStateHolder wurde in SaveableStateHolder umbenannt und in das Paket „androidx.compose.runtime.saveable“ verschoben. Die innere Methode RestorableStateProvider wurde in SaveableStateProvider umbenannt. Der generische Typ wurde entfernt, sodass Sie einfach „Any“ als Schlüssel übergeben können. Eine experimentelle Anmerkung ist nicht mehr erforderlich. (I0902e, b/174598702)

  • Saver, listSaver(), MapSaver(), autoSaver wurde von androidx.compose.runtime.savedinstancestate nach androidx.compose.runtime.saveable verschoben (I77fe6)

  • Artefakt „androidx:compose:runtime:runtime- saved-instance-state“ wurde in androidx:compose:runtime:runtime-saveable (I6dcac) umbenannt

  • Viele der seit Langem verworfenen APIs im UI-Paket werden gelöscht. I2f2dc.

  • Das Artefakt „compose:runtime-dispatch“ wurde jetzt eingestellt. MonotonicFrameClock ist jetzt in „compose:runtime“ und „AndroidUiDispatcher“ in „compose:ui“ zu finden. (Ib5c36)

  • Die Parameter von RounderCornerShape, CutCornerShape und CornerBasedShape wurden von links/rechts in Anfang/Ende umbenannt, um die automatische Spiegelung der Form in RTL-Richtung zu unterstützen. AbsoluteRounderCornerShape und AbsoluteCutCornerShape wurden für Fälle eingeführt, in denen eine automatische Spiegelung nicht erwünscht ist. (I61040, b/152756983)

  • canDrag wurde aus Modifier.scrollable entfernt. (Id66e7, b/175294473)

  • Die API, auf die das Compiler-Plug-in „Compose“ ausgerichtet ist, wurde umgestaltet, um eine Schnittstelle anstelle einer konkreten Klasse zu verwenden. In der Schnittstelle wird auch kein Typparameter mehr verwendet.

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

  • Modifier.scaleGestenFilter wurde entfernt. Verwende stattdessen Modifier.zoomable. Alternativ können Sie Modifier.pointerInput { detectMultitouchGestures { ... }} (Id5da1, b/175294473) verwenden.

  • Die Funktion „AnimierteWert/Gleitkommazahl“ wird jetzt nicht mehr unterstützt. Bitte verwende stattdessen „Animatable“. (I71345, b/177457083)

    • CoreText und CoreTextField aus der öffentlichen API entfernt
    • Die verworfene SelectionContainer-Überlastung wurde entfernt (I99c19).
  • Verworfene Scrollfunktionen ohne Stoppen entfernen Konvertieren Sie diese in die Anhalten-Funktionen mit denselben Namen. Ein Koroutinenbereich kann über rememberCoroutineScope() abgerufen werden. (I3d39c, b/178169563)

  • „androidx.compose.foundation.layout.ConstraintLayout“ wurde zugunsten von „androidx.constraintlayout.compose.ConstraintLayout“ eingestellt. Sie müssen eine Abhängigkeit von androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01 hinzufügen. (I87adc)

  • tapGestenFilter, doubleTapGestenFilter, longPressGestenFilter und pressIndicaitonGMSFilter wurden eingestellt. Verwende stattdessen "Modifier.clickable" oder "Modifier.pointerInput" mit der Funktion detectTapTouch. (I6baf9, b/175294473)

  • Recomposer.current() wurde entfernt. [Summary]ComposeView verwenden jetzt standardmäßig verzögerte, fensterbezogene Recomposers, die vom ViewTreeLifecycleOwner für das Fenster gesteuert werden. Die Neuzusammensetzung und mit FrameNanos-basierte Animationsmarkierungen werden pausiert, während der Hostlebenszyklus angehalten wird. (I38e11)

  • Recomposer.runningRecomposers bietet jetzt einen globalen StateFlow mit schreibgeschütztem RecomposerInfo zur Beobachtung des laufenden Kompositionsstatus während des Prozesses. Bevorzugen Sie diese API Recomposer.current(), da diese mittlerweile eingestellt wurde. (If8ebe)

Version 1.0.0-alpha11

28. Januar 2021

androidx.compose.foundation:foundation:1.0.0-alpha11 und androidx.compose.foundation:foundation-layout:1.0.0-alpha11 werden veröffentlicht. Version 1.0.0-alpha11 enthält diese Commits.

API-Änderungen

  • „scrollBy“ ohne Sperrung verwerfen, „scrollTo nicht sperren“ entfernen

    Wir empfehlen jetzt, Funktion zum Sperren zu verwenden, um das Scrollen zu steuern und zu warten, bis das Scrollen beendet ist. Im Rahmen dieser Umstellung werden die Versionen dieser Funktionen, die nicht gesperrt sind, eingestellt und/oder entfernt. (Ie9ced)

  • smoothScrollBy ohne Sperrung einstellen. Wir empfehlen jetzt die Verwendung von Sperrfunktionen, um das Scrollen zu steuern und zu warten, bis das Scrollen abgeschlossen ist. Im Rahmen dieser Umstellung werden die Versionen dieser Funktionen, die nicht gesperrt sind, eingestellt. (I12880)

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

  • BasicTextField hat einen neuen Parameter namens „decorationBox“ erhalten. Sie können Dekorationen wie Symbole, Platzhalter, Beschriftungen und Ähnliches wie das Textfeld hinzufügen und den Zielbereich des Textfelds vergrößern. (I16996)

  • Der Parameter „canDrag“ wurde aus „Modifier.draggable“ entfernt (Ic4bec, b/175294473).

  • Die Funktion „AnimierteFloat.fling“, die FlingConfig akzeptiert, wurde entfernt. Verwenden Sie stattdessen „animatable.animateDecay“. (I4659b, b/177457083)

  • data class wurde aus den folgenden Klassen entfernt:

    • InlineTextContent
    • Sprachliste
    • (I605c7)
  • klickbar, ein-/ausschaltbar und auswählbar, können jetzt außerhalb der Komposition erstellt werden (I0a130, b/172938345, b/175294473)

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

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

  • Das eingestellte AbsoluteArrangement wurde entfernt. (Iffa96, b/177641870)

  • Der Parameter „proConstraints“ wurde zu Box hinzugefügt, um anzugeben, ob die eingehenden Mindesteinschränkungen an den Inhalt der Box übergeben werden sollen oder nicht. Der Standardwert ist „false“. (I0125b, b/152613457)

Fehlerkorrekturen

  • onCommit, onDispose und onActive wurden zugunsten der SideEffect und DisposableEffect APIs (If760e) eingestellt
  • WithConstraints wurde in „BoxWithConstraints“ umgestaltet und nach „fundation.layout“ verschoben. (I9420b, b/173387208)
  • Änderungen an den Werksfunktionen für Schriftart/Schriftart/Schriftart

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

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

  • Die Dichte ist jetzt der Empfängerumfang für Arrangement-Schnittstellen. (I18aad)

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

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

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

  • Dauer und Betriebszeit werden durch lange Millisekunden ersetzt. Mit diesem Schritt wird die Abhängigkeit der Zeigereingabe von diesen Klassen beseitigt. (Ia33b2, b/175142755, b/177420019)

  • MerkObserver ersetzt CompositionLifecycleObserver und CompositionLifecycleObserver wurde jetzt eingestellt.

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

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

  • TransformedText.transformedText wurde in TransformedText.text umbenannt

    • TransformedText ist keine Datenklasse mehr (Ie672a).
  • Die folgenden Klassen sind keine Datenklassen mehr:

    • AnnotatedString
    • Absatzstil
    • SpanStyle
    • Textstil
    • Schriftstärke
    • Textdekoration
    • TextGeometricTransform
    • Textindex
    • TextLayoutResult
    • TextLayoutInput (Iaff99)
  • Die experimentellen monotonicFrameAnimationClockOf-Methoden (Ib753f, b/170708374) wurden entfernt.

  • Globale Koordinatenmethoden wurden verworfen und neue fensterbasierte Koordinatenmethoden eingeführt. (Iee284)

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

    • Verwenden Sie „ImeAction.Default“ anstelle von „ImeAction.Unspecific“ (Ie1bcc).
  • FocusRequester.createRefs ist jetzt als experimentell gekennzeichnet, da es sich möglicherweise ändern kann. (I2d898, b/177000821)

  • „SemanticsPropertyReceiver.hidden“ wurde in „invisibleToUser“ umbenannt und mit „@ExperimentalComposeUiApi“ gekennzeichnet. „AccessibilityRangeInfo“ wurde in „ProgressBarRangeInfo“ umbenannt. „stateDescriptionRange“ wurde in „progressBarRangeInfo“ umbenannt. „AccessibilityScrollState“ wurde in „ScrollAxisRange“ umbenannt. „horizontalAccessibilityScrollState“ wurde in „horizontalAccessibilityScrollState“ umbenannt. „verticalAccessibilityScrollState“ wurde in „VerticalScrollAxisRange“ umbenannt. (Id3148)

  • VisualTransformation wurde in eine funktionsfähige Schnittstelle geändert (I3bba4)

  • TestCoroutineDispatcher beim Testen verwenden (I532b6)

  • PointerInputData wurde entfernt und PointerInputChange geändert, um alle Felder von PointerInputData bereitzustellen. PointerInputEvent und PointerInputEventData wurden intern erstellt, da sie in keiner öffentlichen API verwendet werden. (Ifff97, b/175142755)

  • TextInputService.onStateUpdated in updateState (Id4853) umbenannt

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

Version 1.0.0-alpha10

13. Januar 2021

androidx.compose.foundation:foundation:1.0.0-alpha10 und androidx.compose.foundation:foundation-layout:1.0.0-alpha10 werden veröffentlicht. Version 1.0.0-alpha10 enthält diese Commits.

API-Änderungen

  • ImeOptions und KeyboardOptions sind keine Datenklassen mehr (I3c898, b/168684531).
  • Änderungen an der VisualTransformation API
    • OffsetMap wurde in OffsetMapping umbenannt
    • OffsetMapping.identityOffsetMap wurde in OffsetMapping.Identity umbenannt
    • PasswordTransformation ist nicht mehr Datenklasse
    • OffsetMapping wurde in seine eigene Datei verschoben
    • (I0bdf3)
  • Änderungen an der EditOperations API
    • EditOperation wurde in EditCommand umbenannt
    • Befehlssuffix für konkrete EditOperation-Implementierungen hinzugefügt
    • „EditCommand“ ist keine Datenklassen mehr
    • Funktion "EditOperation.process" wurde in "applyTo" umbenannt
    • InputEventListener wurde in InputEventCallback umbenannt.
    • (I0a366)
  • Die Geschwindigkeit wurde so geändert, dass Komponenten und mathematische Operationen enthalten sind. (Ib0447)
  • @ExperimentalTesting wurde in @ExperimentalTestApi umbenannt, um die Konsistenz mit ähnlichen experimentellen API-Annotationen zu gewährleisten (Ia4502, b/171464963).
  • Zusätzliche experimentelle stickyHeader-Methode für LazyColumn/LazyRow (I0a81d)
  • Ranamed Color.useOrElse() zu Color.takeOrElse() (Ifdcf5)
  • TestUiDispatcher wurde eingestellt. Stattdessen „Dispatchers.Main“ verwenden (Ic171f, b/175385255)
  • Ein/Aus-Schaltfläche zu Foundation Strings.kt hinzufügen (I4a5b7, b/172366489)
  • „nativeClass“ wurde in ein UI-Modul verschoben und intern gemacht. Die Verwendung von „nativeClass“ in gleich-Implementierungen wurde aktualisiert, um stattdessen „is MyClass“ zu verwenden. (I4f734)
  • FlowRow und FlowColumn wurden eingestellt. Bitte verwenden Sie stattdessen ein benutzerdefiniertes Layout. (I09027)
  • Modifier.focus() und Modifier.focusRequester() wurden eingestellt. Verwenden Sie stattdessen Modifier.focusModifier() und Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
  • Einführung von SelectionRegistrar.notifySelectableChange zur Benachrichtigung von Selectable-Updates für SelectionManager. (I6ff30, b/173215242)
  • fun Dp.isFinite() in val Dp.isFinite geändert (I50e00)
  • „Constraints#FreeBy“ wurde in „isSatisfiedBy“ umbenannt. (I9cf5c)
  • Für Inline-Klassen mit einer nicht spezifizierten Konstante wurden „isspezifiziert“, „isUnspecific“ und „useOrElse“ hinzugefügt. (I93f7b, b/174310811)

Fehlerkorrekturen

  • Neue koroutinenbasierte API Animatable, die eine gegenseitige Exklusivität in den Animationen gewährleistet. Neues DecayAnimationSpec zur Unterstützung der mehrdimensionalen Abnahmeanimation (I820f2, b/168014930)
  • Unterstützung für deaktivierte und schreibgeschützte Textfelder hinzugefügt (I35279, b/171040474, b/166478534)
  • animate() wird jetzt durch animateAsState() ersetzt, wodurch ein State<T> anstelle von T zurückgegeben wird. Dies führt zu einer besseren Leistung, da der Entwertungsbereich darauf beschränkt werden kann, wo der Statuswert gelesen wird. (Ib179e)
  • Fügen Sie die Semantics Role API und den klickbaren, auswählbaren und ein-/ausschaltbaren SemanticsModifier als Parameter hinzu. Modifizierer.progressSemantics geändert, sodass der Slider ihn ebenfalls verwenden kann. (I216cd)
  • Auf das native keyEvent kann jetzt über keyEvent.nativeKeyEvent zugegriffen werden (I87c57, b/173086397).

Version 1.0.0-alpha09

16. Dezember 2020

androidx.compose.foundation:foundation:1.0.0-alpha09 und androidx.compose.foundation:foundation-layout:1.0.0-alpha09 werden veröffentlicht. Version 1.0.0-alpha09 enthält diese Commits.

API-Änderungen

  • Scrollbare Oberfläche hinzufügen

    Dadurch können ScrollState und LazyListState als ein gemeinsamer Typ behandelt werden, sodass benutzerdefiniertes Scrollen für beide Typen implementiert werden kann.

    Dadurch wird smoothScrollBy auch zu einer Erweiterungsfunktion in „Scrollable“ verschoben, die diese Funktion nutzt. (I2153b)

  • LazyVerticalGrid wird hinzugefügt. (I17267, b/162213211)

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

  • Zum Anhalten von Pointer-Eingabe-APIs wurde HandlePointerInputScope in AwaitPointerEventScope und handlePointerInput() in awaitPointerEventScope() umbenannt. (Idf0a1, b/175142755)

  • LazyListState.layoutInfo wurde hinzugefügt, wodurch eine Liste der Größen und Offsets der aktuell sichtbaren Elemente verfügbar wird (If8678, b/170472532).

  • Die Annotation "ExperimentalPointerInput" (Ia7a24) wurde entfernt.

  • InteractionState-Unterstützung für Textfelder wurde hinzugefügt. (I61d91)

  • Fügen Sie einen ReverseLayout-Parameter für LazyColumn/Row hinzu. Wenn true-Elemente von unten nach oben zusammengesetzt werden und LazyListState.firstVisibleItemIndex == 0 bedeutet, dass sich das erste Element ganz unten befindet. (I552ae, b/166589935)

  • verticalArrangement-Parameter wurden für LazyColumn hinzugefügt. Der Parameter „HorizontalArrangement“ wurde für LazyRow hinzugefügt. Mithilfe des Arrangements können wir einen Abstand zwischen den Elementen hinzufügen und die Anordnung der Elemente festlegen, wenn nicht genügend Platz vorhanden ist, um die Mindestgröße zu füllen. (Icf79a, b/170394300)

  • DetectMultitouchGesten verwendet jetzt einen Callback mit kombinierten Parametern für Schwerpunkt, Schwenken, Zoomen und Drehen. (Ie6e1c)

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

Fehlerkorrekturen

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

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

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

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

  • Modifier.focusObserver wurde eingestellt. Verwenden Sie stattdessen Modifier.onFocusChanged oder Modifier.onFocusEvent (I30f17, b/168511863, b/168511484).

  • Die Autofill API ist jetzt eine experimentelle API und erfordert eine Aktivierung (I0a1ec).

  • Destrukturierungsdeklarationen zum Erstellen von FocusRequester-Instanzen hinzufügen (I35d84, b/174817008)

  • „AccessibilityLabel“ wurde in „contentDescription“ umbenannt. „accessibilityValue“ wurde in „stateDescription“ umbenannt. (I250f2)

  • Einführung mehrerer neuer Funktionen im SelectionRegistrar und Umbenennung von „onPositionChange“ in „benachrichtigungPositionChange“. (Ifbaf7)

  • Android-Inhaber intern (Ibcad0, b/170296980)

  • Neue infiniteRepeatable-Funktion zum Erstellen einer InfiniteRepeatableSpec (I668e5)

  • Die Oberfläche Applier wurde geändert, um das Erstellen von Bäumen von unten anstelle von Top-down zu vereinfachen.

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

    Die neue Methode insertBottomUp() wurde hinzugefügt.

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

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

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

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

Version 1.0.0-alpha08

2. Dezember 2020

androidx.compose.foundation:foundation:1.0.0-alpha08 und androidx.compose.foundation:foundation-layout:1.0.0-alpha08 werden veröffentlicht. Version 1.0.0-alpha08 enthält diese Commits.

API-Änderungen

  • Der maxLines-Parameter wurde aus der CoreTextField entfernt. Wenn Sie die Höhe des Textfelds auf die Anzahl der Zeilen beschränken möchten, verwenden Sie stattdessen BasicTextField. (Iec002)
  • Die Methoden await*TouchSlop() wurden so geändert, dass der Zeiger nicht mehr nach unten erkannt wird, und sie wurden in *OrCancellation umbenannt. Außerdem ist der Parameter orientationLock nicht mehr erforderlich. (Ie96e1)
  • Es wurde eine Lint-Prüfung für die Benennung und Position von zusammensetzbaren Lambda-Parametern hinzugefügt, um die Konsistenz mit den Erstellungsrichtlinien zu prüfen. Außerdem wurden einige APIs mit children als Name für die nachgestellte Lambda-Funktion gemäß Lint-Prüfung und Anleitung zu content migriert. (Iec48e)
  • foundation:foundation-text APIs wurden nach foundation:foundation verschoben. Die Paketstruktur blieb unverändert (Id3eb2).
  • Neuer Multi-Touch-Gestenerkennung, einschließlich Hilfsprogrammen zum Erkennen von Drehung, Zoomen und Schwenken. (Ic459d)
  • Neue API zur Erkennung von Ziehbewegungen, die die Zeigereingabe sperrt, einschließlich der Sperre der Ausrichtung. (Icef25)
  • VectorAsset wurde in ImageVector verschoben und VectorAsset wurde in Builder umbenannt, um gemäß den Richtlinien des API-Berats eine innere Klasse von ImageVector zu sein. typealias von VectorAssetBuilder wurde zur Verknüpfung mit ImageVector.Builder für Compat hinzugefügt. (Icfdc8)
  • Umbenennung von ImageAsset und zugehörigen Methoden in ImageBitmap. (Ia2d99)
  • Semantik-Eigenschaften der Grundlage in die Benutzeroberfläche verschoben (I6f05c)
  • Fügen Sie koroutinebasierte Scroll-APIs hinzu:

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

  • Ein singeLine-Parameter wurde in „BasicTextField“, „TextField“ und „OutlinedTextField“ hinzugefügt. Setzen Sie diesen Parameter auf „true“, um das Textfeld zu einer einzelnen horizontal scrollbaren Zeile zu machen. (I57004, b/168187755)

  • Die Bewegungserkennung für Tippen, Doppeltippen, langes Drücken und Drücken wurde mit der neuen Eingabe für den Anhalten des Zeigers hinzugefügt. Außerdem wurden einige Dienstprogramme hinzugefügt, mit denen Entwickler ihre eigenen Gestendetektoren einfacher schreiben können. (I00807)

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

  • Zuvor eingestellte APIs wurden entfernt: Der Rahmen wurde entfernt. Verwende stattdessen BorderStroke. "Modifier.drawBorder" wurde entfernt. Verwende stattdessen "Modifier.bound". Modifier.gravity wurde entfernt. Verwende stattdessen Modifier.align. Stack wurde entfernt, verwenden Sie stattdessen Box (I32c2b, b/172470874)

  • „AbsoluteArrangement“ wurde in „Arrangement.Absolute“ umbenannt. (If26f2)

Fehlerkorrekturen

  • Die DrawModifier APIs wurden aus dem Paket „androidx.compose.ui“ in das Paket „androidx.compose.ui.draw“ verschoben. Erstellung der Datei DrawModifierveraltet.kt zur Einbindung von typealiases/helper-Methoden zur Unterstützung der Migration von den eingestellten zu den aktuellen APIs (Id6044, b/173834241)
  • Umbenennung von Modifier.drawLayer in Modifier.graphicsLayer. Entsprechend dem Feedback des API Councils wurden auch verwandte Klassen in "GraphicsLayer" aktualisiert. (I0bd29, b/173834241)
  • <T> wurde aus der SubcomposeLayout-Deklaration entfernt. Sie können sie jetzt verwenden, ohne einen Typ anzugeben. (Ib60c8)
  • Die Verfügbarkeits- und Positionsfelder von PointerInputData sind nicht mehr Nullwerte zulässig. (Id468a)
  • „MaterialTheme“ legt jetzt die richtigen Farben für Auswahlziehpunkte und Auswahlhintergrund fest. Nicht-Material-Apps können AmbientTextSelectionColors manuell verwenden, um die für die Auswahl verwendeten Farben anzupassen. (I1e6f4, b/139320372, b/139320907)
  • Der Ausrichtungsparameter von Box wurde in contentAlignment umbenannt. (I2c957)
  • Die Modifikatoren „offsetPx“ wurden in „offset“ umbenannt. Sie verwenden jetzt Lambda-Parameter anstelle von „State“. (Ic3021, b/173594846)
  • WindowManager.isWindowFocused wurde hinzugefügt, um zu überprüfen, ob das Host-Fenster im Fokus ist, sowie ein WindowFocusObserver, das einen onWindowFocusChanged-Callback bereitstellt. (I53b2a, b/170932874)
  • Der Parameter „resetInput“ wurde zu TextInputService#onStateUpdated hinzugefügt (I3e8f5, b/172239032, b/171860947).
  • Die TextFieldValue API wurde aktualisiert.
    • TextFieldValue.composition schreibgeschützt
    • Entfernte Ausnahme für ungültigen Auswahlbereich ausgelöst (I4a675, b/172239032)
  • Ambients mit dem Namen Ambient als Suffix wurden eingestellt und durch neue Properties mit dem Präfix „Ambient“ ersetzt. Dabei wurden andere Richtlinien für Ambients und die Compose API befolgt. (I33440)
  • Android Typeface-Wrapper wurde hinzugefügt. Sie können ein Android-Schriftarten über die Funktion typeface laden, z.B. typeface(Typeface.DEFAULT). Auch typefaceFromFontFamily() in typeface() umbenannt (I52ab7)
  • Eine Lint-Prüfung wurde hinzugefügt, um zu überprüfen, ob Modifikator-Factorys intern androidx.compose.ui.composed {} verwenden, anstatt als @Composable markiert zu sein. (I3c4bc)
  • Es wurde eine Lint-Prüfung hinzugefügt, mit der geprüft wird, ob die Werksfunktionen des Modifiers im Modifier als Erweiterungen definiert sind, sodass sie fließend miteinander verkettet werden können. (I07981)
  • Das Semantics-Argument „mergeAllDescendants“ wurde in „mergeDescendants“ umbenannt. (Ib6250)
  • Die Zeitsteuerung in Tests (TestAnimationClock und deren Nutzung) ist jetzt experimentell (I6ef86, b/171378521).
  • Entfernen Sie das alte UI-Test-Modul und die zugehörigen Stubs (I3a7cb).
  • „TextUnit.Inherit“ wird in „TextUnit.Unspecific“ (in Übereinstimmung mit anderen Einheiten) umbenannt. (Ifce19)
  • Die Ausrichtungsoberfläche wurde aktualisiert und funktionsfähig gemacht. (I46a07, b/172311734)
  • Das Modul „foundation:foundation-text“ wurde mit „foundation:foundation“ (Idac0f) zusammengeführt.
  • „place(Offset)“ und „placeRelative(Offset)“ werden abgelehnt. Verwenden Sie stattdessen Überlastungen mit Ganzzahl-Offsets (I4c5e7).
  • id wurde für LayoutIdParentData in layoutId umbenannt. Measurable.id wurde in Measurable.layoutId umbenannt. (Iadbcb, b/172449643)

Version 1.0.0-alpha07

11. November 2020

androidx.compose.foundation:foundation:1.0.0-alpha07, androidx.compose.foundation:foundation-layout:1.0.0-alpha07 und androidx.compose.foundation:foundation-text:1.0.0-alpha07 wurden veröffentlicht. Version 1.0.0-alpha07 enthält diese Commits.

API-Änderungen

  • Ähnlich wie bei Modifier.fillMaxSize[Width|Height] unterstützen wir jetzt Brüche in Modifier.fillParentMaxSize[Width|Height] im Bereich von LazyColumn/Row (I797e2, b/166586426).
  • KeyboardOptions.toImeOptions wurde aus der öffentlichen API entfernt. (Ic2e45)
  • Die Grundlagen „AmbientTextStyle“, „ ProvideTextStyle“ und „AmbientContentColor“ wurden eingestellt. Verwenden Sie stattdessen die neuen Versionen, die in der Materialbibliothek verfügbar sind. Für Anwendungen, die keine Material sind, sollten Sie stattdessen Ihr eigenes Designsystem erstellen, das Themen als Ambients definiert, die in Ihren eigenen Komponenten verwendet werden können. (I74acc, b/172067770)
  • „fundation.Text“ wurde eingestellt und durch „material.Text“ ersetzt. Eine einfache, neutrale Text-API, die keine Werte aus einem Design verwendet, finden Sie unter androidx.compose.foundation.BasicText. (If64cb)
  • „maxLines“ wurde zu Textfeldern hinzugefügt (Ib2a5b)
  • Textfelder aktualisieren, damit KeyboardOptions unterstützt werden (Ida7f3)
  • KeyboardOptions zur Verwendung in Textfeldern hinzugefügt (I9ca32).
  • Ergänzt BasicText als designunabhängige API für Text, parallel zu BasicTextField. (I28268)
  • Die Annotation „ExperimentalLazyDsl“ wurde entfernt. LazyColumn/LazyRow kann jetzt ohne Hinzufügen von @OptIn verwendet werden (Idab7a, b/166584730)
  • „BaseTextField“ wurde eingestellt. Verwenden Sie stattdessen „BasicTextField“. (I896eb)
  • „BasicTextField“ wurde als Ersatz für CoreTextField und BaseTextField (Id4cea) hinzugefügt.
  • Nicht mehr unterstützte LazyColumnItems/LazyRowItems (I1d8a8) entfernen
  • Die eingestellten zusammensetzbaren Funktionen für Größenanpassungen wurden entfernt. (I18537, b/171811496)
  • relativePaddingFrom wurde in „addingFrom“ umbenannt. Der Modifikator „addingFromBaseline“ wurde hinzugefügt, um Abstände zwischen Layoutgrenzen und Textreferenzen einfacher angeben zu können. (I0440a, b/170633813)
  • Der Parameter "matchHeightConstraintsFirst" wurde dem Seitenverhältnis-Modifikator hinzugefügt, mit dem der Modifikator für die Größe-zu-Höhe-Einschränkungen angegeben werden kann, bevor die entsprechenden Breitenwerte ausprobiert werden. (Ie7c43, b/155290593)
  • Die verworfenen DpConstraints wurden entfernt. (I87884, b/171702471)

Fehlerkorrekturen

  • Einführung der Inline-Klasse ScaleFactor zur Darstellung von Skalierungsfaktoren für die horizontale und vertikale Achse unabhängig voneinander, um Anwendungsfälle mit nicht einheitlicher Skalierung zu unterstützen.
    • Die Methode „computeScaleFactor“ wurde zu ContentScale hinzugefügt.
    • ContentScale.FillBounds wurde hinzugefügt, um eine uneinheitliche Skalierung durchzuführen und die Quellgrenzen so zu erweitern, dass das Ziel vollständig belegt ist.
    • Es wurden Operatormethoden zur Berechnung von ScaleFactor-Parametern mit Größenparametern hinzugefügt.
    • (Ic96a6, b/172291582)
  • „CaptureToBitmap“ wurde nach „CaptureToImage“ verschoben. (I86385)
  • Kennzeichnet CoreText als @InternalTextApi. Verwenden Sie stattdessen BasicText. (I6aaeb)
  • Benennen Sie KeyboardOptions in ImeOptions um (I82f36).
  • KeyboardType und ImeAction wurden in KeyboardOptions (I910ce) verschoben.
  • CoreTextField wurde als „@InternalTextApi“ gekennzeichnet. Stattdessen BasicTextField verwenden (Ie2469)
  • Die Annotation ExperimentalSubcomposeLayoutApi wurde entfernt. SubcomposeLayout kann jetzt ohne Hinzufügen von @OptIn verwendet werden (I708ad)
  • Einführung des Moduls „ui-test-junit4“ (Ib91f8)
  • Die Icon API wurde aktualisiert, sodass „Color.Nicht angegeben“ als mögliche Farbton verwendet wird, mit der das bereitgestellte Asset oder Painter ohne „ColorFilter“ gezeichnet wird. Bisher wurde versucht, die Färbung mit „Color“ zu ignorieren.Wenn keine Angabe gemacht wurde, wurde eine transparente Farbe verwendet, wodurch überhaupt nichts gerendert wurde. (I049e2, b/171624632)
  • „MeasureResult“ wurde aus MeasureScope verschoben. (Ibf96d, b/171184002)
  • Einige Layout-Symbole wurden von androidx.compose.ui nach androidx.compose.layout.ui verschoben. (I0fa98, b/170475424)
  • androidx.ui.test wurde nach androidx.compose.ui.test verschoben (I9ffdb)
  • FirstBaseline und LastBaseline wurden in das Paket „androidx.compose.ui.layout“ (Ied2e7) verschoben
  • SelectionContainer ohne Callback (Ibfadb) hinzugefügt
  • Tests für die Positionen von SelectionHandles im SelectionContainer hinzufügen. Ie93db:
  • Autokorrektur für Tastatur-IME-Option (I57b8d) hinzugefügt

Version 1.0.0-alpha06

28. Oktober 2020

androidx.compose.foundation:foundation:1.0.0-alpha06, androidx.compose.foundation:foundation-layout:1.0.0-alpha06 und androidx.compose.foundation:foundation-text:1.0.0-alpha06 wurden veröffentlicht. Version 1.0.0-alpha06 enthält diese Commits.

API-Änderungen

  • „androidx.compose.foundation.Icon“ wurde nach „androidx.compose.material.Icon“ verschoben. Sie können die Image-Komponente / Modifier.paint() auch mit einem Painter verwenden, wenn Sie die Material-Bibliothek nicht verwenden möchten. (I9f622)
  • „interaktionState“ wurde zu „Modifier.scrollable“, „ScrollableColumn“ und „LazyColumnFor“ hinzugefügt (I81566, b/169509805).
  • „alignByBaseline“ wurde zu RowScope hinzugefügt und „alignWithSiblings“ wurde in „alignBy“ (I06503, b/170628732) umbenannt.
  • Box wurde als Inline-Funktion erstellt. (Ibce0c, b/155056091)
  • „maxLines“ wurde zu CoreTextField hinzugefügt (Ibee58, b/143687793)
  • CoreTextField wurde hinzugefügt. Softwrap wurde hinzugefügt. (I21a4b)

Fehlerkorrekturen

  • Sie sollten VectorPainter zugunsten von MemorystorePainter abschaffen, um besser darauf hinzuweisen, dass die zusammensetzbare API intern das „Erinnern“ nutzt, um Daten über mehrere Kompositionen hinweg zu speichern. (Ifda43)
  • Übergänge in ComposeTestRule aktivieren und die Option zum Aktivieren des blinkenden Cursors in ComposeTestRule entfernen. (If0de3)
  • CoreTextField (I72e6d) bietet eine einzeilige Tastaturoption.
  • Die Radius API wurde in CornerRadius umbenannt, um ihre Verwendung in der Funktion „Compose“ besser zu verdeutlichen. Die Dokumentation wurde aktualisiert, um anzugeben, dass negative Eckradien auf null gebunden sind. (I130c7, b/168762961)
  • Möglichkeit hinzugefügt, Informationen zum Prüftool in zusammengesetzten Modifikatoren anzugeben (Idee08, b/163494569)
  • IME-Option für Großschreibung wurde hinzugefügt (I8ac38)
  • Position des Rtl-Ziehpunkts korrigieren. (I6e1e0)
  • Nicht abwärtskompatible Änderung: Der Rückgabewert wurde aus PointerInputFilter.onPointerEvent(...) entfernt, da der einzige Wert, der in Zeigerereignissen geändert werden sollte, Verbrauchsdaten sind. Anstatt Daten von PointerInputFilter.onPointerEvent(...) zurückzugeben, können Sie jetzt nur die Verbrauchsdaten der übergebenen PointerEvents ändern. (I6acd0)
  • Option „SelectAll“ wurde dem Auswahlmenü hinzugefügt (Ief02b).

Version 1.0.0-alpha05

14. Oktober 2020

androidx.compose.foundation:foundation:1.0.0-alpha05, androidx.compose.foundation:foundation-layout:1.0.0-alpha05 und androidx.compose.foundation:foundation-text:1.0.0-alpha05 wurden veröffentlicht. Version 1.0.0-alpha05 enthält diese Commits.

API-Änderungen

  • CoreTextField unterstützt jetzt Cursorfunktionen (Id23aa).
  • Die APIs „contentColor()“ und „currentTextStyle()“ werden verworfen und durch die AmbientContentColor- bzw. die AmbientTextStyle-Ambiente ersetzt. Wie bei allen anderen Ambient-Attributen können Sie mit .current auf den aktuellen Wert zugreifen. Diese Änderung wurde aus Gründen der Einheitlichkeit vorgenommen, um zu vermeiden, dass mehrere Wege für das Gleiche verfügbar sind. Außerdem werden einige Umgebungseigenschaften umbenannt, um ihren Zweck besser zu beschreiben:

    • ContentColorAmbient -> AmbientContentColor
    • TextStyleAmbient -> AmbientTextStyle
    • IndicationAmbient -> AmbientIndication
    • EmphasisAmbient -> AmbientEmphasisLevels
    • RippleThemeAmbient -> AmbientRippleTheme (I37b6d)

Fehlerkorrekturen

  • Im Rahmen der Standardisierung von Sentinel-Werten für Inline-Klassen müssen Sie „Color.Unset“ in „Color.Unset“ umbenennen, um Konsistenz mit anderen Inline-Klassen zu gewährleisten (I97611, b/169797763).
  • Bedienungshilfeaktionen „Kopieren/Einfügen/Ausschneiden“ hinzugefügt (I6db4f)
  • TextOverflow.None wird eingeführt. Wenn der overflow-Objekt den Wert "None" hat, verarbeitet der Text den Überlauf nicht mehr und meldet seine tatsächliche Größe an LayoutNode. (I175c9, b/158830170)
  • Die nicht spezifizierten „Size.Unspecific“-Parameter wurden auf Float.NaN anstelle von Float.POSITIVE_INFINITY aktualisiert. Painter-Implementierungen wurden aktualisiert, um sie auf „Size.Unspecific“ und nicht endliche Größen zu vergleichen. (I95a7e)
  • Paging Compose-Modul und Paging-Integration hinzugefügt (Ib85da)
  • Änderung von LazyListScope, um Nullwertewerte zu erhalten (I1765b)
  • "OnPositionedModifier" wird in "OnGloballyPositionedModifier" und "onPositioned()" in "onGloballyPositioned()" umbenannt. (I587e8, b/169083903)
  • Beispiele für LazyColumn/Row (Idc16d) hinzugefügt
  • Fehlerkorrektur für die Methoden „itemsIndexed“ und „itemIndexed“, sodass „leerList“ zugelassen wird (I06647)
  • DSL zum Angeben von Inspector-Informationen hinzufügen (Ic9a22)
  • Langes Drücken in Text verschieben. (Iff2bc)
  • Deaktivieren Sie die Auswahl in Text und eine Demo. (Ie7e97)
  • Unterstützung für die Barrierefreiheit von AnnotatedString in SpannableString (Ief907)
  • PointerInputFilter.onPointerInput(...) wurde entfernt. Stattdessen sollte PointerInputFilter.onPointerEvent(...) verwendet werden. (I6f04a)

Version 1.0.0-alpha04

1. Oktober 2020

androidx.compose.foundation:foundation:1.0.0-alpha04, androidx.compose.foundation:foundation-layout:1.0.0-alpha04 und androidx.compose.foundation:foundation-text:1.0.0-alpha04 wurden veröffentlicht. Version 1.0.0-alpha04 enthält diese Commits.

API-Änderungen

  • Stack wurde in Box umbenannt. Die zuvor vorhandene „Foundation.Box“ wird eingestellt und durch die neue Box in „compose.foundation.layout“ ersetzt. Das Verhalten des neuen Box besteht darin, untergeordnete Elemente übereinander zu stapeln, wenn es mehrere untergeordnete Elemente hat. Dies unterscheidet sich vom vorherigen Box, das sich ähnlich wie eine Column verhält. (I94893, b/167680279)
  • Parameter für die Dekoration von Boxen wurden eingestellt. Wenn Ihre Box Dekorationen/Füllungen enthalten soll, verwenden Sie stattdessen Modifiers (Modifier.background, Modifier.bound, Modifier.adding) (Ibae92, b/167680279).
  • Fügen Sie eine neue LazyListState-Klasse hinzu. So können Sie die Scrollposition von LazyRow- und LazyColumn-Komponenten beobachten und steuern. Instanzen können mit „rememberLazyListState()“ erstellt und an den Statusparameter der Komponente übergeben werden. Derzeit können das erste sichtbare Element und die ersten Offsets in dieser anfänglichen Version beobachtet werden. (Ic7cb7, b/159307669)
  • Position und Scroll-Offset der Lazy-Liste werden jetzt bei der Aktivitätserstellung gespeichert und wiederhergestellt (Ie045f, b/166589058).
  • Semantikaktion für lange Klicks hinzufügen (I6281b, b/156468846)
  • MutatorMutex-Dienstprogramm wurde hinzugefügt, um einen einzelnen Mutator mit gemeinsamem Status über einen bestimmten Zeitraum beizubehalten und in Konflikt stehende Mutatoren nach Priorität abzubrechen (I3f975)
  • Die annotierte „rootAnimationClockFactory“, „transitsEnabled“, „blinkingCursorEnabled“ und „textInputServiceFactory“ mit @visibleForTesting, die in die interne API umgewandelt und die KDOC-Datei ausgeblendet wird (I554eb, b/168308412)
  • Der InlineContent-Parameter wurde aus der Texteingabe mit String entfernt. Er wird nicht verwendet, da inlineContent mit AnnotatedString funktionieren muss. (Ief403)
  • Die verworfenen benutzerdefinierten Arrangement APIs wurden entfernt. (Ic576d, b/168297922, b/168297923)
  • Der Parameter unbounded wurde den wrapContentSize-Modifikatoren hinzugefügt, die das Messen des Layoutelements mit unbegrenzten Einschränkungen für maximale Anzahl ermöglichen. (I77951, b/158559319)
  • Statische Importe von Inhalten von Layoutbereichen (z.B. „alignWithSiblings“ in RowScope) wurden verhindert. Stattdessen sollte die explizite Option „with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }“ verwendet werden. (I216be, b/166760797)

Fehlerkorrekturen

  • Viele Graphics APIs wurden aktualisiert.
    • Die APIs für Skalierungs- und Rotationstransformationen wurden aktualisiert, sodass ein einziger Offset-Parameter zur Darstellung der Pivot-Koordinaten anstelle separater Gleitkomma-Parameter für die x/y-Koordinaten in DrawScope und DrawTransform verwendet wird.
    • Die Methoden Rect.expandToInclude und Rect.join wurden entfernt.
    • Die Dokumentation für den Radius wurde aktualisiert, sodass jetzt neben dem Ellipsentrainer auch „Oval“ angezeigt wird.
    • Es wurde eine Dokumentation hinzugefügt, in der angegeben wird, dass der öffentliche Konstruktor für die Inline-Radius-Klasse nicht direkt aufgerufen werden soll. Radius-Objekte sollten stattdessen über ihre Funktionskonstruktoren instanziiert werden.
    • RoundRect APIs zur Abfrage von topRight, bottomRight, bottomCenter usw. wurden entfernt.
    • Rect.shift wurde zugunsten von Rect.translate eingestellt
    • RoundRect.grow und Rect.shrink APIs entfernt
    • RoundRect.outerRect wurde in Rect.boundingRect umbenannt
    • Die Methoden RoundRect.middleRect/tallMiddleRect/wideMiddleRect und Rect.isStadium wurden entfernt.
    • RoundRect.longestSide wurde umbenannt in RoundRect.maxDimension
    • RoundRect.shortestSide wurde in RoundRect.minDimension umbenannt
    • RoundRect.center wurde in eine Eigenschaft anstelle einer Funktion geändert
    • Der RoundRect-Konstruktor wurde so aktualisiert, dass Radiuseigenschaften anstelle einzelner Parameter für x/y-Radiuswerte verwendet werden.
    • APIs für die Größe, bei denen angenommen wurde, dass es sich um ein Rechteck mit dem Ursprung 0,0 handelt, wurden entfernt.
    • Zerstörende API zu Radius hinzugefügt
    • Verschiedene RoundRect-Erweiterungsfunktionen wurden zu Eigenschaften migriert
    • (I8f5c7, b/168762961)
  • Leistungsoptimierungen für LazyColumnFor/LazyRowFor, indem keine unnötigen Neuzusammensetzungen bei jedem Scrollen vorgenommen werden (I64f65, b/168293643, b/167972292, b/165028371)
  • Behebung eines Absturzes in LazyColumnFor/LazyRowFor nach dem Scrollen und dem anschließenden Ändern von Elementen und Implementierung des automatischen Scrollens nach oben, wenn das zuvor sichtbare Element entfernt wurde, damit am Ende keine leeren Lücken mehr angezeigt werden (I220ab, b/161480164, b/167855468).
  • Container, die in dieselbe Richtung scrollen können, wie ScrollableContainer und LazyColumnFor, können nicht mehr verschachtelt werden. Sie wurde nie unterstützt und brach den Effekt und brach die Faulheit beim Erstellen der Elemente von LazyColumnFor (I6e101).
  • Viele Graphics APIs wurden aktualisiert.
    • Wir haben die DrawScope APIs mit bereichsspezifischen Transformationsmethoden aktualisiert, um anzuzeigen, dass die Transformation nur innerhalb des Callbacks angewendet und entfernt wird, nachdem der Callback aufgerufen wurde.
    • Die „clipPath“-Dokumentation wurde aktualisiert, sodass jetzt auf „Pfad“ und nicht auf ein abgerundetes Rechteck verwiesen wird.
    • In der Dokumentation wurde der Abstand für den rechten Parameter in „clipPath“ festgelegt.
    • „DrawScope.drawCanvas“ wurde in „drawIntoCanvas“ umbenannt und der Größenparameter wurde entfernt.
    • Umbenennung der dx/dy-Parameter in der Einfügungsmethode in horizontal und vertikal
    • Zusätzliche Überlastung, die allen 4 Grenzen denselben Wert bietet,
    • Die Dokumentation zur Einfügungsmethode, die darauf hinweist, dass Einsatz auf alle 4 Seiten angewendet wird, wurde entfernt.
    • Aktualisierte Dokumentation für die Rect-Klasse
    • Die Kommentare zu den Rect-Parametern wurden aktualisiert, damit sie dem kdoc-Stil entsprechen.
    • Rect.join und Rect.expandToInclude entfernt
    • Überlastung für Rect.translate(offset) erstellt und Rect.shift eingestellt
    • (If086a, b/167737376)
  • den Semantikeigenschaften „AccessibilityScrollState“ hinzufügen. (Ifeda9)
  • Machen Sie TextRange inline, um die Erstellung von Objekten zu vermeiden. (Id034b)
  • Absatzeinschränkungen wurden entfernt. Die Breite wird jetzt direkt an Absatz übergeben. (ICA712)

Version 1.0.0-alpha03

16. September 2020

androidx.compose.foundation:foundation:1.0.0-alpha03, androidx.compose.foundation:foundation-layout:1.0.0-alpha03 und androidx.compose.foundation:foundation-text:1.0.0-alpha03 wurden veröffentlicht. Version 1.0.0-alpha03 enthält diese Commits.

API-Änderungen

  • InnerPadding wurde in PaddingValues umbenannt. (I195f1, b/167389171)
  • Die Nutzung der Gravitation wurde konsequent umbenannt, um die Layout-APIs auszurichten. (I2421a, b/164077038)
  • Für die Filterliste wurde ein Parameter für die Ausrichtung hinzugefügt, mit dem die Standardausrichtung für alle untergeordneten Elemente angegeben werden kann. (Ie80ca, b/164085265)

Fehlerkorrekturen

  • DpConstraints und APIs, die sie verwenden, wurden eingestellt. (I90cdb, b/167389835)
  • Die Parameter minWidth und maxWidth von widthIn wurden in min und max umbenannt. Ähnliches gilt für preferredWidthIn, heightIn, preferredHeightIn. (I0e5e1, b/167389544)
  • onNode und andere globale Methoden wurden zu ComposeTestRule hinzugefügt, da die aktuellen globalen Methoden nicht mehr unterstützt werden. (IEAe36)
  • Größen- und Positionsberechnungen in GestenScope wurden korrigiert, was unter anderem zu ungültigen Wischgesten führte (Iaf358, b/166589947).
  • createAndroidComposeRule und AndroidInputDispatcher von androidx.ui.test.android nach androidx.ui.test verschoben (Idef08, b/164060572)

Version 1.0.0-alpha02

2. September 2020

androidx.compose.foundation:foundation:1.0.0-alpha02, androidx.compose.foundation:foundation-layout:1.0.0-alpha02 und androidx.compose.foundation:foundation-text:1.0.0-alpha02 wurden veröffentlicht. Version 1.0.0-alpha02 enthält diese Commits.

Fehlerkorrekturen

  • TestUiDispatcher ist als experimentell gekennzeichnet (Iae99d, b/161247083).
  • ManualFrameClock.hasAwaiters wurde hinzugefügt, um zu sehen, ob etwas auf einen Frame ab dieser Uhr gewartet wird; runWithManualClock als Ersatz für runBlocking beim Ausführen von Tests, die eine ManuelleFrameClock benötigen; TestUiDispatcher.Main, das einfachen Zugriff auf den primären UI-Dispatcher in Ihren Tests ermöglicht.

    Beispiele:

    @Test
    fun myTest() = runWithManualClock { clock ->
        // set some compose content
        withContext(TestUiDispatcher.Main) {
            clock.advanceClock(1000L)
        }
        if (clock.hasAwaiters) {
            println("The clock has awaiters")
        } else {
            println("The clock has no more awaiters")
        }
    }
    

    (I0a85b, b/161247083)

Version 1.0.0-alpha01

26. August 2020

androidx.compose.foundation:foundation:1.0.0-alpha01, androidx.compose.foundation:foundation-layout:1.0.0-alpha01 und androidx.compose.foundation:foundation-text:1.0.0-alpha01 wurden 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.foundation:foundation:0.1.0-dev17, androidx.compose.foundation:foundation-layout:0.1.0-dev17 und androidx.compose.foundation:foundation-text:0.1.0-dev17 wurden veröffentlicht. Version 0.1.0-dev17 enthält diese Commits.

API-Änderungen

  • Das „spacedBy“-Arrangement wurde für „Row“ (Zeile) und „Column“ (Spalte) hinzugefügt, um Layoutunterelemente mit einem festen Abstand zu positionieren. Das ausgerichtete Layout wurde ebenfalls hinzugefügt, um Layout-Unterelemente nebeneinander zu positionieren und gemäß einer Ausrichtung in der Zeile/Spalte auszurichten. Die vorherigen Methoden Arrangement.Vertical#arrange und Arrangement.Horizontal#arrange wurden eingestellt. Das Schreiben benutzerdefinierter Arrangement-Methoden wird in Zukunft nicht mehr unterstützt. (I6733d, b/161985975)
  • „Offset“ wurde zu einer Inline-Klasse (Iaec70)
  • onFocusChanged-Callbacks wurden aus TextField entfernt. Verwenden Sie stattdessen Modifier.focusObserver. (I51089, b/161297615)
  • „Modifier.drawBorder“ wurde eingestellt. Verwende stattdessen Modifier.Border. Border-Datenklasse wurde durch BorderStroke (I4257d, b/158160576) ersetzt
  • VerticalScroller und HorizontalScroller wurden entfernt. Verwenden Sie stattdessen „ScrollableColumn/Row“. Modifier.drawBackground wurde entfernt. "Modifier.background" verwenden (I73b0d, b/163019183)
  • Als eingestellte „fillMax*“-Modifikatoren aus LazyItemScope entfernen, da sie das korrekte Hinzufügen solcher Modifikatoren für Elemente erschweren, die keine direkten untergeordneten Elemente von LazyColumnFor sind (Ifa78d)
  • LazyColumn/LazyRow-Implementierung als DSL (I93cc6) hinzugefügt
  • Einschränkungen sind jetzt eine Inline-Klasse (I88736)
  • Mit den Modifikatoren „fillMaxWidth“, „fillMaxHeight“ und „fillMaxSize“ kann die Größe eines Layouts nur noch für einen Bruchteil des verfügbaren Platzes angepasst werden. (I945bb, b/161562591)

Fehlerkorrekturen

  • Modifikatorparameter wurde zu SelectionContainer hinzugefügt (I4aada, b/161487952).
  • „MergePolicy Lambda“ zu SemanticsPropertyKey hinzugefügt. Damit kann eine benutzerdefinierte Richtlinie für die Zusammenführung von „MergeAllDescendants“ definiert werden. Standardmäßig wird der übergeordnete Wert verwendet, falls dieser bereits vorhanden ist. Andernfalls wird der untergeordnete Wert verwendet. (Iaf6c4, b/161979921)
  • PlacementScope.placeAbsolute() wurde in PlacementScope.place() umbenannt und die vorherige PlacementScope.place() wurde in PlacementScope.placeRelative() umbenannt. Daher spiegelt die Methode PlacementScope.place() die Position in linksläufigen Kontexten nicht mehr automatisch wider. Wenn dies gewünscht ist, verwenden Sie stattdessen PlacementScope.placeRelative(). (I873ac, b/162916675)
  • Die eingestellte FilledTextField-Komponente wurde entfernt. Verwende stattdessen „TextField“, um die Material Design-Implementierung des ausgefüllten Textfelds zu erhalten. (I5e889)
  • Der Parameter „backgroundColor“ wurde zu „LinearProgressIndicator“ hinzugefügt und der interne Abstand aus dem CircularProgressIndicator entfernt. Neue ProgressIndicatorConstants.DefaultProgressAnimationSpec zur Verwendung als Standard-AnimationSpec bei der Animation des Fortschritts zwischen Werten hinzugefügt (If38b5, b/161809914, b/161804677)
  • Die zusammensetzbare Funktion state { ... } wurde verworfen und durch explizite Aufrufe von remember { mutableStateOf(...) } ersetzt. Dies reduziert die API-Oberfläche insgesamt und die Anzahl der Konzepte für die Statusverwaltung und entspricht dem Muster by mutableStateOf() für die Delegierung von Klassenattributen. (Ia5727)
  • RRect wurde in RoundRect umbenannt, um besser zu Zusammensetzungsmustern zu passen. Ähnliche Funktionskonstruktoren wie RRect und eingestellte RRect-Funktionskonstruktoren wurden erstellt (I5d325).
  • "onChildPositioned" und "OnChildPositionedModifier" wurden entfernt. Entwickler sollten stattdessen onPositioned und OnPositionedModifier im untergeordneten Layout verwenden. (I4522e, b/162109766)
  • IntSize ist jetzt eine Inline-Klasse (I2bf42)
  • Zum Bearbeiten lange auf den leeren Bereich drücken. (Ib1e5b)
  • Schwebende Symbolleiste nach dem Tippen auf den Text ausblenden. (If4525)
  • Unverankerte Symbolleiste beim Aktualisieren der Auswahl ausblenden. (I8444c)
  • Hebe die Auswahl bei Weichzeichnen auf. (I781a2)

Version 0.1.0-dev16

5. August 2020

androidx.compose.foundation:foundation:0.1.0-dev16, androidx.compose.foundation:foundation-layout:0.1.0-dev16 und androidx.compose.foundation:foundation-text:0.1.0-dev16 wurden veröffentlicht. Version 0.1.0-dev16 enthält diese Commits.

API-Änderungen

  • LazyItemScope wurde für den Parameter „itemContent“ von Lazy-Listen hinzugefügt. Sie bietet Modifikatoren zum Ausfüllen der maximalen Größe des übergeordneten Elements, wodurch der Anwendungsfall gelöst wird, in dem das Element den Darstellungsbereich ausfüllen sollte und die reguläre Modifier.fillMaxSize() nicht funktioniert, da das Element mit unendlichen Einschränkungen gemessen wird. (Ibd3b2, b/162248854)
  • Dialogfeld in Benutzeroberfläche verschieben (I47fa6)
  • LazyColumnForIndexed/LazyRowForIndexed – Versionen von LazyColumnFor/LazyRowFor, die sowohl Index als auch Element in itemCallback bereitstellt, wurde hinzugefügt. Dies ist nützlich, wenn Sie neben einem aktuellen Element auch einen aktuellen Index benötigen. (I65ff3)
  • Modifier.deternimateProgress wurde in Modifier.progressSemantics (I9c0b4) umbenannt.
  • „LazyColumnItems“ wurde in „LazyColumnFor“ umbenannt. LazyRowItems wurde in LazyRowFor (I84f84) umbenannt
  • Fügen Sie als Best Practice einige Markierungen/Vermerke hinzu. (I66b20)
  • „fundation.shape.corner“-Pakete wurden zu „fundation.share“ vereinfacht (I46491, b/161887429).
  • Der Gravitationsparameter „Srossaxis“ wurde für LazyRowItems/LazyColumnItems hinzugefügt. LazyRowItems/LazyColumnItems unterstützen jetzt das Verhalten bei Inhaltsumbrüchen. (Ib39fc)
  • ZoomableState wurde in ZoomableController umbenannt. Für smoothScale wird jetzt benutzerdefinierte Kurve unterstützt. Die Funktionen enabled und onZoomStarted wurden hinzugefügt (If8b8f).
  • Material FilledTextField wurde in TextField umbenannt und das grundlegende TextField in BaseTextField umbenannt, damit die einfachste gewünschte API leichter zu finden und zu verwenden ist (Ia6242, b/155482676).
  • Die zuvor verworfene AdapterList wurde entfernt. Stattdessen LazyColumnItems verwenden (I12b9b)
  • "Modifier.drawBackground" wurde in "Modifier.background" (I13677) umbenannt.
  • Die alte ConstraintLayout-DSL wurde entfernt. „ConstraintSet2“ wurde in „ConstraintSet“ umbenannt. (If58d1, b/162450908)
  • Modifier.absoluteOffset() und Modifier.absoluteOffsetPx() wurden hinzugefügt. Im Gegensatz zu Offset-Modifikatoren werden absolute Offset-Modifikatoren nicht automatisch im Rechts-nach-links-Kontext gespiegelt (I3aa21).
  • Row und Column sind jetzt Inline-Funktionen, wodurch der Aufwand für ihre Verwendung erheblich reduziert wird. (I75c10)

Fehlerkorrekturen

  • Umfangreiche API-Fehlerkorrekturen (I077bc)
    1. Nicht verwendete OffsetBase-Schnittstelle entfernen
    2. Die Klassen „Align Offset“ und „IntOffset“ für eine einheitliche API-Oberfläche
    3. Benennen Sie „IntOffset.Origin“ in „IntOffset.Zero“ um, um der Offset API zu entsprechen.
    4. Die nativeCanvas-Methode wurde aus der Canvas-Oberfläche verschoben, damit Nutzer ihre eigenen Canvas-Instanzen erstellen können.
    5. Die Stub-EmptyCanvas-Klasse wurde erstellt, um DrrawScope in einen Nicht-Null-Parameter anstelle von lateinit zu refaktorieren und eine Nicht-Null-Zulässigkeit des Felds zu gewährleisten.
    6. ClipOp-Enums wurden in Pascal Case umbenannt
    7. FilterQuality-Enums wurden in Pascal Case umbenannt
    8. Die StrokeJoin-Enums wurden in „Pascal Case“ umbenannt
    9. PointMode-Enums wurden in Pascal Case umbenannt
    10. PaintingStyle-Enums wurden in Pascal Case umbenannt
    11. PathFillType-Enums wurden in Pascal-Case-Schreibweise umbenannt
    12. Die StrokeCap-Enums wurden in „Pascal Case“ umbenannt
    13. Die DrawCache-Implementierung wurde so aktualisiert, dass latinit-Parameter nicht mehr verwendet werden.
    14. DrawScope aktualisiert, um die Lazy-Delegierung für die internen Parameter „fillPaint“ und „StrokePaint“ nicht mehr zu verwenden.
    15. Die zusammensetzbare Image-Funktion wurde aktualisiert, um die Nutzung von Box zu vermeiden und so den Aufwand zu reduzieren.
    16. Die Outline-Klasse wurde so aktualisiert, dass sie @Unmutable-Annotationen enthält.
    17. PathNode wurde aktualisiert und enthält nun @Immutable-Annotationen für jede Pfadanweisung.
    18. Die Vektorunterzusammensetzung wurde aktualisiert, um redundante bedingte Prüfungen auf Gleichheit zu entfernen, da sie in der Zusammensetzung bereits verarbeitet werden.
    19. Eingestellte Methoden des Companion-Konstruktors „Rect“ zugunsten von Funktionskonstruktoren
    20. Aktualisierte Brush-Klassen und Funktionskonstruktoren mit den APIs @Immutable und @Stable
    21. VertexMode-Enum wurde auf „PascalCase“ aktualisiert
    22. Wir haben die DrawScope selectPaint-Methode aktualisiert, damit Strichparameter der Farbdarstellung bedingt überschrieben werden, wenn sie sich geändert haben.
    23. „Größe“ wurde aktualisiert, um eine destruktive API hinzuzufügen, „UnspecificSize“ in „Nicht angegeben“ umzubenennen und nicht verwendete Methoden zu entfernen
  • MonotonicFrameAnimationClock wurde hinzugefügt. Damit können Sie MonotonicFrameClock als AnimationClockObservable verwenden, um die Lücke zwischen den neuen, auf Koroutinen basierenden Uhren und APIs zu schließen, die noch die alten Callback-basierten Uhren verwenden.

    Die MonotonicFrameClock-Äquivalent von „Manuelle AnimationClock“ heißt jetzt „ManuellFrameClock“. (I111c7, b/161247083)

  • SemanticsNodeInteraction.performPartialGesture wurde entfernt. Verwenden Sie stattdessen SemanticsNodeInteraction.performGesture. (Id9b62)

  • SemanticsNodeInteraction.getBoundsInRoot() wurde in SemanticsNodeInteraction.getUnclippedBoundsInRoot() umbenannt (Icafdf, b/161336532)

  • Die APIs für die Unterstützung von rechts nach links wurden aktualisiert. LayoutDirectionAmbient wurde hinzugefügt, mit dem sich die Layoutrichtung lesen und ändern lässt. Modifier.rtl und Modifier.ltr wurden entfernt. (I080b3)

  • Modifier.plus wurde eingestellt. Verwende stattdessen Modifier.then. „Dann“ gibt ein stärkeres Signal für die Sortierung, verhindert aber auch die Eingabe von Modifier.padding().background() + anotherModifier, wodurch die Kette unterbrochen wird und schwerer zu lesen ist (Iedd58, b/161529964).

  • SemanticsMatcher isFocused() und isNotFocused() wurden hinzugefügt. (I0b760)

  • RemeasurementModifier wurde hinzugefügt. Nutzer können damit das Layout synchron neu messen. Im Allgemeinen ist sie nie erforderlich, da Neuberechnungen bzw. Layoutänderungen automatisch erfolgen. Wir verwenden sie jedoch während des Scrollens in LazyColumnItems. (I5f331, b/160791058)

  • isSystemInDarkTheme berücksichtigt jetzt immer die systemweite Einstellung für das dunkle Design und ignoriert den Energiesparmodus vor Q. gemäß den neuesten Anweisungen. (I0c10c)

  • „OnChildPositioned“ wurde eingestellt. Verwenden Sie stattdessen OnPositioned für das untergeordnete Element. (I87f95, b/162109766)

  • AndroidComposeTestRule wurde in „createAndroidComposeRule“ umbenannt. (I70aaf)

  • Bedienungshilfen-Aktion hinzufügen, um TextLayoutResult (I9d6e6) abzurufen

Version 0.1.0-dev15

22. Juli 2020

androidx.compose.foundation:foundation:0.1.0-dev15, androidx.compose.foundation:foundation-layout:0.1.0-dev15 und androidx.compose.foundation:foundation-text:0.1.0-dev15 wurden veröffentlicht. Version 0.1.0-dev15 enthält diese Commits.

Wenn Sie die 0.1.0-dev15-Version von „Compose“ verwenden möchten, müssen Sie Folgendes tun:

Abhängigkeiten aktualisieren

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

API-Änderungen

  • Ähnlich wie der neue Parameter in ScrollableColumn/ScrollableRow LazyColumnItems/LazyRowItems verfügen jetzt auch über den Parameter contentPadding, mit dem ein Abstand für den Inhalt hinzugefügt werden kann, nachdem dieser abgeschnitten wurde. Dies ist nicht allein durch einen Modifikatorparameter möglich. Außerdem können Sie einen Abstand vor dem ersten bzw. nach dem letzten Element einfügen. (Ibc24e)
  • onFocusChange-Callback in Textfeldern wurde in onFocusChanged (Ida4a1) umbenannt
  • VerticalScroller und HoriziontalScroller wurden eingestellt. Verwende ScrollableColumn und ScrollableRow, um integrierte Funktionen mit Spalten-/Zeilenverhalten und -parametern zu nutzen, oder Modifier.verticalScroll und Modifier.horizontalScroll für dein eigenes Element. In ähnlicher Weise wurde ScrollerPosition zugunsten von ScrollState verworfen (I400ce, b/157225838, b/149460415, b/154105299).
  • Die APIs Modifier.draggable und Modifier.scrollable wurden überarbeitet. DragDirection wurde zugunsten der Ausrichtung entfernt. Der Status, der für „scrollable“ erforderlich ist, wurde vereinfacht. ScrollableState wurde in ScrollableController umbenannt (Iab63c, b/149460415).
  • Semantische Einzelwert-Attribute verwenden jetzt einen aufrufenden Stil. So wird beispielsweise „Semantik {hidden = true}“ so geschrieben: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412)
  • Eckengrößen von RoundedCornerShape und CutCornerShape können jetzt größer als 50 % sein (Id2340, b/160400213)
  • Der Standardparameter „ContentScale“ für die zusammensetzbare Bild-Funktion wurde von „Inside“ zu „Fit“ geändert. Dies wurde getan, um ein Verhalten zu erzielen, mit dem der zugrunde liegende Painter skaliert werden kann, wenn die Layoutgröße größer ist als die eigentliche Größe des Painters, während das Seitenverhältnis beibehalten wird. Dieses Verhalten entspricht eher den Erwartungen an die Bereitstellung fester Größen für das Bild. Es wirkt sich nicht auf das Standardverhalten aus, wenn nur die ursprüngliche Größe zum Berechnen der Größe der zusammensetzbaren Funktion verwendet wird. (I40ae3, b/159838006)
  • Verwenden Sie in den APIs der obersten Ebene AnimationSpec anstelle von AnimationBuilder, um das Konzept der Spezifikation für statische Animationen zu verdeutlichen. - Verbessern Sie die Übergangs-DSL, indem Sie die Lambda-Anforderung zum Erstellen von AnimationSpecs wie Tween, Feder verwenden. Stattdessen werden Konstruktorparameter direkt übernommen. – Verbessern der allgemeinen Nutzerfreundlichkeit von AnimationSpec, die Konstruktoren öffnet, anstatt sich auf Builder zu verlassen. – Ändern Sie die Dauer und Verzögerung für KeyFrames und "Tween" in "Int". Dadurch werden unnötige Typumwandlungen und eine Methodenüberlastung vermieden (zur Unterstützung von Long und Int). (Ica0b4)
  • Anklickbares Element wurde entfernt. Verwenden Sie Modifier.clickable (I84bdf).
  • „LazyRowItems“ – Analog zu horizontal scrollbarem Element von LazyColumnItems (Ibbcf7) hinzugefügt
  • Einführung von Low-Level-, zustandslosen Animations-APIs. Diese APIs (I63bf7)
  • „androidx.ui.foundation.TextFieldValue“ und „androidx.ui.input.EditorValue“ wurden eingestellt. Die zusammensetzbaren Funktionen „TextField“, „FilledTextField“ und „CoreTextField“, die diesen Typ verwenden, wurden ebenfalls eingestellt. Verwenden Sie stattdessen androidx.ui.input.TextFieldValue (I4066d, b/155211005).
  • Die Verwendung von „IntPx“ wurde durch „Int“ ersetzt. „IntPxPosition“ wurde durch „IntOffset“ ersetzt. IntPxSize durch IntSize ersetzt. (Ib7b44)
  • androidx.ui.foundation.shape.RectangleShape entfernt; verwenden Sie androidx.ui.graphics.RectangleShape (I94939, b/154507984)
  • Wenn Sie die Anzahl der Klassen zur Darstellung von Größeninformationen konsolidieren möchten, sollten Sie die Verwendung der Klasse „Size“ anstelle von „PxSize“ standardisieren. Dies bietet die Vorteile einer Inline-Klasse, da ein „Long“ verwendet werden kann, um zwei Gleitkommawerte zu verpacken, um Breite und Höhe als Gleitkommazahlen darzustellen. (Ic0191)
  • Um die Anzahl der Klassen zur Darstellung von Positionierungsinformationen zu konsolidieren, sollten Sie die Verwendung der Offset-Klasse anstelle von PxPosition standardisieren. Dies bietet die Vorteile einer Inline-Klasse: Sie kann einen Long-Wert verwenden, um zwei Gleitkommawerte zu packen, um x- und y-Offsets als Gleitkommazahlen darzustellen. (I3ad98)
  • Modifier.zoomable wurde für das Zoomen durch Auseinander- und Zusammenziehen hinzugefügt (Id5d63).
  • Die ein-/ausschaltbare Komponente wurde eingestellt. Stattdessen Modifier.toggleable verwenden (I35220, b/157642842)
  • MutuallyexklusivSetItem wurde eingestellt. Verwende stattdessen Modifier.selectable. (I02b47, b/157642842)
  • TestTag wurde eingestellt. Verwende stattdessen Modifier.testTag. (If5110, b/157173105)
  • Fügt dem Text den Parameter „fontWeight“ hinzu, der zuvor versehentlich nicht hinzugefügt wurde (I56937)
  • Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen der umfangreichen Refaktorierungsversuche ersetzt, bei denen für Pixelparameter nur der Dp-Wert und primitive Typen verwendet wurden (I19d02).
  • VerticalScroller stellt die Spalte jetzt standardmäßig zur Verfügung. HorizontalScroller stellt jetzt eine Zeile aus dem Feld bereit. (Ieca5d, b/157020670)
  • Die Verwendung der Px-Klasse in verschiedenen Zusammensetzungsklassen wurde im Rahmen des umfangreichen Refaktorierungsaufwands ersetzt, bei dem nur Dp und primitive Typen für Pixelparameter verwendet wurden (Iede0b).
  • Modifier.indication wurde zum Foundation-Paket hinzugefügt. Verwenden Sie dieses Symbol, um die Elemente durch Drücken bzw. Ziehen oder andere Elemente auf Ihren benutzerdefinierten interaktiven Elementen einzublenden (I8425f, b/155287131).
  • VerticalScroller und HorizontalScroller unterstützen jetzt das umgekehrte Scrollen. isReversed ist auf ScrollerPosition (I953bd) festgelegt.
  • Unterstützung beim Hinzufügen von zusammensetzbaren Funktionen in das Textlayout (I1373c)
  • CanvasScope-Implementierungen wurden konsolidiert. Es gibt jetzt nur noch DrawScope und ContentDrawScope haben CanvasScope in DrawScope umbenannt. DrawScope wurde aktualisiert, um die Dichte-Schnittstelle zu implementieren und die LayoutDirection Deleted DrawScope Unterklasse in ContentDrawScope bereitzustellen. Painter und PainterModifier wurden aktualisiert, um eine RTL-Eigenschaft selbst nicht mehr zu verwalten.
  • Die eingestellte DrawBackground API wurde entfernt und durch den Modifier ersetzt. Wir haben die DrawBackground-Implementierungen für Farbe, Pinsel und Farbe überarbeitet, um Codepfade zu reduzieren. Außerdem wurde die Anforderung entfernt, dass der Modifikator als Teil der Komposition erstellt werden muss. (I0343a)
  • Die APIs der höheren Ebene, die ein Canvas zur Freigabe von CanvasScope bereitstellen, wurden aktualisiert. Nutzer müssen dann ihre eigenen Paint-Objekte nicht mehr verwalten. Nutzer, die weiterhin Zugriff auf einen Canvas benötigen, können die DrawCanvas-Erweiterungsmethode verwenden. Diese bietet einen Callback, mit dem Zeichenbefehle mit dem zugrunde liegenden Canvas ausgeführt werden können. (I80afd)
  • Bei HorizontalScroller und VerticalScroller werden die Scrollpositionen nicht über den Status der gespeicherten Instanz wiederhergestellt. (Ia0fae, b/155075048)
  • „FocusManagerAmbient“ wurde entfernt. Verwenden Sie FocusModifier.requestFocus, um den Fokus zu erhalten. (Ic4826)
  • Das Tabellenlayout wurde vorübergehend entfernt, bis wir es mit einer aktualisierten API wieder verfügbar machen. (Id88a7)
  • Es wurde eine CanvasScope API erstellt, die ein Canvas-Objekt umschließt, um eine zustandslose, deklarative Zeichen-API-Oberfläche freizugeben. Transformationen sind in ihrem eigenen Empfängerbereich enthalten, und Größeninformationen werden ebenfalls auf die entsprechenden Einfügungsgrenzen beschränkt. Ein Nutzer muss kein eigenes Paint-State-Objekt zum Konfigurieren von Zeichenvorgängen verwalten.

    CanvasScopeSample wurde hinzugefügt und die Demo-App wurde um eine deklarative Grafikdemo ergänzt (Ifd86d).

  • ColoredRect wurde entfernt. Feld mit dem Modifikator "drawBackground" (I983c7, b/152753731)

  • Anpassung der Cursorfarbe für TextField (I6e33f)

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

  • Wenn TextFieldValue mit TextField verwendet wird, kann es jetzt auch in einem der folgenden Weise neu erstellt werden: var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() } (I5c3ce, b/155075724)

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

  • Für die Einbindung in das Fokus-Subsystem wurde der Parameter „CoreTextField/TextFieldfocusIdentifier“ durch „FocusNode“ ersetzt. (I7ea48)

  • TextField-Aktualisierung: Bei horizontalen Dimensionen nimmt es den gesamten verfügbaren Platz ein (Ib08df, b/154638552)

  • InteractionState und Interaction wurden hinzugefügt. Dies vereinfacht die Erstellung von Komponenten, die auf UI-Statusänderungen wie Drücken und Ziehen reagieren (Icfe25, b/152525426).

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

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

  • TextField API-Update – onFocus- und onBlur-Callbacks zu einem einzigen onFocusChange(Boolean)-Callback mit Parameter (I66cd3) zusammengeführt

  • Umbenennung von ScaleFit in ContentScale. ContentScale wurde von ui-graphics in das UI-Core-Modul verschoben, das sich im selben Modul wie die Ausrichtungs-API befindet. "FillMaxDimension" wurde in "Zuschneiden" umbenannt "FillMinDimension" wurde in "Passen" umbenannt "FillMinDimension" wurde in "Passend" umbenannt "FillMaxDimension" wurde in "Passen" umbenannt Die Entsprechungen von "ImageView.ScaleType" wurden hinzugefügt Es wurde eine Dokumentation hinzugefügt, die darauf hinweist, dass mit der Kombination von "Zuschneiden" und "Ausrichtung.Center" dasselbe Ergebnis erzielt wird wie bei "ImageView.ScaleType.CENTER_CROP" und "Fit mit Ausrichtung.Center" verwendet wird das gleiche Ergebnis wie mit "AusrichtungView.Scale02.FIT_CENTER.FIT_CENTER.FIT_CENTER".View.ScaleType.FIT_CENTER.

  • Entfernt ProvideContentColor, stattdessen aber einfach ContentColorAmbient direkt mit Providers (Iee942) verwenden

  • Fügt dem Text einen Farbparameter hinzu, sodass die Farbe des Textstils überschrieben werden kann, ohne dass eine Verbindung mit dem Stil eines Designs manuell hergestellt werden muss. (I41a66)

  • DrawModifier API verbessern:

    • Der Empfängerbereich fürdraw() ContentDrawScope wurde erstellt.
    • Alle Parameter fürdraw() wurden entfernt
    • DrawScope hat die gleiche Oberfläche wie das frühere CanvasScope
    • ContentDrawScope verfügt über die MethodedrawContent() (Ibaced, b/152919067).
  • ColoredRect wurde eingestellt. Verwende stattdessen Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)

  • Das Formthema-System wird gemäß der Material Design-Spezifikation aktualisiert. Sie können jetzt kleine, mittlere und große Formen für die meisten Komponenten angeben (Ifb4d1).

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

  • Ziehbares Element wurde in Modifikator verschoben (Id9b16, b/151959544)

  • Text von androidx.ui.core in das Paket androidx.ui.foundation verschoben. (I87ce5)

  • Parameter enabled zu Kästchen, Schalter und Umschaltbar hinzufügen (I41c16)

  • Welle ist jetzt ein Modifikator. Die anklickbare Schaltfläche wurde noch nicht konvertiert, die empfohlene Verwendung ist Clickable(onClick = { ... }, modifier = ripple()) (Ie5200, b/151331852, b/150060763).

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

    Die Image(Painter) API wurde in PaintBox(Painter) erstellt und funktioniert wie die zusammensetzbare Bild-Funktion, mit Ausnahme eines VectorAsset anstelle eines ImageAsset (I9af9a, b/149030271).

  • Erstellt eine zusammensetzbare Bild-Funktion, die zusätzlich zum Zeichnen eines bestimmten Bild-Assets auf dem Bildschirm auch die Größe und das Layout verarbeitet. Diese zusammensetzbare Funktion unterstützt auch das Zeichnen jeder beliebigen Painter-Instanz unter Berücksichtigung ihrer intrinsischen Größe sowie die Unterstützung einer bestimmten festen Größe oder Mindestgröße (Ibcc8f).

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

  • Umbenennung von „Image“ in „ImageAsset“, um den Unterschied zwischen den Bilddaten und der nächsten zusammensetzbaren Funktion für das Layout und das Zeichnen von Inhalten besser zu unterscheiden.

    Für android.graphics.Bitmap, Bitmap.asImageAsset(), wurde eine Erweiterungsmethode erstellt, mit der eine Instanz eines ImageAsset erstellt werden kann, die sich zum Kombinieren der traditionellen Android-Anwendungsentwicklung mit dem Compose-Framework eignet. (Id5bbd)

  • Die zusammensetzbare Funktion „DrawImage“ wurde entfernt. Verwenden Sie ImagePainter, um Bilder in einem vorhandenen Layout zu zeichnen, oder SimpleImage, um ein Bild vorzustellen, das Platz einnimmt (I595e1, b/149827027)

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

  • Symbol, IconButton und IconToggleButton hinzugefügt, wodurch AppBarIcon entfernt wurde. Sie können vorhandene Verwendungen von AppBarIcon direkt durch IconButton ersetzen, und diese haben jetzt das richtige Berührungsziel. Informationen zur Verwendung findest du in den Beispielen und in den Symbolen für die bereitgestellten Material Icons, die du direkt mit diesen Komponenten verwenden kannst. (I96849)

  • Die zusammensetzbare Funktion „DrawShape“ wurde entfernt. Verwende stattdessen den Modifikator DrawBackground. (I7ceb2)

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

  • Die scrollbare Komponente wurde hinzugefügt, mit der benutzerdefinierte Scroller/Listen erstellt werden können (I5fd37).

  • Hintergrund wurde in „Hintergrund zeichnen“ umbenannt und der Hintergrund soll standardmäßig gespeichert werden (Ia0bd3).

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

  • Canvas-Komponente hinzugefügt. Diese zusammensetzbare Funktion nimmt eine gewisse Größe ein (vom Nutzer bereitgestellt) und ermöglicht das Zeichnen mit CanvasScope (I0d622).

  • Border-Modifikator in DrawBorder umbenennen (I8ffcc)

  • Die Box-Komponente zum Kombinieren von Layout- und Zeichenfunktionen wurde hinzugefügt. (I6e2a7)

  • Scroller zeigen nun natives Schleuder-Bewegungsverhalten von Android. (I922af, b/147493715)

  • DrawBorder ersetzt Border Modifier (Id335a)

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

  • Der Parameter „percent“ beim Erstellen von ConstraintLayout-Richtlinien wurde in „fraction“ umbenannt. Ida2db:

  • Die Ränder von ConstraintLayout-Barrieren werden jetzt unterstützt. (I47ffe)

  • RTL-Unterstützung in ConstraintLayout wurde behoben. Nicht erkannte RTL-APIs hinzugefügt. (I3b1c7)

  • Eine neue DSL für ConstraintLayout wurde hinzugefügt. Weitere Informationen finden Sie in den Beispielen. (Icaa9a)

  • Die Annotation @ExperimentalLayout wurde hinzugefügt. ConstraintLayout, FlowRow und FlowColumn sind jetzt damit getaggt, um zu kennzeichnen, dass ihre APIs geändert werden. (I412a8)

  • Modifier.padding(InnerPadding) wurde hinzugefügt (I94985, b/157133803).

  • Verworfene Zeilenausrichtung (RowAlign), ColumnAlign in Row & Column (Spalte) wurden entfernt. (If60d4, b/155858731)

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

  • Der Layoutmodifikator „offsetPx“ wurde hinzugefügt, mit dem (dynamische) Offsets in Pixeln definiert werden können. (I5af57)

  • Die zusammensetzbare Funktion „AlignLineOffset“ wurde eingestellt. Verwenden Sie stattdessen den Modifikator „relativePaddingFrom()“. Die zusammensetzbare Funktion „CenterAlignmentLine“ wurde entfernt. (I60107)

  • Der Layoutmodifikator „defaultMinSizeConstraints“ wurde hinzugefügt, der Größenbeschränkungen für das umschlossene Layout nur dann festlegt, wenn die eingehenden entsprechenden Einschränkungen nicht angegeben sind (0 für minimale Einschränkungen und unendlich für maximale Einschränkungen). (I311ea, b/150460257)

  • Der Container wurde entfernt. Stattdessen Box verwenden (Ibbc2b, b/151407926)

  • Die eingestellten Modifikatoren LayoutWidth/Height/Size wurden entfernt. (Ib0bc1)

  • Für den Offset-Modifikator wurden Standardparameterwerte hinzugefügt. (I37f06)

  • Modifikator für symmetrischen Abstand hinzugefügt. (I39840)

  • Der eingestellte Modifikator LayoutAspectRatio wurde entfernt. (I65a74)

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

  • Ein Fehler in den Modifikatoren für Breite und Höhe wurde behoben, durch den das umschlossene Layout ohne Einschränkungen der gegenüberliegenden Achse gemessen wurde. (I210b8, b/154797971)

  • Die Parameter verticalGravity und horizontalGravity wurden für Row bzw. Spalte hinzugefügt. (I7dc5a)

  • „wrapContentWidth“ und „wrapContentHeight“ wurden aktualisiert, sodass jetzt eine vertikale oder horizontale Ausrichtung anstelle einer Ausrichtung erwartet wird. Der Gravitationsmodifikator wurde aktualisiert, um die vertikale oder horizontale Ausrichtung zu akzeptieren. Die Zeilen-, Spalten- und Filterlisten wurden aktualisiert, um benutzerdefinierte kontinuierliche Ausrichtungen zu unterstützen. (Ib0728)

  • Ausrichtung kann mit beliebigen Werten instanziiert werden. 1D-Ausrichtungen wurden hinzugefügt. (Ia0c05)

  • EdgeInsets wurde in „InnerPadding“ umbenannt. Der Parameter „innerPadding“ von „Material Buttons“ wurde in „Padding“ umbenannt. (I66165)

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

  • Modifikatoren für Größenanpassungen wurden für systeminterne Messungen hinzugefügt und die zu diesem Zweck vorgesehenen Komponenten wurden eingestellt. (I8295d)

  • Unterstützung für das Anpassen von Dimensionen untergeordneter Elemente von ConstraintLayout (Idb1a5)

  • Veraltete zusammensetzbare Funktionen wie „Wrap“ und „Center“ wurden entfernt. (I29e23)

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

  • RowScope- und ColumnScope-Mitglieder sind jetzt außerhalb von Row und Column zugänglich. (I3a641)

  • Der Container wurde verworfen. Verwende stattdessen Box. (I675ce, b/151407926)

  • Der Modifikator "LayoutOffset" zum Versetzen der Layoutposition wurde hinzugefügt (I0b8a3).

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

  • LayoutAlign so aktualisiert, dass der verfügbare Platz nicht mehr ausgefüllt wird (I2b14f)

  • Die zusammensetzbare Funktion „AspectRatio“ wurde zugunsten des Modifizierers entfernt. Veraltete FlexColumn-, FlexRow- zusammensetzbare Funktionen und Abstandsmodifikatoren wurden gelöscht (Iec8a7)

  • Entfernung des Modifikator "LayoutInflexible" für Zeile und Spalte (I0d820)

  • Implementieren Sie Ziehpunkte für die Ziehauswahl, um die Auswahl für TextField zu ändern. (I27032)

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

Fehlerkorrekturen

  • FocusModifizierer wurde zugunsten von Modifier.focus, Modifier.focusRequester, Modifier.focusObserver eingestellt. FocusState und FocusDetailState wurden zugunsten von FocusState2 eingestellt (I46919, b/160822875, b/160922136).
  • runOnIdleCompose umbenannt in runOnIdle (I83607)
  • Mehrere Test-APIs wurden umbenannt, um die Benutzerfreundlichkeit zu verbessern. Alle „findXYZ“ APIs wurden in „onNodeXYZ“ umbenannt. Alle doXYZ APIs wurden in „performanceXYZ“ umbenannt. (I7f164)
  • Entfernt den in der Vergangenheit verworfenen Modifier.ripple. Für „Anklickbar“ wird jetzt die Welle als Standardanzeige verwendet (wenn Sie in Ihrer App ein MaterialTheme-Element {} festgelegt haben). In den meisten Fällen können Sie die Ripple-Anzeige also kostenlos anzeigen lassen. Wenn Sie den Parameter „color“, „size“ oder „bounded“ für die Wellen anpassen möchten, können Sie manuell eine „RippleIndication“-Parameter erstellen und sie an „anklickbar“ als „indikationsparameter“ übergeben. (I663b2, b/155375067)
  • Veraltete APIs für Größentests wurden entfernt. (Iba0a0)
  • Made LayoutNode experimentelle API (I4f2e9)
  • Version 1 der Sperre für die Scrollausrichtung wurde in der Funktion „Compose“ implementiert. (I1ce7a, b/150289741)
  • Pop-ups, Dialogfelder und Menüs übernehmen jetzt das kontextabhängige MaterialTheme (Ia3665, b/156527485).
  • Der Layout-Richtungsparameter wurde aus dem Messungsblock der Layout()-Funktion entfernt. Die Layoutrichtung ist jedoch innerhalb des Callbacks über das Messwertbereich-Objekt (Ic7d9d) verfügbar.
  • Add AbsoluteArrangement – ermöglicht die Anordnung von untergeordneten Elementen innerhalb der Row ohne automatische Spiegelung in RTL (I3a1df)
  • Die Annotation „@Untracked“ wurde eingestellt. Ersetzen durch @ComposableContract(tracked=false) (Id211e)
  • Vor dieser Änderung konnte das Compose-Compiler-Plug-in Aufrufe an Konstruktoren innerhalb einer @Composable-Funktion nicht einfach abfangen, wenn eine (I5205a, b/158123804) vorhanden war.
  • Fügen Sie eine zusammensetzbare Funktion von viewModel() hinzu, mit der Sie ViewModel-Elemente, ähnlich wie in „Aktivität“ oder „Fragment“ (I5fdd1) erstellen oder bereits erstellen können.
  • Die Radiusklasse wurde in eine Inline-Klasse umgewandelt. Methoden zum Erstellen von Companion-Anzeigen wurden entfernt. Stattdessen wurde der Funktionskonstruktor mit Standardparametern entfernt, sodass der Radius entlang der Y-Achse mit dem des erforderlichen Radius-Parameters für die x-Achse übereinstimmt.

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

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

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

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

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

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

  • Bei teilweisen Gesten muss kein Gesten-Token mehr übergeben werden (Id7ae5)

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

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

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

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

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

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

  • Ein Absturz in der AdapterList beim Entfernen von Elementen wurde behoben (Ic64b0, b/153195921).

  • Wir haben die Messung des ersten Layouts geändert, das Sie in den activity.setContent { }-Block einfügen. Früher musste es den gesamten Bildschirm ausfüllen. Jetzt verhält es sich so, als würden Sie Ihr Layout in einen Stack legen: Es kann kleiner als ein Bildschirm sein und wird oben links platziert. Wenn Sie das alte Verhalten verwenden möchten, können Sie Modifier.fillMaxSize() auf Ihr Layout anwenden. (Ie88a7, b/153453714)

  • Das Modul „ui-text-compose“ wurde in „ui-text“ umbenannt. „ui-text“ enthält jetzt die zusammensetzbaren Funktionen von CoreText und CoreTextField (Ib7d47).

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

  • Die zusammensetzbaren Funktionen „ui-framework/CoreText“ und „CoreTextField“ wurden nach „ui-text-compose“ verschoben. Vielleicht möchten Sie „ui-text-compose“ in Ihr Projekt einbinden. (I32042)

  • runOnIdleCompose und runOnUiThread sind jetzt globale Funktionen anstelle von Methoden in ComposeTestRule. (Icbe8f)

  • [Mutable]Die Stellvertreter-Operatoren für Status-Properties wurden in Erweiterungen verschoben, um die Optimierung von Property-Delegaten für Kotlin 1.4 zu unterstützen. Aufrufer müssen Importe hinzufügen, um by state { ... } oder by mutableStateOf(...) weiterhin verwenden zu können. (I5312c)

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

  • LayoutResult wurde in MeasureResult umbenannt. (Id8c68)

  • Eingestellte zusammensetzbare Funktion aus dem Center. Er sollte entweder durch den Modifikator „LayoutSize.Fill + LayoutAlign.Center“ oder durch eine der zusammensetzbaren Funktionen „Box“ oder „Stack“ mit entsprechenden Modifikatoren ersetzt werden (Idf5e0).

  • LayoutFlexible wurde in LayoutWeight umbenannt. Enger zu füllender Parameter wurde umbenannt. (If4738)

  • DrawVector wurde von einer regulären zusammensetzbaren Funktion in die Rückgabe einer ModifierdrawVector()-Funktion geändert, die den Vektor als Hintergrund in einem Layout zeichnet. (I7b8e0)

  • Ersetzen Sie die zusammensetzbare Funktion „Clip“ durch den Modifikator „drawClip()“. „DawClipToBounds“ ist ein praktischer Modifikator, der verwendet werden kann, wenn Sie nur die Ebenengrenzen mit einer Rechteckform beschneiden müssen. (If28eb)

  • Die zusammensetzbare Funktion „DawShadow“ wurde durch den Modifizierer „drawShadow()“ ersetzt. Schatten werden jetzt als Teil von LayerModifier gezeichnet. (I0317a)

  • „androidx.compose.ViewComposer“ wurde nach „androidx.ui.node.UiComposer“ verschoben androidx.compose.Emittable wurde entfernt. Es war durch ComponentNode redundant. androidx.compose.ViewAdapters wurde entfernt. Sie werden nicht mehr unterstützt. Compose.composeInto wurde eingestellt. Verwende stattdessen setContent oder setViewContent. „Compose.disposeComposition“ wurde eingestellt. Verwenden Sie stattdessen die Methode dispose für Composition, die von setContent zurückgegeben wird. androidx.compose.Compose.subcomposeInto wurde nach androidx.ui.core.subcomposeInto ComponentNode#emitInsertAt umbenannt in ComponentNode#insertAt ComponentNode#emitRemoveAt wurde in Component#removeAt Component0Node#emitMode umbenannt in androidx.ui.core.subcomposeIntoNode#emitInsertAt wurde in ComponentNode#insertAt umbenannt.

  • Einstellung der zusammensetzbaren Funktion „Umbruch“. Er kann entweder durch den Modifikator „LayoutAlign“ oder durch die zusammensetzbare Funktion „Stack“ ersetzt werden (Ib237f).

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

  • Benennen Sie Painter.toModifier in Painter.asModifier um, da der neu erstellte Modifikator einen Verweis auf den ursprünglichen Painter hat, der von mehreren Modifier-Instanzen gemeinsam genutzt werden kann (I7195b).

  • Unterstützung von rechts nach links im LayoutPadding-Modifikator (I9e8da)

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

  • ValueHolder-Klasse entfernt. Neustrukturierung von AnimierteValue-, animateFloat-Klassen, um das Animationswertfeld zu abstrahieren, sodass Unterklassen die Aktualisierung des Werts beobachten können.

    • Modellklassen für AnimierteValue, animateFloat usw. wurden hinzugefügt.
    • Es wurde eine neue, einfache @Composable API zum Animieren zwischen Werten hinzugefügt.
    • (I79530)
  • Wichtige Änderungen an der Ambients API. Weitere Informationen finden Sie in der Protokoll- und Ambient<T>-Dokumentation (I4c7ee, b/143769776).

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

  • Ein ConstraintLayout-Fehler, der bei Neuzusammensetzungen einen Absturz verursachte, wurde behoben. (Ibee5a, b/158164341)

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

  • LayoutModifier2 wurde in LayoutModifier umbenannt. (Id29f3)

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

  • LayoutDirectionAmbient wurde eingestellt. Um die durch die Sprache definierte Layoutrichtung zu lesen, verwenden Sie „languageLayoutDirection“ in ConfigurationAmbient (I851b1).

  • „positionInParent“ und „boundsInParent“ für LayoutCoordinates wurden hinzugefügt. (Icacdd, b/152735784)

  • Die zusammensetzbare Funktion „ParentData“ wurde eingestellt. Sie sollten entweder einen Modifikator erstellen, der die ParentDataModifier-Schnittstelle implementiert, oder einen LayoutTag-Modifikator, wenn Sie einfach untergeordnete Layout-Tags taggen müssen, um sie im Messwertblock zu erkennen. (I51368, b/150953183)

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

  • Negatives Padding in LayoutPadding nicht zulassen. LayoutOffset sollte stattdessen für Offsets negativer Positionen verwendet werden. (Ifb5b1)

  • WithConstraints hat LayoutDirection-Parameter erhalten (I6d6f7)

  • Das Flag ComposeFlags.COMPOSER_PARAM wurde in true geändert. Dadurch wird die Strategie zur Codegenerierung für das „compose“-Plug-in geändert. Auf übergeordneter Ebene führt dies dazu, dass @Composable-Funktionen mit einem zusätzlichen synthetischen Parameter generiert werden, der an nachfolgende @Composable-Aufrufe übergeben wird, damit die Laufzeit die Ausführung ordnungsgemäß verwaltet. Dies ist eine erhebliche Änderung beim Binärcode, die jedoch bei jeder genehmigten Verwendung von „compose“ die Kompatibilität auf Quellebene aufrechterhalten sollte. (I7971c)

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

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

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

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

  • TextDirection.Content wurde hinzugefügt (I48f36)

  • Aktivieren Sie das Symbolleistenmenü, um die Funktionen „Kopieren“, „Ausschneiden“ und „Einfügen“ korrekt anzuzeigen. (Id3955)

  • Unverankerte Symbolleiste für die Textfeldauswahl hinzufügen. (Ie8b07)

  • TextDirectionAlgorithm wird in TextDirection (I75ce8) umbenannt

  • TextDirection wird in ResolvedTextDirection (I3ff38) umbenannt

  • HapticFeedback zur TextField-Auswahl hinzufügen. (I58050)

  • Methoden zum Kopieren, Ausschneiden und Einfügen zur Textfeldauswahl hinzufügen (Idb70b)

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

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

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

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

  • Symbolleiste für textbezogene Operationen hinzufügen. (I49d53)

  • Das neue LifecycleOwnerAmbient ist jetzt verfügbar. Eine Aktivität, die Sie mit der Benutzeroberfläche zum Schreiben verwenden, sollte jetzt androidx.activity.ComponentActivity (oder AppCompatActivity) erweitern. „setContent“ in android.app.Activity wurde verworfen (Idb25a, b/153141084).

  • ui-android-text-Paketname (androidx.text) durch androidx.ui.text.platform ersetzt, um ihn an die androidx-Richtlinie anzupassen. (I42711)