Podstawa Compose
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 dotyczącą wszystkich pakietów compose)
Ostatnia aktualizacja | Wersja stabilna | Kandydat do wydania | Wersja Beta | Wydanie alfa |
---|---|---|---|---|
30 października 2024 r. | 1.7.5 | - | - | 1.8.0-alpha05 |
Struktura
Narzędzie Compose to połączenie 7 identyfikatorów grup Maven w ramach usługi androidx
. Każda grupa zawiera docelowy podzbiór funkcji, z których każda ma własny zestaw informacji o wersji.
Ta tabela zawiera informacje o grupach i linki do poszczególnych zestawów informacji o wersji.
Grupa | Opis |
---|---|
compose.animation, | tworzyć animacje w aplikacjach Jetpack Compose, aby wzbogacać wrażenia użytkowników. |
compose.compiler | Przekształcaj funkcje @Composable i optymalizuj funkcje za pomocą wtyczki kompilatora Kotlin. |
compose.foundation | Pisać aplikacje Jetpack Compose za pomocą gotowych elementów składowych i rozwijać podstawy, aby tworzyć własne elementy systemu projektowania. |
compose.material | Tworzenie interfejsów Jetpack Compose za pomocą gotowych komponentów Material Design. Jest to punkt wejścia na wyższym poziomie w Compose, który ma na celu udostępnianie komponentów odpowiadających komponentom opisanym na stronie www.material.io. |
compose.material3 | Twórz interfejsy Jetpack Compose z komponentami Material Design 3, które stanowią kolejną wersję Material Design. Material 3 obejmuje zaktualizowane motywy i elementy oraz funkcje personalizacji Material You, takie jak dynamiczne kolory. 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 środowisko uruchomieniowe główne dla wtyczki kompilatora Compose, na które ma być nakierowany. |
compose.ui, | Podstawowe elementy interfejsu tworzenia wiadomości potrzebne do interakcji z urządzeniem, w tym układ, rysowanie i wprowadzanie tekstu. |
Deklarowanie zależności
Aby dodać zależność od Compose, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Google Maven.
W pliku build.gradle
aplikacji lub modułu dodaj zależności artefaktów, których potrzebujesz:
Odlotowe
dependencies { implementation "androidx.compose.foundation:foundation:1.7.0" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.7.0") } 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 zauważysz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk z gwiazdką.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.8
Wersja 1.8.0-alpha05
30 października 2024 r.
androidx.compose.foundation:foundation-*:1.8.0-alpha05
został zwolniony. Wersja 1.8.0-alfa05 zawiera te zatwierdzenia.
Nowe funkcje
- Obsługa automatycznego dobierania rozmiaru tekstu. Przekaż instancję
AutoSize
(np.AutoSize.StepBased
) do ulubionego komponentu tekstowego (np.BasicText
) i obserwuj, jak rozmiar tekstu dostosowuje się do dostępnej przestrzeni. (Ice7e0, b/139320827) - Dodaje interfejsy API
OverscrollFactory
iLocalOverscrollFactory
, aby umożliwić skonfigurowanie nadmiernych przewijania w obrębie hierarchii. Wartość podana w parametryeLocalOverscrollFactory
zostanie domyślnie użyta do utworzeniaOverscrollEffect
. Aby utworzyć i zapamiętać efekt z aktualnie udostępnionej fabryki, użyjrememberOverscrollEffect()
. (I51ca4, b/255554340)
Zmiany interfejsu API
- Przedstaw element
CompositionLocal
, którego można użyć do zmiany barwy wyróżnienia autouzupełniania w celu jego wypełnienia. (I32092) - Usunięto
ScrollableDefaults.overscrollEffect
– zamiast tego użyj:rememberOverscrollEffect
. Spowoduje to utworzenie instancji bieżącej implementacji przewijania, która jest dostarczana zLocalOverscrollFactory
. (I1651a, b/255554340),(b/234451516) - Wprowadza nowy interfejs
AutofillManager
, który umożliwia dostosowanie procesu autouzupełniania do potrzeb użytkowników, oraz flagęisSemanticAutofillEnabled
, która umożliwia włączenie nowej wersji autouzupełniania. (I9d484) - Usuń
CombinedClickableNode
. Ten eksperymentalny interfejs API został tymczasowo udostępniony w celu zwiększenia wydajności, ale nie jest już potrzebny. Zamiast tego należy bezpośrednio użyć interfejsuModifier.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ą niestandardowych wartości parametruOverscrollEffect
. Podany elementOverscrollEffect
będzie odbierał zdarzenia i będzie renderowany w ograniczeniach tych komponentów. Pamiętaj, że nie można rysować tego samegoOverscrollEffect
dwukrotnie, więc nie możesz rysować tego samegoOverscrollEffect
podanego jednemu z tych komponentów osobno za pomocąModifier.overscroll
. W przyszłości zajmiemy się osobno przypadkiem rysowania poza granicami tych komponentów. (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)
Wersja 1.8.0-alpha04
16 października 2024 r.
androidx.compose.foundation:foundation-*:1.8.0-alpha04
został zwolniony. Wersja 1.8.0-alpha04 zawiera te komisy.
Zmiany w interfejsie API
- Dodaje wywołania zwrotne
DelegatableNode#onDensityChange
iDelegatableNode#onLayoutDirectionChange
, aby umożliwić aktualizowanie stanu węzła po zmianie tych wartości. (I04f3e, b/340662451) - Paragraf i
ParagraphIntrinsics
przyjmują teraz listę wszystkich adnotacji zastosowanych doAnnotatedString
. Wcześniej zawierały one tylko listęSpanStyles
. (I12f80) - Wprowadziliśmy
PointerInputModifierNode#touchBoundsExpansion
, który umożliwia powiększenie obszaru dotykowego pojedynczego modyfikatora wejścia wskaźnika. (Iccf02, b/335339283)
Poprawki błędów
- Naprawiono błąd, który powodował, ż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 przewijanych, które są usuwane z drzewa węzła podczas trwającego przewijania. Teraz te węzły anulują przeloty i będą prawidłowo wysyłać zdarzenie
onPostFling
z pozostałą szybkością. Wprowadzamy też flagęNewNestedScrollFlingDispatchingEnabled
, która pozwala kontrolować działanie w przypadku regresji. Flaga zostanie usunięta przed wersją beta. (I05c37, b/371168883) - Naprawiliśmy błąd polegający na tym, że funkcja
OverscrollEffects
przekazywana do funkcjiModifier.anchoredDraggable
otrzymywała wartości delta 2D zamiast 1D. (Ie52c0)
Wersja 1.8.0-alpha03
2 października 2024 r.
androidx.compose.foundation:foundation-*:1.8.0-alpha03
został zwolniony. Wersja 1.8.0-alpha03 zawiera te komity.
Zmiany w interfejsie API
- Aktualizacja wersji Kotlina do 1.9 (I1a14c)
- Wprowadzona flaga
DraggableAddDownEventFixEnabled
(I848d5) - Wprowadziliśmy nową rolę semantyki o nazwie karuzela, aby emulować zachowanie listy w pagerach w przypadku usług a11y. (Id354b, b/354109776, b/239672673)
- Usunięto niejawny modyfikator
graphicsLayer
z funkcjiBasicText
kompozycyjnej. Dodaliśmy eksperymentalną flagęComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled
, aby można było wrócić do poprzedniego działania. (IE478D) - Dodano
Modifier.recalculateWindowInsets()
, aby umożliwić elementom podrzędnym w hierarchii korzystanie zinsetsPadding
, nawet jeśli ich rodzice są dopasowane bezconsumeWindowInsets()
. (I7f9e4)
Poprawki błędów
- Wdróż rozpoznawanie gestów w elementach
detectDragGestures
, elementach do przeciągania i elementach do przewijania. Teraz, jeśli dziecko zrezygnuje z przeciągania, rodzic może to zrobić. Umożliwia to bardziej ciągłe i zintegrowane zarządzanie gestami. (Ic88fe) - Zaktualizuj działanie anulowania przesuwania w elementach przewijanych. Teraz, jeśli przewijany element przesuwa się i dociera do granicy, poprawnie przekaże prędkość do następnego przewijania w łańcuchu, zamiast kontynuować. (I9326a)
Wersja 1.8.0-alpha02
18 września 2024 r.
androidx.compose.foundation:foundation-*:1.8.0-alpha02
został zwolniony. Wersja 1.8.0-alpha02 zawiera te komity.
Zmiany w interfejsie API
- Dostępne są teraz atrybuty
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.
androidx.compose.foundation:foundation-*:1.8.0-alpha01
został zwolniony. Wersja 1.8.0-alpha01 zawiera te komity.
Wersja 1.7
Wersja 1.7.5
30 października 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.7.5
została zwolniona. Wersja 1.7.5 zawiera te komitowane zmiany.
Poprawki błędów
- Upewnij się, że przypięte elementy nie są dwukrotnie złożone w obszarze wypełnienia treści. (IC6224)
Wersja 1.7.4
16 października 2024 r.
androidx.compose.foundation:foundation-*:1.7.4
został zwolniony. Wersja 1.7.4 zawiera te komitowane zmiany.
Poprawki błędów
- Naprawiono błąd, który powodował rzadkie awarie w polach tekstowych. (I475c6, b/313010266)
- Usunięto element
ReusableContentHost
w korzeniach elementów układu opartego na opóźnionym ładowaniu. Była to potencjalna główna przyczyna awarii wywołanych przez „measure called on a deactivated node” (zmierzono wywołanie na zdezaktywowanym węźle). (Id6e60)
Wersja 1.7.3
2 października 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.7.3
została zwolniona. Wersja 1.7.3 zawiera te komity.
Poprawki błędów
- Naprawiono wyciek pamięci związany z funkcją
BasicText
, gdy minLines ma wartość inną niż domyślna.
Wersja 1.7.2
18 września 2024 r.
androidx.compose.foundation:foundation-*:1.7.2
został zwolniony. Wersja 1.7.2 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązanie problemu z elementami przeciągania, które nie uwzględniały zdarzeń w dół, przez co ulotki wyglądały wolniej niż zwykle.
Wersja 1.7.1
10 września 2024 r.
- Brak zmian w artefaktach na Androida. Usunięto
-desktop
artefakty i dodano-jvmStubs
oraz-linuxx64Stubs
. Żadnego z tych celów nie należy używać. Są to elementy zastępcze, które ułatwiają pracę Jetbrains Compose.
Wersja 1.7.0
4 września 2024 r.
androidx.compose.foundation:foundation-*:1.7.0
został zwolniony. Wersja 1.7.0 zawiera te komitowane zmiany.
Ważne zmiany od wersji 1.6.0
- Znacznie poprawiono wydajność funkcji
Modifier.clickable
,Modifier.focusable
,Modifier.indication
,Modifier.scrollable
iModifier.draggable
. W ramach tych działań oprócz zmian wewnętrznych wprowadziliśmy te zmiany interfejsu API:- Dodano nowy interfejs Indication API:
IndicationNodeFactory
. Dzięki temu implementacje Wskazówek są skuteczniejsze w porównaniu z poprzednim (wycofanym) interfejsem APIrememberUpdatedInstance
. Informacje o migracji znajdziesz na stronie developer.android.com. - Funkcje
clickable
/combinedClickable
/selectable
/toggleable
mogą teraz przyjmować parametrMutableInteractionSource
, który może być pusty. Jeśli wartość to null, a podany wskaźnik ma wartośćIndicationNodeFactory
, wskazywanie można utworzyć leniwie tylko wtedy, gdy jest to konieczne, co zwiększa skuteczność. Jeśli nie podnosisz danych i nie używaszMutableInteractionSource
, zalecamy przekazanie wartości null zamiast wartościremember { MutableInteractionSource() }
. - Środowisko wykonawcze
Indication#rememberUpdatedInstance
zostało wycofane. Ma ona duży, nieunikniony wpływ na wydajność i uniemożliwia inne optymalizacje. Zamiast tego użyj nowego interfejsu APIIndicationNodeFactory
.
- Dodano nowy interfejs Indication API:
BasicTextField
z użyciemTextFieldState
jest teraz stabilny i zalecamy wszystkim witrynom z usługami telefonicznymi przejście z wersjiBasicTextField(value, onValueChange)
naBasicTextField(TextFieldState)
.- Właściwość
ClickableText
została wycofana. Aby dodać do tekstu klikalne linki, użyjBasicText
z nową adnotacjąLinkAnnotation
w sekcjiAnnotatedString
.LinkAnnotation
umożliwia stosowanie niestandardowego stylu na podstawie stanu linku (np. gdy jest na niego nałożony fokus lub gdy jest nad nim kursor). - Przedstawiamy
ContextualFlowRow
iEnhanced FlowRow/Column
zMaxLines
iOverflow
. Z przyjemnością informujemy o ulepszeniach eksperymentalnej wersjiFlowRow
iFlowColumn
, które oprócz premieryContextualFlowRow
iContextualFlowColumn
obejmują terazmaxLines
i rozszerzoną obsługę. Ta aktualizacja ma na celu dostarczenie komponentów zapewniających optymalną wydajność.ContextualFlow*
to idealne rozwiązanie dla dużej liczby elementów z małą konfiguracją maxLines i dynamicznymi przyciskami +N zobacz więcej. Z koleiFlowRow
iFlowColumn
są idealne dla niewielkiej liczby elementów, która nie przekracza 100 elementów. Ważne: aby zachować obecne działanie funkcjiFlowRow
lubFlowColumn
, w których wszystkie elementy są złożone niezależnie od tego, czy pasują do maksymalnej wartości osi poprzecznej, podczas inicjowania ustaw nadmiar naFlowRowOverflow.Visible
lubFlowColumnOverflow.Visible
. Zapoznaj się z usługamiContextualFlowRowSample
iFlowRowSample
, aby zobaczyć przykłady tych nowych funkcji w praktyce. (Ib9135, b/293577082) - Dodaliśmy obsługę animacji pojawiania się i znikania elementów w wersjach
LazyColumn
iLazyRow
. Wcześniej można było dodawać modyfikatorModifier.animateItemPlacement()
, aby obsługiwać animacje umieszczania (przestawiania). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwieModifier.animateItem()
, który umożliwia obsługę wszystkich 3 typów animacji: wyglądu (rozjaśniania), znikania (zanikania) i zmiany kolejności. (I2d7f7, b/150812265) - Wprowadziliśmy eksperymentalną obsługę długich zrzutów ekranu w kontenerach przewijania w usłudze Compose za pomocą oficjalnego interfejsu API Androida (
ScrollCaptureCallback
). - Źródła
NestedScroll
Przeciągnij i rzuć są zastępowane przezUserInput
iSideEffect
, aby uwzględnić rozszerzoną definicję tych źródeł, która obejmuje teraz animacje (Side Effect) oraz koło myszy i klawiaturę (UserInput
). LazyLayout
żądania wstępnego pobierania mogą być teraz oznaczone jako pilne, co oznacza, że spodziewamy się, że ten element będzie potrzebny w następnej klatce, i chcemy zignorować budżet klatek, aby mieć pewność, że wykonamy więcej pracy z wyprzedzeniem (Id513f)- Obsługa funkcji pisma odręcznego rysikiem na urządzeniach z Androidem U lub nowszym. (I002e4)
- Różne interfejsy API zostały przeniesione do wersji stabilnej.
- Przewijanie, przyciąganie, wstawki okna
Wersja 1.7.0-rc01
21 sierpnia 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.7.0-rc01
została zwolniona. Wersja 1.7.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował awarię, gdy jakikolwiek element był zaznaczony w elementach nadrzędnych, które można zaznaczyć (lub kliknąć) i które są wyłączone. (b/317561689)
Wersja 1.7.0-beta07
7 sierpnia 2024 r.
androidx.compose.foundation:foundation-*:1.7.0-beta07
został zwolniony. Wersja 1.7.0-beta07 zawiera te komity.
Poprawki błędów
- Funkcje
SemanticsNodeInteraction
performTextReplacement
,performTextInput
iperformTextClearance
związane z danymi wejściowymi tekstowymi będą teraz wywoływać błędy asercji, gdy są wywoływane w trybie tylko do odczytuTextFields
. (I4ae8f) - Rozwiązanie problemu z wizualnym błędem w hiperlinkach. (I23311)
- Rozwiązano problem z modyfikatorem
contentReceiver
, który nie działał z niektórymi IME. - Generowanie prędkości: zapobiegaj propagacji wartości NaN w interfejsie Compose i podstawy.
Wersja 1.7.0-beta06
24 lipca 2024 r.
androidx.compose.foundation:foundation-*:1.7.0-beta06
został zwolniony. Wersja 1.7.0-beta06 zawiera te zatwierdzenia.
Wersja 1.7.0-beta05
10 lipca 2024 r.
androidx.compose.foundation:foundation-*:1.7.0-beta05
został zwolniony. Wersja 1.7.0-beta05 zawiera te komisy.
Poprawki błędów
- Poprawka dotycząca obsługi wartości Nan w funkcjach
SnapFlingBehavior
i Pager.
Wersja 1.7.0-beta04
26 czerwca 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.7.0-beta04
została zwolniona. Wersja 1.7.0-beta04 zawiera te komity.
Poprawki błędów
- Unikaj awarii przy pomiarze bardzo dużych linii tekstowych (np. 10 tys. znaków) (8157ab).
- Poprawka dotycząca pomiaru bardzo dużego tekstu, który powodował awarię w nowej wersji
BasicTextField
(6b7575) - Przywracanie zmiany zachowania w pomiarze wiersza/kolumny, która w pewnych sytuacjach uniemożliwia korzystanie z tekstu (69e8ba)
Wersja 1.7.0-beta03
12 czerwca 2024 r.
androidx.compose.foundation:foundation-*:1.7.0-beta03
został zwolniony. Wersja 1.7.0-beta03 zawiera te zatwierdzenia.
Wersja 1.7.0-beta02
29 maja 2024 r.
androidx.compose.foundation:foundation-*:1.7.0-beta02
został zwolniony. Wersja 1.7.0-beta02 zawiera te komity.
Zmiany w interfejsie API
- Dodaje eksperymentalny interfejs API do konfigurowania zachowania wstępnego pobierania w
LazyGrids
, podobnego do dotychczasowego eksperymentalnego interfejsu API dlaLazyLists
. Obejmuje to obsługę wstępnego pobierania elementów w zagnieżdżonychLazyGrids
. Podobnie jak w przypadku interfejsuLazyListPrefetchStrategy
, domyślnie w ramach implementacji pobierane są wstępnie 2 elementy zagnieżdżone w każdej siatce, ale można to skonfigurować za pomocą nowych interfejsów APILazyGridPrefetchStrategy(nestedPrefetchItemCount)
iLazyListPrefetchStrategy#onNestedPrefetch
. (I591C4). - Zmieniono nazwę
SemanticsProperties.Editable
naIsEditable
, aSemanticsPropertyReceiver.editable
na wartośćisEditable
. Właściwość jest teraz typu logicznego i zawsze jest określana przez pola tekstowe. (I8acd8) - Wartości domyślne
basicMarquee
zostały przeniesione do obiektuMarqueeDefaults
. (I12ff6) - Zmieniono nazwę parametru
basicMarquee
delayMillis
narepeatDelayMillis
. (I12ff6) - Aktualizacja interfejsu API służącego do stylizacji linków: przeniesienie
TextLinkStyles
doTextStyle
i usunięcieTextDefaults
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ła współrzędne na podstawie tej flagi. (I3a330) - Usunęliśmy wartość domyślną „Domyślny” z usług
MarqueeDefaults
. (I1d8a0) - Usunięto „Marquee” z właściwości
MarqueeDefaults
. (Iad4f4) - Usunięto ucznia
TextLinkStyles
z zajęćTextStyle
. Zamiast tegoTextLinkStyles
jest częścią konstruktoraLinkAnntation
i metodyAnnotatedString.fromHtml
(I90b2b). - Naprawiliśmy błąd, który powodował, że wskaźnik ładowania przeskakiwał do pozycji docelowej, gdy już się na niej znajdował. (I9f373, b/339171222)
- Sekcja BTF2 zawiera teraz prawidłowe gesty wyboru myszy. (Ibe8c6)
Treści tłumaczone przez użytkowników zewnętrznych
- Ponownie prześlij „Make compose/measure time calculation content-type based in prefetch to improve accuracy” (Iea622)
- Zwiększenie dokładności obliczeń czasu tworzenia i pomiaru na podstawie typu treści w ramach funkcji prefetch (Ibccb1)
- Udostępnianie modyfikatorów
WindowInsetsPadding
z powszechnie używanego zbioru źródeł (I070b2)
Wersja 1.7.0-beta01
14 maja 2024 r.
androidx.compose.foundation:foundation-*:1.7.0-beta01
został zwolniony. Wersja 1.7.0-beta01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Ze względu na zgodność binarną z powrotem dodaliśmy właściwość
KeyboardOptions.shouldShowKeyboardOnFocus
jako wycofaną, ukrytą. (I15cfe). Modifier.anchoredDraggable
od teraz domyślnie odwraca wartości delta przeciągania w przypadku komponentów z orientacją poziomą, gdy są używane w układzie RTL. (I3c6d9)AnnotatedString.hasEqualsAnnotations
to terazhasEqualAnnotations
. (I685C0)- Zaktualizowano interfejs API w celu uzyskiwania linków w stylu Material w tekście. W szczególności usunęliśmy z
TextDefaults
metody tworzenia tematycznychLinkAnnotations
i analizowania kodu HTML za pomocą tematycznych linków. Zamiast tego dodaliśmy klasęTextLinkStyles
, która umożliwia stylizowanie linków jako parametru w komponowalnym elemencie tekstu. (I31b93) - Zastąpiliśmy
onDragStarted
ionDragStopped
wywołaniami zwrotnymi bez zawieszenia. (I59de8)
Poprawki błędów
- Naprawiono błąd, który powodował awarię Pager, gdy wartość
contentPadding
była większa niż przychodzące ograniczenia. Pager zmienia teraz wartości ujemne zwrócone zPageSize
na 0. (Iba5d8, b/314008560)
Wersja 1.7.0-alpha08
1 maja 2024 r.
androidx.compose.foundation:foundation-*:1.7.0-alpha08
został zwolniony. Wersja 1.7.0-alpha08 zawiera te komity.
Nowe funkcje
- Dodano menu kontekstowe dostępne po kliknięciu prawym przyciskiem myszy w elementach
BasicTextField
iSelectionContainer
, które zawiera opcje wycinania, kopiowania, wklejania i wybierania wszystkich. (If8c93, Ia2b49, I6f268)
Zmiany interfejsu API
LazyLayout
żądania wstępnego pobierania mogą być teraz oznaczone jako pilne, co oznacza, że spodziewamy się, że ten element będzie potrzebny w następnej klatce, i chcemy zignorować budżet klatek, aby mieć pewność, że wykonamy więcej pracy z wyprzedzeniem (Id513f)- Nazwa
isPositionedByParentWithDirectManipulation
została zmieniona naintroducesFrameOfReference
. Pamiętaj, że teraz ma on odwrotny skutek, co oznacza, że domyślnie większość wartościLayoutCoordinates
wprowadza system odniesienia, a właściwość będzie fałszywa tylko wtedy, gdy zostanie umieszczona w ramach bezpośredniej manipulacji. Aby zapytanie o pozycję zawierało tylko te, które wprowadzają punkt odniesienia, użyjpositionInLocalFrameOfReference(...)
. LubpositionInLocalLookaheadFrameOfReference
w sklepieLookaheadScope
. (Ifc5f7). - Nazwa
onClicked
została zmieniona naonClick
w elemencieLinkInteractionListener
(Iaa35c). - Zmień wartość lambda działania
getScrollViewportLength
zgodnie z opinią Rady API. (Ibc74a) - Zmieniono nazwy interfejsów API do przekazywania dostępu do obsługi pisania odręcznego rysikiem. (Ica45f, b/327271923)
- Zmień nazwę
TextInclusionStrategy.isInside
naisIncluded
. Ustaw zwracany typ funkcjiParagraph/MultiParagraph#getRangeForRect()
, który nie może mieć wartości null. (I51f26)
Poprawki błędów
- Dodano opcję „Zaznacz wszystko” do wszystkich menu kontekstowych tekstu w
SelectionContainer
. (Ib750e, b/240143283) - Naprawiono problem z robieniem długich zrzutów ekranu w przypadku przewijanych kontenerów (
reverseScrolling=true
). (I7c59c) - Rozwiązaliśmy problem polegający na tym, że
AnchoredDraggableState
currentValue
zmieniał się, gdy zbliżał się do granic stanu. (Iea30b, b/333846848)
Darowizna zewnętrzna
- Nazwa
PrefetchExecutor
została zmieniona naPrefetchScheduler
, aby lepiej odzwierciedlała zakres jej obowiązków. (IB9154) - Dodano obsługę wstępnego pobierania elementów w zagnieżdżonych
LazyLists
(np.LazyColumn
, który renderuje zagnieżdżonyLazyRows
). Ta zmiana powinna zmniejszyć liczbę opuszczonych klatek podczas przewijania tychLazyLists
. Domyślnie implementacja pobiera z wyprzedzeniem 2 pierwsze elementy zagnieżdżone, ale to zachowanie można kontrolować za pomocą nowych interfejsów APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
iLazyListPrefetchStrategy#onNestedPrefetch
. (I51952)
Wersja 1.7.0-alpha07
17 kwietnia 2024 r.
androidx.compose.foundation:foundation-*:1.7.0-alpha07
został zwolniony. Wersja 1.7.0-alfa07 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano obiekt
TextDefaults
, który zawiera metody służące do tworzeniaLinkAnnotation
i analizowania ciągu z tagami HTML, które mają zastosowanie do linków.MaterialTheme
(I98532, b/139312671) - Do funkcji
LazyVerticalGrid
iLazyHorizontalGrid
dodaliśmy obsługę animacji pojawiania się i znikania elementów. Wcześniej można było dodawać modyfikatorModifier.animateItemPlacement()
, aby obsługiwać animacje umieszczania (przestawiania). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwieModifier.animateItem()
, który umożliwia obsługę wszystkich 3 typów animacji: wyglądu (rozjaśniania), znikania (zanikania) i zmiany kolejności. (Ib7d12, b/330510929) - Dodaliśmy obsługę animacji pojawiania się i znikania elementów w wersjach
LazyVerticalStaggeredGrid
iLazyHorizontalStaggeredGrid
. Wcześniej można było dodać modyfikatorModifier.animateItemPlacement()
w celu obsługi animacji miejsca docelowego (zmiany kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwieModifier.animateItem()
, który umożliwia obsługę wszystkich 3 typów animacji: pojawiania się (w postępowaniu), znikania (w postępowaniu) i przestawiania. (I69bc9, b/330511290)
Zmiany w interfejsie API
- Dodaje
ContextMenuColors
i powiązany z nimLocalContextMenuTheme
ProvidableCompositionLocal
. Kolory menu kontekstowego w polach tekstowych i tekstach do wyboru można modyfikować, podając kompozycję lokalną. (Ifa154) - Oprócz normalnego stylu, najechania kursorem i zaznaczenia linki tekstowe otrzymały opcję stylizacji stanu naciśniętego. (I5f864, b/139312671)
- Wprowadź
ViewConfiguration.HandwritingGestureLineMargin
do gestów pisma odręcznego. Obsługa gestów pisma odręcznego w przypadkuBasicTextField
. (IE6e13, b/325660505) - Usunęliśmy
DelegatableNode.scrollIntoView
w wersji 1.7, ponieważ nie mieliśmy czasu na dokończenie stabilizacji reszty interfejsu API. Ta funkcja zostanie ponownie wprowadzona w wersji 1.8 (I6cf61, b/333421581, b/332900232) - Gdy wysyłasz zapytanie o współrzędne układu, możesz teraz użyć argumentu
excludeDirectManipulationOffset
, aby wykluczyć przesunięcie ustawione przez nadrzędne układy, które umieściły swoje podrzędne za pomocą argumentuPlaceable.PlacementScope.withDirectManipulationPlacement
. Podobnie układ, który często zmienia pozycję swoich elementów, może teraz umieszczać je za pomocąwithDirectManipulationPlacement
(np. przewijania, zaimplementowanego domyślnie). Zwiększa to intuicyjność animacjiapproachLayout
, umożliwiając rozróżnianie przesunięcia i zasady bezpośrednio przy animowaniu podejścia. (I60ec7). - Przedstaw
requestScrollToItem
dlaLazyStaggeredGrid
. W przypadku każdego pomiaru klient może teraz zrezygnować z utrzymywania indeksu na podstawie klucza, wywołując funkcjęrequestScrollToItem
. Nie zmienia to w żaden sposób dotychczasowego działania, chyba że wywołasz funkcjęrequestScrollToItem
. (I63983) - Przedstaw
requestScrollToPage
w Pager. W przypadku każdego pomiaru klient może teraz zrezygnować z utrzymywania indeksu na podstawie klucza, wywołując funkcjęrequestScrollToPage
. Nie zmienia to w żaden sposób dotychczasowego zachowania, chyba że wywołana zostanie metodarequestScrollToPage
. (Ic4213) - Wprowadzono
requestScrollToItem
dlaLazyGrids
. W przypadku każdego przebiegu pomiaru klient może teraz zrezygnować z utrzymywania indeksu na podstawie klucza, wywołując funkcjęrequestScrollToItem
. Nie zmienia to w żaden sposób dotychczasowego działania, chyba że wywołasz funkcjęrequestScrollToItem
. (I0a7a0) - Środowisko wykonawcze
ClickableText
zostało wycofane. Aby dodać linki do tekstu, utwórzAnnotatedString
zLinkAnnotation
odpowiadającym Twojemu linkowi i przekaż tenAnnotatedString
do komponentuText
(I34d4b, b/323346994). - Tag
UrlAnnotation
został wycofany. Zamiast niego używaj taguLinkAnnotation.Url
. Jeśli korzystasz z motywów Material Design, użyj obiektuTextDefaults
, aby utworzyć adnotację z zastosowanymi motywami Material Design (I8d180, b/323346545). String.parseAsHtml
został przemianowany naAnnotatedString.Companion.fromHtml
(I43dcd)- Do metody
parseAsHtml
dodano argumenty stylizacji (linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) i obsługę interakcji z linkami. Podczas analizowania ciągu znaków z tagami HTML (<a>
) metoda tworzy obiektLinkAnnotation.Url
dla każdego takiego tagu, a także przekazuje obiekty stylizacji i słuchacz interakcji z linkiem do każdej adnotacji. (I7c977) - Funkcja
LinkAnnotation
przyjmuje teraz argumenty stylizacji oparte na stanie i argumentLinkInteractionListener
. Dodaj tę adnotację do elementuAnnotatedString
, aby uzyskać hiperlink. PrzekazującfocusedState
lubhoveredState
, możesz zdefiniować konfigurację wizualną linków, gdy są one w fokusie lub gdy nad nimi się unosisz. (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, które zostały wprowadzone wraz z nową wersją
BasicTextField
. (I714e2) - Dodano parametr
textObfuscationCharacter
doBasicSecureTextField
, który określa, którego znaku użyć podczas zaciemniania treści. (I0588b) - Źródła danych
NestedScroll
Drag and Fling są zastępowane przezUserInput
iSideEffect
, aby uwzględnić rozszerzoną definicję tych źródeł, która obejmuje teraz animacje (Side Effect) oraz koło i klawiaturę myszy (UserInput
). (I40579) - Wprowadzić
LocalBringIntoViewSpec
, czyli sposób przewijania zależny od platformy, który jest stosowany na poziomie modyfikatora Scrollable. (I27aa5, b/317453911) - Użytkownik
TextFieldCharSequence
został usunięty.TextFieldBuffer.originalValues
jest zastępowane przezTextFieldBuffer.originalText
iTextFieldBuffer.originalSelection
. (I2c7d6) - Pole
ImeOptions.hintLocales
nie może już dopuszczać wartości null. Jeśli chcesz przekazać pustą listę języków, użyj wartościLocaleList.Empty
. (Ic5bc4) - Nazwa
getOffsetFractionForPage
została zmieniona nagetOffsetDistanceInPages
. (Ia05e2)
Poprawki błędów
- Gdy
InputTransformations
są złączane znext
, ichKeyboardOptions
są teraz prawidłowo scalane według poszczególnych opcji za pomocą nowej metodyKeyboardOptions.merge
. (Ie5304, b/295951492) - Funkcja
AnchoredDraggableState
wtargetValue
nie uwzględnia już progów pozycji. Teraz ma on domyślny próg 50%, co oznacza, że wartośćtargetValue
zmienia się w środku między 2 punktami kotwiczenia. (I82c2c)
Darowizna zewnętrzna
- Zmieniono nazwy 2 interfejsów API przewijania (I56a75)
Wersja 1.7.0-alpha06
3 kwietnia 2024 r.
androidx.compose.foundation:foundation-*:1.7.0-alpha06
został zwolniony. Wersja 1.7.0-alpha06 zawiera te komisy.
Nowe funkcje
- Dodaliśmy obsługę animacji pojawiania się i znikania elementów w wersjach
LazyColumn
iLazyRow
. Wcześniej można było dodawać modyfikatorModifier.animateItemPlacement()
, aby obsługiwać animacje umieszczania (przestawiania). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwieModifier.animateItem()
, który umożliwia obsługę wszystkich 3 typów animacji: pojawiania się (w postępowaniu), znikania (w postępowaniu) i przestawiania. (I2d7f7, b/150812265) - Klienci
LazyColumn/LazyRow
mogą teraz zrezygnować z utrzymywania indeksu na podstawie klucza następnego przebiegu pomiarów, wywołując metodęLazyListState.requestToScroll
niezawieszoną. (I98036, b/209652366) - Dodaliśmy metodę
parseAsHtml
dla ciągów znaków ze stylami: umożliwia ona konwertowanie ciągu znaków oznaczonego tagami HTML naAnnotatedString
. Pamiętaj, że nie wszystkie tagi są obsługiwane, na przykład nie będzie jeszcze można wyświetlać list punktowanych. (I84d3d) - Wdrożyliśmy eksperymentalne wsparcie dla długich zrzutów ekranu w slajdach przewijania w Compose za pomocą oficjalnego interfejsu API Androida (
ScrollCaptureCallback
). Ta funkcja jest eksperymentalna i obecnie może nie działać prawidłowo we wszystkich przypadkach. Z tego powodu jest ono domyślnie wyłączone. Aby je włączyć, ustaw flagęComposeFeatureFlag_LongScreenshotsEnabled
na wartość prawda. Ten znacznik zostanie usunięty przed wersją beta 1.7. (I2b055, b/329296471) - Wprowadzaj nowy interfejs API
GraphicsLayer
, aby zapewnić większą elastyczność w umieszczaniu i renderowaniu instancjiGraphicsLayer
oraz obsługiwać wbudowane funkcje renderowania bez konieczności koordynowania z implementacjami kompozycyjnymi określania instancji modyfikatoraGraphicsLayer
.
Zmiany w interfejsie API
- Wszystkie parametry
KeyboardOptions
mają teraz domyślnie nieokreśloną wartość. Dodano metodęKeyboardOptions.merge
. - Zmieniliśmy nazwę pola
KeyboardOptions.autoCorrect
naautoCorrectEnabled
i nadaliśmy mu możliwość przyjmowania wartości null, gdzie null oznacza, że nie określono wartości. (Ia8ba0, b/295951492) - Nazwa
outOfBoundsPageCount
została zmieniona nabeyondViewportPageCount
. (I129c6) - Wartość
fun ClipEntry.getMetadata()
została zmieniona naval ClipEntry.clipMetadata
. (I50155) - Użytkownik
TextFieldState.valueAsFlow()
został usunięty. Wolę używać:snapshotFlow { state.text }
lubsnapshotFlow { TextFieldCharSequence(state.text, state.selection) }
(I7d629) - Zmieniono organizację parametrów
InputTransformation.transformInput
. UsuniętooriginalValue: TextFieldCharSequence
. Zamiast tego elementTextFieldBuffer
zawiera teraz tę samą wartość. Usunęliśmy też parametrvalueWithChanges: TextFieldBuffer
.TextFieldBuffer
jest teraz zakresem odbiorczym funkcji. (I919cc) - Wariant
BasicTextField(state)
iBasicSecureTextField
używają teraz parametruKeyboardActionHandler
zamiastKeyboardActions
do przetwarzania działań wykonanych przez klawiaturę programową. (I58dda) - interfejsy API delegowania pisma odręcznego rysikiem do obsługi pisma odręcznego rysikiem w „fałszywych” polach tekstowych; (I9c09c, b/327271923)
- Nazwa
KeyboardOptions.shouldShowKeyboardOnFocus
została zmieniona nashowKeyboardOnFocus
. (Ib4b7a, b/295951492) - Parametr
hintMediaTypes
został usunięty z funkcjiModifier.contentReceiver
. Deweloperzy zostali już zachęceni do sprawdzenia typu mediów otrzymanegoTransferableContent
, ponieważ może on być niezgodny z skonfigurowanymhintMediaTypes
. (I82f99) - Zmieniono kolejność parametrów w funkcji
BasicSecureTextField
. Usunięto parametrykeyboardType
iimeAction
na rzecz pełnej klasyKeyboardOptions
przy zachowaniu tych samych wartości domyślnych odpowiednich dla klasyBasicSecureTextField
. Usunęliśmy też parametrscrollState
. (Ibbfa9) - Typ użytkowniczki
TextFieldState.text
został zmieniony zTextFieldCharSequence
na tylkoCharSequence
. Dlatego dodano funkcjeTextFieldState.selection: TextRange
iTextFieldState.composition: TextRange?
, aby odczytywać wartości bieżącego 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żyj poleceniaclipEntry.getMetadata()
. Sprawdź też, czy wynik funkcjiClipboardManager.getClip
jest równy null, aby dowiedzieć się, czy schowek zawiera bieżący klip. (I50498) ClipboardManager.setClip
może teraz przyjmować wartość null, aby można było wyczyścić schowek. (I7d2e9)ReceiveContentListener
jest konwertowany na interfejs funkcji. Usunięto też przeciążenieModifier.receiveContent
, które przyjmuje funkcję lambda, ponieważReceiveContentListener
jest teraz interfejsem funkcji.- Nazwa
Modifier.receiveContent
została zmieniona naModifier.contentReceiver
. (I1e6af) - Nazwa
TransferableContent.consumeEach
została zmieniona naTransferableContent.consume
. (I1e462) - Usługa
rememberTextFieldState
jest teraz dostępna w wersji stabilnej. (I37999)
Poprawki błędów
- Naprawiliśmy błąd, który powodował, że wariant
BasicTextField(state)
nie działał z klawiaturami CJK(opartymi na kompozycjach). (I54425) - Usunęliśmy błąd, który powodował, że
Modifier.dragAndDropTarget()
mogło odwoływać się do nieaktualnych danych w niektórych scenariuszach ponownego użyciaModifier.Node
. (I05bb1) - Cofnięto niedawną zmianę w umowie, w której wywołania funkcji
AnchoredDraggableState#anchoredDrag
byłyby wywoływane po zakończeniu operacjianchoredDrag
. (I95715)
Wersja 1.7.0-alpha05
20 marca 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.7.0-alpha05
została zwolniona. Wersja 1.7.0-alfa05 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Usunięto eksperymentalną kompozycję
LocalTextLinkStyle
lokalną do stylizowania hiperlinków. (Iebfa7) - Usunięto eksperymentalne zastąpienie
BasicText
argumentemonLinkClicked
. W przyszłości wprowadzimy zamienny interfejs API do obsługi hiperlinków. (I107d5) - Usunięto metody i właściwości związane z kodami znaków w klasach
TextFieldState
iTextFieldBuffer
. Usunęliśmy też sufiksyinChars
z pozostałych interfejsów API związanych z wybieraniem i komponowaniem. (Ief7ce) - Wartość
AnchoredDraggable
będzie się teraz aktualizować, gdy przejdzie przez punkt zakotwiczenia.currentValue
UżyjsettledValue
, aby otrzymać poprzednią semantykęcurrentValue
, która aktualizuje się tylko podczas osadzania w ankarze. Postęp jest teraz wyświetlany jako funkcja (wymagająca punktu początkowego i końcowego) zamiast właściwości. (Ibe6e8, b/318707189, b/298271489, b/294991954) BasicTextField(state)
,TextFieldState
,InputTransformation
,OutputTransformation
,TextFieldLineLimits
,TextFieldDecorator
zostały przeniesione do wersji stabilnej. (I9582b)- Wprowadziliśmy
InterceptPlatformTextInput
, aby ułatwić pisanie testów niskiego poziomu związanych z IME i inne przypadki użycia IME na niskim poziomie. UsługaPlatformTextInputTestOverride
została wycofana. (I862ed, b/322680547) - Podziel
restrictedConstraints()
na 2 metody:fitPrioritizingWidth()
ifitPrioritizingHeight()
(I6d7fd)
Treści tłumaczone przez użytkowników zewnętrznych
- Dodano 2 nowe interfejsy API
isLastScrollForward
/isLastScrollBackward
, które sprawdzają kierunek przewijania dla ostatniego działania przewijania. Zwracają wartość false, jeśli nie ma jeszcze działania przewijania. (I63a0e)
Wersja 1.7.0-alpha04
6 marca 2024 roku
androidx.compose.foundation:foundation-*:1.7.0-alpha04
został zwolniony. Wersja 1.7.0-alfa04 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Obsługa funkcji pisma odręcznego rysikiem na urządzeniach z Androidem U (I002e4)
- Dodano
hintLocales
doKeyboardOptions
, aby umożliwićTextFields
wyświetlanie podpowiedzi w systemach IME z określonymi lokalizacjami, które umożliwiają wstępne ustawienie preferowanego języka. (Id18c2) - Usunięto eksperymentalne przeciążenia
BasicTextField2
iBasicSecureTextField
, które miały parametryvalue: String
ionValueChange: () -> String
. (I568b4) - Dodaj do funkcji
InputTransformation
opcjonalną funkcjęapplySemantics
, aby wpływać na semantykę funkcjiBasicTextField2
, do której jest ona stosowana. (I74a2f, b/170648072) - W tej liście zmian dodajemy działanie semantyczne
GetScrollViewportLength
, aby umożliwić przekazywanie do systemu a11y informacji o komponentach przewijanych w ramach tworzenia wiadomości. Ta lista zmian stosuje również użycie tej właściwości na przewijanych listach podstawowych. (Ic5fa2) - Nazwa
BasicTextField2
została zmieniona naBasicTextField
. (Ie5713) FocusRequester.createRefs
jest teraz stabilna (I4d92c, b/261436820)- Wprowadziliśmy funkcję
DelegatableNode.scrollIntoView()
, aby umożliwić węzłom modyfikatorów bezpośrednie wysyłanie żądańscrollIntoView
. (I2b3b7, b/299939840) - Wprowadziliśmy funkcję
DelegatableNode.requireView()
, aby umożliwić węzłom modyfikatorów pobieranie bieżącego AndroidaView
bez odczytywania kompozycji lokalnie. (I40768) - Wprowadzamy informacje o kontekstowym układzie w ramach zakresu wiersza w ramach procesu kontekstowego i zakresu kolumny w ramach procesu kontekstowego, w tym indeks linii, pozycję oraz ograniczenia dotyczące maksymalnej szerokości i wysokości, aby zachować określony układ. Elementy, które przekraczają maksymalną szerokość lub wysokość, mogą być przenoszone na następny wiersz lub pomijane na podstawie ustawień przepełnienia. (Id13f8, b/292114798)
Poprawki błędów
- Naprawiliśmy błąd, który w pewnych warunkach powodował awarię podczas przełączania atrybutów
enabled
lubreadOnly
w elementachTextField
. (Iae17b).
Wersja 1.7.0-alpha03
21 lutego 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.7.0-alpha03
została zwolniona. Wersja 1.7.0-alfa03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wprowadziliśmy funkcję
DelegatableNode.requireLayoutCoordinates()
, która umożliwia uzyskanie aktualnejLayoutCoordinates
obiektuModifier.Node
bez konieczności zastępowaniaonPlaced
i samodzielnego przechowywania współrzędnych w obiekcie. (Ia8657) - Wprowadziliśmy funkcję
DelegatableNode.currentLayoutCoordinates
, która umożliwia uzyskanie aktualnejLayoutCoordinates
obiektuModifier.Node
bez konieczności zastępowaniaonPlaced
i samodzielnego przechowywania współrzędnych w obiekcie. (Iaebaa) - Optymalizacje skuteczności w
DraggableAnchors
używane przezAnchoredDraggable
. (I89cff) - Interfejs
BasicTextField2
i powiązane z nim interfejsy API w pakiecieandroidx.compose.foundation.text2
zostaną przeniesione do pakietuandroidx.compose.foundation.text
. (I9f635) - Funkcja
BasicTextField2
nie akceptuje już parametruCodepointTransformation
. Użyj właściwościBasicSecureTextField
lubOutputTransformation
. (Id34ff). - Dodano metodę do porównywania tylko adnotacji 2
AnnotatedStrings
. (I32659) - Przedstawiamy
ContextualFlowRow
i ulepszoneFlowRow
/Column
w usługachMaxLines
iOverflow
. Z przyjemnością informujemy, że udoskonaliliśmy eksperymentalne funkcjeFlowRow
iFlowColumn
, które teraz obsługująmaxLines
i przepełnienie. Wprowadziliśmy też funkcjeContextualFlowRow
iContextualFlowColumn
. To uaktualnienie ma na celu zapewnienie optymalnej wydajności komponentów.ContextualFlow*
doskonale nadaje się do dużej liczby elementów, korzystających z małej konfiguracjimaxLines
i dynamicznych przycisków „Pokaż więcej” +N, aFlowRow
iFlowColumn
są idealne do małej liczby elementów (mniej niż 100). Ważne: aby zachować dotychczasowe działanie funkcjiFlowRow
lubFlowColumn
, w której wszystkie elementy są łączone niezależnie od tego, czy pasują do maksymalnej wartości osi poprzecznej, podczas inicjalizacji ustaw wartość parametruoverflow
naFlowRowOverflow.Visible
lubFlowColumnOverflow.Visible
. Zapoznaj się z usługamiContextualFlowRowSample
iFlowRowSample
, aby zobaczyć przykłady tych nowych funkcji w praktyce. (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
Zdezaktualizowane konstruktory kopii będą teraz poprawnie kopiować wszystkie właściwości. (If12de).
Wersja 1.7.0-alpha02
7 lutego 2024 r.
androidx.compose.foundation:foundation-*:1.7.0-alpha02
został zwolniony. Wersja 1.7.0-alpha02 zawiera te commity.
Zmiany interfejsu API
HorizontalPager
,VerticalPager
iPagerState
są awansowane do wersji stabilnej. (I67660, b/316966909)- Dodano lokalną kompozycję
LocalTextLinkStyle
, która pozwala zmieniać styl linków w tekście w aplikacji. Jeśli używasz w aplikacji własnego motywu, ustaw tę kompozycję lokalnie zgodnie z określonym motywem. Jeśli używasz motywu Material, kolor linku zostanie domyślnie ustawiony na kolor podstawowy Material. (I7eb10) - Wprowadziliśmy modyfikator
receiveContent
, który umożliwia deweloperom odbieranie treści multimedialnych w Jetpack Compose. receiveContent
integruje się zBasicTextField2
, aby akceptować rozbudowane treści dostarczane przez klawiaturę programową lub przez wklejanie ze schowka. (I81b72)- W ramach tej zmiany zastępujemy funkcję
SnapFlingBehavior
na stronie typuTargetedFlingBehavior
, aby odblokować inne przypadki użycia i zapewnić większą elastyczność. (I762ea) - W ramach tej zmiany ustanawiamy stabilny interfejs Snapping API. Usuwamy też część kodu testowego i dodajemy więcej przykładów do Snapping. (Id8da9)
- Przedstaw
TargetedFlingBehavior
, czyli obiektFlingBehavior
, który umożliwia propagację informacji o stanie trwającej animacji i docelowego przesunięcia przewijania. (I6a207)
Poprawki błędów
BasicTextField2
Podczas pisania kursor jest teraz widoczny, nawet jeśli przewiniesz go poza ekran lub zostanie on przeniesiony poza ekran z powodu wpisywania. (Ieb856, b/237190748)
Treści tłumaczone przez użytkowników zewnętrznych
- Dodaje eksperymentalny interfejs API do konfigurowania zachowania wstępnego pobierania listy leniwych. (I022a4)
Wersja 1.7.0-alpha01
24 stycznia 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.7.0-alpha01
została zwolniona. Wersja 1.7.0-alpha01 zawiera te commity.
Nowe funkcje
- Dodano nowy
Indication API
:IndicationNodeFactory
. Dzięki temu implementacjeIndication
będą wydajniejsze niż w przypadku poprzedniego (obecnie wycofanego) interfejsu APIrememberUpdatedInstance
. Informacje o migracji znajdziesz na stronie developer.android.com. - Funkcja
clickable / combinedClickable / selectable / toggleable
przyjmuje teraz parametrMutableInteractionSource
, który może być pusty. Jeśli wartość to null, a podana wartośćIndication
toIndicationNodeFactory
,Indication
można utworzyć leniwie tylko wtedy, gdy jest to konieczne, co zwiększa wydajność. Jeśli nie używasz funkcji hoisting i nie korzystasz z elementuMutableInteractionSource
, zalecamy przekazanie wartości null.
Zmiany w interfejsie API
- Wprowadzanie
DecayAnimation
wAnchoredDraggable
. Ta zmiana dodaje parametrdecayAnimationSpec
doAnchoredDraggable
, co umożliwia korzystanie z animacji zanikania podczas osadzania w jednym z punktów kotwiczenia. Zmiana obejmuje też zmianę nazwy istniejącej specyfikacjianimationSpec
nasnapAnimationSpec
, aby ułatwić zrozumienie zastosowania każdej specyfikacji. BasicTextField2
jest dostępna do użytku eksperymentalnego. Powinna ona mieć mniej więcej takie same funkcje coBasicTextField
, a jej działanie powinno być gotowe do wdrożenia. Interfejs API jest jednak nadal w fazie eksperymentalnej. Zanim zostanie ustabilizowana, zmienimy jej nazwę naBasicTextField
i przeniesiemy do tego samego pakietu.- Wprowadziliśmy pierwszą wersję roboczą interfejsu API
OutputTransformation
dla usługiBasicTextField2
. Ten interfejs API zastępuje większość przypadków użycia interfejsuVisualTransformation
w starym interfejsieBasicTextField
. Nie jest on jeszcze kompletny, więc niektóre rzeczy mogą nie działać prawidłowo. Będziemy jednak wdzięczni za wszelkie opinie na temat użyteczności interfejsu API w Twoich przypadkach użycia. (Aosp/2708848). - Wprowadziliśmy
LinkAnnotation
, który umożliwia dodawanie linków i elementów klikalnych do tekstu. Funkcja linków nie jest jeszcze gotowa, a wkrótce wprowadzimy kolejne zmiany w interfejsie API. - Wprowadziliśmy modyfikator
receiveContent
, który umożliwia deweloperom odbieranie treści multimedialnych w Jetpack Compose. receiveContent
integruje się z usługąBasicTextField2
, aby akceptować multimedialne treści dostarczane przez klawiaturę programową lub wklejane ze schowka.KeyboardOptions.shouldShowKeyboardOnFocus
umożliwia wyłączenie domyślnego zachowaniaBasicTextField
polegającego na wysyłaniu żądań klawiatury programowej w przypadku fokusu.- Funkcje
TextInputService
iLocalTextInputService
zostały wycofane. Zamiast tego użyj interfejsuPlatformTextInputModifierNode
, aby zintegrować się bezpośrednio z interfejsami IME platformy. (aosp/2862698) - Usługa
Indication#rememberUpdatedInstance
została wycofana. Ma ona duży, nieunikniony wpływ na wydajność i uniemożliwia inne optymalizacje. Zamiast tego użyj nowego interfejsu APIIndicationNodeFactory
.
Poprawki błędów
- Funkcja
BasicTextField
będzie teraz sprawdzać przed weryfikacją małą grupę mapowań przesunięć, gdy zostanie przekazana funkcjaVisualTransformation
. Pomaga to wychwytywać typowe błędy w kodzie, które prowadzą do nieodwracalnych wyjątków w późniejszym pomiarze lub pobieraniu kart. Jest większe prawdopodobieństwo, że deweloperzy zobaczą te błędy w trakcie tworzenia kodu, co pomoże uniknąć awarii w środowisku produkcyjnym. (I0fd42) VisualTransformation
nie zwróci kodu, jeśli zwrócisz nieprawidłowy indeks dla nieprawidłowego indeksu (b/316401857 )
Wersja 1.6
Wersja 1.6.8
12 czerwca 2024 r.
androidx.compose.foundation:foundation-*:1.6.8
został zwolniony. Wersja 1.6.8 zawiera te zatwierdzenia.
Wersja 1.6.7
1 maja 2024 r.
androidx.compose.foundation:foundation-*:1.6.7
został zwolniony. Wersja 1.6.7 zawiera te zatwierdzenia.
Wersja 1.6.6
17 kwietnia 2024 r.
androidx.compose.foundation:foundation-*:1.6.6
został zwolniony. Wersja 1.6.6 zawiera te komity.
Poprawki błędów
- Naprawiliśmy błąd, który w pewnych warunkach powodował awarię podczas przełączania atrybutów
enabled
lubreadOnly
w elementachTextField
. (Iae17b)
Wersja 1.6.5
3 kwietnia 2024 r.
androidx.compose.foundation:foundation-*:1.6.5
został zwolniony. Wersja 1.6.5 zawiera te komity.
Poprawki błędów
- Dodaje dzienniki debugowania do błędów trudnych do odtworzenia w przypadku wiersza lub kolumny (b/300280216 i b/297974033).
Wersja 1.6.4
20 marca 2024 r.
androidx.compose.foundation:foundation-*:1.6.4
został zwolniony. Wersja 1.6.4 zawiera te komitowane zmiany.
Poprawki błędów
- Długie naciśnięcie i przeciągnięcie, które powoduje wyjście poza granice układu tekstu w pierwszym ujęciu przeciągania, nie powoduje już awarii. (Icdf90, b/325307463)
Wersja 1.6.3
6 marca 2024 roku
androidx.compose.foundation:foundation-*:1.6.3
został zwolniony. Wersja 1.6.3 zawiera te zatwierdzenia.
Wersja 1.6.2
21 lutego 2024 r.
androidx.compose.foundation:foundation-*:1.6.2
został zwolniony. Wersja 1.6.2 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawić
AnimateContentSize
, który nie resetuje się prawidłowo. (I07051) - Rozwiązanie problemu polegającego na tym, że w niektórych okolicznościach
intrinsicHeight
tekstu było nadmiernie buforowane. (3cd398, b/217910352)
Wersja 1.6.1
7 lutego 2024 r.
androidx.compose.foundation:foundation-*:1.6.1
został zwolniony. Wersja 1.6.1 zawiera te zatwierdzenia.
Poprawki błędów
- Poprawiono pomiar siatki o zmiennej długości, gdy przewijano ją poza limit. (bffc39)
- Dodaj sprawdzanie układu o dużych wymiarach. (e74af5)
- Poprawiono umieszczanie elementów o rozmiarze 0 na początku siatki rozłożonej. (785f94)
- Wywołanie funkcji onRelease w tej samej kolejności co funkcja onForgotten. (31ce3b)
Wersja 1.6.0
24 stycznia 2024 r.
androidx.compose.foundation:foundation-*:1.6.0
został zwolniony. Wersja 1.6.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.5.0
- Nowy modyfikator
Modifier.anchoredDraggable
, który umożliwia przeciąganie i animowanie między zdefiniowanymi wstępnie punktami kotwiczenia. Ten modyfikator ma zastąpićModifier.swipeable
. Więcej informacji o tym, jak korzystać z tej usługi i jak przeprowadzić migrację zModifier.swipeable
, znajdziesz w przewodniku po migracji. - Dodano funkcję przeciągania i upuszczania między aplikacjami i komponentami. Aby rozpocząć, skorzystaj z interfejsów
DragAndDropTarget
,Modifier.dragAndDropSource
i innych interfejsów API. Modifier.draggable2D
to nowy modyfikator, który umożliwia łatwe przeciąganie elementów 2D. Zobacz przykład.- Dodano komponenty
AndroidExternalSurface
iAndroidEmbeddedExternalSurface
, aby ułatwić dodawanie komponentów opartych na powierzchni w edytorze. - Różne zmiany i ulepszenia interfejsu API w wersjach
Pager
isnapFlingBehaviour
- Interfejsy API dotyczące różnych funkcji fokusowania, tekstu i wstawek zostały przeniesione do stabilnych interfejsów API.
Wersja 1.6.0-rc01
10 stycznia 2024 r.
androidx.compose.foundation:foundation-*:1.6.0-rc01
został zwolniony. Wersja 1.6.0-rc01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Konstruktor rozszerzenia
DragAndDropTarget()
został usunięty. Utwórz nową instancję przy użyciu dodatkuobject: DragAndDropTarget {}
. (I32318)
Wersja 1.6.0-beta03
13 grudnia 2023 r.
Usługa androidx.compose.foundation:foundation-*:1.6.0-beta03
została zwolniona. Wersja 1.6.0-beta03 zawiera te zatwierdzenia.
Poprawki błędów
- Usunięto awarię, która wpływała na bardzo duży tekst mierzony z nieskończonymi ograniczeniami. (I1a7df, b/312294386)
PlatformImeOptions
jest teraz konkretną klasą, a nie interfejsem. (If40a4)
Wersja 1.6.0-beta02
29 listopada 2023 r.
Usługa androidx.compose.foundation:foundation-*:1.6.0-beta02
została zwolniona. Wersja 1.6.0-beta02 zawiera te zatwierdzenia.
Poprawki błędów
- Poprawiono błąd związany z brakiem aktualizacji elementu
canScroll
po przewijaniu w trybie przekazywania. (I60a86) - Naprawiono problemy z funkcjami
Modifier.animateItemPlacement()
iLookaheadScope
po niewielkim przewinięciu. (I3a2b7)
Wersja 1.6.0-beta01
15 listopada 2023 r.
Usługa androidx.compose.foundation:foundation-*:1.6.0-beta01
została zwolniona. Wersja 1.6.0-beta01 zawiera te commity.
Zmiany w interfejsie API
- Modyfikator
DragAndDropTarget
przyjmuje teraz parametrDragAndDropTarget
w sposób jawny i ma funkcję lambda, która umożliwia włączenie sesji przeciągania i upuszczania. Teraz w przypadkuDragAndDropModifierNode
istnieją 2 funkcje fabryczne. jeden do odbierania transferów, a drugi do przesyłania danych (I69481) - Zaktualizowano
maximumFlingVelocity
, aby reprezentować je jako typ danych Float. Zaktualizowano dokumentację, aby była bardziej przejrzysta w sprawiemaximumFlingVelocity
. (I8adc7). Urządzenie
onDragAndDropStart
w fabryceDragAndDropModifierNode
nosi teraz nazwęacceptDragAndDropTransfer
.Do
dragAndDropTarget
Modifier
został dodany elementacceptsDragAndDropTransfer
, aby zaakceptować go podczas sesji przeciągania i upuszczania. Ta funkcja lambda zwracaDragAndDropTarget
, jeśli chcesz przeprowadzić sesję przeciągania i upuszczania. Zastąpiły one inne parametry lambda do przetwarzania zdarzeń przeciągania.dodano funkcję fabryczną
DragAndDropTarget
, która przyjmuje dane z sesji przeciągania i upuszczania (Iebf3a);Wyświetlanie
startDragImmediately
wAnchoredDraggable
umożliwia kontrolowanie wykrywania gestów przeciągania podczas używania. Jest to przydatne, gdy widżet jest animowany do docelowej kotwicy. Zobacz Fragment. (Ie6d13, b/285139987)Interfejsy API etykietki podstawy są teraz dostępne w wersji
@ExperimentalFoundationApi
(I30b0b).Usunięto
DragAndDropInfo
jako typDragAndDropModifierNode.drag
teraz zawiera parametry funkcjitransferData
, rozmiar dekoracji i przeciąganie elementów lambdaDrawScope
Funkcja
DragAndDropTarget
nie jest pojedynczą metodą abstrakcyjną, lecz udostępnia metody dotyczące konkretnych zdarzeń przeciągania i upuszczania.Nazwa
onDragAndDropEvent
w funkcji fabrycznej urządzeniaDragAndDropModifierNode
została zmieniona naonDragAndDropStart
, aby lepiej poinformować, że podana wartośćDragAndDropTarget
jest ważna tylko w przypadku danej sesji przeciągania i upuszczaniaOpcja
DragAndDropEventType
została usunięta (I645b1).Nazwa
PlatformTextInputModifierNode.runTextInputSession
została zmieniona naestablishTextInputSession
. (I03cd0)Zastąp
OriginalText
wartościąTextSubstitution
. (Ifa5a8)Nazwa
PlatformTextInputModifierNode.textInputSession
została zmieniona narunTextInputSession
. (Ie9c6b)Elementy podrzędne elementu
SubcomposeLayout
(i układy takie jakLazyColumn
), które są zachowywane do ponownego wykorzystania w przyszłości, są uznawane za wyłączone. Wprowadziliśmy nowy interfejs API testówassertIsDeactivated()
, który umożliwia testowanie takich węzłów. Pozostałe interfejsy API domyślnie odfiltrowują wyłączone węzły. (I2ef84, b/187188981)Parametr
clippingEnabled
w komponencieModifier.magnifier
został przemianowany naclip
.Parametr
magnifierCenter
typuModifier.magnifier
staje się dopuszczalnie pusty, zachowując to samo zachowanie domyślne. (I6aa66)Interfejsy API Material
SwipeToReveal
(do tworzenia kart i elementów) korzystają teraz z interfejsu API opartego na slotach (zgodnie z zaleceniem Compose) zamiast z instancji opartych na klasie danych. Jest to zmiana powodująca przerwanie działania. Aby dowiedzieć się, jak korzystać z nowego interfejsu API, zapoznaj się z demonstracją i przykładowym kodem. (Ia8943)
Poprawki błędów
- Zaimplementuj kod równa się i kod skrótu dla funkcji
PageSize.Fixed
. (Ie3ede, b/300134276) - Naprawiono błąd, który powodował, że układ
BasicText
nie zmniejszał się po zmianie parametruminWidth
i ominWidth
poniżej wartości ograniczenia wskaźnika początkowegomaxWidth
(Idb19c) - Dodano obsługę mechanizmu renderowania dla gradientu automatycznego w
ArcLine
. (I4d5bb) - Rozwiązanie problemu z zgodnością binarną w związku ze zmianą w oknie (Iee695)
- Usuń warstwę główną materiału w przypadku elementu lub przycisku Material3, ponieważ mikrotesty pokazują lepszą wydajność bez niej. (I55555)
Wersja 1.6.0-alpha08
18 października 2023 r.
androidx.compose.foundation:foundation-*:1.6.0-alpha08
został zwolniony. Wersja 1.6.0-alpha08 zawiera te commity.
Nowe funkcje
Modifier.draggable2D
to nowy modyfikator, który umożliwia łatwe przeciąganie w 2D. Zobacz przykład (Id95f5, b/214412658)
Zmiany interfejsu API
- W funkcji
Modifier.dragAndDrawSource
nazwa funkcji lambdaonDrawDragShadow
została zmieniona nadrawDragDecoration
, a w funkcjiDragAndDropInfo
parametr size nadragDecorationSize
. (Id0e30, b/303904810) - Parametr „
decorationBox
” funkcjiBasicTextField2
został przemianowany na „decorator
”. Jego typ został też zmieniony na odpowiedni interfejs zabawyTextFieldDecorator
. (I23c1c)
Poprawki błędów
- Ulepszona dokumentacja dotycząca
BasicTextField
(wymagania dotycząceonValueChange
). (I90fc9, b/160257648)
Wersja 1.6.0-alpha07
4 października 2023 roku
androidx.compose.foundation:foundation-*:1.6.0-alpha07
został zwolniony. Wersja 1.6.0-alpha07 zawiera te commity.
Zmiany w interfejsie API
- Wprowadziliśmy
PlatformTextInputMethodTestOverride
do testowania pisania testów w niestandardowych edytorach tekstu. (Id159b) - Zmieniono nazwę z
GraphicsSurface
naAndroidExternalSurface
(I11680) - Dodano tymczasową flagę
DisableNonLinearFontScalingInCompose
, aby wyłączyć nieliniowe skalowanie czcionek. Jeśli potrzebujesz czasu na uporządkowanie testów, ustaw w nich wartośćDisableNonLinearFontScalingInCompose = true
. Ta flaga zostanie usunięta z interfejsu Compose w wersjach 1.6.0-beta01. (IC9486) - Dodano kolekcje
ColorList
iColorSet
, które pozwalają uniknąć alokacji. (I744bd) - Ta zmiana usuwa
shortSnapVelocityThreshold
, która została przekształcona w szczegóły implementacji w ramach implementacjiSnapLayoutInfoProvider
. (I65f6d) - Dodaje modyfikator
dragAndDropSource
do inicjowania sesji przeciągania i upuszczania oraz modyfikatordragAndDropTarget
do odbierania danych z sesji przeciągania i upuszczania (Ib7828, b/286038936). - Zaktualizuj dokumentację
SnapPositionInLayout
i metodę pozycjonowania. Wprowadź dopełnienia treści do metody pozycjonowania wSnapPositionInLayout
. (Id7938, b/300116110) - Dodaliśmy do
UndoState
opcjęUndoState
, która umożliwia cofanie i ponawianie wprowadzonych przez użytkownika zmian.TextFieldState
(Icc024)
Poprawki błędów
- Rozwiązanie problemu polegającego na tym, że
basicMarquee
nie animuje się po zmianie prędkości. (Id2e77, b/297974036)
Wersja 1.6.0-alpha06
20 września 2023 r.
androidx.compose.foundation:foundation-*:1.6.0-alpha06
został zwolniony. Wersja 1.6.0-alpha06 zawiera te commity.
Nowe funkcje
- Nowe komponenty opakowania dla funkcji
SurfaceView
,TextureView: GraphicsSurface()
iEmbeddedGraphicsSurface()
. Jest to eksperymentalny interfejs API, który może ulec zmianom. (I9ddb2) - Interfejs
Modifier.magnifier()
jest teraz stabilnym interfejsem API. Obejmuje to usunięcie parametruMagnifierStyle
na rzecz parametrów wbudowanych w samym modyfikatorze. (I83bec, b/298381260, b/262367109, b/261438887)
Zmiany w interfejsie API
- Wprowadziliśmy elementy
updateCurrentPage
iupdateTargetPage
wScrollScope
. Są to ostatnie elementy potrzebne do umożliwienia dostosowywania animacji przewijania wPagerState.scroll
. (I9cad5, b/267744105, b/243786897) - Usuń gęstość z
SnapFlingBehavior
. Wszystkie implementacje interfejsuSnapLayoutInfoProvider
mają już dostęp do gęstości. Zakres odbiorcy może zostać usunięty, co uprości implementację zarównoSnapFlingBehavior
, jak iSnapLayoutInfoProviders
. (I153c3) - Więcej modyfikatorów oznaczono jako stabilne. (I56af1, b/298046462)
- Element
SnapStepSize
został usunięty z listySnapLayoutInfoProvider
. Obliczenia należy wykonać, korzystając z informacji o układzie i podając je za pomocą przesunięcia lub przesunięcia osi. (If320c)
Zmiany w zachowaniu
- Teraz w komponowaniu można stosować nieliniowe skalowanie czcionek, aby zwiększyć czytelność i dostępność. Jeśli w ustawieniach systemowych rozmiar czcionki > 100%, mały tekst będzie normalnie powiększany, ale i tak już duży tekst będzie powiększany tylko trochę. Wysokość wiersza zdefiniowana w SP będzie automatycznie dostosowywana, aby pozostać proporcjonalna do wysokości odpowiadającej 100% skali. Więcej informacji znajdziesz w artykule Sprawdzone metody dotyczące skalowania czcionek (I11518).
Poprawki błędów
- Usuń użycie
rememberSaveable
w tooltipach. (Icc131, b/299500338)
Wersja 1.6.0-alpha05
6 września 2023 r.
androidx.compose.foundation:foundation-*:1.6.0-alpha05
został zwolniony. Wersja 1.6.0-alpha05 zawiera te commity.
Zmiany w interfejsie API
- Dodaj przeciążenia funkcji
BasicSecureTextField
, które przyjmują niezmienną wartość i funkcję wywołania zwrotnego, aby zmienić tę wartość, tak jak w obecnym interfejsie APIBasicTextField
. (Ia4882) - Dodaj
Modifier.preferKeepClear()
, aby oznaczyć jako kompozyt, ponieważ wolisz unikać okien pływających w interfejsie API 33 lub nowszym. (Ib51d5, b/297260115) - Prędkości w komponentach Widok, takich jak
ScrollView
iRecyclerView
, są ograniczone doViewConfiguration.ScaledMaximumFlingVelocity
. Teraz aplikacja Redagowanie zawiera własną wersję funkcjimaximumFlingVelocity
, która jest teraz stosowana wDraggable
. (Ibf974) - Usunięto przestarzałe przeciążenia
Pager
iPagerState
. (Iea07e) - Dodano
BasicTooltipBox
docompose.foundation
oraz zaktualizowanoPlainTooltipBox
iRichTooltipBox
, aby używaćTooltipBox
z nowymi komponentamiPlainTooltip
iRichTooltip
. (I79e1d)
Wersja 1.6.0-alpha04
23 sierpnia 2023 r.
androidx.compose.foundation:foundation-*:1.6.0-alpha04
został zwolniony. Wersja 1.6.0-alpha04 zawiera te commity.
Zmiany w interfejsie API
- Dodaj interfejs
ReusableComposition
do zarządzania cyklem życia i ponownym używaniem podkompozycji. (I812d1, b/252846775) - Interfejs
Modifier.focusGroup
został przeniesiony do stabilnych interfejsów API. (I7ffa3) - Dodaj przeciążenia funkcji
BasicTextField2
, które przyjmują niezmienną wartość i funkcję wywołania zwrotnego, aby zmienić tę wartość, tak jak w obecnym interfejsie APIBasicTextField
. (I3f2b8) - Interfejs
GridItemSpan::currentLineSpan
jest teraz stabilnym interfejsem API. (Icc29c) - Canvas, który akceptuje
contentDescription
, jest teraz stabilnym interfejsem API. (Ib3d29). - Wprowadziliśmy
viewportSize
wScrollState
, aby umożliwić poznanieviewPort
rozmiaru komponentu, który używaScrollState
po przeprowadzeniu pomiaru. (I8b85a, b/283102682) - Naprawiono błąd, który powodował, że pobieranie z wyprzedzeniem w 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 tego użyj polaModifier.consumeWindowInsets
. (Id72bb)
- Interfejs API
Wersja 1.6.0-alpha03
9 sierpnia 2023 r.
androidx.compose.foundation:foundation-*:1.6.0-alpha03
został zwolniony. Wersja 1.6.0-alfa03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano przeciążenie funkcji
LazyLayout
, która przyjmuje lambda zLazyLayoutItemProvider
, a nie zwykły obiekt, jak to było wcześniej. Poprzednia wersja funkcji overload została wycofana. (I42a5a) - Dodano obsługę konfigurowania usługi
privateImeOptions
(Idb772)
Poprawki błędów
- Rozwiązano problem z polami tekstowymi, które wyświetlają klawiaturę i są możliwe do edycji, gdy wartość
readOnly
to prawda. Naprawiliśmy też błąd polegający na tym, że klawiatura nie wyświetlała się, gdy wartośćreadOnly
zmieniła się z prawdy na fałsz podczas skupienia. (I34a19, b/246909589)
Wersja 1.6.0-alpha02
26 lipca 2023 r.
androidx.compose.foundation:foundation-*:1.6.0-alpha02
został zwolniony. Wersja 1.6.0-alpha02 zawiera te commity.
Zmiany interfejsu API
- Wprowadzono
PagerLayoutInfo
z informacjami zebranymi po przeprowadzeniu pomiaru wPager
. Wprowadziliśmy teżPageInfo
, czyli informacje o pojedynczej zmierzonej stronie wPager
. (Iad003, b/283098900) - Dodatkowe adnotacje określające dozwolone dane wejściowe dla komponentów (I51109)
- Dodano
SemanticsNodeInteraction.requestFocus
jako wygodniejszy i łatwiejszy do znalezienia sposób na prośbę o skupienie się na testach. (Ie8722) - całkowicie przeprojektowany interfejs API
PlatformTextInput*
, (I6c93a, b/274661182, b/267235947, b/277380808) - Usługi
SoftwareKeyboardController
iLocalSoftwareKeyboardController
nie są już eksperymentalne.LocalSoftwareKeyboardController
to teraz także prawidłowa wartośćCompositionLocal
. (I4c364) Modifier.transformable
zawiera teraz parametrcanPan
, który określa kierunek panoramowania, aby umożliwić lub zablokować tę funkcję. (I692aa, b/266829800)- Aktualizuje modyfikator
consumeWindowInsets
, aby rozszerzyć superklasęAbstractComposeView
(Iacd74, b/269479941)
Wersja 1.6.0-alpha01
21 czerwca 2023 r.
androidx.compose.foundation:foundation-*:1.6.0-alpha01
został zwolniony. Wersja 1.6.0-alpha01 zawiera te commity.
Nowe funkcje
- Wprowadziliśmy nowy interfejs API
AnchoredDraggable
w Foundation. Możesz go używać do tworzenia komponentów, które można przeciągać między oddzielnymi stanami, np. modalnymi kartami. Ten interfejs API zastępuje interfejs APISwipeable
w Material. (I4a2ed).
Zmiany w interfejsie API
- Pomoc
InputConnection#requestCursorUpdates
(I0c69b) - Wprowadziliśmy
scrollAnimationSpec
, aby umożliwić tworzenie niestandardowych specyfikacji animacji. Zaktualizowano:BringIntoViewCalculator
do stanu:BringIntoViewScroller
. (Idb741) - Dodaj typ
ResourceResolutionException
do opakowań zgłaszanych przy próbie wczytania zasobów mapy bitowej z opisem ścieżki zasobu, której nie udało się wczytać. (I19f44, b/230166331, b/278424788) - Dodano właściwości i działania semantyczne, aby umożliwić tłumaczenie tekstu. (I4a6bc)
- Wprowadziliśmy interfejs API
BringIntoViewCalculator
, który można wykorzystać do dostosowywania sposobu, w jaki komponenty takie jakScrollable
odpowiadają na żądaniabringIntoView
. Zmieniono przeciążenie scrollable, aby opcjonalnie akceptowało instancjęBringIntoViewCalculator
. (Iaf5af).
Poprawki błędów
- Dodano mechanizm sprawdzania błędów, który ostrzega, gdy w kompozycji tworzysz element
MutableInteractionSource
bez zapamiętania go. Jest to podobne do mechanizmów sprawdzania błędów dotyczących tworzenia zmiennego stanu /Animatable
. (I5daae) - Dodano obsługę zaznaczania za pomocą myszy. Zaznaczenie dotykowe będzie się rozszerzać o wyraz, a zmniejszać o znak. (Ic0c6c, b/180639271)
- Dodano interfejs
FocusTargetModifierNode
, który umożliwia tworzenie niestandardowychFocusTarget
. (I9790e)
Wersja 1.5
Wersja 1.5.4
18 października 2023 r.
androidx.compose.foundation:foundation-*:1.5.4
został zwolniony. Wersja 1.5.4 zawiera te zatwierdzenia.
Wersja 1.5.3
4 października 2023 roku
Usługa androidx.compose.foundation:foundation-*:1.5.3
została zwolniona. Ta wersja nie zawiera żadnych zmian.
Wersja 1.5.2
27 września 2023 r.
androidx.compose.foundation:foundation-*:1.5.2
został zwolniony. Wersja 1.5.2 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiliśmy błąd w tekście, który w pewnych okolicznościach powodował awarię, gdy semantyka była nieprawidłowa.
Wersja 1.5.1
6 września 2023 r.
Usługa androidx.compose.foundation:foundation-*:1.5.1
została zwolniona. Wersja 1.5.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązano problem z polami tekstowymi, które wyświetlają klawiaturę i są możliwe do edycji, gdy wartość
readOnly
to prawda. Naprawiliśmy też błąd polegający na tym, że klawiatura nie wyświetlała się, gdy wartośćreadOnly
zmieniła się z prawdy na fałsz podczas skupienia. (I34a19, b/246909589)
Wersja 1.5.0
9 sierpnia 2023 r.
androidx.compose.foundation:foundation-*:1.5.0
został zwolniony. Wersja 1.5.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone 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 zmniejszyło narzut związany z początkową kompozycją. - Ulepszenia stabilności pagerów. Naprawiono wiele błędów.
- Parametry
pageCount
są teraz dostępne wPagerState
, a nie w samej stronie pager
Wersja 1.5.0-rc01
26 lipca 2023 r.
androidx.compose.foundation:foundation-*:1.5.0-rc01
został zwolniony. Wersja 1.5.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
Dostępna jest opcjonalna inspekcja, która zaleca przeniesienie wywołań
mutableStateOf()
do odpowiednich typów specjalistycznych dla prymitywów. Identyfikator linta toAutoboxingStateCreation
. Wcześniej ta kontrola była domyślnie włączona we wszystkich projektach. Aby zobaczyć to ostrzeżenie w edytorze Androida Studio oraz w danych wyjściowych projektu lint, zmień jego wagę z informacyjnej na ostrzeżenie (lub większą), zadeklarującwarning "AutoboxingStateCreation"
w konfiguracjibuild.gradle
lubbuild.gradle.kts
modułu, jak pokazano na przykładzie (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
Wersja 1.5.0-beta03
28 czerwca 2023 r.
androidx.compose.foundation:foundation-*:1.5.0-beta03
został zwolniony. Wersja 1.5.0-beta03 zawiera te commity.
Wersja 1.5.0-beta02
7 czerwca 2023 r.
androidx.compose.foundation:foundation-*:1.5.0-beta02
został zwolniony. Wersja 1.5.0-beta02 zawiera te commity.
Wersja 1.5.0-beta01
24 maja 2023 r.
androidx.compose.foundation:foundation-*:1.5.0-beta01
został zwolniony. Wersja 1.5.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- W celu udostępniania tętna i liczby kroków na dzień użyj elementu
PlatformDataProvider
. InterfejsSensorGateway
został usunięty z publicznego interfejsu API. (I55b84)
Poprawki błędów
- Zmniejsz alokacje podczas pomiarów nieaktywnych list/kratek itp. (Iaf9e2)
- Zmniejszone przydziały podczas stosowania zrzutów (I65c09)
- Usunięto przydziały z animacji sprężynowych (Ie9431).
- Usunięto przydział z kampanii
TextLayout
(I0fd11) - Usunięto wiele alokacji w śledzeniu szybkości kursora (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
są dostępne. Wersja 1.5.0-alpha04 zawiera te commity.
Zmiany w interfejsie API
- Dodano zoptymalizowany
TextStyle.merge(...)
z pełną listą parametrów. (Iad234, b/246961787) - Przedstaw element
SnapLayoutInfoProvider
, którego można używać z:LazyGridState
. (I92134, b/269237141, b/260914964) - Do zakresu elementów siatek opóźnionych z przesunięciem dodano opcję
Modifier.animateItemPlacement()
. Możesz go użyć w przypadku elementów, aby uzyskać animacje zmiany pozycji lub przetasowania automatyzacji. (I4b62d, b/257034719) - Zmień wersję
GridCells.FixedSize
na stabilną.FixedSize
definiujeLazyGrid
, w którym każda komórka ma dokładny rozmiar na osi krzyżowej, a pozostała przestrzeń jest rozmieszczana zgodnie z układem na osi krzyżowej. (I8542f) - Wprowadziliśmy zakres odbiornika
PagerScope
dla Pagera i funkcję pomocniczą do obliczania danego przesunięcia strony. (If2577) - Wprowadzanie
snapPositionalThreshold
podczas tworzenia zachowania snap fling. Użyj tego parametru, aby określić próg pozycji dla krótkiego przyciągania w Pager. (If8f7f) - Tekst
SnapLayoutInfoProvider.calculateSnappingOffsetBounds
został zamieniony nacalculateSnappingOffset
. W tej nowej metodzie po prostu żądamy następnego przesunięcia, do którego ma nastąpić przyciąganie. Obliczenie progów należy przeprowadzić na poziomie implementacji, ponieważ może się to różnić w zależności od tego, jak ma nastąpić przyciąganie. (I923a4) LazyStaggeredGrid
interfejs API został awansowany do wersji stabilnej. (I633a5)- Usuń
pageCount
z kontaHorizontal/VerticalPager
. Należy je podać podczas tworzenia stanu. UstawieniaPagerState
irememberPagerState
zostały zaktualizowane, aby zaakceptowaćpageCount
. (Ieb52d, b/266965072) - Usuń
pageCount
z kontaHorizontal/VerticalPager
. Należy go podać podczas tworzenia stanu. ZaktualizowanoPagerState
irememberPagerState
, by zaakceptowaćpageCount
. (Ifa3cb, b/266965072) - Przedstaw
shortSnapVelocityThreshold
w miejscu podziału na stronySnapFlingBehavior
. (I7379e, b/275579012) - Dodaje
FlowRowScope
iFlowColumnScope
. (I54fe2)
Poprawki błędów
- wywołania do uzyskiwania semantyki w przypadku Text, gdy ograniczenia mają
minWidth
iminHeight
, nie powodują już awarii. (IBD072) - Naprawiono regresję polegającą na tym, że w polach tekstowych w oknach, które nie zostały utworzone przez funkcję kompozycyjną
Dialog
, nie wyświetlała się klawiatura. (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
są dostępne. Wersja 1.5.0-alpha03 zawiera te commity.
W tej wersji włącza się nowy stos renderowania tekstu w funkcji Compose. Nowy stos jest zoptymalizowany pod kątem wydajności, więc nie zaobserwujesz w nim żadnych widocznych zmian.
Jeśli zauważysz zmiany w wyrenderowanym tekście, możesz przeprowadzić debugowanie, ustawiając wartość NewTextRendering1_5 = false
, aby potwierdzić różnicę w zachowaniu. To ustawienie spowoduje wymuszenie ponownego skompilowania. Zgłoszenia wszelkich różnic w zachowaniu traktuj jako błędy.
Flaga debugowania zostanie usunięta przed udostępnieniem wersji beta01 w wersji 1.5.(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
są dostępne. Wersja 1.5.0-alfa02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano obsługę komórek o stałym rozmiarze w elementach
LazyGrid
oraz ich układanie za pomocą ułożenia poprzecznego. (I83ed9, b/235121277, b/267942510) - Dodano obsługę pasów o stałym rozmiarze w
LazyStaggeredGrid
i ich układania 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 wymagać fokusu bezpośrednio, korzystając z działania semantycznego, zamiast klikać pole. (I6ed05) - Dodaje obsługę odstępów lub układu między osiami za pomocą funkcji
verticalArrangement
wFlowRow
ihorizontalArrangement
w narzędziuFlowColumn
. Usunęliśmy teżverticalAlignment
ihorizontalAlignment
na poziomie nadrzędnym w elementachFlowRow/FlowColumn
. Deweloperzy mogą zamiast tego użyć elementuModifier.align
. Pozwala to uniknąć pomyłek między 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
są dostępne. Wersja 1.5.0-alpha01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Tekst i
BasicText
zostały przebudowane, 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łać działanie IME w węzłach edytora tekstu. (Ic606f, b/269633506)
Poprawki błędów
- Zaktualizowano wewnętrzne elementy usługi
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 z nową wersją).
Wersja 1.4.2
19 kwietnia 2023 r.
androidx.compose.foundation:foundation:1.4.2
i androidx.compose.foundation:foundation-layout:1.4.2
są dostępne. Wersja 1.4.2 zawiera te zatwierdzenia.
Wersja 1.4.1
5 kwietnia 2023 r.
androidx.compose.foundation:foundation:1.4.1
i androidx.compose.foundation:foundation-layout:1.4.1
są dostępne. Wersja 1.4.1 zawiera te zatwierdzenia.
Wersja 1.4.0
22 marca 2023 r.
androidx.compose.foundation:foundation:1.4.0
i androidx.compose.foundation:foundation-layout:1.4.0
są dostępne. Wersja 1.4.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.3.0
- Dodano obsługę emotikonów w elementach
Text
iTextField
, a także w elementach na niższym poziomie, takich jak akapit. Jest ona domyślnie włączona, gdy skonfigurujesz emojicompat. EmojiCompat
można skonfigurować w przypadku określonego tekstu za pomocąPlatformParagraphStyle
.- Dodano obsługę pełnego zakresu linii w
LazyStaggeredGrid
(I28252) - Dodaję eksperymentalne
onHover
do aplikacjiClickableText
(I6938f) - Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji
runComposeUiTest
i funkcjicreate*ComposeRule
, które przyjmują parametryCoroutineContext
. Kontekst zostanie użyty w kompozycji testowej i wszelkich wywołaniachLaunchedEffect
irememberCoroutineScope()
w kompozycji. (I10614, b/265177763) FlowRow
iFlowColumn
są teraz dostępne jako@ExperimentalFoundationApi
, co umożliwia bardziej elastyczny układ komponentów na podstawie wierszy i kolumn. Komponenty będą przenoszone do nowej linii, jeśli na osi głównej zabraknie miejsca. (I3a7b2)Modifier.basicMarquee()
jest dostępny jako funkcja eksperymentalna 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
są dostępne. Wersja 1.4.0-rc01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wprowadziliśmy nowy niskopoziomowy interfejs API
PlatformTextInputAdapter
do tworzenia niestandardowych implementacji wprowadzania tekstu, które komunikują się bezpośrednio z interfejsami API platformy. (I58df4) - Dodano obsługę odwróconego układu w
LazyStaggeredGrid
. (I3ef4a)
Poprawki błędów
- Działanie semantyczne typu
SetText
w narzędziuBasicTextField
spowoduje teraz zaktualizowanie bufora tekstu przy użyciu tej samej ścieżki kodu co aktualizacje IME i funkcje testowania (np.performTextReplacement
). - Funkcje testowania tekstu
performTextClearance
,performTextReplacement
iperformTextSelection
używają teraz funkcjiSemanticsActions
. (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 udostępnione. Wersja 1.4.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano nowe wywołanie zwrotne
Modifier.Node.onReset()
, które umożliwia zresetowanie niektórych stanów lokalnych, aby odpowiednio obsłużyć przypadek, gdy elementLayout
zostanie użyty ponownie (np. jako elementLazyColumn
). NaprawionoFocusTargetModifierNode
, aby prawidłowo zresetować stan fokusu. (I65495, b/265201972) - Dodaliśmy parametr
BlendMode
do metodDrawScope.drawText
,Paragraph.paint
iMultiParagraph.paint
, aby umożliwić obsługę różnych algorytmów mieszania podczas rysowania tekstu w Canvas. (I57508) - Usunięto interfejs API
modifierElementOf()
. Zamiast tego rozszerz je bezpośrednio z poziomuModifierNodeElement
. (Ie6d21)
Poprawki błędów
- Przesuwanie uchwytów zaznaczenia nie może już wybierać części znaku. (Idedd1)
- Naprawiono błąd powodujący awarię podczas naciśnięcia Ctrl + Backspace na pustym
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
są dostępne. Wersja 1.4.0-beta01 zawiera te commity.
Nowe funkcje
- Od wersji 1.3 dodano obsługę emotikonów w funkcjach
Text
iTextField
, a także w niższym poziomie akapitu. Jest ona domyślnie włączona, gdy skonfigurujesz emojicompat. EmojiCompat
można skonfigurować w przypadku określonego 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
PinnableContainer.PinnedHandle.unpin()
została zmieniona narelease()
(I4667a)
Darowizna zewnętrzna
- Dodano właściwość
mainAxisItemSpacing
do tagówLazyListLayoutInfo
,LazyGridLayoutInfo
iLazyStaggeredGridItemInfo
(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
są dostępne. Wersja 1.4.0-alpha05 zawiera te commity.
Nowe funkcje
- Dodano obsługę pełnego zakresu linii w
LazyStaggeredGrid
(I28252) - Dodawanie eksperymentalnej funkcji
onHover
do funkcjiClickableText
(I6938f) - Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji
runComposeUiTest
i funkcjicreate*ComposeRule
, które przyjmują parametryCoroutineContext
. Kontekst zostanie użyty do testowej kompozycji oraz wszystkich wywołań funkcjiLaunchedEffect
irememberCoroutineScope()
w jej obrębie. (I10614, b/265177763)
Zmiany w interfejsie API
- Łączy interfejsy API przed i po
OverscrollEffect
w połączone funkcje „dekoracyjne”applyToScroll
iapplyToFling
. Aby dowiedzieć się, jak zaimplementować efekt przewijania z nową formą interfejsu API, zapoznaj się z zaktualizowanymi przykładami w dokumentacji. (I8a9c4, b/255554340) - Więcej typów i wartości null funkcji wbudowanych/wycofanych (I24f91)
- Interfejsy API
LineBreak
iHyphens
wTextStyle
zostały przeniesione do wersji stabilnej. (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
wyświetla teraz animację nawet wtedy, gdy animacje są wyłączone w ustawieniach systemu. (I23389, b/262298306, b/265177763)
Treści tłumaczone przez użytkowników zewnętrznych
- Metody
notifyFocusedRect
wTextInputSession
iTextInputService
nie są ponownie wycofywane. (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
są dostępne. Wersja 1.4.0-alpha04 zawiera te commity.
Nowe funkcje
FlowRow
iFlowColumn
są teraz dostępne jako@ExperimentalFoundationApi
, co umożliwia bardziej elastyczny układ komponentów na podstawie wierszy i kolumn. Komponenty będą przenoszone do nowej linii, jeśli na osi głównej zabraknie miejsca. (I3a7b2)Modifier.basicMarquee()
jest dostępny jako funkcja eksperymentalna do wyświetlania treści z efektem przewijania. (I2df44, b/139321650)
Zmiany w interfejsie API
FocusRequesterModifier
FocusRequesterNode
- Konstruktor
AndroidFont
z argumentemvariationSettings
jest teraz stabilnym interfejsem API i może służyć do tworzenia nowych typów deskryptorów czcionek. (I5adcc, b/261565807) - Wprowadziliśmy interfejs
PinnableContainer
propagowany przez listy opóźnione za pomocą kompozycji lokalnej, która umożliwia przypięcie bieżącego elementu. Oznacza to, że taki element nie zostanie usunięty, gdy przewiniesz go poza widok. Na przykładModifier.focusable()
za pomocą tego mechanizmu przypnie aktualnie zaznaczony element. (Ib8881, b/259274257, b/195049010) - Zmieniliśmy sposób, w jaki elementy przewijalne reagują na
bringIntoViewRequesters
i elementy skupienia, aby lepiej modelować złożoność tych operacji i obsługiwać więcej skrajnych przypadków. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114) - Dodanie możliwości zwracania wartości null do ukrytych funkcji wycofanych (Ibf7b0)
- Dodano eksperymentalną opcję
TextMotion
do opcjiTextStyle
, aby zdefiniować tekst jakoStatic(default)
lub animowany. Użyj wartościTextMotion.Animated
, jeśli tekst ma być skalowany, tłumaczony lub obrócony za pomocą animacji. (I24dd7) - Dodanie
TextFieldFocusModifier
w celu naprawienia zachowania nawigacji fokusa na platformie Android (I00303) - Zastąpiono argument
maxSize: IntSize
w funkcjidrawText
elementemsize: Size
, który będzie wbudowany z innymi funkcjamiDrawScope
. Wartość domyślna parametrusize
toSize.Unspecified
, co nie powinno zmieniać poprzedniego domyślnego działania. (Icd27d).
Poprawki błędów
- Poprawki w fizyce przyciągania w grze
SnapFlingBehaviour
, aby ruchy były bardziej naturalne.
Znany problem
- Podczas aktualizowania z
androidx.compose.foundation:1.4.0-alpha03
doandroidx.compose.foundation:1.4.0-alpha04
może wystąpić błądjava.lang.NoSuchFieldError
. Tutaj został zgłoszony problem. Przesłaliśmy poprawkę, która będzie dostępna w ramach następnej aktualizacji Compose. Aby obejść ten problem, zaktualizuj bibliotekiandroidx.compose.material
iandroidx.compose.material3
do najnowszej wersji(1.1.0-alpha04) lub obniż wersję bibliotekiandroidx.compose.foundation
do 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
są dostępne. Wersja 1.4.0-alpha03 zawiera te commity.
Zmiany w interfejsie API
- W testach interfejsu użytkownika z użyciem reguły tworzenia kontynuacje wznawiane w trakcie wywołań zwrotnych
withFrameNanos
będą wysyłane dopiero po zakończeniu wykonywania wszystkich wywołań zwrotnych klatek. Jest to zgodne z działaniem funkcji komponowania podczas normalnego działania. Testy, które korzystają ze starego zachowania, mogą jednak nie działać. Ta zmiana powinna dotyczyć tylko kodu, który bezpośrednio wywołuje funkcjewithFrameNanos
lubwithFrameMillis
, i zawiera logikę spoza wywołania zwrotnego przekazaną do tych funkcji, którą może być konieczne przeniesienie do wywołań zwrotnych. Przykłady zmian w teście animacji znajdziesz w tym CL. - Dodano opcjonalny parametr
onPerformTraversals: (Long) -> Unit
do konstruktora i funkcji fabrycznejTestMonotonicFrameClock
w celu uruchamiania kodu po wywołaniach zwrotnychwithFrameNanos
, ale przed wznowieniem współrzędnych elementów wywołujących. (Idb413, b/254115946, b/222093277, b/255802670) - Przedstaw działania ułatwień dostępu na stronie:
PageUp
,PageDown
,PageLeft
,PageRight
. Pamiętaj, że są one dostępne tylko w wersji interfejsu API 29. (Ida4ab) - Przedstaw
HorizontalPager
iVerticalPager
, czyli sposób wyświetlania komponentów w ramach strony pager. Wprowadziliśmy funkcjęPagerState
do kontrolowania pagerów oraz zapytań dotyczących ich bieżącego stanu. WprowadziliśmyPageSize
, czyli sposób na kontrolowanie rozmiaru strony Pager. Można go wykorzystać do tworzenia karuzeli na wzór Pagers. WprowadziliśmyPagerSnapDistance
, czyli sposób na kontrolowanie działania przyciągania w zachowaniu Pagera. (I01120) - Wprowadziliśmy przeciążenie w funkcji
SnapFlingBehavior.performFling
, aby ułatwić zrozumienie, gdzie skończy się skok. (I569f6) - Użytkownik
OverscrollEffect#isEnabled
został usunięty. Zamiast zapamiętywać i ustawiać tę flagę, po prostu nie wysyłaj zdarzeń do efektu nadmiernie przewijania w przypadkach, gdy nie chcesz wyświetlać nadmiernych przewijania (np. gdy oba parametryScrollableState#canScrollForward/backward
zwracają wartość fałsz). (I1a4b0, b/255554340, b/255557085) - Dodano
ScrollableState#canScrollForward
iScrollableState#canScrollBackward
, aby sprawdzić, czyScrollableState
ma miejsce na przewijanie w dowolnym kierunku (czy znajduje się na początku lub końcu zakresu). Ta wartość domyślna zapewnia zgodność wsteczną z dotychczasowymi implementacjamiScrollableState
. Konsumenci mogą używać tego do wyświetlania użytkownikowi informacji, że nadal jest miejsce na przewijanie. Można tego też użyć, aby uniknąć wysyłania delta doScrollableStates
, które nie mają miejsca na przewijanie w danym kierunku, i w ten sposób zmniejszyć niepotrzebną pracę. (Idf1a0, b/255557085) - Dodano interfejs API Modifier, aby zapytać o informacje dotyczące przewijania przodków (I2ba9d, b/203141462).
- Używany w
Clickable
do prawidłowego opóźnienia interakcji polegającej na naciśnięciu, gdy gesty mogą stać się zdarzeniami przewijania. - Naprawiono błąd
Clickables
w zakresie nieprawidłowego opóźniania echa w przypadku użycia wewnątrz elementuScrollable ViewGroup
. - Zaktualizowaliśmy panele i panele, tak aby prawidłowo opóźniały naciśnięcia, gdy gesty mogą stać się zdarzeniami przewijania.
- Zaktualizuj nazwy metod
snapStepSize
, aby były zgodne z innymi metodami w elementachSnapLayoutInfoProvider
. (Ife67c) - Dodano
EmojiCompat
doCompose
(Ibf6f9, b/139326806) - Zmieniliśmy nazwę
consumedWindowInsets()
naconsumeWindowInsets()
, awithConsumedWindowInsets()
naonConsumedWindowInsetsChanged()
i uczyniłeś modyfikatory publicznymi. (Ie44e1)
Poprawki błędów
- Usunięto awarię z siatkami typu
Modifier.animateItemPlacement()
i Leniwe. Zdarzało się to w pewnych sytuacjach, gdy liczba nowych elementów była mniejsza od poprzedniego. (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
są dostępne. Wersja 1.4.0-alpha02 zawiera te commity.
Zmiany w interfejsie API
- Aby zapewnić większą elastyczność, atrybuty
awaitFirstDown
iwaitForUpOrCancellation
obsługują teraz atrybutyPointerEventPass
. (I7579a, b/212091796) - Przywróć interfejs API
beyondBoundCount
z interfejsów Lazy* API (I12197) - Wprowadziliśmy w interfejsach API Lazy parametry do tworzenia i rozmieszczania elementów poza widocznym obszarem (I69e89, b/172029355).
- Do komponentów
BasicText
iBasicTextField
dodaliśmy parametrminLines
. Umożliwia ustawienie minimalnej wysokości tych komponentów pod względem liczby 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 udostępnione. Wersja 1.4.0-alpha01 zawiera te commity.
Zmiany interfejsu API
- Dodano nową metodę
awaitEachGesture()
do wykrywania gestów. Działa ona podobnie doforEachGesture()
, ale pętla gestów działa całkowicie w ramachAwaitPointerEventScope
, dzięki czemu nie dochodzi do utraty zdarzeń między iteracjami. - Element
forEachGesture()
został wycofany na rzecz elementuawaitEachGesture()
, ponieważ pozwala on na 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
są dostępne. Wersja 1.3.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązanie problemu z wydajnością w
BeyondBoundsLayout
(aosp/2255266) ContentInViewModifier
nie odczyta współrzędnych układu, jeśli nie zostaną dołączone (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 udostępnione. Wersja 1.3.0 zawiera te commity.
Ważne zmiany od wersji 1.2.0
- Wprowadziliśmy eksperymentalne wersje
LazyVerticalStaggeredGrid
iLazyHorizontalStaggeredGrid
. - Dodano interfejsy API
SnapFlingBehavior
,rememberSnapFlingBehavior
i inne podobne interfejsy API jako eksperymentalne. Modifier.clickable
,Modifier.toggleable
iModifier.selectable
wyświetlają teraz fale, jeśli klikniesz je za pomocą klawiatury lub panelu 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
są dostępne. Wersja 1.3.0-rc01 zawiera te commity.
Zmiany w interfejsie API
- Wprowadzono
lowVelocityAnimationSpec
używane przez krok podejścia, gdy nie ma wystarczającej prędkości rzutu, aby zaniknąć. (Iaeb27) - Dodaliśmy nowe eksperymentalne łączniki w interfejsie API do obsługi automatycznego łącznika 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
są dostępne. Wersja 1.3.0-beta03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaj opcje umożliwiające dostosowanie dzielenia wiersza w tekście. (I86907)
BringIntoViewResponder
może teraz sprawdzać najbardziej aktualne granice żądania podczas jego przetwarzania. (If86a5, b/241591211)- Wprowadzenie obsługi odstępów między elementami w eksperymentalnej wersji
Staggered Grid
(I10b82) - Wprowadzanie wypełniania treści w wersji eksperymentalnej
Staggered Grid
(I342ea) - Zmień argument
size:IntSize
naconstraints: Constraints
w metodzieTextMeasurer.measure
, aby obsługiwać ograniczenia minimalnej szerokości. (I37530, b/242707525) - Dodano
Modifier.withConsumedWindowInsets()
, aby można było używaćWindowInsets
pozawindowInsetsPadding
. - Dodano
MutableWindowInsets
, aby umożliwić łatwą zmianęWindowInsets
bez konieczności ponownego tworzenia kompozycji. (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
są dostępne. Wersja 1.3.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wstępna wersja eksperymentalna
StaggeredGrid
(Ia48be) - Nazwa
FocusDirection.In
iFocusDirection.Out
została zmieniona naFocusDirection.Enter
iFocusDirection.Exit
(Ia4262, b/183746982) - Wprowadziliśmy przeciążenie
rememberSnapFlingBehavior
, które umożliwia szybkie włączanie blokowania wLazyLists
. (Ifb48a) - Zastąpiliśmy fabrykę urządzenia
snapFlingBehavior
betonową klasąSnapFlingBehavior
. Ograniczenie metodSnapLayoutInfoProvider
do Density, aby ułatwić użytkownikom interfejsu API konwersję dp<->px. (I54a11) - Zaktualizuj parametr
LazyLayoutMeasureScope.measure
, aby zwrócić listę elementów zastępczych, wskazując pożądaną niezmienność zwracanej wartości. (I48b7c) - Wprowadziliśmy funkcję
SnapLayoutInfoProvider
, która przyjmuje parametrLazyListState
i tworzy instancjęSnapLayoutInfoProvider
, której można użyć do włączenia snapaFlingBehavior
dlaLazyLists
. (I2dd10)
Poprawki błędów
- Refaktoryzacja funkcji
AwaitPointerEventScope#awaitLongPressOrCancellation
, aby pasowała do innych funkcji await (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
są dostępne. Wersja 1.3.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Usunięto
pointerPosition
z poziomuOverscrollEffect
– efekty, które uwzględniają pozycję wskaźnika, mogą zamiast tego używać funkcjiModifier.pointerInput { }
w poziomieeffectModifier
, aby uzyskać bieżącą pozycję wskaźnika. (I9f606, b/241239306) - Przedstawiono
AwaitPointerEventScope#awaitLongPressOrCancellation
jako dodatkowy element składowy umożliwiający bardziej złożone wykrywanie gestów (I04374, b/181577176) - Wprowadziliśmy
lazyListSnapLayoutInfoProvider
, aby umożliwić przyciąganie elementów w Lazy Lists. (I3ecdf) - Wprowadziliśmy
SnapFlingBehavior
, czyli gest przesuwania, który umożliwia przyciąganie elementów na liście. 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 udostępnione. Wersja 1.3.0-alpha03 zawiera te commity.
Zmiany w interfejsie API
- Czcionki zasobów obsługują teraz ustawianie ustawień wariantów czcionek (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 wyrzucać bardziej szczegółowe wyjątki, gdy
OffsetMapping
zwraca nieprawidłowe indeksy.VisualTransformation
(Ie73f9, b/229378536) - Wprowadź eksperymentalne interfejsy API, aby współdzielić logikę dostawcy elementu między układami Lazy. (Ic891c)
ScrollableDefaults.reverseDirection()
nie jest już eksperymentalną funkcją. (Iba646)- Wycofaliśmy zasadę
SemanticsModifier.id
i przenieśliśmy identyfikator semantyczny doLayoutInfo.semanticsId
. (Iac808, b/203559524) - Funkcja
checkScrollableContainerConstraints()
nie jest już eksperymentalna. (I2c290) Modifier.clipScrollableContainer()
nie jest już eksperymentalną funkcją. (Ia2b44)- Wycofaj
TextInputService.show|hideSoftwareKeyboard
. Zamiast niej użyj wartościSoftwareKeyboardController
w kodzie aplikacji i wartościTextInputSession
w kodzie zarządzania IME. (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
są dostępne. Wersja 1.3.0-alpha02 zawiera te commity.
Zmiany w interfejsie API
- W
DrawScope
dodaliśmy funkcję rozszerzeniadrawText
, która umożliwia rysowanie tekstu o różnych stylach w elementach kompozycyjnych i modyfikatorach działających w elemencieDrawScope
, takim jakCanvas
idrawBehind
. (I16a62, b/190787898)
Poprawki błędów
- Klawiatura ekranowa jest teraz ukryta, gdy pole tekstowe jest wyłączone, gdy jest zaznaczone. (I6e3e4, b/237308379)
- Podczas dodawania zdarzeń
InputEventChange
do Śledzenia prędkości będziemy teraz brać pod uwagę wartości delta zamiast pozycji. Dzięki temu prędkość będzie obliczana prawidłowo we wszystkich przypadkach, nawet jeśli element docelowy się przesunie (Icea9d, b/216582726, b/223440806, b/227709803). - Gdy element przewijany ma zaznaczony element podrzędny, będzie on prawidłowo przewijać tak, aby nadal był widoczny, gdy jego rozmiar jest zmniejszony, nawet gdy rozmiar jest animowany. (I80867, b/230756508, b/220119990)
- Naprawiliśmy błąd, który powodował awarię, gdy
TextField
był usuwany i ponownie wypełniany podczas aktywnego wyboru. (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
są dostępne. Wersja 1.3.0-alfa01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Wprowadziliśmy typ adnotacji
UrlAnnotation
i powiązane z nim metody, które umożliwiają obsługę linkówTalkBack
wAnnotatedString
. (I1c754, b/231495122)
Poprawki błędów
BasicTextField
cursorBrush
może teraz być animowany bez restartowania licznika czasu 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 udostępnione. Wersja 1.2.1 zawiera te zatwierdzenia.
Wersja 1.2.0
27 lipca 2022 roku
androidx.compose.foundation:foundation:1.2.0
i androidx.compose.foundation:foundation-layout:1.2.0
są dostępne. Wersja 1.2.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.1.0
- Funkcje
LazyVerticalGrid
iLazyHorizontalGrid
są teraz stabilne. - Możesz teraz określić typ treści dla elementów na listach i siatkach Lazy. Dzięki temu komponenty będą mogły efektywniej ponownie wykorzystywać elementy.
- Lista i siatka z lazy loadingiem mają teraz parametr
userScrollEnabled
, który umożliwia wyłączenie przewijania za pomocą gestów użytkownika. - Dodano nowy eksperymentalny interfejs API o nazwie
LazyLayout
. Jest to interfejs API, którego używamy wewnętrznie do obsługi list i kratek Lazy. - Interfejs API
OverscrollEffect
został wprowadzony jako eksperymentalny. Możesz zdefiniować niestandardowe efekty przewijania oraz dodać standardowy efekt platformy do niestandardowych przewijanych kontenerów. - Wprowadzono interfejsy API do obsługi interoperacyjności przewijania zagnieżdżonego, aby umożliwić interoperacyjność między widokami i komponować aktorów przewijania.
- Do wszystkich kontenerów z przewijaniem dodano przewijanie za pomocą myszy i gładzika.
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 udostępnione. Wersja 1.2.0-rc03 zawiera te zatwierdzenia.
- 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
są dostępne. Wersja 1.2.0-rc02 zawiera te zatwierdzenia.
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 udostępnione. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wprowadziliśmy eksperymentalny parametr
OverscrollEffect
, który umożliwia stosowanie niestandardowych efektów przewijania, a także przeciążeniaModifier.scrollable
, które go obsługują. - Eksperymentalny pakiet
LocalOverScrollConfiguration
został przeniesiony z poziomufoundation.gesture
do pakietu podstawowego i przemianowany naLocalOverscrollConfiguration
(If19fb, b/204650733) - Interfejsy w bibliotekach kompozytowych są teraz tworzone za pomocą domyślnych metod interfejsu JDK 8 (I5bcf1).
- Wprowadziliśmy eksperymentalny interfejs API
checkScrollableContainerConstraints()
, który pozwala sprawdzić, czy nie umieszczamy zduplikowanych elementów. Możesz jej używać podczas tworzenia własnych przewijanych układów z możliwością przewijania w narzędziuLazyLayout
. (Id6fab, b/233352497) - Usunięto wycofany atrybut
LazyVerticalGrid
z pakietuandroidx.compose.foundation.lazy
. 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
są dostępne. Wersja 1.2.0-beta03 zawiera te commity.
Zmiany w interfejsie API
- Dodano nowe eksperymentalne
IntervalList
iMutableIntervalList
. Umożliwia on zapisanie pewnej listy wartości w kilku przedziałach. Przyda się, gdy chcesz zdefiniować własne polecenie dsl podobne do tego, którego używaLazyColumn
, gdzie elementy listy można definiować za pomocą wielu wywołań item lub items. (I2d05e, b/228580728)
Poprawki błędów
- Doprecyzowaliśmy dokumentację dotyczącą
WindowInsets.ime
, informując o tym, że wstawieniaime
są zgłaszane już od wersji 23, ale tylko animowane w przypadku użytkowników, którzy ukończyli 30 lat (Ia7fc0, b/230756508). - Naciśnięcie klawisza Delete, gdy kursor znajduje się na końcu pola tekstowego, nie spowoduje już awarii.
- Funkcje
DeleteSurroundingTextCommand
iDeleteSurroundingTextInCodePointsCommand
wymagają teraz, aby ich 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
są dostępne. Wersja 1.2.0-beta02 zawiera te commity.
- Rozdzielczość czcionki do pobrania, która nie zmienia rozmiaru układu tekstu lub
TextField
, nie była wcześniej ponownie rysowana, co powodowało wyświetlanie nieaktualnej 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 udostępnione. Wersja 1.2.0-beta01 zawiera te commity.
Nowe funkcje
- Pierwsza wersja beta 1.2.
Zmiany w interfejsie API
- Dodano eksperymentalną funkcję
BeyondBoundsInterval
, której można używać w niestandardowych implementacjachLazyList
, gdy elementy wykraczają poza widoczne granice (Ifabfb, b/184670295). - Nazwa
LineHeightBehavior
została zmieniona naLineHeightStyle
- Nazwa
LineVerticalAlignment
została zmieniona naLineHeightStyle.Alignment
- Zmiana nazwy
LineHeightTrim
naLineHeightStyle.Trim
- Domyślne wartości konstruktora w
LineHeightStyle
zostały usunięte (I582bf, b/181155707). - Dodano wartości domyślne dla opcjonalnych elementów interfejsu
LazyLayoutItemProvider
. (Iba8a0) - W interfejsie
LazyLayoutItemProvider
zamiast fabryki zwracającej kompozytowaną funkcję lambda według indeksu mamy teraz prostszą kompozytowaną funkcję Item, która przyjmuje indeks. (Id2196) - Zmiana nazwy interfejsu LazyLayoutItemsProvider na LazyLayoutItemProvider (I0638c)
- Nazwa
LazyLayoutItemsProvider.itemsCount
została zmieniona naitemCount
(Id409c) - Dodano pędzel do narzędzi
TextStyle
iSpanStyle
, aby umożliwić rysowanie tekstu z gradientem. (I53869, b/187839528) trimFirstLineTop
,trimLastLineBottom
atrybutuLineHeightBehavior
zostało zmienione w jedną wyliczenie:LineHeightTrim
.LineHeightTrim
mają 4 stany zdefiniowane przez 2 wartości logiczne:FirstLineTop
,LastLineBottom
, Both i None (Ifc6a5, b/181155707)Dodanie atrybutu
LineHeightBehavior
do elementówTextStyle
iParagraphStyle. LineHeightBehavior
określa, czy wysokość wiersza jest stosowana na górze pierwszego i na końcu ostatniego wiersza. Określa też wyrównanie wiersza w przestrzeni udostępnionej przez funkcjęTextStyle
(lineHeight
).Za pomocą
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
można na przykład uzyskać działanie podobne do tego, co definiuje CSS.Konfiguracje
trimFirstLineTop
,trimLastLineBottom
działają prawidłowo tylko wtedy, gdyincludeFontPadding
ma wartość false. (I97332, b/181155707)Dodano eksperymentalny modyfikator
imeNestedScroll()
, aby umożliwić deweloperom sterowanie metodą wprowadzania za pomocą kółka przewijania. (I60759)
Poprawki błędów
- Naprawiono regresję, w której pola tekstowe nie ukrywały klawiatury po usunięciu jej z kompozycji, gdy było zaznaczone. (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 zawieszać działanie usługi do momentu zrealizowania żądania lub przerwania go przez nowsze, które nie nakłada się na siebie. Pokrywające się żądania trafią do kolejki. (I43e7f, b/216790855)- Równoczesne wywołania
BringIntoViewRequester.bringIntoView
dla prostokątów, które się całkowicie pokrywają, będą teraz uwzględniać tylko żądanie prostokąta o większym rozmiarze. (I34be7, b/216790855, b/184760918) - Domyślnie włączone
includeFontPadding
. FunkcjęincludeFontPadding
można wyłączyć za pomocą atrybutuTextStyle.platformTextStyle
. W najbliższej przyszłości zmienimy domyślne zachowanie, ale do tego czasu ta zmiana pozwoli nam lepiej zintegrować ulepszenia wysokości linii (aosp/2058653) i rozwiązać problemy zTextField
. (I01423, b/171394808) Modifier.bringIntoViewRequester
nie używa jużonGloballyPositioned
. (I630f5)
Treści tłumaczone przez użytkowników zewnętrznych
- Wartość
MouseInjectionScope.scroll(delta = someDelta)
jest teraz odwrócona na Androidzie, jeśli przewijamy w kierunku pionowym (jeśli someDelta jest dodatnia, przewijanie odbywa się 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
są dostępne. Wersja 1.2.0-alpha08 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- wyświetlać wszystkie dostępne grubości czcionek systemowych na Androidzie, gdy używasz
FontFamily.SansSerif
. W interfejsie API 21–28 wewnętrznie będą używane nazwy czcionek zastępczych, np. sans-serif-medium. Jest to zmiana zachowania, ponieważ wcześniej w interfejsach API 21–28 obsługiwane były tylko wagi 400 i 700. (I380fe, b/156048036, b/226441992) - Elementy Paragraph i MultiParagraph obsługują teraz parametr Constraints. Przekazywanie wartości
Constraints.maxHeight
nie jest obecnie możliwe, ale pozwoli na wykonanie pewnych obliczeń w przyszłości, np. elipsy na podstawie wysokości. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()
obsługuje teraz niestandardową klasę podobną do MutableSet, która nie zezwala na dodawanie do niej nowych elementów. (Icd314)- Częściowe wykorzystanie (pozycja w dół LUB w pozycji) zostało wycofane w funkcji
PointerInputChange
. Możesz użyćconsume()
, aby w pełni zastosować zmianę. Możesz użyćisConsumed
, aby sprawdzić, czy ktoś inny wcześniej nie wprowadził tej zmiany. PointerInputChange::copy()
zawsze tworzy teraz kopię powierzchowną. Oznacza to, że kopiePointerInputChange
zostaną wykorzystane, gdy wykorzystana zostanie jedna z nich. Jeśli chcesz utworzyć niewiążącą instancjęPointerInputChange
, użyj konstruktora. (Ie6be4, b/225669674)- Wprowadziliśmy nowy eksperymentalny interfejs API
LazyLayout
. Dzięki temu możesz tworzyć własne komponenty, np.LazyColumn
zLazyVerticalGrid
. Pamiętaj, że interfejs API jest w fazie wstępnej i może zostać zmieniony w kolejnych wersjach. (Iba2bc, b/166591700) - Funkcja
AndroidFont
przyjmuje teraztypefaceLoader
jako parametr konstruktora. (I2c971) WindowInsets
Usługa towarzysząca wyświetla teraz informacje o widoczności (czy są widoczne na ekranie, niezależnie od tego, czy nakładają się na okno) oraz rozmiar, jaki mogłyby mieć, gdyby były dostępne na urządzeniu, ale nie byłyby 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
są dostępne. Wersja 1.2.0-alpha07 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano interfejs API
PinnableParent
, który pozwala elementom potomnym w ramach opóźnionego układu zapobiegać usuwaniu aktualnie skomponowanych elementów (Ibbdd0, b/184670295) - W rekordach typu
LazyListLayoutInfo
iLazyGridLayoutInfo
są teraz dostępne polabeforeContentPadding
iafterContentPadding
(I3b628, b/200920410) - Dodano separator dziesiętny w edytorze IME jako alternatywę dla
Keyboard.Number
(KeyboardType.Decimal
). (Iec4c8, b/209835363) - Dodaj nowy opis czcionki Font(DeviceFontFamilyName), aby opcjonalnie wyszukiwać czcionki zainstalowane w systemie podczas łańcuchów zastępowania czcionek. (I30468, b/219754572)
- Interfejsy API
PointerEventType.Scroll
iPointerEvent.scrollDelta
są teraz stabilne (I574c5, b/225669674). - Dodano tymczasową konfigurację zgodności dla
includeFontPadding
wTextStyle/ParagraphStyle. includeFontPadding
, którą można zmienić za pomocąTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. Jest to tymczasowa opcja konfiguracji, która umożliwia migrację. Zostanie ona usunięta. (If47be, b/171394808) - Zaktualizowano
FontFamily.Resolver
, aby zintegrować ustawienie ułatwień dostępu dotyczące pogrubienia tekstu w całym systemie (I6c1e7). - Właściwość rozszerzenia
consumeWindowInsets
w komponencieComposeView
pozwala deweloperom wyłączyć korzystanie z Android WindowInsets. Umożliwia to osobneComposeViews
w hierarchii do każdego zastosowaniaWindowInsets
bez zakłócania siebie nawzajem. (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
są dostępne. Wersja 1.2.0-alpha06 zawiera te commity.
Zmiany interfejsu API
- Dodano działanie semantyczne
RequestFocus
, aby poprosić o skupienie się na elemencie, który można zaznaczyć. (I17b71) - Usługa
FocusOrder
została scalona z usługąFocusProperties
, a usługafocusProperties()
ma teraz wszystkie funkcje usługifocusOrder()
. FunkcjeFocusOrder
ifocusOrder()
zostały wycofane. ObiektfocusOrder()
, który przyjmuje argumentfocusRequester
, należy zastąpić modyfikatoremfocusRequester()
w połączeniu z obiektemfocusProperties()
. Dzięki temu modyfikatory mają większą separację problemów. (I601b7) - Funkcja
WindowInsets.asPaddingValues(Density)
została dodana, aby umożliwić deweloperom przeprowadzanie konwersji bez konieczności korzystania z kompozycji. (I94c35) - Zaktualizowano parsowanie obiektów wektorowych, aby umożliwić automatyczne lustrzane odbicie treści
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ść zaznaczonego komponentu, jeśli obszar przewijania zostanie zmieniony, a komponent był wcześniej widoczny. - Pola tekstowe będą teraz znajdować się nad klawiaturą, gdy są zaznaczone, a klawiatura jest widoczna, gdy użytkownik znajduje się w obszarze nieleniwym przewijaniem i w trybie programowego wprowadzania tekstu to
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 udostępnione. Wersja 1.2.0-alpha05 zawiera te commity.
Zmiany w interfejsie API
- Funkcje
LazyVerticalGrid
iLazyHorizontalGrid
są teraz stabilne. (I307c0) - Tabela
LazyGridItemInfo.Unknown
została zastąpiona przez osobne tabeleLazyGridItemInfo.UnknownRow
iLazyGridItemInfo.UnknownColumn
(I56d51) LazyVerticalGrid
/LazyHorizontalGrid
i wszystkie powiązane interfejsy API zostały przeniesione do podkategorii.grid
. Zaktualizuj importy zandroidx.compose.foundation.lazy
naandroidx.compose.foundation.lazy.grid
. (I2d446, b/219942574)- Tekst:
includeFontPadding
jest teraz domyślnie wyłączony. Problemy z przycinaniem wynikające z użyciaincludeFontPadding=false
zostały rozwiązane i w przypadku wysokich skryptów nie powinno już występować przycinanie. (I31c84, b/171394808) - Interfejs zmierzonego zdarzenia udostępnia teraz właściwość parentData (I3313f).
- Wprowadziliśmy eksperymentalną funkcję
Modifier.onFocusedBoundsChanged
, która umożliwia obserwowanie granic elementów podrzędnych. (I14283, b/220030968, b/190539358, b/192043120, b/216842427) - Dodano opcję LazyLevelGrid. (I61ae7, b/191238807)
- Dodano nowy interfejs API
LazyVerticalGrid
do definiowania rozmiarów na 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)
Treści tłumaczone przez użytkowników zewnętrznych
- Zaktualizowano do wersji Kotlinx coroutines 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
są dostępne. Wersja 1.2.0-alpha04 zawiera te commity.
Zmiany w interfejsie API
BringIntoViewResponders
nie muszą już ręcznie przekazywać próśb do użytkowników nadrzędnych. Zamiast tego muszą natychmiast zwrócić prostokąt, który rodzic powinien pokazać rodzicom. (I8e66a)- Obsługa asynchronicznego wczytywania czcionek w Tekście (I77057, b/214587005)
LazyVerticalGrid
obsługuje teraz wartośćline breaking
przed elementami, których rozpiętość nie mieści się w bieżącym wierszu. (I05c40, b/207462103)- Zmieniono nazwę z
excludeFromSystemGestures
nasystemGesturesExclusion
(I19526). LazyVerticalGrid
obsługuje teraz reverseLayout. (I6d7d7, b/215572963, b/211753558)- Dodaj metodę
WindowInsets.only()
, aby umożliwić deweloperom uwzględnianie tylko wymiarów z WindowInsets. (I14c94, b/217768486) Dodano funkcje
ComposableTarget
,ComposableTargetMarker
iComposableOpenTarget
, które umożliwiają raportowanie w czasie kompilacji, gdy wywoływana jest funkcja typu „composable” kierowana na obiekt, który nie jest przeznaczony do jej użycia.W większości przypadków adnotacje mogą być wywnioskowane przez wtyczkę kompilatora Compose, więc używanie ich bezpośrednio powinno być rzadkością . Do przypadków, w których nie można wywnioskować typu danych, należą tworzenie i używanie niestandardowego aplikatora, abstrakcyjnych funkcji składanych (np. metod interfejsu), pól lub zmiennych globalnych, które są składanymi funkcjami lambda (lokalne zmienne i parametry są wywnioskowane) oraz używanie funkcji
ComposeNode
lub powiązanych funkcji składanych.W przypadku niestandardowych funkcji dopasowujących funkcje składane, które wywołują
ComposeNode
lubReusableComposeNode
, muszą dodać adnotacjęCompoableTarget
dla funkcji i wszystkich typów parametrów funkcji składanych lambda. Zalecamy jednak utworzenie adnotacji z oznaczeniemComposableTargetMarker
, a następnie używanie tej adnotacji z oznaczeniem zamiast bezpośrednioComposableTarget
. Kompozytowa adnotacja oznaczona symbolemComposableTargetMarker
jest równoważna atrybucieComposbleTarget
z pełną nazwą klasy atrybutu jako parametrem aplikatora. Przykład użyciaComposableTargetMarker
znajdziesz tutaj:anroidx.compose.ui.UiComposable
. (I38f11)
Poprawki błędów
- Teraz można przekazywać ujemne przesunięcia przewijania do aplikacji
LazyGridState.scrollToItem()
iLazyGridState.animateScrollToItem()
. (I025c6, b/211753558) - Obsługa asynchronicznego wczytywania czcionek w przypadku pola tekstowego. (Icc4bf, b/214587005)
Wersja 1.2.0-alfa03
9 lutego 2022 r.
androidx.compose.foundation:foundation:1.2.0-alpha03
i androidx.compose.foundation:foundation-layout:1.2.0-alpha03
są dostępne. Wersja 1.2.0-alpha03 zawiera te komisy.
Zmiany w interfejsie API
- Metody
notifyFocusedRect
w klasachTextInputSession
iTextInputService
są teraz wycofane i nie będą wywoływane. Zamiast niego użyj właściwościBringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874) - Umożliwiono animacje elementów siatek opóźnionych za pomocą funkcji Modifier.animateItemPlacement(). (Ib6621, b/211753218)
BringIntoViewRequester
teraz rozsyła żądania do hostowanego widoku Android. (Ia7a51)- Funkcja
FontFamilyResolver
jest teraz dostępna w usłudzeLocalFontFamilyResolver.current
.- Dodano
createFontFamilyResolver(context)
icreateFontFamilyResolver(context, coroutineScope)
, aby tworzyć nowe resolvery FontFamily poza funkcją tworzenia. - Akapit i MultiParagraph przyjmują teraz wartość
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
zawiera teraz resolver używany w tym układzie. Wycofano goTextLayoutResult.layoutInput.resourceLoader
, ponieważ nie jest już używany. (Id5a45, b/174162090)
- Dodano
- Dodaliśmy
AndroidFont
, nowy niskopoziomowy interfejs API do udostępniania nowych typów deskryptorów zasobów czcionek na Androida. Może to być na przykład wczytywanie czcionek z back-endu konkretnej aplikacji, opcjonalne znajdowanie wstępnie zainstalowanych czcionek na urządzeniu lub wczytywanie czcionki z zasobu, który nie jest dostarczany przez bieżące fabryki czcionek.- Rozszerzenie interfejsu
Font.ResourceLoaded
API o obsługę opcjonalnego i asynchronicznego wczytywania czcionek. Nie zalecamy bezpośredniego korzystania z tego interfejsu API przez deweloperów aplikacji. Aby dodać nowe typy czcionek, zapoznaj się z artykułem AndroidFont. - Funkcja rozszerzenia
Font.AndroidResourceLoader
umożliwia tworzenieFont.ResourceLoader
poza kompozycją. - Dodaliśmy parametr
loadingStrategy
do czcionek opartych na zasobach, aby umożliwić ładowanie asynchroniczne, gdy czcionka zasobów odwołuje się do plików XML dostępnych do pobrania. (Ie5aea, b/174162090)
- Rozszerzenie interfejsu
- Konstruktor
Typeface(FontFamily)
został wycofany. Wcześniej służyła ona do wstępnego wczytania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. W przypadku czcionek do pobrania może to potrwać 10 sekund. Zamiast tego użyjFontFamilyResolver.preload
- Środowisko wykonawcze
fontResource(FontFamily): Typeface
zostało wycofane. Wcześniej służyła ona do wstępnego wczytania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. Zamiast tego użyjFontFamilyResolver.preload
(If8e7c, b/174162090).
- Środowisko wykonawcze
- Teraz możesz określić typ treści dla elementów funkcji
LazyVerticalGrid
– funkcje item/items wLazyGridScope
obsługują teraz ten parametr. Podanie tych informacji pomaga w skuteczniejszym wykorzystywaniu logiki do ponownego używania elementów i powtórnego używania treści tylko w przypadku elementów o podobnym typie. (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 elementów w LazyColumn/LazyRow – funkcje item/items w LazyListScope przyjmują teraz taki parametr. Podanie tych informacji pomaga w skuteczniejszym wykorzystywaniu logiki do ponownego używania elementów i powtórnego używania treści tylko w przypadku elementów o podobnym typie. (I26506)
- Konstruktor
SubcomposeLayoutState
akceptujący obiektmaxSlotsToRetainForReuse
został wycofany. Zamiast tego wprowadziliśmy nowy konstruktor akceptującySubcomposeSlotReusePolicy
– nowy interfejs dający bardziej szczegółową kontrolę nad tym, które przedziały powinny być zachowywane do wykorzystania w przyszłości. (I52c4d) - Dodaje modyfikatory elementów WindowInsets, zarówno do dopełnienia, jak i określania rozmiaru. Dzięki temu niektóre treści mogą się rozciągać na obszar wstawki, a główne treści pozostają poza tym obszarem. Na przykład za pomocą windowInsetsPadding można wypełnić obszar 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ą one zaznaczone i wyświetla się klawiatura w trybie miękkiego wprowadzania
ADJUST_PAN
. (I8eaeb, b/190539358, b/192043120) - Na komputerze kompozycja jest tworzona lokalnie w przypadku
FontFamily.Resolver
- Środowisko wykonawcze
FontLoader
na komputery zostało wycofane - Nowa fabryka
createFontFamilyResolver
na komputery (I6bbbb, b/174162090)
- Środowisko wykonawcze
- Typ klawiatury wirtualnej nie miga już podczas przełączania fokusu między polami tekstowymi. (I1bf50, b/187746439)
- Pola tekstowe nie wymagają już dodatkowego naciśnięcia, gdy wyświetla się uchwyt kursora. (Ideb4b, b/205726883)
- Działanie lupy do zaznaczania tekstu zostało dopracowane tak, aby pasowało do lupy na platformie. (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
są dostępne. Wersja 1.2.0-alpha02 zawiera te commity.
Zmiany interfejsu API
- Dodaliśmy
NonRestartableComposable
do metod, które są przeciążeniem istniejących metod bez złożonej logiki. Zmniejsza to liczbę sprawdzania zapamiętanych przez kompilatora (równa się) wszystkich parametrów, które są powtarzane w wywoływanej funkcji wewnętrznej. (I90490) - Dodaliśmy modyfikatory
excludeFromSystemGesture
, które ułatwiają dostęp do aplikacjisetSystemGestureExclusionRects
Androida (I46f07)
Poprawki błędów
- Sposób działania lupy w przypadku zaznaczania tekstu został dopracowany, aby pasował do lupy na platformie. (Idd918, b/206833278)
LazyColumn
,LazyRow
,Modifier.verticalScroll
i inne kontenery, które używająModifier.scrollable
, obsługują teraz przewijanie kółkiem 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
są dostępne. Wersja 1.2.0-alfa01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Do elementów
LazyColumn
,LazyRow
iLazyVerticalGrid
dodano nowy parametruserScrollEnabled
, aby umożliwić użytkownikom tymczasowe lub stałe wyłączenie przewijania inicjowanego przez użytkownika za pomocą gestów dotykowych lub działań ułatwień dostępu. Przewijanie programowe za pomocą metod stanu nadal będzie dozwolone. (I7eae9, b/201150093) - Dodaj wywołanie zwrotne
onSizeChanged
do modyfikatora lupy. (I6879f) - Widget lupy wyświetla się teraz podczas przeciągania uchwytów zaznaczenia w
SelectionContainer
. (I30b38, b/139320979)
Poprawki błędów
- Rozwiązanie problemu polegającego na tym, że
TextField
uchwyt kursora nie był ukrywany po przewinięciu poza widok. (I14552, b/208883748)
Aktualizacje zależności
- Teraz zależy od Kotlina
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
są dostępne. Wersja 1.1.1 zawiera te zatwierdzenia.
Poprawki błędów
- Napraw
NullPointerException
w:androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462) - Naprawiono awarię spowodowaną przez zawartość schowka podczas odczytu ze schowka na Androidzie. (I06020, b/197769306)
- Naprawiono RTL 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
są dostępne. Wersja 1.1.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.0.0
- stabilna obsługa efektu przewijania do końca w Androidzie 12,
- Ulepszenia rozmiaru docelowego elementu dotykowego
- Pamiętaj, że w wersji Compose 1.0 komponenty Material Design będą rozszerzać swoją przestrzeń układu, aby spełniać wytyczne Material Design dotyczące rozmiaru docelowego elementu dotykowego. Na przykład docelowy element dotykowy przycisku będzie miał minimalny rozmiar 48 x 48 dp, nawet jeśli ustawisz mniejszy rozmiar przycisku. Dzięki temu komponenty Compose będą działać tak samo jak komponenty Material Design, co zapewni spójność, jeśli użyjesz widoków i Compose. Ta zmiana zagwarantuje też, że w przypadku tworzenia UI z użyciem komponentów Compose Material, minimalne wymagania dotyczące ułatwień dostępu docelowych elementów dotykowych będą spełnione.
- stabilna obsługa kolumny nawigacji,
- przekształciliśmy kilka wcześniej eksperymentalnych interfejsów API w stabilne.
- Obsługa nowszych wersji Kotlina
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
są dostępne. Wersja 1.1.0-rc03 zawiera te commity.
Poprawki błędów
- Zaktualizowano, aby obsługiwać Compose Material 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
są dostępne. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Teraz można przekazywać ujemne przesunięcia przewijania do aplikacji
LazyListState.scrollToItem()
iLazyListState.animateScrollToItem()
. (Iceb90, b/184252837) - Naprawiono błąd powodujący brak działań związanych z przewijaniem w dostępności (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
są dostępne. Wersja 1.1.0-beta04 zawiera te commity.
Nowe funkcje
- Zaktualizowano, aby była zgodna z platformą Kotlin
1.6.0
Zmiany w interfejsie API
- Usunięto niepewność w funkcji
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)
- Pokazywanie widżetu lupy podczas przeciągania kursora lub uchwytów zaznaczania w polach tekstowych. (I5391e, b/203781358)
Poprawki błędów
- Rozwiązanie problemu polegający na tym, że uchwyty tekstu nie poruszają się, gdy zmienia się widoczność 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
są dostępne. Wersja 1.1.0-beta03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Do LazyVerticalGrid dodano obsługę poziomych zakresów. (I7e2fa, b/176758183)
Dodaliśmy eksperymentalną możliwość animowania pozycji elementów listy Lazy. W LazyItemScope jest dostępny 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()) } }
- Gdy podasz klucz za pomocą atrybutu
LazyListScope.item
lubLazyListScope.items
, ten modyfikator umożliwi animacje zmiany kolejności elementów. Oprócz zmiany kolejności elementów wszystkie inne zmiany pozycji spowodowane zdarzeniami, takimi jak zmiany układu lub wyrównania, będą również animowane. (I59e7b, b/150812265)
- Gdy podasz klucz za pomocą atrybutu
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
są dostępne. Wersja 1.1.0-beta02 zawiera te zatwierdzenia.
Poprawki błędów
- Fale i inne wskazania będą teraz opóźniane tylko wtedy, gdy znajdują się w kontenerze
Modifier.scrollable()
, a nie zawsze, gdy wystąpi zdarzenie niedostępności. (Ibefe0, b/203141462) - Dodano eksperymentalny interfejs BringIntoView API, który umożliwia wysłanie do rodziców prośby o przewinięcie do elementu, aby był widoczny (Ib918d, b/195353459)
Darowizna zewnętrzna
- 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
są dostępne. Wersja 1.1.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Dodano eksperymentalny interfejs BringIntoView API, który umożliwia wysłanie do rodziców prośby o przewinięcie do elementu, aby był widoczny (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
są dostępne. Wersja 1.1.0-alpha06 zawiera te commity.
Zmiany w interfejsie API
- Dodano przeciążenie bez podrzędnych dla Layoutu, które zwiększa wydajność (Ib0d9a)
- Funkcja
SemanticsNodeInteraction.performSemanticsAction
zwraca terazSemanticsNodeInteraction
, z którego została wywołana. (I9e5db). - Dodano funkcję
performScrollToNode(matcher: SemanticsMatcher)
, która przewija element z możliwością przewijania do treści dopasowanych przez podany element dopasowujący. (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
są dostępne. Wersja 1.1.0-alpha05 zawiera te commity.
Zmiany w interfejsie API
- Dodano eksperymentalne wskaźniki historyczne do PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
Poprawki błędów
- Naprawiono obsługę ułatwień dostępu w przypadku elementów do przewijania (zarówno statycznych, jak i niestatycznych) w związku z przewijaniem (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
są dostępne. Wersja 1.1.0-alpha04 zawiera te commity.
Zmiany w interfejsie API
- Wycofane parametry
performGesture
iGestureScope
, które zostały zastąpione przez parametryperformTouchInput
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 dostępności. (I2e14b, b/197751214)
Poprawki błędów
- Dodano obsługę rozciągania podczas przewijania na urządzeniach z Androidem 12. (Iccf3c, b/171682480)
Wersja 1.1.0-alfa03
1 września 2021 roku
androidx.compose.foundation:foundation:1.1.0-alpha03
i androidx.compose.foundation:foundation-layout:1.1.0-alpha03
są dostępne. Wersja 1.1.0-alpha03 zawiera te commity.
Nowe funkcje
- Zaktualizowano funkcję Utwórz
1.1.0-alpha03
, aby bazowała na Kotlinie1.5.30
. (I74545)
Zmiany w interfejsie API
- Dodano efekt poświaty podczas przewijania. Dodano nowy eksperymentalny interfejs OverScrollConfiguration API, który umożliwia konfigurowanie efektu wizualnego przewijania. Aby wyłączyć efekt przewijania, wpisz null. (I0c304, b/171682480)
- AwaitPointerEventScope ma teraz metody withTimeout() i withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- Dodano metodę testową, która umożliwia uzyskanie ograniczonych granic. (I6b28e)
- Dodano minimalny rozmiar docelowego elementu dotykowego do interfejsu ViewConfiguration na potrzeby semantyki i wprowadzania wskaźnika do celu w celu zapewnienia ułatwień dostępu. (IE861C)
Wersja 1.1.0-alfa02
18 sierpnia 2021 r.
androidx.compose.foundation:foundation:1.1.0-alpha02
i androidx.compose.foundation:foundation-layout:1.1.0-alpha02
są dostępne. Wersja 1.1.0-alpha02 zawiera te commity.
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
są dostępne. Wersja 1.1.0-alfa01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Zaktualizowana metoda
DrawScope#drawImage
, która używa prostokątów źródła i miejsca docelowego do użycia opcjonalnego parametru FilterQuality. Jest to przydatne w przypadku grafiki pikseli, która ma być pikselizowa, gdy zostanie powiększona do grafiki pikseli. Zaktualizowano komponenty BitmapPainter + Image, aby używały opcjonalnego parametru FilterQuality (Ie4fb0, b/180311607). - Pole tekstowe teraz usuwa zaznaczenie po naciśnięciu przycisku Wstecz, co odpowiada działaniu pola tekstowego w Androidzie. (I3ca16, b/174173645)
- Dodaj uchwyt kursora. (I07a82, b/173016579)
Poprawki błędów
- Przewijanie za pomocą działań semantycznych w przypadku list opartych na lazy loadingu i zwykłych komponentów z przewijaniem jest teraz animowane (Id9066, b/190742024)
Darowizna zewnętrzna
LazyVerticalGrid
akceptuje teraz parametry rozmieszczenia zarówno w poziomie, jak i w pionie. (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 udostępnione. Wersja 1.0.5 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono problem ze śledzeniem awarii w przypadku 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
są dostępne. Wersja 1.0.4 zawiera te zatwierdzenia.
Aktualizacje zależności
- Zaktualizowano zależność od Kotlina
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 udostępnione. Wersja 1.0.3 zawiera te zatwierdzenia.
Aktualizacje zależności
- Zaktualizowano zależność od Kotlina
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
są dostępne. Wersja 1.0.2 zawiera te zatwierdzenia.
Zaktualizowano, aby obsługiwała wersję 1.0.2
Utwórz. Funkcja Compose 1.0.2
jest nadal zgodna z Kotlin 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 udostępnione. Wersja 1.0.1 zawiera te zatwierdzenia.
Aktualizacje zależności
- Zaktualizowano, aby zależało od Kotlina
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 udostępnione. Wersja 1.0.0 zawiera te zatwierdzenia.
Najważniejsze funkcje wersji 1.0.0
To pierwsza stabilna wersja Compose. Więcej informacji znajdziesz na oficjalnym blogu Compose Release.
Znane problemy
Jeśli używasz Android 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 wyższej w pliku
build.gradle
. Ten problem zostanie rozwiązany w następnej wersji Android 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 udostępnione. Wersja 1.0.0-rc02 zawiera te zatwierdzenia.
- Zaktualizowano renderowanie obramowania w przypadku kształtów ogólnych, aby rozwiązać problemy z ścieżkami zdefiniowanymi z wymiarami stałymi. (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
są dostępne. Wersja 1.0.0-rc01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Canvas obsługuje teraz parametr contentDescription dotyczący ułatwień dostępu. (IB547C)
Poprawki błędów
- Wyłączone przycisk, karta, pola wyboru i ogólny element
Modifier.clickable(enabled=false)
będą blokować kliknięcia prowadzące 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 udostępnione. Wersja 1.0.0-beta09 zawiera te commity.
Zmiany interfejsu API
- Użytkownik
ManualFrameClock
został usunięty. Jeśli chcesz sterować animacjami, użyj zamiast tegocomposeTestRule.mainClock
. (I3c3e8, b/189951065) - zmiana enum Role i LiveRegionMode na klasy wbudowane z konstruktorem prywatnym (Id1890);
- Parametr keyCapitalization jest konwertowany na klasę wbudowaną. (Id5a1c)
- Element TextOverflow został zmieniony na klasę wbudowaną. (I433af)
Poprawki błędów
- Gdy określisz unikalne klucze dla elementów kolumny/wierszy Lazy, pozycja przewijania będzie zachowana na podstawie klucza, co oznacza, że jeśli dodasz lub usuniesz elementy przed aktualnie widocznym elementem, element z danym kluczem pozostanie pierwszym widocznym. (Id263f, b/184257857)
- Obecnie kluczowe stałe to @ExperimentalComposeUiApi. Podczas przetwarzania kodu można deklarować stałe prywatne przed stabilizacją. (Ia5d48)
- Dodaliśmy do AndroidComposeTestRule strategię IdlingStrategy, której można używać w ramkach testowych do instalowania alternatywnego mechanizmu await lub do osiągnięcia spokoju. Użyj opcji
AndroidComposeTestRule.setIdlingStrategyFactory()
, zanim test zacznie instalować własną strategię. (I608fa)
Dodano reguły profilu
W tej wersji dodaliśmy reguły profilu do tych modułów tworzenia wiadomości (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.tekst
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Co to są reguły profilu?
Reguły profilu dla biblioteki określa się w pliku tekstowym
baseline-prof.txt
znajdującym się w katalogusrc/main
lub podobnym. Plik określa regułę na wiersz, gdzie reguła w tym przypadku jest wzorcem dopasowywania do metod lub klas w bibliotece. Składnia tych reguł jest superzbiorem czytelnego dla człowieka formatu profilu ART, który jest używany podczas korzystania zadb shell profman --dump-classes-and-methods ...
. Te reguły mogą mieć jedną z 2 form, aby kierować się na metody lub klasy.Reguła metody będzie miała ten wzór:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Reguła klasy będzie miała ten wzór:
<CLASS_DESCRIPTOR>
<FLAGS>
to co najmniej jeden ze znakówH
,S
iP
wskazujących, czy ta metoda ma być oznaczona jako „Przebojowa”, „Uruchomienie” lub „Po uruchomieniu”.<CLASS_DESCRIPTOR>
to deskryptor klasy, do której należy docelowa metoda. Na przykład klasaandroidx.compose.runtime.SlotTable
miałaby opisLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
to sygnatura metody, która zawiera nazwę, typy parametrów i typ zwracany metody. Na przykład metodafun isPlaced(): Boolean
w klasieLayoutNode
ma sygnaturęisPlaced()Z
.Te wzorce mogą zawierać symbole wieloznaczne (
**
,*
i?
), aby jedno reguła obejmowała wiele metod lub klas.
Do czego służą zasady?
Metoda z flagą
H
wskazuje, że jest to metoda „gorąca” i należy ją skompilować z wyprzedzeniem.Metoda z flagą
S
wskazuje, że jest to metoda wywoływana przy uruchamianiu i należy ją skompilować z wyprzedzeniem, by uniknąć kosztów kompilacji i interpretacji podczas uruchamiania.Metoda z flagą
P
wskazuje, że jest to metoda, która jest wywoływana po uruchomieniu.Klasa obecna w tym pliku wskazuje, że jest używana podczas uruchamiania i powinna być wstępnie przydzielona w pniu, aby uniknąć kosztów wczytywania klasy.
Jak to działa?
- Biblioteki mogą definiować reguły, które będą spakowane w artefaktach AAR. Gdy skompilowana aplikacja zawiera te elementy, reguły są scalane, a scalane reguły są używane do tworzenia kompaktowego binarnego profilu ART, który jest specyficzny dla aplikacji. ART może następnie wykorzystać ten profil, gdy aplikacja zostanie zainstalowana na urządzeniach, aby z wyprzedzeniem skompilować określony podzbiór aplikacji w celu poprawy jej wydajności, zwłaszcza podczas pierwszego uruchomienia. Pamiętaj, że nie będzie to miało wpływu na aplikacje z możliwością debugowania.
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 udostępnione. Wersja 1.0.0-beta08 zawiera te commity.
Zmiany interfejsu API
- Typ NestedScrollSource został zastąpiony przez klasę wbudowaną. (IE321b, b/187055290)
- Zrefaktoryzowano użycia enum do klas wbudowanych, aby uniknąć problemów z pełnymi instrukcjami związanymi z dodawaniem nowych wartości wyliczeniowych. (I2b5eb)
- Dodanie czasu oczekiwania na kliknięcie lub przełączenie, aby zapobiec wyświetlaniu efektu falowania podczas przewijania lub przeciągania (Ia2704, b/168524931).
- Właściwości ContentDescription i Text nie są już pojedynczymi wartościami, ale listami. Dzięki temu można je łączyć w postaci niemodyfikowanej, a nie w postaci konkatenacji. Udostępniliśmy też lepsze interfejsy API do testowania, które wykorzystują te zmiany (Ica6bf, b/184825850).
- Metoda
Modifier.focusModifier()
została wycofana i zastąpiona przezModifier.focusTarget()
(I6c860) - Enum typów Klawiatura została zastąpiona klasą wbudowaną. (I73045, b/187055290)
- Wymiana enumu
FocusState
na interfejsFocusState
(Iccc1a, b/187055290) - Enum ImeAction został zastąpiony przez wbudowaną klasę. (I18be5, b/187055290)
- Funkcje
AnnotatedString.withAnnotation
to teraz ExperimentalTextApi zamiast ExperimentalComposeApi. (I0cd0a)- Konstruktor TextUnit z parametrem TextUnitType używa teraz ExperimentalTextApi zamiast ExperimentalComposeApi.
- PaddingValues ma teraz wartość
@Stable
zamiast@Immutable
(I88c50)
Poprawki błędów
- Naprawa błędów związanych z przytrzymaniem pustego obszaru w przypadku tekstu, który nie jest pusty. (I33ab5, b/187437299)
- Pokaż pasek narzędzi po elemencie SelectAll (I495d9, b/185919613)
- Naprawiono problem z przesuwanymi kontenerami, które obcinały elementy na osi poprzecznej. Można było to łatwo odtworzyć, jeśli masz element LazyRow z elementami typu Card. Teraz cień nie będzie przycinany. (Icb635, b/186318448)
- Rozwiązano problem, który powodował, że fale lub inne wskazania czasami zacinały się podczas długiego kliknięcia przy użyciu Modifier.combinedClickable (I2298c, b/186223077)
- Teraz funkcje
detectDragGesures
,detectVerticalGestures
idetectHorizontalGestures
będą automatycznie przetwarzać zmiany pozycji, więc nie trzeba wywoływać funkcji change.consumePositionChange w obsługach zwrotnych onDrag (I42fc4, b/185096350, b/187320697) Modifier.onGloballyPositioned()
zostało zmienione, 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 teraz kolejność modyfikatorów wpływa na to, jakie współrzędne będą podawane w raportach. (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
są dostępne. Wersja 1.0.0-beta07 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- W przypadku kolumny/wiersza LazyColumn/Row (I8a4bc, b/184940225) wprowadzono logikę wstępnego pobierania następnego widocznego elementu.
- Dodano uchwyt do zaznaczania klipów (Iff80d, b/183408447).
Poprawki błędów
- LazyColumn/Row będzie teraz przechowywać do 2 wcześniej widocznych elementów aktywnych (nieusuniętych), nawet jeśli zostały już przewinięte. Dzięki temu komponent będzie mógł ponownie wykorzystać aktywne subkompozycje, gdy trzeba będzie utworzyć nowy element, który przyspieszy przewijanie. (Ie5555)
- Usunięto pole paintBackground. (I38660)
- Narysuj tło zaznaczenia za pomocą aplikacji DrawScope. (I73c61, b/186674472)
- Rozwiązaliśmy regresję w wersji beta06, która dotyczyła wiersza/kolumny używającej układów spacedBy do rozmieszczania elementów ważonych 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
są dostępne. Wersja 1.0.0-beta06 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Rozwiąż konflikt z nawigacją przy użyciu gestów (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 funkcję
SemanticsActions.ScrollToIndex
, która umożliwia przewijanie listy z indeksyzowanymi elementami do elementu o określonym indeksie, oraz funkcjęSemanticsProperties.IndexForKey
, która zwraca indeks elementu na liście z elementami kluczowymi. Oba działania są implementowane przez LazyList.- Dodano
SemanticsNodeInteraction.performScrollToIndex
, które przewija listę do podanego indeksu, orazSemanticsNodeInteraction.performScrollToKey
, które przewija listę do elementu z podanym kluczem. (I4fe63, b/178483889, b/161584524)
- Dodano
- Obsługa zapisu w polu AnnotatedString w polu TextFieldValue.Saver. Dodano funkcje pomocnicze addTtsAnnotation i withAnnotation do klasy AnnotatedString.Builder (I8cbdc, b/178446304).
- Do
PaddingValues(horizontal, vertical)
dodano domyślne wartości parametru0.dp
(I05571, b/181336792).
Poprawki błędów
- Elementy podrzędne wiersza i kolumny z wartością
weight(fill = false)
nie powodują już, że element nadrzędny wypełnia całą dostępną przestrzeń 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
są dostępne. Wersja 1.0.0-beta05 zawiera te commity.
Zmiany interfejsu API
- Interfejs FlingBehavior jest teraz oznaczony jako @Stable. Wszystkie implementacje powinny być zgodne z umową
@Stable
. (I93354, b/184830577)
Poprawki błędów
- Naprawiono czynności związane z przewijaniem ułatwień dostępu
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
iaccessibilityActionScrollDown
. Zamiast przewijania do końca ekranu, teraz przewinie się o jeden ekran w podanym 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
są dostępne. Wersja 1.0.0-beta04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zmiana nazw hideOprogramowanieKlawiatura i show otrzymywaćna klawiatura na kontrolerze SoftwarekeyController odpowiednio na
hide()
ishow()
.- Udostępnij pełny interfejs CompositionLocal dla klasy LocalSoftwareKeyboardController, aby umożliwić jej ustawienie (szczególnie przydatne w testach) (I579a6)
TextOverflow.Visible
jest wprowadzany. (Ic8f89)- Instancje publiczne
RowScope
,ColumnScope
,BoxScope
,BoxWithConstraintsScope
zostały usunięte. (I4e83e, b/181869067)
Poprawki błędów
- Rozwiązaliśmy problem, gdy elementy
LazyColumn
/LazyRow
znajdujące się na krawędziach były nieprawidłowo umieszczone po szybkim przełączeniu (Ie4d13, b/183877420) Przed tą zmianą lokalne funkcje kompozytowe można było pominąć na podstawie ich parametrów. Po tej zmianie żadne lokalne funkcje kompozytowe nie będą pomijane. Ta zmiana została wprowadzona, ponieważ funkcje lokalne często i zwykle przechwytują parametry z funkcji nadrzędnej, a ich pomijanie jest częstym źródłem błędów.
Podsumowując, rozważ ten 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 kompozytowa
ShowCount
zawsze pomijała, 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
są dostępne. Wersja 1.0.0-beta03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Środowisko wykonawcze
DefaultMonotonicFrameClock
zostało wycofane. WywołaniewithFrameNanos
lubRecomposer.runRecomposeAndApplyChanges
bez numeruMonotonicFrameClock
spowoduje zgłoszenieIllegalStateException
. (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
są dostępne. Wersja 1.0.0-beta02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano kilka drobnych optymalizacji w logice pomiaru LazyColumn (Ic6889).
- Dodano nowe lokalne API
LocalSoftwareKeyboardController
do komponowania, które zastępuje poprzedni interfejs SoftwareKeyboardController w TextField. (I5951e, b/168778053) - Dodano nowe lokalne API
LocalSoftwareKeyboardController
do komponowania, które zastępuje poprzedni interfejs SoftwareKeyboardController w TextField. (I84472, b/168778053)
Poprawki błędów
- Wdrożenie ograniczeń dotyczących publicznego używania 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
są dostępne. Wersja 1.0.0-beta01 zawiera te commity.
To jest pierwsza wersja beta Compose 1.0.0.
Zmiany interfejsu API
- Dodano wywołanie zwrotne onStart do:
detectDragGestures
(I67269, b/179995594) - Modyfikatory służące do dopasowywania rozmiaru do wartości bezwzględnej nie są już eksperymentalne. (I15744)
- Usunięto asercje dp (I798d2)
- Z wszystkich pól tekstowych usunięto wywołanie metody SoftwareKeyboardController, które wkrótce zostanie zastąpione nowym interfejsem API. (Iae869, b/168778053)
- MeasureBlocks zostało przemianowane na MeasurePolicy i stało się przyjaznym interfejsem. Interfejsy API dotyczące układu zostały zaktualizowane i uproszczone, aby używały MeasurePolicy. (Icab48, b/167662468, b/156751158)
- Wartość
InteractionState
została zastąpiona wartością[Mutable]InteractionSource
- Interfejsy odpowiadają za wysyłanie / zbieranie zdarzeń interakcji.
- Zamiast przekazywania wartości
interactionState = remember { InteractionState() }
do komponentów takich jakButton
iModifier.clickable()
, użyj wartościinteractionSource = remember { MutableInteractionSource() }
. - Zamiast:
Interaction.Pressed in interactionState
użyj funkcji rozszerzeń w InteractionSource, takich jak InteractionSource.collectIsPressedAsState(). - W skomplikowanych przypadkach możesz używać parametru InteractionSource.interactions do obserwowania strumienia interakcji. Więcej informacji znajdziesz w dokumentacji i przykładach InteractionSource.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Usunięto przestarzałe metody LayoutCoordinates. Zamiast właściwości positionInParent i boundsInParent należy używać funkcji (I580ed, b/169874631, b/175142755).
- Utworzono nową klasę TextInputSession na potrzeby sesji wprowadzania danych z niskiego poziomu komponentów tekstowych, takich jak CoreTextField. (I8817f, b/177662148)
- Element Placeable udostępnia teraz wartość measuredSize, która określa rozmiar, do którego został zmierzony układ podrzędny. Ten rozmiar może nie spełniać ograniczeń dotyczących pomiarów. (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)
Dodaj LazyListState.animateScrollToItem
Ta metoda powoduje płynne przewijanie do określonego elementu na liście. (I4bfd7)
Funkcja ScrollableState.smoothScrollBy() została przemianowana na animateScrollBy() Funkcja LazyListState.snapToItemIndex() została przemianowana na scrollToItem() Funkcja ScrollState.smoothScrollTo() została przemianowana na animateScrollTo() (I35ded)
Modifier.zoomable został zastąpiony przez Modifier.transformable. Dodano funkcje smoothPanBy i smoothRotationBy. (Ifc32b, b/175294473)
Pole
defaultFactory
w przypadkucompositionLocalOf
istaticCompositionLocalOf
jest teraz wymagane, a nie opcjonalne.Ta zmiana usuwa potencjalny błąd typu w przypadku typów, które nie mogą być puste, gdy nie podano fabryki domyślnej. Wcześniej w przypadku typu, który nie może przyjmować wartości null, funkcja ta zwracała odwołanie null.
W przypadku typów z opcją null warto podać
{ null }
jako domyślną fabrykę.Nie zalecamy używania zmiennych lokalnych z typami, które nie mogą być puste, chyba że można podać sensowne wartości domyślne. Jeśli nie ma żadnej sensownej wartości domyślnej, funkcja lambda
defaultFactory
powinna wyrzucić wyjątek. Jednak wywołanie wyjątku oznacza, że konsumenci funkcji lokalnej będą mieli do niej ukrytą zależność, która nie jest wymuszana przez system typów. (Ifbd2a)Zmieniono wartość parametru
Indication#createIndication()
naIndication#rememberUpdatedIndication(InteractionState)
i usunięto parametrInteractionState
z funkcji IndicationInstance#drawIndication()
. Obiekt IndicationInstance powinien odpowiadać tylko za rysowanie efektów wizualnych, a nie uruchamianie animacji ani zapisywanie stanu w odpowiedzi na zmiany stanu InteractionState. Te animacje i zapisywanie stanu powinny odbywać się w ramachrememberUpdatedIndication()
. Zmieniono też parametrindication
w plikuModifier.indication
, aby był wymagany. (IC1764, b/152525426)Działania związane z tekstem automatycznie sprawdzają ostrość (I13777, b/179648629)
Usunięto
runBlockingWithManualClock
(I15cdc, b/179664814)Pozycja przewijania w funkcjach Modifier.verticalScroll()/horizontalScroll() jest teraz reprezentowana za pomocą typów Int (I81298)
Pakiety metod smoothScrollBy i scrollBy zostały zmienione na
androidx.compose.foundation.gestures.*
(I3f7c1, b/175294473)Element FlingConfig został przemianowany na FlingBehavior i umożliwia teraz dostosowywanie animacji zawieszenia zamiast wstępnie zdefiniowanych wartości zanikania. (I02b86, b/175294473)
Zmieniliśmy nazwy modyfikatorów rozmiaru. Zmieniono nazwę modyfikatora.width/height/size na requiredWidth/requiredHeight/requiredSize. Zmieniono nazwę metody Modifier.preferredWidth/preferredHeight/preferredSize na szerokość/wysokość/rozmiar. (I5b414)
Parametr defaultMinSizeConstraints zmienił nazwę na defaultMinSize. (I4eaae)
Usunięto modyfikator.tapStepFilter. Użyj w zamian zasady
Modifier.pointerInput { detectTapGestures(...) }
. (I266ed, b/175294473)częściowe wykorzystanie zostało usunięte z systemu wprowadzania wskaźnika. Zalecanym sposobem koordynowania częściowego konsumpcji jest Modifier.nested Scroll. (Ie9c9b)
Orientacja została przeniesiona do pakietu podstawy. Moduł VelocityTracker został przeniesiony z ui.gesture do ui.input.pointer. (Iff4a8, b/175294473)
Klasa AnimationClockObservable i jej podklasy zostały usunięte. AnimatedFloat został usunięty. (Icde52, b/177457083)
Funkcje drawerState.open() i drawerState.close() są teraz zawieszone. Użyj funkcji PamiętajCoroutineScope(), aby uzyskać zakres kompozycji i je wywołać (I16f60, b/175294473).
Providers zostało zmienione na CompositionLocalProvider
- Konstruktor kompozycji nie akceptuje już parametru key i został wycofany.
- currentCompositeKeyHash została przekształcona z funkcji na najwyższym poziomie na funkcję składaną na najwyższym poziomie.
- Komponenty CompositionData i CompositionGroup zostały przeniesione do przestrzeni nazw androidx.compose.runtime.tooling.
- Zmienna ComposableLambda została zastąpiona interfejsem zamiast konkretnej klasy i nie zawiera już parametrów typu.
- Zmienna ComposableLambdaN została zamieniona na interfejs zamiast konkretnej klasy i nie ma już parametrów typu.
- Funkcja snapshotFlow została przeniesiona do przestrzeni nazw androidx.compose.runtime
- metoda scalania w SnapshotMutationPolicy nie jest już eksperymentalna
- Funkcja clearRoots najwyższego poziomu
@TestOnly
została usunięta. Nie jest już potrzebne. - Funkcje keySourceInfoOf i resetSourceInfo zostały usunięte. Nie są już potrzebne.
- Element Composer.collectKeySourceInformation został usunięty. Nie jest już potrzebne.
- Metody isJoinedKey, joinedKeyLeft i joinedKeyRight zostały usunięte. Nie są już potrzebne.
- Różne interfejsy API najwyższego poziomu zostały przeniesione i porządkowane w różne pliki. Ze względu na semantykę klasy plików w Kotlinie spowoduje to utratę zgodności binarnej, ale nie źródłowej, więc nie powinno stanowić problemu dla większości użytkowników.
- (I99b7d, b/177245490)
Zmienna Modifier.scrollable została przerobiona. Teraz zamiast klasy ScrollableController używa interfejsu Scrollable (I4f5a5, b/174485541, b/175294473)
Modifier.draggable akceptuje teraz obiekt DraggableState zamiast prostej funkcji lambda. Możesz utworzyć stan za pomocą funkcji
rememberDraggableState { delta -> }
, aby uzyskać takie samo zachowanie jak wcześniej (Ica70f, b/175294473)Dodano modyfikatory requiredWidth(IntrinsicSize) i requiredHeight(IntrinsicSize) na potrzeby wymaganego rozmiaru do rozmiarów bezwzględnych. (I0a6b4)
Wycofany interfejs
emptyContent()
został usunięty. Zamiast tego użyj pola{}
. (Idb33f, b/179432510)Usunięto niektóre wycofane wcześniej interfejsy API (Ice5da, b/178633932)
Poprawki błędów
- Dodano nowy lokalny interfejs API do kompozycji Local SoftwareKlawiaturaController, aby zastąpić poprzedni interfejs SoftwareKlawiaturaController 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 udostępnione. Wersja 1.0.0-alpha12 zawiera te commity.
Zmiany w interfejsie API
- Modifier.pointerInput wymaga teraz zapamiętywania klawiszy, aby wskazywać, kiedy współprogram wykrywania danych wejściowych wskaźnika ma zostać uruchomiony ponownie w przypadku nowych zależności. (I849cd)
- Testowanie aktualizacji: funkcja hasText() sprawdza w polu tekstowym zarówno dane wejściowe, jak i teksty etykiet, wskazówek i zastępczych (Iab803)
- Dodano typ PaddingValues.Absolute, który można używać w interfejsach API obsługujących typ PaddingValues. (Ia5f30).
- Metoda onImeActionPerformed została wycofana. Zamiast niej używaj metody KeyboardActions (If0bbd, b/179071523)
- Aby lepiej dopasować konwencje nazewnictwa do bibliotek ImageBitmap i ImageVector, zmieniliśmy nazwę klasy ImagePainter na BitmapPainter, a klasy VectorPainter – na VectorPainter. (Iba381, b/174565889)
- Lepsze testowanie interfejsów API pod kątem podciągu pod kątem podkładu jako argumentu (Icbe78)
- Wprowadziliśmy element
InfiniteAnimationPolicy
kontekstu coroutine, który będzie stosowany w nieskończonych animacjach. Domyślnie nie jest instalowana żadna zasada, z wyjątkiem testów z użyciemComposeTestRule
. (I50ec4, b/151940543) - Funkcje Animatable.snapTo i Animatable.stop są teraz funkcjami zawieszania (If4288)
- ComponentActivity.setContent zostało przeniesione do androidx.activity.compose.setContent w module androidx.activity:activity-compose. (Icf416).
- Metody destrukturyzacji i copy() zostały usunięte z kilku klas, w których były rzadko używane. (I26702, b/178659281)
Dodano obsługę kluczy niestandardowych w przypadku kolumn i wierszy Lazy Dzięki temu możemy mądrzej zarządzać przeszeregowaniem elementów. Stan zapisany w blokach zapamiętaj {} będzie się zmieniać wraz z elementem, gdy zmienisz kolejność elementów lub usuniesz element z poziomu środkowego.
LazyColumn { items(users, key = { user -> user.id }) { ... } }
Zmieniono Indication#createInstance na @Composable, a LocalIndication tak, by zawierał Indication, a nie () -> Indication (I5eeea, b/157150564)
Tabela
Constraints.enforce
została zastąpiona tabeląConstraints.constrain
. (I8B8EA).Metoda loadFontResource została wycofana. Zamiast nich użyj fontResource. Metody imageResource, loadImageResource, vectorResource i loadVectorResource zostały wycofane. Zamiast tego użyj painterResource. (I6b809)
Ze względu na wydajność semantyka ScrollAxisRange przyjmuje teraz lambda zwracające wartości typu Float zamiast bezpośrednich wartości typu Float. (If4a35, b/178657186)
Dodano semantykę EditableText do oznaczania możliwego do edytowania tekstu wejściowego pola tekstowego na potrzeby ułatwień dostępu oraz odpowiadające jej metody testowe w celu sprawdzania semantyki (I8e07a).
Modifier.clickable nie obsługuje teraz podwójnego i długiego kliknięcia. Aby uzyskać tę funkcję, użyj Modifier.combinedClickable. (Iafad1)
Funkcja toIntPx() została przemianowana na roundToPx(). (I9b7e4, b/173502290)
Nazwa interfejsu API IntBounds została zmieniona na IntRect, a sam interfejs API został ulepszony. (I1f6ff)
Metoda Modifier.dragGestureFilter została wycofana. Zamiast tego użyj pola
Modifier.pointerInput { detectDragGestures (...)}
. Możesz też użyć metody Modifier.draggable, aby przeciągać jedną oś (I0ba93, b/175294473)Zmieniliśmy nazwę sekcji Ambients, aby pasowała do nazwy Ambient -> CompositionLocal. Elementy tła miały kiedyś nazwę „AmbientFoo”, a teraz mają nazwę „LocalFoo”. (I2d55d)
Zaznaczenie zostało przeniesione do modelu podstawowego. (I7892b)
Podobnie jak w przypadku usunięcia kompozytowego komponentu
state { 0 }
i promocji komponenturemember { mutableStateOf(0) }
, usuniemy komponentsavedInstanceState { 0 }
. Zamiast tego użyj funkcjirememberSaveable { mutableStateOf(0) }
, która automatycznie zapisuje i przywraca stan, jeśli typ użyty w MutableState może być przechowywany w pakiecie. Jeśli wcześniej przekazywałeś niestandardowy obiekt zapisywania, teraz musisz użyć nowej przeciążonej funkcji rememberSaveable z parametremstateSaver
. Użycie będzie wyglądać tak:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004)Dodano semantykę hasła dla funkcji ułatwień dostępu (I231ce)
Dodano ProgressBarRangeInfo.Indeterminate, aby oznaczyć nieokreślone paski postępu na potrzeby ułatwień dostępu (I6fe05).
Czas odtwarzania w animacji jest teraz nieskończony do nanosekund (If776a)
Annotatorka @ComposableContract została wycofana na rzecz 3 bardziej szczegółowych adnotacji.
@ComposableContract(restartable = false)
stało się@NonRestartableComposable
,@ComposableContract(readonly = true)
–@ReadOnlyComposable
,@ComposableContract(preventCapture = true)
–@DisallowComposableCalls
, a@ComposableContract(tracked = true)
zostało usunięte. (I60a9d)Narzędzia
emptyContent()
i(@Composable () -> Unit).orEmpty()
zostały wycofane, ponieważ nie mają już żadnego pozytywnego wpływu na wydajność ani wartości (I0484d)Rekompilatory można teraz zamknąć. Zamknięte rekompilatory będą kontynuować rekompilację do momentu zakończenia wykonania podprocesów potomnych. Nazwa polecenia Recomposer.shutDown została zmieniona na anulowanie, aby kontrastować z zamknięciem. (Ib6d76)
Interfejsy API związane z LazyVerticalGrid są oznaczone jako eksperymentalne (Ia53e3, b/178519862).
Metoda rememberSavedInstanceState() została przemianowana na rememberSaveable() i przeniesiona do pakietu androidx.compose.runtime.saveable. (I1366e, b/177338004)
Nazwa RestorableStateHolder została zmieniona na SaveableStateHolder i została przeniesiona do pakietu androidx.compose.runtime.saveable. Metoda wewnętrzna RestorableStateProvider została przemianowana na SaveableStateProvider. Typ ogólny został usunięty, więc możesz przekazać dowolny typ jako klucz. Eksperymentalne oznaczenia nie są już potrzebne. (I0902e, b/174598702)
Saver, listSaver(), mapSaver(), autoSaver zostały przeniesione z androidx.compose.runtime.savedinstancestate do androidx.compose.runtime.saveable (I77fe6)
Artefakt androidx:compose:runtime:runtime-saved-instance-state został przemianowany na androidx:compose:runtime:runtime-saveable (I6dcac).
Wiele starych, wycofanych interfejsów API z pakietu UI zostało usuniętych. (I2f2dc)
Element compose:runtime-dispatch został wycofany. MonotonicFrameClock znajdziesz teraz w komponencie compose:runtime, a AndroidUiDispatcher – w komponencie compose:ui. (Ib5c36)
Parametry RounderCornerShape, CutCornerShape i CornerBasedShape zostały przemianowane z left/right (lewo/prawo) na start/end (początek/koniec), aby umożliwić automatyczne lustrzane odwzorowanie kształtu w kierunku RTL. Parametry AbsoluteRounderCornerShape i AbsoluteCutCornerShape zostały wprowadzone na potrzeby przypadków, w których nie jest pożądane automatyczne lustrzane odbicie. (I61040, b/152756983)
Zmienna canDrag została usunięta z elementu Modifier.scrollable. (Id66e7, b/175294473)
Interfejs API, do którego kieruje się wtyczka kompilatora Compose, został przebudowany, aby używać interfejsu zamiast konkretnej klasy. Interfejs nie używa już też parametru typu.
Ta zmiana jest zmianą wewnętrzną, która nie powinna mieć wpływu na zgodność kodu źródłowego, ale powoduje zmianę binarną. (I3b922, b/169406779)
Usunięto modyfikator.scaleStepFilter. Zamiast tego użyj Modifier.zoomable. Możesz też użyć polecenia
Modifier.pointerInput { detectMultitouchGestures { ... }}
(Id5da1, b/175294473)Element AnimatedValue/Float został wycofany. Zamiast tego użyj interfejsu Animatable. (I71345, b/177457083)
- Usunięcie CoreText i CoreTextField z publicznego interfejsu API
- Usunięto przestarzałą metodę SelectionContainer (I99c19).
Usuń wycofane funkcje przewijania, które nie są zawieszane. Zgodnie ze zmianami w poprzedniej wersji funkcje przewijania bez zawieszania zostały całkowicie usunięte. Przejdź na funkcje zawieszania o tych samych nazwach. Zakres współprogramu można uzyskać za pomocą funkcji rememberCoroutineScope(). (I3d39c, b/178169563)
Metoda androidx.compose.foundation.layout.ConstraintLayout została wycofana i zastąpiona przez androidx.constraintlayout.compose.ConstraintLayout. Musisz dodać zależność od pliku
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01
. (I87adc)Filtry tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter i pressIndicaitonGestureFilter zostały wycofane. Zamiast tego użyj Modifier.clickable lub Modifier.pointerInput z funkcją detectTapGestures. (I6baf9, b/175294473)
Użytkownik
Recomposer.current()
został usunięty. [Abstract]ComposeView jest teraz domyślnie ustawiony na leniwie tworzone, ograniczone do okna rekompilatory, które są obsługiwane przez ViewTreeLifecycleOwner dla okna. Znaczniki animacji oparte na ramce rekompozycja i withFrameNanos są wstrzymywane na czas zatrzymania cyklu życia hosta. (I38e11)Recomposer.runningRecomposers udostępnia teraz globalny stan StateFlow tylko do odczytu RecomposerInfo, który umożliwia obserwowanie bieżącego stanu kompilacji w trakcie procesu. Preferuj ten interfejs API przy użyciu interfejsu Recomposer.current(), który jest teraz 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
są dostępne. Wersja 1.0.0-alpha11 zawiera te commity.
Zmiany w interfejsie API
Wycofaj nie zawieszające scrollBy i usuń nie zawieszające scrollTo
Zalecamy teraz używanie funkcji zawieszania, aby kontrolować przewijanie i czekać na jego zakończenie. W ramach tego przejścia wycofujemy lub usuwamy wersje tych funkcji, które nie zostały zawieszone. (Ie9ced)
Wycofanie funkcji smoothScrollBy, która nie zawiesza animacji. Zalecamy teraz używanie funkcji zawieszania, aby kontrolować przewijanie i czekać na jego zakończenie. W ramach tej zmiany wycofujemy wersje tych funkcji, które nie zostały zawieszone. (I12880)
Do obrazów i ikon został dodany parametr Opis treści. Służy do przekazywania opisu usług ułatwień dostępu (I2ac4c).
Pole tekstowe podstawowe otrzymało nowy parametr o nazwie „decorationBox”. Umożliwia dodawanie elementów dekoracyjnych, takich jak ikony, elementy zastępcze, etykiety itp., do pola tekstowego i zwiększanie obszaru docelowego tego pola. (I16996)
Parametr canDrag został usunięty z funkcji Modifier.draggable (Ic4bec, b/175294473).
Usunięto AnimatedFloat.fling, który przyjmuje FlingConfig. Zamiast tego użyj zawieszenia Animatable.animateDecay. (I4659b, b/177457083)
Usunięto klasę
data class
z tych zajęć:- Treść wbudowanego tekstu
- LocaleList
- (I605c7)
Teraz można tworzyć elementy klikalne, przełączalne i wybierane poza kompozycją (I0a130, b/172938345, b/175294473).
Komórka/wiersz z możliwością przewijania zostały wycofane. Korzystanie z ScrollableColumn jest mniej wydajne niż z LazyColumn, gdy masz duży sformatowany tekst, ponieważ za pomocą LazyColumn możemy tylko komponować, mierzyć i rysować widoczne elementy. Aby uchronić użytkowników przed niewydajnym działaniem, zdecydowaliśmy się wycofać elementy ScrollableColumn i ScrollableRow i promować wykorzystanie metod LazyColumn i LazyRow. Użytkownicy mogą zdecydować, że nie wymagają leniwego działania, i użyją modyfikatorów bezpośrednio w ten sposób: Column(Modifier.vertical Scroll(remember ScrollState())) (Ib976b, b/170468083).
Nowa metoda fabryczna
items(count: Int)
dla zakresu LazyColumn/LazyRow/LazyVerticalGrid. Funkcjeitems(items: List)
iitemsIndexed(items: List)
są teraz funkcjami rozszerzenia, więc musisz je ręcznie importować. Nowe przeciążenia rozszerzeń dla tablic: items(items: Array) i itemsIndexed(Array) (I803fc, b/175562574)Usunięto przestarzały element AbsoluteArrangement. (Iffa96, b/177641870)
Do elementu Box dodano parametr proMinConstraints, który określa, czy przychodzące ograniczenia minimalne powinny być przekazywane do zawartości Box. Wartość domyślna to fałsz. (I0125b, b/152613457)
Poprawki błędów
- Interfejsy onCommit, onDispose i onActive zostały wycofane i zastąpione interfejsami SideEffect i DiposableEffect (If760e).
- Element WithConstraints został przerobiony na BoxWithConstraints i przeniesiony do pakietu foundation.layout. (I9420b, b/173387208)
Zmiany w funkcjach fabrycznych dla czcionki, rodziny czcionek i kroju czcionki
- Dodano funkcje fabryczne, które zaczynają się od wielkiej litery.
- wycofane wcześniejsze funkcje fabryczne z małymi literami na początku,
- Nowe funkcje fabryczne zwracają FontFamily zamiast podklas
- Ukryj konstruktory podklas, aby można je było tworzyć tylko za pomocą funkcji fabrycznych.
- Zmieniono nazwę Font.asFontFamily na Font.toFontFamily.
- (I42aa7)
Dodano
ComposeContentTestRule
, który rozszerza zakresComposeTestRule
i definiuje zasadęsetContent
, która została usunięta zComposeTestRule
. Dodano metodę fabrycznącreateEmptyComposeRule()
, która zwracaComposeTestRule
i nie uruchamia Activity. Użyj tej opcji, jeśli chcesz uruchomić aktywność podczas testu, np. za pomocą narzędziaActivityScenario.launch
(I9d782, b/174472899)animateAsState to teraz animateFooAsState, gdzie Foo to typ animowanej zmiennej, np. Float, Dp, Offset itp. (Ie7e25)
Gęstość jest teraz zakresem odbiorczym interfejsów układu. (I18aad).
TextFieldValue akceptuje AnnotatedString. Ta zmiana dotyczy tylko interfejsu API, a edytowanie tekstu w wielu stylach nie jest jeszcze możliwe.
- Usunięto
initial
z parametrów konstruktora EditingBuffer. (I326d5)
- Usunięto
Funkcje invalidate i compositionReference() zostały wycofane na rzecz funkcji currentRecomposeScope i rememberCompositionReference. (I583a8)
Ciąg AnnotatedString został zmieniony tak, aby był dłuższy niż kotlin.CharSequence. Dlatego długość i podciąg są teraz funkcjami instancji, a funkcje rozszerzenia zostały usunięte. (Iaf429)
Czas trwania i czas działania zostaną zastąpione długimi milisekundami, a ten krok eliminuje zależność danych wejściowych wskaźnika do tych klas. (Ia33b2, b/175142755, b/177420019)
PamiętajObserver, która zastąpiła funkcję CompositionLifecycleObserver, a zasada CompositionLifecycleObserver została wycofana.
RememberObserver
zastępujeCompositionLifecycleObserver
z modyfikowaną semantyką i przemianowanymi metodami. Przejście na nowy interfejs API można przeprowadzić automatycznie w przypadku obiektów, które są zapamiętywane tylko raz. Jest to zalecana praktyka. Jeśli jednak odniesienie w kompozycji zostało zapamiętane więcej niż raz, funkcjaonRemembered
jest wywoływana dla każdego odwołania, w którym elementonEnter
jest wywoływany tylko raz. FunkcjaonEnter
była wywoływana wiele razy, jeśli obiekt był używany w podkompozycjach, np.WithConstraints
iScaffold
sprawiły, że gwarancja pojedynczego wywołaniaonEnter
była zawodna i została usunięta dlaRememberObserver
.RememberObserver
dodajeonAbandoned
, które jest wywoływane, jeśli instancjaRememberObserver
zostanie zwrócona z połączenia zwrotnego przekazanego doremember
, ale nie została zapamiętana w stanie kompozycji. W związku z tym nigdy nie zostanie wywołaneonRemembered
. Może się tak zdarzyć, jeśli wyjątek spowoduje przerwanie tworzenia kompozycji przed jego zakończeniem lub jeśli kompozycja zostanie odrzucona, ponieważ stan, dla którego była tworzona, nie jest już aktualny lub nie jest już potrzebny. Jeśli instancjaRememberObserver
po zalecanej powyżej rekomendacji dotyczącej jednego odwołania ś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 w funkcjionRemembered
, można zignorować funkcjęonAbandoned
, ponieważ nie zostanie ona wywołana, gdy wywołana zostanie funkcjaonRemembered
. (I02c36)Nazwa TransformedText.transformedText została zmieniona na TransformedText.text.
- TransformedText nie jest już klasą danych (Ie672a).
Te zajęcia nie są już zajęciami z danymi:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- Waga czcionki
- Ozdobniki tekstu
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
Usunięto eksperymentalne metody monotonicFrameAnimationClockOf (Ib753f, b/170708374).
wycofane metody dotyczące współrzędnych globalnych i wprowadziliśmy nowe metody dotyczące współrzędnych opartych na oknie; (Iee284)
Zamiast ImeAction.NoAction użyj ImeAction.None
- Zamiast ImeAction.Unspecified (Ie1bcc) użyj ImeAction.Default
Funkcja FocusRequester.createRefs jest teraz oznaczona jako eksperymentalna, ponieważ może ulec zmianie. (I2d898, b/177000821)
Zmiana nazwy SemanticsPropertyReceiver.hidden na invisibleToUser i oznaczenie @ExperimentalComposeUiApi. AccessibilityRangeInfo zostało zmienione na ProgressBarRangeInfo. stateDescriptionRange zostało zmienione na progressBarRangeInfo. AccessibilityScrollState zostało zmienione na ScrollAxisRange. horizontalAccessibilityScrollState zostało zmienione na horizontalScrollAxisRange. verticalAccessibilityScrollState zostało zmienione na verticalScrollAxisRange. (Id3148)
Zmieniliśmy VisualTransformation, by stała się praktycznym interfejsem (I3bba4)
Korzystanie z TestCoroutineDispatcher w testach (I532b6)
Usunięto wartość PointerInputData i zmodyfikowaliśmy ją, aby dodać do niej wszystkie pola PointerInputData. Zdarzenie PointerInputEvent i zdarzenie PointerInputEventData są teraz wewnętrzne, ponieważ nie są używane w żadnym publicznym interfejsie API. (Ifff97, b/175142755)
Zmieniono nazwę TextInputService.onStateUpdated na updateState (Id4853)
Usuń displaySize, ponieważ nie należy go używać. Zwykle lepiej jest użyć funkcji onRoot() lub rozmiaru co najmniej 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
są dostępne. Wersja 1.0.0-alfa10 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- ImeOptions i KeyboardOptions nie są już klasą danych (I3c898, b/168684531)
- Zmiany w interfejsie VisualTransformation API
- Zmieniono nazwę klasy OffsetMap na OffsetMapping.
- Zmieniono nazwę klasy OffsetMapping.identityOffsetMap na OffsetMapping.Identity.
- Transformacja hasła nie jest już klasą danych.
- Przeniesienie mapowania offsetu do oddzielnego pliku
- (I0bdf3)
- Zmiany w interfejsie EditOperations API
- Zmiana nazwy operacji edycji na EditCommand
- Dodano sufiks polecenia dla konkretnych implementacji operacji edycji
- Pole EditCommand nie jest już klasami danych.
- Funkcja EditOperation.process została przemianowana na applyTo.
- Zmieniono nazwę interfejsu InputEventListener na InputEventCallback.
- (I0a366)
- Zmodyfikowano funkcję Velocity, aby zawierała elementy składowe i operacje matematyczne. (Ib0447)
- Zmieniliśmy nazwę @ExperimentalTesting na @ExperimentalTestApi, aby zachować spójność z podobnymi adnotacjami interfejsów API (Ia4502, b/171464963).
- Dodano eksperymentalną metodę stickyHeader dla LazyColumn/LazyRow (I0a81d).
- Zmieniono nazwę metody Color.useOrElse() na Color.takeOrElse() (Ifdcf5).
- Wycofano TestUiDispatcher. Użyj Dispatchers.Main (Ic171f, b/175385255)
- Dodaj przełącznik do podstawowego pliku Strings.kt (I4a5b7, b/172366489)
- Przeniesiono klasę nativeClass do modułu ui i uczyniono ją wewnętrzną. Zaktualizowane użycie natywnego użycia klasy natywnej oznacza, że w implementacjach używana jest metoda „to MyClass”. (I4f734)
- Wycofane zostały kolumny i wiersze przepływu. Zamiast tego użyj układu niestandardowego. (I09027)
- Metody Modifier.focus() i Modifier.focusRequester() zostały wycofane. Zamiast tego użyj interfejsów Modifier.focusModifier() i Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
- Wprowadziliśmy SelectionRegistrar.notifySelectableChange, aby powiadamiać o aktualizacjach elementów dostępnych w SelectionManager. (I6ff30, b/173215242)
- Zmieniono
fun Dp.isFinite()
naval Dp.isFinite
(I50e00) - Nazwa Constraints#satisfiedBy została zmieniona na isSatisfiedBy. (I9cf5c)
- W przypadku klas wbudowanych ze stałą nieokreśloną dodawane są wartości atrybutów isSpecified, isUnspecified i useOrElse. (I93f7b, b/174310811)
Poprawki błędów
- Nowy interfejs API oparty na korobonach
Animatable
, który zapewnia wzajemną wykluczalność animacji. Nowy specyfikacja animacji zanikania, która obsługuje animacje zanikania wielowymiarowe (I820f2, b/168014930) - Dodano obsługę pól tekstowych wyłączonych i tylko do odczytu (I35279, b/171040474, b/166478534).
- Metoda
animate()
została zastąpiona przezanimateAsState()
, która zwracaState<T>
zamiastT
. Zwiększa to wydajność, ponieważ zakres unieważniania można zawęzić do miejsca, w którym odczytywana jest wartość stanu. (Ib179e) - Dodaj interfejs API roli Semantics i rolę jako parametr do klikalnego, możliwego do wyboru i przełączenia interfejsu SemanticsModifier. Zmieniono Modifier.progressSemantics, aby można było go używać również w Sliderze. (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
są dostępne. Wersja 1.0.0-alpha09 zawiera te commity.
Zmiany w interfejsie API
Dodaj przewijany interfejs
Dzięki temu ScrollState i LazyListState są traktowane jako wspólny typ, co umożliwia implementację niestandardowego przewijania w obu typach.
Przenosi to również funkcję smoothScrollBy do funkcji rozszerzenia w Scrollable, korzystając z tej funkcji. (I2153b)
Dodano LazyVerticalGrid. (I17267, b/162213211)
Wycofano parametry LazyColumnFor, LazyRowFor, LazyColumnForIndexed i LazyRowForIndexed. Zamiast tego użyj LazyColumn i LazyRow (I5b48c)
W przypadku zawieszania interfejsów API związanych z wskaźnikiem zmieniono nazwy: HandlePointerInputScope na AwaitPointerEventScope i handlePointerInput() na awaitPointerEventScope(). (Idf0a1, b/175142755)
Dodano LazyListState.layoutInfo, który udostępnia listę rozmiarów i przesunięcia aktualnie widocznych elementów (If8678, b/170472532)
Usunięto adnotację ExperimentalPointerInput (Ia7a24).
Dodano obsługę stanu InteractionState dla pól tekstowych. (I61d91)
Dodaj parametr reverseLayout dla LazyColumn/Row. Gdy
true
, elementy będą składane od dołu do góry, aLazyListState.firstVisibleItemIndex == 0
oznacza, że pierwszy element znajduje się na dole. (I552ae, b/166589935)Dodano parametr rozmieszczenia pionowego do LazyColumn. Dodano parametr horizontalArrangement dla LazyRow. Ustawienie pozwala nam dodawać odstępy między elementami i określać ich układ, gdy nie mamy ich wystarczająco dużo, aby wypełnić całą minimalną wielkość. (Icf79a, b/170394300)
wykrywaj gesty dotykowe, teraz używa jednego wywołania zwrotnego z połączonymi parametrami centroid, przesuwania, powiększania i obracania. (Ie6e1c)
Przeniesiono ContentDrawScope do modułu interfejsu ui-graphics, aby korzystać z modułu DrawScope. (Iee043, b/173832789)
Poprawki błędów
- Lambda w modyfikatorach przesunięcia zwraca teraz IntOffset zamiast Float. (Ic9ee5, b/174137212, b/174146755)
Usunięto klasy SlotTable, SlotReader i SlotWriter z publicznego interfejsu API. Wcześniej były one oznaczone jako InternalComposeAPI. Teraz są one wewnętrzne w module tworzenia.
Dodaliśmy obiekty CompositionData i CompositionGroup jako zamiennik interfejsu ui-tooling API do wyodrębniania informacji o kompozycji. Są one publiczne, ale nie są przeznaczone do użytku poza interfejsem ui-tooling API, ponieważ zawierają informacje w postaci nieprzetworzonej, które interfejs ui-tooling API interpretuje (I31a9c).
Funkcja ShaderBrush została przerobiona, aby tworzyć instancję shadera w trybie lazy, gdy dostępne są informacje o wymiarach środowiska rysunku. Przydaje się to przy definiowaniu gradientów, które w momencie tworzenia kompozycji zajmują pełne granice rysowania funkcji kompozycyjnej, bez konieczności wdrażania niestandardowych implementacji DrawModifier.
wycofane interfejsy API konstruktora funkcji gradienta na rzecz metod fabrycznych obiektu Gradient; (I511fc, b/173066799)
Metoda Modifier.focusObserver została wycofana. Zamiast tego użyj metody Modifier.onFocusChanged lub Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
Interfejs Autofill API jest teraz interfejsem eksperymentalnym i wymaga wyrażenia zgody (I0a1ec)
Dodanie deklaracji destrukturyzacji w celu utworzenia instancji FocusRequester (I35d84, b/174817008)
AccessibilityLabel została zmieniona na contentDescription. Wartość ułatwień dostępu została zmieniona na stateDescription. (I250f2)
Wprowadziliśmy kilka nowych funkcji w Rejestrze wyboru i przemianowaliśmy parametr onPositionChange na nazwę notificationPositionChange. (Ifbaf7).
AndroidOwner made internal (Ibcad0, b/170296980)
Nowa funkcja nieskończoności powtarzania do tworzenia specyfikacji InfiniteRepeatableSpec (I668e5)
Interfejs
Applier
został zmieniony, aby uprościć tworzenie drzew od dołu do góry zamiast odwrotnie.Nazwa metody
insert()
została zmieniona nainsertTopDown()
.Dodano nową metodę
insertBottomUp()
.Stosuje on węzły do edytowanego drzewa przy użyciu funkcji
insertTopDown()
lubinsertBottomUp()
, w zależności od tego, co sprawdza się lepiej.Niektóre drzewa, np.
LayoutNode
iView
, są znacznie wydajniejsze w budowaniu od dołu do góry niż odwrotnie. Przed tą zmianą trzeba było wdrożyć od dołu stos wkładek, który trzeba było kopiować do każdego narzędzia, które wymagało oddolnej struktury w celu zwiększenia skuteczności. Ta zmiana zastępujeApplier
przezinsertBottomUp()
, aby tworzyć drzewo od dołu do góry, orazinsertTopDown()
, aby tworzyć drzewo od góry do dołu. (Icbdc2)Dodano interfejs API painterResource do obsługi ładowania obiektów Painter z nieprzezroczystym ładowaniem z formatów zasobów rastrowych (np. PNG) lub obiektów VectorDrawable. Użytkownicy nie muszą już określać typu zasobu z wyprzedzeniem i mogą wywołać tę metodę, aby uzyskać obiekt Painter do użycia w komponencie obrazu lub modyfikatorze paintera. (I2c703, b/173818471)
Dodaliśmy funkcję fabryczną buildAnnotatedString, która pozwala utworzyć obiekt AnnotatedString. Wycofano funkcję konstruktora adnotatedString. (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
są dostępne. Wersja 1.0.0-alpha08 zawiera te commity.
Zmiany w interfejsie API
- Z parametru
CoreTextField
usunięto parametrmaxLines
. Jeśli chcesz ograniczyć wysokość pola tekstowego do liczby wierszy, użyj atrybutuBasicTextField
. (Iec002). - Zmieniono metody
await*TouchSlop()
, aby nie wykrywały wskaźnika w dół, i nazwane zostały*OrCancellation
. Usunęliśmy też konieczność stosowania parametruorientationLock
. (Ie96e1) - Dodano sprawdzanie lint pod kątem nazw i pozycji parametrów funkcji kompozytowych lambda, aby sprawdzić zgodność z wytycznymi Compose.
Zgodnie ze sprawdzaniem lintowania i wskazówkami przenieśliśmy też niektóre interfejsy API, używając nazwy
children
jako nazwy końcowej lambdy docontent
. (Iec48e) foundation:foundation-text
interfejsów API zostało przeniesionych do usługifoundation:foundation
. Struktura pakietu pozostała bez zmian (Id3eb2).- Nowy mechanizm wykrywania gestów wielodotykowych, w tym pomocników do wykrywania obracania, powiększania i przesuwania. (IC459d).
- Nowy interfejs API do wykrywania gestów przeciągania, który zawiesza kursor, w tym interfejs API do obsługi gestów, w tym blokowanie orientacji. (Icef25)
- Zmiana nazwy klasy VectorAsset na ImageVector. Przeniesienie klasy VectorAsset i zmiana jej nazwy na Builder, aby była ona klasą wewnętrzną klasy ImageVector zgodnie z wytycznymi Rady API. Dodano alias typu VectorAssetBuilder, aby umożliwić linkowanie do ImageVector.Builder w celu zapewnienia zgodności. (Icfdc8)
- Zmieniono nazwę klasy ImageAsset i powiązanych metod na ImageBitmap. (Ia2d99)
- Przeniesiono właściwości semantyki podstawowej do interfejsu użytkownika (I6f05c)
Dodaj interfejsy API do przewijania opartego na korobonach:
Dodaje metody LazyListState.snapToItem i LazyListState.smoothScrollBy, a także interfejsy API niskiego poziomu do sterowania przewijaniem. Te interfejsy API udostępniają zawieszony interfejs do sterowania przewijaniem, który czeka, aż przewijanie się zakończy, zanim zwróci wynik. (IE5642)
Do pól BasicTextField, TextField i OutlinedTextField dodaliśmy parametr singeLine. Ustaw ten parametr na „PRAWDA”, aby pole tekstowe miało postać pojedynczej linii, którą można przewijać poziomo. (I57004, b/168187755)
Dodano wykrywanie gestów dla kliknięcia, kliknięcia dwukrotnego, przytrzymania i wskazania przy użyciu nowego wskaźnika zawieszenia. Dodaliśmy też kilka narzędzi, które ułatwiają deweloperom pisanie własnych detektorów gestów. (I00807).
W ustawieniu podstawowym dodano potrzebę związaną z elementem Modifier.focusable. Dzięki temu możesz dodać do komponentu zachowanie polegające na skupianiu uwagi z zachowaniem odpowiedniej semantyki i dostępności. (I41eb9, b/152525426, b/162865824)
Wycofane interfejsy API zostały usunięte: Border został usunięty, zamiast niego używaj BorderStroke. Funkcja Modifier.drawBorder została usunięta. Zamiast niej użyj funkcji Modifier.border. Usunięto modyfikator.grawitacji. Zamiast niego użyj Modifier.align. Stos został usunięty. Zamiast niego użyj Box (I32c2b, b/172470874)
Typ AbsoluteArrangement został przemianowany na Arrangement.Absolute. (If26f2)
Poprawki błędów
- Przeniesienie interfejsów API DrawModifier z pakietu androidx.compose.ui do pakietu androidx.compose.ui.draw. Utworzono plik DrawModifierDeprecated.kt, aby uwzględnić aliasy typów i metody pomocnicze, które ułatwiają migrację z nieaktualnych interfejsów API do bieżących. (Id6044, b/173834241)
- Zgodnie z opiniami Rady ds. API zmodyfikowaliśmy też nazwę Modifier.drawLayer na Modifier.graphicsLayer. Wraz z opiniami rady ds. API zaktualizowaliśmy też powiązane klasy na GraphicsLayer. (I0bd29, b/173834241)
- Element
<T>
został usunięty z deklaracji SubcomposeLayout. Możesz go używać bez określania typu. (Ib60c8) - Ustawienie pól uptime i position w danych PointerInputData tak, aby nie mogły być puste. (Id468a).
- MaterialTheme ustawia teraz prawidłowe kolory uchwytów wyboru i tła zaznaczenia. Aplikacje niebędące w stylu Material mogą ręcznie używać kolorów AmbientTextSelectionColors, aby dostosować kolory używane do zaznaczania. (I1e6f4, b/139320372, b/139320907)
- Zmieniliśmy nazwę parametru alignment w sekcji Box na contentAlignment. (I2c957)
- Modyfikatory offsetPx zostały przemianowane na offset. Wykorzystują teraz parametry lambda zamiast stanu State. (Ic3021, b/173594846)
- Dodano obiekt WindowManager.isWindowFocused, aby sprawdzić, czy okno hosta jest aktywny, oraz obiekt WindowFocusObserver, który udostępnia wywołanie zwrotne onWindowFocusChanged. (I53b2a, b/170932874)
- Dodano parametr resetInput do usługi TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- Zaktualizowany interfejs TextFieldValue API
- ustawienie TextFieldValue.composition tylko do odczytu
- usunięto wyjątek wywołany z powodu nieprawidłowego zakresu wyboru (I4a675, b/172239032)
- wycofane ambienty o nazwach zawierających sufiks
Ambient
i zastąpione nowymi właściwościami z prefiksem Ambient zgodnie z innymi wytycznymi dotyczącymi ambientów i interfejsu Compose API; (I33440) - Dodano owijacz czcionek Androida. Możesz wczytać czcionkę Androida za pomocą funkcji
typeface
, np.typeface(Typeface.DEFAULT)
. Zmieniono też nazwę ztypefaceFromFontFamily()
natypeface()
(I52ab7). - Dodano sprawdzanie lint, aby sprawdzić, czy fabryki modyfikatorów używają
androidx.compose.ui.composed {}
wewnętrznie, a nie są oznaczone jako@Composable
. (I3c4bc) - Dodano sprawdzanie lint, aby sprawdzić, czy funkcje fabryki modyfikatora są zdefiniowane jako rozszerzenia modyfikatora, aby można je było płynnie łączyć. (I07981)
- Argument semantyczny mergeAllDescendants został przemianowany na mergeDescendants. (IB6250)
- Kontrola czasu w testach (TestAnimationClock i jego użycia) jest teraz eksperymentalna (I6ef86, b/171378521).
- Usuwanie starego modułu testu UI i jego zastępników (I3a7cb)
- Element TextUnit.Inherit został przemianowany na TextUnit.Unspecified, aby był zgodny z innymi jednostkami. (Ifce19)
- Interfejs wyrównywania został zaktualizowany i stał się funkcjonalny. (I46a07, b/172311734)
- Moduł
foundation:foundation-text
został scalony z modułemfoundation:foundation
(Idac0f) - Wycofaj place(Offset) i placeRelative(Offset). Zamiast tego użyj przeciążeń z przesunięciem int (I4c5e7)
- Nazwa
id
została zmieniona nalayoutId
w przypadkuLayoutIdParentData
. Nazwa „Measurable.id
” została zmieniona naMeasurable.layoutId
. (Iadbcb, b/172449643)
Wersja 1.0.0-alpha07
11 listopada 2020 roku
Funkcje 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ą dostępne. Wersja 1.0.0-alpha07 zawiera te commity.
Zmiany interfejsu API
- Podobnie jak
Modifier.fillMaxSize[Width|Height]
, obsługujemy teraz ułamki w zakresieModifier.fillParentMaxSize[Width|Height]
w zakresieLazyColumn/Row
(I797e2, b/166586426). - Usunięto reakcję
KeyboardOptions.toImeOptions
na publiczny interfejs API. (Ic2e45) - Podstawowe atrybuty AmbientTextStyle, ProvideTextStyle i AmbientContentColor zostały wycofane. Zamiast tego użyj nowych wersji dostępnych w bibliotece Material. W przypadku aplikacji niematerialnych należy zamiast tego utworzyć własny system projektowania specyficznych dla nich motywów graficznych, z którego można korzystać w własnych komponentach. (I74acc, b/172067770)
- Komponent foundation.Text został wycofany i zastąpiony komponentem material.Text. Interfejs API tekstowy podstawowy, który nie używa wartości z motywu, znajdziesz w bibliotece androidx.compose.foundation.BasicText. (If64cb)
- Dodano atrybut maxLines do pól tekstowych (Ib2a5b).
- Zaktualizuj pola tekstowe, aby akceptowały KeyboardOptions (Ida7f3)
- Dodano KeyboardOptions do użycia w TextFields (I9ca32).
- Dodaje interfejs BasicText jako interfejs API do obsługi tekstu, który nie ma określonego formatu, równolegle z interfejsem BasicTextField. (I28268)
- Adnotacja ExperimentalLazyDsl została usunięta. Komponenty LazyColumn/LazyRow można teraz używać bez dodawania @OptIn (Idab7a, b/166584730)
- Komponent BaseTextField został wycofany. Użyj w zamian pola BasicTextField. (I896eb)
- Dodano pole tekstowe podstawowe, które zastępuje pole tekstowe podstawowe i pole tekstowe podstawowe (Id4cea).
- Usuń przestarzałe elementy LazyColumnItems/LazyRowItems (I1d8a8)
- Usunięto nieobsługiwane komponenty do dopasowywania rozmiarów do wymiarów wewnętrznych. (I18537, b/171811496)
- Nazwa relativePaddingFrom została zmieniona na paddingFrom. Dodaliśmy modyfikator paddingFromBaseline, aby ułatwić określenie odległości od granic układu do linii bazowych tekstu. (I0440a, b/170633813)
- Do modyfikatora aspectRatio dodano parametr matchHeightConstraintsFirst, który można użyć do określenia modyfikatora do ograniczeń rozmiaru do wysokości przed próbą dopasowania do szerokości. (Ie7c43, b/155290593)
- Usunięto przestarzałe ograniczenia DpConstraints. (I87884, b/171702471)
Poprawki błędów
- Wprowadziliśmy klasę inline ScaleFactor, aby reprezentować czynniki skalowania dla osi poziomej i pionowej niezależnie od siebie w celu obsługi niejednolitego skalowania.
- Dodano metodę computeScaleFactor do ContentScale.
- Dodano ContentScale.FillBounds, aby wykonać niejednolite skalowanie w celu rozciągnięcia granic src, tak aby wypełniały one całkowicie obszar docelowy.
- Dodano metody operatora do obliczania parametrów ScaleFactor za pomocą parametrów Size.
- (Ic96a6, b/172291582)
- captureToBitmap przeniesiono do captureToImage. (I86385)
- Oznacza CoreText jako @InternalTextApi. Zamiast tego użyj elementu BasicText. (I6aaeb)
- Zmień nazwę KeyboardOptions na ImeOptions (I82f36).
- Przeniesienie KeyboardType i ImeAction do KeyboardOptions (I910ce)
- Pole CoreTextField zostało oznaczone jako @InternalTextApi. Zamiast tego użyj pola tekstowego BasicTextField (Ie2469).
- Adnotacja ExperimentalSubcomposeLayoutApi została usunięta. Można teraz używać komponentu podrzędnego kompozyturka bez dodawania @OptIn (I708ad)
- Przedstawienie modułu ui-test-junit4 (Ib91f8)
- Zaktualizowano interfejs Icon API, aby przyjmował wartość Color.Unspecified jako możliwy kolor zabarwienia, który będzie rysował dostarczony zasób lub malowanie bez filtra kolorów. Wcześniej próby zignorowania zabarwiania za pomocą metody Color.Unspecified powodowały zabarwienie przezroczystym kolorem, co kończyło się tym, że nic nie było renderowane. (I049e2, b/171624632)
- MeasureResult został przeniesiony z MeasureScope. (Ibf96d, b/171184002)
- Kilka symboli związanych z układem zostało przeniesionych z androidx.compose.ui do androidx.compose.layout.ui. (I0fa98, b/170475424)
- Plik 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 SelectionHandles w elementach SelectionContainer. (Ie93db)
- Dodano opcję autokorekty IME w klawiaturze (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
zostały udostępnione. Wersja 1.0.0-alpha06 zawiera te commity.
Zmiany w interfejsie API
- Interfejs androidx.compose.foundation.Icon został przeniesiony do androidx.compose.material.Icon. Jeśli nie chcesz korzystać z biblioteki Material, możesz użyć komponentu Image / Modifier.paint() z Painterem. (I9f622)
- Dodano elementInteractState do obiektów Modifier.scrollable, ScrollableColumn i LazyColumnFor (I81566, b/169509805)
- Do elementu RowScope dodano element AdjustByBaseline, a jego nazwa została zmieniona na „shiftBy” (I06503, b/170628732)
- Funkcja Box została zmieniona na funkcję wbudowaną. (Ibce0c, b/155056091)
- Dodano maxLines do CoreTextField (Ibee58, b/143687793)
- Dodano miękki wrap do CoreTextField. (I21a4b)
Poprawki błędów
- Wycofaj VectorPainter na rzecz rememberVectorPainter, aby lepiej wskazać, że interfejs API do komponowania wewnętrznie korzysta z funkcji „remember”, aby przechowywać dane w ramach kompozycji. (Ifda43)
- Włącz przejścia w komponencie ComposeTestRule. Usuń z niego opcję włączania migającego kursora. (If0de3)
- Do CoreTextField (I72e6d) dodano opcję klawiatury jednowierszowej.
- Zmieniliśmy nazwę interfejsu Radius API na CornerRadius, aby lepiej odzwierciedlić sposób jego używania w usłudze Compose. Zaktualizowano dokumentację, aby wskazać, że ujemne promienie narożników są ograniczane do zera. (I130c7, b/168762961)
- Dodanie możliwości określania informacji o inspektorze w składanym modyfikatorze (Idee08, b/163494569)
- Dodano opcję IME KeyboardCapitalization (I8ac38)
- Popraw pozycję uchwytu RTL. (I6e1e0).
- Zmiana wprowadzająca niezgodność: usunięto wartość zwracaną z metody PointerInputFilter.onPointerEvent(...), ponieważ jedyną wartością, którą można zmienić w zdarzeniach związanych z wskaźnikiem, są dane o konsumpcji. Zamiast zwracać dane z metody PointerInputFilter.onPointerEvent(...) możesz teraz modyfikować dane zużycia przekazywanych zdarzeń PointerEvents. (I6acd0).
- Dodano opcję Zaznacz wszystko w menu wyboru (Ief02b)
Wersja 1.0.0-alpha05
14 października 2020 r.
Funkcje 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ą dostępne. Wersja 1.0.0-alfa05 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- CoreTextField obsługuje teraz funkcje kursora (Id23aa)
Wycofane zostaną interfejsy API contentColor() i currentTextStyle(), a zamiast nich zostaną wprowadzone odpowiednio ambienty AmbientContentColor i AmbientTextStyle. Do bieżącej wartości możesz uzyskać dostęp, używając wartości
.current
w przypadku właściwości ambient, tak jak w przypadku innych wartości ambient. Ta zmiana została wprowadzona w celu zapewnienia spójności i uniknięcia konieczności korzystania z różnych sposobów na osiągnięcie tego samego celu. Dodatkowo zmienia nazwy niektórych właściwości elementów otoczenia, by lepiej opisać ich przeznaczenie:- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
Poprawki błędów
- W ramach standaryzacji wartości sygnalizacyjnych 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 związane z kopiowaniem/wklejaniem/wycinaniem (I6db4f)
- Wprowadzono TextOverflow.None. Gdy wartość overflow jest równa None, Text nie będzie już obsługiwać przepełnienia i będzie przekazywać rzeczywisty rozmiar do LayoutNode. (I175c9, b/158830170)
- Zaktualizowano parametry Size.Unspecified, aby były to wartości Float.NaN zamiast Float.POSITIVE_INFINITY. Zaktualizowano implementacje usługi Painter, aby sprawdzały rozmiar Size.Unspecified oraz nieskończone rozmiary. (I95a7e)
- dodano moduł strony docelowej i integrację stronicowania (Ib85da),
- Zmiana LazyListScope na potrzeby otrzymywania wartości pustych (I1765b)
- Zmiana nazwy metody OnPositionedModifier na OnGloballyPositionedModifier oraz metody onPositioned() na onGloballyPositioned(). (I587e8, b/169083903)
- Dodano przykłady dla LazyColumn/Row (Idc16d).
- Poprawka metod items i itemsIndexed, aby zezwolić na emptyList (I06647)
- Dodaj DSL do określania informacji o inspektorze (Ic9a22)
- Przesuń opcję „Przytrzymaj” do sekcji „Tekst”. (Iff2bc)
- Wyłącz zaznaczenie w Tekście i demonstrację. (IE7E97).
- Obsługa konwersji AnnotatedString na SpannableString na potrzeby ułatwień dostępu. (Ief907)
- Użytkownik
PointerInputFilter.onPointerInput(...)
został usunięty. W ich miejscu powinna być używana wartośćPointerInputFilter.onPointerEvent(...)
. (I6f04a)
Wersja 1.0.0-alpha04
1 października 2020 roku
Funkcje 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ą dostępne. Wersja 1.0.0-alpha04 zawiera te commity.
Zmiany w interfejsie API
- Grupa została przemianowana na Box. Dotychczasowa klasa foundation.Box zostanie wycofana na rzecz nowej klasy Box w komponencie compose.foundation.layout. Nowa ramka układa elementy podrzędne jeden na drugim, gdy ma ich kilka. Wcześniej działała ona podobnie jak kolumna. (I94893, b/167680279)
- Parametry dekoracji pudełka zostały wycofane. Jeśli chcesz dodać do pola dekoracje lub dopełnienie, użyj modyfikatorów (Modifier.background, Modifier.border, Modifier.splash) (Ibae92, b/167680279)
- Dodaj nową klasę LazyListState. Umożliwia to obserwowanie i sterowanie pozycją przewijania komponentów LazyRow i LazyColumn. Identyfikatory można tworzyć za pomocą funkcji rememberLazyListState() i przekazywać do parametru state komponentu. W tej początkowej wersji można obecnie zobaczyć pierwszy widoczny element i odstępy. (Ic7cb7, b/159307669)
- Pozycja i przesunięcie listy w trybie leniwej aktualizacji 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 do utrzymywania w czasie pojedynczego mutatora współdzielonego stanu i anulowania kolidujących mutatorów według priorytetu (I3f975)
- Dodała adnotacje do rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled i textInputServiceFactory z dodatkiem @VisibleForTesting, aby uczynić je wewnętrznym interfejsem API i ukryć ich kdoc (I554eb, b/168308412).
- Usunięto parametr inlineContent z tekstu zawierającego ciąg znaków. Nie będzie on używany, ponieważ inlineContent musi współpracować z AnnotatedString. (Ief403).
- Wycofane niestandardowe interfejsy aranżacji interfejsów API zostały usunięte. (Ic576d, b/168297922, b/168297923)
- Do modyfikatorów wrapContentSize dodano parametr
unbounded
, który umożliwia pomiar elementu układu z nieograniczonymi maksymalnymi ograniczeniami. (I77951, b/158559319) - Zablokowaliśmy importowanie statyczne zawartości zakresów układu (np. alignWithSiblings w RowScope). Zamiast tego należy użyć opcji z wyraźnym zakresem:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
. (I216be, b/166760797)
Poprawki błędów
- Zaktualizowano wiele interfejsów API do obsługi grafiki.
- Zaktualizowane interfejsy API do skalowania i obrotu, aby używały pojedynczego parametru Offset zamiast oddzielnych parametrów typu float dla współrzędnych x/y w DrawScope i DrawTransform
- Usunięto metody Rect.expandToInclude i Rect.join
- Zaktualizowano dokumentację Radius, aby zawierała informacje o elipsy w dodatku do eliptyczne
- Dodano dokumentację, aby wskazać, że publicznego konstruktora w ramach klasy Inline Radius nie należy wywoływać bezpośrednio, ale zamiast tego instancje obiektów Radius należy tworzyć za pomocą konstruktorów funkcji.
- Usunięto interfejsy API RoundRect do zapytań topRight, bottomRight, bottomCenter itp.
- Wycofanie funkcji Rect.shift na rzecz funkcji Rect.translate
- Usunięto interfejsy API RoundRect.grow i Rect.shrink
- Zmieniono nazwę RoundRect.outerRect na Rect.boundingRect.
- Usunęliśmy metody RoundRect.middleRect/tallMiddleRect/wideMiddleRect i Rect.isStadium
- Zmieniono nazwę RoundRect.longestSide na RoundRect.maxDimension.
- Zmieniono nazwę RoundRect.shortestSide na RoundRect.minDimension.
- Zmieniono RoundRect.center na właściwość, a nie funkcję
- Zaktualizowano konstruktor RoundRect, aby używał właściwości Radius zamiast poszczególnych parametrów wartości promienia x/y.
- Usunięto interfejsy API dotyczące rozmiaru, które zakładały, że jest to prostokąt z początkiem w punkcie 0,0.
- Do aplikacji Radius dodano interfejs API destrukcyjny
- Przenieśliśmy różne funkcje rozszerzenia RoundRect na właściwości
- (I8f5c7, b/168762961)
- Optymalizacje wydajności funkcji LazyColumnFor/LazyRowFor przewijania dzięki unikaniu zbędnych zmian kompozycji podczas każdego przewijania (I64f65, b/168293643, b/167972292, b/165028371)
- Naprawiono błąd powodujący awarię w LazyColumnFor/LazyRowFor po przewinięciu i zmianie elementów oraz wdrożenie automatycznego przewijania w górę po usunięciu wcześniej widocznego elementu, dzięki czemu nie wyświetla się już pusta przestrzeń 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ło obsługiwane i uniemożliwiało tworzenie elementów LazyColumnFor (I6e101).
- Zaktualizowano wiele interfejsów Graphics API.
- Zaktualizowano interfejsy API DrawScope o metody przekształceń ograniczonych zakresem, aby wskazać, że przekształcenie jest stosowane tylko w ramach wywołania zwrotnego i usuwane po jego wywołaniu.
- Zaktualizowano dokumentację clipPath, aby odwoływała się do ścieżki zamiast zaokrąglonego prostokąta
- Naprawiono odstępy w dokumentacji parametru clipPath
- Zmieniono nazwę metody DrawScope.drawCanvas na drawIntoCanvas i usunięto parametr size
- Zmieniono nazwę parametrów Dx/dy w metodzie wstawienia na poziomą i pionową
- Dodano przeciążenie wektora, które zapewnia tę samą wartość wstawienia do wszystkich 4 progów
- Usunięto dokumentację dotyczącą metody wstawienia, która wskazywała, że wstawienie zostanie zastosowane do wszystkich 4 stron.
- Zaktualizowano dokumentację klasy Rect
- Zaktualizowano komentarze dotyczące parametrów Rect, aby pasowały do kdoc style
- Usunięto Rect.join i Rect.expandToInclude
- Utworzono przeciążenie dla Rect.translate(offset) i przestarzałą metodę Rect.shift.
- (If086a, b/167737376)
- dodaj stan AccessibilityScrollState do właściwości semantycznych. (Ifeda9)
- Aby uniknąć tworzenia obiektów, ustaw zakres tekstu w tekście. (Id034b)
- Element ParagraphConstraints został usunięty. Szerokość jest teraz przekazywana bezpośrednio do elementu Paragraph. (Ica712).
Wersja 1.0.0-alpha03
16 września 2020 roku
Funkcje 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ą dostępne. Wersja 1.0.0-alpha03 zawiera te commity.
Zmiany w interfejsie API
- Atrybut InnerPadding został przemianowany na PaddingValues. (I195f1, b/167389171)
- Spójnie przemianowaliśmy zastosowania grawitacji, aby wyrównać lub wyrównać interfejsy API układu. (I2421a, b/164077038)
- Do grupy elementów dodano parametr wyrównania, który umożliwia określenie domyślnego wyrównania dla wszystkich podrzędnych elementów grupy. (Ie80ca, b/164085265)
Poprawki błędów
- Funkcje DpConstraints i interfejsy API korzystające z nich zostały wycofane. (I90cdb, b/167389835)
- Parametry
minWidth
imaxWidth
funkcjiwidthIn
zostały odpowiednio zmienione namin
imax
. To samo dotyczy błędówpreferredWidthIn
,heightIn
ipreferredHeightIn
. (I0e5e1, b/167389544) - Dodano metodę onNode i inne metody globalne w komponencie ComposeTestRule, ponieważ obecne metody globalne zostaną wycofane. (Ieae36)
- Naprawiono obliczanie rozmiaru i pozycji w GestyScope, 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
Wrzesień 2, 2020
Funkcje 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ą dostępne. Wersja 1.0.0-alpha02 zawiera te commity.
Poprawki błędów
- TestUiDispatcher jest oznaczony jako eksperymentalny (Iae99d, b/161247083)
Dodano
ManualFrameClock.hasAwaiters
, aby sprawdzić, czy coś oczekuje na ramkę z tego zegara;runWithManualClock
jako zamiennikrunBlocking
podczas wykonywania testów, które wymagają zegara ManualFrameClock;TestUiDispatcher.Main
, który zapewnia łatwy dostęp do głównego rozsyłarki interfejsu użytkownika 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.
Funkcje 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ą dostępne. Wersja 1.0.0-alpha01 zawiera te commity.
Wersja 0.1.0-dev
Wersja 0.1.0-dev17
19 sierpnia 2020 r.
Funkcje 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ą dostępne. Wersja 0.1.0-dev17 zawiera te commity.
Zmiany w interfejsie API
- Do elementów Wiersz i Kolumna dodano rozkład odstępów, aby umożliwić pozycjonowanie elementów podrzędnych układu ze stałymi odstępami. Dodano też możliwość ustawienia elementów potomnych układu obok siebie i wyrównanych w wierszu lub kolumnie zgodnie z wyrównaniem. Poprzednie metody Arrangement.Vertical#arrange i Arrangement.Horizontal#arrange zostały wycofane, a zapisywanie niestandardowych układów nie będzie obsługiwane w przyszłości. (I6733d, b/161985975)
- Offset stał się klasą wbudowaną (Iaec70)
- Usunięto z TextField wywołania zwrotne onFocusChanged. Zamiast tego użyj Modifier.focusObserver. (I51089, b/161297615)
- Metoda Modifier.drawBorder została wycofana. Zamiast niego użyj metody Modifier.granic. Klasa danych Border została zastąpiona przez BorderStroke (I4257d, b/158160576)
- Funkcje vertical Scroller i Level Scroller zostały usunięte. Zamiast niej użyj ScrollableColumn/Row. Funkcja Modifier.drawBackground została usunięta. Użyj Modifier.background (I73b0d, b/163019183).
- Usuń z LazyItemScope modyfikatory o znaczeniu fillMax*, które zostały oznaczone jako przestarzałe, ponieważ utrudniają prawidłowe dodawanie takich modyfikatorów do elementów, które nie są bezpośrednimi podrzędnymi kolumny LazyColumnFor (Ifa78d).
- dodano implementację LazyColumn/LazyRow jako DSL (I93cc6)
- Ograniczenia są teraz klasą wbudowaną (I88736)
- Dodaliśmy możliwość dopasowania rozmiaru układu do 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).
- Do elementu Semantics PropertyKey dodano funkcję mergePolicy lambda. Można go użyć do zdefiniowania niestandardowej zasady złączania z użyciem semantycznej funkcji mergeAllDescendants. Domyślnie używana jest wartość nadrzędna, jeśli jest już dostępna, a w przeciwnym razie wartość podrzędna. (Iaf6c4, b/161979921)
- Nazwa
PlacementScope.placeAbsolute()
została zmieniona naPlacementScope.place()
, a poprzednia nazwaPlacementScope.place()
została zmieniona naPlacementScope.placeRelative()
. W rezultacie metodaPlacementScope.place()
nie będzie już automatycznie odzwierciedlać pozycji w kontekście od prawej do lewej. W takim przypadku użyj zamiast tego polaPlacementScope.placeRelative()
. (I873ac, b/162916675) - Usunięto wycofany komponent FilledTextField. Aby uzyskać implementację wypełnionego pola tekstowego w ramach Material Design, użyj komponentu TextField. (I5e889)
- Dodano parametr backgroundColor do właściwości LinearProgressIndicator, a w przypadku CircularProgressIndicator usunęliśmy wewnętrzne dopełnienie. Dodano nową stałą ProgressIndicatorConstants.DefaultProgressAnimationSpec, która może służyć jako domyślna specyfikacja animacji podczas animacji postępu między wartościami (If38b5, b/161809914, b/161804677).
- Właściwość
state { ... }
została wycofana na rzecz wywołań funkcjiremember { mutableStateOf(...) }
, aby zwiększyć przejrzystość. Dzięki temu zmniejsza się ogólna powierzchnia interfejsu API i liczba pojęć związanych z zarządzaniem stanem oraz dopasowuje się do wzoruby mutableStateOf()
dotyczącego delegowania właściwości klasy. (Ia5727) - Zmieniliśmy nazwę parametru RRect na RoundRect, by lepiej dopasować ją do wzorców nazewnictwa tworzenia kompozycji Utworzyliśmy podobne konstruktory funkcji do konstruktorów funkcji RRect i wycofanych konstruktorów funkcji RRect (I5d325)
- Usunięto onChildPositioned i OnChildPositionedModifier. Programiści powinni zamiast tego używać metod onPositioned i OnPositionedModifier w ramach układu podrzędnego. (I4522e, b/162109766)
- IntSize jest teraz klasą wbudowaną (I2bf42).
- Aby edytować pusty obszar, naciśnij go dłużej. (Ib1e5b)
- Ukryj FloatingToolbar po kliknięciu tekstu. (If4525)
- Ukryj FloatingToolbar podczas aktualizowania zaznaczenia. (I8444c)
- Odznacz opcję Gdy rozmycie. (I781a2)
Wersja 0.1.0-dev16
5 sierpnia 2020 r.
Funkcje 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ą dostępne. Wersja 0.1.0-dev16 zawiera te commity.
Zmiany w interfejsie API
- Do parametru itemContent w przypadku list typu Lazy dodano LazyItemScope. Udostępnia modyfikatory wypełniające maksymalny rozmiar elementu nadrzędnego, co rozwiązuje przypadek użycia, gdy element powinien wypełniać widoczny obszar, a zwykła metoda Modifier.fillMaxSize() nie działa, ponieważ element jest mierzony z ograniczeniami nieskończoności. (Ibd3b2, b/162248854)
- Przenoszenie okna do interfejsu (I47fa6)
- Dodano wersje LazyColumnForIndexed/LazyRowForIndexed – wersje LazyColumnFor/LazyRowFor, które zawierają zarówno indeks, jak i element w elemencie itemCallback. Jest to przydatne, gdy oprócz bieżącego elementu musisz znać bieżący indeks. (I65ff3)
- Modifier.deternimateProgress został przemianowany na Modifier.progressSemantics (I9c0b4).
- Funkcja LazyColumnItems została przemianowana na LazyColumnFor. Nazwa LazyRowItems została zmieniona na LazyRowFor (I84f84).
- Dodaj znaczniki lub adnotacje, aby dowiedzieć się, jak postępować zgodnie ze sprawdzonymi metodami. (I66b20)
- Pakiet foundation.shape.corner został uproszczony do foundation.share (I46491, b/161887429)
- Dodano parametr grawitacji сrossaxis dla LazyRowItems/LazyColumnItem. Elementy LazyRowItems/LazyColumnItems obsługują teraz zawijanie treści. (Ib39fc)
- Stan ZoomableState został przemianowany na ZoomableController. Dodano obsługę krzywej niestandardowej dla smoothScale. Dodano funkcje
enabled
ionZoomStarted
(If8b8f). - Nazwa Material FilledTextField została zmieniona na TextField, a podstawowa nazwa TextField została zmieniona na BaseTextField, aby ułatwić znajdowanie i używanie najprostszego interfejsu API (Ia6242, b/155482676).
- Wycofany wcześniej adapterList został usunięty. Zamiast tego użyj LazyColumnItems (I12b9b)
- Modifier.drawBackground został przemianowany na Modifier.background (I13677)
- Stary DSL ConstraintLayout został usunięty. Element ConstraintSet2 został przemianowany na ConstraintSet. (If58d1, b/162450908)
- Dodano metody Modifier.absoluteOffset() i Modifier.absoluteOffsetPx(). W przeciwieństwie do modyfikatorów przesunięcia modyfikatory przesunięcia bezwzględnego nie będą automatycznie lustrzane w kontekście od prawej do lewej (I3aa21)
- Funkcje
Row
iColumn
są teraz funkcjami w wierszu, co znacznie zmniejsza obciążenie związane z ich używaniem. (I75c10)
Poprawki błędów
- Rozwiązanie ogólnych problemów z interfejsem API (I077bc)
- Usuwanie nieużywanego interfejsu OffsetBase
- Dopasuj klasy Offset i IntOffset, aby uzyskać spójną powierzchnię interfejsu API
- Zmień nazwę IntOffset.Origin na IntOffset.Zero, aby zachować spójność z interfejsem Offset API.
- Przeniesienie metody nativeCanvas z interfejsu Canvas, aby umożliwić użytkownikom tworzenie własnych instancji Canvas
- Utworzono szablon klasy EmptyCanvas, aby zmienić DrawScope na parametr niepusty zamiast stałej lateinit i zapewnić, że pole nie będzie puste
- Zmieniono nazwy typów ClipOp na Pascal Case.
- Zmieniono nazwę enumów filtraJakość na typ Pascal
- Zmieniono nazwy enumów StrokeJoin na Pascal Case.
- Zmieniono nazwę wyliczeń PointMode na wielkość liter Pascal
- Zmieniono nazwy enum PaintingStyle na przypadek Pascala
- Zmieniono nazwy typów ścieżki w układ Pascala.
- Zmieniono nazwy enumów StrokeCap na Pascal Case.
- Zaktualizowano implementację DrawCache, aby nie używała parametrów lateinit
- Zaktualizowano DrawScope, aby nie używać już nieaktywnych delegacji w przypadku wewnętrznych parametrów fillPaint i strokePaint.
- Zaktualizowaliśmy funkcję kompozycji obrazu, aby uniknąć używania usługi Box i zmniejszania nakładu pracy
- Zaktualizowano klasę Outline, aby zawierała adnotacje @Immutable
- Zaktualizowano węzeł PathNode, aby zawierał adnotacje @Immutable dla każdej instrukcji ścieżki
- Zaktualizowano podkompozycję wektorową, aby usunąć zbędne sprawdzanie warunkowe równości, ponieważ kompozycja już je obsługuje
- wycofanie metod konstruktora towarzysza Rect na rzecz konstruktorów funkcji;
- zaktualizowaliśmy klasy i konstruktory funkcji Brush, używając interfejsów API @Immutable i @Stable.
- Zmieniono typ VertexMode na PascalCase
- Zaktualizowano metodę selectPaint klasy DrawScope, aby warunkowo zastępować parametry obrysu w obiekcie paint, jeśli uległy zmianie.
- Zaktualizowano rozmiar, aby dodać interfejs API do destrukturyzacji, zmieniono nazwę z UnspecifiedSize na Unspecified i usunięto nieużywane metody
Dodano zegar MonotonicFrameAnimationClock, który umożliwia użycie obiektu MonotonicFrameClock jako obiektu AnimationClockObservable, aby wypełnić lukę między nowymi zegarami opartymi na coroutines i interfejsami API, które nadal używają starych zegarów opartych na wywołaniu zwrotnym.
odpowiednikiem klasy ManualAnimationClock jest teraz klasa ManualFrameClock. (I111c7, b/161247083)
Użytkownik
SemanticsNodeInteraction.performPartialGesture
został usunięty. Zamiast tego użyj atrybutuSemanticsNodeInteraction.performGesture
. (Id9b62)Nazwa
SemanticsNodeInteraction.getBoundsInRoot()
została zmieniona naSemanticsNodeInteraction.getUnclippedBoundsInRoot()
(Icafdf, b/161336532)Zaktualizowano interfejsy API obsługujące tekst od prawej do lewej. Dodano atrybut LayoutDirectionAmbient, który umożliwia odczytywanie i zmienianie kierunku układu. Zmienniki Modifier.rtl i Modifier.ltr zostały usunięte. (I080b3)
Interfejs Modifier.plus został wycofany. Użyj interfejsu Modifier.then. „Then” ma silniejszy sygnał dotyczący kolejności, ale jednocześnie uniemożliwia wpisanie
Modifier.padding().background() + anotherModifier
, co powoduje przerwanie łańcucha i utrudnia czytanie (Iedd58, b/161529964)Dodano
isFocused()
iisNotFocused()
semantykiMatcher. (I0b760)Dodano modyfikator RemeasurementModifier. Umożliwia użytkownikom synchroniczne ponowne pomieszczenie układu. Zasadniczo nie jest to potrzebne, ponieważ pomiar i przeformatowanie odbywają się automatycznie, ale używamy tego w elementach LazyColumnItems podczas przewijania. (I5f331, b/160791058)
Funkcja isSystemInDarkTheme uwzględnia teraz ustawienie ciemnego motywu w całym systemie i ignoruje stan oszczędzania energii przed Androidem Q zgodnie z najnowszymi wytycznymi. (I0c10c)
Zdarzenie OnChildPositioned zostało wycofane. Użyj w zamian elementu OnPositioned w elemencie podrzędnym. (I87f95, b/162109766)
Nazwa reguły AndroidComposeTestRule została zmieniona na createAndroidComposeRule. (I70aaf)
Dodaj działanie związane z ułatwieniami dostępu, aby uzyskać 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
zostały udostępnione. Wersja 0.1.0-dev15 zawiera te zatwierdzenia.
Aby korzystać z wersji 0.1.0-dev15
Compose, musisz:
Aktualizacja zależności
- Aby używać funkcji Compose
0.1.0-dev15
, 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 nowy parametr w metodzie ScrollableColumn/ScrollableRow LazyColumnItems/LazyRowItems ma teraz parametr contentPadding, który umożliwia dodanie dopełnienia treści po jej przycięciu, co nie jest możliwe za pomocą parametru modyfikatora. Umożliwia też dodanie odstępu tylko przed pierwszym elementem lub po ostatnim. (Ibc24e)
- Nazwa wywołania zwrotnego onFocusChange w polach tekstowych została zmieniona na onFocusChanged (Ida4a1)
- Klasy Vertical Scroller i Horiziontal Scroller zostały wycofane. Użyj ScrollableColumn i ScrollableRow, aby uzyskać wbudowane funkcje z zachowaniem i parametrami kolumny/wiersza, lub użyj Modifier.verticalScroll i Modifier.horizontalScroll w swoim elemencie. Podobnie w przypadku ScrollerPosition zastosowano wycofanie na rzecz ScrollState (I400ce, b/157225838, b/149460415, b/154105299).
- Zmodyfikowano interfejsy API Modifier.draggable i Modifier.scrollable. Atrybut DragDirection został usunięty na rzecz atrybutu Orientation. Uprościliśmy stan wymagany do przewijania. Nazwa ScrollableState została zmieniona na ScrollableController (Iab63c, b/149460415).
- Właściwości semantyczne o 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ą teraz być większe niż 50% (Id2340, b/160400213)
- Zmiana domyślnego parametru ContentScale dla komponentu Image z Inside na Fit. Zrobiliśmy to, aby zapewnić zachowanie zachowania polegające na skalowaniu leżącego u podstaw komponentu Painter, jeśli rozmiar układu jest większy niż rozmiar własny komponentu przy zachowaniu formatu obrazu. To zachowanie lepiej odpowiada oczekiwaniom w zakresie dostarczania obrazu o stałych rozmiarach, a jednocześnie nie wpływa na domyślne zachowanie, jeśli do obliczania rozmiaru elementu kompozycyjnego służy tylko rozmiar wewnętrzny. (I40ae3, b/159838006)
- Użycie AnimationSpec zamiast AnimationBuilder w interfejsach API najwyższego poziomu w celu wyjaśnienia koncepcji specyfikacji animacji statycznej. – Ulepszenie przejścia DSL przez usunięcie wymogu lambda przy tworzeniu specyfikacji animacji, takich jak starsze czy sprężyna. Zamiast tego używają parametrów konstruktora. – Poprawa ogólnej łatwości obsługi otwierania konstruktorów AnimationSpec zamiast użycia konstruktorów. -Zmiana czasu trwania i opóźnienia ramek KeyFrame i Tween na Int. Eliminuje to niepotrzebne rzuty typów i przeciążanie metod (przy obsłudze zarówno długich, jak i Int). (Ica0b4)
- Element klikalny został usunięty. Użyj modyfikatora clickable (I84bdf).
- Dodano LazyRowItems – analogiczny do LazyColumnItems (Ibbcf7) element umożliwiający przewijanie poziome.
- Wprowadziliśmy interfejsy API animacji bezstanowej niskiego poziomu. Te interfejsy API (I63bf7)
- Interfejsy androidx.ui.foundation.TextFieldValue i androidx.ui.input.EditorValue zostały wycofane. Obiekty kompozycyjne TextField, PhlledTextField i CoreTextField, które korzystają z tego typu, również zostały wycofane. Użyj androidx.ui.input.TextFieldValue (I4066d, b/155211005)
- Zastąpiono użycie funkcji IntPx za pomocą funkcji Int. Zastąpiono funkcję IntPxPosition za pomocą funkcji IntOffset. Zmienna IntPxSize została zastąpiona zmienną IntSize. (Ib7b44)
- Usunięto androidx.ui.foundation.shape.RectangleShape; używaj androidx.ui.graphics.RectangleShape (I94939, b/154507984)
- Aby skonsolidować liczbę klas używanych do reprezentowania informacji o rozmiarze, zamiast klasy PxSize użyj klasy Size. Daje to korzyści płynące z klasy wbudowanej, która wykorzystuje typ long do pakowania 2 wartości zmiennoprzecinkową, aby reprezentować szerokość i wysokość jako zmiennoprzecinkową. (IC0191).
- Aby skonsolidować liczbę klas używanych do reprezentowania informacji o pozycjonowaniu, zamiast klasy PxPosition użyj klasy Offset. Daje to korzyści płynące z klasy wbudowanej, która wykorzystuje typ long do pakowania 2 wartości zmiennoprzecinekowych, aby reprezentować przesunięcia X i Y jako zmiennoprzecinkowe. (I3ad98)
- Dodano modyfikator.zoomable dla funkcji powiększania za pomocą gestów (Id5d63)
- Komponent z możliwością przełączania został wycofany. Użyj metody Modifier.toggleable (I35220, b/157642842)
- Element MutuallyExclusiveSetItem został wycofany. Zamiast tego użyj interfejsu Modifier.selectable. (I02b47, b/157642842)
- Tag testowy został wycofany. Zamiast tego użyj funkcji Modifier.testTag. (If5110, b/157173105)
- Dodaje parametr fontWeight do elementu Text, który został przez pomyłkę wcześniej nie dodany (I56937)
- Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużej refaktoryzacji polegającej na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (I19d02).
- VerticalScroller obsługuje teraz kolumny bez żadnych dodatkowych ustawień. Aplikacja Poziomy przewijania teraz udostępnia funkcję Wiersz bezpośrednio w oknie. (Ieca5d, b/157020670)
- Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużej refaktoryzacji, która polegała wyłącznie na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (Iede0b).
- Do pakietu podstawowego dodano modyfikator.indication. Użyj go, aby wyświetlić wskazanie naciśnięcia/przeciągnięcia lub inne na niestandardowych elementach interaktywnych (I8425f, b/155287131).
- Opcje Vertical Scroller i Level Scroller obsługują teraz przewijanie odwrotne. Ustawienie „Odwrotne” jest włączone dla funkcji ScrollerPosition (I953bd).
- Obsługa dodawania elementów składanych do układu tekstu. (I1373c)
- Zbiorcze CanvasScope zostały scalone, więc teraz są tylko zbiorcze zakresy rysowania i zbiorczy zakresu rysowania treści. Zbiórczy CanvasScope został przemianowany na Zbiórcze zakresy rysowania. Zaktualizowano DrawScope w celu implementacji interfejsu Density i zapewnienia kierunku układu. Usunięto podklasę DrawScope w ContentDrawScope. Painter i PainterModifier zostały zaktualizowane tak, aby nie utrzymywać własności RTL, ponieważ DrawScope zapewnia ją już bez ręcznego podawania (I1798e).
- Wycofano wycofany interfejs API DrawBackground na rzecz rozszerzenia interfejsu API drawBackground w modyfikatorze. Zmodyfikowano implementacje funkcji color, brush i paint drawBackground, aby zmniejszyć ścieżki kodu oraz usunąć wymóg tworzenia modyfikatora w ramach kompozycji. (I0343a)
- Zaktualizowano interfejsy API wyższego poziomu, które udostępniają canvas, tak aby zamiast tego udostępniały CanvasScope. Dzięki temu użytkownicy nie muszą już samodzielnie zarządzać obiektami w Paint. Użytkownicy, którzy nadal potrzebują dostępu do Canvas, mogą użyć metody rozszerzenia drawCanvas, która zapewnia wywołanie zwrotne do wydawania poleceń rysowania do Canvas. (I80afd)
- Poziomy i pionowo przewijanie nie przywracają pozycji przewijania z wykorzystaniem zapisanego stanu instancji. (Ia0fae, b/155075048)
- Funkcja FocusManagerAmbient została usunięta. Użyj FocusModifier.requestFocus, aby uzyskać fokus. (Ic4826)
- Układ tabeli został tymczasowo usunięty, dopóki nie udostępnimy go ponownie w odświeżonym interfejsie API. (Id88a7)
Utworzono interfejs CanvasScope API, który otacza obiekt Canvas, aby udostępnić bezstanową, deklaratywną powierzchnię rysowania. Transformacje są zawarte w ramach własnego zakresu odbiornika, a informacje o rozmiarach są również ograniczone do odpowiednich granic wstawki. Nie wymaga od konsumenta utrzymywania własnego obiektu stanu Paint do konfigurowania operacji rysowania.
Dodano CanvasScopeSample oraz zaktualizowano aplikację demonstracyjną, aby zawierała demonstrację deklaratywnej grafiki (Ifd86d).
Element ColoredRect został usunięty. User Box z modyfikatorem drawBackground (I983c7, b/152753731)
Dodaj możliwość dostosowania koloru kursora do pola tekstowego (I6e33f)
Teraz można ukryć lub wyświetlić klawiaturę za pomocą klasy SoftwareKeyboardController, która jest dostarczana przez wywołanie zwrotne onTextInputStarted (I8dc44, b/151860051).
Wartość TextFieldValue używana z TextField może teraz przetrwać odtworzenie aktywności, gdy jest używana w ten sposób:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }
(I5c3ce, b/155075724)Dodaje często używane parametry do funkcji Text(). Jeśli tworzysz lokalny styl tekstu, aby przekazywać 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)Parametr focusIdentifier w elementach CoreTextField i TextField został zastąpiony przez FocusNode, aby umożliwić integrację z podsystemem fokusa. (I7Ea48).
Aktualizacja pola tekstowego – w osi poziomej zajmie ono całą dostępną dla niego przestrzeń (Ib08df, b/154638552)
Dodano stan InteractionState i interfejs Interaction, co ułatwia tworzenie komponentów reagujących na zmiany stanu interfejsu, takie jak naciśnięcie i przeciąganie (Icfe25, b/152525426)
RectangleShape został przeniesiony z androidx.ui.foundation.shape.* do androidx.ui.graphics.* (Ia74d5, b/154507984)
Zastąpiono wszystkie przypadki użycia typu Color w interfejsie API, w których wartość może być null, wartością nienullową, oraz użyto Color.Unset zamiast null (Iabaa7).
Aktualizacja interfejsu TextField API – połączono funkcje zwrotne onFocus i onBlur w jedną funkcję zwrotną onFocusChange(Boolean) z parametrem (I66cd3).
Zmieniliśmy nazwę ScaleFit na ContentScale. Przemieściliśmy ContentScale z modułu ui-graphics do modułu ui-core, aby znajdował się w tym samym module co interfejs API do wyrównywania. Zmieniono nazwę FillMaxWymiar na „crop” Zmiana nazwy FillMaxWymiar i Fit Zmiana nazwy FillMinDimensions na „Fit” Zmiana nazwy dopasowania na „Inside” na „Inside” w celu lepszego dopasowania ImageView.ScaleType_Center
Usunięcie ProvideContentColor, zamiast tego używaj bezpośrednio ContentColorAmbient z
Providers
(Iee942)Dodaje parametr koloru do tekstu, co umożliwia zastąpienie koloru stylu tekstu bez konieczności ręcznego scalania ze stylem podanym w motywie. (I41a66)
Ulepszenie interfejsu API DrawModifier:
- Zmiana zakresu odbiornika dla metody draw() ContentDrawScope
- Usunięto wszystkie parametry w metodzie draw().
- DrawScope ma ten sam interfejs co poprzedni CanvasScope
- ContentDrawScope ma metodę drawContent() (Ibaced, b/152919067).
Obiekt ColoredRect został wycofany. Zamiast tego użyj pola
Box(Modifier.preferredSize(width, height).drawBackground(color))
. (I499fa, b/152753731)System stylizacji kształtów został zaktualizowany zgodnie ze specyfikacją Material Design. Teraz możesz udostępniać małe, średnie i duże kształty, które będą używane przez większość komponentów (Ifb4d1)
Zastąpiono operator Modifier plus funkcjami rozszerzenia fabrycznego (I225e4).
Atrybuty draggable zostały przeniesione do modyfikatorów (Id9b16, b/151959544)
Z pakietu androidx.ui.core do pakietu androidx.ui.foundation przeniesiono interfejs
Text
. (I87ce5)dodaj parametr
enabled
do pola wyboru, przełącznika i opcji przełączalnej (I41c16)Echo jest teraz modyfikatorem. Chociaż elementy klikalne nie zostały jeszcze przekonwertowane, 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 do obsługi grafik wektorowych. Wynikem składni podrzędnej jest obiekt VectorPainter, a nie DrawModifier. Wycofano poprzednie komponenty DrawVector na rzecz komponentu VectorPainter.
Zmieniliśmy nazwę interfejsu API
Image(Painter)
naPaintBox(Painter)
. Utworzyliśmy komponent wektorowy, który działa jak komponent Image, ale z użyciem obiektu VectorAsset zamiast obiektu ImageAsset (I9af9a, b/149030271).Stworzony komponent Image do obsługi skalowania/układu, a także do rysowania danego ImageAsset na ekranie. Ta funkcja kompozycyjna obsługuje też rysowanie dowolnych instancji Painter z uwzględnieniem ich rozmiaru wewnętrznego, a także obsługi określonego stałego lub minimalnego rozmiaru (Ibcc8f)
Przyciski Button, FloatingActionButton i Clickable mają teraz oddzielny parametr
enabled
. Zmieniono nazwy niektórych parametrów przycisku lub ich kolejność. (I54b5a)Zmieniliśmy nazwę obrazu na ImageAsset, by lepiej rozróżnić dane obrazu od przyszłej funkcji kompozycyjnej obrazu wykorzystywanej do tworzenia układu i rysowania treści.
Utworzono metodę rozszerzenia w klasie android.graphics.Bitmap
Bitmap.asImageAsset()
, która umożliwia tworzenie instancji ImageAsset. Jest ona przydatna do łączenia tradycyjnego tworzenia aplikacji na Androida z ramami Compose. (Id5bbd)Usunięto kompozycję DrawImage. Użyj ImagePainter, aby narysować obraz w istniejącym układzie, lub SimpleImage, by przedstawić obraz, który zajmuje dużo miejsca (I595e1, b/149827027)
Komponent grupy obsługuje kierunek od prawej do lewej (Ic9e00)
Dodano Icon, IconButton i IconToggleButton, usuwając AppBarIcon. Możesz bezpośrednio zastąpić istniejące użycia ikony paska aplikacji przyciskiem ikony. Teraz będą one miały prawidłowy docel dotykowy. Zapoznaj się z przykładami informacji o wykorzystaniu i zobacz ikony dostępnych ikon materiału, których można używać bezpośrednio z tymi komponentami. (I96849)
Funkcja kompozycyjna Draw shape została usunięta. Zamiast tego użyj modyfikatora DrawBackground. (I7ceb2)
Dodano AdapterList, komponent listy przewijanej, który tylko składa i układa widoczne elementy. Znane obecnie problemy polegają na tym, że tryb ten działa tylko pionowo i nie obsługuje w pełni wszystkich przypadków zmian w elementach podrzędnych. (Ib351b)
Dodano komponent przewijany, który umożliwia tworzenie niestandardowych elementów przewijania/list (I5fd37).
Zmieniono nazwę tła na DrawBackground i ustawiono domyślne zapamiętywanie (Ia0bd3).
Dodaj parametry wypełnień, obramowania, kształtu i tła do pola tekstowego (I05027, b/148147281)
Dodano komponent Canvas. Ta kompozycja zajmuje pewien rozmiar (podany przez użytkownika) i pozwala na rysowanie za pomocą CanvasScope (I0d622)
zmień modyfikator
Border
naDrawBorder
(I8ffcc);Dodano komponent Box do łączenia układu i funkcji rysowania. (I6e2a7)
Przewijacze wykazują teraz natywne działanie przesuwania w Androidzie. (I922af, b/147493715)
Zastąpiono metodę DrawBorder metodą Border Modifier (Id335a).
Nazwa Modifier.tag została zmieniona na Modifier.layoutId, aby uniknąć pomyłek z tagiem Modifier.testTag. (I995f0)
Nazwa parametru procentu podczas tworzenia wskazówek ConstraintLayout została zmieniona na ułamek. (Ida2db)
Dodano obsługę marginesów ograniczeń ConstraintLayout. (I47ffe)
Naprawiono obsługę RTL w ConstraintLayout. Dodano interfejsy API nieobsługujące tekstu w języku arabskim. (I3b1c7)
Dodano nowy DSL dla ConstraintLayout. Więcej informacji znajdziesz w przykładach. (Icaa9a)
Dodano adnotację @ExperimentalLayout. ConstraintLayout, FlowRow i FlowColumn są teraz oznaczone tym tagiem, aby zaznaczyć, ż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żyj metody Modifier.tag(). Usunięto nieużywaną metodę Modifier.matchParent(). Zamiast niej użyj metody Modifier.matchParentSize(). (If8044).
Dodaliśmy modyfikator układu offsetPx, który umożliwia definiowanie (dynamicznych) przesunięć w pikselach. (I5af57).
Interfejs kompozytowy AlignmentLineOffset został wycofany. Zamiast niego używaj modyfikatora relativePaddingFrom(). Funkcja kompozycyjna CenterWyrównajmentLine została usunięta. (I60107)
Dodano modyfikator układu defaultMinSizeConstraints, który ustawia ograniczenia rozmiaru dla zawiniętego układu tylko wtedy, gdy przychodzące odpowiednie ograniczenia są nieokreślone (0 dla minimalnych ograniczeń i nieskończoność dla maksymalnych ograniczeń). (I311ea, b/150460257)
kontener został usunięty; Zamiast tego użyj Box (Ibbc2b, b/151407926).
Usunięto wycofane modyfikatory UkładSzerokość/Wysokość/Rozmiar. (Ib0bc1)
Dodano domyślne wartości parametrów dla modyfikatora przesunięcia. (I37f06)
Dodano modyfikator symetrycznego wypełnienia. (I39840)
Usunięto przestarzały modyfikator LayoutAspectRatio. (I65a74)
Usunięto przestarzałe modyfikatory LayoutAlign. (I10877)
Naprawiliśmy błąd w modyfikatorach szerokości i wysokości, który powodował, że wymiary zawiniętego układu były mierzone bez ograniczeń na przeciwnych osiach. (I210b8, b/154797971)
Dodano parametry verticalGravity i horizontalGravity odpowiednio do wiersza i kolumny. (I7dc5a)
Zaktualizowano wrapContentWidth i wrapContentHeight, aby oczekiwały wyrównania pionowego lub poziomego zamiast dowolnego wyrównania. Modyfikator grawitacji został zaktualizowany, aby umożliwiać wyrównanie w pionie lub poziomie. Wiersze, kolumny i stos zostały zaktualizowane, aby obsługiwały niestandardowe ciągłe wyrównania. (IB0728)
Umożliwiono tworzenie wyrównania z dowolnymi wartościami. Dodano wyrównania 1D. (IA0c05)
Zmieniono nazwę EdgeInsets na InnerPadding. Zmieniliśmy nazwę parametru innerPadding w przyciskach Material Buttons na padding. (I66165)
LineToSiblings akceptuje teraz obiekty zmierzone zamiast obiektu Placeable. (I5788D)
Dodano modyfikatory rozmiaru do pomiarów wewnętrznych i wycofano komponenty służące do tego celu. (I8295d)
Dodano obsługę dostosowywania wymiarów elementów podrzędnych ConstraintLayout (Idb1a5).
Usunięto nieaktualne komponenty 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 elementami Row i Column. (I3a641)
Kontenery zostały wycofane. Zamiast tego użyj usługi Box. (I675ce, b/151407926)
Dodano modyfikator LayoutOffset do przesuwania pozycji układu (I0b8a3)
Wstępna obsługa RTL w układzie tworzenia wiadomości (Ia5519)
Zaktualizowano LayoutAlign, aby nie wypełniał już dostępnej przestrzeni (I2b14f)
Usunięto kompozyt AspectRatio na rzecz modyfikatora. Usunięto przestarzałe komponenty FlexColumn i FlexRow oraz modyfikator Spacing (Iec8a7).
Usunięto modyfikator LayoutInflexible dla wierszy i kolumn (I0d820).
Zaimplementuj uchwyty zaznaczania metodą przeciągania, aby zmienić wybór pola tekstowego. (I27032)
Implementuje LongPressAndDrag do wyboru pola tekstowego. (I17919)
Poprawki błędów
- FocusModifier został wycofany i zastąpiony przez Modifier.focus, Modifier.focusRequester, Modifier.focusObserver. FocusState i FocusDetailedState są wycofywane na rzecz FocusState2 (I46919, b/160822875, b/160922136).
- Nazwa
runOnIdleCompose
została zmieniona narunOnIdle
(I83607) - Zmieniliśmy nazwy kilku interfejsów API do testowania, aby były bardziej intuicyjne. Wszystkie interfejsy findXYZ zostały przemianowane na onNodeXYZ. Nazwy wszystkich interfejsów API doXYZ zostały zmienione na „performXYZ”. (I7f164)
- Usuwa wcześniej wycofany modyfikator.ripple. Teraz w przypadku elementów klikalnych domyślnym efektem jest efekt falowania (jeśli w aplikacji masz ustawione {} w ramach motywu Material). W większości przypadków możesz więc po prostu użyć elementu klikalnego i bezpłatnie uzyskać efekt falowania. Jeśli chcesz dostosować kolor, rozmiar lub parametr ograniczający falę, możesz ręcznie utworzyć obiekt RippleIndication i przekazać go do clickable jako parametr indication. (I663b2, b/155375067)
- Usunięto przestarzałe interfejsy API do testowania rozmiarów. (Iba0a0)
- Dodano eksperymentalny interfejs API LayoutNode (I4f2e9)
- Wersja 1 blokowania orientacji przewijania jest implementowana w Compose. (I1ce7a, b/150289741)
- Okienka, dialogi i menu dziedziczą teraz kontekstowy motyw MaterialTheme (Ia3665, b/156527485).
- Z bloku miary funkcji Layout() usunięto parametr kierunku układu. Kierunek układu jest jednak dostępny w obiekcie zakresu pomiaru w wywołaniu zwrotnym (Ic7d9d).
- Dodaj AbsoluteArrangement – umożliwia układanie elementów podrzędnych w wierszu bez automatycznego lustrzanego odbicia w językach z orientacją poziomą (I3a1df).
- Adnotacja @Untracked została wycofana. Zastąp to elementem @ComposableContract(tracked=false) (Id211e).
- Przed tą zmianą wtyczka kompilatora kompozytora przechwytywała wywołania konstruktorów w funkcji @Composable, jeśli wystąpiły one w ramach (I5205a, b/158123804)
- Dodaj funkcję kompozycyjną
viewModel()
, która umożliwia tworzenie lub pobieranie już utworzonych modeli ViewModel podobnie jak w przypadku aktywności lub fragmentu (I5fdd1) Zmieniono klasę Radius na klasę wbudowaną. Usunięto metody tworzenia towarzysza na rzecz konstruktora funkcji z parametrem domyślnym, aby promień na osi y był zgodny z obowiązkowym parametrem promienia na osi x.
Zaktualizowano DrawScope.drawRoundRect, aby używać pojedynczego parametru Radius zamiast 2 oddzielnych wartości typu float dla promienia wzdłuż osi X i Y (I46d1b).
W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych klasach kompozytowych, aby w przypadku parametrów pikseli używać tylko typu dp i typów prymitywnych. Cała klasa Px została usunięta (I3ff33).
Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużej refaktoryzacji, która polegała wyłącznie na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (I086f4).
W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych kompozytowych klasach, aby polegać tylko na typach Dp i typach prymitywnych w przypadku parametrów pikseli (Id3434).
W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych klasach kompozytowych, aby polegać tylko na typach Dp i typach prymitywnych w przypadku parametrów pikseli (I97a5a).
Kursor pola tekstowego ma migającą animację (Id10a7)
Gesty częściowe nie wymagają już ominięcia GestyToken (Id7ae5)
W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych kompozytowych klasach, aby polegać tylko na typach Dp i typach prymitywnych w przypadku parametrów pikseli (I57bff)
Element Modifier.semantics został wycofany, aby umożliwić jego użycie w przypadku komponentów wysokiego poziomu. (I4cfdc)
Zmień nazwę AnnotatedString.Builder.addAnnotationString na addStringAnnotation. (I5059e)
Zaktualizowaliśmy interfejs Alignment API i dodaliśmy obsługę wyrównania bezwzględnego (które nie powoduje automatycznego lustrzanego odbicia w kontekście Rtl) (I38cd3).
Elementy podrzędne Układu i LayoutModifier można mierzyć w innym kierunku układu. (Ibd731)
Wprowadzenie dodatkowego opcjonalnego parametru rect do ImagePainter w celu obsługi rysowania podzbioru podrzędnego w podstawowym pliku ImageAsset (I0ea9e)
Naprawiono awarię w AdapterList podczas usuwania elementów (Ic64b0, b/153195921)
Zmieniliśmy sposób pomiaru pierwszego układu, który umieścisz w bloku activity.setContent { }. Wcześniej trzeba było wypełnić cały ekran z aktywnością, a teraz układ zachowuje się tak, jakby układ został umieszczony w Stosie: może być mniejszy niż ekran i umieszczony w lewym górnym rogu ekranu. Jeśli chcesz zachować stare zachowanie, możesz zastosować funkcję Modifier.fillMaxSize() do swojego układu. (Ie88a7, b/153453714)
Moduł ui-text-compose został przemianowany na ui-text. ui-text zawiera teraz komponenty CoreText i CoreTextField (Ib7d47).
Nazwa modułu ui-text została zmieniona na ui-text-core (I57dec).
Przeniesienie komponentów ui-framework/CoreText i CoreTextField do komponentów ui-text-compose. W projekcie warto uwzględnić komponent ui-text-compose. (I32042)
runOnIdleCompose
irunOnUiThread
to teraz funkcje globalne, a nie metody w ComposeTestRule. (Icbe8f)[Zmienne]Operatory delegujące właściwości stanu zostały przeniesione do rozszerzeń, aby umożliwić optymalizację delegowania właściwości w wersji Kotlin 1.4. Aby nadal korzystać z
by state { ... }
lubby mutableStateOf(...)
, dzwoniący muszą dodać importy. (I5312c)DrawLayerModifier i drawLayer() domyślnie mają wartość false (fałsz). (I0eb8b, b/152810850)
Zmieniono nazwę LayoutResult na MeasureResult. (Id8c68)
Wycofany komponent Center. Należy go zastąpić modyfikatorem LayoutSize.Fill + Layoutalizator.Center lub jednym z elementów kompozycyjnych Box albo Stack z odpowiednimi modyfikatorami (Idf5e0).
Zmieniono nazwę LayoutFlexible na LayoutWeight. Zmieniono nazwę precyzyjnego parametru na wypełnienie. (If4738)
Metoda DrawVector zmieniła się ze zwykłej funkcji kompozycyjnej na zwracanie modyfikatora pullVector(), który spowoduje narysowanie wektora jako tła układu. (I7b8e0)
Zastąp funkcję kompozytową Clip za pomocą modyfikatora drawClip(). Funkcja drawClipToBounds jest wygodnym modyfikatorem do stosowania, gdy chcesz przyciąć tylko do krawędzi warstwy o kształcie prostokąta. (If28eb)
Funkcja kompozytowa DrawShadow została zastąpiona modyfikatorem drawShadow(). Cienie są teraz rysowane w ramach komponentu LayerModifier. (I0317a)
Interfejs androidx.compose.ViewComposer został przeniesiony do androidx.ui.node.UiComposer. Interfejs androidx.compose.Emittable został usunięty. Był on zbędny w porównaniu z ComponentNode. androidx.compose.ViewAdapters został usunięty. Nie są one już obsługiwane. Interfejs Compose.composeInto został wycofany. Użyj w zamian pola
setContent
lubsetViewContent
. Metoda Compose.disposeComposition została wycofana. Zamiast tego użyj metodydispose
w obiekcieComposition
zwracanym przez funkcjęsetContent
. Funkcja androidx.compose.Compose.subcomposeInto została przeniesiona do androidx.ui.core.subcomposeInto. Metoda ComponentNode#emitInsertAt została przemianowana na ComponentNode#insertAt. Metoda ComponentNode#emitRemoveAt została przemianowana na ComponentNode#removeAt. Metoda ComponentNode#emitMode została przemianowana na ComponentNode#move (Idef00)Wycofana funkcja kompozycyjna owinięcia. Można go zastąpić modyfikatorem LayoutAlign lub kompozycją Stack (Ib237f).
Zmieniliśmy kierunek układu tak, aby był propagowany z nadrzędnego węzła układu do podrzędnych. Dodano modyfikator kierunku układu. (I3d955)
Zmień nazwę Painter.toModifier na Painter.asModifier, ponieważ nowo utworzony modyfikator zawiera odniesienie do oryginalnego narzędzia Painter, które może być współużytkowane przez wiele instancji modyfikatora (I7195b)
Obsługa kierunku od prawej do lewej w modyfikatorze LayoutPadding (I9e8da).
Density i DensityScope zostały połączone w jeden interfejs. Zamiast ambientDensity() możesz teraz użyć DensityAmbient.current. Zamiast opcji Gęstość(gęstość) tylko za pomocą(gęstości) (I11cb1)
Usunięto klasę ValueHolder. Zrestrukturyzowano klasy AnimatedValue i AnimatedFloat, aby pole wartości animacji było abstrakcyjne, dzięki czemu podklasy mogą obserwować aktualizację wartości.
- Dodano klasy modelu dla AnimatedValue, AnimatedFloat itp.
- Dodano nowy zestaw lekkiego interfejsu API @Composable do animowania wartości.
- (I79530)
Zmiany w interfejsie API nieaktywnym. Szczegóły znajdziesz w logu i dokumentacji
Ambient<T>
(I4c7ee, b/143769776)Wartości pozycji linii wyrównania zwracane przez Placeable#get(AlignmentLine) są teraz niezerowe. Jeśli nie ma wiersza wyrównania, którego dotyczy zapytanie, wyświetli się parametr AdjustLine.Nieokreślony. (I896c5, b/158134875)
Naprawiono błąd ConstraintLayout powodujący awarię przy ponownej kompozycji. (Ibee5a, b/158164341)
Zmiana interfejsu lambda z dodatkiem Constraints. Teraz zamiast 2 parametrów ma zakres odbiornika, który oprócz ograniczeń i kierunku układu zawiera właściwości minWidth, maxWidth, minHeight i maxHeight w pikselach (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ń wewnętrznych z domyślnie propagowanym kierunkiem układu. (Id9945)
Atrybut LayoutDirectionAmbient został wycofany. Aby odczytać kierunek układu zdefiniowany przez ustawienie języka, użyj parametru localeLayoutDirection w ustawieniu ConfigurationAmbient (I851b1).
Dodano pozycję w rodzicu i zakres w rodzicu dla współrzędnych układu. (Icacdd, b/152735784)
Składanka ParentData została wycofana. Musisz utworzyć modyfikator, który implementuje interfejs ParentDataModifier, lub użyć modyfikatora LayoutTag, jeśli chcesz po prostu oznaczać elementy potomne układu, aby rozpoznawać je w bloku pomiaru. (I51368, b/150953183)
Dodaj modyfikatory OnPositionedModifier i OnChildPositionedModifier, aby zastąpić funkcje kompozytowe OnPositioned i OnChildPositioned. (I2ec8f)
Zabranie możliwości stosowania ujemnego wypełnienia w przypadku atrybutu LayoutPadding. Zamiast tego do przesunięcia pozycji ujemnej należy używać atrybutu LayoutOffset. (Ifb5b1).
WithConstraints uzyskała parametr LayoutDirection (I6d6f7)
Zaktualizowaliśmy flagę
ComposeFlags.COMPOSER_PARAM
natrue
, co spowoduje zmianę strategii generowania kodu w pluginie do tworzenia wiadomości. Ogólnie rzecz biorąc, powoduje to, że funkcje @Composable są generowane z dodatkowym parametrem syntetycznym, który jest przekazywany do kolejnych wywołań @Composable, aby środowisko uruchomieniowe mogło prawidłowo zarządzać wykonywaniem. Jest to istotna zmiana w binarnych danych, która jednak powinna zachować zgodność na poziomie źródłowym we wszystkich zatwierdzonych zastosowaniach compose. (I7971c)Zmiana metody LayoutCoordinates, aby ustawić parametry alignmentLines jako zbiór zamiast mapy i zamiast tego, aby zwracać wartość, użyj operatora get(). Dzięki temu modyfikatory mogą łatwiej modyfikować co najmniej 1 wartość zbioru bez tworzenia nowej kolekcji dla każdego modyfikatora. (I0245a)
Właściwość 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. Do obliczania przekształceń z jednego LayoutCoordinate na inny programiści powinni używać koordynatorów nadrzędnych i podrzędnych (childToLocal()).
Właściwość size w metodzie LayoutCoordinates używa wartości IntPxSize zamiast PxSize. Układy używają rozmiarów w pikselach, więc wszystkie rozmiary układów powinny używać liczb całkowitych, a nie wartości zmiennoprzecinkowych. (I9367b)
Ulepszenia interfejsu API ograniczeń (I0fd15)
Dodano TextDirection.Content (I48f36).
Dostosuj menu paska narzędzi, aby prawidłowo wyświetlać opcje kopiowania, wycinania i wklejania. (Id3955)
Dodaj FloatingToolbar do wyboru pola tekstowego. (Ie8b07)
Algorytm kierunku tekstu zmienił nazwę na TextDirection (I75ce8)
Nazwa atrybutu TextDirection została zmieniona na ResolvedTextDirection (I3ff38)
Dodaj HapticFeedback do TextField Selection. (I58050)
Dodaj metody Kopiuj, Wytnij i Wklej do TextField Selection. (Idb70b)
Tag TestTag i semantyka zostały usunięte. Użyj zamiast niego Modifier.testTag i Modifier.semantics (I15ff0, b/158841414)
Zmieniono nazwę pakietu Locale i LocaleList z androidx.ui.text na androidx.ui.intl (I8132c).
Zmiana interfejsu API: usługa
AnnotatedString(builder: Builder)
została przemianowana naannotatedString(builder: Builder)
. (Ia6377)Zmiana w interfejsie API: nazwa
AnnotatedString.Item
została zmieniona naAnnotatedString.Range
. (I2d44d)Dodaj pasek narzędzi do operacji związanych z tekstem. (I49d53)
Nowa usługa LifecycleOwnerAmbient jest już dostępna. Aktywność, której używasz w interfejsie tworzenia wiadomości, powinna teraz stanowić rozszerzenie androidx.activity.KomponentActivity (lub AppCompatActivity). Funkcja setContent w android.app.Activity została wycofana (Idb25a, b/153141084)
Nazwa pakietu ui-android-text (androidx.text) została zastąpiona przez androidx.ui.text.platform, aby zapewnić zgodność z zasadą androidx. (I42711)