Compose Foundation
androidx.compose.foundation
androidx.compose.foundation.layout
androidx.compose.foundation.gestures
androidx.compose.foundation.selection
androidx.compose.foundation.lazy
androidx.compose.foundation.interaction
androidx.compose.foundation.text
(Zobacz dokumentację interfejsu API wszystkich pakietów Compose)
Najnowsza aktualizacja | Wersja stabilna | Wersja kandydująca do publikacji | Wersja Beta | Wersja alfa |
---|---|---|---|---|
2 lipca 2025 r. | 1.8.3 | - | 1.9.0-beta02 | - |
Struktura
Compose to połączenie 7 identyfikatorów grupy Maven w androidx
. Każda grupa zawiera ukierunkowany podzbiór funkcji, a każda z nich ma własny zestaw informacji o wersji.
W tej tabeli znajdziesz wyjaśnienie grup i linki do poszczególnych zestawów informacji o wersji.
Grupa | Opis |
---|---|
compose.animation | tworzyć animacje w aplikacjach Jetpack Compose, aby zwiększać komfort użytkowników; |
compose.compiler | Przekształcanie funkcji z adnotacją @Composable i włączanie optymalizacji za pomocą wtyczki kompilatora Kotlin. |
compose.foundation | Twórz aplikacje w Jetpack Compose za pomocą gotowych elementów składowych i rozszerzaj podstawy, aby tworzyć własne elementy systemu projektowania. |
compose.material | Twórz interfejsy Jetpack Compose za pomocą gotowych komponentów Material Design. Jest to punkt wejścia wyższego poziomu w Compose, który ma udostępniać komponenty zgodne z tymi opisanymi na stronie www.material.io. |
compose.material3 | Twórz interfejsy Jetpack Compose za pomocą komponentów Material Design 3, czyli kolejnej ewolucji Material Design. Material 3 zawiera zaktualizowane motywy i komponenty oraz funkcje personalizacji Material You, takie jak dynamiczny kolor. Jest on spójny z nowym stylem wizualnym Androida 12 i interfejsem systemu. |
compose.runtime | Podstawowe elementy modelu programowania i zarządzania stanem w Compose oraz podstawowe środowisko wykonawcze, do którego kierowany jest wtyczka kompilatora Compose. |
compose.ui | Podstawowe komponenty interfejsu Compose potrzebne do interakcji z urządzeniem, w tym układ, rysowanie i dane wejściowe. |
Deklarowanie zależności
Aby dodać zależność od Compose, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Maven Google.
Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle
aplikacji lub modułu:
Groovy
dependencies { implementation "androidx.compose.foundation:foundation:1.8.3" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.8.3") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Opinia
Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nową kartę, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.9
Wersja 1.9.0-beta02
2 lipca 2025 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.9.0-beta02
Wersja 1.9.0-beta02 zawiera te zmiany.
Nowe funkcje
- Obsługa elementów inteligentnych w menu kontekstowym i na pasku narzędzi wyboru.
Zmiany w interfejsie API
- Rozwiązaliśmy problem polegający na tym, że niektóre klawiatury sprzętowe lub piloty do telewizora nie przesuwały kursora w nowym komponencie
TextFields
za pomocą klawiszy kierunkowych, tylko przełączały fokus na inny komponent. DodanoComposeFoundationFlag.isTextFieldDpadNavigationFixEnabled
, aby w razie niepożądanego zachowania, którego nie można cofnąć, można było tymczasowo wyłączyć tę poprawkę. (Ie1922)
Poprawki błędów
- Rozwiązanie problemu polegającego na tym, że przyklejone nagłówki nie były przyklejone, jeśli był obecny przypięty element. (I9198d, b/385006133)
TextObfuscationMode.RevealLastTyped
jest teraz zgodny z ustawieniem systemowym „TEXT_SHOW_PASSWORD”. (I41c0c)- Naprawiliśmy błąd, który powodował, że
BasicTextField
nieprawidłowo wyświetlał ostrzeżenie „Wklejono ze schowka” przy pierwszym otwarciu paska narzędzi tekstowych. (I5fda2)
Wersja 1.9.0-beta01
18 czerwca 2025 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.9.0-beta01
Wersja 1.9.0-beta01 zawiera te zmiany.
Zmiany powodujące niezgodność
- Węzły modyfikujące
background
iborder
implementują terazSemanticsModifierNode
. Może to spowodować dodanie nowychSemanticsNodes
do drzewa semantycznego, a w konsekwencji niepowodzenie testów, które opierają się na założeniach dotyczących struktury drzewa semantycznego. Na przykład testy, które używająonChild
,onParent
,onSibling
i innych podobnych metod do tworzenia asercji, mogą się nie powieść, jeśli między bieżącym a docelowym węzłem zostanie dodany nowy węzeł. Najlepszym sposobem na naprawienie tych błędów jest dodanietestTag
bezpośrednio do węzła docelowego. Inne podejście to użycie mniej ścisłego dopasowania, np.onNode(hasAnyAncestor(hasText(“ancestor”)) and hasText(“target”))
. (I638b5)
Zmiany w interfejsie API
- Zmień nazwę
Modifier.addTextContextMenuComponents
naappendTextContextMenuComponents
. (I4c43f) - Usunięto funkcje
AnnotatedOutputTransformation
iaddStyle
oraz przeniesiono je doTextFieldBuffer
. Na numeraddStyle
można dzwonić tylko z urządzeniaOutputTransformation
. (I9930a, b/417991824) - Funkcja Clickable jest przepisywana tak, aby nie używać zawieszonego wskaźnika jako optymalizacji. Ta funkcja jest włączana za pomocą flagi. Jeśli w nowej implementacji wystąpi błąd, możesz ją wyłączyć –
ComposeFoundationFlags.isNonSuspendingPointerInputInClickableEnabled
. (I85b65) - Wprowadziliśmy
isFlingCancellationWithNestedScrollFixEnabled
, aby rozwiązać problem z propagacją szybkiego przewijania w zagnieżdżonym przewijaniu. W tym CL przywracamy zachowanie kontynuacji przesunięcia usunięte w aosp/3260391. Nadal będziemy anulować animację szybkiego przewijania, jeśli dziecko zostanie usunięte z kompozycji. (I467f4, b/405910180, b/419049142, b/416784125) WindowInsetsRulers
: zmieniono wartośćrulersIgnoringVisibility
na maksymalną. Zmieniono funkcjęgetDisplayCutoutBounds()
na funkcję rozszerzeniaPlacementScope
. WartośćWindowInsetsAnimationProperties
została zmieniona naWindowInsetsAnimation
, a wartośćgetAnimationProperties()
została zmieniona nagetAnimation()
. (I3816f)- Zmieniono
InsetsRulers
, aby był w kodzie wspólnym z nazwąWindowInsetsRulers
. Uprościliśmy interfejs API, aby wszystkie wstawki miały wartośćWindowInsetsRulers
. Wyodrębniono właściwości animacji inne niż linijki do klasyAnimationProperties
. Za pomocą funkcjiWindowInsetsRulers.innermostOf()
można łączyć wiele elementówWindowInsetsRulers
. (I2f0c6, b/415012444)
Poprawki błędów
- Ponownie dodaj użycie konta
scrollAnimationSpec
w aplikacjiContentInViewNode
. To zachowanie zostało usunięte podczasscrollAnimationSpec
wycofywania, co spowodowało, że przypadki użycia przestały działać. (I1436a, b/403301605)
Wersja 1.9.0-alpha04
4 czerwca 2025 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.9.0-alpha04
Wersja 1.9.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
PrefetchScheduler
i dostosowywanie zostały wycofane na rzecz wewnętrznej implementacji, która wykonuje wszystkie czynności automatycznie. (I3a9a6, b/420551535)- Zaktualizowano funkcję
Scrollable2DState
, aby w metodziecanScroll
używać przesunięcia zamiast kąta. (I28694, b/417268474) - Tekst
addAnnotation
w plikuAnnotatedOutputTransformation
został zastąpiony tekstemaddStyle
. (I91c6f, b/417991824) - Stabilizacja
LazyLayout
. (If5db4) - Ustabilizowano pusty konstruktor dla
LazyLayoutPrefetchState
i jego metody planowaniaschedulePrecomposition
ischedulePrecompositionAndPremeasure
. (I4362f, b/252853717) - Wprowadziliśmy
ProcessTextKey
na Androidzie, które jest używane w przypadku elementów menu kontekstowego dodanych do działań związanych z intencjąPROCESS_TEXT
. (If0ac4) - Udostępnij interfejsy API menu kontekstowego. Udostępniliśmy funkcje
Modifier.addTextContextMenuComponents
iModifier.filterTextContextMenuComponents
, aby dodawać i usuwać elementy w menu kontekstowym. Udostępniliśmy też te podstawowe interfejsy API, aby można było tworzyć niestandardowe menu kontekstowe:TextContextMenuProvider
TextContextMenuDataProvider
TextContextMenuData
TextContextMenuComponent
LocalTextContextMenuDropdownProvider
LocalTextContextMenuToolbarProvider
(I1b7b0)
- Zapewnij stabilność
LazyLayoutItemProvider
(Icce09, b/261565751) - Wprowadziliśmy inteligentne funkcje wyboru na Androidzie, które można włączać i wyłączać w
ComposeFoundationFlags.isSmartSelectionEnabled
. Udostępnia też statyczną właściwośćcompositionLocal
LocalTextClassifierCoroutineContext
, której można użyć do określeniaCoroutineContext
, w którym uruchamiane jest zadanieTextClassification
. (I1dbaa, b/139321320)
Wersja 1.9.0-alpha03
20 maja 2025 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.9.0-alpha03
Wersja 1.9.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano
AnnotatedOutputTransformation
, która umożliwia dodawanie adnotacji doTextField
przed renderowaniem. (Ibc6f0, b/389978748) - Wprowadzenie
LazyLayoutMeasurePolicy
i ustabilizowanieLazyLayoutMeasureScope
. (I8c5df, b/252853717) BasicSecureTextField
teraz podnosi ScrollState swojego wewnętrznegoBasicTextField
. (I6e576)- Wprowadzono modyfikatory
Modifier.onFirstVisible
iModifier.onVisibilityChanged
, które są modyfikatorami wysokiego poziomu opartymi na modyfikatorzeModifier.onLayoutRectChanged
. Te modyfikatory zostały opracowane specjalnie z myślą o obsłudze wielu typowych wymagań aplikacji, takich jak rejestrowanie wyświetleń czy automatyczne odtwarzanie filmów. Zostały one zaprojektowane z uwzględnieniem wydajności, dzięki czemu można ich używać w krytycznych scenariuszach opartych na listach bez ryzyka pogorszenia wydajności przewijania. Oprócz tych interfejsów API modyfikatorów dodaliśmy dodatkowe interfejsy API, aby obsługiwać te przypadki użycia i ułatwić programistom tworzenie podobnych modyfikatorów niestandardowych, które dokładnie odpowiadają ich potrzebom.RelativeLayoutBounds
(I759b8) - Wprowadziliśmy przeciążenie
detectDragGestures
, które ma kontrolę nad tolerancją dotyku i blokadą orientacji. (Iadb0d) - Wprowadź interfejsy API
Modifier.scrollable2D
,Scrollable2DState
i towarzyszące im interfejsy API do tworzenia stanu. Wprowadziliśmy też wspólne funkcje rozszerzenia przewijania. (Ic61c8, b/214410040) - Wartości kolorów w przestrzeni Compose 64-bitowej nie są bezpośrednio porównywalne z wartościami w przestrzeni Android
ColorLongs
, ponieważ identyfikatory przestrzeni kolorów są w przypadku niektórych przestrzeni kolorów nieuporządkowane. Aby konwertować przestrzenie kolorów Androida, dodaliśmy 2 nowe interfejsy API:toColorLong()
ifromColorLong()
. (I36899)
Poprawki błędów
- Tekst skopiowany z wielu komponentów kompozycyjnych Text w
SelectionContainer
będzie teraz zawierać separator wiersza\n
dodany między tekstami pochodzącymi z poszczególnych komponentów kompozycyjnych Text. (I25332, b/285036739)
Wersja 1.9.0-alpha02
7 maja 2025 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.9.0-alpha02
Wersja 1.9.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Poprawiono sposób dodawania zmian danych wejściowych wskaźnika do elementu
VelocityTracker
wDragGestureNode
. Można to kontrolować za pomocą nowej flagiisOffsetPositionBeforeAddingToVelocityTrackerEnabled
. (Ic7992, b/292556787, b/236451818) - Udostępnianie
await[Vertical/Horizontal]PointerSlopOrCancellation
(I6968b, b/298903681) AbstractComposeView.consumeWindowInsets
ma teraz domyślnie wartość „false”.WindowInsets
zostanie automatycznie dostosowany do rozmiaru i pozycji dziecka, gdy wartość tego parametru będzie ustawiona na false, więc nie musisz już ustawiać go domyślnie na true. Rozwiązuje to problem polegający na tym, że widoki podrzędne nie otrzymywały domyślnie aktualizacjiWindowInsets
. Deweloperzy mogą zrezygnować z aktualizacji, zmieniając wartość eksperymentalnego parametruComposeFoundationLayout.isWindowInsetsDefaultPassThroughEnabled
na true lub, co jest preferowane, ustawiając wartość parametruAbstractComposeView.consumeWindowInsets
na true we wszystkich instancjach widoku Compose. (I6fa0a, b/411868840)
Wkład zewnętrzny
- Naprawiono awarię komponentu Pager w przypadku bardzo dużych wartości parametru beyondViewportPageCount (Idb2db)
Wersja 1.9.0-alpha01
23 kwietnia 2025 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.9.0-alpha01
Wersja 1.9.0-alpha01 zawiera te zmiany.
Zmiany w zachowaniu
Sprawdzanie Lint dostarczane z Compose wymaga teraz minimalnej wersji AGP 8.8.2. Jeśli nie możesz uaktualnić AGP, możesz zamiast tego uaktualnić Lint, używając w pliku
gradle.properties
wersjiandroid.experimental.lint.version=8.8.2
(lub nowszej). Aby uruchamiać sprawdzanie kodu za pomocą narzędzia Lint w IDE, musisz mieć Androida Studio Ladybug lub nowszego.Zmiana powodująca niezgodność: przeciążenia
clickable
,combinedClickable
,selectable
,toggleable
itriStateToggleable
bez parametru Indication obsługują teraz tylko instancjeIndicationNodeFactory
dostarczane za pomocąLocalIndication
. Ta zmiana zostanie zastosowana, gdy ponownie skompilujesz użycia tych modyfikatorów za pomocą tej wersji Compose. Nie ma to wpływu na zależności binarne ani pośrednie. Jeśli udostępniasz wycofaną implementację Indication wLocalIndication
i używasz tych interfejsów API, spowoduje to awarię w czasie działania. Ta zmiana jest konieczna, aby zwiększyć wydajność i umożliwić funkcjom Composable korzystającym z tych modyfikatorów pomijanie ponownego komponowania. Możesz użyćComposeFoundationFlags.isNonComposedClickableEnabled=false
, aby tymczasowo zrezygnować z tej zmiany zachowania i umożliwić uaktualnienie biblioteki Compose bez blokowania migracji. Ten flag zostanie usunięty po wydaniu jednej stabilnej wersji. Aby rozwiązać ten problem, przenieś wszystkie wycofane implementacje sygnałów, aby zamiast nich używaćIndicationNodeFactory
. Możesz też używać przeciążeń z jawnym parametrem Indication – te przeciążenia będą nadal obsługiwać instancje Indication inne niżIndicationNodeFactory
, chociaż nie jest to zalecane ze względu na wydajność. (I6bcdc, b/316914333)
Zmiany w interfejsie API
- Wprowadzenie interfejsu API do tworzenia niestandardowych list punktowanych za pomocą
AnnotatedString
(I1d066, b/383269496, b/139326648) - Zezwól na wywoływanie
ViewTreeObserver.OnScrollChanged
przez funkcję Twórz. Ta funkcja jest wprowadzana pod flagąisOnScrollChangedCallbackEnabled
. Wprowadziliśmy też funkcję rozszerzenia właściwościDelegatableNode dispatchOnScrollChanged
. (I34b9d, b/238109286) - Projekty wydane w Kotlinie 2.0 wymagają do użycia KGP w wersji 2.0.0 lub nowszej (Idb6b5).
- Dodano obsługę sprawdzania kodu za pomocą narzędzia lint dla
TextFieldState
, aby mieć pewność, że jest on zapamiętany w kompozycji. Zamiast tego możesz użyćrememberTextFieldState
. (I53d74) - Dodano obsługę sprawdzania kodu w narzędziu lint dla elementu
FocusRequester
, aby mieć pewność, że jest on zapamiętany w kompozycji (I6bf91). - Dodano obsługę sprawdzania kodu za pomocą narzędzia lint dla
BringIntoViewRequester
, aby mieć pewność, że jest on zapamiętany w kompozycji. (Ibfba6) - Wprowadziliśmy zakresy wywołań
schedulePrefetch
w strategiach siatek i list, aby dostosować je do możliwościLazyListPrefetchState
w zakresie podawania informacji o rozmiarze i indeksie. (Iad80c) - Zmiana powodująca niezgodność: przeciążenia
clickable
,combinedClickable
,selectable
,toggleable
itriStateToggleable
bez parametru Indication obsługują teraz tylko instancjeIndicationNodeFactory
dostarczane za pomocąLocalIndication
. Ta zmiana zostanie zastosowana, gdy ponownie skompilujesz użycia tych modyfikatorów za pomocą tej wersji Compose. Nie ma to wpływu na zależności binarne ani pośrednie. Jeśli udostępniasz wycofaną implementację Indication wLocalIndication
i używasz tych interfejsów API, spowoduje to awarię w czasie działania. Ta zmiana jest konieczna, aby zwiększyć wydajność i umożliwić funkcjom Composable korzystającym z tych modyfikatorów pomijanie ponownego komponowania. Możesz użyćComposeFoundationFlags.isNonComposedClickableEnabled=false
, aby tymczasowo zrezygnować z tej zmiany zachowania i umożliwić uaktualnienie biblioteki Compose bez blokowania migracji. Ten flag zostanie usunięty po wydaniu jednej stabilnej wersji. Aby rozwiązać ten problem, przenieś wszystkie wycofane implementacje sygnałów, aby zamiast nich używaćIndicationNodeFactory
. Możesz też używać przeciążeń z jawnym parametrem Indication – te przeciążenia będą nadal obsługiwać instancje Indication inne niżIndicationNodeFactory
, chociaż nie jest to zalecane ze względu na wydajność. (I6bcdc, b/316914333) - Wprowadzenie flagi do kontrolowania automatycznego zagnieżdżonego wstępnego pobierania:
isAutomaticNestedPrefetchEnabled
(I8d448) - Wprowadź przeciążenie dla
LazyGridState
irememberLazyGridState
, które przyjmujeLazyLayoutCacheWindow
. (I51151) - Dodaje linijki do wcięć okna. Dodaje
DerivedRuler
, aby umożliwić obliczenie linijki na podstawie innej linijki. ModyfikujePlacmentScope
, aby wdrożyć gęstość. (I658bc, b/359260964) - Dodano funkcję fabryczną
WindowInsets()
bez argumentów, która ułatwia tworzenie pustych obiektówWindowInsets
. (I65f62, b/395311689) - Dodano
PaddingValues.Zero
dla pustego elementuPaddingValues
. (If193e, b/386255688)
Poprawki błędów
- Przeciążenie
state
BasicTextField
spowoduje, że kursor pozostanie widoczny po zmianie rozmiaru. (I0eb41, b/406187741) - Zaktualizowano interfejsy API
onVisibleItemsUpdated
wLazyListPrefetchStrategy
iLazyGridPrefetchStrategy
, aby informować o stanie początkowym. (If2cfa)
Wersja 1.8
Wersja 1.8.3
18 czerwca 2025 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.3
Wersja 1.8.3 zawiera te zmiany.
Wersja 1.8.2
20 maja 2025 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.2
Wersja 1.8.2 zawiera te zmiany.
Poprawki błędów
- Wprowadziliśmy poprawkę, która zapobiega dzieleniu przez zero podczas obliczania liczby elementów do wczytania w przypadku wyszukiwania z użyciem fokusu. Zastosowano sprawdzanie we wszystkich układach, które używają symbolu
LazyLayoutBeyondBoundsState
. (8e6dc8)
Wersja 1.8.1
7 maja 2025 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.1
Wersja 1.8.1 zawiera te zmiany.
Poprawki błędów
- Naprawiliśmy błąd w
BasicText
iTextAutoSize
, który powodował, że użycieTextOverflow.Ellipsize
skutkowało wyświetlaniem tekstu mniejszego niż optymalny. (I1e1d8, b/396582066) - Naprawiliśmy błąd w
BasicTextField
, który powodował różne awarie, gdyTextFieldDecorator
pomijał wywołanieinnerTextField
. (I2638c), b/308398612 - Usunęliśmy błąd w
TextField
, który powodował, że po zmianie instancjiTextFieldState
pasek narzędzi tekstowych i uchwyty zaznaczenia całkowicie znikały. (I8068a), b/390477786 - Naprawiliśmy błąd w
BasicText
, który powodował, że zmiana ograniczenia minimalnej szerokości nie aktualizowała położenia tekstu, gdy wartośćtextAlign
była inna niż domyślna. (I77a96), b/406305552
Wersja 1.8.0
23 kwietnia 2025 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0
Wersja 1.8.0 zawiera te zmiany.
Wersja 1.8.0-rc03
9 kwietnia 2025 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-rc03
Wersja 1.8.0-rc03 zawiera te zmiany.
Wersja 1.8.0-rc02
26 marca 2025 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-rc02
Wersja 1.8.0-rc02 zawiera te zmiany.
Wersja 1.8.0-rc01
12 marca 2025 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-rc01
Wersja 1.8.0-rc01 zawiera te zmiany.
Wersja 1.8.0-beta03
26 lutego 2025 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-beta03
Wersja 1.8.0-beta03 zawiera te zmiany.
Poprawki błędów
- Dodano nową właściwość semantyczną
InputText
, która rejestruje wartość pola tekstowego przed zastosowaniem transformacji danych wyjściowych. (Iae46a, b/395911609, b/176949051) - Usunięto wycofane przeciążenia
AutoSize
. UżywajTextAutoSize
interfejsów API, które pełnią tę samą funkcję. (I2c90f) - Rozwiązaliśmy problem z pamięcią podręczną w przypadku funkcji
TextAutoSize
, w którym drugi przebieg układu z tymi samymi ograniczeniami mógł powodować użycie drugiego co do wielkości rozmiaru czcionki zamiast największego. (Id367f)
Wersja 1.8.0-beta02
12 lutego 2025 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-beta02
Wersja 1.8.0-beta02 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że implementacje przewijania poza zakres za pomocą
LayoutModifierNode
nie działały prawidłowo w kontenerach przewijania.
Wersja 1.8.0-beta01
29 stycznia 2025 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-beta01
Wersja 1.8.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
SemanticsNodeInteraction.semanticsId()
został(a) usunięty(a). Zamiast niej używaj zasadySemanticsNodeInteraction.fetchSemanticsNode().id
. (Ie397a)- Przepisz interfejs
requestAutofill
API, aby istniał poza menedżerem autouzupełniania. (Id1929) - Funkcje
ContextualFlowRow
iContextualFlowColumn
zostały oznaczone jako wycofane. Ten eksperymentalny komponent został wprowadzony w wersji 1.7 i nie został jeszcze ustabilizowany, a jego wdrożenie uznano za niepożądane. W przyszłości może zostać udostępniony komponent rozwiązujący problemy, do których ten komponent był przeznaczony.FlowRow
iFlowColumn
mają eksperymentalne przeciążenia, które zostały wprowadzone w wersji 1.7 i zawierają parametroverflow
. Użycie tego parametru zostało wycofane. Zamiast niego można używać przeciążeń bez tego parametru. Domyślne działanie „overflow” w przypadku tych przeciążeń będzie miało wartość „Clip”, tak jak od momentu wprowadzenia.- Wiele przypadków użycia
ContextualFlowRow
można zrealizować za pomocąFlowRow
, ale zdajemy sobie sprawę, że nie zawsze jest to możliwe.ContextualFlowRow
można w pełni wdrożyć w przestrzeni użytkownika. Możesz skopiować jego implementację i w razie potrzeby ją dostosować. W przyszłości chcemy rozwiązywać te problemy w inny sposób. (Ibafec)
Poprawki błędów
- Poprawiono układ tekstu z wielokropkiem, który czasami był nieprawidłowo tłumaczony podczas animacji. Więcej informacji znajdziesz w b/389707025 (Ie55b1, b/389707025).
- Naprawiono błąd w elemencie
BasicText
, w którym wartościTextAutoSize
imaxLines
były ustawione na 1. (Ic0450, b/376834366) - Minimalna wysokość wewnętrzna tekstu uwzględnia teraz parametr
minLines
. Oznacza to, że zgłoszona minimalna wysokość nie będzie mniejsza niż wysokość wymagana do spełnienia parametruminLines
(I225f9, b/388299762).
Wersja 1.8.0-alpha08
15 stycznia 2025 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-alpha08
Wersja 1.8.0-alpha08 zawiera te commity.
Zmiany w interfejsie API
- AutoSize: nazwa została zmieniona z
AutoSize
naTextAutoSize
. Opublikowaliśmy interfejsy API, które umożliwiają tworzenie niestandardowych implementacjiTextAutoSize
. Przykład implementacji automatycznego rozmiaru tekstu niestandardowego znajdziesz wTextAutoSizeSample
. (I85756) - Przeniesiono flagę funkcji
DetectTapGesturesEnableNewDispatchingBehavior
doComposeFoundationFlags
i zmieniono jej nazwę naisDetectTapGesturesImmediateCoroutineDispatchEnabled
. Stara flaga została wycofana i będzie teraz przekazywać wywołania do funkcjiComposeFoundationFlags.isDetectTapGesturesImmediateCoroutineDispatchEnabled
. (I62932)
Poprawki błędów
- Domyślnie
DetectTapGesturesEnableNewDispatchingBehavior
włączona. Interfejsy APITapGestureDetector
domyślnie korzystają teraz z nowego zachowania wysyłania (natychmiastowego wysyłania). (I9f2bc, b/369648479) - Poprawiono modyfikatory
requiredWidth/Height/Size
, aby prawidłowo obsługiwały rozmiary wewnętrzne. (Ie3d7d, b/368113212)
Wkład zewnętrzny
- Ujednolicone
BasicTooltip
w foundation iBasicTooltip/Tooltip
w material3. (Ifc2e6) - Dodano nowy interfejs Schowka i lokalizację kompozycji. (I80809)
Wersja 1.8.0-alpha07
11 grudnia 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-alpha07
Wersja 1.8.0-alpha07 zawiera te zmiany.
Zmiany w interfejsie API
- Usunięto flagę
ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled
, która pomagała cofnąć usunięcie wewnętrznego elementugraphicsLayer
zBasicText
. Jeśli używasz tego flagi, zgłoś błąd i podaj powody. Możesz też przekazywać wartośćModifier.graphicsLayer()
do wywołań funkcjiBasicText
, aby uzyskać takie samo działanie jak wcześniej. (Id9f90) - Dodano domyślną implementację nowego języka DSL
stickyHeader
. (I68986) - W przypadku
LocalAutofillHighlightColor
kompozycji lokalnej użyj typu Kolor. (I0e05b) - Zmieniono nazwę
OverscrollEffect#withoutDrawing
naOverscrollEffect#withoutVisualEffect
. (I1a154)
Poprawki błędów
- Poprawka problemu z obliczaniem celu w
AnchoredDraggable
, który mógł się zatrzymać w niewłaściwym miejscu w przypadku określonych przesunięć. (I23b87, b/367660226)
Wkład zewnętrzny
- Dodanie do interfejsu funkcji
BringIntoViewResponderModifierNode
, która zapewnia nowy sposób implementacji funkcji Bring Into View, a także umożliwia implementację na poziomie platformy (Ia6dd8). - Nieustannie nieznacznie zmieniamy sposób rysowania kursora. Aby wyłączyć rysowanie kursora w testach, możesz użyć znaku
LocalCursorBlinkEnabled
. (I4c697)
Wersja 1.8.0-alpha06
13 listopada 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-alpha06
Wersja 1.8.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaje modyfikator
stylusHoverIcon
. (Iff20a, b/331289114) - Wycofano
confirmValueChange
wAnchoredDraggableState
. Zamiast blokować zmiany stanu, niedozwolone kotwice nie powinny znajdować się w aktywnym zbiorze kotwic, a do wskazania niedostępności żądanego działania należy użyć koduOverscrollEffect
. (Ia717f) - Zmienia menedżera autouzupełniania w interfejs. (I84914, b/376080755)
- Dodaje interfejsy API
OverscrollEffect#withoutDrawing
iOverscrollEffect#withoutEventHandling
– tworzą one opakowaną instancję podanego efektu przewijania, która nie rysuje ani nie obsługuje zdarzeń. Umożliwia to renderowanie przewijania w osobnym komponencie od komponentu, który wysyła zdarzenia. Możesz na przykład wyłączyć rysowanie przewijania poza obszar w leniwym komponencie listy, a potem rysować je osobno na górze lub w innym miejscu. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244) - Dodanie obsługi autouzupełniania na pasku narzędzi tekstowych. (Ie6a4c)
- Wycofuje
OverscrollConfiguration
iLocalOverscrollConfiguration
oraz dodajerememberPlatformOverscrollFactory
, aby utworzyć instancję domyślnej implementacji przewijania poza krawędź lub dostosować jej parametry. Aby wyłączyć przewijanie poza krawędź, zamiastLocalOverscrollConfiguration provides null
użyjLocalOverscrollFactory provides null
. Aby zmienić kolor lub wypełnienie efektu poświaty, zamiastLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
użyjLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
. (Ie71f9, b/255554340, b/234451516) - Zmieniono właściwość
effectModifier
w interfejsieOverscrollEffect
nanode: DelegatableNode
, aby zachować spójność z innymi interfejsami API. (Ic0b46, b/255554340) - Usunięto eksperymentalny interfejs
GlobalAssertions
API. Został on zaprojektowany do przeprowadzania testów ułatwień dostępu. Zamiast tego użyjenableAccessibilityChecks()
. (I59322)
Wersja 1.8.0-alpha05
30 października 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-alpha05
Wersja 1.8.0-alpha05 zawiera te zmiany.
Nowe funkcje
- Obsługa automatycznego dopasowywania rozmiaru tekstu. Przekaż instancję
AutoSize
(np.AutoSize.StepBased
) do ulubionego komponentu tekstowego (np.BasicText
) i zobacz, jak rozmiar tekstu dostosowuje się do dostępnego miejsca. (Ice7e0, b/139320827) - Dodaje interfejsy API
OverscrollFactory
iLocalOverscrollFactory
, które umożliwiają konfigurowanie przewijania poza krawędź w hierarchii. Wartość podana w parametrzeLocalOverscrollFactory
będzie domyślnie używana do tworzeniaOverscrollEffect
. Aby utworzyć i zapamiętać efekt z bieżącej fabryki, użyjrememberOverscrollEffect()
. (I51ca4, b/255554340)
Zmiany w interfejsie API
- Wprowadzamy
CompositionLocal
, którego można używać do modyfikowania odcienia podświetlenia udanego wypełnienia w funkcji autouzupełniania. (I32092) - Usunięto
ScrollableDefaults.overscrollEffect
. Zamiast tego używajrememberOverscrollEffect
. Spowoduje to utworzenie instancji bieżącej implementacji przewijania poza krawędź, która jest dostarczana zLocalOverscrollFactory
. (I1651a, b/255554340),(b/234451516) - Wprowadza nowy interfejs
AutofillManager
, który umożliwia precyzyjne dostosowywanie procesu autouzupełniania, oraz flagęisSemanticAutofillEnabled
, która włącza nową wersję autouzupełniania. (I9d484) - Usuwa
CombinedClickableNode
. Ten eksperymentalny interfejs API został tymczasowo udostępniony, aby umożliwić pracę nad wydajnością, ale nie jest już potrzebny. Zamiast tego używaj bezpośrednioModifier.combinedClickable
, tak jak w przypadku innych interfejsów API modyfikatorów. (I4b658) - Dodaje przeciążenia do funkcji
horizontalScroll
,verticalScroll
,LazyColumn
,LazyRow
,LazyHorizontalGrid
,LazyVerticalGrid
,LazyHorizontalStaggeredGrid
,LazyVerticalStaggeredGrid
,HorizontalPager
iVerticalPager
z obsługą określania niestandardowego parametruOverscrollEffect
. Podany elementOverscrollEffect
będzie otrzymywać zdarzenia i będzie renderowany w granicach tych komponentów. Pamiętaj, że dwukrotne narysowanie tego samego kształtuOverscrollEffect
jest niemożliwe. Nie możesz więc narysować tego samego kształtuOverscrollEffect
, który został przekazany do jednego z tych komponentów, oddzielnie za pomocą kształtuModifier.overscroll
. Przypadek użycia polegający na rysowaniu przewijania poza granicami tych komponentów zostanie rozwiązany w przyszłości. (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)
Wersja 1.8.0-alpha04
16 października 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-alpha04
Wersja 1.8.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaje wywołania zwrotne
DelegatableNode#onDensityChange
iDelegatableNode#onLayoutDirectionChange
, aby umożliwić aktualizowanie stanu węzła po jego zmianie. (I04f3e, b/340662451) - Funkcja Paragraph i
ParagraphIntrinsics
przyjmuje teraz listę wszystkich adnotacji zastosowanych do elementuAnnotatedString
. Wcześniej zawierała tylko listęSpanStyles
. (I12f80) - Wprowadzono
PointerInputModifierNode#touchBoundsExpansion
, którego można używać do powiększania obszaru dotyku pojedynczego modyfikatora danych wejściowych wskaźnika. (Iccf02, b/335339283)
Poprawki błędów
- Naprawiliśmy błąd polegający na tym, że w niektórych sytuacjach progi pozycji przekazywane do funkcji
AnchoredDraggableDefaults.flingBehavior
nie były prawidłowo uwzględniane. (Ifdf0d, b/367660226) - Wprowadziliśmy poprawkę dotyczącą zagnieżdżonych elementów z możliwością przewijania, które są usuwane z drzewa węzłów podczas trwającego przewijania. Teraz te węzły anulują gest szybkiego przesunięcia i prawidłowo wysyłają zdarzenie
onPostFling
z pozostałą prędkością. Wprowadzamy też flagęNewNestedScrollFlingDispatchingEnabled
, która pozwala kontrolować działanie w przypadku regresji. Przed wersją beta flaga zostanie usunięta. (I05c37, b/371168883) - Naprawiliśmy błąd polegający na tym, że funkcja
OverscrollEffects
przekazywana do funkcjiModifier.anchoredDraggable
otrzymywała delty 2D zamiast 1D. (Ie52c0)
Wersja 1.8.0-alpha03
2 października 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-alpha03
Wersja 1.8.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Aktualizacja wersji Kotlina do 1.9 (I1a14c)
- Wprowadzono flagę
DraggableAddDownEventFixEnabled
(I848d5) - Wprowadziliśmy nową rolę semantyczną o nazwie Karuzela, która emuluje zachowanie listy w pagerach na potrzeby usług ułatwień dostępu. (Id354b, b/354109776, b/239672673)
- Usunięto domyślny modyfikator
graphicsLayer
z funkcji kompozycyjnejBasicText
. Dodaliśmy eksperymentalną flagęComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled
, która umożliwia przywrócenie starego działania. (Ie478d) - Dodano
Modifier.recalculateWindowInsets()
, aby umożliwić dzieciom w hierarchii korzystanie zinsetsPadding
nawet wtedy, gdy rodzice dopasowali je bezconsumeWindowInsets()
. (I7f9e4)
Poprawki błędów
- Wdróż gest podnoszenia w
detectDragGestures
, elementach, które można przeciągać, i elementach, które można przewijać. Jeśli element, który można przeciągać, przestanie reagować na gest, element nadrzędny będzie mógł go przejąć. Umożliwia to bardziej ciągłą i zintegrowaną obsługę gestów. (Ic88fe) - Aktualizowanie zachowania anulowania szybkiego przewijania w elementach przewijanych. Jeśli element przewijany zostanie przesunięty i osiągnie granice, prawidłowo przekaże prędkość przesunięcia do następnego elementu przewijanego w łańcuchu, zamiast kontynuować przesunięcie. (I9326a)
Wersja 1.8.0-alpha02
18 września 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-alpha02
Wersja 1.8.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Dostępne są teraz znaki
TextOverflow.StartEllipsis
iTextOverflow.MiddleEllipsis
, które umożliwiają umieszczanie wielokropka na początku lub w środku wiersza tekstu jednowierszowego (I38913, b/185418980).
Wersja 1.8.0-alpha01
4 września 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-alpha01
Wersja 1.8.0-alpha01 zawiera te zmiany.
Wersja 1.7
Wersja 1.7.8
12 lutego 2025 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.8
Wersja 1.7.8 zawiera te zmiany.
Poprawki błędów
- Naprawiono błąd w
BasicTextField
z transformacją danych wejściowych podczas zastępowania części wklejonego tekstu. (I73702)
Wersja 1.7.7
29 stycznia 2025 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.7
Wersja 1.7.7 zawiera te zmiany.
Poprawki błędów
- Usunięto awarię
IndexOutOfBound
związaną z adnotacją linku. (Ic96d2) - Rozwiązano problem z nieskończonym ponownym komponowaniem w niektórych przypadkach brzegowych z linkami. (I04a03)
Znane błędy
- Wykryliśmy błąd, który w rzadkich przypadkach może powodować nieoczekiwane zawijanie tekstu na urządzeniach z Androidem w wersji API 35. Nie można go rozwiązać w wersji 1.7, więc zostanie naprawiony w wersji 1.8. (b/391378120)
Wersja 1.7.6
11 grudnia 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.6
Wersja 1.7.6 zawiera te zmiany.
Poprawki błędów
- Rozwiązanie problemu z niewidocznością treści w tekście dla usług ułatwień dostępu.
- Rozwiązaliśmy problem, który powodował, że
AndroidEmbeddedExternalSurface
nie resetował się prawidłowo i zawieszał się podczas ponownego użycia na liście leniwej.
Wersja 1.7.5
30 października 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.5
Wersja 1.7.5 zawiera te zmiany.
Poprawki błędów
- Sprawdź, czy przypięte elementy nie są dwukrotnie umieszczane w obszarze dopełnienia treści. (Ic6224)
Wersja 1.7.4
16 października 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.4
Wersja 1.7.4 zawiera te zmiany.
Poprawki błędów
- Naprawiliśmy błąd, który powodował rzadkie awarie w polach tekstowych. (I475c6, b/313010266)
- Usunięto
ReusableContentHost
u podstawy elementów układu Lazy. Była to potencjalna główna przyczyna awarii „measure called on a deactivated node”. (Id6e60)
Wersja 1.7.3
2 października 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.3
Wersja 1.7.3 zawiera te zmiany.
Poprawki błędów
- Naprawiono wyciek pamięci w przypadku funkcji
BasicText
, gdy parametr minLines miał wartość inną niż domyślna.
Wersja 1.7.2
18 września 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.2
Wersja 1.7.2 zawiera te zmiany.
Poprawki błędów
- Rozwiązanie problemu z elementem, który można było przeciągać, ale w którym brakowało zdarzeń „w dół”, co powodowało, że szybkie przesunięcia wyglądały wolniej niż zwykle.
Wersja 1.7.1
10 września 2024 r.
- Brak zmian w artefaktach Androida. Usunięto
-desktop
artefaktów, a dodano-jvmStubs
i-linuxx64Stubs
artefakty. Żaden z tych celów nie jest przeznaczony do użytku. Są to symbole zastępcze, które mają pomóc w pracach nad Jetbrains Compose.
Wersja 1.7.0
4 września 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0
Wersja 1.7.0 zawiera te zmiany.
Ważne zmiany od wersji 1.6.0
- Znacznie poprawiliśmy wydajność funkcji
Modifier.clickable
,Modifier.focusable
,Modifier.indication
,Modifier.scrollable
iModifier.draggable
. W ramach tych działań wprowadziliśmy te zmiany w interfejsie API oraz zmiany wewnętrzne:- Dodaliśmy nowy interfejs Indication API
IndicationNodeFactory
. Dzięki temu wdrożenia funkcji Indication są bardziej wydajne niż w przypadku poprzedniego (obecnie wycofanego) interfejsu APIrememberUpdatedInstance
. Informacje o migracji znajdziesz na stronie developer.android.com. - Funkcje
clickable
/combinedClickable
/selectable
/toggleable
akceptują teraz parametrMutableInteractionSource
, który może mieć wartość null. Jeśli wartość jest pusta, a podany element Indication jestIndicationNodeFactory
, element Indication można utworzyć tylko w razie potrzeby, co zwiększa wydajność. Jeśli nie przenosisz zmiennejMutableInteractionSource
na początek funkcji i nie używasz jej, zalecamy przekazywanie wartości null zamiastremember { MutableInteractionSource() }
. Indication#rememberUpdatedInstance
zostało wycofane. Powoduje to duże, nieuniknione obniżenie wydajności i uniemożliwia inne optymalizacje. Zamiast tego używaj nowego interfejsuIndicationNodeFactory
API.
- Dodaliśmy nowy interfejs Indication API
BasicTextField
używanieTextFieldState
jest już stabilne i zalecamy wszystkim witrynom wywołań rozpoczęcie migracji zBasicTextField(value, onValueChange)
naBasicTextField(TextFieldState)
.- Pole
ClickableText
zostało wycofane. Aby dodać do tekstu linki, w plikuAnnotatedString
użyj znakuBasicText
z nową adnotacjąLinkAnnotation
.LinkAnnotation
umożliwia dostosowywanie stylu na podstawie stanu linku (np. zaznaczony, najechany). - Przedstawiamy
ContextualFlowRow
iEnhanced FlowRow/Column
zMaxLines
iOverflow
. Z przyjemnością informujemy o ulepszeniach eksperymentalnych funkcjiFlowRow
iFlowColumn
, które teraz obsługująmaxLines
i przepełnienie, oraz o wprowadzeniu funkcjiContextualFlowRow
iContextualFlowColumn
. Ta aktualizacja ma na celu zapewnienie komponentów o optymalnej wydajności. KomponentContextualFlow*
doskonale sprawdza się w przypadku dużej liczby elementów, które korzystają z małej konfiguracji maxLines i dynamicznych przycisków „+N więcej”, a komponentyFlowRow
iFlowColumn
są idealne w przypadku małej liczby elementów (poniżej 100). Ważne: aby zachować dotychczasowe działanie wFlowRow
lubFlowColumn
, gdzie wszystkie elementy są komponowane niezależnie od tego, czy mieszczą się w maksymalnej wartości osi poprzecznej, podczas inicjowania ustaw przepełnienie naFlowRowOverflow.Visible
lubFlowColumnOverflow.Visible
. Przykłady działania tych nowych funkcji znajdziesz w sekcjachContextualFlowRowSample
iFlowRowSample
. (Ib9135, b/293577082) - Dodaliśmy obsługę animacji pojawiania się i znikania elementów w
LazyColumn
iLazyRow
. Wcześniej można było dodać modyfikatorModifier.animateItemPlacement()
, aby obsługiwać animacje umieszczania (zmiany kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwieModifier.animateItem()
, który umożliwia obsługę wszystkich 3 rodzajów animacji: pojawiania się (zanikanie), znikania (zanikanie) i zmiany kolejności. (I2d7f7, b/150812265) - Wdrożono eksperymentalną obsługę długich zrzutów ekranu w kontenerach przewijania Compose za pomocą oficjalnego interfejsu Android API (
ScrollCaptureCallback
). - Źródła
NestedScroll
Drag and FlingUserInput
zastępujemy źródłamiUserInput
iSideEffect
, aby uwzględnić rozszerzoną definicję tych źródeł, która obejmuje teraz animacje (Side Effect) oraz kółko myszy i klawiaturę (UserInput
). LazyLayout
żądania wstępnego pobierania mogą być teraz oznaczane jako pilne, co oznacza, że spodziewamy się, że ten element będzie potrzebny w następnej klatce, i chcemy zignorować budżet klatki, aby wykonać więcej pracy z wyprzedzeniem (Id513f);- Obsługa pisma odręcznego rysikiem na urządzeniach z Androidem U i nowszym. (I002e4)
- Różne interfejsy API zostały oznaczone jako stabilne.
- Pagery, przyciąganie, wstawki okien
Wersja 1.7.0-rc01
21 sierpnia 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-rc01
Wersja 1.7.0-rc01 zawiera te zmiany.
Poprawki błędów
- Naprawiliśmy regresję, która powodowała awarię, gdy dowolny element był aktywny w elemencie nadrzędnym, który można było aktywować (lub kliknąć) i który był wyłączony. (b/317561689)
Wersja 1.7.0-beta07
7 sierpnia 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-beta07
Wersja 1.7.0-beta07 zawiera te zmiany.
Poprawki błędów
- Funkcje związane z wprowadzaniem tekstu
SemanticsNodeInteraction
,performTextReplacement
,performTextInput
iperformTextClearance
będą teraz zgłaszać błędy asercji, gdy zostaną wywołane w przypadkuTextFields
tylko do odczytu. (I4ae8f) - Rozwiązaliśmy problem z wyglądem hiperlinków. (I23311)
- Rozwiązanie problemu z modyfikatorem
contentReceiver
, który nie działał z niektórymi edytorami IME. - Generowanie prędkości: zapobieganie propagacji wartości NaN w interfejsie Compose i bibliotece Foundation.
Wersja 1.7.0-beta06
24 lipca 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-beta06
Wersja 1.7.0-beta06 zawiera te zmiany.
Wersja 1.7.0-beta05
10 lipca 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-beta05
Wersja 1.7.0-beta05 zawiera te zmiany.
Poprawki błędów
- Poprawka dotycząca traktowania wartości NaN w
SnapFlingBehavior
i Pager.
Wersja 1.7.0-beta04
26 czerwca 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-beta04
Wersja 1.7.0-beta04 zawiera te zmiany.
Poprawki błędów
- Unikanie awarii podczas pomiaru bardzo długich wierszy tekstu (np.10 tys. znaków) (8157ab)
- Poprawiono pomiar bardzo dużego tekstu, który powodował awarię w nowej wersji
BasicTextField
(6b7575) - Przywraca zmianę w pomiarze wierszy i kolumn, która w określonych scenariuszach powoduje nieprawidłowe działanie tekstu (69e8ba).
Wersja 1.7.0-beta03
12 czerwca 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-beta03
Wersja 1.7.0-beta03 zawiera te zmiany.
Wersja 1.7.0-beta02
29 maja 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-beta02
Wersja 1.7.0-beta02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaje eksperymentalny interfejs API do konfigurowania zachowania wstępnego pobierania
LazyGrids
podobny do istniejącego eksperymentalnego interfejsu API dlaLazyLists
. Obejmuje to obsługę wstępnego pobierania elementów w zagnieżdżonych elementachLazyGrids
. Podobnie jak w przypadkuLazyListPrefetchStrategy
, domyślna implementacja polega na wstępnym pobieraniu pierwszych 2 zagnieżdżonych elementów każdej siatki, ale można to skonfigurować za pomocą nowych interfejsów APILazyGridPrefetchStrategy(nestedPrefetchItemCount)
iLazyListPrefetchStrategy#onNestedPrefetch
. (I591c4) - Zmieniono nazwę
SemanticsProperties.Editable
naIsEditable
, a wartośćSemanticsPropertyReceiver.editable
naisEditable
. Właściwość jest teraz wartością logiczną i jest zawsze określana przez pola tekstowe. (I8acd8) - Przeniesiono
basicMarquee
wartości domyślnych do obiektuMarqueeDefaults
. (I12ff6) - Zmieniono nazwę parametru
basicMarquee
delayMillis
narepeatDelayMillis
. (I12ff6) - Aktualizacja interfejsu API do stylizowania linków: przeniesiono
TextLinkStyles
doTextStyle
i usuniętoTextDefaults
z materiału (I5477b)
Poprawki błędów
- Nazwa
LayoutCoordinates.introducesFrameOfReference
została zmieniona naLayoutCoordinates.introducesMotionFrameOfReference
, aby lepiej odzwierciedlała jej przeznaczenie. Zmieniono nazwę powiązanej funkcji, aby obliczać współrzędne na podstawie tego flagi. (I3a330) - Usunęliśmy wartość „Domyślna” z właściwości
MarqueeDefaults
. (I1d8a0) - Usunięto „Marquee” z usług
MarqueeDefaults
. (Iad4f4) - Usunięto użytkownika
TextLinkStyles
z zajęćTextStyle
. Zamiast tegoTextLinkStyles
jest częścią konstruktoraLinkAnntation
i metodyAnnotatedString.fromHtml
(I90b2b). - Naprawiliśmy błąd, który powodował, że Pager zatrzaskiwał się podczas przesuwania w kierunku granicy, gdy był już na niej zatrzymany. (I9f373, b/339171222)
- W BTF2 działają teraz prawidłowe gesty wyboru myszą. (Ibe8c6)
Wkład zewnętrzny
- Ponowne przesłanie „Make compose/measure time calculation content-type based in prefetch to improve accuracy” (Iea622)
- Ulepszenie dokładności obliczania czasu tworzenia/pomiaru na podstawie typu treści w wstępnym pobieraniu (Ibccb1)
- Udostępnianie modyfikatorów
WindowInsetsPadding
z typowego zestawu źródeł (I070b2)
Wersja 1.7.0-beta01
14 maja 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-beta01
Wersja 1.7.0-beta01 zawiera te commity.
Zmiany w interfejsie API
- Ponownie dodaliśmy właściwość
KeyboardOptions.shouldShowKeyboardOnFocus
jako wycofaną i ukrytą ze względu na zgodność binarną. (I15cfe) Modifier.anchoredDraggable
odwraca teraz domyślnie różnice przeciągania w przypadku komponentów o orientacji poziomej używanych w układzie od prawej do lewej. (I3c6d9)AnnotatedString.hasEqualsAnnotations
to terazhasEqualAnnotations
. (I685c0)- Zaktualizowano interfejs API do pobierania linków w tekście w motywie Material. W szczególności usunęliśmy metody z
TextDefaults
do tworzenia tematycznychLinkAnnotations
i parsowania kodu HTML z tematycznymi linkami. Zamiast tego dodaliśmy do funkcji kompozycyjnej Text parametrTextLinkStyles
, który umożliwia stylowanie linków. (I31b93) - Zastąpiono wywołania zwrotne
onDragStarted
ionDragStopped
wywołaniami zwrotnymi, które nie powodują zawieszenia. (I59de8)
Poprawki błędów
- Usunęliśmy błąd, który powodował awarię komponentu Pager, gdy wartość
contentPadding
była większa niż ograniczenia przychodzące. Pager wymusza teraz, aby wartości ujemne zwracane przezPageSize
były równe 0. (Iba5d8, b/314008560)
Wersja 1.7.0-alpha08
1 maja 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-alpha08
Wersja 1.7.0-alpha08 zawiera te zmiany.
Nowe funkcje
- Dodaliśmy menu kontekstowe po kliknięciu prawym przyciskiem myszy ikon
BasicTextField
iSelectionContainer
, które zawiera opcje wycinania, kopiowania, wklejania i zaznaczania wszystkiego. (If8c93, Ia2b49, I6f268)
Zmiany w interfejsie API
LazyLayout
żądania wstępnego pobierania mogą być teraz oznaczane jako pilne, co oznacza, że spodziewamy się, że ten element będzie potrzebny w następnej klatce, i chcemy zignorować budżet klatki, aby wykonać więcej pracy z wyprzedzeniem (Id513f);- Zmieniono nazwę
isPositionedByParentWithDirectManipulation
naintroducesFrameOfReference
. Pamiętaj, że teraz ma odwrotny efekt, co oznacza, że domyślnie większośćLayoutCoordinates
wprowadza ramkę odniesienia, a właściwość ma wartość fałsz tylko wtedy, gdy jest poddawana bezpośredniej manipulacji. Aby wysłać zapytanie o pozycję tylko w przypadku tych, które wprowadzają ramę odniesienia, użyj znakupositionInLocalFrameOfReference(...)
. lubpositionInLocalLookaheadFrameOfReference
zLookaheadScope
. (Ifc5f7) - Zmieniono nazwę
onClicked
naonClick
wLinkInteractionListener
(Iaa35c) - Zmień funkcję lambda działania dla
getScrollViewportLength
zgodnie z opinią rady ds. API. (Ibc74a) - Zmieniono nazwy interfejsów API przekazywania pisania odręcznego rysikiem. (Ica45f, b/327271923)
- Zmień nazwę
TextInclusionStrategy.isInside
naisIncluded
. Ustaw typ zwracanyParagraph/MultiParagraph#getRangeForRect()
jako niepusty. (I51f26)
Poprawki błędów
- Dodaliśmy opcję „Zaznacz wszystko” do wszystkich menu kontekstowych tekstu w
SelectionContainer
. (Ib750e, b/240143283) - Rozwiązanie problemu z robieniem długich zrzutów ekranu w przypadku przewijanych kontenerów z
reverseScrolling=true
. (I7c59c) - Rozwiązaliśmy problem polegający na tym, że
AnchoredDraggableState
currentValue
zmieniał się po zbliżeniu się do granic stanu. (Iea30b, b/333846848)
Wkład zewnętrzny
- Nazwa
PrefetchExecutor
->PrefetchScheduler
została zmieniona, aby lepiej odzwierciedlać zakres obowiązków. (Ib9154) - Dodano obsługę wstępnego pobierania elementów w zagnieżdżonych komponentach
LazyLists
(np. w komponencieLazyColumn
, który renderuje zagnieżdżone komponentyLazyRows
). Oczekuje się, że ta zmiana zmniejszy liczbę pominiętych klatek podczas przewijania tych komponentówLazyLists
. Domyślnie w przypadku implementacji wstępnie pobierane są pierwsze 2 elementy zagnieżdżone, ale to działanie można kontrolować za pomocą nowych interfejsów APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
iLazyListPrefetchStrategy#onNestedPrefetch
. (I51952)
Wersja 1.7.0-alpha07
17 kwietnia 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-alpha07
Wersja 1.7.0-alpha07 zawiera te zmiany.
Nowe funkcje
- Dodano obiekt
TextDefaults
, który zawiera metody tworzenia obiektuLinkAnnotation
i parsowania ciągu znaków z tagami HTML, które stosują atrybutMaterialTheme
do linków. (I98532, b/139312671) - Dodaliśmy obsługę animacji pojawiania się i znikania elementów w
LazyVerticalGrid
iLazyHorizontalGrid
. Wcześniej można było dodać modyfikatorModifier.animateItemPlacement()
, aby obsługiwać animacje umieszczania (zmiany kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwieModifier.animateItem()
, który umożliwia obsługę wszystkich 3 rodzajów animacji: pojawiania się (zanikanie), znikania (zanikanie) i zmiany kolejności. (Ib7d12, b/330510929) - Dodaliśmy obsługę animacji pojawiania się i znikania elementów w
LazyVerticalStaggeredGrid
iLazyHorizontalStaggeredGrid
. Wcześniej można było dodać modyfikatorModifier.animateItemPlacement()
, aby obsługiwać animacje umieszczania (zmiany kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwieModifier.animateItem()
, który umożliwia obsługę wszystkich 3 rodzajów animacji: pojawiania się (zanikanie), znikania (zanikanie) i zmiany kolejności. (I69bc9, b/330511290)
Zmiany w interfejsie API
- Dodaje
ContextMenuColors
i powiązany z nimLocalContextMenuTheme
ProvidableCompositionLocal
. Kolory menu kontekstowego w polach tekstowych i tekście, który można zaznaczyć, można modyfikować, podając lokalizację kompozycji. (Ifa154) - Linki tekstowe mają teraz opcję stylu stanu naciśnięcia oprócz stylów normalnego, najechanej i skupionej. (I5f864, b/139312671)
- Wprowadź
ViewConfiguration.HandwritingGestureLineMargin
dla gestów pisma odręcznego. Obsługa gestu pisania odręcznego w przypadku językaBasicTextField
. (Ie6e13, b/325660505) - Usunęliśmy
DelegatableNode.scrollIntoView
w wersji 1.7, ponieważ nie mieliśmy czasu na ustabilizowanie pozostałej części powiązanego interfejsu API. Ta funkcja zostanie ponownie wprowadzona w wersji 1.8 (I6cf61, b/333421581, b/332900232). - Podczas wysyłania zapytań o współrzędne układu możesz teraz używać argumentu
excludeDirectManipulationOffset
, aby wykluczyć przesunięcie ustawione przez układy nadrzędne, które umieściły elementy podrzędne za pomocą argumentuPlaceable.PlacementScope.withDirectManipulationPlacement
. Podobnie układ, który często zmienia pozycję elementów podrzędnych, może teraz umieszczać je za pomocąwithDirectManipulationPlacement
(np. przewijania, które jest domyślnie zaimplementowane). Dzięki temu animacje oparte naapproachLayout
są bardziej intuicyjne, ponieważ twórcy mają możliwość rozróżnienia, które przesunięcie animować, a które zastosować bezpośrednio podczas animowania swojego podejścia. (I60ec7) - Wprowadź
requestScrollToItem
zaLazyStaggeredGrid
. W przypadku każdego przejścia pomiaru klient może zrezygnować z utrzymywania indeksu na podstawie klucza, wywołując funkcjęrequestScrollToItem
. Nie zmienia to w żaden sposób dotychczasowego działania, chyba że zostanie wywołana funkcjarequestScrollToItem
. (I63983) - Przedstaw
requestScrollToPage
w miejscu podziału na strony. W przypadku każdego przejścia pomiaru klient może zrezygnować z utrzymywania indeksu na podstawie klucza, wywołując funkcjęrequestScrollToPage
. Nie zmienia to w żaden sposób dotychczasowego działania, chyba że zostanie wywołana funkcjarequestScrollToPage
. (Ic4213) - Wprowadzono
requestScrollToItem
w przypadkuLazyGrids
. W przypadku każdego przejścia pomiaru klient może zrezygnować z utrzymywania indeksu na podstawie klucza, wywołując funkcjęrequestScrollToItem
. Nie zmienia to w żaden sposób dotychczasowego działania, chyba że zostanie wywołana funkcjarequestScrollToItem
. (I0a7a0) ClickableText
jest oznaczony jako wycofany. Aby dodać linki do tekstu, utwórzAnnotatedString
zLinkAnnotation
odpowiadającym linkowi i przekaż ten elementAnnotatedString
do funkcji kompozycyjnejText
(I34d4b, b/323346994).- Typ pliku „
UrlAnnotation
” został wycofany. Zamiast niego używaj typu „LinkAnnotation.Url
”. Jeśli używasz motywów Material Design, użyj obiektuTextDefaults
, aby utworzyć adnotację z zastosowanym motywem Material Design (I8d180, b/323346545). - Nazwa została zmieniona z
String.parseAsHtml
naAnnotatedString.Companion.fromHtml
(I43dcd) - Dodano argumenty stylu (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) i detektor interakcji z linkiem do metodyparseAsHtml
. Podczas analizowania ciągu znaków z tagami HTML z tagami<a>
metoda utworzy obiektLinkAnnotation.Url
dla każdego takiego tagu i przekaże obiekty stylu oraz odbiornik interakcji z linkiem do każdej adnotacji. (I7c977) LinkAnnotation
przyjmuje teraz argumenty dotyczące stylu opartego na stanie i wartośćLinkInteractionListener
. Dodaj tę adnotację doAnnotatedString
, aby uzyskać hiperlink. Przekazując wartościfocusedState
lubhoveredState
, możesz zdefiniować konfigurację wizualną linków, gdy są zaznaczone lub gdy nad nimi najedziesz kursorem. (I81ce4, b/139312671)- Flaga funkcji długich zrzutów ekranu została usunięta. (I28648, b/329128246)
LazyColumn
będzie teraz prawidłowo renderować przyklejone nagłówki na długich zrzutach ekranu. (I8d239, b/329296635)- Stabilizacja większości pozostałych eksperymentalnych interfejsów API wprowadzonych w nowej wersji
BasicTextField
. (I714e2) - Dodano parametr
textObfuscationCharacter
do elementuBasicSecureTextField
, który określa, jakiego znaku używać podczas maskowania treści. (I0588b) - Źródła Drag i Fling zostaną zastąpione źródłami
UserInput
iSideEffect
, aby uwzględnić rozszerzoną definicję tych źródeł, która obejmuje teraz animacje (Side Effect) oraz kółko myszy i klawiaturę (UserInput
). (I40579)NestedScroll
- Wprowadź
LocalBringIntoViewSpec
, czyli zależne od platformy zachowanie przewijania, które jest stosowane w warstwie modyfikatora Scrollable. (I27aa5, b/317453911) - Użytkownik
TextFieldCharSequence
został usunięty.TextFieldBuffer.originalValues
zastępujeTextFieldBuffer.originalText
iTextFieldBuffer.originalSelection
. (I2c7d6) - Pole
ImeOptions.hintLocales
nie może już mieć wartości null. Jeśli chcesz przekazać pustą listę ustawień regionalnych, użyjLocaleList.Empty
. (Ic5bc4) - Zmieniono nazwę
getOffsetFractionForPage
nagetOffsetDistanceInPages
. (Ia05e2)
Poprawki błędów
- Gdy
InputTransformations
są połączone znext
, ichKeyboardOptions
są teraz prawidłowo scalane według poszczególnych opcji za pomocą nowej metodyKeyboardOptions.merge
. (Ie5304, b/295951492) AnchoredDraggableState
targetValue
nie uwzględnia już progów pozycji. Ma teraz domyślny próg 50%, co oznacza, żetargetValue
zmienia się w połowie odległości między 2 punktami. (I82c2c)
Wkład zewnętrzny
- Zmiana nazw 2 interfejsów API przewijania (I56a75)
Wersja 1.7.0-alpha06
3 kwietnia 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-alpha06
Wersja 1.7.0-alpha06 zawiera te zmiany.
Nowe funkcje
- Dodaliśmy obsługę animacji pojawiania się i znikania elementów w
LazyColumn
iLazyRow
. Wcześniej można było dodać modyfikatorModifier.animateItemPlacement()
, aby obsługiwać animacje umieszczania (zmiany kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwieModifier.animateItem()
, który umożliwia obsługę wszystkich 3 rodzajów animacji: pojawiania się (zanikanie), znikania (zanikanie) i zmiany kolejności. (I2d7f7, b/150812265) - Klienci
LazyColumn/LazyRow
mogą teraz zrezygnować z utrzymywania indeksu opartego na kluczu na potrzeby nadchodzącego przekazywania pomiarów, wywołując funkcjęLazyListState.requestToScroll
, która nie zawiesza działania. (I98036, b/209652366) - Dodaliśmy metodę
parseAsHtml
dla ciągów ze stylami: umożliwia ona przekształcenie ciągu oznaczonego tagami HTML wAnnotatedString
. Pamiętaj, że nie wszystkie tagi są obsługiwane. Na przykład nie możesz jeszcze wyświetlać list punktowanych. (I84d3d) - Wprowadziliśmy eksperymentalną obsługę długich zrzutów ekranu w kontenerach przewijania Compose za pomocą oficjalnego interfejsu Android API (
ScrollCaptureCallback
). Ta funkcja jest eksperymentalna i może obecnie nie obsługiwać wszystkich przypadków prawidłowo. Dlatego jest ona obecnie domyślnie wyłączona. Aby włączyć tę funkcję, ustaw flagęComposeFeatureFlag_LongScreenshotsEnabled
na wartość true. Ten flag zostanie usunięty przed wersją beta 1.7. (I2b055, b/329296471) - Wprowadzenie nowego interfejsu
GraphicsLayer
API, który zapewnia większą elastyczność w zakresie umieszczania i renderowania instancjiGraphicsLayer
oraz obsługuje wewnętrzne funkcje renderowania bez konieczności koordynowania z implementacjami Composable w celu określenia instancji modyfikatoraGraphicsLayer
.
Zmiany w interfejsie API
- Wszystkie parametry
KeyboardOptions
mają teraz domyślnie nieokreśloną wartość. Dodano metodęKeyboardOptions.merge
. - Zmieniono nazwę
KeyboardOptions.autoCorrect
naautoCorrectEnabled
i umożliwiono przypisywanie wartości null, która oznacza, że nie podano żadnej wartości. (Ia8ba0, b/295951492) - Zmieniono nazwę
outOfBoundsPageCount
nabeyondViewportPageCount
. (I129c6) - Wartość
fun ClipEntry.getMetadata()
została zmieniona naval ClipEntry.clipMetadata
. (I50155) - Użytkownik
TextFieldState.valueAsFlow()
został usunięty. Preferowane jest używaniesnapshotFlow { state.text }
lubsnapshotFlow { TextFieldCharSequence(state.text, state.selection) }
(I7d629). - Zmieniliśmy kolejność parametrów
InputTransformation.transformInput
. UsuniętooriginalValue: TextFieldCharSequence
. Zamiast tegoTextFieldBuffer
ma teraz tę wartość o tej samej nazwie. Usunęliśmy też parametrvalueWithChanges: TextFieldBuffer
.TextFieldBuffer
jest teraz zakresem odbiornika w funkcji. (I919cc) BasicTextField(state)
iBasicSecureTextField
używają terazKeyboardActionHandler
zamiastKeyboardActions
do przetwarzania działań wykonywanych przez klawiaturę ekranową. (I58dda)- Interfejsy API delegowania pisma odręcznego rysikiem, które obsługują pisanie odręczne rysikiem w „fałszywych” polach wprowadzania tekstu. (I9c09c, b/327271923)
- Zmieniono nazwę
KeyboardOptions.shouldShowKeyboardOnFocus
nashowKeyboardOnFocus
. (Ib4b7a, b/295951492) - Usunięto parametr
hintMediaTypes
z funkcjiModifier.contentReceiver
. Zachęcaliśmy już deweloperów do sprawdzania typu multimediów otrzymanego parametruTransferableContent
, ponieważ może on być niezgodny ze skonfigurowanym parametremhintMediaTypes
. (I82f99) - Zmieniono kolejność parametrów funkcji
BasicSecureTextField
. Usunięto parametrykeyboardType
iimeAction
na rzecz pełnej klasyKeyboardOptions
, zachowując te same wartości domyślne odpowiednie dlaBasicSecureTextField
. Usunęliśmy też parametrscrollState
. (Ibbfa9) - Typ
TextFieldState.text
został zmieniony zTextFieldCharSequence
naCharSequence
. Dlatego dodaliśmyTextFieldState.selection: TextRange
iTextFieldState.composition: TextRange?
, aby odczytywać bieżące wartości wyboru i kompozycji bezpośrednio z obiektu stanu. - Użytkownik
TextFieldState.forEachTextValue
został usunięty. (Idb2a2) - Usunięto funkcje
ClipboardManager.getClipMetadata
iClipboardManager.hasClip
. Aby odczytać metadane bieżącego wpisu klipu, użyjclipEntry.getMetadata()
. Sprawdź też wynikClipboardManager.getClip
, aby dowiedzieć się, czy schowek zawiera bieżący klip. (I50498) ClipboardManager.setClip
akceptuje teraz wartość null, aby można było wyczyścić schowek. (I7d2e9)ReceiveContentListener
jest przekształcany w interfejs funkcji. Usunięto też przeciążenie funkcjiModifier.receiveContent
, które przyjmuje lambdę, ponieważReceiveContentListener
jest teraz interfejsem funkcji.- Nazwa
Modifier.receiveContent
została zmieniona naModifier.contentReceiver
. (I1e6af) - Zmieniono nazwę
TransferableContent.consumeEach
naTransferableContent.consume
. (I1e462) rememberTextFieldState
został przekształcony w stabilny interfejs API. (I37999)
Poprawki błędów
- Naprawiliśmy błąd, który powodował, że wariant
BasicTextField(state)
nie działał z klawiaturami CJK(opartymi na kompozycji). (I54425) - Usunęliśmy błąd, który powodował, że w określonych scenariuszach z ponownym użyciem
Modifier.Node
funkcjaModifier.dragAndDropTarget()
mogła odwoływać się do nieaktualnych danych. (I05bb1) - Cofnięto niedawną zmianę umowy, zgodnie z którą wywołania
AnchoredDraggableState#anchoredDrag
byłyby zamykane po zakończeniu operacjianchoredDrag
. (I95715)
Wersja 1.7.0-alpha05
20 marca 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-alpha05
Wersja 1.7.0-alpha05 zawiera te zmiany.
Zmiany w interfejsie API
- Usunięto eksperymentalny lokalny element kompozycji
LocalTextLinkStyle
do stylizowania hiperlinków. (Iebfa7) - Usunięto eksperymentalne zastąpienie
BasicText
argumentemonLinkClicked
. W przyszłości udostępnimy API zastępujące obsługę hiperlinków. (I107d5) - Usunięto metody i właściwości związane z punktami kodowymi w sekcjach
TextFieldState
iTextFieldBuffer
. Usunęliśmy też sufiksyinChars
z pozostałych interfejsów API związanych z wyborem i kompozycją. (Ief7ce) currentValue
AnchoredDraggable
będzie teraz aktualizowany po przejściu przez punkt zakotwiczenia. UżyjsettledValue
, aby otrzymać poprzednią semantykęcurrentValue
, aktualizującą się tylko po zatrzymaniu się w punkcie zakotwiczenia. Postęp jest teraz udostępniany jako funkcja (wymagająca punktu początkowego i końcowego), a nie jako właściwość. (Ibe6e8, b/318707189, b/298271489, b/294991954)BasicTextField(state)
,TextFieldState
,InputTransformation
,OutputTransformation
,TextFieldLineLimits
,TextFieldDecorator
są stopniowo przekształcane w wartości stabilne. (I9582b)- Wprowadziliśmy
InterceptPlatformTextInput
, aby ułatwić pisanie testów związanych z IME niskiego poziomu i innych przypadków użycia IME niskiego poziomu.PlatformTextInputTestOverride
zostało wycofane. (I862ed, b/322680547) - Podzielenie
restrictedConstraints()
na 2 metody:fitPrioritizingWidth()
ifitPrioritizingHeight()
(I6d7fd)
Wkład zewnętrzny
- Dodano 2 nowe interfejsy API
isLastScrollForward
/isLastScrollBackward
, które sprawdzają kierunek przewijania w przypadku ostatniej czynności przewijania. Jeśli nie ma jeszcze żadnej czynności przewijania, zwracają wartość false. (I63a0e)
Wersja 1.7.0-alpha04
6 marca 2024 roku
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-alpha04
Wersja 1.7.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Obsługa pisma odręcznego rysikiem na urządzeniach z Androidem U i nowszym. (I002e4)
- Dodano
hintLocales
doKeyboardOptions
, aby umożliwićTextFields
podpowiadanie edytorom IME określonych ustawień regionalnych w celu wstępnego ustawienia preferowanego języka. (Id18c2) - Usunięto eksperymentalne przeciążenia funkcji
BasicTextField2
iBasicSecureTextField
, które przyjmowały parametryvalue: String
ionValueChange: () -> String
. (I568b4) - Dodaj opcjonalną funkcję
applySemantics
doInputTransformation
, aby wpłynąć na semantykę elementuBasicTextField2
, do którego jest ona stosowana. (I74a2f, b/170648072) - W tym CL dodajemy
GetScrollViewportLength
semantic action, aby przekazywać do systemu ułatwień dostępu informacje o komponentach przewijanych w Compose. Ta zmiana dotyczy też użycia tej właściwości w listach przewijanych Foundation. (Ic5fa2) - Nazwa
BasicTextField2
została zmieniona naBasicTextField
. (Ie5713) FocusRequester.createRefs
jest już stabilna (I4d92c, b/261436820)- Wprowadzono
DelegatableNode.scrollIntoView()
, aby umożliwić węzłom modyfikatorów bezpośrednie wysyłanie żądańscrollIntoView
. (I2b3b7, b/299939840) - Wprowadzono
DelegatableNode.requireView()
, aby umożliwić węzłom modyfikatorów uzyskiwanie bieżącegoView
Androida bez odczytywania lokalnej kompozycji. (I40768) - Wprowadziliśmy informacje o układzie kontekstowym w zakresie wiersza przepływu kontekstowego i zakresie kolumny przepływu kontekstowego, w tym indeks wiersza, pozycję i ograniczenia maksymalnej szerokości i wysokości, aby zachować określoną pozycję. Elementy przekraczające maksymalną szerokość lub wysokość mogą zostać przeniesione do następnego wiersza lub pominięte w zależności od ustawień przepełnienia. (Id13f8, b/292114798)
Poprawki błędów
- Naprawiliśmy błąd, który w określonych warunkach powodował awarię podczas przełączania atrybutów
enabled
lubreadOnly
elementuTextField
. (Iae17b)
Wersja 1.7.0-alpha03
21 lutego 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-alpha03
Wersja 1.7.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Wprowadziliśmy
DelegatableNode.requireLayoutCoordinates()
jako sposób na uzyskanie bieżącegoModifier.Node
LayoutCoordinates
bez konieczności zastępowaniaonPlaced
i samodzielnego przechowywania współrzędnych we właściwości. (Ia8657) - Wprowadziliśmy
DelegatableNode.currentLayoutCoordinates
jako sposób na uzyskanie bieżącegoModifier.Node
LayoutCoordinates
bez konieczności zastępowaniaonPlaced
i samodzielnego przechowywania współrzędnych we właściwości. (Iaebaa) - Optymalizacje skuteczności w
DraggableAnchors
używane przezAnchoredDraggable
. (I89cff) BasicTextField2
i powiązane interfejsy API w pakiecieandroidx.compose.foundation.text2
zostały przeniesione doandroidx.compose.foundation.text
. (I9f635)BasicTextField2
nie akceptuje już parametruCodepointTransformation
. UżyjBasicSecureTextField
lubOutputTransformation
. (Id34ff)- Dodano metodę porównywania tylko adnotacji dwóch
AnnotatedStrings
. (I32659) - Przedstawiamy
ContextualFlowRow
i ulepszoneFlowRow
/Column
zMaxLines
iOverflow
. Z przyjemnością informujemy o ulepszeniach eksperymentalnych funkcjiFlowRow
iFlowColumn
, które teraz obsługująmaxLines
i przepełnienie, oraz o wprowadzeniu funkcjiContextualFlowRow
iContextualFlowColumn
. Ta aktualizacja ma na celu zapewnienie komponentów o optymalnej wydajności. KomponentContextualFlow*
doskonale sprawdza się w przypadku dużej liczby elementów korzystających z małej konfiguracjimaxLines
oraz dynamicznych przycisków „+N więcej”, a komponentyFlowRow
iFlowColumn
są idealne w przypadku małej liczby elementów, czyli mniej niż 100. Ważne: aby zachować dotychczasowe działanie wFlowRow
lubFlowColumn
, gdzie wszystkie elementy są komponowane niezależnie od tego, czy mieszczą się w maksymalnej wartości osi poprzecznej, podczas inicjowania ustaw wartośćoverflow
naFlowRowOverflow.Visible
lubFlowColumnOverflow.Visible
. Przykłady działania tych nowych funkcji znajdziesz w sekcjachContextualFlowRowSample
iFlowRowSample
. (Ib9135, b/293577082)
Poprawki błędów
- Animacja kursora nie wysyła już żądań klatek między stanami włączonym i wyłączonym. (Ia2253)
KeyboardOptions
' przestarzałe konstruktory kopiujące będą teraz prawidłowo kopiować wszystkie właściwości. (If12de)
Wersja 1.7.0-alpha02
7 lutego 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-alpha02
Wersja 1.7.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Aplikacje
HorizontalPager
,VerticalPager
iPagerState
zostaną przeniesione do wersji stabilnej. (I67660, b/316966909) - Dodano
LocalTextLinkStyle
kompozycję lokalną, która umożliwia zmianę stylu linków w tekście w całej aplikacji. Jeśli używasz w niej własnego motywu, musisz ustawić tę kompozycję lokalną zgodnie z motywem. Gdy używasz motywu Material, kolor linku jest domyślnie ustawiony na kolor podstawowy Material. (I7eb10) - Wprowadzono modyfikator
receiveContent
, który umożliwia deweloperom otrzymywanie bogatych treści w Jetpack Compose. receiveContent
jest zintegrowany zBasicTextField2
, aby akceptować treści multimedialne dostarczane przez klawiaturę programową lub wklejane ze schowka. (I81b72)- W tej zmianie zastępujemy symbol
SnapFlingBehavior
symbolemTargetedFlingBehavior
w pagerze, aby umożliwić inne przypadki użycia i zapewnić większą elastyczność. (I762ea) - W ramach tej zmiany interfejsy Snapping API stają się stabilne. Usuwamy też część kodu testowego i dodajemy więcej przykładów do przyciągania. (Id8da9)
- Wprowadzamy
TargetedFlingBehavior
, czyliFlingBehavior
, który umożliwia przekazywanie informacji o stanie trwającej animacji i docelowym przesunięciu przewijania. (I6a207)
Poprawki błędów
BasicTextField2
utrzymuje teraz kursor w widoku podczas pisania, gdy został on przewinięty poza widok lub gdyby miał się przesunąć poza widok z powodu wprowadzania danych. (Ieb856, b/237190748)
Wkład zewnętrzny
- Dodaje eksperymentalny interfejs API do konfigurowania wstępnego pobierania w przypadku elementów LazyList. (I022a4)
Wersja 1.7.0-alpha01
24 stycznia 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-alpha01
Wersja 1.7.0-alpha01 zawiera te zmiany.
Nowe funkcje
- Dodano nowy
Indication API
:IndicationNodeFactory
. Dzięki temu implementacjeIndication
są wydajniejsze niż w przypadku poprzedniego (obecnie wycofanego) interfejsurememberUpdatedInstance
API. Informacje o migracji znajdziesz na stronie developer.android.com. clickable / combinedClickable / selectable / toggleable
akceptuje teraz parametrMutableInteractionSource
z wartością null. Jeśli wartość jest pusta, a podany elementIndication
jest elementemIndicationNodeFactory
, elementIndication
można utworzyć leniwie tylko wtedy, gdy jest to potrzebne, co zwiększa wydajność. Jeśli nie używasz funkcji hoistingu iMutableInteractionSource
, zalecamy przekazywanie wartości null.
Zmiany w interfejsie API
- Wprowadź
DecayAnimation
wAnchoredDraggable
. Ta zmiana dodaje doAnchoredDraggable
parametrdecayAnimationSpec
, który umożliwia używanie animacji zanikania podczas przechodzenia do jednego z punktów zakotwiczenia. Zmiana obejmuje też zmianę nazwy istniejącego parametruanimationSpec
nasnapAnimationSpec
, aby ułatwić zrozumienie zastosowania każdej specyfikacji. - Usługa
BasicTextField2
jest dostępna do użytku eksperymentalnego. Powinien być w przybliżeniu równy pod względem funkcji wersjiBasicTextField
, a jego działanie powinno być gotowe do wdrożenia w środowisku produkcyjnym. Interfejs API pozostaje jednak na razie w fazie eksperymentalnej. Przed ustabilizowaniem zostanie zmieniona naBasicTextField
i przeniesiona do tego samego pakietu. - Wprowadzono pierwszą wersję roboczą interfejsu
OutputTransformation
API dlaBasicTextField2
. Ten interfejs API zastępuje większość przypadków użyciaVisualTransformation
w starymBasicTextField
. Nie jest ona jeszcze kompletna i niektóre funkcje mogą nie działać prawidłowo, ale będziemy wdzięczni za wszelkie opinie na temat użyteczności interfejsu API w Twoich przypadkach użycia. (aosp/2708848) - Wprowadzono
LinkAnnotation
, który umożliwia dodawanie linków i elementów klikalnych do tekstu. Funkcja linków nie jest jeszcze w pełni gotowa i wkrótce wprowadzimy w interfejsie API kolejne zmiany. - Wprowadzono modyfikator
receiveContent
, który umożliwia deweloperom otrzymywanie bogatych treści w Jetpack Compose. receiveContent
jest zintegrowany zBasicTextField2
, aby akceptować treści multimedialne dostarczane przez klawiaturę programową lub wklejane ze schowka.KeyboardOptions.shouldShowKeyboardOnFocus
umożliwia wyłączenie domyślnego działaniaBasicTextField
, czyli żądania klawiatury ekranowej po zaznaczeniu.- Funkcje
TextInputService
iLocalTextInputService
zostały wycofane. Zamiast tego użyjPlatformTextInputModifierNode
, aby zintegrować się bezpośrednio z interfejsami API platformy IME. (aosp/2862698) Indication#rememberUpdatedInstance
zostało wycofane. Powoduje to duże, nieuniknione obniżenie wydajności i uniemożliwia inne optymalizacje. Zamiast tego używaj nowego interfejsuIndicationNodeFactory
API.
Poprawki błędów
BasicTextField
będzie teraz wstępnie weryfikować niewielki wybór mapowań przesunięć, gdy zostanie przekazana wartośćVisualTransformation
. Pomaga to wykrywać typowe błędy w kodzie, które w późniejszych etapach pomiaru lub rysowania prowadzą do nieodwracalnych wyjątków. Wyrzucanie wyjątków podczas tworzenia kompozycji zwiększa prawdopodobieństwo, że deweloperzy zobaczą te błędy podczas tworzenia, co pomoże uniknąć awarii w środowisku produkcyjnym. (I0fd42)VisualTransformation
nie zgłosi błędu, jeśli zwrócisz nieprawidłowy indeks dla nieprawidłowego indeksu (b/316401857 ).
Wersja 1.6
Wersja 1.6.8
12 czerwca 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.8
Wersja 1.6.8 zawiera te zmiany.
Wersja 1.6.7
1 maja 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.7
Wersja 1.6.7 zawiera te zmiany.
Wersja 1.6.6
17 kwietnia 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.6
Wersja 1.6.6 zawiera te zmiany.
Poprawki błędów
- Naprawiliśmy błąd, który w określonych warunkach powodował awarię podczas przełączania atrybutów
enabled
lubreadOnly
elementuTextField
. (Iae17b)
Wersja 1.6.5
3 kwietnia 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.5
Wersja 1.6.5 zawiera te zmiany.
Poprawki błędów
- Dodaje dzienniki debugowania do trudnych do odtworzenia błędów w wierszu/kolumnie: (b/300280216 i b/297974033)
Wersja 1.6.4
20 marca 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.4
Wersja 1.6.4 zawiera te zmiany.
Poprawki błędów
- Gest zaznaczania przez długie naciśnięcie i przeciągnięcie, który w pierwszej klatce przeciągnięcia wychodzi poza granice układu tekstu, nie powoduje już awarii. (Icdf90, b/325307463)
Wersja 1.6.3
6 marca 2024 roku
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.3
Wersja 1.6.3 zawiera te zmiany.
Wersja 1.6.2
21 lutego 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.2
Wersja 1.6.2 zawiera te zmiany.
Poprawki błędów
- Rozwiąż problem z nieprawidłowym resetowaniem
AnimateContentSize
. (I07051) - Rozwiązaliśmy problem, który w niektórych przypadkach powodował nadmierne buforowanie
intrinsicHeight
tekstu. (3cd398, b/217910352)
Wersja 1.6.1
7 lutego 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.1
Wersja 1.6.1 zawiera te zmiany.
Poprawki błędów
- Poprawiliśmy pomiar siatki kaskadowej po przewinięciu poza limit. (bffc39)
- Dodaj sprawdzanie układu o dużych wymiarach. (e74af5)
- Poprawiono umieszczanie elementów o rozmiarze 0 na początku siatki schodkowej. (785f94)
- Wywołuj wywołanie zwrotne onRelease w tej samej kolejności co onForgotten. (31ce3b)
Wersja 1.6.0
24 stycznia 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0
Wersja 1.6.0 zawiera te zmiany.
Ważne zmiany od wersji 1.5.0
- Nowy modyfikator
Modifier.anchoredDraggable
, który umożliwia przeciąganie i animowanie między predefiniowanym zestawem punktów zakotwiczenia. Ten modyfikator ma zastąpićModifier.swipeable
. Dowiedz się, jak z niej korzystać i jak przeprowadzić migrację zModifier.swipeable
, w przewodniku po migracji. - Dodaliśmy funkcję przeciągania i upuszczania między aplikacjami i komponentami. Aby rozpocząć, zapoznaj się z
DragAndDropTarget
,Modifier.dragAndDropSource
i innymi interfejsami API. Modifier.draggable2D
to nowy modyfikator, który umożliwia łatwe przeciąganie w 2D. Zobacz przykład.- Dodano komponenty
AndroidExternalSurface
iAndroidEmbeddedExternalSurface
, aby ułatwić dodawanie komponentów opartych na powierzchni w Compose. - Różne zmiany i ulepszenia interfejsu API w
Pager
isnapFlingBehaviour
- Różne interfejsy API dotyczące ostrości, tekstu i wstawień zostały przeniesione do stabilnych interfejsów API.
Wersja 1.6.0-rc01
10 stycznia 2024 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-rc01
Wersja 1.6.0-rc01 zawiera te zmiany.
Zmiany w interfejsie API
- Konstruktor rozszerzenia
DragAndDropTarget()
został usunięty. Utwórz nową instancję za pomocąobject: DragAndDropTarget {}
. (I32318)
Wersja 1.6.0-beta03
13 grudnia 2023 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-beta03
Wersja 1.6.0-beta03 zawiera te zmiany.
Poprawki błędów
- Naprawiono błąd powodujący awarię w przypadku bardzo dużego tekstu mierzonego z użyciem nieskończonych ograniczeń. (I1a7df, b/312294386)
PlatformImeOptions
jest teraz klasą konkretną, a nie interfejsem. (If40a4)
Wersja 1.6.0-beta02
29 listopada 2023 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-beta02
Wersja 1.6.0-beta02 zawiera te zmiany.
Poprawki błędów
- Poprawka problemu z nieaktualizowaniem się wartości
canScroll
po przewijaniu bez zmiany układu. (I60a86) - Poprawka dla
Modifier.animateItemPlacement()
iLookaheadScope
po niewielkim przewinięciu. (I3a2b7)
Wersja 1.6.0-beta01
15 listopada 2023 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-beta01
Wersja 1.6.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Modyfikator
DragAndDropTarget
przyjmuje teraz jawnie odbierającyDragAndDropTarget
i ma funkcję lambda, która umożliwia rozpoczęcie sesji przeciągania i upuszczania. Obecnie dostępne są 2 funkcje fabryczne dla elementuDragAndDropModifierNode
. Jeden do odbierania przelewów i jeden do przesyłania danych (I69481). - Zaktualizowano wartość
maximumFlingVelocity
, aby była reprezentowana jako liczba zmiennoprzecinkowa. Zaktualizowana dokumentacja, aby dokładniej wyjaśnić pojęciemaximumFlingVelocity
. (I8adc7) onDragAndDropStart
w fabryceDragAndDropModifierNode
został(a) przemianowany(a) naacceptDragAndDropTransfer
.Adres
acceptsDragAndDropTransfer
został dodany dodragAndDropTarget
Modifier
, aby można było zaakceptować go w sesji przeciągania i upuszczania. Ta funkcja lambda zwraca wartość logicznąDragAndDropTarget
, jeśli użytkownik jest zainteresowany sesją przeciągania i upuszczania. Zastępuje ona inne funkcje lambda do przetwarzania zdarzeń przeciągania.dodano funkcję fabryczną
DragAndDropTarget
do odbierania danych z sesji przeciągania i upuszczania (Iebf3a);Udostępnienie
startDragImmediately
wAnchoredDraggable
umożliwia wykrywanie gestów przeciągania podczas korzystania z tej funkcji. Warto ustawić tę wartość, gdy widżet jest animowany do docelowego elementu zakotwiczonego. Zobacz przykład. (Ie6d13, b/285139987)Interfejsy Foundation Tooltip API są teraz
@ExperimentalFoundationApi
(I30b0b)Usunięto
DragAndDropInfo
jako typ.DragAndDropModifierNode.drag
przyjmuje teraz parametry dla lambdytransferData
, rozmiaru dekoracji i przeciągania dekoracjiDrawScope
.DragAndDropTarget
ma metody dla poszczególnych zdarzeń przeciągania i upuszczania zamiast jednej metody abstrakcyjnej.onDragAndDropEvent
w funkcji fabrycznej dlaDragAndDropModifierNode
została zmieniona naonDragAndDropStart
, aby lepiej informować, że podanyDragAndDropTarget
jest ważny tylko w przypadku danej sesji przeciągania i upuszczania.Usunięto element
DragAndDropEventType
(I645b1)Zmieniono nazwę
PlatformTextInputModifierNode.runTextInputSession
naestablishTextInputSession
. (I03cd0)Zastąp
OriginalText
tekstemTextSubstitution
. (Ifa5a8)Zmieniono nazwę
PlatformTextInputModifierNode.textInputSession
narunTextInputSession
. (Ie9c6b)Elementy podrzędne elementu
SubcomposeLayout
(i układy takie jakLazyColumn
, które są na nim oparte), które są zachowywane do ponownego użycia w przyszłości, są uznawane za wyłączone. Wprowadziliśmy nowy interfejs APIassertIsDeactivated()
do testowania takich węzłów. Pozostałe interfejsy API testu będą domyślnie odfiltrowywać zdezaktywowane węzły. (I2ef84, b/187188981)Parametr
clippingEnabled
funkcjiModifier.magnifier
został zmieniony naclip
.Parametr
magnifierCenter
wModifier.magnifier
jest ustawiany jako dopuszczający wartość null, ale zachowuje to samo działanie domyślne. (I6aa66)Interfejsy API Material
SwipeToReveal
(w przypadku kart i elementów) korzystają teraz z interfejsu API opartego na slotach (zgodnie z zaleceniami Compose) zamiast z instancji opartych na klasach danych do tworzenia tych slotów. Jest to zmiana powodująca niezgodność wsteczną. Przykłady użycia nowego interfejsu API znajdziesz w wersji demonstracyjnej i przykładowym kodzie. (Ia8943)
Poprawki błędów
- Zaimplementuj metody equals i hashcode dla klasy
PageSize.Fixed
. (Ie3ede, b/300134276) - Usunęliśmy błąd, który powodował, że układ
BasicText
nie zmniejszał się, gdy zmieniał się elementminWidth
, a jego rozmiar był mniejszy niż początkowe ograniczenia pomiarumaxWidth
(Idb19c).minWidth
- Dodaliśmy obsługę renderowania gradientu kołowego w
ArcLine
. (I4d5bb) - Rozwiązanie problemu ze zgodnością binarną ze zmianą wstawki okna (Iee695)
- Usuń podstawową warstwę materiału w przypadku komponentu lub przycisku Material3, ponieważ testy porównawcze pokazują, że bez niej wydajność jest lepsza. (I55555)
Wersja 1.6.0-alpha08
18 października 2023 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-alpha08
Wersja 1.6.0-alpha08 zawiera te zmiany.
Nowe funkcje
Modifier.draggable2D
to nowy modyfikator, który umożliwia łatwe przeciąganie w 2D. Zobacz Sample (Id95f5, b/214412658)
Zmiany w interfejsie API
- W funkcji
Modifier.dragAndDrawSource
zmieniliśmy nazwę lambdyonDrawDragShadow
nadrawDragDecoration
, a w funkcjiDragAndDropInfo
zmieniliśmy nazwę parametru rozmiaru nadragDecorationSize
. (Id0e30, b/303904810) - Parametr
decorationBox
funkcjiBasicTextField2
został zmieniony nadecorator
. Jego typ zostanie też zmieniony na odpowiedni interfejs funkcjiTextFieldDecorator
. (I23c1c)
Poprawki błędów
- Ulepszona dokumentacja dotycząca
BasicTextField
w zakresie wymagańonValueChange
. (I90fc9, b/160257648)
Wersja 1.6.0-alpha07
4 października 2023 roku
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-alpha07
Wersja 1.6.0-alpha07 zawiera te zmiany.
Zmiany w interfejsie API
- Wprowadziliśmy
PlatformTextInputMethodTestOverride
do pisania testów niestandardowych edytorów tekstu. (Id159b) - Nazwa
GraphicsSurface
została zmieniona naAndroidExternalSurface
(I11680) - Dodano
DisableNonLinearFontScalingInCompose
tymczasową flagę, która wyłącza nieliniowe skalowanie czcionki. Jeśli potrzebujesz czasu na ich wyczyszczenie, ustaw w testach wartośćDisableNonLinearFontScalingInCompose = true
. Ten atrybut zostanie usunięty w Compose 1.6.0-beta01. (Ic9486) - Dodano kolekcje
ColorList
iColorSet
, które nie wymagają przydzielania. (I744bd) - Ta zmiana usuwa
shortSnapVelocityThreshold
, które stało się szczegółem implementacjiSnapLayoutInfoProvider
. (I65f6d) - Dodaje modyfikator
dragAndDropSource
do rozpoczynania sesji przeciągania i upuszczania oraz modyfikatordragAndDropTarget
do odbierania danych z sesji przeciągania i upuszczania (Ib7828, b/286038936). - Zaktualizuj dokumentację
SnapPositionInLayout
i metodę określania pozycji. Wprowadź do metody pozycjonowania wSnapPositionInLayout
dopełnienie treści. (Id7938, b/300116110) - Dodaliśmy
UndoState
doTextFieldState
, która umożliwia cofanie i ponawianie zmian wprowadzonych przez użytkownika. (Icc024)
Poprawki błędów
- Naprawiono problem z brakiem animacji ikony
basicMarquee
po zmianie prędkości. (Id2e77, b/297974036)
Wersja 1.6.0-alpha06
20 września 2023 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-alpha06
Wersja 1.6.0-alpha06 zawiera te zmiany.
Nowe funkcje
- Nowe komponenty Composable dla
SurfaceView
,TextureView: GraphicsSurface()
iEmbeddedGraphicsSurface()
. Jest to eksperymentalny interfejs API, który może ulec zmianom i modyfikacjom. (I9ddb2) - Interfejs
Modifier.magnifier()
jest teraz stabilnym interfejsem API. Obejmuje to usunięcie znakuMagnifierStyle
na rzecz parametrów wbudowanych w sam modyfikator. (I83bec, b/298381260, b/262367109, b/261438887)
Zmiany w interfejsie API
- Wprowadzone w
ScrollScope
funkcjeupdateCurrentPage
iupdateTargetPage
to ostatnie elementy niezbędne do umożliwienia dostosowywania animowanego przewijaniaPagerState.scroll
. (I9cad5, b/267744105, b/243786897) - Usuń gęstość z pliku
SnapFlingBehavior
. Wszystkie implementacjeSnapLayoutInfoProvider
mają już sposób na uzyskanie dostępu do gęstości, więc zakres odbiornika można usunąć, co doprowadzi do mniej złożonej implementacji zarównoSnapFlingBehavior
, jak iSnapLayoutInfoProviders
. (I153c3) - Więcej modyfikatorów oznaczonych jako stabilne. (I56af1, b/298046462)
- Usunięto:
SnapStepSize
z listySnapLayoutInfoProvider
Obliczenia należy przeprowadzić na podstawie informacji o układzie i przekazać za pomocą podejścia lub przesunięć przyciągania. (If320c)
Zmiany w zachowaniu
- Compose używa teraz nieliniowego skalowania czcionek, co zwiększa czytelność i ułatwia korzystanie z aplikacji. Gdy skala czcionki w ustawieniach systemu jest większa niż 100%, mały tekst zwiększa się normalnie, ale już duży tekst zwiększa się tylko nieznacznie. Wysokość wiersza zdefiniowana w SP będzie się też automatycznie dostosowywać, aby zachować proporcje do wysokości przy skali 100%. Więcej informacji znajdziesz w sprawdzonych metodach dotyczących skalowania czcionek. (I11518)
Poprawki błędów
- Usuń użycie
rememberSaveable
w etykietkach. (Icc131, b/299500338)
Wersja 1.6.0-alpha05
6 września 2023 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-alpha05
Wersja 1.6.0-alpha05 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaj przeciążenia dla funkcji
BasicSecureTextField
, które akceptują niezmienną wartość i wywołanie zwrotne, aby zmienić tę wartość, tak jak w przypadku obecnego interfejsu APIBasicTextField
. (Ia4882) - Dodaj
Modifier.preferKeepClear()
, aby oznaczyć element jako kompozycyjny, co oznacza, że nie chcesz, aby na interfejsie API na poziomie 33 lub wyższym pojawiały się pływające okna. (Ib51d5, b/297260115) - Prędkości przesunięcia w komponentach View, takich jak
ScrollView
iRecyclerView
, są ograniczone doViewConfiguration.ScaledMaximumFlingVelocity
. Komponowanie ma teraz własną wersjęmaximumFlingVelocity
, która dotyczyDraggable
. (Ibf974) - Usunięto wycofane przeciążenia
Pager
iPagerState
. (Iea07e) - Dodano
BasicTooltipBox
docompose.foundation
i zaktualizowanoPlainTooltipBox
orazRichTooltipBox
, aby używaćTooltipBox
z nowymi komponentamiPlainTooltip
iRichTooltip
. (I79e1d)
Wersja 1.6.0-alpha04
23 sierpnia 2023 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-alpha04
Wersja 1.6.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Dodanie interfejsu
ReusableComposition
do zarządzania cyklem życia i ponownym wykorzystywaniem podkompozycji. (I812d1, b/252846775) Modifier.focusGroup
został przeniesiony do stabilnych interfejsów API. (I7ffa3)- Dodaj przeciążenia dla funkcji
BasicTextField2
, które akceptują niezmienną wartość i wywołanie zwrotne, aby zmienić tę wartość, tak jak w przypadku obecnego interfejsu APIBasicTextField
. (I3f2b8) - Interfejs
GridItemSpan::currentLineSpan
jest teraz stabilnym interfejsem API. (Icc29c) - Interfejs Canvas, który akceptuje
contentDescription
, jest teraz stabilnym interfejsem API. (Ib3d29) - W
ScrollState
wprowadziliśmyviewportSize
, czyli sposób na poznanieviewPort
rozmiaru komponentu, który używaScrollState
, po dokonaniu pomiaru. (I8b85a, b/283102682) - Rozwiązaliśmy problem, który powodował, że wstępne pobieranie w komponencie Pager nie było zgodne z działaniem w widokach. (I93352, b/289088847)
Modifier.consumeWindowInsets(PaddingValues)
jest teraz stabilny.- Interfejs API
Deprecated Modifier.consumedWindowInsets
został usunięty. Zamiast niej używaj zasadyModifier.consumeWindowInsets
. (Id72bb)
- Interfejs API
Wersja 1.6.0-alpha03
9 sierpnia 2023 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-alpha03
Wersja 1.6.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Przeciążenie
LazyLayout
zostało dodane i akceptuje funkcję lambdaLazyLayoutItemProvider
, a nie zwykły obiekt, jak to było wcześniej. Poprzednie przeciążenie zostało wycofane. (I42a5a) - Dodano obsługę konfigurowania
privateImeOptions
(Idb772)
Poprawki błędów
- Rozwiązaliśmy problem z wyświetlaniem klawiatury i możliwością edytowania pól tekstowych, gdy wartość
readOnly
wynosiła „true”. Naprawiliśmy też problem polegający na tym, że klawiatura nie wyświetlała się, gdy wartośćreadOnly
zmieniała się z prawda na fałsz, gdy element był aktywny. (I34a19, b/246909589)
Wersja 1.6.0-alpha02
26 lipca 2023 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-alpha02
Wersja 1.6.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Wprowadzono
PagerLayoutInfo
z informacjami zebranymi po przejściu weryfikacji wPager
. Wprowadziliśmy teżPageInfo
, czyli informacje o pojedynczej zmierzonej stronie wPager
. (Iad003, b/283098900) - Dodatkowe adnotacje do określania dozwolonych danych wejściowych w funkcjach kompozycyjnych (I51109)
- Dodano
SemanticsNodeInteraction.requestFocus
jako wygodniejszy i łatwiejszy do znalezienia sposób na żądanie ostrości w testach. (Ie8722) - Całkowicie przeprojektowany
PlatformTextInput*
interfejs API. (I6c93a, b/274661182, b/267235947, b/277380808) - Atrybuty
SoftwareKeyboardController
iLocalSoftwareKeyboardController
nie są już eksperymentalne.LocalSoftwareKeyboardController
jest teraz też prawidłowymCompositionLocal
. (I4c364) Modifier.transformable
udostępnia teraz parametrcanPan
, który pomaga określić kierunek panoramowania, aby zezwolić na nie lub je zablokować. (I692aa, b/266829800)- Aktualizuje modyfikator
consumeWindowInsets
, aby rozszerzyć superklasęAbstractComposeView
(Iacd74, b/269479941).
Wersja 1.6.0-alpha01
21 czerwca 2023 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-alpha01
Wersja 1.6.0-alpha01 zawiera te zmiany.
Nowe funkcje
- Wprowadziliśmy nowy interfejs API
AnchoredDraggable
w Foundation. Można go używać do tworzenia komponentów, które można przeciągać między różnymi stanami, np. wysuwanych od dołu arkuszy modalnych. Ten interfejs API zastępuje interfejsSwipeable
Material Design. (I4a2ed)
Zmiany w interfejsie API
- Wesprzyj kanał
InputConnection#requestCursorUpdates
(I0c69b) - Wprowadzono
scrollAnimationSpec
, aby umożliwić niestandardowe specyfikacje animacji. UstawienieBringIntoViewCalculator
zostało zmienione naBringIntoViewScroller
. (Idb741) - Dodaj typ
ResourceResolutionException
, aby opakować obiekty throwable zgłaszane podczas próby wczytania zasobów bitmapowych z opisem ścieżki zasobu, którego nie udało się wczytać. (I19f44, b/230166331, b/278424788) - Dodano właściwości i działania semantyczne, aby obsługiwać tłumaczenie tekstu. (I4a6bc)
- Wprowadziliśmy interfejs API
BringIntoViewCalculator
, którego można używać do dostosowywania sposobu, w jaki komponenty takie jakScrollable
odpowiadają na żądaniabringIntoView
. Zmieniono przeciążenie elementu przewijanego, aby opcjonalnie akceptować instancjęBringIntoViewCalculator
. (Iaf5af)
Poprawki błędów
- Dodaliśmy sprawdzanie kodu, które ostrzega, jeśli tworzysz
MutableInteractionSource
w kompozycji bez zapamiętywania, podobnie jak w przypadku tworzenia stanu modyfikowalnego lubAnimatable
. (I5daae) - Dodaliśmy obsługę zaznaczania za pomocą myszy. Zaznaczanie dotykowe będzie rozszerzane o wyrazy i zmniejszane o znaki. (Ic0c6c, b/180639271)
- Dodano
FocusTargetModifierNode
interfejs, za pomocą którego można tworzyć niestandardoweFocusTarget
. (I9790e)
Wersja 1.5
Wersja 1.5.4
18 października 2023 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.5.4
Wersja 1.5.4 zawiera te zmiany.
Wersja 1.5.3
4 października 2023 roku
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.5.3
W tej wersji nie wprowadzono żadnych zmian.
Wersja 1.5.2
27 września 2023 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.5.2
Wersja 1.5.2 zawiera te zmiany.
Poprawki błędów
- Naprawiliśmy błąd w tekście, który w określonych okolicznościach powodował awarie, gdy semantyka była nieprawidłowa.
Wersja 1.5.1
6 września 2023 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.5.1
Wersja 1.5.1 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem z wyświetlaniem klawiatury i możliwością edytowania pól tekstowych, gdy wartość
readOnly
wynosiła „true”. Naprawiliśmy też problem polegający na tym, że klawiatura nie wyświetlała się, gdy wartośćreadOnly
zmieniała się z prawda na fałsz, gdy element był aktywny. (I34a19, b/246909589)
Wersja 1.5.0
9 sierpnia 2023 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.5.0
Wersja 1.5.0 zawiera te zmiany.
Ważne zmiany od wersji 1.4.0
- Wiele podstawowych modyfikatorów, w tym
Modifier.clickable
,Modifier.draggable
,Modifier.scrollable
, modyfikator układu i inne, zostało przeniesionych do interfejsuModifier.Node
API, co zmniejsza obciążenie początkowej kompozycji. - Poprawiliśmy stabilność pagera. Wiele błędów zostało naprawionych.
- Parametry
pageCount
znajdują się teraz wPagerState
zamiast w samym elemencie Pager.
Wersja 1.5.0-rc01
26 lipca 2023 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.5.0-rc01
Wersja 1.5.0-rc01 zawiera te zmiany.
Poprawki błędów
Dostępna jest opcjonalna inspekcja, która zaleca migrację wywołań
mutableStateOf()
do odpowiednich typów specjalistycznych dla typów prostych. Jego identyfikator toAutoboxingStateCreation
. Wcześniej ta kontrola była domyślnie włączona we wszystkich projektach. Aby zobaczyć to ostrzeżenie w edytorze Androida Studio i w wynikach lintowania projektu, zmień jego ważność z informacyjnej na ostrzeżenie (lub wyższą), deklarującwarning "AutoboxingStateCreation"
w konfiguracjibuild.gradle
lubbuild.gradle.kts
modułu, jak pokazano poniżej (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
Wersja 1.5.0-beta03
28 czerwca 2023 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.5.0-beta03
Wersja 1.5.0-beta03 zawiera te zmiany.
Wersja 1.5.0-beta02
7 czerwca 2023 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.5.0-beta02
Wersja 1.5.0-beta02 zawiera te zmiany.
Wersja 1.5.0-beta01
24 maja 2023 r.
Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.5.0-beta01
Wersja 1.5.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Wdróż
PlatformDataProvider
, aby podawać tętno i dzienną liczbę kroków. InterfejsSensorGateway
zostanie usunięty z publicznego interfejsu API. (I55b84)
Poprawki błędów
- Ograniczanie przydziałów podczas pomiarów leniwych list, siatek itp. (Iaf9e2)
- Zmniejszone przydziały podczas stosowania zrzutów (I65c09)
- Usunięto przydziały z animacji sprężynowych (Ie9431)
- Usunięto przydział z
TextLayout
(I0fd11) - Usunięto wiele alokacji w śledzeniu prędkości wskaźnika (I26bae)
Wersja 1.5.0-alpha04
10 maja 2023 r.
androidx.compose.foundation:foundation:1.5.0-alpha04
i androidx.compose.foundation:foundation-layout:1.5.0-alpha04
zostały opublikowane. Wersja 1.5.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano zoptymalizowany element
TextStyle.merge(...)
z pełną listą parametrów. (Iad234, b/246961787) - Przedstaw
SnapLayoutInfoProvider
, którego można używać zLazyGridState
. (I92134, b/269237141, b/260914964) - Dodano eksperymentalny
Modifier.animateItemPlacement()
zakres elementu leniwych siatek z przesunięciem. Możesz zastosować go do elementów, aby uzyskać animacje zmiany pozycji lub zmiany kolejności w automatyzacji. (I4b62d, b/257034719) - Promuj
GridCells.FixedSize
do wersji stabilnej.FixedSize
definiujeLazyGrid
, w którym każda komórka ma dokładny rozmiar na osi poprzecznej, a pozostałe miejsce jest rozdzielane przez układ osi poprzecznej. (I8542f) - Wprowadzono zakres odbiorcy
PagerScope
dla komponentu Pager i funkcję narzędziową do obliczania danego przesunięcia strony. (If2577) - Wprowadź
snapPositionalThreshold
podczas tworzenia zachowania przyciągania. Użyj tego parametru, aby określić próg pozycji dla krótkiego przyciągania w komponencie Pager. (If8f7f) - Tekst
SnapLayoutInfoProvider.calculateSnappingOffsetBounds
został zamieniony nacalculateSnappingOffset
. W tej nowej metodzie po prostu prosimy o następne przesunięcie, do którego ma się przyciągnąć. Obliczenia granic należy przeprowadzać na poziomie implementacji, ponieważ mogą się one różnić w zależności od tego, jak ma działać przyciąganie. (I923a4) - Interfejsy API
LazyStaggeredGrid
zostały przeniesione do wersji stabilnej. (I633a5) - Usuń urządzenie
pageCount
z kontaHorizontal/VerticalPager
. Należy go podać podczas tworzenia stanu. ZaktualizowaliśmyPagerState
irememberPagerState
, aby akceptowaćpageCount
. (Ieb52d, b/266965072) - Usuń urządzenie
pageCount
z kontaHorizontal/VerticalPager
. Należy go podać podczas tworzenia stanu. ZaktualizowaliśmyPagerState
irememberPagerState
, aby akceptowaćpageCount
. (Ifa3cb, b/266965072) - Wprowadź
shortSnapVelocityThreshold
w miejscu podziału na stronySnapFlingBehavior
. (I7379e, b/275579012) - Dodaje
FlowRowScope
iFlowColumnScope
. (I54fe2)
Poprawki błędów
- Wywołania w celu uzyskania semantyki tekstu, gdy ograniczenia mają wartości
minWidth
iminHeight
, nie powodują już awarii. (Ibd072) - Rozwiązaliśmy problem, który powodował, że klawiatura nie wyświetlała się w polach tekstowych w oknach dialogowych, które nie zostały utworzone za pomocą funkcji kompozycyjnej
Dialog
. (I82551, b/262140644)
Wersja 1.5.0-alpha03
19 kwietnia 2023 r.
androidx.compose.foundation:foundation:1.5.0-alpha03
i androidx.compose.foundation:foundation-layout:1.5.0-alpha03
zostały opublikowane. Wersja 1.5.0-alpha03 zawiera te zmiany.
Ta wersja włącza nowy stos renderowania tekstu w Compose. Nowy stos jest zoptymalizowany pod kątem wydajności i nie powinien powodować widocznych zmian.
Jeśli zauważysz zmiany w renderowanym tekście, możesz przeprowadzić debugowanie, ustawiając wartość NewTextRendering1_5 = false
, aby potwierdzić różnicę w działaniu. Ustawienie tej opcji spowoduje ponowne komponowanie. Wszelkie różnice w zachowaniu zgłaszaj jako błędy.
Flaga debugowania zostanie usunięta przed wydaniem wersji beta 1.5.01.(Iada23, b/246960758)
Zmiany w interfejsie API
- Ustaw
FlowColumn/FlowRow
w tekście. (Idab37)
Wersja 1.5.0-alpha02
5 kwietnia 2023 r.
androidx.compose.foundation:foundation:1.5.0-alpha02
i androidx.compose.foundation:foundation-layout:1.5.0-alpha02
zostały opublikowane. Wersja 1.5.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano obsługę komórek o stałym rozmiarze w
LazyGrid
i rozmieszczania ich za pomocą układu osi poprzecznej. (I83ed9, b/235121277, b/267942510) - Dodano obsługę pasów o stałym rozmiarze w
LazyStaggeredGrid
i rozmieszczania ich za pomocą układu osi poprzecznej. (I7d519) UrlAnnotation
wAnnotatedString
można teraz otwierać za pomocą usług ułatwień dostępu, takich jakTalkBack
. (If4d82, b/253292081)- Dodano działanie semantyczne
InsertTextAtCursor
dla pól tekstowych. (I11ed5) - Działania testowe związane z tekstem (np.
performTextInput
) będą teraz bezpośrednio żądać fokusu za pomocą działania semantycznego zamiast klikania pola. (I6ed05) - Dodaliśmy obsługę odstępów i układu wzdłuż osi poprzecznej za pomocą właściwości
verticalArrangement
wFlowRow
ihorizontalArrangement
wFlowColumn
. Usuwamy też znakiverticalAlignment
ihorizontalAlignment
najwyższego poziomu wFlowRow/FlowColumn
. Zamiast tego programiści mogą używać interfejsuModifier.align
. Pozwala to uniknąć nieporozumień związanych z konwencjami nazewnictwaverticalAlignment
iverticalArrangement
. (I87b60, b/268365538)
Wersja 1.5.0-alpha01
22 marca 2023 r.
androidx.compose.foundation:foundation:1.5.0-alpha01
i androidx.compose.foundation:foundation-layout:1.5.0-alpha01
zostały opublikowane. Wersja 1.5.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Tekst i
BasicText
zostały przekształcone, aby korzystać z nowego systemu modyfikatorów. W wielu przypadkach prowadzi to do znacznej poprawy skuteczności. Nie powinny być widoczne żadne zmiany. (If1d17, b/246961435) - Dodano działanie semantyczne
PerformImeAction
, aby wywoływać działanie IME w węzłach edytora tekstu. (Ic606f, b/269633506)
Poprawki błędów
- Zaktualizowano wewnętrzne elementy
Modifier.hoverable
. Modyfikatorhoverable
będzie widoczny w inspektorze tylko wtedy, gdy jest włączony. (I82103)
Wersja 1.4
Wersja 1.4.3
3 maja 2023 r.
androidx.compose.foundation:foundation:1.4.3
i androidx.compose.foundation:foundation-layout:1.4.3
są publikowane bez zmian (tylko ze zmianą numeru wersji).
Wersja 1.4.2
19 kwietnia 2023 r.
androidx.compose.foundation:foundation:1.4.2
i androidx.compose.foundation:foundation-layout:1.4.2
zostały opublikowane. Wersja 1.4.2 zawiera te zmiany.
Wersja 1.4.1
5 kwietnia 2023 r.
androidx.compose.foundation:foundation:1.4.1
i androidx.compose.foundation:foundation-layout:1.4.1
zostały opublikowane. Wersja 1.4.1 zawiera te zmiany.
Wersja 1.4.0
22 marca 2023 r.
androidx.compose.foundation:foundation:1.4.0
i androidx.compose.foundation:foundation-layout:1.4.0
zostały opublikowane. Wersja 1.4.0 zawiera te zmiany.
Ważne zmiany od wersji 1.3.0
- Dodano integrację zgodności z emotikonami w przypadku elementów
Text
iTextField
, a także elementu Paragraph niższego poziomu. Jest ona domyślnie włączona, gdy skonfigurowana jest opcja emojicompat. EmojiCompat
można skonfigurować w przypadku konkretnego tekstu za pomocąPlatformParagraphStyle
.- Dodano obsługę pełnego zakresu wierszy do
LazyStaggeredGrid
(I28252) - Dodawanie eksperymentalnego
onHover
doClickableText
(I6938f) - Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji
runComposeUiTest
icreate*ComposeRule
, które akceptują parametryCoroutineContext
. Kontekst będzie używany do tworzenia testu oraz wszystkich wywołańLaunchedEffect
irememberCoroutineScope()
w teście. (I10614, b/265177763) FlowRow
iFlowColumn
są teraz dostępne jako@ExperimentalFoundationApi
, które umożliwiają bardziej elastyczny układ komponentów oparty na wierszach i kolumnach. Jeśli na osi głównej nie ma wystarczająco dużo miejsca, komponenty zostaną przeniesione do nowego wiersza. (I3a7b2)Modifier.basicMarquee()
jest dostępny w wersji eksperymentalnej do wyświetlania treści z efektem przewijania. (I2df44, b/139321650)
Wersja 1.4.0-rc01
8 marca 2023 r.
androidx.compose.foundation:foundation:1.4.0-rc01
i androidx.compose.foundation:foundation-layout:1.4.0-rc01
zostały opublikowane. Wersja 1.4.0-rc01 zawiera te zmiany.
Zmiany w interfejsie API
- Wprowadziliśmy nowy interfejs API niskiego poziomu
PlatformTextInputAdapter
do tworzenia niestandardowych implementacji wprowadzania tekstu, które komunikują się bezpośrednio z interfejsami API platformy. (I58df4) - Dodaliśmy obsługę odwróconego układu do elementu
LazyStaggeredGrid
. (I3ef4a)
Poprawki błędów
- Działanie semantyczne
BasicTextField
'sSetText
będzie teraz aktualizować bufor tekstu przy użyciu tej samej ścieżki kodu co aktualizacje IME i funkcje testowe (np.performTextReplacement
). - Funkcje testowania tekstu
performTextClearance
,performTextReplacement
iperformTextSelection
używają terazSemanticsActions
. (I0807d, b/269633168, b/269624358)
Wersja 1.4.0-beta02
22 lutego 2023 roku
androidx.compose.foundation:foundation:1.4.0-beta02
i androidx.compose.foundation:foundation-layout:1.4.0-beta02
zostały opublikowane. Wersja 1.4.0-beta02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano nowe wywołanie zwrotne
Modifier.Node.onReset()
, które umożliwia zresetowanie stanu lokalnego, aby prawidłowo obsługiwać sytuację, w której komponentLayout
jest ponownie używany (np. jako element komponentuLazyColumn
). Poprawiono komponentFocusTargetModifierNode
, aby prawidłowo resetować stan zaznaczenia. (I65495, b/265201972) - Dodano parametr
BlendMode
do metodDrawScope.drawText
,Paragraph.paint
iMultiParagraph.paint
, aby obsługiwać różne algorytmy mieszania podczas rysowania tekstu na elemencie Canvas. (I57508) - Usunęliśmy interfejs API
modifierElementOf()
. Zamiast tego rozszerzaj bezpośrednio zModifierNodeElement
. (Ie6d21)
Poprawki błędów
- Dostosowywanie uchwytów zaznaczenia nie może już powodować zaznaczania części znaku. (Idedd1)
- Naprawiono błąd powodujący awarię po naciśnięciu Ctrl+Backspace w pustym polu
TextField
(I0427f, b/244185537)
Wersja 1.4.0-beta01
8 lutego 2023 r.
androidx.compose.foundation:foundation:1.4.0-beta01
i androidx.compose.foundation:foundation-layout:1.4.0-beta01
zostały opublikowane. Wersja 1.4.0-beta01 zawiera te zmiany.
Nowe funkcje
- Od wersji 1.3 dodaliśmy integrację zgodności z emotikonami w przypadku elementów
Text
iTextField
, a także elementu niższego poziomu Paragraph. Jest ona domyślnie włączona, gdy skonfigurowana jest opcja emojicompat. EmojiCompat
można skonfigurować w przypadku konkretnego tekstu za pomocąPlatformParagraphStyle
.
Zmiany w interfejsie API
- Dodano wspólną implementację interfejsu
PinnableContainer
API używanego we wszystkichLazyLayouts
, aby zachować elementy, które wychodzą z kompozycji, ale nadal muszą być aktywne. (If45a4) - Nazwa elementu
PinnableContainer.PinnedHandle.unpin()
została zmieniona narelease()
(I4667a)
Wkład zewnętrzny
- Do usług
LazyListLayoutInfo
,LazyGridLayoutInfo
iLazyStaggeredGridItemInfo
dodano usługęmainAxisItemSpacing
(I52fad)
Wersja 1.4.0-alpha05
25 stycznia 2023 r.
androidx.compose.foundation:foundation:1.4.0-alpha05
i androidx.compose.foundation:foundation-layout:1.4.0-alpha05
zostały opublikowane. Wersja 1.4.0-alpha05 zawiera te zmiany.
Nowe funkcje
- Dodano obsługę pełnego zakresu wierszy do
LazyStaggeredGrid
(I28252) - Dodawanie eksperymentalnego
onHover
doClickableText
(I6938f) - Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji
runComposeUiTest
icreate*ComposeRule
, które akceptują parametryCoroutineContext
. Kontekst będzie używany do tworzenia testu oraz wszystkich wywołańLaunchedEffect
irememberCoroutineScope()
w teście. (I10614, b/265177763)
Zmiany w interfejsie API
- Łączy interfejsy API przed i po w
OverscrollEffect
w połączone funkcje „dekoratora”applyToScroll
iapplyToFling
. Przykłady implementacji efektu przewijania poza krawędź z użyciem nowego kształtu interfejsu API znajdziesz w zaktualizowanych przykładach w dokumentacji. (I8a9c4, b/255554340) - Więcej informacji o typach i możliwościach przyjmowania wartości null w przypadku funkcji wbudowanych i ukrytych (I24f91)
- Interfejsy API
LineBreak
iHyphens
wTextStyle
osiągnęły stabilność. (Ic1e1d)
Poprawki błędów
- Kursor w polach tekstowych będzie teraz migać nawet wtedy, gdy animacje są wyłączone. (I95e70, b/265177763)
Modifier.basicMarquee
jest teraz animowany nawet wtedy, gdy animacje są wyłączone w ustawieniach systemu. (I23389, b/262298306, b/265177763)
Wkład zewnętrzny
- Metody
notifyFocusedRect
w przestrzeniach nazwTextInputSession
iTextInputService
nie są już wycofane. (I23a04, b/262648050)
Wersja 1.4.0-alpha04
11 stycznia 2023 r.
androidx.compose.foundation:foundation:1.4.0-alpha04
i androidx.compose.foundation:foundation-layout:1.4.0-alpha04
zostały opublikowane. Wersja 1.4.0-alpha04 zawiera te zmiany.
Nowe funkcje
FlowRow
iFlowColumn
są teraz dostępne jako@ExperimentalFoundationApi
, które umożliwiają bardziej elastyczny układ komponentów oparty na wierszach i kolumnach. Jeśli na osi głównej nie ma wystarczająco dużo miejsca, komponenty zostaną przeniesione do nowego wiersza. (I3a7b2)Modifier.basicMarquee()
jest dostępny w wersji eksperymentalnej do wyświetlania treści z efektem przewijania. (I2df44, b/139321650)
Zmiany w interfejsie API
FocusRequesterModifier
zostało wycofane na rzeczFocusRequesterNode
(I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)- Konstruktor
AndroidFont
z parametremvariationSettings
jest teraz stabilnym interfejsem API i może służyć do tworzenia nowych typów deskryptorów czcionek. (I5adcc, b/261565807) - Wprowadzono interfejs API
PinnableContainer
propagowany przez leniwe listy za pomocą lokalnego komponentu, który umożliwia przypinanie bieżącego elementu. Oznacza to, że element nie zostanie usunięty, gdy zniknie z widoku. Na przykładModifier.focusable()
przypnie bieżący zaznaczony element za pomocą tego mechanizmu. (Ib8881, b/259274257, b/195049010) - Zmieniliśmy sposób, w jaki elementy przewijane reagują na
bringIntoViewRequesters
, a elementy, na których można się skupić, na bardziej złożone operacje, aby lepiej modelować te operacje i obsługiwać więcej przypadków brzegowych. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114) - Większa możliwość zwracania wartości null przez wycofane i ukryte funkcje (Ibf7b0)
- Dodano eksperymentalny parametr
TextMotion
do parametruTextStyle
, aby określić, czy tekst ma byćStatic(default)
czy animowany. UżyjTextMotion.Animated
, jeśli tekst ma być skalowany, tłumaczony lub obracany za pomocą animacji. (I24dd7) - Dodanie
TextFieldFocusModifier
w celu naprawienia działania nawigacji za pomocą fokusu na platformie Android (I00303) - Zastąpiliśmy argument
maxSize: IntSize
w funkcjidrawText
argumentemsize: Size
, aby był zgodny z innymi funkcjamiDrawScope
. Domyślnie parametrsize
jest ustawiony naSize.Unspecified
, co nie powinno zmieniać poprzedniego domyślnego działania. (Icd27d)
Poprawki błędów
- Dostosowanie fizyki przyciągania w
SnapFlingBehaviour
, aby zapewnić bardziej naturalne wrażenia.
Znany problem
- Podczas aktualizacji z wersji
androidx.compose.foundation:1.4.0-alpha03
doandroidx.compose.foundation:1.4.0-alpha04
może wystąpić błądjava.lang.NoSuchFieldError
. Tutaj problem został zgłoszony po raz pierwszy. Poprawka została przesłana i będzie dostępna w kolejnej aktualizacji Compose. Aby rozwiązać ten problem, zaktualizuj bibliotekiandroidx.compose.material
iandroidx.compose.material3
do najnowszej wersji(1.1.0-alpha04) lub przywróćandroidx.compose.foundation
do wersji 1.4.0-alpha03.
Wersja 1.4.0-alpha03
7 grudnia 2022 r.
androidx.compose.foundation:foundation:1.4.0-alpha03
i androidx.compose.foundation:foundation-layout:1.4.0-alpha03
zostały opublikowane. Wersja 1.4.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- W testach interfejsu przeprowadzanych za pomocą reguły Compose wznowienia w wywołaniach zwrotnych
withFrameNanos
nie będą wysyłane, dopóki nie zostaną wykonane wszystkie wywołania zwrotne klatek. Odpowiada to działaniu funkcji tworzenia wiadomości w normalnych warunkach. Testy, które opierają się na starym działaniu, mogą jednak zakończyć się niepowodzeniem. Powinno to mieć wpływ tylko na kod, który bezpośrednio wywołuje funkcjewithFrameNanos
lubwithFrameMillis
, oraz na logikę poza wywołaniem zwrotnym przekazywaną do tych funkcji, która może wymagać przeniesienia do wywołań zwrotnych. Przykłady zmian w teście animacji znajdziesz w tym CL. - Dodano opcjonalny parametr
onPerformTraversals: (Long) -> Unit
do konstruktoraTestMonotonicFrameClock
i funkcji fabrycznej, aby uruchamiać kod po wywołaniach zwrotnychwithFrameNanos
, ale przed wznowieniem korutyn rozmówców. (Idb413, b/254115946, b/222093277, b/255802670) - Wprowadzenie działań związanych z ułatwieniami dostępu na stronie:
PageUp
,PageDown
,PageLeft
,PageRight
. Pamiętaj, że są one dostępne tylko w interfejsie API w wersji 29. (Ida4ab) - Wprowadzenie
HorizontalPager
iVerticalPager
, czyli sposobu wyświetlania funkcji kompozycyjnych w stylu Pager. WprowadzonoPagerState
, aby sterować pagerami i wykonywać zapytania o informacje o ich bieżącym stanie. WprowadziliśmyPageSize
, czyli sposób kontrolowania rozmiaru strony w komponencie Pager. Można go używać do tworzenia karuzel podobnych do komponentów Pager. WprowadzonoPagerSnapDistance
, czyli sposób sterowania przyciąganiem w przypadku przewijania w Pagerze. (I01120) - Dodaliśmy przeciążenie w
SnapFlingBehavior.performFling
, aby ułatwić określenie, gdzie zatrzyma się przesunięcie. (I569f6) - Użytkownik
OverscrollEffect#isEnabled
został usunięty. Nie musisz pamiętać o ustawieniu tej flagi. Po prostu nie wysyłaj zdarzeń do efektu przewijania poza zakres, jeśli nie chcesz, aby był on widoczny (np. jeśliScrollableState#canScrollForward/backward
zwraca wartość false). (I1a4b0, b/255554340, b/255557085) - Dodano warunki
ScrollableState#canScrollForward
iScrollableState#canScrollBackward
, aby sprawdzić, czyScrollableState
ma miejsce na przewijanie w dowolnym kierunku (czy znajduje się na minimalnym lub maksymalnym poziomie zakresu). Domyślnie ma wartość „true”, aby zapewnić zgodność wsteczną z dotychczasowymi implementacjamiScrollableState
. Konsumenci mogą używać tego sygnału, aby poinformować użytkownika, że nadal jest miejsce na przewijanie. Można go też używać, aby uniknąć wysyłania wartości delta doScrollableStates
, które nie mają miejsca na przewijanie w danym kierunku, co zmniejsza niepotrzebną pracę. (Idf1a0, b/255557085) - Dodaliśmy interfejs Modifier API do wysyłania zapytań o informacje o przewijaniu elementów nadrzędnych. (I2ba9d, b/203141462)
- Używany w
Clickable
do prawidłowego opóźniania interakcji z naciśnięciem, gdy gesty mogą stać się zdarzeniami przewijania. - Rozwiązaliśmy problem z nieprawidłowym opóźnianiem efektów falowania przez element
Clickables
, gdy jest używany w elemencieScrollable ViewGroup
. - Zaktualizowano panele i arkusze, aby prawidłowo opóźniać naciśnięcia w przypadku, gdy gesty mogą stać się zdarzeniami przewijania.
- Zaktualizuj nazewnictwo
snapStepSize
, aby było zgodne z innymi metodami wSnapLayoutInfoProvider
. (Ife67c) - Dodano
EmojiCompat
doCompose
(Ibf6f9, b/139326806) - Zmieniliśmy nazwy
consumedWindowInsets()
naconsumeWindowInsets()
iwithConsumedWindowInsets()
naonConsumedWindowInsetsChanged()
oraz udostępniliśmy modyfikatory. (Ie44e1)
Poprawki błędów
- Naprawiono awarię związaną z
Modifier.animateItemPlacement()
i siatkami Lazy. Występowało to w niektórych przypadkach, gdy liczba nowych elementów była mniejsza niż poprzednia. (I0bcac, b/253195989)
Wersja 1.4.0-alpha02
9 listopada 2022 r.
androidx.compose.foundation:foundation:1.4.0-alpha02
i androidx.compose.foundation:foundation-layout:1.4.0-alpha02
zostały opublikowane. Wersja 1.4.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Atrybuty
awaitFirstDown
iwaitForUpOrCancellation
akceptują terazPointerEventPass
, co zapewnia większą elastyczność. (I7579a, b/212091796) - Wycofanie interfejsu
beyondBoundCount
API z interfejsów Lazy* API (I12197) - Wprowadzono parametr w interfejsach Lazy API, który umożliwia tworzenie i umieszczanie elementów poza widocznym obszarem (I69e89, b/172029355)
- Dodano parametr
minLines
do parametrówBasicText
iBasicTextField
. Umożliwia ustawienie minimalnej wysokości tych komponentów w liczbie wierszy (I24294, b/122476634).
Wersja 1.4.0-alpha01
24 października 2022 r.
androidx.compose.foundation:foundation:1.4.0-alpha01
i androidx.compose.foundation:foundation-layout:1.4.0-alpha01
zostały opublikowane. Wersja 1.4.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaliśmy nową metodę
awaitEachGesture()
dla detektorów gestów. Działa podobnie doforEachGesture()
, ale pętla gestów działa w całości w ramachAwaitPointerEventScope
, więc zdarzenia nie mogą zostać utracone między iteracjami. - Element
forEachGesture()
został wycofany na rzecz elementuawaitEachGesture()
, ponieważ umożliwiał utratę zdarzeń między gestami. (Iffc3f, b/251260206) - Dodano
WindowInsets.imeAnimationSourc
e iWindowInsets.imeAnimationTarget
, aby określić postęp animacji i wiedzieć, gdzie będzie IME po zakończeniu animacji. (I356f1, b/217770337)
Wersja 1.3
Wersja 1.3.1
9 listopada 2022 r.
androidx.compose.foundation:foundation:1.3.1
i androidx.compose.foundation:foundation-layout:1.3.1
zostały opublikowane. Wersja 1.3.1 zawiera te zmiany.
Poprawki błędów
- Rozwiązywanie problemów z wydajnością w
BeyondBoundsLayout
(aosp/2255266) ContentInViewModifier
nie odczytuje współrzędnych układu, chyba że jest dołączony (aosp/2241316)
Wersja 1.3.0
24 października 2022 r.
androidx.compose.foundation:foundation:1.3.0
i androidx.compose.foundation:foundation-layout:1.3.0
zostały opublikowane. Wersja 1.3.0 zawiera te zmiany.
Ważne zmiany od wersji 1.2.0
- Wprowadzono wersje eksperymentalne
LazyVerticalStaggeredGrid
iLazyHorizontalStaggeredGrid
. SnapFlingBehavior
,rememberSnapFlingBehavior
i inne powiązane interfejsy API zostały dodane jako eksperymentalne.Modifier.clickable
,Modifier.toggleable
iModifier.selectable
wyświetlają teraz efekt fali, jeśli klikniesz je za pomocą klawiatury lub pada kierunkowego na pilocie.
Wersja 1.3.0-rc01
5 października 2022 r.
androidx.compose.foundation:foundation:1.3.0-rc01
i androidx.compose.foundation:foundation-layout:1.3.0-rc01
zostały opublikowane. Wersja 1.3.0-rc01 zawiera te zmiany.
Zmiany w interfejsie API
- Wprowadzono
lowVelocityAnimationSpec
używane w kroku zbliżania, gdy nie ma wystarczającej prędkości, aby ją zmniejszyć. (Iaeb27) - Dodano nowy eksperymentalny interfejs API Hyphens, który obsługuje automatyczne dzielenie wyrazów w tekście (Iaa869).
Wersja 1.3.0-beta03
21 września 2022 r.
androidx.compose.foundation:foundation:1.3.0-beta03
i androidx.compose.foundation:foundation-layout:1.3.0-beta03
zostały opublikowane. Wersja 1.3.0-beta03 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaj opcje dostosowywania podziału wierszy w tekście. (I86907)
BringIntoViewResponder
mogą teraz podczas przetwarzania żądania uzyskiwać najbardziej aktualne granice. (If86a5, b/241591211)- Wprowadzenie obsługi odstępów między elementami w eksperymentalnej wersji
Staggered Grid
(I10b82) - Wprowadzenie dopełnienia treści w eksperymentalnym
Staggered Grid
(I342ea) - Zmieniono argument
size:IntSize
naconstraints: Constraints
w metodzieTextMeasurer.measure
, aby obsługiwać ograniczenia minimalnej szerokości. (I37530, b/242707525) - Dodano
Modifier.withConsumedWindowInsets()
do wykorzystaniaWindowInsets
do użytku pozawindowInsetsPadding
. - Dodano
MutableWindowInsets
, aby umożliwić łatwą zmianęWindowInsets
bez ponownego komponowania. (I7fd28, b/237019262, b/243119659)
Wersja 1.3.0-beta02
7 września 2022 roku
androidx.compose.foundation:foundation:1.3.0-beta02
i androidx.compose.foundation:foundation-layout:1.3.0-beta02
zostały opublikowane. Wersja 1.3.0-beta02 zawiera te zmiany.
Zmiany w interfejsie API
- Wstępna wersja eksperymentalnego
StaggeredGrid
(Ia48be) - Zmiana nazw
FocusDirection.In
iFocusDirection.Out
naFocusDirection.Enter
iFocusDirection.Exit
(Ia4262, b/183746982) - Wprowadzono przeciążenie
rememberSnapFlingBehavior
, które umożliwia szybkie włączanie przyciągania wLazyLists
. (Ifb48a) - Zastąpiliśmy fabrykę
snapFlingBehavior
konkretną klasąSnapFlingBehavior
. Metody z zakresemSnapLayoutInfoProvider
w klasie Density, aby ułatwić użytkownikom interfejsu API konwersje Dp<->Px. (I54a11) - Zaktualizuj
LazyLayoutMeasureScope.measure
, aby zwracać listę elementów, podkreślając pożądaną niezmienność zwracanej wartości. (I48b7c) - Wprowadzono
SnapLayoutInfoProvider
, który przyjmujeLazyListState
, aby utworzyć instancjęSnapLayoutInfoProvider
, której można użyć do włączenia migawkiFlingBehavior
dlaLazyLists
. (I2dd10)
Poprawki błędów
- Zmiana struktury
AwaitPointerEventScope#awaitLongPressOrCancellation
, aby pasowała do innych funkcji oczekiwania (I646e6)
Wersja 1.3.0-beta01
24 sierpnia 2022 r.
androidx.compose.foundation:foundation:1.3.0-beta01
i androidx.compose.foundation:foundation-layout:1.3.0-beta01
zostały opublikowane. Wersja 1.3.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Usunięto
pointerPosition
zOverscrollEffect
– efekty, które uwzględniają pozycję wskaźnika, mogą zamiast tego używaćModifier.pointerInput { }
weffectModifier
, aby uzyskać bieżącą pozycję wskaźnika. (I9f606, b/241239306) - Udostępniono
AwaitPointerEventScope#awaitLongPressOrCancellation
jako dodatkowy element składowy na potrzeby bardziej złożonego wykrywania gestów (I04374, b/181577176) - Wprowadziliśmy
lazyListSnapLayoutInfoProvider
, aby włączyć przyciąganie w leniwych listach. (I3ecdf) - Wprowadzono
SnapFlingBehavior
, czyli gest szybkiego przesunięcia, który umożliwia przyciąganie listy. Podaj instancjęSnapLayoutInfoProvider
z informacjami o układzie przyciągania. (Ie754c)
Wersja 1.3.0-alpha03
10 sierpnia 2022 r.
androidx.compose.foundation:foundation:1.3.0-alpha03
i androidx.compose.foundation:foundation-layout:1.3.0-alpha03
zostały opublikowane. Wersja 1.3.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Czcionki zasobów obsługują teraz ustawianie ustawień wariacji czcionki (API w wersji 26 lub nowszej). (I900dd, b/143703328)
- Obsługa czcionek zmiennych w
DeviceFontFamilyNameFont
(Ic1279, b/143703328) - Usunięto eksperymentalną adnotację z funkcji
PlatformTextStyle
iLineHeightStyle
. (I64bef) - Pola tekstowe będą teraz zgłaszać bardziej szczegółowe wyjątki, gdy element
OffsetMapping
dostarczony przez elementVisualTransformation
zwraca nieprawidłowe indeksy. (Ie73f9, b/229378536) - Wprowadzamy eksperymentalne interfejsy API, które umożliwiają udostępnianie logiki dostawcy elementów między układami Lazy. (Ic891c)
ScrollableDefaults.reverseDirection()
nie jest już funkcją eksperymentalną. (Iba646)- Wycofano
SemanticsModifier.id
i przeniesiono identyfikator semantyki doLayoutInfo.semanticsId
. (Iac808, b/203559524) checkScrollableContainerConstraints()
nie jest już funkcją eksperymentalną. (I2c290)Modifier.clipScrollableContainer()
nie jest już funkcją eksperymentalną. (Ia2b44)- Wycofaj:
TextInputService.show|hideSoftwareKeyboard
. Zamiast niego użyj w kodzie aplikacji interfejsuSoftwareKeyboardController
, a w kodzie zarządzania IME – interfejsuTextInputSession
. (I14e4c, b/183448615)
Wersja 1.3.0-alpha02
27 lipca 2022 roku
androidx.compose.foundation:foundation:1.3.0-alpha02
i androidx.compose.foundation:foundation-layout:1.3.0-alpha02
zostały opublikowane. Wersja 1.3.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano funkcję rozszerzenia
drawText
wDrawScope
, która umożliwia rysowanie tekstu z wieloma stylami w komponentach i modyfikatorach działających naDrawScope
, takich jakCanvas
idrawBehind
. (I16a62, b/190787898)
Poprawki błędów
- Klawiatura ekranowa będzie teraz ukrywana, gdy pole tekstowe jest wyłączone, ale zaznaczone. (I6e3e4, b/237308379)
- Podczas dodawania zdarzeń
InputEventChange
do narzędzia Velocity Tracker będziemy teraz uwzględniać różnice zamiast pozycji. Dzięki temu prędkość będzie prawidłowo obliczana we wszystkich przypadkach, nawet jeśli element docelowy się porusza (Icea9d, b/216582726, b/223440806, b/227709803). - Gdy element przewijany ma fokus na elemencie podrzędnym, będzie teraz prawidłowo przewijać, aby utrzymać ten element w widoku, gdy jego rozmiar zostanie zmniejszony, nawet jeśli rozmiar jest animowany. (I80867, b/230756508, b/220119990)
- Naprawiliśmy błąd powodujący awarię, gdy
TextField
jest czyszczone i ponownie wypełniane podczas aktywnego zaznaczenia. (I1235b, b/208655565, b/214253689)
Wersja 1.3.0-alpha01
29 czerwca 2022 r.
androidx.compose.foundation:foundation:1.3.0-alpha01
i androidx.compose.foundation:foundation-layout:1.3.0-alpha01
zostały opublikowane. Wersja 1.3.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Wprowadziliśmy typ adnotacji
UrlAnnotation
i powiązane z nim metody, aby obsługiwać linkiTalkBack
wAnnotatedString
. (I1c754, b/231495122)
Poprawki błędów
BasicTextField
cursorBrush
można teraz animować bez ponownego uruchamiania timera kursora. (I812e6, b/236383522)
Wersja 1.2
Wersja 1.2.1
10 sierpnia 2022 r.
androidx.compose.foundation:foundation:1.2.1
i androidx.compose.foundation:foundation-layout:1.2.1
zostały opublikowane. Wersja 1.2.1 zawiera te zmiany.
Wersja 1.2.0
27 lipca 2022 roku
androidx.compose.foundation:foundation:1.2.0
i androidx.compose.foundation:foundation-layout:1.2.0
zostały opublikowane. Wersja 1.2.0 zawiera te zmiany.
Ważne zmiany od wersji 1.1.0
- Wartości
LazyVerticalGrid
iLazyHorizontalGrid
są teraz stabilne. - Możesz teraz określić typ treści dla elementów na leniwych listach i w siatkach. Umożliwi to komponentom bardziej efektywne ponowne wykorzystywanie elementów.
- Listy i siatki ładowane na żądanie mają teraz parametr
userScrollEnabled
, który umożliwia wyłączenie przewijania za pomocą gestów użytkownika. - Dodaliśmy nowy eksperymentalny interfejs API o nazwie
LazyLayout
. Jest to interfejs API, którego używamy wewnętrznie do obsługi leniwych list i siatek. OverscrollEffect
Interfejs API został wprowadzony jako eksperymentalny. Możesz zdefiniować niestandardowe efekty przewijania poza zakres, a także dodać standardowy efekt platformy do niestandardowych kontenerów z możliwością przewijania.- Wprowadzono interfejsy API interoperacyjności zagnieżdżonego przewijania, aby umożliwić interoperacyjność między widokami a komponentami przewijania.
- Do wszystkich kontenerów przewijania dodaliśmy przewijanie za pomocą myszy i touchpada.
Wersja 1.2.0-rc03
29 czerwca 2022 r.
androidx.compose.foundation:foundation:1.2.0-rc03
i androidx.compose.foundation:foundation-layout:1.2.0-rc03
zostały opublikowane. Wersja 1.2.0-rc03 zawiera te zmiany.
- Brak zmian od wersji 1.2.0-rc02.
Wersja 1.2.0-rc02
22 czerwca 2022 r.
androidx.compose.foundation:foundation:1.2.0-rc02
i androidx.compose.foundation:foundation-layout:1.2.0-rc02
zostały opublikowane. Wersja 1.2.0-rc02 zawiera te zmiany.
Wersja 1.2.0-rc01
15 czerwca 2022 r.
androidx.compose.foundation:foundation:1.2.0-rc01
i androidx.compose.foundation:foundation-layout:1.2.0-rc01
zostały opublikowane. Wersja 1.2.0-rc01 zawiera te zmiany.
Zmiany w interfejsie API
- Wprowadzono eksperymentalny interfejs
OverscrollEffect
, który umożliwia stosowanie niestandardowych efektów przewijania poza krawędź, a także przeciążeniaModifier.scrollable
, które go akceptują. - Eksperymentalny interfejs
LocalOverScrollConfiguration
został przeniesiony zfoundation.gesture
do pakietu podstawowego i zmieniono jego nazwę naLocalOverscrollConfiguration
(If19fb, b/204650733). - Interfejsy w bibliotekach Compose są teraz tworzone przy użyciu domyślnych metod interfejsu jdk8 (I5bcf1).
- Wprowadziliśmy eksperymentalny interfejs API
checkScrollableContainerConstraints()
, który umożliwia sprawdzenie, czy nie zagnieżdżamy kontenerów z możliwością przewijania. Możesz go używać podczas tworzenia własnych układów leniwych z możliwością przewijania za pomocąLazyLayout
. (Id6fab, b/233352497) - Usunięto z pakietu
androidx.compose.foundation.lazy
wycofany elementLazyVerticalGrid
. Nowy stabilny interfejs API znajduje się wandroidx.compose.foundation.lazy.grid
(I73c76, b/225192009).
Wersja 1.2.0-beta03
1 czerwca 2022 r.
androidx.compose.foundation:foundation:1.2.0-beta03
i androidx.compose.foundation:foundation-layout:1.2.0-beta03
zostały opublikowane. Wersja 1.2.0-beta03 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano nowe eksperymentalne funkcje
IntervalList
iMutableIntervalList
. Umożliwia przedstawienie listy wartości za pomocą wielu przedziałów. Będzie to przydatne, gdy chcesz zdefiniować własny język DSL podobny do tego używanego przezLazyColumn
, w którym elementy listy można definiować za pomocą wielu wywołań item/items. (I2d05e, b/228580728)
Poprawki błędów
- Wyjaśniliśmy w dokumentacji dotyczącej
WindowInsets.ime
, że wstawkiime
są zgłaszane od interfejsu API 23, ale tylko animowane w przypadku interfejsu API 30 lub nowszego (Ia7fc0, b/230756508). - Naciśnięcie klawisza usuwania do przodu, gdy kursor znajduje się na końcu pola tekstowego, nie spowoduje już awarii.
DeleteSurroundingTextCommand
iDeleteSurroundingTextInCodePointsCommand
wymagają teraz, aby argumenty konstruktora były nieujemne. (Ica8e6, b/199919707)
Wersja 1.2.0-beta02
18 maja 2022 r.
androidx.compose.foundation:foundation:1.2.0-beta02
i androidx.compose.foundation:foundation-layout:1.2.0-beta02
zostały opublikowane. Wersja 1.2.0-beta02 zawiera te zmiany.
- Rozdzielczość czcionki do pobrania, która nie zmienia rozmiaru układu tekstu lub
TextField
, nie była wcześniej ponownie rysowana, co prowadziło do nieaktualnego wyświetlania czcionki. Ta poprawka zapewnia, że układ tekstu zawsze powoduje ponowne rysowanie (b/229727404). (I1d49e, b/229727404)
Wersja 1.2.0-beta01
11 maja 2022 roku
androidx.compose.foundation:foundation:1.2.0-beta01
i androidx.compose.foundation:foundation-layout:1.2.0-beta01
zostały opublikowane. Wersja 1.2.0-beta01 zawiera te zmiany.
Nowe funkcje
- To pierwsza wersja beta 1.2.
Zmiany w interfejsie API
- Dodano eksperymentalny interfejs
BeyondBoundsInterval
, który może być używany przez niestandardowe implementacje interfejsuLazyList
podczas rozmieszczania elementów poza widocznymi granicami (Ifabfb, b/184670295). - Nazwa
LineHeightBehavior
została zmieniona naLineHeightStyle
- Nazwa
LineVerticalAlignment
została zmieniona naLineHeightStyle.Alignment
- Zmieniono nazwę
LineHeightTrim
naLineHeightStyle.Trim
- Usunięto wartości domyślnego konstruktora z
LineHeightStyle
(I582bf, b/181155707) - Dodano wartości domyślne dla opcjonalnych elementów interfejsu
LazyLayoutItemProvider
. (Iba8a0) - W interfejsie
LazyLayoutItemProvider
zamiast fabryki zwracającej lambdę kompozycyjną według indeksu mamy teraz prostszą funkcję kompozycyjną Item, która akceptuje indeks. (Id2196) - Nazwa LazyLayoutItemsProvider została zmieniona na LazyLayoutItemProvider (I0638c)
LazyLayoutItemsProvider.itemsCount
zmienia nazwę naitemCount
(Id409c)- Dodano pędzel do
TextStyle
iSpanStyle
, aby umożliwić rysowanie tekstu z gradientowym kolorowaniem. (I53869, b/187839528) - Atrybuty
trimFirstLineTop
itrimLastLineBottom
elementuLineHeightBehavior
zostały zmienione w jedno wyliczenie:LineHeightTrim
.LineHeightTrim
mają 4 stany zdefiniowane przez 2 wartości logiczne:FirstLineTop
,LastLineBottom
, Both i None (Ifc6a5, b/181155707). Dodano
LineHeightBehavior
do elementów sterującychTextStyle
iParagraphStyle. LineHeightBehavior
, które określają, czy wysokość wiersza jest stosowana do góry pierwszego wiersza i do dołu ostatniego wiersza. Określa też wyrównanie wiersza w przestrzeni udostępnionej przezTextStyle
(lineHeight
).Na przykład zachowanie podobne do tego, które definiuje usługa porównywania cen, można uzyskać za pomocą parametru
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.trimFirstLineTop
,trimLastLineBottom
configurations works correctly only whenincludeFontPadding
is false. (I97332, b/181155707)Dodano eksperymentalny modyfikator
imeNestedScroll()
, aby deweloperzy mogli sterować edytorem IME za pomocą przewijania. (I60759)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że pola tekstowe nie ukrywały klawiatury po usunięciu z kompozycji, gdy były aktywne. (I7a410, b/230536793, b/225541817)
- Obsługa wielokropka, gdy wysokość jest ograniczona i nie mieści wszystkich wierszy tekstu (Ie528c, b/168720622)
BringIntoViewRequester.bringIntoView
będzie teraz zawsze wstrzymywane do czasu zakończenia żądania lub przerwania go przez nowsze, niepokrywające się żądanie. Nakładające się na siebie żądania będą umieszczane w kolejce. (I43e7f, b/216790855)- Równoczesne wywołania
BringIntoViewRequester.bringIntoView
w przypadku prostokątów, które całkowicie się pokrywają, będą teraz uwzględniać tylko żądanie większego prostokąta. (I34be7, b/216790855, b/184760918) - Domyślnie włączone
includeFontPadding
. Możesz wyłączyćincludeFontPadding
za pomocą atrybutuTextStyle.platformTextStyle
. W najbliższej przyszłości zmienimy domyślne działanie, ale do tego czasu pozwoli nam to lepiej zintegrować ulepszenia wysokości wiersza (aosp/2058653) i rozwiązać problemy zTextField
przycinaniem. (I01423, b/171394808) Modifier.bringIntoViewRequester
nie korzysta już z usługionGloballyPositioned
. (I630f5)
Wkład zewnętrzny
MouseInjectionScope.scroll(delta = someDelta)
jest teraz odwrócony na Androidzie, jeśli przewijamy w pionie (jeśli someDelta jest dodatni, przewijanie będzie w dół) (Ifb697, b/224992993)
Wersja 1.2.0-alpha08
20 kwietnia 2022 r.
androidx.compose.foundation:foundation:1.2.0-alpha08
i androidx.compose.foundation:foundation-layout:1.2.0-alpha08
zostały opublikowane. Wersja 1.2.0-alpha08 zawiera te zmiany.
Zmiany w interfejsie API
- Wyświetlaj wszystkie dostępne grubości czcionek systemowych na Androidzie, gdy używasz
FontFamily.SansSerif
. W przypadku interfejsów API w wersjach 21–28 wewnętrznie będą używane nazwy czcionek zastępczych, np. sans-serif-medium. Jest to zmiana w działaniu, ponieważ wcześniej w interfejsach API w wersjach 21–28 obsługiwane były tylko wagi 400 i 700. (I380fe, b/156048036, b/226441992) - Elementy Paragraph i MultiParagraph akceptują teraz parametr Constraints. Przekazywanie wartości
Constraints.maxHeight
jest obecnie operacją pustą, ale w przyszłości umożliwi wykonywanie obliczeń, np. skracanie tekstu na podstawie wysokości. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()
akceptuje teraz niestandardową klasę podobną do MutableSet, która nie zezwala na dodawanie do niej nowych elementów. (Icd314)- Częściowe wykorzystanie (obniżenie lub pozycja) zostało wycofane w
PointerInputChange
. Aby w pełni wykorzystać zmianę, możesz użyćconsume()
. Możesz użyćisConsumed
, aby sprawdzić, czy ktoś inny wcześniej wykorzystał tę zmianę. PointerInputChange::copy()
zawsze tworzy teraz płytką kopię. Oznacza to, że po wykorzystaniu jednej kopiiPointerInputChange
zostaną wykorzystane kolejne kopie. Jeśli chcesz utworzyć niepowiązany elementPointerInputChange
, użyj konstruktora. (Ie6be4, b/225669674)- Wprowadzamy nowy eksperymentalny interfejs API
LazyLayout
. Dzięki temu możesz tworzyć własne komponenty, np.LazyColumn
zLazyVerticalGrid
. Pamiętaj, że interfejs API jest na wczesnym etapie rozwoju i może ulec zmianie w przyszłych wersjach. (Iba2bc, b/166591700) AndroidFont
przyjmuje teraztypefaceLoader
jako parametr konstruktora. (I2c971)WindowInsets
towarzyszące wyświetlają teraz widoczność (czy są na ekranie, niezależnie od tego, czy przecinają okno) i rozmiar, jaki mogłyby mieć, gdyby były dostępne na urządzeniu, ale nie są obecnie aktywne. (I65182, b/217770337)
Wersja 1.2.0-alpha07
6 kwietnia 2022 roku
androidx.compose.foundation:foundation:1.2.0-alpha07
i androidx.compose.foundation:foundation-layout:1.2.0-alpha07
zostały opublikowane. Wersja 1.2.0-alpha07 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano interfejs
PinnableParent
API, który umożliwia elementom podrzędnym układów leniwych zapobieganie usuwaniu aktualnie skomponowanych elementów (Ibbdd0, b/184670295). - Pola
LazyListLayoutInfo
iLazyGridLayoutInfo
mają teraz polabeforeContentPadding
iafterContentPadding
(I3b628, b/200920410) - Dodano
KeyboardType.Decimal
jako alternatywę dlaKeyboard.Number
, aby uwzględnić separator dziesiętny w edytorze IME. (Iec4c8, b/209835363) - Dodaj nowy deskryptor czcionki Font(DeviceFontFamilyName), aby opcjonalnie wyszukiwać czcionki zainstalowane w systemie podczas łańcuchów zastępczych czcionek. (I30468, b/219754572)
- Interfejsy
PointerEventType.Scroll
iPointerEvent.scrollDelta
są teraz stabilne (I574c5, b/225669674). - Dodana tymczasowa konfiguracja zgodności dla
includeFontPadding
wTextStyle/ParagraphStyle. includeFontPadding
może zostać zmieniona za pomocąTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. Jest to tymczasowa opcja konfiguracji umożliwiająca migrację, która zostanie usunięta. (If47be, b/171394808) - Zaktualizowano
FontFamily.Resolver
, aby zintegrować ustawienie ułatwień dostępu „Pogrubienie tekstu w całym systemie” (I6c1e7) - Właściwość rozszerzenia
consumeWindowInsets
elementuComposeView
umożliwia programistom wyłączenie korzystania z elementu WindowInsets na Androidzie. Dzięki temu poszczególneComposeViews
w hierarchii mogą stosowaćWindowInsets
bez wzajemnego zakłócania działania. (I0ef08, b/220943142)
Wersja 1.2.0-alpha06
23 marca 2022 r.
androidx.compose.foundation:foundation:1.2.0-alpha06
i androidx.compose.foundation:foundation-layout:1.2.0-alpha06
zostały opublikowane. Wersja 1.2.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano działanie semantyczne
RequestFocus
, aby poprosić o skupienie się na elemencie, na którym można ustawić fokus. (I17b71) - Usługa
FocusOrder
została połączona z usługąFocusProperties
, a usługafocusProperties()
ma teraz wszystkie funkcje usługifocusOrder()
. FunkcjeFocusOrder
ifocusOrder()
zostały wycofane.focusOrder()
, który akceptujefocusRequester
, należy zastąpić modyfikatoremfocusRequester()
w połączeniu zfocusProperties()
. Dzięki temu modyfikatory mogą być bardziej od siebie odseparowane. (I601b7) WindowInsets.asPaddingValues(Density)
został dodany, aby umożliwić deweloperom przeprowadzanie konwersji bez konieczności korzystania z kompozycji. (I94c35)- Zaktualizowano analizowanie rysunków wektorowych, aby obsługiwać automatyczne dublowanie, które odwraca zawartość elementu
VectorPainter
, jeśli bieżący kierunek układu to RTL. (I79cd9, b/185760237)
Poprawki błędów
- Modyfikatory przewijania (
Modifier.verticalScroll()
,Modifier.horizontalScroll()
iModifier.scrollable()
) będą teraz przewijać, aby zachować widoczność kompozycji, na której jest fokus, jeśli obszar przewijania zostanie zmieniony, a kompozycja, na której jest fokus, była wcześniej widoczna. - Pola tekstowe będą teraz wyświetlane nad klawiaturą, gdy są aktywne i klawiatura jest widoczna, w przypadku gdy znajdują się w nieprzewijanym kontenerze i tryb wprowadzania tekstu jest ustawiony na
ADJUST_RESIZE
. (I4a485, b/190539358, b/192043120, b/216842427)
Wersja 1.2.0-alpha05
9 marca 2022 r.
androidx.compose.foundation:foundation:1.2.0-alpha05
i androidx.compose.foundation:foundation-layout:1.2.0-alpha05
zostały opublikowane. Wersja 1.2.0-alpha05 zawiera te zmiany.
Zmiany w interfejsie API
- Wartości
LazyVerticalGrid
iLazyHorizontalGrid
są teraz stabilne. (I307c0) LazyGridItemInfo.Unknown
został zastąpiony osobnymi polamiLazyGridItemInfo.UnknownRow
iLazyGridItemInfo.UnknownColumn
(I56d51)LazyVerticalGrid
/LazyHorizontalGrid
i wszystkie powiązane interfejsy API zostały przeniesione do podpakietu.grid
. Zaktualizuj importy zandroidx.compose.foundation.lazy
doandroidx.compose.foundation.lazy.grid
. (I2d446, b/219942574)- Tekst:
includeFontPadding
jest teraz domyślnie wyłączony. Problemy z obcinaniem wynikające zincludeFontPadding=false
zostały rozwiązane i nie powinno już dochodzić do obcinania w przypadku wysokich skryptów. (I31c84, b/171394808) - Interfejs pomiarowy udostępnia teraz właściwość parentData (I3313f)
- Wprowadzono eksperymentalną funkcję
Modifier.onFocusedBoundsChanged
, która umożliwia obserwowanie granic elementów podrzędnych, na których można ustawić fokus. (I14283, b/220030968, b/190539358, b/192043120, b/216842427) - Dodano LazyHorizontalGrid. (I61ae7, b/191238807)
- Dodano nowy interfejs API
LazyVerticalGrid
do określania rozmiarów osi poprzecznej (I17723). - Dodano modyfikator FocusGroup (I64bc0, b/213508274, b/184670295)
Poprawki błędów
WindowInsets.toString()
będzie teraz wyświetlać prawidłowe wartości. (I1585d)
Wkład zewnętrzny
- Zaktualizowano do korzystania z rutyn Kotlinx w wersji 1.6.0 (I3366d).
Wersja 1.2.0-alpha04
23 lutego 2022 r.
androidx.compose.foundation:foundation:1.2.0-alpha04
i androidx.compose.foundation:foundation-layout:1.2.0-alpha04
zostały opublikowane. Wersja 1.2.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
BringIntoViewResponders
nie muszą już ręcznie przekazywać żądań do elementów nadrzędnych, ale muszą natychmiast zwracać prostokąt, który ma być widoczny dla elementu nadrzędnego. (I8e66a)- Obsługa asynchronicznego wczytywania czcionek w komponencie Tekst (I77057, b/214587005)
LazyVerticalGrid
obsługuje terazline breaking
przed elementami z zakresem, który nie mieści się w bieżącym wierszu. (I05c40, b/207462103)- Zmieniono nazwę
excludeFromSystemGestures
nasystemGesturesExclusion
(I19526) LazyVerticalGrid
obsługuje teraz reverseLayout. (I6d7d7, b/215572963, b/211753558)- Dodaj metodę
WindowInsets.only()
, aby umożliwić programistom uwzględnianie tylko wymiarów z WindowInsets. (I14c94, b/217768486) Dodano adnotacje
ComposableTarget
,ComposableTargetMarker
iComposableOpenTarget
, które umożliwiają zgłaszanie w czasie kompilacji sytuacji, w których funkcja typu „composable” jest wywoływana w odniesieniu do narzędzia, do którego nie została zaprojektowana.W większości przypadków adnotacje te mogą być wywnioskowane przez wtyczkę kompilatora Compose, więc bezpośrednie używanie tych adnotacji powinno być rzadkie . Nie można wywnioskować przypadków, w których tworzony jest i używany niestandardowy aplikator, abstrakcyjne funkcje kompozycyjne (np. metody interfejsu), pola lub zmienne globalne, które są kompozycyjnymi wyrażeniami lambda (zmienne lokalne i parametry są wywnioskowane), lub gdy używana jest funkcja
ComposeNode
lub powiązane funkcje kompozycyjne.W przypadku niestandardowych funkcji stosujących funkcje kompozycyjne, które wywołują
ComposeNode
lubReusableComposeNode
, należy dodać adnotacjęCompoableTarget
do funkcji i wszystkich typów parametrów lambda kompozycyjnych. Zalecamy jednak utworzenie adnotacji, która jest oznaczona symbolemComposableTargetMarker
, a następnie użycie tej adnotacji zamiast symboluComposableTarget
. Adnotacja kompozycyjna oznaczona symbolemComposableTargetMarker
jest równoważna adnotacjiComposbleTarget
z pełną i jednoznaczną nazwą klasy atrybutu jako parametrem stosującym. Przykład użycia elementuComposableTargetMarker
znajdziesz w sekcjianroidx.compose.ui.UiComposable
. (I38f11)
Poprawki błędów
- Teraz można przekazywać ujemne przesunięcia przewijania do
LazyGridState.scrollToItem()
iLazyGridState.animateScrollToItem()
. (I025c6, b/211753558) - Obsługa asynchronicznego wczytywania czcionek w przypadku komponentu TextField. (Icc4bf, b/214587005)
Wersja 1.2.0-alpha03
9 lutego 2022 r.
androidx.compose.foundation:foundation:1.2.0-alpha03
i androidx.compose.foundation:foundation-layout:1.2.0-alpha03
zostały opublikowane. Wersja 1.2.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Metody
notifyFocusedRect
wTextInputSession
iTextInputService
zostały wycofane i nie będą wywoływane. Zamiast niej używaj właściwościBringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874) - Animacje zostały włączone w przypadku elementów leniwych siatek za pomocą funkcji Modifier.animateItemPlacement(). (Ib6621, b/211753218)
BringIntoViewRequester
przekazuje teraz żądania do hostowanego widoku Androida. (Ia7a51)FontFamilyResolver
jest teraz dostępna w ramach usługiLocalFontFamilyResolver.current
- Dodano
createFontFamilyResolver(context)
icreateFontFamilyResolver(context, coroutineScope)
, aby tworzyć nowe moduły rozpoznawania FontFamily poza użyciem funkcji Compose. - Elementy Paragraph i MultiParagraph przyjmują teraz wartość
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
zawiera teraz resolver używany w tym układzie. WycofaliśmyTextLayoutResult.layoutInput.resourceLoader
, ponieważ nie jest już używany. (Id5a45, b/174162090)
- Dodano
- Dodano
AndroidFont
, nowy interfejs API niskiego poziomu do udostępniania nowych typów deskryptorów zasobów czcionek na Androidzie. Może to być np. wczytywanie czcionek z backendu aplikacji, opcjonalne lokalizowanie wstępnie zainstalowanych czcionek na urządzeniu lub wczytywanie czcionki z zasobu, który nie jest udostępniany przez bieżące fabryki czcionek.- Rozszerzyliśmy interfejs
Font.ResourceLoaded
API, aby obsługiwał opcjonalne i asynchroniczne wczytywanie czcionek. Nie zalecamy programistom aplikacji bezpośredniego korzystania z tego interfejsu API. Aby dodać nowe typy czcionek, zobacz AndroidFont. - Funkcja rozszerzenia
Font.AndroidResourceLoader
umożliwia tworzenieFont.ResourceLoader
poza kompozycją. - Dodano parametr
loadingStrategy
do czcionek opartych na zasobach, aby umożliwić asynchroniczne wczytywanie, gdy czcionka zasobu odwołuje się do pliku XML czcionek do pobrania. (Ie5aea, b/174162090)
- Rozszerzyliśmy interfejs
- Konstruktor
Typeface(FontFamily)
został wycofany. Wcześniej służyło to do wstępnego wczytywania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. W przypadku czcionek do pobrania to wywołanie może blokować działanie przez 10 sekund. Zamiast tego użyjFontFamilyResolver.preload
- Środowisko wykonawcze
fontResource(FontFamily): Typeface
zostało wycofane. Wcześniej służyło to do wstępnego wczytywania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. Zamiast tego użyjFontFamilyResolver.preload
(If8e7c, b/174162090).
- Środowisko wykonawcze
- Możesz teraz określić typ treści dla elementów funkcji
LazyVerticalGrid
- item/items. FunkcjeLazyGridScope
akceptują teraz taki parametr. Podanie takich informacji pomaga logice ponownego wykorzystania kompozycji produktów działać wydajniej i ponownie wykorzystywać treści tylko w przypadku produktów podobnego typu. (I7b355, b/215372836) LazyListLayoutInfo
iLazyGridLayoutInfo
mają teraz nowe właściwości:viewportSize
,orientation
,reverseLayout
(Ifc8ed, b/200920410)- Możesz teraz określić typ treści dla elementów funkcji item/items w LazyColumn/LazyRow – funkcje w LazyListScope akceptują teraz taki parametr. Podanie takich informacji pomaga logice ponownego wykorzystania kompozycji produktów działać wydajniej i ponownie wykorzystywać treści tylko w przypadku produktów podobnego typu. (I26506)
- Konstruktor
SubcomposeLayoutState
akceptującymaxSlotsToRetainForReuse
został wycofany. Zamiast tego jest nowy konstruktor akceptującySubcomposeSlotReusePolicy
– nowy interfejs umożliwiający bardziej szczegółową kontrolę nad tym, które sloty powinny być zachowane do ponownego użycia w przyszłości. (I52c4d) - Dodaje modyfikatory dla WindowInsets, zarówno w przypadku dopełnienia, jak i rozmiaru. Dzięki temu niektóre treści mogą się rozciągać na obszar wcięcia, a treści główne pozostają poza nim. Na przykład windowInsetsPadding może służyć do dodawania dopełnienia do obszaru treści, aby uniknąć obszarów, które mogą być całkowicie lub częściowo zasłonięte. (Id0395, b/213942085)
Poprawki błędów
- Pola tekstowe będą teraz wyświetlane nad klawiaturą, gdy są aktywne i klawiatura jest widoczna, a tryb wprowadzania programowego to
ADJUST_PAN
. (I8eaeb, b/190539358, b/192043120) - Desktop używa lokalnej kompozycji dla
FontFamily.Resolver
- Wycofanie platformy
FontLoader
na komputery - Nowa fabryka
createFontFamilyResolver
na komputerze (I6bbbb, b/174162090)
- Wycofanie platformy
- Klawiatura ekranowa nie migocze już podczas przełączania fokusu między polami tekstowymi. (I1bf50, b/187746439)
- Pola tekstowe nie wymagają już dodatkowego naciśnięcia przycisku Wstecz, gdy wyświetlany jest uchwyt kursora. (Ideb4b, b/205726883)
- Ulepszyliśmy działanie lupy do zaznaczania tekstu, aby było zgodne z lupą platformy. (Idd918, b/206833278)
Wersja 1.2.0-alpha02
26 stycznia 2022 r.
androidx.compose.foundation:foundation:1.2.0-alpha02
i androidx.compose.foundation:foundation-layout:1.2.0-alpha02
zostały opublikowane. Wersja 1.2.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaliśmy
NonRestartableComposable
do metod, które są przeciążeniami istniejących metod bez złożonej logiki. Zmniejsza to liczbę sprawdzania przez kompilator zapamiętywania (równości) w przypadku wszystkich parametrów, które powtarzają się w wywoływanej funkcji wewnętrznej. (I90490) - Dodano modyfikatory
excludeFromSystemGesture
, aby ułatwić dostęp dosetSystemGestureExclusionRects
na Androidzie (I46f07)
Poprawki błędów
- Ulepszyliśmy działanie lupy do zaznaczania tekstu, aby było zgodne z lupą platformy. (Idd918, b/206833278)
LazyColumn
,LazyRow
,Modifier.verticalScroll
i inne kontenery, które korzystają zModifier.scrollable
, obsługują teraz przewijanie za pomocą kółka myszy. (I2b5e1, b/198214718)
Wersja 1.2.0-alpha01
12 stycznia 2022 r.
androidx.compose.foundation:foundation:1.2.0-alpha01
i androidx.compose.foundation:foundation-layout:1.2.0-alpha01
zostały opublikowane. Wersja 1.2.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Do funkcji
LazyColumn
,LazyRow
iLazyVerticalGrid
dodaliśmy nowy parametruserScrollEnabled
, aby umożliwić użytkownikom tymczasowe lub trwałe wyłączenie przewijania inicjowanego przez użytkownika za pomocą gestów dotykowych lub działań związanych z ułatwieniami dostępu. Programowe przewijanie za pomocą metod w stanie będzie nadal dozwolone. (I7eae9, b/201150093) - Dodaj wywołanie zwrotne
onSizeChanged
do modyfikatora lupy. (I6879f) - Widżet lupy jest teraz widoczny podczas przeciągania uchwytów zaznaczenia w
SelectionContainer
. (I30b38, b/139320979)
Poprawki błędów
- Rozwiązanie problemu polegającego na tym, że uchwyt kursora
TextField
nie ukrywał się po przewinięciu poza widok. (I14552, b/208883748)
Aktualizacje zależności
- Teraz zależy od Kotlin
1.6.10
.
Wersja 1.1
Wersja 1.1.1
23 lutego 2022 r.
androidx.compose.foundation:foundation:1.1.1
i androidx.compose.foundation:foundation-layout:1.1.1
zostały opublikowane. Wersja 1.1.1 zawiera te zmiany.
Poprawki błędów
- Rozwiązanie problemu
NullPointerException
na stronieandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462) - Naprawiliśmy awarię spowodowaną zawartością schowka podczas odczytywania danych ze schowka na urządzeniu z Androidem. (I06020, b/197769306)
- Poprawiono układ od prawej do lewej w
LazyVerticalGrid
(aosp/1931080, b/207510535)
Wersja 1.1.0
9 lutego 2022 r.
androidx.compose.foundation:foundation:1.1.0
i androidx.compose.foundation:foundation-layout:1.1.0
zostały opublikowane. Wersja 1.1.0 zawiera te zmiany.
Ważne zmiany od wersji 1.0.0
- Stabilna obsługa efektu przewijania w Androidzie 12
- Ulepszenia rozmiaru obszaru dotyku
- Pamiętaj, że w przypadku Compose 1.0 komponenty Material rozszerzą swój obszar układu, aby spełnić wytyczne dotyczące ułatwień dostępu w interfejsie Material w zakresie rozmiaru docelowego elementu dotykowego. Na przykład docelowy element dotykowy przycisku zostanie powiększony do minimalnego rozmiaru 48x48 dp, nawet jeśli ustawisz mniejszy rozmiar przycisku. Dzięki temu biblioteka Compose Material zachowuje się tak samo jak komponenty Material Design, co zapewnia spójność, jeśli używasz widoków i biblioteki Compose. Ta zmiana zapewnia też, że podczas tworzenia interfejsu za pomocą komponentów Compose Material spełnione zostaną minimalne wymagania dotyczące dostępności docelowych elementów dotykowych.
- Stabilna obsługa kolumny nawigacji
- Przenosi kilka wcześniej eksperymentalnych interfejsów API do wersji stabilnej.
- Obsługa nowszych wersji języka Kotlin
Wersja 1.1.0-rc03
26 stycznia 2022 r.
androidx.compose.foundation:foundation:1.1.0-rc03
i androidx.compose.foundation:foundation-layout:1.1.0-rc03
zostały opublikowane. Wersja 1.1.0-rc03 zawiera te zmiany.
Poprawki błędów
- Zaktualizowano, aby obsługiwać Compose Material w wersji 1.1.0-rc03
Wersja 1.1.0-rc01
15 grudnia 2021 roku
androidx.compose.foundation:foundation:1.1.0-rc01
i androidx.compose.foundation:foundation-layout:1.1.0-rc01
zostały opublikowane. Wersja 1.1.0-rc01 zawiera te zmiany.
Poprawki błędów
- Teraz można przekazywać ujemne przesunięcia przewijania do
LazyListState.scrollToItem()
iLazyListState.animateScrollToItem()
. (Iceb90, b/184252837) - Naprawiono błąd, który powodował brak działań przewijania ułatwień dostępu (I7cbfb).
Wersja 1.1.0-beta04
1 grudnia 2021 r.
androidx.compose.foundation:foundation:1.1.0-beta04
i androidx.compose.foundation:foundation-layout:1.1.0-beta04
zostały opublikowane. Wersja 1.1.0-beta04 zawiera te zmiany.
Nowe funkcje
- Zaktualizowano, aby była zgodna z Kotlinem
1.6.0
Zmiany w interfejsie API
- Usunięto możliwość wartości null w
androidx.core.view
(I7078a, b/204917439) - Dodano eksperymentalne interfejsy API, które umożliwiają wykorzystanie zdarzenia PointerInputchange w całości lub sprawdzenie, czy zostało ono wykorzystane. (I2e59d)
- Wyświetlaj widżet lupy podczas przeciągania kursora lub uchwytów zaznaczenia w polach tekstowych. (I5391e, b/203781358)
Poprawki błędów
- Rozwiązanie problemu polegającego na tym, że uchwyty tekstu nie przesuwały się, gdy zmieniała się widoczność edytora IME. (I25f2e)
Wersja 1.1.0-beta03
17 listopada 2021 r.
androidx.compose.foundation:foundation:1.1.0-beta03
i androidx.compose.foundation:foundation-layout:1.1.0-beta03
zostały opublikowane. Wersja 1.1.0-beta03 zawiera te commity.
Zmiany w interfejsie API
- Do komponentu LazyVerticalGrid dodano obsługę poziomych zakresów. (I7e2fa, b/176758183)
Dodaliśmy eksperymentalną możliwość animowania pozycji elementów list leniwych. W ramach LazyItemScope dostępny jest nowy modyfikator o nazwie
Modifier.animateItemPlacement()
. Przykład użycia: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()) } }
- Jeśli podasz klucz za pomocą
LazyListScope.item
lubLazyListScope.items
, ten modyfikator włączy animacje zmiany kolejności elementów. Oprócz zmiany kolejności elementów animowane będą też wszystkie inne zmiany pozycji spowodowane zdarzeniami takimi jak zmiany układu czy wyrównania. (I59e7b, b/150812265)
- Jeśli podasz klucz za pomocą
Wersja 1.1.0-beta02
3 listopada 2021 r.
androidx.compose.foundation:foundation:1.1.0-beta02
i androidx.compose.foundation:foundation-layout:1.1.0-beta02
zostały opublikowane. Wersja 1.1.0-beta02 zawiera te zmiany.
Poprawki błędów
- Efekty falowania i inne wskaźniki będą teraz opóźniane tylko wtedy, gdy znajdują się w kontenerze
Modifier.scrollable()
, a nie zawsze w przypadku zdarzenia w dół. (Ibefe0, b/203141462) - Dodano eksperymentalny interfejs BringIntoView API, który umożliwia wysyłanie do elementów nadrzędnych żądań przewinięcia, aby wyświetlić element (Ib918d, b/195353459).
Wkład zewnętrzny
- Dodano
Modifier.pointerHoverIcon
(I95f01)
Wersja 1.1.0-beta01
27 października 2021 roku
androidx.compose.foundation:foundation:1.1.0-beta01
i androidx.compose.foundation:foundation-layout:1.1.0-beta01
zostały opublikowane. Wersja 1.1.0-beta01 zawiera te zmiany.
Poprawki błędów
- Dodano eksperymentalny interfejs BringIntoView API, który umożliwia wysyłanie do elementów nadrzędnych żądań przewinięcia, aby wyświetlić element (Ib918d, b/195353459).
Wersja 1.1.0-alpha06
13 października 2021 r.
androidx.compose.foundation:foundation:1.1.0-alpha06
i androidx.compose.foundation:foundation-layout:1.1.0-alpha06
zostały opublikowane. Wersja 1.1.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano przeciążenie bez elementów podrzędnych dla układu, co zwiększa wydajność (Ib0d9a).
SemanticsNodeInteraction.performSemanticsAction
zwraca terazSemanticsNodeInteraction
, na którym wywołano funkcję. (I9e5db)- Dodano
performScrollToNode(matcher: SemanticsMatcher)
, które przewija kontener z możliwością przewijania do treści pasujących do danego dopasowania. (Ic1cb8)
Wersja 1.1.0-alpha05
29 września 2021 r.
androidx.compose.foundation:foundation:1.1.0-alpha05
i androidx.compose.foundation:foundation-layout:1.1.0-alpha05
zostały opublikowane. Wersja 1.1.0-alpha05 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano eksperymentalne wskaźniki historyczne do PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
Poprawki błędów
- Poprawiono obsługę ułatwień dostępu w przypadku elementów z możliwością przewijania (zarówno ładowanych leniwie, jak i nie) w odniesieniu do przewijania (I6cdb0).
Wersja 1.1.0-alpha04
15 września 2021 r.
androidx.compose.foundation:foundation:1.1.0-alpha04
i androidx.compose.foundation:foundation-layout:1.1.0-alpha04
zostały opublikowane. Wersja 1.1.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Wycofano funkcje
performGesture
iGestureScope
, które zostały zastąpione przezperformTouchInput
iTouchInjectionScope
. (Ia5f3f, b/190493367) - Dodano
touchBoundsInRoot
doSemanticsNode
, które zawiera minimalny rozmiar docelowego elementu dotykowego, aby deweloperzy mogli mieć pewność, że docelowe elementy dotykowe spełniają minimalne wymagania dotyczące ułatwień dostępu. (I2e14b, b/197751214)
Poprawki błędów
- Na urządzeniach z Androidem 12 dodano obsługę rozciągania przewijania. (Iccf3c, b/171682480)
Wersja 1.1.0-alpha03
1 września 2021 roku
androidx.compose.foundation:foundation:1.1.0-alpha03
i androidx.compose.foundation:foundation-layout:1.1.0-alpha03
zostały opublikowane. Wersja 1.1.0-alpha03 zawiera te zmiany.
Nowe funkcje
- Zaktualizowano Compose
1.1.0-alpha03
, aby zależał od Kotlin1.5.30
. (I74545)
Zmiany w interfejsie API
- Dodano efekt świecenia podczas przewijania. Dodano nowy eksperymentalny interfejs OverScrollConfiguration API, który umożliwia konfigurowanie efektu wizualnego przewijania poza zakres. Aby wyłączyć efekt overscroll, podaj wartość null. (I0c304, b/171682480)
- AwaitPointerEventScope ma teraz funkcje withTimeout() i withTimeoutOrNull() (I507f0, b/179239764, b/182397793).
- Dodano metodę testową, aby uzyskać przycięte granice. (I6b28e)
- Dodano minimalny rozmiar docelowego elementu dotykowego do ViewConfiguration do użycia w semantyce i danych wejściowych wskaźnika, aby zapewnić dostępność. (Ie861c)
Wersja 1.1.0-alpha02
18 sierpnia 2021 r.
androidx.compose.foundation:foundation:1.1.0-alpha02
i androidx.compose.foundation:foundation-layout:1.1.0-alpha02
zostały opublikowane. Wersja 1.1.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano wersje DpSize dla
Modifier.size
irequiredSize
(I3fc7e, b/194219828)
Wersja 1.1.0-alpha01
4 sierpnia 2021 r.
androidx.compose.foundation:foundation:1.1.0-alpha01
i androidx.compose.foundation:foundation-layout:1.1.0-alpha01
zostały opublikowane. Wersja 1.1.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Zaktualizowana metoda
DrawScope#drawImage
, która pobiera prostokąty źródłowe i docelowe, aby pobierać opcjonalny parametr FilterQuality. Jest to przydatne w przypadku grafiki pikselowej, która ma być pikselowana po powiększeniu. Zaktualizowano funkcję kompozycyjną BitmapPainter + Image, aby przyjmowała też opcjonalny parametr FilterQuality (Ie4fb0, b/180311607) - Pole tekstowe czyści teraz zaznaczenie po naciśnięciu przycisku Wstecz, co jest zgodne z działaniem elementu EditText na Androidzie. (I3ca16, b/174173645)
- Dodaj uchwyt kursora. (I07a82, b/173016579)
Poprawki błędów
- Przewijanie za pomocą działań semantycznych w przypadku list leniwych i zwykłych komponentów przewijania jest teraz animowane (Id9066, b/190742024).
Wkład zewnętrzny
LazyVerticalGrid
akceptuje teraz parametry układu poziomego i pionowego. (If9c92)
Wersja 1.0
Wersja 1.0.5
3 listopada 2021 r.
androidx.compose.foundation:foundation:1.0.5
i androidx.compose.foundation:foundation-layout:1.0.5
zostały opublikowane. Wersja 1.0.5 zawiera te zmiany.
Poprawki błędów
- Naprawiliśmy awarię śledzenia instancji derivedStateOf. (aosp/1792247)
Wersja 1.0.4
13 października 2021 r.
androidx.compose.foundation:foundation:1.0.4
i androidx.compose.foundation:foundation-layout:1.0.4
zostały opublikowane. Wersja 1.0.4 zawiera te zmiany.
Aktualizacje zależności
- Zaktualizowano, aby zależał od Kotlin
1.5.31
Wersja 1.0.3
29 września 2021 r.
androidx.compose.foundation:foundation:1.0.3
i androidx.compose.foundation:foundation-layout:1.0.3
zostały opublikowane. Wersja 1.0.3 zawiera te zmiany.
Aktualizacje zależności
- Zaktualizowano, aby zależał od Kotlin
1.5.30
Wersja 1.0.2
1 września 2021 roku
androidx.compose.foundation:foundation:1.0.2
i androidx.compose.foundation:foundation-layout:1.0.2
zostały opublikowane. Wersja 1.0.2 zawiera te zmiany.
Zaktualizowano, aby obsługiwać wersję 1.0.2
Compose. Compose 1.0.2
jest nadal zgodny z Kotlinem 1.5.21
.
Wersja 1.0.1
4 sierpnia 2021 r.
androidx.compose.foundation:foundation:1.0.1
i androidx.compose.foundation:foundation-layout:1.0.1
zostały opublikowane. Wersja 1.0.1 zawiera te zmiany.
Aktualizacje zależności
- Zaktualizowano, aby zależał od Kotlina w wersji
1.5.21
.
Wersja 1.0.0
28 lipca 2021 roku
androidx.compose.foundation:foundation:1.0.0
i androidx.compose.foundation:foundation-layout:1.0.0
zostały opublikowane. Wersja 1.0.0 zawiera te zmiany.
Główne funkcje wersji 1.0.0
To pierwsza stabilna wersja Compose. Więcej informacji znajdziesz na oficjalnym blogu o wersji Compose.
Znane problemy
Jeśli używasz Androida Studio Bumblebee Canary 4 lub AGP
7.1.0-alpha04
/7.1.0-alpha05
, może wystąpić ten błąd:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Aby to naprawić, tymczasowo zwiększ wartość minSdkVersion do 24 lub więcej w pliku
build.gradle
. Ten problem zostanie rozwiązany w kolejnej wersji Androida Studio Bumblebee i AGP7.1
. (b/194289155)
Wersja 1.0.0-rc02
14 lipca 2021 roku
androidx.compose.foundation:foundation:1.0.0-rc02
i androidx.compose.foundation:foundation-layout:1.0.0-rc02
zostały opublikowane. Wersja 1.0.0-rc02 zawiera te zmiany.
- Zaktualizowano renderowanie obramowań w przypadku ogólnych kształtów, aby rozwiązać problemy ze ścieżkami zdefiniowanymi za pomocą stałych wymiarów. (aosp/1748871, b/191817116)
Wersja 1.0.0-rc01
1 lipca 2021 r.
androidx.compose.foundation:foundation:1.0.0-rc01
i androidx.compose.foundation:foundation-layout:1.0.0-rc01
zostały opublikowane. Wersja 1.0.0-rc01 zawiera te zmiany.
Zmiany w interfejsie API
- Canvas obsługuje teraz parametr contentDescription na potrzeby ułatwień dostępu. (Ib547c)
Poprawki błędów
- Wyłączony przycisk, karta, pola wyboru i ogólnie
Modifier.clickable(enabled=false)
będą blokować kliknięcia, które mają być przekazywane do elementu nadrzędnego. (Ic2c3b, b/183908811)
Wersja 1.0.0-beta09
16 czerwca 2021 r.
androidx.compose.foundation:foundation:1.0.0-beta09
i androidx.compose.foundation:foundation-layout:1.0.0-beta09
zostały opublikowane. Wersja 1.0.0-beta09 zawiera te zmiany.
Zmiany w interfejsie API
- Użytkownik
ManualFrameClock
został usunięty. Jeśli chcesz sterować animacjami, użyjcomposeTestRule.mainClock
. (I3c3e8, b/189951065) - zmiana wyliczenia Role i LiveRegionMode na klasy wbudowane z prywatnym konstruktorem (Id1890);
- KeyboardCapitalization jest przekształcane w klasę wbudowaną. (Id5a1c)
- TextOverflow jest zmieniany na klasę wbudowaną. (I433af)
Poprawki błędów
- Teraz, gdy określisz unikalne klucze dla elementów LazyColumn/Row, pozycja przewijania będzie utrzymywana na podstawie klucza, co oznacza, że jeśli dodasz lub usuniesz elementy przed aktualnie widocznym elementem, element z danym kluczem pozostanie pierwszym widocznym elementem. (Id263f, b/184257857)
- Obecnie kluczową stałą jest @ExperimentalComposeUiApi. Kod korzystający z interfejsu API może deklarować stałe prywatne przed jego ustabilizowaniem. (Ia5d48)
- Dodano IdlingStrategy do AndroidComposeTestRule, z którego mogą korzystać platformy testowe, aby zainstalować alternatywny mechanizm oczekiwania lub osiągania stanu spoczynku. Użyj funkcji
AndroidComposeTestRule.setIdlingStrategyFactory()
przed rozpoczęciem testu, aby zainstalować własną strategię. (I608fa)
Dodano reguły profilu
W tej wersji dodaliśmy reguły profilu do tych modułów kompozycji (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Czym są reguły profilu?
Reguły profilu dla biblioteki są określone w pliku tekstowym
baseline-prof.txt
znajdującym się w katalogusrc/main
lub w odpowiednim katalogu. Plik zawiera regułę w każdym wierszu. Reguła jest w tym przypadku wzorcem dopasowywanym do metod lub klas w bibliotece. Składnia tych reguł jest nadzbiorem formatu profilu ART czytelnego dla człowieka, który jest używany podczas korzystania zadb shell profman --dump-classes-and-methods ...
. Reguły te przyjmują jedną z 2 form, aby kierować reklamy na metody lub klasy.Reguła metody będzie mieć ten wzorzec:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Reguła klasy będzie miała następujący wzorzec:
<CLASS_DESCRIPTOR>
W tym przypadku
<FLAGS>
to co najmniej jeden z tych znaków:H
,S
iP
. Wskazuje on, czy ta metoda powinna być oznaczona jako „Hot”, „Startup” lub „Post Startup”.<CLASS_DESCRIPTOR>
to deskryptor klasy, do której należy kierowana metoda. Na przykład klasaandroidx.compose.runtime.SlotTable
będzie miała deskryptorLandroidx/compose/runtime/SlotTable;
.Symbol
<METHOD_SIGNATURE>
to sygnatura metody, która zawiera jej nazwę, typy parametrów i typy zwracanych wartości. Na przykład metodafun isPlaced(): Boolean
wLayoutNode
ma sygnaturęisPlaced()Z
.Wzorce mogą zawierać symbole wieloznaczne (
**
,*
i?
), dzięki czemu jedna reguła może obejmować wiele metod lub klas.
Do czego służą reguły?
Metoda oznaczona flagą
H
jest metodą „gorącą” i powinna być skompilowana z wyprzedzeniem.Metoda z flagą
S
wskazuje, że jest to metoda wywoływana podczas uruchamiania i powinna być skompilowana z wyprzedzeniem, aby uniknąć kosztów kompilacji i interpretacji metody podczas uruchamiania.Metoda oznaczona flagą
P
jest wywoływana po uruchomieniu.Klasa obecna w tym pliku wskazuje, że jest używana podczas uruchamiania i powinna być wstępnie przydzielona w stercie, aby uniknąć kosztów ładowania klasy.
Jak to działa?
- Biblioteki mogą definiować te reguły, które będą pakowane w artefakty AAR. Gdy aplikacja zawierająca te artefakty zostanie skompilowana, reguły zostaną połączone, a następnie użyte do utworzenia kompaktowego binarnego profilu ART, który jest specyficzny dla aplikacji. ART może następnie wykorzystać ten profil podczas instalowania aplikacji na urządzeniach, aby skompilować z wyprzedzeniem określony podzbiór aplikacji i zwiększyć jej wydajność, zwłaszcza podczas pierwszego uruchomienia. Nie będzie to miało wpływu na aplikacje, które można debugować.
Wersja 1.0.0-beta08
2 czerwca 2021 r.
androidx.compose.foundation:foundation:1.0.0-beta08
i androidx.compose.foundation:foundation-layout:1.0.0-beta08
zostały opublikowane. Wersja 1.0.0-beta08 zawiera te zmiany.
Zmiany w interfejsie API
- Wyliczenie NestedScrollSource zostało zastąpione klasą wbudowaną. (Ie321b, b/187055290)
- Zmieniliśmy sposób używania wyliczeń na klasy wbudowane, aby uniknąć problemów z wyczerpującymi instrukcjami „when” po dodaniu nowych wartości wyliczenia. (I2b5eb)
- Dodaje limit czasu kliknięcia do elementów klikalnych i przełączalnych, aby zapobiec wyświetlaniu efektu fali podczas przewijania lub przeciągania (Ia2704, b/168524931).
- Właściwości semantyczne ContentDescription i Text nie są już pojedynczymi wartościami, ale listami. Dzięki temu można je scalić w takiej postaci, w jakiej są, zamiast je łączyć. Udostępniliśmy też lepsze interfejsy API do testowania, które pozwalają korzystać z tych zmian (Ica6bf, b/184825850).
- Środowisko wykonawcze
Modifier.focusModifier()
zostało wycofane i zastąpione środowiskiemModifier.focusTarget()
(I6c860). - Wyliczenie KeyboardType zostało zastąpione klasą wbudowaną. (I73045, b/187055290)
- Zastąpiono wyliczenie
FocusState
interfejsemFocusState
(Iccc1a, b/187055290). - Wyliczenie ImeAction zostało zastąpione klasą wbudowaną. (I18be5, b/187055290)
AnnotatedString.withAnnotation
są teraz częścią ExperimentalTextApi zamiast ExperimentalComposeApi. (I0cd0a)- Konstruktor TextUnit z TextUnitType jest teraz ExperimentalTextApi zamiast ExperimentalComposeApi.
- Wartość PaddingValues to teraz
@Stable
zamiast@Immutable
(I88c50)
Poprawki błędów
- Naprawiono awarie spowodowane długim naciśnięciem pustego obszaru w niepustym tekście. (I33ab5, b/187437299)
- Wyświetlanie paska narzędzi po wybraniu wszystkich elementów (I495d9, b/185919613)
- Poprawka dotycząca przycinania elementów podrzędnych kontenerów z możliwością przewijania na osi poprzecznej. Problem można było łatwo odtworzyć, jeśli w komponencie LazyRow znajdowały się elementy Card. Teraz cień nie będzie już przycinany. (Icb635, b/186318448)
- Rozwiązaliśmy problem, który powodował, że efekt fali lub inne wskazanie czasami zawieszały się podczas długiego kliknięcia, gdy używano Modifier.combinedClickable (I2298c, b/186223077).
- Teraz
detectDragGesures
,detectVerticalGestures
idetectHorizontalGestures
będą automatycznie wykorzystywać zmianę pozycji, więc nie musisz wywoływać funkcji change.consumePositionChange w wywołaniach zwrotnych onDrag (I42fc4, b/185096350, b/187320697). Modifier.onGloballyPositioned()
została zmieniona tak, aby raportować współrzędne tego modyfikatora w łańcuchu modyfikatorów, a nie współrzędne układu po zastosowaniu wszystkich modyfikatorów. Oznacza to, że kolejność modyfikatorów wpływa teraz na to, jakie współrzędne będą raportowane. (Ieb67d, b/177926591)
Wersja 1.0.0-beta07
18 maja 2021 r.
androidx.compose.foundation:foundation:1.0.0-beta07
i androidx.compose.foundation:foundation-layout:1.0.0-beta07
zostały opublikowane. Wersja 1.0.0-beta07 zawiera te zmiany.
Zmiany w interfejsie API
- Wprowadzono logikę wstępnego pobierania następnego widocznego elementu w przypadku komponentów LazyColumn/Row (I8a4bc, b/184940225).
- Dodano uchwyt zaznaczenia klipu (Iff80d, b/183408447)
Poprawki błędów
- Komponenty LazyColumn i LazyRow będą teraz utrzymywać do 2 wcześniej widocznych elementów w stanie aktywnym (nieusuniętym), nawet jeśli zostały już przewinięte. Dzięki temu komponent może ponownie wykorzystywać aktywne podkompozycje, gdy będziemy musieli utworzyć nowy element, co poprawia wydajność przewijania. (Ie5555)
- Usuń paintBackground. (I38660)
- Rysuj tło zaznaczenia za pomocą DrawScope. (I73c61, b/186674472)
- Naprawiliśmy regresję w wersji beta06, która wpływała na wiersze i kolumny korzystające z układów spacedBy do rozmieszczania ważonych elementów podrzędnych. (Ifaf8c, b/187326588)
Wersja 1.0.0-beta06
5 maja 2021 roku
androidx.compose.foundation:foundation:1.0.0-beta06
i androidx.compose.foundation:foundation-layout:1.0.0-beta06
zostały opublikowane. Wersja 1.0.0-beta06 zawiera te zmiany.
Zmiany w interfejsie API
- Rozwiązywanie konfliktów z gestami nawigacyjnymi (I1145e)
- Dodano interfejsy API ułatwień dostępu CollectionInfo i CollectionItemInfo, które umożliwiają oznaczanie kolekcji i jej elementów dla usług ułatwień dostępu (Id54ef, b/180479017).
- Dodano
SemanticsActions.ScrollToIndex
, aby przewijać listę z elementami indeksowanymi do elementu o określonym indeksie, orazSemanticsProperties.IndexForKey
, aby uzyskać indeks elementu na liście z elementami kluczowymi. Oba działania są realizowane przez LazyList.- Dodano funkcję
SemanticsNodeInteraction.performScrollToIndex
, która przewija listę do podanego indeksu, oraz funkcjęSemanticsNodeInteraction.performScrollToKey
, która przewija listę do elementu o podanym kluczu. (I4fe63, b/178483889, b/161584524)
- Dodano funkcję
- Obsługa zapisywania AnnotatedString w TextFieldValue.Saver. Dodano funkcje narzędziowe addTtsAnnotation i withAnnotation do klasy AnnotatedString.Builder (I8cbdc, b/178446304).
- Do parametru
PaddingValues(horizontal, vertical)
dodano domyślne wartości parametru0.dp
(I05571, b/181336792)
Poprawki błędów
- Elementy podrzędne wiersza i kolumny z symbolem
weight(fill = false)
nie powodują już wypełnienia przez element nadrzędny całej dostępnej przestrzeni osi głównej. (Ied94d, b/186012444, b/184355105)
Wersja 1.0.0-beta05
21 kwietnia 2021 r.
androidx.compose.foundation:foundation:1.0.0-beta05
i androidx.compose.foundation:foundation-layout:1.0.0-beta05
zostały opublikowane. Wersja 1.0.0-beta05 zawiera te zmiany.
Zmiany w interfejsie API
- Interfejs FlingBehavior jest teraz oznaczony jako @Stable. Wszystkie implementacje powinny być zgodne z umową
@Stable
. (I93354, b/184830577)
Poprawki błędów
- Naprawiono działania przewijania w
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
iaccessibilityActionScrollDown
. Zamiast przewijać do końca obszaru przewijania, będzie teraz przewijać o jeden ekran w danym kierunku. (Ieccb0) - Pliki AndroidManifest z ui-test-manifest i ui-tooling-data są teraz zgodne z Androidem 12 (I6f9de, b/184718994).
Wersja 1.0.0-beta04
7 kwietnia 2021 r.
androidx.compose.foundation:foundation:1.0.0-beta04
i androidx.compose.foundation:foundation-layout:1.0.0-beta04
zostały opublikowane. Wersja 1.0.0-beta04 zawiera te zmiany.
Zmiany w interfejsie API
- Zmień nazwy funkcji hideSoftwareKeyboard i showSoftwareKeyboard w klasie SoftwareKeyboardController na
hide()
ishow()
.- Udostępnia pełny interfejs CompositionLocal dla LocalSoftwareKeyboardController, co umożliwia jego ustawienie (szczególnie przydatne w testach) (I579a6).
TextOverflow.Visible
zostaje wprowadzony. (Ic8f89)- Usunęliśmy publiczne instancje
RowScope
,ColumnScope
,BoxScope
iBoxWithConstraintsScope
. (I4e83e, b/181869067)
Poprawki błędów
- Rozwiązaliśmy problem z nieprawidłowym pozycjonowaniem elementów
LazyColumn
/LazyRow
znajdujących się na krawędziach po szybkim przesunięciu (Ie4d13, b/183877420). Przed tą zmianą lokalne funkcje kompozycyjne można było pominąć na podstawie ich parametrów. Po tej zmianie żadne lokalne funkcje kompozycyjne nie będą pomijane. Ta zmiana została wprowadzona, ponieważ funkcje lokalne często i zgodnie z oczekiwaniami przechwytują parametry z funkcji nadrzędnej, a ich pomijanie jest częstym źródłem błędów.
Podsumowując, rozważmy przykład:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }
Przed tą zmianą funkcja
ShowCount
zawsze była pomijana, nawet po zaktualizowaniu parametrucount
. Ta informacja jest nieaktualna. (I5648a)
Wersja 1.0.0-beta03
24 marca 2021 r.
androidx.compose.foundation:foundation:1.0.0-beta03
i androidx.compose.foundation:foundation-layout:1.0.0-beta03
zostały opublikowane. Wersja 1.0.0-beta03 zawiera te zmiany.
Zmiany w interfejsie API
- Środowisko wykonawcze
DefaultMonotonicFrameClock
zostało wycofane. Wywołanie funkcjiwithFrameNanos
lubRecomposer.runRecomposeAndApplyChanges
bez argumentuMonotonicFrameClock
spowoduje teraz zgłoszenie błęduIllegalStateException
. (I4eb0d)
Poprawki błędów
- Funkcja
FlingBehavior.performFling()
jest teraz wywoływana nawet wtedy, gdy prędkość wynosi 0 (I0b6e5, b/181237123).
Wersja 1.0.0-beta02
10 marca 2021 r.
androidx.compose.foundation:foundation:1.0.0-beta02
i androidx.compose.foundation:foundation-layout:1.0.0-beta02
zostały opublikowane. Wersja 1.0.0-beta02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano kilka drobnych optymalizacji w logice pomiaru LazyColumn (Ic6889).
- Dodano nowy interfejs API
LocalSoftwareKeyboardController
composition local API, który zastępuje poprzedni interfejs SoftwareKeyboardController w polu TextField. (I5951e, b/168778053) - Dodano nowy interfejs API
LocalSoftwareKeyboardController
composition local API, który zastępuje poprzedni interfejs SoftwareKeyboardController w polu TextField. (I84472, b/168778053)
Poprawki błędów
- Wymuszanie ograniczeń dotyczących publicznego korzystania z eksperymentalnych interfejsów API (I6aa29, b/174531520)
Wersja 1.0.0-beta01
24 lutego 2021 r.
androidx.compose.foundation:foundation:1.0.0-beta01
i androidx.compose.foundation:foundation-layout:1.0.0-beta01
zostały opublikowane. Wersja 1.0.0-beta01 zawiera te zmiany.
To pierwsza wersja Compose 1.0.0 w wersji beta.
Zmiany w interfejsie API
- Dodano wywołanie zwrotne onStart do
detectDragGestures
(I67269, b/179995594) - Modyfikatory rozmiaru do wartości wewnętrznych nie są już eksperymentalne. (I15744)
- Usunięto asercje dp (I798d2)
- Usunięto wywołanie zwrotne SoftwareKeyboardController ze wszystkich pól tekstowych. Wkrótce zostanie ono zastąpione nowym interfejsem API. (Iae869, b/168778053)
- Usługa MeasureBlocks została przekształcona w MeasurePolicy, która zyskała zabawny interfejs. Interfejsy API układu zostały zaktualizowane i uproszczone, aby korzystać z funkcji MeasurePolicy. (Icab48, b/167662468, b/156751158)
InteractionState
zostało zastąpione przez[Mutable]InteractionSource
- Interfejsy odpowiadają za emitowanie i zbieranie zdarzeń interakcji.
- Zamiast przekazywać wartość
interactionState = remember { InteractionState() }
do komponentów takich jakButton
iModifier.clickable()
, użyj wartościinteractionSource = remember { MutableInteractionSource() }
. - Zamiast:
Interaction.Pressed in interactionState
używaj funkcji rozszerzających w klasie InteractionSource, np. InteractionSource.collectIsPressedAsState(). - W przypadku złożonych przypadków użycia możesz użyć InteractionSource.interactions, aby obserwować strumień interakcji. Więcej informacji znajdziesz w dokumentacji i przykładach dotyczących InteractionSource.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Usunięto wycofane metody LayoutCoordinates. Zamiast właściwości positionInParent i boundsInParent używaj funkcji (I580ed, b/169874631, b/175142755)
- Utworzono nową klasę TextInputSession dla sesji wprowadzania danych z komponentów tekstowych niskiego poziomu, takich jak CoreTextField. (I8817f, b/177662148)
- Komponent Placeable udostępnia teraz właściwość measuredSize, która reprezentuje rozmiar, do którego został zmierzony układ podrzędny. Ten rozmiar może nie spełniać ograniczeń pomiarowych. (Ib2729, b/172560206, b/172338608)
- Dodaj modyfikator selectionGroup, który umożliwia oznaczanie kolekcji kart lub przycisków opcji na potrzeby ułatwień dostępu (Ie5c29).
Dodanie funkcji LazyListState.animateScrollToItem
Ta metoda umożliwia płynne przewijanie do określonego elementu na liście. (I4bfd7)
Funkcja ScrollableState.smoothScrollBy() została zmieniona na animateScrollBy(). Funkcja LazyListState.snapToItemIndex() została zmieniona na scrollToItem(). Funkcja ScrollState.smoothScrollTo() została zmieniona na animateScrollTo() (I35ded).
Modifier.zoomable został zastąpiony przez Modifier.transformable. Dodano funkcje smoothPanBy i smoothRotationBy. (Ifc32b, b/175294473)
Pole
defaultFactory
dlacompositionLocalOf
istaticCompositionLocalOf
jest teraz wymagane zamiast opcjonalnego.Ta zmiana usuwa potencjalny błąd typu w przypadku typów, które nie mogą mieć wartości null, a dla których nie podano domyślnej funkcji fabrycznej. Wcześniej w przypadku typu, który nie dopuszcza wartości null, zwracana była referencja null.
W przypadku typów dopuszczających wartość null rozważ podanie wartości
{ null }
jako domyślnej funkcji fabrycznej.Nie zalecamy używania zmiennych lokalnych z typami, które nie dopuszczają wartości null, chyba że można podać rozsądną wartość domyślną. Jeśli nie ma sensownej wartości domyślnej, funkcja lambda
defaultFactory
powinna zgłosić wyjątek. Wyjątek oznacza jednak, że konsumenci lokalnego będą mieli niejawną zależność od jego dostarczenia, która nie jest wymuszana przez system typów. (Ifbd2a)Zmieniono wartość
Indication#createIndication()
naIndication#rememberUpdatedIndication(InteractionState)
i usunięto parametrInteractionState
z funkcji IndicationInstance#drawIndication()
. Klasa IndicationInstance powinna być odpowiedzialna tylko za rysowanie efektów wizualnych, a nie za uruchamianie animacji ani zapisywanie stanu w odpowiedzi na zmiany w klasie InteractionState. Animacje i zapisy stanu powinny następować w ciągurememberUpdatedIndication()
. Parametrindication
w plikuModifier.indication
został też zmieniony na wymagany. (Ic1764, b/152525426)Działania związane z tekstem automatycznie sprawdzają teraz ostrość (I13777, b/179648629)
Usunięto
runBlockingWithManualClock
(I15cdc, b/179664814)Pozycja przewijania w funkcjach Modifier.verticalScroll()/horizontalScroll() jest teraz reprezentowana przez liczby całkowite (I81298).
Pakiety metod smoothScrollBy i scrollBy zmieniono na
androidx.compose.foundation.gestures.*
(I3f7c1, b/175294473)Klasa FlingConfig została zmieniona na FlingBehavior i umożliwia teraz dostosowywanie animacji zawieszenia zamiast wstępnie zdefiniowanych zanikań. (I02b86, b/175294473)
Zmieniliśmy nazwy modyfikatorów rozmiaru. Zmieniono nazwy modyfikatorów Modifier.width/height/size na requiredWidth/requiredHeight/requiredSize. Zmieniono nazwy modyfikatorów Modifier.preferredWidth/preferredHeight/preferredSize na width/height/size. (I5b414)
defaultMinSizeConstraints zmieniono na defaultMinSize. (I4eaae)
Usunięto Modifier.tapGestureFilter. Zamiast niej używaj zasady
Modifier.pointerInput { detectTapGestures(...) }
. (I266ed, b/175294473)częściowe wykorzystanie zostało usunięte z systemu wprowadzania za pomocą wskaźnika. Zalecanym sposobem koordynowania częściowego zużycia jest Modifier.nestedScroll. (Ie9c9b)
Orientacja została przeniesiona do pakietu podstawowego. VelocityTracker został przeniesiony z ui.gesture do ui.input.pointer. (Iff4a8, b/175294473)
Klasy AnimationClockObservable i ich podklasy zostały usunięte. Klasa AnimatedFloat została usunięta. (Icde52, b/177457083)
Funkcje drawerState.open() i drawerState.close() są teraz funkcjami zawieszającymi. Aby wywołać te funkcje, użyj funkcji rememberCoroutineScope() w zakresie kompozycji (I16f60, b/175294473).
Element Providers został zmieniony na CompositionLocalProvider
- Konstruktor Composition nie akceptuje już parametru key i został wycofany.
- currentCompositeKeyHash został przekształcony w właściwość najwyższego poziomu typu „composable”, a nie w funkcję najwyższego poziomu typu „composable”.
- Klasy CompositionData i CompositionGroup zostały przeniesione do przestrzeni nazw androidx.compose.runtime.tooling.
- Typ ComposableLambda został zmieniony z klasy konkretnej na interfejs i nie ma już parametrów typu.
- ComposableLambdaN stał się interfejsem zamiast konkretnej klasy i nie ma już parametrów typu.
- Funkcja snapshotFlow została przeniesiona do przestrzeni nazw androidx.compose.runtime
- metoda scalania SnapshotMutationPolicy nie jest już eksperymentalna;
- Usunęliśmy funkcję
@TestOnly
clearRoots najwyższego poziomu. Nie jest już potrzebny. - Funkcje keySourceInfoOf i resetSourceInfo zostały usunięte. Nie są już potrzebne.
- Funkcja Composer.collectKeySourceInformation została usunięta. Nie jest już potrzebny.
- Usunęliśmy metody isJoinedKey, joinedKeyLeft i joinedKeyRight. Nie są już potrzebne.
- Różne interfejsy API najwyższego poziomu zostały przeniesione i zreorganizowane w różnych plikach. Ze względu na semantykę klasy plików w języku Kotlin spowoduje to przerwanie zgodności binarnej, ale nie zgodności kodu źródłowego, więc nie powinno stanowić problemu dla większości użytkowników.
- (I99b7d, b/177245490)
Zmodyfikowano element Modifier.scrollable. Zamiast klasy ScrollableController używa teraz interfejsu Scrollable (I4f5a5, b/174485541, b/175294473).
Modifier.draggable akceptuje teraz DraggableState zamiast zwykłej lambdy. Stan możesz utworzyć za pomocą
rememberDraggableState { delta -> }
, aby uzyskać takie samo działanie jak wcześniej (Ica70f, b/175294473).Dodano modyfikatory requiredWidth(IntrinsicSize) i requiredHeight(IntrinsicSize) do wymaganych rozmiarów do rozmiarów wewnętrznych. (I0a6b4)
Wycofany element
emptyContent()
został usunięty. Zamiast niej używaj zasady{}
. (Idb33f, b/179432510)Usunięto niektóre wcześniej wycofane interfejsy API (Ice5da, b/178633932).
Poprawki błędów
- Dodano nowy lokalny interfejs API LocalSoftwareKeyboardController, który zastępuje poprzedni interfejs SoftwareKeyboardController w polu TextField. (I658b6, b/168778053)
Wersja 1.0.0-alpha12
10 lutego 2021 r.
androidx.compose.foundation:foundation:1.0.0-alpha12
i androidx.compose.foundation:foundation-layout:1.0.0-alpha12
zostały opublikowane. Wersja 1.0.0-alpha12 zawiera te zmiany.
Zmiany w interfejsie API
- Funkcja Modifier.pointerInput wymaga teraz kluczy pamięci, aby wskazywać, kiedy korutyna wykrywania danych wejściowych wskaźnika powinna zostać ponownie uruchomiona w przypadku nowych zależności. (I849cd)
- Aktualizacja testowania: funkcja hasText() będzie sprawdzać zarówno tekst wprowadzony, jak i tekst etykiety, podpowiedzi lub symbolu zastępczego w polu tekstowym (Iab803)
- Dodano PaddingValues.Absolute, którego można używać w interfejsach API akceptujących PaddingValues. (Ia5f30)
- onImeActionPerformed jest wycofana. Zamiast niej używaj KeyboardActions (If0bbd, b/179071523)
- Aby lepiej dopasować konwencje nazewnictwa do ImageBitmap i ImageVector, zmieniliśmy nazwę ImagePainter na BitmapPainter, aby była podobna do VectorPainter. (Iba381, b/174565889)
- Ulepszone interfejsy API testów podłańcuchów z podłańcuchem jako argumentem (Icbe78)
- Wprowadzono element
InfiniteAnimationPolicy
kontekstu współprogramu, który będzie stosowany w animacjach nieskończonych. Domyślnie nie jest instalowana żadna zasada, z wyjątkiem testów przeprowadzanych w projekcieComposeTestRule
. (I50ec4, b/151940543) - Funkcje Animatable.snapTo i Animatable.stop są teraz funkcjami zawieszania (If4288).
- Funkcja ComponentActivity.setContent została przeniesiona do androidx.activity.compose.setContent w module androidx.activity:activity-compose. (Icf416)
- Metody destrukcji i copy() zostały usunięte z kilku klas, w których były rzadko używane. (I26702, b/178659281)
Dodaliśmy obsługę kluczy niestandardowych w przypadku elementów LazyColumn i LazyRow. Dzięki temu możemy inteligentniej zarządzać ponownym zamawianiem produktów. Dlatego stan zapisany w blokach remember {} będzie przenoszony razem z elementem, gdy zmienisz kolejność elementów lub usuniesz element ze środka.
LazyColumn { items(users, key = { user -> user.id }) { ... } }
Zmieniono funkcję Indication#createInstance, aby była funkcją @Composable, a zmieniono LocalIndication, aby zawierała Indication, a nie () -> Indication. (I5eeea, b/157150564)
Tekst
Constraints.enforce
został zastąpiony tekstemConstraints.constrain
. (I8b8ea)Funkcja loadFontResource została wycofana. Zamiast nich używaj fontResource. imageResource, loadImageResource, vectorResource i loadVectorResource zostały wycofane. Zamiast tego użyj painterResource. (I6b809)
Ze względu na wydajność semantyka ScrollAxisRange przyjmuje teraz lambdy zwracające wartości zmiennoprzecinkowe zamiast bezpośrednich wartości zmiennoprzecinkowych. (If4a35, b/178657186)
Dodano semantykę EditableText, aby oznaczyć edytowalny tekst wejściowy pola tekstowego na potrzeby ułatwień dostępu, oraz odpowiednie metody testowania, aby sprawdzić semantykę (I8e07a).
Modyfikator clickable nie obsługuje już podwójnego i długiego kliknięcia. Aby uzyskać tę funkcjonalność, użyj Modifier.combinedClickable. (Iafad1)
Nazwa funkcji toIntPx() została zmieniona na roundToPx(). (I9b7e4, b/173502290)
Zmieniliśmy nazwę IntBounds na IntRect i ulepszyliśmy interfejs API. (I1f6ff)
Modyfikator Modifier.dragGestureFilter został wycofany. Zamiast niej używaj zasady
Modifier.pointerInput { detectDragGestures (...)}
. Możesz też użyć modyfikatora Modifier.draggable do przeciągania w jednej osi (I0ba93, b/175294473).Zmieniliśmy nazwę Ambients, aby pasowała do zmiany nazwy Ambient -> CompositionLocal. Komponenty Ambients miały wcześniej nazwy AmbientFoo, a teraz komponenty CompositionLocals mają nazwy LocalFoo. (I2d55d)
Zaznaczenie zostało przeniesione do warstwy podstawowej. (I7892b)
Podobnie jak wcześniej usunęliśmy funkcję
state { 0 }
i teraz promujemy używanie funkcjiremember { mutableStateOf(0) }
, usuniemy funkcjęsavedInstanceState { 0 }
. Zamiast tego użyjrememberSaveable { mutableStateOf(0) }
. Będzie on automatycznie zapisywać i przywracać stan, jeśli typ użyty w MutableState można zapisać w obiekcie Bundle. Jeśli wcześniej przekazywano niestandardowy obiekt zapisujący, teraz trzeba użyć nowego przeciążenia funkcji rememberSaveable, które ma parametrstateSaver
. Użycie będzie wyglądać tak:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004)Dodano semantykę haseł na potrzeby ułatwień dostępu (I231ce)
Dodano ProgressBarRangeInfo.Indeterminate, aby oznaczać nieokreślone paski postępu na potrzeby ułatwień dostępu (I6fe05)
Czas odtwarzania animacji jest teraz ujednolicony do nanosekund (If776a)
Adnotacja @ComposableContract została wycofana na rzecz 3 bardziej szczegółowych adnotacji.
@ComposableContract(restartable = false)
jest teraz@NonRestartableComposable
@ComposableContract(readonly = true)
jest teraz@ReadOnlyComposable
@ComposableContract(preventCapture = true)
jest teraz@DisallowComposableCalls
@ComposableContract(tracked = true)
został usunięty. (I60a9d)Narzędzia
emptyContent()
i(@Composable () -> Unit).orEmpty()
zostały wycofane, ponieważ nie mają już pozytywnego wpływu na skuteczność ani wartość (I0484d).Recomposery można teraz zamknąć. Zamknięte kompozytory będą kontynuować rekompozycję, dopóki nie zostaną ukończone podrzędne korutyny kompozycji. Funkcja Recomposer.shutDown została zmieniona na cancel, aby odróżnić ją od funkcji close. (Ib6d76)
Interfejsy API związane z LazyVerticalGrid są oznaczone jako eksperymentalne (Ia53e3, b/178519862).
Funkcja rememberSavedInstanceState() została zmieniona na rememberSaveable() i przeniesiona do pakietu androidx.compose.runtime.saveable. (I1366e, b/177338004)
Klasa RestorableStateHolder została zmieniona na SaveableStateHolder i przeniesiona do pakietu androidx.compose.runtime.saveable. Metoda wewnętrzna RestorableStateProvider została zmieniona na SaveableStateProvider. Typ ogólny został usunięty, więc jako klucz możesz przekazać dowolny typ. Adnotacja eksperymentalna nie jest już potrzebna. (I0902e, b/174598702)
Funkcje Saver, listSaver(), mapSaver() i autoSaver zostały przeniesione z pakietu androidx.compose.runtime.savedinstancestate do pakietu androidx.compose.runtime.saveable (I77fe6).
Artefakt androidx:compose:runtime:runtime-saved-instance-state został zmieniony na androidx:compose:runtime:runtime-saveable (I6dcac)
Wiele wycofanych interfejsów API z pakietu ui zostało usuniętych. (I2f2dc)
Artefakt compose:runtime-dispatch został wycofany. Klasa MonotonicFrameClock znajduje się teraz w pakiecie compose:runtime, a klasa AndroidUiDispatcher – w pakiecie compose:ui. (Ib5c36)
Parametry w klasach RounderCornerShape, CutCornerShape i CornerBasedShape zostały zmienione z left/right na start/end, aby obsługiwać automatyczne odbijanie kształtu w kierunku od prawej do lewej. Kształty AbsoluteRounderCornerShape i AbsoluteCutCornerShape zostały wprowadzone w przypadkach, gdy automatyczne dublowanie nie jest pożądane. (I61040, b/152756983)
Właściwość canDrag została usunięta z modyfikatora scrollable. (Id66e7, b/175294473)
Interfejs API, na który jest kierowana wtyczka kompilatora Compose, został przekształcony tak, aby używać interfejsu zamiast klasy konkretnej. Interfejs nie używa już też parametru typu.
Jest to zmiana wewnętrzna, która nie powinna wpływać na zgodność kodu źródłowego, ale jest zmianą binarną. (I3b922, b/169406779)
Usunięto Modifier.scaleGestureFilter. Zamiast tego użyj Modifier.zoomable. Możesz też użyć
Modifier.pointerInput { detectMultitouchGestures { ... }}
(Id5da1, b/175294473)Właściwość AnimatedValue/Float została wycofana. Zamiast tego użyj Animatable. (I71345, b/177457083)
- Usunięto CoreText i CoreTextField z publicznego interfejsu API
- Usunięto wycofane przeciążenie SelectionContainer (I99c19)
Usunięcie wycofanych funkcji przewijania bez zawieszania Kontynuując zmiany z ostatniej wersji, całkowicie usunęliśmy funkcje przewijania bez zawieszania. Zastąp je funkcjami zawieszania o tych samych nazwach. Zakres współprogramu można uzyskać za pomocą funkcji rememberCoroutineScope(). (I3d39c, b/178169563)
androidx.compose.foundation.layout.ConstraintLayout zostało wycofane na rzecz androidx.constraintlayout.compose.ConstraintLayout. Musisz dodać zależność od
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01
. (I87adc)Funkcje tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter i pressIndicaitonGestureFilter zostały wycofane. Zamiast tego użyj funkcji Modifier.clickable lub Modifier.pointerInput z funkcją detectTapGestures. (I6baf9, b/175294473)
Użytkownik
Recomposer.current()
został usunięty. [Abstract]ComposeView now default to lazily created, window-scoped Recomposers driven by the ViewTreeLifecycleOwner for the window. Ponowne komponowanie i tyknięcia animacji oparte na withFrameNanos są wstrzymywane, gdy cykl życia hosta jest zatrzymany. (I38e11)Właściwość Recomposer.runningRecomposers udostępnia teraz globalny obiekt StateFlow tylko do odczytu RecomposerInfo, który umożliwia obserwowanie stanu bieżącej kompozycji w procesie. Zalecamy używanie tego interfejsu API zamiast Recomposer.current(), który jest obecnie wycofany. (If8ebe)
Wersja 1.0.0-alpha11
28 stycznia 2021 roku
androidx.compose.foundation:foundation:1.0.0-alpha11
i androidx.compose.foundation:foundation-layout:1.0.0-alpha11
zostały opublikowane. Wersja 1.0.0-alpha11 zawiera te zmiany.
Zmiany w interfejsie API
Wycofanie funkcji scrollBy, która nie wstrzymuje działania, i usunięcie funkcji scrollTo, która nie wstrzymuje działania
Zalecamy teraz używanie funkcji zawieszania do kontrolowania przewijania i oczekiwania na jego zakończenie. W ramach tej zmiany wycofujemy lub usuwamy wersje tych funkcji, które nie powodują zawieszenia. (Ie9ced)
Wycofanie funkcji smoothScrollBy, która nie jest funkcją zawieszającą Zalecamy teraz używanie funkcji zawieszających do sterowania przewijaniem i oczekiwania na zakończenie przewijania. W ramach tej zmiany wycofujemy wersje tych funkcji, które nie są zawieszane. (I12880)
Do komponentów Obraz i Ikona dodaliśmy parametr opis treści. Służy do przekazywania opisu usługom ułatwień dostępu (I2ac4c).
Komponent BasicTextField otrzymał nowy parametr o nazwie „decorationBox”. Umożliwia dodawanie do pola tekstowego elementów dekoracyjnych, takich jak ikony, symbole zastępcze czy etykiety, oraz zwiększanie obszaru docelowego kliknięcia. (I16996)
Usunięto parametr canDrag z funkcji Modifier.draggable (Ic4bec, b/175294473)
Usunięto funkcję AnimatedFloat.fling, która akceptuje FlingConfig. Zamiast niej użyj metody suspend Animatable.animateDecay. (I4659b, b/177457083)
Usunięto nauczyciela
data class
z tych zajęć:- InlineTextContent
- LocaleList
- (I605c7)
elementy klikalne, przełączane i możliwe do zaznaczenia można teraz tworzyć poza kompozycją (I0a130, b/172938345, b/175294473);
Komponenty ScrollableColumn i ScrollableRow zostały wycofane. Używanie komponentu ScrollableColumn jest mniej wydajne niż LazyColumn w przypadku dużych treści przewijanych, ponieważ w przypadku LazyColumn możemy tylko tworzyć, mierzyć i rysować widoczne elementy. Aby zapobiec nieefektywnemu korzystaniu z tej funkcji, zdecydowaliśmy się wycofać ScrollableColumn i ScrollableRow oraz promować zamiast nich LazyColumn i LazyRow. Użytkownicy mogą nadal decydować, że nie potrzebują leniwego zachowania, i używać modyfikatorów bezpośrednio, np. Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083).
Nowa metoda fabryczna
items(count: Int)
dla zakresu LazyColumn/LazyRow/LazyVerticalGrid.items(items: List)
iitemsIndexed(items: List)
są teraz funkcjami rozszerzającymi, więc musisz je importować ręcznie, gdy są używane. Nowe przeciążenia rozszerzeń dla tablic: items(items: Array) i itemsIndexed(Array) (I803fc, b/175562574)Usunięto wycofany element AbsoluteArrangement. (Iffa96, b/177641870)
Do komponentu Box dodano parametr propagateMinConstraints, który określa, czy przychodzące minimalne ograniczenia powinny być przekazywane do treści komponentu Box. Wartość domyślna to fałsz. (I0125b, b/152613457)
Poprawki błędów
- Funkcje onCommit, onDispose i onActive zostały wycofane na rzecz interfejsów SideEffect i DisposableEffect API (If760e).
- Funkcja WithConstraints została przekształcona w BoxWithConstraints i przeniesiona do pakietu foundation.layout. (I9420b, b/173387208)
Zmiany w funkcjach fabrycznych dla Font/FontFamily/Typeface
- Dodano funkcje fabryczne rozpoczynające się wielką literą
- Wycofanie poprzednich funkcji fabrycznych z małymi literami na początku
- Nowe funkcje fabryczne zwracają FontFamily zamiast podklas
- Ukryte konstruktory podklas, dzięki czemu można je tworzyć tylko za pomocą funkcji fabrycznych.
- Zmiana nazwy Font.asFontFamily na Font.toFontFamily
- (I42aa7)
Wprowadzono
ComposeContentTestRule
, która rozszerzaComposeTestRule
i definiujesetContent
, która została usunięta zComposeTestRule
. Dodano metodę fabrycznącreateEmptyComposeRule()
, która zwraca obiektComposeTestRule
i nie uruchamia aktywności. Użyj tej opcji, gdy chcesz uruchomić aktywność podczas testu, np.za pomocąActivityScenario.launch
(I9d782, b/174472899).Funkcja animateAsState została zmieniona na animateFooAsState, gdzie Foo to typ animowanej zmiennej, np. Float, Dp, Offset itp. (Ie7e25)
Gęstość jest teraz zakresem odbiornika w przypadku interfejsów Arrangement. (I18aad)
TextFieldValue akceptuje AnnotatedString. Jest to jednak zmiana tylko w interfejsie API, a edycja tekstu w wielu stylach nie została jeszcze wdrożona.
- Usunięto parametr
initial
z parametrów konstruktora EditingBuffer. (I326d5)
- Usunięto parametr
Funkcje invalidate i compositionReference() zostały wycofane na rzecz funkcji currentRecomposeScope i rememberCompositionReference. (I583a8)
Klasa AnnotatedString została zmieniona tak, aby rozszerzać klasę kotlin.CharSequence. Dlatego length i subSequence są teraz funkcjami instancji, a funkcje rozszerzające zostały usunięte. (Iaf429)
Wartości Duration i Uptime zostaną zastąpione wartościami Long milliseconds, a ten krok usuwa zależność danych wejściowych wskaźnika od tych klas. (Ia33b2, b/175142755, b/177420019)
RememberObserver zastępuje CompositionLifecycleObserver, który jest teraz wycofany.
RememberObserver
zastępujeCompositionLifecycleObserver
, ale ma zmodyfikowaną semantykę i zmienione nazwy metod. Przejście na nowy interfejs API można przeprowadzić mechanicznie w przypadku obiektów, które są zapamiętywane tylko raz. Jest to zalecana praktyka i nadal nią pozostanie. Jeśli jednak odwołanie zostało zapamiętane w kompozycji więcej niż raz, funkcjaonRemembered
jest wywoływana dla każdego odwołania, a funkcjaonEnter
jest wywoływana tylko raz.onEnter
było wywoływane wielokrotnie, jeśli obiekt był używany w podkompozycjach, np.WithConstraints
iScaffold
, co sprawiało, że pojedyncze wywołanieonEnter
było niewiarygodne i zostało usunięte w przypadkuRememberObserver
.RememberObserver
dodajeonAbandoned
, które jest wywoływane, jeśli instancjaRememberObserver
jest zwracana z wywołania zwrotnego przekazanego doremember
, ale nie została zapamiętana w stanie kompozycji, a więc nigdy nie zostanie wywołana funkcjaonRemembered
. Może to nastąpić, jeśli wyjątek zakończy kompozycję przed jej ukończeniem lub kompozycja zostanie odrzucona, ponieważ stan, dla którego była tworzona, nie jest już aktualny lub nie jest już potrzebny. Jeśli instancjaRememberObserver
po rekomendacji pojedynczego odwołania powyżej śledzi zasób zewnętrzny, zarównoonForgotten
, jak ionAbandoned
wskazują, że zasób nie jest już potrzebny. Jeśli obiekt śledzi pracę rozpoczętą lub zasoby przydzielone wonRemembered
,onAbandoned
można zignorować, ponieważ nie zostanie wywołany, jeśli zostanie wywołanyonRemembered
. (I02c36)Zmiana nazwy TransformedText.transformedText na TransformedText.text
- TransformedText nie jest już klasą danych (Ie672a)
Te klasy nie są już klasami danych:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- Grubość czcionki
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
Usunięto eksperymentalne metody monotonicFrameAnimationClockOf (Ib753f, b/170708374)
Wycofaliśmy metody globalnych współrzędnych i wprowadziliśmy nowe metody współrzędnych oparte na oknach. (Iee284)
Zamiast ImeAction.NoAction użyj ImeAction.None.
- Zamiast ImeAction.Unspecified (Ie1bcc) używaj ImeAction.Default.
Funkcja FocusRequester.createRefs została oznaczona jako eksperymentalna, ponieważ może ulec zmianie. (I2d898, b/177000821)
Właściwość SemanticsPropertyReceiver.hidden została zmieniona na invisibleToUser i oznaczona jako @ExperimentalComposeUiApi. Zmieniliśmy nazwę AccessibilityRangeInfo na ProgressBarRangeInfo. Zmieniliśmy nazwę stateDescriptionRange na progressBarRangeInfo. Zmieniliśmy nazwę AccessibilityScrollState na ScrollAxisRange. Zmieniliśmy nazwę horizontalAccessibilityScrollState na horizontalScrollAxisRange. Zmieniliśmy nazwę verticalAccessibilityScrollState na verticalScrollAxisRange. (Id3148)
Zmiana interfejsu VisualTransformation na interfejs funkcyjny (I3bba4)
Używanie TestCoroutineDispatcher w testach (I532b6)
Usunięto PointerInputData i zmodyfikowano PointerInputChange, aby zawierał wszystkie pola PointerInputData. Uczyniono klasy PointerInputEvent i PointerInputEventData wewnętrznymi, ponieważ nie są używane w żadnym publicznym interfejsie API. (Ifff97, b/175142755)
Zmiana nazwy TextInputService.onStateUpdated na updateState (Id4853)
Usuń displaySize, ponieważ należy go unikać. Zwykle lepiej jest używać rozmiaru onRoot() lub co najmniej rozmiaru okna. (I62db4)
Wersja 1.0.0-alpha10
13 stycznia 2021 r.
androidx.compose.foundation:foundation:1.0.0-alpha10
i androidx.compose.foundation:foundation-layout:1.0.0-alpha10
zostały opublikowane. Wersja 1.0.0-alpha10 zawiera te zmiany.
Zmiany w interfejsie API
- ImeOptions i KeyboardOptions nie są już klasą danych (I3c898, b/168684531)
- Zmiany w interfejsie VisualTransformation API
- Zmiana nazwy OffsetMap na OffsetMapping
- Zmiana nazwy OffsetMapping.identityOffsetMap na OffsetMapping.Identity
- PasswordTransformation nie jest już klasą danych
- Przeniesiono OffsetMapping do osobnego pliku
- (I0bdf3)
- Zmiany w interfejsie EditOperations API
- Zmiana nazwy EditOperation na EditCommand
- Dodano sufiks Command do konkretnych implementacji EditOperation
- EditCommand nie są już klasami danych
- Zmiana nazwy funkcji EditOperation.process na applyTo
- Zmiana nazwy InputEventListener na InputEventCallback
- (I0a366)
- Zmodyfikowano Velocity, aby zawierał części składowe i operacje matematyczne. (Ib0447)
- Zmiana nazwy adnotacji @ExperimentalTesting na @ExperimentalTestApi, aby była zgodna z podobnymi adnotacjami interfejsu API w wersji eksperymentalnej (Ia4502, b/171464963).
- Dodano eksperymentalną metodę stickyHeader dla LazyColumn/LazyRow (I0a81d)
- Zmiana nazwy funkcji Color.useOrElse() na Color.takeOrElse() (Ifdcf5)
- Wycofano TestUiDispatcher. Zamiast tego użyj Dispatchers.Main (Ic171f, b/175385255)
- Dodaj przełącznik do pliku foundation Strings.kt (I4a5b7, b/172366489)
- Przeniesiono klasę nativeClass do modułu ui i ustawiono ją jako wewnętrzną. Zaktualizowano użycie nativeClass w implementacjach equals, aby zamiast niego używać „is MyClass”. (I4f734)
- Komponenty FlowRow i FlowColumn zostały wycofane. Zamiast niego użyj układu niestandardowego. (I09027)
- Funkcje Modifier.focus() i Modifier.focusRequester() zostały wycofane. Zamiast tego użyj funkcji Modifier.focusModifier() i Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
- Wprowadzono SelectionRegistrar.notifySelectableChange, aby powiadamiać SelectionManager o aktualizacjach Selectable. (I6ff30, b/173215242)
- Zmieniono
fun Dp.isFinite()
naval Dp.isFinite
(I50e00) - Właściwość Constraints#satisfiedBy została zmieniona na isSatisfiedBy. (I9cf5c)
- Dodano funkcje isSpecified, isUnspecified i useOrElse dla klas wbudowanych ze stałą Unspecified. (I93f7b, b/174310811)
Poprawki błędów
- Nowy interfejs API oparty na korutynach
Animatable
, który zapewnia wzajemną wyłączność animacji. Nowy interfejs DecayAnimationSpec do obsługi wielowymiarowej animacji zanikania (I820f2, b/168014930) - Dodano obsługę wyłączonych i tylko do odczytu pól tekstowych (I35279, b/171040474, b/166478534)
animate()
zastępuje terazanimateAsState()
, która zwracaState<T>
zamiastT
. Zapewnia to lepszą wydajność, ponieważ zakres unieważnienia można zawęzić do miejsca, w którym odczytywana jest wartość State. (Ib179e)- Dodaj interfejs API roli Semantics i dodaj rolę jako parametr do klikalnego, wybieralnego i przełączalnego elementu SemanticsModifier. Zmiana parametru Modifier.progressSemantics, aby można było go używać także w przypadku suwaka. (I216cd)
- Do natywnego zdarzenia keyEvent można teraz uzyskać dostęp za pomocą keyEvent.nativeKeyEvent (I87c57, b/173086397).
Wersja 1.0.0-alpha09
16 grudnia 2020 roku
androidx.compose.foundation:foundation:1.0.0-alpha09
i androidx.compose.foundation:foundation-layout:1.0.0-alpha09
zostały opublikowane. Wersja 1.0.0-alpha09 zawiera te zmiany.
Zmiany w interfejsie API
Dodawanie interfejsu Scrollable
Dzięki temu ScrollState i LazyListState mogą być traktowane jako wspólny typ, co umożliwia wdrożenie niestandardowego przewijania w obu typach.
Przenosi to też smoothScrollBy do funkcji rozszerzenia w Scrollable, korzystając z tej funkcji. (I2153b)
Dodano LazyVerticalGrid. (I17267, b/162213211)
Wycofanie funkcji LazyColumnFor, LazyRowFor, LazyColumnForIndexed i LazyRowForIndexed. Zamiast tego używaj komponentów LazyColumn i LazyRow (I5b48c).
W przypadku interfejsów API zawieszających dane wejściowe wskaźnika zmieniono nazwy funkcji HandlePointerInputScope na AwaitPointerEventScope i handlePointerInput() na awaitPointerEventScope(). (Idf0a1, b/175142755)
Dodano LazyListState.layoutInfo, które udostępnia listę rozmiarów i przesunięć aktualnie widocznych elementów (If8678, b/170472532).
Usunięto adnotację ExperimentalPointerInput (Ia7a24)
Dodano obsługę stanu interakcji w przypadku pól tekstowych. (I61d91)
Dodaj parametr reverseLayout do LazyColumn/Row. Gdy
true
, elementy będą komponowane od dołu do góry, aLazyListState.firstVisibleItemIndex == 0
będzie oznaczać, że pierwszy element znajduje się na dole. (I552ae, b/166589935)Dodano parametr verticalArrangement dla elementu LazyColumn. Dodano parametr horizontalArrangement dla LazyRow. Umożliwia dodanie odstępu między elementami i określenie ich rozmieszczenia, gdy nie mamy ich wystarczająco dużo, aby wypełnić cały minimalny rozmiar. (Icf79a, b/170394300)
Funkcja detectMultitouchGestures używa teraz 1 wywołania zwrotnego z połączonymi parametrami centroid, pan, zoom i rotate. (Ie6e1c)
Przeniesiono klasę ContentDrawScope do modułu ui-graphics, aby była razem z klasą DrawScope. (Iee043, b/173832789)
Poprawki błędów
- Funkcje lambda w modyfikatorach przesunięcia zwracają teraz IntOffset zamiast Float. (Ic9ee5, b/174137212, b/174146755)
Usunęliśmy z publicznego interfejsu API klasy SlotTable, SlotReader i SlotWriter. Wcześniej były one oznaczone jako InternalComposeAPI. Teraz są one wewnętrzne w module kompozycji.
Dodano CompositionData i CompositionGroup jako zamienniki interfejsu API ui-tooling, które służą do wyodrębniania informacji o kompozycji. Są one publiczne, ale nie są przeznaczone do użytku poza interfejsem ui-tooling API, ponieważ dostarczają surowe informacje, które interpretuje ten interfejs (I31a9c).
Zrefaktoryzowano klasę ShaderBrush, aby leniwie tworzyć instancję shadera, gdy dostępne są informacje o rozmiarze środowiska rysowania. Przydaje się to do definiowania gradientów, które w momencie tworzenia kompozycji zajmują pełne granice rysowania elementu kompozycyjnego, bez konieczności implementowania niestandardowych implementacji DrawModifier.
Wycofano interfejsy API konstruktora funkcji gradientu na rzecz metod fabrykujących w obiekcie Gradient. (I511fc, b/173066799)
Pole Modifier.focusObserver zostało wycofane. Zamiast tego użyj Modifier.onFocusChanged lub Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
Interfejs Autofill API jest teraz interfejsem eksperymentalnym i wymaga zgody użytkownika (I0a1ec).
Dodawanie deklaracji destrukcyjnych do tworzenia instancji FocusRequester (I35d84, b/174817008)
accessibilityLabel zmieniono na contentDescription. accessibilityValue zmieniono na stateDescription. (I250f2)
Wprowadziliśmy kilka nowych funkcji w klasie SelectionRegistrar, a także zmieniliśmy nazwę funkcji onPositionChange na notifyPositionChange. (Ifbaf7)
AndroidOwner made internal (Ibcad0, b/170296980)
Nowa funkcja infiniteRepeatable do tworzenia elementu InfiniteRepeatableSpec (I668e5)
Interfejs
Applier
został zmieniony, aby uprościć tworzenie drzew od dołu do góry, a nie od góry do dołu.Nazwa metody
insert()
została zmieniona nainsertTopDown()
.Dodano nową metodę:
insertBottomUp()
.Aplikacja wstawia węzły do edytowanego drzewa za pomocą funkcji
insertTopDown()
lubinsertBottomUp()
w zależności od tego, która z nich jest bardziej skuteczna.Niektóre drzewa, np.
LayoutNode
iView
, znacznie łatwiej jest budować od dołu niż od góry. Przed wprowadzeniem tej zmiany do wdrożenia metody od dołu do góry wymagany był stos wstawek, który należało skopiować do każdego narzędzia, które potrzebowało konstrukcji od dołu do góry ze względu na wydajność. Po tej zmianieApplier
zastępujeinsertBottomUp()
budowanie drzewa od dołu do góry, ainsertTopDown()
– od góry do dołu. (Icbdc2)Dodano interfejs API painterResource, który umożliwia nieprzezroczyste wczytywanie obiektów Painter z formatów zasobów rastrowych (np. PNG) lub obiektów VectorDrawable. Konsumenci nie muszą już z wyprzedzeniem określać typu komponentu i mogą wywołać tę metodę, aby uzyskać obiekt Painter do użycia w komponentach kompozycyjnych Image lub modyfikatorach malowania. (I2c703, b/173818471)
Dodano funkcję fabryczną buildAnnotatedString, która służy do tworzenia obiektu AnnotatedString. Wycofana funkcja konstruktora annotatedString. (Idfe0b)
Wersja 1.0.0-alpha08
2 grudnia 2020 r.
androidx.compose.foundation:foundation:1.0.0-alpha08
i androidx.compose.foundation:foundation-layout:1.0.0-alpha08
zostały opublikowane. Wersja 1.0.0-alpha08 zawiera te zmiany.
Zmiany w interfejsie API
- Usunięto parametr
maxLines
z funkcjiCoreTextField
. Jeśli chcesz ograniczyć wysokość pola tekstowego liczbą wierszy, użyjBasicTextField
. (Iec002) - Zmieniono metody
await*TouchSlop()
, aby nie wykrywały wskaźnika w dół, i zmieniono ich nazwy na*OrCancellation
. Usunęliśmy też konieczność stosowania parametruorientationLock
. (Ie96e1) - Dodano sprawdzanie składni nazw i pozycji parametrów funkcji lambda, aby zapewnić zgodność ze wskazówkami dotyczącymi Compose.
Zgodnie z kontrolą składni i wskazówkami zmieniliśmy też nazwy niektórych interfejsów API, które używały
children
jako nazwy funkcji lambda na końcu, nacontent
. (Iec48e) - Interfejsy API
foundation:foundation-text
przeniesiono dofoundation:foundation
. Struktura pakietu pozostała bez zmian (Id3eb2) - Nowy detektor gestów wielodotykowych, w tym funkcje pomocnicze do wykrywania obracania, powiększania i przesuwania. (Ic459d)
- Nowy detektor gestów przeciągania zawieszający wskaźnik interfejs API danych wejściowych, w tym blokowanie orientacji. (Icef25)
- Zmiana nazwy VectorAsset na ImageVector. Przeniesienie i zmiana nazwy VectorAsset na Builder, aby była klasą wewnętrzną ImageVector zgodnie z wytycznymi rady API. Dodano alias typu VectorAssetBuilder, aby zapewnić zgodność z ImageVector.Builder. (Icfdc8)
- Zmieniliśmy nazwy ImageAsset i powiązanych metod na ImageBitmap. (Ia2d99)
- Przeniesiono właściwości semantyczne podstaw do interfejsu (I6f05c)
Dodaj interfejsy API przewijania oparte na korutynach:
Dodaje funkcje LazyListState.snapToItem i LazyListState.smoothScrollBy, a także interfejsy API niższego poziomu do sterowania przewijaniem. Te interfejsy API udostępniają interfejs zawieszania do sterowania przewijaniem, który czeka na zakończenie przewijania przed zwróceniem wyniku. (Ie5642)
Dodano parametr singeLine do komponentów BasicTextField, TextField i OutlinedTextField. Ustaw ten parametr na „true”, aby pole tekstowe było pojedynczą linią z możliwością przewijania w poziomie. (I57004, b/168187755)
Dodano detektor gestów do wykrywania kliknięć, dwukrotnych kliknięć, długich naciśnięć i naciśnięć za pomocą nowego wskaźnika zawieszającego. Dodaliśmy też kilka narzędzi, które ułatwiają deweloperom pisanie własnych detektorów gestów. (I00807)
W bibliotece podstawowej dodano właściwość Modifier.focusable. Użyj tego komponentu, aby dodać do komponentu możliwość uzyskania fokusu z prawidłową semantyką i dostępnością. (I41eb9, b/152525426, b/162865824)
Usunęliśmy wycofane wcześniej interfejsy API: usunęliśmy Border, zamiast niego używaj BorderStroke. Funkcja Modifier.drawBorder została usunięta. Zamiast niej używaj funkcji Modifier.border. Wycofaliśmy Modifier.gravity. Zamiast niego użyj Modifier.align. Element Stack został usunięty. Zamiast niego użyj elementu Box (I32c2b, b/172470874)
AbsoluteArrangement została zmieniona na Arrangement.Absolute. (If26f2)
Poprawki błędów
- Przeniesiono interfejsy API DrawModifier z pakietu androidx.compose.ui do pakietu androidx.compose.ui.draw. Utworzono plik DrawModifierDeprecated.kt, który zawiera aliasy typów i metody pomocnicze ułatwiające migrację z przestarzałych interfejsów API na obecne. (Id6044, b/173834241)
- Zmieniono nazwę Modifier.drawLayer na Modifier.graphicsLayer. Zaktualizowano też powiązane klasy do GraphicsLayer zgodnie z opinią rady API. (I0bd29, b/173834241)
- Element
<T>
został usunięty z deklaracji SubcomposeLayout. Możesz teraz używać tego atrybutu bez określania typu. (Ib60c8) - Pola uptime i position w klasie PointerInputData nie mogą mieć wartości null. (Id468a)
- Motyw MaterialTheme ustawia teraz prawidłowe kolory uchwytów zaznaczenia i tła zaznaczenia. Aplikacje inne niż Material mogą ręcznie używać AmbientTextSelectionColors, aby dostosować kolory używane do zaznaczania. (I1e6f4, b/139320372, b/139320907)
- Parametr wyrównania komponentu Box został zmieniony na contentAlignment. (I2c957)
- Modyfikatory offsetPx zostały zmienione na offset. Przyjmują teraz parametry lambda zamiast stanu. (Ic3021, b/173594846)
- Dodano WindowManager.isWindowFocused, aby sprawdzać, czy okno hosta jest aktywne, oraz WindowFocusObserver, który udostępnia wywołanie zwrotne onWindowFocusChanged. (I53b2a, b/170932874)
- Dodano parametr resetInput do TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- Zaktualizowany interfejs TextFieldValue API
- pole TextFieldValue.composition zostało ustawione jako tylko do odczytu.
- usunięto wyjątek zgłaszany w przypadku nieprawidłowego zakresu wyboru (I4a675, b/172239032);
- Wycofaliśmy właściwości Ambients, których nazwy miały sufiks
Ambient
, i zastąpiliśmy je nowymi właściwościami z prefiksem Ambient, zgodnie z innymi właściwościami Ambients i wytycznymi interfejsu Compose API. (I33440) - Dodano otoczkę Android Typeface. Czcionkę Androida możesz wczytać za pomocą funkcji
typeface
, np.typeface(Typeface.DEFAULT)
. Zmieniono też nazwętypefaceFromFontFamily()
natypeface()
(I52ab7) - Dodano sprawdzanie kodu, aby upewnić się, że fabryki modyfikatorów używają wewnętrznie interfejsu
androidx.compose.ui.composed {}
zamiast być oznaczane jako@Composable
. (I3c4bc) - Dodano sprawdzanie lint, aby upewnić się, że funkcje fabryczne modyfikatora są zdefiniowane jako rozszerzenia modyfikatora, dzięki czemu można je płynnie łączyć w łańcuchy. (I07981)
- Argument semantyki mergeAllDescendants został zmieniony na mergeDescendants. (Ib6250)
- Kontrola czasu w testach (TestAnimationClock i jego zastosowania) jest obecnie eksperymentalna (I6ef86, b/171378521).
- Usuwanie starego modułu ui-test i jego stubów (I3a7cb)
- W przypadku innych jednostek TextUnit.Inherit zmieniono nazwę na TextUnit.Unspecified. (Ifce19)
- Interfejs wyrównania został zaktualizowany i jest już funkcjonalny. (I46a07, b/172311734)
foundation:foundation-text
został scalony zfoundation:foundation
(Idac0f)- Wycofanie funkcji place(Offset) i placeRelative(Offset). Zamiast tego używaj przeciążeń z przesunięciami int (I4c5e7)
- Nazwa
id
została zmieniona nalayoutId
w przypadkuLayoutIdParentData
. NazwaMeasurable.id
została zmieniona naMeasurable.layoutId
. (Iadbcb, b/172449643)
Wersja 1.0.0-alpha07
11 listopada 2020 roku
androidx.compose.foundation:foundation:1.0.0-alpha07
, androidx.compose.foundation:foundation-layout:1.0.0-alpha07
i androidx.compose.foundation:foundation-text:1.0.0-alpha07
są zwalniane. Wersja 1.0.0-alpha07 zawiera te zmiany.
Zmiany w interfejsie API
- Podobnie jak w przypadku
Modifier.fillMaxSize[Width|Height]
obsługujemy teraz ułamki wModifier.fillParentMaxSize[Width|Height]
w zakresieLazyColumn/Row
(I797e2, b/166586426). - Usunięto
KeyboardOptions.toImeOptions
z publicznego interfejsu API. (Ic2e45) - Funkcje AmbientTextStyle, ProvideTextStyle i AmbientContentColor zostały wycofane. Zamiast tego używaj nowych wersji dostępnych w bibliotece Material. W przypadku aplikacji innych niż Material należy utworzyć własny system projektowania z motywami, które można wykorzystać we własnych komponentach. (I74acc, b/172067770)
- foundation.Text został wycofany i zastąpiony przez material.Text. Podstawowy interfejs API tekstu, który nie korzysta z wartości z motywu, znajdziesz w artykule androidx.compose.foundation.BasicText. (If64cb)
- Dodano maxLines do pól tekstowych (Ib2a5b)
- Aktualizacja pól tekstowych, aby akceptowały KeyboardOptions (Ida7f3)
- Dodano KeyboardOptions do użycia w polach tekstowych (I9ca32)
- Dodaje BasicText jako interfejs API do obsługi tekstu, który nie narzuca konkretnego stylu, równolegle do BasicTextField. (I28268)
- Usunięto adnotację ExperimentalLazyDsl. LazyColumn/LazyRow można teraz używać bez dodawania adnotacji @OptIn (Idab7a, b/166584730)
- Komponent BaseTextField został wycofany. Zamiast tego użyj BasicTextField. (I896eb)
- Dodaliśmy komponent BasicTextField, który zastępuje komponenty CoreTextField i BaseTextField (Id4cea).
- Usuwanie wycofanych elementów LazyColumnItems/LazyRowItems (I1d8a8)
- Usunięto wycofane funkcje kompozycyjne do określania rozmiaru na podstawie pomiarów wewnętrznych. (I18537, b/171811496)
- Zmieniliśmy nazwę parametru relativePaddingFrom na paddingFrom. Dodano modyfikator paddingFromBaseline, który ułatwia określanie odległości od granic układu do linii bazowych tekstu. (I0440a, b/170633813)
- Do modyfikatora aspectRatio dodano parametr matchHeightConstraintsFirst, który umożliwia określenie modyfikatora, który ma być dopasowany do ograniczeń wysokości przed wypróbowaniem odpowiedników szerokości. (Ie7c43, b/155290593)
- Przestarzałe ograniczenia DpConstraints zostały usunięte. (I87884, b/171702471)
Poprawki błędów
- Wprowadzono klasę wbudowaną ScaleFactor, która reprezentuje współczynniki skali dla osi poziomej i pionowej niezależnie od siebie, aby obsługiwać przypadki użycia skalowania nierównomiernego.
- Dodano metodę computeScaleFactor do ContentScale
- Dodano ContentScale.FillBounds, aby wykonać skalowanie nierównomierne i rozciągnąć granice źródła, tak aby w pełni zajmowały miejsce docelowe.
- Dodano metody operatorów do obliczania parametrów ScaleFactor za pomocą parametrów Size.
- (Ic96a6, b/172291582)
- Funkcja captureToBitmap została przeniesiona do funkcji captureToImage. (I86385)
- Oznacza CoreText jako @InternalTextApi. Zamiast tego użyj BasicText. (I6aaeb)
- Zmiana nazwy KeyboardOptions na ImeOptions (I82f36)
- Przeniesienie KeyboardType i ImeAction do KeyboardOptions (I910ce)
- Element CoreTextField został oznaczony jako @InternalTextApi. Zamiast tego użyj BasicTextField (Ie2469)
- Usunięto adnotację ExperimentalSubcomposeLayoutApi. Funkcja SubcomposeLayout może być teraz używana bez dodawania adnotacji @OptIn (I708ad)
- Wprowadzenie modułu ui-test-junit4 (Ib91f8)
- Zaktualizowano interfejs Icon API, aby przyjmował wartość Color.Unspecified jako możliwy kolor odcienia, który będzie rysować podany zasób lub malarza bez filtra ColorFilter. Wcześniejsze próby zignorowania odcienia za pomocą Color.Unspecified powodowały odcień w przezroczystym kolorze, co w efekcie nie powodowało renderowania. (I049e2, b/171624632)
- Element MeasureResult został przeniesiony poza element MeasureScope. (Ibf96d, b/171184002)
- Kilka symboli związanych z układem zostało przeniesionych z pakietu androidx.compose.ui do pakietu androidx.compose.layout.ui. (I0fa98, b/170475424)
- Pakiet androidx.ui.test został przeniesiony do androidx.compose.ui.test (I9ffdb).
- FirstBaseline i LastBaseline zostały przeniesione do pakietu androidx.compose.ui.layout (Ied2e7).
- Dodano SelectionContainer bez wywołania zwrotnego (Ibfadb)
- Dodaj testy pozycji elementów SelectionHandle w SelectionContainer. (Ie93db)
- Dodano opcję autokorekty klawiatury IME (I57b8d)
Wersja 1.0.0-alpha06
28 października 2020 r.
androidx.compose.foundation:foundation:1.0.0-alpha06
, androidx.compose.foundation:foundation-layout:1.0.0-alpha06
i androidx.compose.foundation:foundation-text:1.0.0-alpha06
są zwalniane. Wersja 1.0.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- androidx.compose.foundation.Icon został przeniesiony do androidx.compose.material.Icon. Jeśli nie chcesz korzystać z biblioteki Material, możesz też użyć komponentu Image lub funkcji Modifier.paint() z obiektem Painter. (I9f622)
- Dodano interactionState do Modifier.scrollable, ScrollableColumn i LazyColumnFor (I81566, b/169509805)
- Do RowScope dodano alignByBaseline, a alignWithSiblings zmieniono na alignBy (I06503, b/170628732).
- Funkcja Box została przekształcona w funkcję wbudowaną. (Ibce0c, b/155056091)
- Dodano maxLines do CoreTextField (Ibee58, b/143687793)
- Dodano miękkie zawijanie w komponencie CoreTextField. (I21a4b)
Poprawki błędów
- Wycofanie funkcji VectorPainter na rzecz funkcji rememberVectorPainter, aby lepiej wskazywać, że interfejs API funkcji kompozycyjnych wewnętrznie wykorzystuje funkcję „remember” do utrwalania danych w różnych kompozycjach. (Ifda43)
- Włącz przejścia w ComposeTestRule; usuń opcję włączania migającego kursora z ComposeTestRule. (If0de3)
- Dodano opcję klawiatury z jednym wierszem w komponencie CoreTextField (I72e6d)
- Zmiana nazwy interfejsu API Radius na CornerRadius, aby lepiej odzwierciedlała sposób jego użycia w Compose. Zaktualizowano dokumentację, aby wskazać, że ujemne promienie zaokrąglenia są przycinane do zera. (I130c7, b/168762961)
- Dodanie możliwości określania informacji o inspektorze w zmodyfikowanym komponencie (Idee08, b/163494569)
- Dodano opcję IME KeyboardCapitalization (I8ac38)
- Ustal pozycję uchwytu od prawej do lewej. (I6e1e0)
- Zmiana powodująca niezgodność: usunięto wartość zwracaną z funkcji PointerInputFilter.onPointerEvent(...), ponieważ jedyną wartością, którą można zmienić w przypadku zdarzeń wskaźnika, są dane o użyciu. Zamiast zwracać dane z PointerInputFilter.onPointerEvent(...), możesz teraz po prostu zmieniać dane o użyciu przekazywanych obiektów PointerEvent. (I6acd0)
- Dodano opcję Zaznacz wszystko w menu wyboru (Ief02b)
Wersja 1.0.0-alpha05
14 października 2020 r.
androidx.compose.foundation:foundation:1.0.0-alpha05
, androidx.compose.foundation:foundation-layout:1.0.0-alpha05
i androidx.compose.foundation:foundation-text:1.0.0-alpha05
są zwalniane. Wersja 1.0.0-alpha05 zawiera te zmiany.
Zmiany w interfejsie API
- CoreTextField obsługuje teraz funkcję kursora (Id23aa).
Wycofuje interfejsy contentColor() i currentTextStyle() i zastępuje je odpowiednio AmbientContentColor i AmbientTextStyle. Aktualną wartość możesz uzyskać, używając
.current
w przypadku właściwości otoczenia, tak jak w przypadku każdego innego otoczenia. Ta zmiana została wprowadzona w celu zapewnienia spójności i uniknięcia sytuacji, w której to samo zadanie można wykonać na kilka sposobów. Dodatkowo zmieniliśmy nazwy niektórych właściwości otoczenia, aby lepiej opisywały ich przeznaczenie:- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
Poprawki błędów
- W ramach standaryzacji wartości wartowniczych w przypadku klas wbudowanych zmień nazwę Color.Unset na Color.Unspecified, aby zachować spójność z innymi klasami wbudowanymi (I97611, b/169797763).
- Dodano działania związane z ułatwieniami dostępu Kopiuj/Wklej/Wytnij (I6db4f)
- Wprowadzono TextOverflow.None. Gdy wartość parametru overflow to None, komponent Text nie będzie już obsługiwać przepełnienia i będzie zgłaszać do komponentu LayoutNode swój rzeczywisty rozmiar. (I175c9, b/158830170)
- Zaktualizowano parametry Size.Unspecified tak, aby zamiast Float.POSITIVE_INFINITY miały wartość Float.NaN. Zaktualizowano implementacje Painter, aby sprawdzały zarówno Size.Unspecified, jak i rozmiary nieograniczone. (I95a7e)
- Dodano moduł Paging Compose i integrację stronicowania (Ib85da)
- Zmiana zakresu LazyListScope, aby przyjmował wartości dopuszczające wartość null (I1765b)
- Interfejs OnPositionedModifier został zmieniony na OnGloballyPositionedModifier, a funkcja onPositioned() na onGloballyPositioned(). (I587e8, b/169083903)
- Dodano przykłady dla LazyColumn/Row (Idc16d)
- Poprawka metod items i itemsIndexed, aby zezwalać na emptyList (I06647)
- Dodanie języka DSL do określania informacji o inspektorze (Ic9a22)
- Przenieś LongPress do Text. (Iff2bc)
- Wyłącz zaznaczanie tekstu i obejrzyj wersję demonstracyjną. (Ie7e97)
- Obsługa konwersji AnnotatedString na SpannableString na potrzeby ułatwień dostępu. (Ief907)
- Użytkownik
PointerInputFilter.onPointerInput(...)
został usunięty. Zamiast niego należy użyć atrybutuPointerInputFilter.onPointerEvent(...)
. (I6f04a)
Wersja 1.0.0-alpha04
1 października 2020 roku
androidx.compose.foundation:foundation:1.0.0-alpha04
, androidx.compose.foundation:foundation-layout:1.0.0-alpha04
i androidx.compose.foundation:foundation-text:1.0.0-alpha04
są zwalniane. Wersja 1.0.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Grupa została zmieniona na Box. Dotychczasowa funkcja foundation.Box zostanie wycofana na rzecz nowej funkcji Box w pakiecie compose.foundation.layout. Nowy komponent Box układa elementy podrzędne jeden na drugim, gdy ma ich kilka. Różni się to od poprzedniego komponentu Box, który działał podobnie do komponentu Column. (I94893, b/167680279)
- Parametry dekoracji pola zostały wycofane. Jeśli chcesz dodać dekoracje lub dopełnienie do elementu Box, użyj zamiast tego modyfikatorów (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279).
- Dodaj nową klasę LazyListState. Umożliwia to obserwowanie i kontrolowanie pozycji przewijania komponentów LazyRow i LazyColumn. Instancje można tworzyć za pomocą funkcji rememberLazyListState() i przekazywać do parametru stanu komponentu. Obecnie w tej początkowej wersji można obserwować pierwszy widoczny element i przesunięcia. (Ic7cb7, b/159307669)
- Pozycja na liście i przesunięcie przewijania są teraz zapisywane i przywracane podczas ponownego tworzenia aktywności (Ie045f, b/166589058).
- Dodaj działanie semantyczne długiego kliknięcia (I6281b, b/156468846)
- Dodano narzędzie MutatorMutex, które umożliwia utrzymywanie pojedynczego mutatora stanu współdzielonego w czasie i anulowanie sprzecznych mutatorów według priorytetu (I3f975).
- Oznaczanie adnotacjami rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled i textInputServiceFactory za pomocą @VisibleForTesting, przekształcanie ich w wewnętrzne interfejsy API i ukrywanie ich dokumentacji w formacie KDoc (I554eb, b/168308412)
- Usunięto parametr inlineContent z tekstu z wejściem String. Nie będzie używana, ponieważ element inlineContent musi działać z elementem AnnotatedString. (Ief403)
- Usunięto wycofane niestandardowe interfejsy API do zarządzania umowami. (Ic576d, b/168297922, b/168297923)
- Do modyfikatorów wrapContentSize dodano parametr
unbounded
, który umożliwia pomiar elementu układu z nieskończonymi maksymalnymi ograniczeniami. (I77951, b/158559319) - Zapobiegliśmy statycznemu importowaniu treści z zakresów układu (np. alignWithSiblings w RowScope). Zamiast tego użyj alternatywnego zakresu:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
. (I216be, b/166760797)
Poprawki błędów
- Zaktualizowano wiele interfejsów API grafiki
- Zaktualizowano interfejsy API przekształceń skali i rotacji, aby używały jednego parametru Offset do reprezentowania współrzędnych punktu obrotu zamiast oddzielnych parametrów zmiennoprzecinkowych dla współrzędnych x/y w DrawScope i DrawTransform.
- Usunięto metody Rect.expandToInclude i Rect.join
- Zaktualizowano dokumentację dotyczącą promienia, aby uwzględnić kształt owalny oprócz eliptycznego.
- Dodano dokumentację, aby wskazać, że publiczny konstruktor wbudowanej klasy Radius nie powinien być wywoływany bezpośrednio, ale obiekty Radius powinny być tworzone za pomocą konstruktorów funkcji.
- Usunięto interfejsy API RoundRect do wysyłania zapytań o wartości topRight, bottomRight, bottomCenter itp.
- Wycofanie Rect.shift na rzecz Rect.translate
- Usunięto interfejsy API RoundRect.grow i Rect.shrink
- Zmiana nazwy RoundRect.outerRect na Rect.boundingRect
- Usunięto metody RoundRect.middleRect/tallMiddleRect/wideMiddleRect i Rect.isStadium
- Zmiana nazwy RoundRect.longestSide na RoundRect.maxDimension
- Zmiana nazwy RoundRect.shortestSide na RoundRect.minDimension
- Zmiana RoundRect.center na właściwość zamiast funkcji
- Zaktualizowano konstruktor RoundRect, aby korzystał z właściwości Radius zamiast z poszczególnych parametrów wartości promienia x/y.
- Usunięto interfejsy API rozmiaru, które zakładały, że jest to prostokąt o początku w punkcie 0,0
- Dodano do Radius interfejs API niszczenia
- Przeniesiono różne funkcje rozszerzenia RoundRect, aby były właściwościami.
- (I8f5c7, b/168762961)
- Optymalizacja wydajności przewijania elementów LazyColumnFor i LazyRowFor dzięki unikaniu niepotrzebnych ponownych kompozycji podczas każdego przewijania (I64f65, b/168293643, b/167972292, b/165028371)
- Naprawiono awarię w LazyColumnFor/LazyRowFor po przewinięciu, a następnie zmianie elementów. Wdrożono automatyczne przewijanie w górę, gdy usunięto wcześniej widoczny element, aby nie wyświetlać już pustych przerw na końcu (I220ab, b/161480164, b/167855468).
- Zagnieżdżanie kontenerów z możliwością przewijania w tym samym kierunku, takich jak ScrollableContainer i LazyColumnFor, nie jest już dozwolone. Nigdy nie była obsługiwana i psuła przewijanie oraz całą leniwość tworzenia elementów LazyColumnFor (I6e101).
- Zaktualizowano wiele interfejsów API grafiki
- Zaktualizowano interfejsy DrawScope API o metody przekształcania w określonym zakresie, aby wskazać, że przekształcenie jest stosowane tylko w wywołaniu zwrotnym i usuwane po jego wywołaniu.
- Zaktualizowano dokumentację clipPath, aby odwoływała się do ścieżki zamiast do zaokrąglonego prostokąta
- Poprawiono odstępy w dokumentacji parametru right w elemencie clipPath
- Zmieniono nazwę DrawScope.drawCanvas na drawIntoCanvas i usunięto parametr rozmiaru
- Zmieniono nazwy parametrów dx/dy w metodzie inset na horizontal i vertical
- Dodano przeciążenie wstawki, które zapewnia tę samą wartość wstawki dla wszystkich 4 obszarów.
- Usunięto dokumentację dotyczącą metody wstawiania, która wskazywała, że wstawianie będzie stosowane do wszystkich 4 stron.
- Zaktualizowana dokumentacja klasy Rect
- Zaktualizowano komentarze do parametrów Rect, aby były zgodne ze stylem kdoc.
- Usunięto Rect.join i Rect.expandToInclude
- Utworzono przeciążenie dla Rect.translate(offset) i wycofano Rect.shift
- (If086a, b/167737376)
- dodaj AccessibilityScrollState do właściwości semantycznych; (Ifeda9)
- Ustaw TextRange jako inline, aby uniknąć tworzenia obiektu. (Id034b)
- Usunięto ParagraphConstraints. Szerokość jest teraz przekazywana bezpośrednio do akapitu. (Ica712)
Wersja 1.0.0-alpha03
16 września 2020 roku
androidx.compose.foundation:foundation:1.0.0-alpha03
, androidx.compose.foundation:foundation-layout:1.0.0-alpha03
i androidx.compose.foundation:foundation-text:1.0.0-alpha03
są zwalniane. Wersja 1.0.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Zmieniliśmy nazwę parametru InnerPadding na PaddingValues. (I195f1, b/167389171)
- W interfejsach API układu nazwy związane z grawitacją zostały zmienione na align lub alignment. (I2421a, b/164077038)
- Do komponentu Stack dodano parametr wyrównania, który umożliwia określenie domyślnego wyrównania wszystkich elementów podrzędnych komponentu Stack. (Ie80ca, b/164085265)
Poprawki błędów
- Interfejs DpConstraints i interfejsy API, które go używają, zostały wycofane. (I90cdb, b/167389835)
- Parametry
minWidth
imaxWidth
funkcjiwidthIn
zostały zmienione namin
imax
. Podobnie w przypadku błędówpreferredWidthIn
,heightIn
ipreferredHeightIn
. (I0e5e1, b/167389544) - Dodano onNode i inne metody globalne w ComposeTestRule, ponieważ obecne metody globalne zostaną wycofane. (Ieae36)
- Poprawiono obliczenia rozmiaru i pozycji w GestureScope, co powodowało m.in. generowanie nieprawidłowych gestów przesuwania (Iaf358, b/166589947).
- Przeniesiono
createAndroidComposeRule
iAndroidInputDispatcher
zandroidx.ui.test.android
doandroidx.ui.test
(Idef08, b/164060572)
Wersja 1.0.0-alpha02
2 września 2020 r.
androidx.compose.foundation:foundation:1.0.0-alpha02
, androidx.compose.foundation:foundation-layout:1.0.0-alpha02
i androidx.compose.foundation:foundation-text:1.0.0-alpha02
są zwalniane. Wersja 1.0.0-alpha02 zawiera te zmiany.
Poprawki błędów
- TestUiDispatcher jest oznaczony jako eksperymentalny (Iae99d, b/161247083)
Dodano
ManualFrameClock.hasAwaiters
, aby sprawdzić, czy zegar oczekuje na klatkę;runWithManualClock
jako zamiennikrunBlocking
podczas przeprowadzania testów, które wymagają zegara ManualFrameClock;TestUiDispatcher.Main
, który zapewnia łatwy dostęp do głównego dyspozytora interfejsu w testach.Na przykład:
@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") } }
Wersja 1.0.0-alpha01
26 sierpnia 2020 r.
androidx.compose.foundation:foundation:1.0.0-alpha01
, androidx.compose.foundation:foundation-layout:1.0.0-alpha01
i androidx.compose.foundation:foundation-text:1.0.0-alpha01
są zwalniane. Wersja 1.0.0-alpha01 zawiera te zmiany.
Wersja 0.1.0-dev
Wersja 0.1.0-dev17
19 sierpnia 2020 r.
androidx.compose.foundation:foundation:0.1.0-dev17
, androidx.compose.foundation:foundation-layout:0.1.0-dev17
i androidx.compose.foundation:foundation-text:0.1.0-dev17
są zwalniane. Wersja 0.1.0-dev17 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaliśmy właściwość spacedBy do komponentów Row i Column, aby umożliwić pozycjonowanie elementów podrzędnych układu ze stałym odstępem. Dodano też wyrównane rozmieszczenie, aby umożliwić umieszczanie elementów podrzędnych obok siebie i wyrównywanie ich w wierszu lub kolumnie zgodnie z wyrównaniem. Poprzednie metody Arrangement.Vertical#arrange i Arrangement.Horizontal#arrange zostały wycofane, a w przyszłości pisanie niestandardowych układów nie będzie obsługiwane. (I6733d, b/161985975)
- Przesunięcie stało się klasą wbudowaną (Iaec70)
- Usunięto wywołania zwrotne onFocusChanged z pola tekstowego. Zamiast tego użyj Modifier.focusObserver. (I51089, b/161297615)
- Funkcja Modifier.drawBorder została wycofana. Zamiast tego użyj Modifier.border. Klasa danych Border została zastąpiona klasą BorderStroke (I4257d, b/158160576)
- Komponenty VerticalScroller i HorizontalScroller zostały usunięte. Zamiast tego użyj ScrollableColumn/Row. Usunięto Modifier.drawBackground. Użyj Modifier.background (I73b0d, b/163019183)
- Usunięcie z LazyItemScope modyfikatorów fillMax* oznaczonych jako przestarzałe, ponieważ utrudniają one prawidłowe dodawanie takich modyfikatorów do elementów, które nie są bezpośrednimi elementami podrzędnymi LazyColumnFor (Ifa78d).
- dodano implementację LazyColumn/LazyRow jako DSL (I93cc6);
- Constraints to teraz klasa wbudowana (I88736)
- Dodaliśmy możliwość określania rozmiaru układu jako ułamka dostępnej przestrzeni za pomocą modyfikatorów fillMaxWidth, fillMaxHeight i fillMaxSize. (I945bb, b/161562591)
Poprawki błędów
- Dodano parametr modyfikatora do SelectionContainer (I4aada, b/161487952)
- Dodano funkcję lambda mergePolicy do SemanticsPropertyKey. Można jej użyć do zdefiniowania niestandardowych zasad scalania semantyki mergeAllDescendants. Zasada domyślna polega na używaniu wartości nadrzędnej, jeśli jest już obecna, a w przeciwnym razie wartości podrzędnej. (Iaf6c4, b/161979921)
- Nazwa
PlacementScope.placeAbsolute()
została zmieniona naPlacementScope.place()
, a poprzednia nazwaPlacementScope.place()
została zmieniona naPlacementScope.placeRelative()
. W konsekwencji metodaPlacementScope.place()
nie będzie już automatycznie odzwierciedlać pozycji w kontekstach pisanych od prawej do lewej. Jeśli chcesz to zrobić, użyj zasadyPlacementScope.placeRelative()
. (I873ac, b/162916675) - Usunięto wycofany komponent FilledTextField. Zamiast tego użyj komponentu TextField, aby uzyskać implementację pola tekstowego wypełnionego zgodną z Material Design. (I5e889)
- Dodano parametr backgroundColor do LinearProgressIndicator i usunięto wewnętrzny dopełnienie z CircularProgressIndicator. Dodano nową klasę ProgressIndicatorConstants.DefaultProgressAnimationSpec, której można używać jako domyślnej klasy AnimationSpec podczas animowania postępu między wartościami (If38b5, b/161809914, b/161804677).
- Funkcja
state { ... }
została wycofana na rzecz jawnych wywołań funkcjiremember { mutableStateOf(...) }
, aby zwiększyć przejrzystość. Zmniejsza to ogólną powierzchnię interfejsu API i liczbę koncepcji zarządzania stanem oraz pasuje do wzorcaby mutableStateOf()
delegowania właściwości klasy. (Ia5727) - Zmiana nazwy RRect na RoundRect, aby lepiej pasowała do wzorców nazewnictwa w Compose. Utworzono podobne konstruktory funkcji do RRect i wycofano konstruktory funkcji RRect (I5d325).
- Usunięto funkcje onChildPositioned i OnChildPositionedModifier. Zamiast tego programiści powinni używać funkcji onPositioned i OnPositionedModifier w układzie podrzędnym. (I4522e, b/162109766)
- IntSize jest teraz klasą wbudowaną (I2bf42).
- Przytrzymaj dłużej pusty obszar, aby go edytować. (Ib1e5b)
- Ukryj pływający pasek narzędzi po kliknięciu tekstu. (If4525)
- Ukryj pływający pasek narzędzi podczas aktualizowania zaznaczenia. (I8444c)
- Odznacz opcję Gdy rozmycie. (I781a2)
Wersja 0.1.0-dev16
5 sierpnia 2020 r.
androidx.compose.foundation:foundation:0.1.0-dev16
, androidx.compose.foundation:foundation-layout:0.1.0-dev16
i androidx.compose.foundation:foundation-text:0.1.0-dev16
są zwalniane. Wersja 0.1.0-dev16 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano LazyItemScope dla parametru itemContent list leniwych. Zawiera modyfikatory, które wypełniają maksymalny rozmiar elementu nadrzędnego, co rozwiązuje problem, gdy element powinien wypełniać obszar widoku, a zwykły modyfikator Modifier.fillMaxSize() nie działa, ponieważ element jest mierzony z ograniczeniami nieskończoności. (Ibd3b2, b/162248854)
- Przeniesienie okna do interfejsu (I47fa6)
- Dodano LazyColumnForIndexed/LazyRowForIndexed – wersje LazyColumnFor/LazyRowFor, które w funkcji itemCallback udostępniają zarówno indeks, jak i element. Jest to przydatne, gdy oprócz bieżącego elementu musisz znać bieżący indeks. (I65ff3)
- Nazwa Modifier.deternimateProgress została zmieniona na Modifier.progressSemantics (I9c0b4)
- LazyColumnItems zmieniono na LazyColumnFor. LazyRowItems został zmieniony na LazyRowFor (I84f84)
- Dodaj kilka oznaczeń lub adnotacji, aby zastosować sprawdzone metody. (I66b20)
- Pakiet foundation.shape.corner został spłaszczony do foundation.share (I46491, b/161887429).
- Dodano parametr grawitacji osi poprzecznej dla LazyRowItems/LazyColumnItems. Elementy LazyRowItems/LazyColumnItems obsługują teraz zachowanie zawijania treści. (Ib39fc)
- ZoomableState został zmieniony na ZoomableController. Dodaliśmy obsługę niestandardowych krzywych w przypadku funkcji smoothScale. Dodano funkcje
enabled
ionZoomStarted
(If8b8f). - Komponent Material FilledTextField został zmieniony na TextField, a komponent podstawowy TextField został zmieniony na BaseTextField, aby ułatwić odkrywanie i używanie najprostszego interfejsu API (Ia6242, b/155482676).
- Wycofana wcześniej klasa AdapterList została usunięta. Zamiast tego używaj LazyColumnItems (I12b9b)
- Funkcja Modifier.drawBackground została zmieniona na Modifier.background (I13677)
- Stary język DSL ConstraintLayout został usunięty. Zmieniono nazwę ConstraintSet2 na ConstraintSet. (If58d1, b/162450908)
- Dodano Modifier.absoluteOffset() i Modifier.absoluteOffsetPx(). W przeciwieństwie do modyfikatorów przesunięcia modyfikatory przesunięcia bezwzględnego nie będą automatycznie odzwierciedlane w kontekście od prawej do lewej (I3aa21).
- Funkcje
Row
iColumn
są teraz funkcjami wbudowanymi, co znacznie zmniejsza obciążenie związane z ich używaniem. (I75c10)
Poprawki błędów
- Poprawki w interfejsie API (I077bc)
- Usuwanie nieużywanego interfejsu OffsetBase
- Ujednolicenie klas Offset i IntOffset w celu zapewnienia spójnego interfejsu API
- Zmiana nazwy IntOffset.Origin na IntOffset.Zero w celu zachowania spójności z interfejsem Offset API
- Przeniesiono metodę nativeCanvas z interfejsu Canvas, aby umożliwić konsumentom tworzenie własnych instancji Canvas.
- Utworzono klasę EmptyCanvas, aby refaktoryzować DrawScope i zamiast lateinit używać parametru niepustego, a także zapewnić, że pole nie będzie miało wartości null.
- Zmiana nazw wyliczeń ClipOp na PascalCase
- Zmiana nazwy wyliczeń FilterQuality na Pascal Case
- Zmiana nazw wyliczeń StrokeJoin na Pascal Case
- Zmiana nazwy wyliczeń PointMode na Pascal Case
- Zmiana nazw wyliczeń PaintingStyle na Pascal Case
- Zmiana nazwy wyliczeń PathFillType na Pascal Case
- Zmieniono nazwy wyliczeń StrokeCap na Pascal Case
- Zaktualizowano implementację DrawCache, aby nie używać już parametrów lateinit
- Zaktualizowano DrawScope, aby nie używać już leniwego delegowania w przypadku wewnętrznych parametrów fillPaint i strokePaint
- Zaktualizowano funkcję kompozycyjną Image, aby uniknąć używania Box, co zmniejsza obciążenie.
- Zaktualizowano klasę Outline, aby zawierała adnotacje @Immutable
- Zaktualizowano klasę PathNode, aby zawierała adnotacje @Immutable dla każdej instrukcji ścieżki.
- Zaktualizowano podkompozycję wektora, aby usunąć zbędne sprawdzanie warunkowe równości, ponieważ kompozycja już je obsługuje.
- Wyłączenie metod konstruktora towarzyszącego Rect na rzecz konstruktorów funkcji
- Zaktualizowano klasy Brush i konstruktory funkcji za pomocą interfejsów API @Immutable i @Stable
- Zaktualizowano wyliczenie VertexMode, aby używać notacji PascalCase
- Zaktualizowano metodę DrawScope selectPaint, aby warunkowo nadpisywać parametry pędzla, jeśli uległy zmianie.
- Aktualizacja klasy Size w celu dodania interfejsu API destructuring, zmiany nazwy UnspecifiedSize na Unspecified i usunięcia nieużywanych metod
Dodano klasę MonotonicFrameAnimationClock, która umożliwia używanie klasy MonotonicFrameClock jako klasy AnimationClockObservable, aby wypełnić lukę między nowymi zegarami opartymi na korutynach a interfejsami API, które nadal używają starych zegarów opartych na wywołaniach zwrotnych.
Odpowiednikiem klasy MonotonicFrameClock w przypadku klasy ManualAnimationClock jest teraz klasa ManualFrameClock. (I111c7, b/161247083)
Użytkownik
SemanticsNodeInteraction.performPartialGesture
został usunięty. Zamiast niej używaj właściwościSemanticsNodeInteraction.performGesture
. (Id9b62)Nazwa
SemanticsNodeInteraction.getBoundsInRoot()
została zmieniona naSemanticsNodeInteraction.getUnclippedBoundsInRoot()
(Icafdf, b/161336532)Zaktualizowaliśmy interfejsy API obsługujące pisanie od prawej do lewej. Dodano LayoutDirectionAmbient, którego można używać do odczytywania i zmieniania kierunku układu. Usunięto Modifier.rtl i Modifier.ltr. (I080b3)
Funkcja Modifier.plus została wycofana. Zamiast niej używaj funkcji Modifier.then. Słowo „wtedy” silniej sygnalizuje kolejność, a także uniemożliwia wpisanie znaku
Modifier.padding().background() + anotherModifier
, który przerywa ciąg i utrudnia czytanie (Iedd58, b/161529964).Dodano
isFocused()
iisNotFocused()
SemanticsMatcher. (I0b760)Dodano RemeasurementModifier. Umożliwia użytkownikom synchroniczne ponowne pomiary układu. Zwykle nie jest on potrzebny, ponieważ ponowny pomiar i ponowny układ są wykonywane automatycznie, ale używamy go w elementach LazyColumn podczas przewijania. (I5f331, b/160791058)
Metoda isSystemInDarkTheme zawsze uwzględnia ustawienie ciemnego motywu w całym systemie i ignoruje stan oszczędzania energii w wersjach starszych niż Q, zgodnie z najnowszymi wytycznymi. (I0c10c)
Metoda OnChildPositioned została wycofana. Zamiast tego użyj OnPositioned w przypadku elementu podrzędnego. (I87f95, b/162109766)
Zmiana nazwy AndroidComposeTestRule na createAndroidComposeRule. (I70aaf)
Dodawanie działania związanego z ułatwieniami dostępu w celu uzyskania obiektu TextLayoutResult (I9d6e6)
Wersja 0.1.0-dev15
22 lipca 2020 r.
androidx.compose.foundation:foundation:0.1.0-dev15
, androidx.compose.foundation:foundation-layout:0.1.0-dev15
i androidx.compose.foundation:foundation-text:0.1.0-dev15
są zwalniane. Wersja 0.1.0-dev15 zawiera te zmiany.
Aby korzystać z wersji 0.1.0-dev15
funkcji Twórz, musisz:
Aktualizacja zależności
- Aby używać wersji
0.1.0-dev15
biblioteki Compose, musisz zaktualizować zależności zgodnie z nowymi fragmentami kodu pokazanymi powyżej w sekcji Deklarowanie zależności.
Zmiany w interfejsie API
- Podobnie jak w przypadku nowego parametru w komponencie ScrollableColumn/ScrollableRow, komponenty LazyColumnItems/LazyRowItems mają teraz też parametr contentPadding, który umożliwia dodanie do treści dopełnienia po jej przycięciu, co nie jest możliwe przy użyciu samego parametru modyfikatora. Umożliwia też dodanie odstępu tylko przed pierwszym elementem lub po ostatnim elemencie. (Ibc24e)
- Wywołanie zwrotne onFocusChange w polach tekstowych zostało zmienione na onFocusChanged (Ida4a1)
- Komponenty VerticalScroller i HoriziontalScroller zostały wycofane. Użyj komponentów ScrollableColumn i ScrollableRow, aby wbudować funkcje z zachowaniem i parametrami Column/Row, lub użyj modyfikatorów Modifier.verticalScroll i Modifier.horizontalScroll we własnym elemencie. Podobnie klasa ScrollerPosition została wycofana na rzecz klasy ScrollState (I400ce, b/157225838, b/149460415, b/154105299).
- Interfejsy API Modifier.draggable i Modifier.scrollable zostały zmodyfikowane. Właściwość DragDirection została usunięta na rzecz właściwości Orientation. Wymaganie dotyczące stanu przewijania zostało uproszczone. Klasa ScrollableState została zmieniona na ScrollableController (Iab63c, b/149460415).
- Właściwości semantyczne pojedynczej wartości używają teraz stylu wywoływania.
Na przykład „semantics { hidden = true }” jest teraz zapisywane jako:
semantics { hidden() }
(Ic1afd, b/145951226, b/145955412) - Rozmiary narożników używane przez RoundedCornerShape i CutCornerShape mogą być teraz większe niż 50% (Id2340, b/160400213).
- Zmieniono domyślny parametr ContentScale kompozycji Image z Inside na Fit. Zrobiliśmy to, aby w przypadku, gdy rozmiar układu jest większy niż wewnętrzny rozmiar obiektu Painter, zachowanie skalowało go w górę przy zachowaniu formatu obrazu. Takie zachowanie lepiej odpowiada oczekiwaniom dotyczącym podawania stałych rozmiarów obrazu, a jednocześnie nie wpływa na domyślne zachowanie, jeśli do obliczenia rozmiaru komponentu kompozycyjnego używany jest tylko rozmiar wewnętrzny. (I40ae3, b/159838006)
- W interfejsach API najwyższego poziomu używaj AnimationSpec zamiast AnimationBuilder, aby wyjaśnić koncepcję statycznej specyfikacji animacji. -Ulepsz DSL przejścia, usuwając wymaganie lambdy do tworzenia specyfikacji animacji, takich jak tween czy spring. Zamiast tego przyjmują one bezpośrednio parametry konstruktora. – Zwiększenie ogólnej łatwości użycia klasy AnimationSpec przez udostępnienie konstruktorów zamiast polegania na builderach. – Zmiana czasu trwania i opóźnienia w przypadku klas KeyFrames i Tween na Int. Eliminuje to niepotrzebne rzutowanie typów i przeciążanie metod (w celu obsługi zarówno typu Long, jak i Int). (Ica0b4)
- Element klikalny został usunięty. Użyj modyfikatora clickable (I84bdf)
- Dodano LazyRowItems – przewijany w poziomie odpowiednik LazyColumnItems (Ibbcf7)
- Wprowadzono interfejsy API animacji bezstanowej niskiego poziomu. Te interfejsy API (I63bf7)
- Interfejsy androidx.ui.foundation.TextFieldValue i androidx.ui.input.EditorValue zostały wycofane. Komponenty TextField, FilledTextField i CoreTextField, które używają tego typu, również zostały wycofane. Zamiast tego użyj androidx.ui.input.TextFieldValue (I4066d, b/155211005)
- Zastąpiono użycie IntPx przez Int. Zastąpiono IntPxPosition przez IntOffset. Zastąpiono IntPxSize wartością IntSize. (Ib7b44)
- Usunięto androidx.ui.foundation.shape.RectangleShape. Używaj androidx.ui.graphics.RectangleShape (I94939, b/154507984).
- Aby zmniejszyć liczbę klas używanych do reprezentowania informacji o rozmiarach, ujednolić użycie klasy Size zamiast PxSize. Dzięki temu możesz korzystać z zalet klasy wbudowanej, aby używać typu long do pakowania 2 wartości zmiennoprzecinkowych reprezentujących szerokość i wysokość. (Ic0191)
- Aby zmniejszyć liczbę klas używanych do reprezentowania informacji o pozycjonowaniu, ujednolić użycie klasy Offset zamiast klasy PxPosition. Dzięki temu można korzystać z zalet klasy wbudowanej, aby używać typu long do pakowania 2 wartości zmiennoprzecinkowych reprezentujących przesunięcia x i y w postaci liczb zmiennoprzecinkowych. (I3ad98)
- Dodano modyfikator Modifier.zoomable do obsługi funkcji powiększania za pomocą gestu uszczypnięcia (Id5d63).
- Komponent przełączany został wycofany. Zamiast tego użyj Modifier.toggleable (I35220, b/157642842)
- Element MutuallyExclusiveSetItem został wycofany. Zamiast tego użyj Modifier.selectable. (I02b47, b/157642842)
- TestTag został wycofany. Zamiast tego użyj Modifier.testTag. (If5110, b/157173105)
- Dodaje parametr fontWeight do komponentu Text, który został wcześniej przypadkowo pominięty (I56937).
- Zastąpiono użycie klasy Px w różnych klasach Compose w ramach dużego refaktoryzowania, aby w przypadku parametrów pikseli używać tylko typów Dp i pierwotnych (I19d02).
- Komponent VerticalScroller udostępnia teraz kolumnę od razu po wyjęciu z pudełka. Komponent HorizontalScroller udostępnia teraz wiersz od razu po wyjęciu z pudełka. (Ieca5d, b/157020670)
- Zastąpiono użycie klasy Px w różnych klasach Compose w ramach dużego refaktoryzacji, aby w przypadku parametrów pikseli używać tylko jednostek dp i typów pierwotnych (Iede0b).
- Do pakietu podstawowego dodano Modifier.indication. Używaj go do wyświetlania informacji o naciśnięciu, przeciągnięciu lub innych interakcjach w przypadku niestandardowych elementów interaktywnych (I8425f, b/155287131).
- Komponenty VerticalScroller i HorizontalScroller obsługują teraz odwrócone przewijanie, gdy w komponencie ScrollerPosition ustawiona jest wartość isReversed (I953bd).
- Obsługa dodawania komponentów kompozycyjnych do układu tekstu. (I1373c)
- Ujednolicone implementacje CanvasScope, dzięki czemu są teraz tylko DrawScope i ContentDrawScope. Zmieniono nazwę CanvasScope na DrawScope. Zaktualizowano DrawScope, aby zaimplementować interfejs Density i udostępnić LayoutDirection. Usunięto podklasę DrawScope w ContentDrawScope. Zaktualizowano Painter i PainterModifier, aby nie utrzymywały już same właściwości RTL, ponieważ DrawScope już je udostępnia bez ręcznego podawania (I1798e).
- Usunięto wycofany interfejs DrawBackground API na rzecz interfejsów drawBackground API w rozszerzeniu Modifier. Przebudowano implementacje kolorów, pędzli i malowania drawBackground, aby zmniejszyć liczbę ścieżek kodu, a także usunąć wymaganie tworzenia modyfikatora w ramach kompozycji. (I0343a)
- Zaktualizowano interfejsy API Compose wyższego poziomu, które udostępniają Canvas, aby zamiast tego udostępniać CanvasScope. Eliminuje to konieczność utrzymywania przez konsumentów własnych obiektów Paint. Użytkownicy, którzy nadal potrzebują dostępu do elementu Canvas, mogą użyć metody drawCanvas, która zapewnia wywołanie zwrotne do wydawania poleceń rysowania za pomocą bazowego elementu Canvas. (I80afd)
- Komponenty HorizontalScroller i VerticalScroller nie przywracają pozycji przewijania za pomocą zapisanego stanu instancji. (Ia0fae, b/155075048)
- Usunięto FocusManagerAmbient. Aby uzyskać fokus, użyj FocusModifier.requestFocus. (Ic4826)
- Układ tabeli został tymczasowo usunięty. Udostępnimy go ponownie w odświeżonej wersji interfejsu API. (Id88a7)
Utworzono interfejs CanvasScope API, który opakowuje obiekt Canvas, aby udostępnić bezstanowy, deklaratywny interfejs API do rysowania. Przekształcenia są zawarte w odpowiednim zakresie odbiornika, a informacje o rozmiarze są również ograniczone do odpowiednich granic wstawki. Nie wymaga to od użytkownika utrzymywania własnego obiektu stanu Paint do konfigurowania operacji rysowania.
Dodaliśmy CanvasScopeSample, a także zaktualizowaliśmy aplikację demonstracyjną, aby zawierała demonstrację grafiki deklaratywnej (Ifd86d).
Element ColoredRect został usunięty. Zamiast tego użyj elementu User Box z modyfikatorem drawBackground (I983c7, b/152753731).
Dodanie możliwości dostosowania koloru kursora w polu TextField (I6e33f)
Klawiaturę ekranową można teraz ukrywać i wyświetlać za pomocą klasy SoftwareKeyboardController, która jest dostarczana przez wywołanie zwrotne onTextInputStarted (I8dc44, b/151860051).
Wartość TextFieldValue używana z polem TextField może teraz przetrwać ponowne utworzenie aktywności, jeśli jest używana w ten sposób:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
(I5c3ce, b/155075724)Dodaje do funkcji Text() często używane parametry. Jeśli obecnie tworzysz lokalny styl tekstu, aby przekazać niewielką liczbę tych parametrów, np.
Text(style = TextStyle(textAlign = TextAlign.Center))
, możesz teraz po prostu podać parametry bezpośrednio:Text(textAlign = TextAlign.Center)
(I82768)Zastąpiono parametr focusIdentifier w komponencie CoreTextField/TextField parametrem FocusNode, aby zintegrować go z podsystemem fokusu. (I7ea48)
Aktualizacja pola tekstowego – w wymiarze poziomym zajmie ono całą dostępną przestrzeń (Ib08df, b/154638552)
Dodano InteractionState i Interaction, co ułatwia tworzenie komponentów reagujących na zmiany stanu interfejsu, takie jak naciśnięcie i przeciągnięcie (Icfe25, b/152525426).
RectangleShape przeniesiono z androidx.ui.foundation.shape.* do androidx.ui.graphics.* (Ia74d5, b/154507984)
Zastąpiono wszystkie użycia wartości Color, które mogą przyjmować wartość null, w interfejsie API wartościami, które nie mogą przyjmować wartości null, i zamiast wartości null użyto wartości Color.Unset (Iabaa7).
Aktualizacja interfejsu TextField API – scalenie wywołań zwrotnych onFocus i onBlur w jedno wywołanie zwrotne onFocusChange(Boolean) z parametrem (I66cd3)
Zmiana nazwy ScaleFit na ContentScale. Przeniesienie ContentScale z modułu ui-graphics do modułu ui-core. Moduł będzie znajdować się w tym samym module co interfejs Alignment API. Zmiana nazwy FillMaxDimension na Crop. Zmiana nazwy FillMinDimension na Fit. Zmiana nazwy Fit na Inside, aby lepiej dopasować ją do odpowiedników ImageView.ScaleType. Dodano dokumentację wskazującą, że połączenie Crop i Alignment.Center daje taki sam efekt jak ImageView.ScaleType.CENTER_CROP, a Fit użyty z Alignment.Center daje taki sam efekt jak ImageView.ScaleType.FIT_CENTER. Inside użyty z Alignment.Center daje taki sam efekt jak ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521).
Usuwa ProvideContentColor, zamiast tego używa bezpośrednio ContentColorAmbient z
Providers
(Iee942)Dodaje do tekstu parametr koloru, co umożliwia zastąpienie koloru stylu tekstu bez konieczności ręcznego łączenia ze stylem podanym w motywie. (I41a66)
Ulepszenie interfejsu DrawModifier API:
- Zmieniono zakres odbiorcy funkcji draw() na ContentDrawScope
- Usunięto wszystkie parametry funkcji draw()
- DrawScope ma taki sam interfejs jak poprzednia wersja CanvasScope.
- ContentDrawScope ma metodę drawContent() (Ibaced, b/152919067)
Komponent ColoredRect został wycofany. Zamiast niej używaj zasady
Box(Modifier.preferredSize(width, height).drawBackground(color))
. (I499fa, b/152753731)System motywów kształtów jest aktualizowany zgodnie ze specyfikacją Material Design. Teraz możesz podać małe, średnie i duże kształty, które będą używane przez większość komponentów (Ifb4d1).
Zastąpienie operatora „Modyfikator plus” funkcjami rozszerzenia fabrycznego (I225e4)
Przeniesienie elementu z możliwością przeciągania do modyfikatora (Id9b16, b/151959544)
Przeniesiono
Text
do pakietu androidx.ui.foundation z androidx.ui.core. (I87ce5)dodanie parametru
enabled
do komponentów Checkbox, Switch i Toggleable (I41c16)Efekt falowania jest teraz modyfikatorem. Dopóki nie zostanie przekonwertowany, zalecane użycie to
Clickable(onClick = { ... }, modifier = ripple())
(Ie5200, b/151331852, b/150060763).Dodano interfejs VectorPainter API, który zastępuje dotychczasowy interfejs subcomposition API w przypadku grafiki wektorowej. Wynikiem subkompozycji jest obiekt VectorPainter zamiast DrawModifier. Wycofano poprzednie funkcje kompozycyjne DrawVector na rzecz VectorPainter.
Zmieniono nazwę interfejsu
Image(Painter)
API naPaintBox(Painter)
Utworzono komponent Vector, który działa podobnie jak komponent Image, ale zamiast komponentu ImageAsset używa komponentu VectorAsset (I9af9a, b/149030271).Utworzono komponent CreatedImage, który obsługuje zmianę rozmiaru i układu, a także rysowanie danego elementu ImageAsset na ekranie. Ten komponent obsługuje też rysowanie dowolnej instancji Painter z uwzględnieniem jej rozmiaru wewnętrznego oraz obsługę danego stałego lub minimalnego rozmiaru (Ibcc8f).
Komponenty Button, FloatingActionButton i Clickable mają teraz osobny parametr
enabled
. Niektóre parametry w przypadku komponentu Button zostały zmienione lub zmieniono ich kolejność. (I54b5a)Zmieniliśmy nazwę Image na ImageAsset, aby lepiej odróżnić dane Image od nadchodzącego komponentu Image, który będzie używany do tworzenia układu i rysowania treści.
Utworzono metodę rozszerzenia w klasie android.graphics.Bitmap,
Bitmap.asImageAsset()
, aby utworzyć instancję klasy ImageAsset przydatną do łączenia tradycyjnego tworzenia aplikacji na Androida z platformą Compose. (Id5bbd)Funkcja kompozycyjna DrawImage została usunięta. Użyj ImagePainter, aby narysować obraz na istniejącym układzie, lub SimpleImage, aby wprowadzić obraz zajmujący miejsce (I595e1, b/149827027).
Komponent Stack obsługuje kierunek od prawej do lewej (Ic9e00)
Dodano komponenty Icon, IconButton i IconToggleButton, a usunięto AppBarIcon. Możesz bezpośrednio zastąpić istniejące użycia AppBarIcon elementem IconButton, a wtedy będą one miały prawidłowy docelowy element dotykowy. Informacje o użyciu znajdziesz w przykładach, a dostępne ikony Material Icons, których możesz używać bezpośrednio w tych komponentach, znajdziesz w sekcji Ikony. (I96849)
Funkcja kompozycyjna DrawShape została usunięta. Zamiast tego użyj modyfikatora DrawBackground. (I7ceb2)
Dodano AdapterList, komponent listy przewijanej, który tylko komponuje i układa widoczne elementy. Obecnie znane problemy obejmują to, że jest on tylko pionowy i nie obsługuje w pełni wszystkich przypadków zmian w jego elementach podrzędnych. (Ib351b)
Dodano komponent z możliwością przewijania, który umożliwia tworzenie niestandardowych komponentów przewijanych i list (I5fd37).
Zmieniono nazwę tła na DrawBackground i ustawiono domyślne zapamiętywanie (Ia0bd3).
Dodaj parametry dopełnienia, obramowania, kształtu i tła do elementu Box (I05027, b/148147281)
Dodano komponent Canvas. Ten komponent zajmuje określony rozmiar (podany przez użytkownika) i umożliwia rysowanie za pomocą CanvasScope (I0d622).
zmiana modyfikatora
Border
naDrawBorder
(I8ffcc)Dodano komponent Box, który łączy funkcje układu i rysowania. (I6e2a7)
Elementy przewijane działają teraz jak w przypadku gestu szybkiego przesunięcia na urządzeniach z Androidem. (I922af, b/147493715)
Zastąpiono funkcję DrawBorder modyfikatorem obramowania (Id335a).
Zmieniliśmy nazwę Modifier.tag na Modifier.layoutId, aby uniknąć nieporozumień z Modifier.testTag. (I995f0)
Parametr percent podczas tworzenia linii pomocniczych ConstraintLayout został zmieniony na fraction. (Ida2db)
Dodaliśmy obsługę marginesów barier ConstraintLayout. (I47ffe)
Poprawiono obsługę układu od prawej do lewej w przypadku elementu ConstraintLayout. Dodano interfejsy API, które nie obsługują języków pisanych od prawej do lewej. (I3b1c7)
Dodano nowy język DSL dla ConstraintLayout. Więcej informacji znajdziesz w przykładach. (Icaa9a)
Dodano adnotację @ExperimentalLayout. Adnotacja została dodana do klas ConstraintLayout, FlowRow i FlowColumn, aby oznaczyć, że ich interfejsy API ulegną zmianie. (I412a8)
Dodano
Modifier.padding(InnerPadding)
(I94985, b/157133803)Usunięto przestarzałe atrybuty RowAlign i ColumnAlign w elementach Row i Column. (If60d4, b/155858731)
Usunięto wycofaną funkcję LayoutTag(). Zamiast niej używaj funkcji Modifier.tag(). Usunięto wycofany modyfikator Modifier.matchParent(). Zamiast niego używaj modyfikatora Modifier.matchParentSize(). (If8044)
Dodaliśmy modyfikator układu offsetPx, który umożliwia definiowanie (dynamicznych) przesunięć w pikselach. (I5af57)
Funkcja kompozycyjna AlignmentLineOffset została wycofana. Zamiast niej używaj modyfikatora relativePaddingFrom(). Usunięto funkcję kompozycyjną CenterAlignmentLine. (I60107)
Dodano modyfikator układu defaultMinSizeConstraints, który ustawia ograniczenia rozmiaru na opakowany układ tylko wtedy, gdy przychodzące odpowiednie ograniczenia nie są określone (0 – ograniczenia minimalne, nieskończoność – ograniczenia maksymalne). (I311ea, b/150460257)
Kontener został usunięty. Użyj Box (Ibbc2b, b/151407926)
Usunięto nieużywane modyfikatory LayoutWidth/Height/Size. (Ib0bc1)
Dodano domyślne wartości parametrów modyfikatora przesunięcia. (I37f06)
Dodano modyfikator symetrycznego dopełnienia. (I39840)
Usunięto wycofany modyfikator LayoutAspectRatio. (I65a74)
Usunięto wycofane modyfikatory LayoutAlign. (I10877)
Naprawiliśmy błąd w modyfikatorach szerokości i wysokości, który powodował, że układ zawijany był mierzony bez ograniczeń osi przeciwnej. (I210b8, b/154797971)
Dodano parametry verticalGravity i horizontalGravity odpowiednio do wiersza i kolumny. (I7dc5a)
Zaktualizowano funkcje wrapContentWidth i wrapContentHeight, aby oczekiwały wyrównania w pionie lub poziomie, a nie dowolnego wyrównania. Modyfikator grawitacji został zaktualizowany, aby akceptować wyrównanie w pionie lub poziomie. Wiersz, Kolumna i Stos zostały zaktualizowane, aby obsługiwać niestandardowe ciągłe wyrównania. (Ib0728)
Umożliwiono tworzenie instancji klasy Alignment z dowolnymi wartościami. Dodano wyrównania 1D. (Ia0c05)
Zmieniono nazwę EdgeInsets na InnerPadding. Zmiana nazwy parametru innerPadding w przypadku przycisków Material na padding. (I66165)
Funkcja alignToSiblings akceptuje teraz obiekt Measured zamiast Placeable. (I5788d)
Dodaliśmy modyfikatory rozmiaru do pomiarów wewnętrznych i wycofaliśmy komponenty służące do tego celu. (I8295d)
Dodano możliwość dostosowywania wymiarów elementów podrzędnych elementu ConstraintLayout (Idb1a5).
Usunięto wycofane funkcje kompozycyjne Wrap i Center. (I29e23)
Dodano LayoutModifier2, nowy interfejs API do definiowania modyfikatorów układu; wycofano LayoutModifier (If32ac).
Elementy RowScope i ColumnScope są teraz dostępne poza wierszem i kolumną. (I3a641)
Kontener został wycofany. Zamiast tego użyj Box. (I675ce, b/151407926)
Dodano modyfikator LayoutOffset do przesuwania pozycji układu (I0b8a3)
Początkowa obsługa układu od prawej do lewej w Compose (Ia5519)
Zaktualizowano LayoutAlign, aby nie wypełniał już dostępnej przestrzeni (I2b14f)
Usunięto funkcję kompozycyjną AspectRatio na rzecz modyfikatora. Usunięto przestarzałe funkcje kompozycyjne FlexColumn i FlexRow oraz modyfikator Spacing (Iec8a7)
Usunięto modyfikator LayoutInflexible dla wiersza i kolumny (I0d820)
Zaimplementuj uchwyty przeciągania, aby zmienić zaznaczenie w przypadku elementu TextField. (I27032)
Implementuje LongPressAndDrag na potrzeby zaznaczania w polu tekstowym. (I17919)
Poprawki błędów
- FocusModifier został wycofany na rzecz Modifier.focus, Modifier.focusRequester i Modifier.focusObserver. Stany FocusState i FocusDetailedState zostały wycofane na rzecz stanu FocusState2 (I46919, b/160822875, b/160922136).
- Nazwa została zmieniona na
runOnIdle
(I83607)runOnIdleCompose
- Zmieniliśmy nazwy kilku interfejsów API do testowania, aby były bardziej intuicyjne. Wszystkie interfejsy API findXYZ zostały zmienione na onNodeXYZ. Wszystkie interfejsy API doXYZ zostały zmienione na performXYZ. (I7f164)
- Usuwa wcześniej wycofany modyfikator Modifier.ripple. Funkcja Clickable używa teraz efektu fali jako domyślnego wskaźnika (jeśli w aplikacji masz ustawiony element MaterialTheme{}), więc w większości przypadków możesz po prostu użyć funkcji Clickable i bezpłatnie uzyskać efekt fali. Jeśli chcesz dostosować kolor, rozmiar lub parametr ograniczony efektu fali, możesz ręcznie utworzyć RippleIndication i przekazać go do funkcji clickable jako parametr indication. (I663b2, b/155375067)
- Usunięto nieaktualne interfejsy API do testowania rozmiaru. (Iba0a0)
- Udostępniliśmy eksperymentalny interfejs API LayoutNode (I4f2e9).
- W całym Compose zaimplementowano wersję 1 blokowania orientacji przewijania. (I1ce7a, b/150289741)
- Wyskakujące okienka, okna dialogowe i menu dziedziczą teraz kontekstowy motyw MaterialTheme (Ia3665, b/156527485).
- Usunięto parametr kierunku układu z bloku miary funkcji Layout(). Kierunek układu jest jednak dostępny w wywołaniu zwrotnym za pomocą obiektu zakresu pomiaru (Ic7d9d).
- Dodaj AbsoluteArrangement – umożliwia rozmieszczenie elementów podrzędnych w wierszu bez automatycznego odbijania lustrzanego w przypadku języków pisanych od prawej do lewej (I3a1df).
- Adnotacja @Untracked została wycofana. Zastąp @ComposableContract(tracked=false) (Id211e)
- Przed tą zmianą wtyczka kompilatora Compose w nietrywialny sposób przechwytywała wywołania konstruktorów w funkcji @Composable, jeśli istniał (I5205a, b/158123804).
- Dodaj funkcję
viewModel()
, która umożliwia tworzenie lub pobieranie utworzonego już obiektu ViewModel w sposób podobny do tego, jak to działa w przypadku aktywności lub fragmentu (I5fdd1). Przekształcono klasę Radius w klasę wbudowaną. Usunięto metody tworzenia kształtu towarzyszącego na rzecz konstruktora funkcji z parametrem domyślnym, aby promień wzdłuż osi y był zgodny z obowiązkowym parametrem promienia wzdłuż osi x.
Zaktualizowano funkcję DrawScope.drawRoundRect, aby używała jednego parametru Radius zamiast 2 osobnych wartości zmiennoprzecinkowych dla promienia wzdłuż osi X i Y (I46d1b).
W ramach dużych zmian w kodzie zastąpiono użycie klasy Px w różnych klasach Compose, aby w przypadku parametrów pikseli korzystać tylko z jednostek Dp i typów prostych. Usunięto w całości klasę Px (I3ff33)
W ramach dużego refaktoryzacji zastąpiono użycie klasy Px w różnych klasach kompozycji, aby w przypadku parametrów pikseli używać tylko typów Dp i pierwotnych (I086f4).
W ramach dużego refaktoryzacji zastąpiono użycie klasy Px w różnych klasach kompozycji, aby w przypadku parametrów pikseli używać tylko typów Dp i pierwotnych (Id3434).
W ramach dużego refaktoryzowania zastąpiono użycie klasy Px w różnych klasach kompozycji, aby w przypadku parametrów pikseli używać tylko typów Dp i pierwotnych (I97a5a).
Kursor w polu TextField ma animację migania (Id10a7)
W przypadku częściowych gestów nie trzeba już przekazywać elementu GestureToken (Id7ae5).
W ramach dużego refaktoryzacji zastąpiono użycie klasy Px w różnych klasach kompozycji, aby w przypadku parametrów pikseli używać tylko typów Dp i pierwotnych (I57bff).
Wycofanie funkcji Modifier.semantics zostało cofnięte, aby umożliwić używanie jej w komponentach wysokiego poziomu. (I4cfdc)
Zmiana nazwy funkcji AnnotatedString.Builder.addAnnotationString na addStringAnnotation. (I5059e)
Zaktualizowano interfejs Alignment API i dodano obsługę wyrównania bezwzględnego (które nie jest automatycznie odzwierciedlane w kontekście od prawej do lewej) (I38cd3).
Elementy podrzędne Layout i LayoutModifier można mierzyć w innym kierunku układu. (Ibd731)
Wprowadzenie dodatkowego opcjonalnego parametru rect do ImagePainter w celu obsługi rysowania podsekcji bazowego elementu ImageAsset (I0ea9e)
Usunięto awarię w klasie AdapterList podczas usuwania elementów (Ic64b0, b/153195921).
Zmieniliśmy sposób pomiaru pierwszego układu umieszczonego w bloku activity.setContent { }. Wcześniej musiał wypełniać cały ekran aktywności, a teraz zachowuje się tak, jakby układ był umieszczony w obiekcie Stack: może być mniejszy niż ekran i będzie umieszczony w lewym górnym rogu ekranu. Jeśli chcesz przywrócić stare działanie, możesz zastosować Modifier.fillMaxSize() w układzie. (Ie88a7, b/153453714)
Moduł ui-text-compose został zmieniony na ui-text. Moduł ui-text zawiera teraz komponenty CoreText i CoreTextField (Ib7d47).
Moduł ui-text został zmieniony na ui-text-core (I57dec)
Przeniesiono funkcje kompozycyjne ui-framework/CoreText i CoreTextField do pakietu ui-text-compose. Możesz uwzględnić ui-text-compose w swoim projekcie. (I32042)
runOnIdleCompose
irunOnUiThread
są teraz funkcjami globalnymi, a nie metodami w ComposeTestRule. (Icbe8f)[Mutable]State property delegate operators moved to extensions to support Kotlin 1.4 property delegate optimizations. Aby nadal korzystać z funkcji
by state { ... }
lubby mutableStateOf(...)
, wywołujący muszą dodać importy. (I5312c)W przypadku funkcji DrawLayerModifier i drawLayer() domyślne wartości clipToBounds i clipToOutline to teraz false. (I0eb8b, b/152810850)
Zmieniono nazwę LayoutResult na MeasureResult. (Id8c68)
Wycofany komponent kompozycyjny Center. Należy go zastąpić modyfikatorem LayoutSize.Fill + LayoutAlign.Center lub jednym z kompozycji Box lub Stack z odpowiednimi modyfikatorami (Idf5e0).
Zmieniono nazwę LayoutFlexible na LayoutWeight. Zmieniono nazwę parametru „tight” na „fill”. (If4738)
Funkcja DrawVector została zmieniona ze zwykłej funkcji kompozycyjnej na funkcję zwracającą modyfikator drawVector(), który rysuje wektor jako tło układu. (I7b8e0)
Zastąp funkcję kompozycyjną Clip modyfikatorem drawClip(). DrawClipToBounds to wygodny modyfikator, którego możesz użyć, gdy chcesz przyciąć tylko do granic warstwy w kształcie prostokąta. (If28eb)
Zastąpiono funkcję kompozycyjną DrawShadow modyfikatorem drawShadow(). Cienie są teraz rysowane w ramach LayerModifier. (I0317a)
Klasa androidx.compose.ViewComposer została przeniesiona do androidx.ui.node.UiComposer. Klasa androidx.compose.Emittable została usunięta. Było to zbędne w przypadku ComponentNode. androidx.compose.ViewAdapters zostało usunięte. Nie jest to już obsługiwany przypadek użycia. Metoda Compose.composeInto została wycofana. Zamiast tego użyj zdarzenia
setContent
lubsetViewContent
. Metoda Compose.disposeComposition została wycofana. Zamiast tego użyj metodydispose
na obiekcieComposition
zwróconym przezsetContent
. Funkcja androidx.compose.Compose.subcomposeInto została przeniesiona do androidx.ui.core.subcomposeInto. Funkcja ComponentNode#emitInsertAt została zmieniona na ComponentNode#insertAt. Funkcja ComponentNode#emitRemoveAt została zmieniona na ComponentNode#removeAt. Funkcja ComponentNode#emitMode została zmieniona na ComponentNode#move (Idef00).Wycofana funkcja kompozycyjna Wrap. Można go zastąpić modyfikatorem LayoutAlign lub funkcją kompozycyjną Stack (Ib237f).
Umożliwiono propagowanie kierunku układu z węzła układu nadrzędnego do węzłów podrzędnych. Dodano modyfikator kierunku układu. (I3d955)
Zmiana nazwy Painter.toModifier na Painter.asModifier, ponieważ nowo utworzony modyfikator ma odniesienie do oryginalnego obiektu Painter, które można udostępniać w wielu instancjach modyfikatora (I7195b).
Obsługa kierunku od prawej do lewej w modyfikatorze LayoutPadding (I9e8da)
Połączyliśmy interfejsy Density i DensityScope w jeden. Zamiast ambientDensity() możesz teraz używać DensityAmbient.current. Zamiast withDensity(density) używaj tylko with(density) (I11cb1).
Usunięto klasę ValueHolder. Zmieniliśmy strukturę klas AnimatedValue i AnimatedFloat, aby pole wartości animacji było abstrakcyjne, dzięki czemu podklasy mogą obserwować aktualizację wartości.
- Dodano klasy modeli dla AnimatedValue, AnimatedFloat itp.
- Dodaliśmy nowy zestaw lekkich interfejsów API @Composable do animowania przejść między wartościami.
- (I79530)
Zmiany powodujące niezgodność w interfejsie API ambients. Szczegółowe informacje znajdziesz w dzienniku i
Ambient<T>
dokumentacji (I4c7ee, b/143769776).Pozycje liczb całkowitych w liniach wyrównania zwracane przez Placeable#get(AlignmentLine) nie są już wartościami null. Jeśli wyszukiwana linia wyrównania nie istnieje, zwracana jest wartość AlignmentLine.Unspecified. (I896c5, b/158134875)
Naprawiliśmy błąd w ConstraintLayout, który powodował awarię podczas ponownego komponowania. (Ibee5a, b/158164341)
Zmieniono interfejs API lambda końcowego WithConstraints. Zamiast 2 parametrów ma teraz zakres odbiorcy, który oprócz ograniczeń i kierunku układu udostępnia właściwości minWidth, maxWidth, minHeight i maxHeight w jednostkach dp (I91b9a, b/149979702).
Zmieniono nazwę LayoutModifier2 na LayoutModifier. (Id29f3)
Funkcje pomiarów wewnętrznych w Layout i LayoutModifier2 mają teraz odbiornik IntrinsicMeasureScope, który udostępnia interfejs API zapytań o wartości wewnętrzne z niejawnym kierunkiem układu. (Id9945)
Właściwość LayoutDirectionAmbient została wycofana. Aby odczytać kierunek układu zdefiniowany przez ustawienia regionalne, użyj właściwości localeLayoutDirection w obiekcie ConfigurationAmbient (I851b1).
Dodano positionInParent i boundsInParent dla LayoutCoordinates. (Icacdd, b/152735784)
Funkcja kompozycyjna ParentData została wycofana. Możesz utworzyć modyfikator, który implementuje interfejs ParentDataModifier, lub użyć modyfikatora LayoutTag, jeśli chcesz tylko otagować elementy podrzędne układu, aby można było je rozpoznać w bloku pomiaru. (I51368, b/150953183)
Dodaj modyfikatory OnPositionedModifier i OnChildPositionedModifier, aby zastąpić funkcje kompozycyjne OnPositioned i OnChildPositioned. (I2ec8f)
Wyklucz ujemne dopełnienie w LayoutPadding. W przypadku ujemnych przesunięć pozycji należy używać parametru LayoutOffset. (Ifb5b1)
WithConstraints ma parametr LayoutDirection (I6d6f7)
Zaktualizowano flagę
ComposeFlags.COMPOSER_PARAM
natrue
, co zmieni strategię generowania kodu w przypadku wtyczki do pisania. W dużym uproszczeniu powoduje to, że funkcje @Composable są generowane z dodatkowym parametrem syntetycznym, który jest przekazywany do kolejnych wywołań @Composable, aby środowisko wykonawcze mogło prawidłowo zarządzać wykonaniem. Jest to istotna zmiana binarna, która jednak powinna zachować zgodność na poziomie kodu źródłowego we wszystkich dozwolonych przypadkach użycia funkcji Compose. (I7971c)Zmieniono LayoutCoordinates, aby providedAlignmentLines było zbiorem zamiast mapy, a LayoutCoordinates implementowało operatora get() zamiast pobierania wartości. Ułatwia to modyfikatorom modyfikowanie co najmniej jednej wartości zestawu bez tworzenia nowej kolekcji dla każdego modyfikatora. (I0245a)
LayoutCoordinates nie ma już właściwości position. Właściwość position nie ma sensu w przypadku modyfikatorów układu, obrotu ani skalowania. Zamiast tego programiści powinni używać funkcji parentCoordinates i childToLocal() do obliczania przekształcenia z jednego obiektu LayoutCoordinate na inny.
LayoutCoordinates używa IntPxSize dla właściwości size zamiast PxSize. Układy korzystają z rozmiarów w pikselach, więc wszystkie rozmiary układów powinny być liczbami całkowitymi, a nie wartościami zmiennoprzecinkowymi. (I9367b)
Ulepszenia interfejsu API ograniczeń (I0fd15)
Dodano TextDirection.Content (I48f36)
Dostosuj menu paska narzędzi, aby poprawnie wyświetlać opcje kopiowania, wycinania i wklejania. (Id3955)
Dodanie pływającego paska narzędzi do zaznaczenia pola tekstowego. (Ie8b07)
Zmiana nazwy TextDirectionAlgorithm na TextDirection (I75ce8)
TextDirection zmienia nazwę na ResolvedTextDirection (I3ff38)
Dodaj HapticFeedback do wyboru TextField. (I58050)
Dodaj metody kopiowania, wycinania i wklejania do zaznaczenia TextField. (Idb70b)
Tag testowy i semantyka zostały usunięte. Zamiast tego używaj Modifier.testTag i Modifier.semantics (I15ff0, b/158841414)
Zmieniono nazwę pakietu dla Locale i LocaleList z androidx.ui.text na androidx.ui.intl (I8132c)
Zmiana w interfejsie API:
AnnotatedString(builder: Builder)
zmieniono nazwę naannotatedString(builder: Builder)
. (Ia6377)Zmiana w interfejsie API:
AnnotatedString.Item
zmieniono nazwę naAnnotatedString.Range
. (I2d44d)Dodaj pasek narzędzi do operacji związanych z tekstem. (I49d53)
Dostępny jest nowy komponent LifecycleOwnerAmbient. Aktywność używana w interfejsie Compose powinna teraz rozszerzać androidx.activity.ComponentActivity (lub AppCompatActivity). Metoda setContent w android.app.Activity jest teraz wycofana (Idb25a, b/153141084).
Nazwa pakietu ui-android-text (androidx.text) została zastąpiona przez androidx.ui.text.platform, aby zachować zgodność z zasadami androidx. (I42711)