Podstawa usługi 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 | Wersja kandydująca | Wersja Beta | Wersja alfa |
---|---|---|---|---|
11 grudnia 2024 r. | 1.7.6 | - | - | 1.8.0-alpha07 |
Struktura
Składnik to kombinacja 7 identyfikatorów grupy Maven w ramach androidx
. Każda grupa zawiera określony podzbiór funkcji, z którym wiąże się własny zestaw informacji o wydańach.
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 włącz optymalizacje 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 | Twórz interfejsy 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 za pomocą komponentów Material Design 3, czyli kolejnej generacji Material Design. Material 3 obejmuje zaktualizowane motywy i elementy oraz funkcje personalizacji Material You, takie jak dynamiczne kolory. Jest on zgodny 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, które są potrzebne do interakcji z urządzeniem, w tym układ, rysowanie i wprowadzanie danych. |
Deklarowanie zależności
Aby dodać zależność od Compose, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Maven firmy Google.
Dodaj zależności dla artefaktów, których potrzebujesz, w pliku build.gradle
aplikacji lub modułu:
Groovy
dependencies { implementation "androidx.compose.foundation:foundation:1.7.5" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.7.5") } 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-alpha07
11 grudnia 2024 r.
androidx.compose.foundation:foundation-*:1.8.0-alpha07
został zwolniony. Wersja 1.8.0-alpha07 zawiera te komity.
Zmiany w interfejsie API
- Usunięto flagę
ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled
, która pomogła przywrócić usunięcie wewnętrznego elementugraphicsLayer
z elementuBasicText
. Jeśli używasz tego flagi, poinformuj nas o powodzie, zgłaszając błąd. Możesz też przekazać parametrModifier.graphicsLayer()
do wywołańBasicText
, aby uzyskać takie samo działanie jak wcześniej. (Id9f90) - Dodano domyślną implementację nowego języka opisu usługi
stickyHeader
. (I68986) - Użyj lokalnie typu Kolor w komponentach
LocalAutofillHighlightColor
. (I0e05b) - Nazwa
OverscrollEffect#withoutDrawing
została zmieniona naOverscrollEffect#withoutVisualEffect
. (I1a154)
Poprawki błędów
- Rozwiązanie problemu z obliczeniem docelowego
AnchoredDraggable
, który w przypadku niektórych gestów przesuwania mógł się zatrzymać na niewłaściwej kotwicy. (I23b87, b/367660226)
Darowizna zewnętrzna
- Dodanie do interfejsu
BringIntoViewResponderModifierNode
, który umożliwia nowy sposób implementacji funkcji „Przywołaj do widoku” oraz implementację na poziomie platformy (Ia6dd8) - Zmieniamy sposób wyświetlania kursora. Aby wyłączyć rysowanie kursora w testach, użyj
LocalCursorBlinkEnabled
. (I4c697)
Wersja 1.8.0-alpha06
13 listopada 2024 r.
androidx.compose.foundation:foundation-*:1.8.0-alpha06
został zwolniony. Wersja 1.8.0-alpha06 zawiera te komisy.
Zmiany w interfejsie API
- Dodaje modyfikator
stylusHoverIcon
. (Iff20a, b/331289114) - Wycofane
AnchoredDraggableState
confirmValueChange
. Zamiast blokować zmiany stanu, nie należy umieszczać niedozwolonych kotwic w aktywnej grupie kotwic, a aby wskazać niedostępność żądanego działania, należy użyć elementuOverscrollEffect
. (Ia717f) - Zmiana menedżera autouzupełniania na interfejs. (I84914, b/376080755)
- Dodaje interfejsy API
OverscrollEffect#withoutDrawing
iOverscrollEffect#withoutEventHandling
– te interfejsy API tworzą opakowany egzemplarz dostarczonego efektu przewijania, który nie rysuje ani nie obsługuje zdarzeń. Umożliwia to renderowanie efektu przewijania w oddzielnym komponencie od komponentu wysyłającego zdarzenia. Na przykład wyłączenie przewijania w ramach listy leniwej, a potem przewijanie osobno u góry lub w innym miejscu. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244) - Dodanie obsługi autouzupełniania na pasku narzędzi tekstowych. (Ie6a4c)
- wycofuje parametry
OverscrollConfiguration
iLocalOverscrollConfiguration
oraz dodaje parametrrememberPlatformOverscrollFactory
, aby utworzyć instancję parametrów / dostosować domyślną implementację przewijania. Aby wyłączyć przewijanie ponad ekran, zamiast wartościLocalOverscrollConfiguration provides null
użyj wartościLocalOverscrollFactory provides null
. Aby zmienić kolor poświaty lub wypełnienia, zamiastLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)
użyjLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding)
. (Ie71f9, b/255554340, b/234451516) - Właściwość
effectModifier
w interfejsieOverscrollEffect
została zmieniona nanode: DelegatableNode
, aby zachować spójność z innymi interfejsami API. (Ic0b46, b/255554340) - Usunięto eksperymentalny interfejs API
GlobalAssertions
. Jego celem było przeprowadzanie kontroli ułatwień dostępu. W tym celu użyj zamiast tegoenableAccessibilityChecks()
. (I59322)
Wersja 1.8.0-alpha05
30 października 2024 r.
androidx.compose.foundation:foundation-*:1.8.0-alpha05
został zwolniony. Wersja 1.8.0-alpha05 zawiera te komisy.
Nowe funkcje
- Obsługa automatycznego dostosowywania rozmiaru tekstu. Przekaż instancję
AutoSize
(np.AutoSize.StepBased
) do ulubionego komponentu tekstowego (np.BasicText
) i zobacz, jak rozmiar tekstu dostosowuje się do dostępnej przestrzeni. (Ice7e0, b/139320827) - Dodaje interfejsy API
OverscrollFactory
iLocalOverscrollFactory
, aby umożliwić konfigurowanie przewijania w dół w hierarchii. Wartość podana w parametryeLocalOverscrollFactory
zostanie domyślnie użyta do utworzeniaOverscrollEffect
. Aby utworzyć i zapamiętać efekt z bieżącej fabryki, użyjrememberOverscrollEffect()
. (I51ca4, b/255554340)
Zmiany w interfejsie API
- Wprowadzić
CompositionLocal
, który można wykorzystać do zmiany odcienia podświetlenia pola pomyślnie wypełnionego przez autouzupełnianie. (I32092) - Usunięto polecenie
ScrollableDefaults.overscrollEffect
. Zamiast niego należy używać poleceniarememberOverscrollEffect
. 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 dla użytkowników, oraz flagęisSemanticAutofillEnabled
, która pozwala włączyć nową wersję autouzupełniania. (I9d484) - Usuń
CombinedClickableNode
. Ten eksperymentalny interfejs API został tymczasowo udostępniony, aby umożliwić pracę nad wydajnością, ale nie jest już potrzebny. Zamiast tego należy bezpośrednio używać 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
. PodanaOverscrollEffect
będzie odbierać zdarzenia i będzie renderowana w ograniczeniach tych komponentów. Pamiętaj, że nie można rysować tego samegoOverscrollEffect
dwukrotnie, więc nie możesz rysować tego samegoOverscrollEffect
oddzielnie za pomocąModifier.overscroll
. W przyszłości zajmiemy się osobno przypadkiem, gdy przewijanie poza granice tych komponentów powoduje wyświetlanie elementó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ą rzut i prawidłowo wyślą zdarzenie
onPostFling
z pozostałością prędkoś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, który powodował, ż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)
- Wprowadzono flagę
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 domyślny modyfikator
graphicsLayer
z komponowalnego elementuBasicText
. Dodaliśmy eksperymentalną flagęComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled
, aby można było wrócić do poprzedniego działania. (Ie478d) - Dodano
Modifier.recalculateWindowInsets()
, aby umożliwić podrzędnym elementom 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) - Zaktualizowano zachowanie anulowania przesunięcia w elementach przewijanych. Jeśli element przewijany zostanie przewinięty i dojdzie do granicy, prawidłowa prędkość przewijania zostanie przekazana następnemu elementowi przewijanemu w łańcuchu zamiast kontynuowania przewijania. (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.6
11 grudnia 2024 r.
androidx.compose.foundation:foundation-*:1.7.6
został zwolniony. Wersja 1.7.6 zawiera te komity.
Poprawki błędów
- Rozwiązanie problemu z niewidocznym dla usług ułatwień dostępu tekstem wstawnym.
- Rozwiązaliśmy problem, który powodował, że
AndroidEmbeddedExternalSurface
nie był prawidłowo resetowany i zablokowywał się podczas ponownego użycia na liście leniwej.
Wersja 1.7.5
30 października 2024 r.
androidx.compose.foundation:foundation-*:1.7.5
został zwolniony. 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
- Naprawiliśmy błąd, który rzadko powodował awarię w polach tekstowych. (I475c6, b/313010266)
- Usunięto element
ReusableContentHost
w korzeniach elementów układu opartego na opóźnieniu. 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.
androidx.compose.foundation:foundation-*:1.7.3
został zwolniony. 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 komitowane zmiany.
Poprawki błędów
- Rozwiązanie problemu z elementem przeciąganym, w którym brakowało zdarzeń przesunięcia w dół, co powodowało, że przesunięcia były wolniejsze 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 komisy.
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 sygnalizacji będą wydajniejsze niż w przypadku poprzedniego (obecnie wycofanego) interfejsu APIrememberUpdatedInstance
. Informacje o migracji znajdziesz na stronie developer.android.com. - Funkcje
clickable
/combinedClickable
/selectable
/toggleable
akceptują teraz parametrMutableInteractionSource
, który może przyjmować wartość null. Jeśli jest to wartość null, a podana wartość Indication toIndicationNodeFactory
, Indication może być tworzona z opóźnieniem tylko wtedy, gdy jest to potrzebne, co poprawia wydajność. Jeśli nie używasz funkcjiMutableInteractionSource
, zalecamy przekazanie wartości null zamiastremember { MutableInteractionSource() }
. - Środowisko wykonawcze
Indication#rememberUpdatedInstance
zostało wycofane. Ma ona wysoką nieunikalną karę za 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. skupienia lub najechania kursorem). - Wprowadzamy
ContextualFlowRow
iEnhanced FlowRow/Column
zMaxLines
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ąc z małej konfiguracji maxLines i dynamicznych przycisków „Pokaż więcej” +N, aFlowRow
iFlowColumn
doskonale nadaje się do małej liczby elementów (mniej niż 100). Ważne: aby zachować dotychczasowe działanie funkcjiFlowRow
lubFlowColumn
, w której wszystkie elementy są tworzone niezależnie od tego, czy mieszczą się w maksymalnej wartości osi poprzecznej, podczas inicjalizacji ustaw wartość przepełnienia naFlowRowOverflow.Visible
lubFlowColumnOverflow.Visible
. Aby zobaczyć przykłady działania nowych funkcji, przejdź do sekcjiContextualFlowRowSample
iFlowRowSample
. (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: pojawiania się (w postępowaniu), znikania (w postępowaniu) i przestawiania. (I2d7f7, b/150812265) - Wprowadziliśmy eksperymentalne wsparcie dla długich zrzutów ekranu w sekcji Compose Scroll Containers za pomocą oficjalnego interfejsu API Androida (
ScrollCaptureCallback
). - Ź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 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ępnym ujęciu, i chcemy zignorować budżet ujęć, 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.
androidx.compose.foundation:foundation-*:1.7.0-rc01
został zwolniony. Wersja 1.7.0-rc01 zawiera te komity.
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: zapobieganie propagacji wartości NaN w interfejsie Compose i Foundation.
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 komity.
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.
androidx.compose.foundation:foundation-*:1.7.0-beta04
został zwolniony. Wersja 1.7.0-beta04 zawiera te komity.
Poprawki błędów
- Unikanie awarii podczas pomiaru bardzo długich linii tekstu (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 używanie 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 poziomy 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) - Z usług
MarqueeDefaults
usunięto opcję „Pasek reklamowy”. (Iad4f4) - Usunięto
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/33917122)
- BTF2 obsługuje teraz prawidłowe gesty wyboru myszy. (Ibe8c6)
Darowizna zewnętrzna
- Ponownie prześlij zgłoszenie „Make compose/measure time calculation content-type based in prefetch to improve accuracy” (Iea622)
- Zwiększenie dokładności obliczeń czasu tworzenia i pomiaru treści dzięki uwzględnieniu typu treści w ramach funkcji pre-fetch (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 w interfejsie API
- Właściwość
KeyboardOptions.shouldShowKeyboardOnFocus
została ponownie dodana jako wycofana, ale ukryta ze względu na zgodność binarną. (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) - Zawartość komórek
onDragStarted
ionDragStopped
została zastąpiona przez wywołania zwrotne bez zawieszania. (I59de8)
Poprawki błędów
- Naprawiliśmy błąd, który powodował awarię Pagera, gdy
contentPadding
był większy niż dozwolone ograniczenia. Pager teraz wymusza, aby zwracane wartości ujemne zPageSize
były zastępowane wartością 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 w interfejsie 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(...)
. Możesz teżpositionInLocalLookaheadFrameOfReference
z poziomuLookaheadScope
. (Ifc5f7) - Nazwa
onClicked
została zmieniona naonClick
w elemencieLinkInteractionListener
(Iaa35c). - Zmień wartość parametru action_lambda w przypadku
getScrollViewportLength
zgodnie z opinią Rady interfejsu 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 typ zwracany przez funkcjęParagraph/MultiParagraph#getRangeForRect()
jako niepusty. (I51f26)
Poprawki błędów
- Dodano opcję „Zaznacz wszystko” do wszystkich menu kontekstowych tekstu w
SelectionContainer
. (Ib750e, b/240143283) - Rozwiązanie problemu z robieniem długich zrzutów ekranu w przypadku przewijanych kontenerów z
reverseScrolling=true
. (I7c59c) - Rozwiązaliśmy problem polegający na tym, że
AnchoredDraggableState
currentValue
zmieniał się, gdy zbliżał się do granic stanu. (Iea30b, b/333846848)
Darowizna zewnętrzna
- Zmieniliśmy nazwę
PrefetchExecutor
->PrefetchScheduler
, 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-alpha07 zawiera te komity.
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: pojawiania się (w postępowaniu), znikania (w postępowaniu) i przestawiania. (Ib7d12, b/330510929) - Dodaliśmy obsługę animacji pojawiania się i znikania elementów w wersjach
LazyVerticalStaggeredGrid
iLazyHorizontalStaggeredGrid
. 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. (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 stylowania, stylowania po najechaniu kursorem i po zaznaczeniu linki tekstowe zyskały opcję stylowania w stanie wciśniętym. (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). Dzięki temu animacje oparte naapproachLayout
są bardziej intuicyjne, ponieważ można teraz rozróżnić, który przesunięcie ma być animowany, a który ma być stosowany bezpośrednio podczas animowania. (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 zachowania, chyba że wywołana zostanie metodarequestScrollToItem
. (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 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 zachowania, chyba że wywołana zostanie metodarequestScrollToItem
. (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 używasz motywu Material, użyj obiektuTextDefaults
, aby utworzyć adnotację z zastosowanym motywem Material (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 tworzyLinkAnnotation.Url
dla każdego takiego tagu, a także przekazuje obiekty stylizacji i słuchacza interakcji z linkiem do każdej adnotacji. (I7c977) - Funkcja
LinkAnnotation
przyjmuje teraz argumenty stylizacji oparte na stanie i argumentLinkInteractionListener
. Dodaj tę adnotację doAnnotatedString
, 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 wyświetlać 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
zastępujeTextFieldBuffer.originalText
iTextFieldBuffer.originalSelection
. (I2c7d6) - Kolumna
ImeOptions.hintLocales
nie może już być pusta. 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 usługi
LazyColumn/LazyRow
mogą teraz zrezygnować z utrzymywania indeksu na podstawie klucza w przyszłej wersji funkcji measure-pass, wywołując funkcjęLazyListState.requestToScroll
bez zawieszenia. (I98036, b/209652366) - Dodaliśmy metodę
parseAsHtml
dla ciągów znaków ze stylami: umożliwia ona konwersję ciągu znaków oznaczonego tagami HTML naAnnotatedString
. Pamiętaj, że nie wszystkie tagi są obsługiwane. Na przykład nie możesz jeszcze wyświetlać list wypunktowanych. (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 obsługiwać wszystkich przypadków. Z tego powodu jest ona obecnie domyślnie wyłączona. Aby je włączyć, ustaw flagęComposeFeatureFlag_LongScreenshotsEnabled
na wartość prawda. Ten znacznik zostanie usunięty przed wersją beta 1.7. (I2b055, b/329296471) - Wprowadzić nowy interfejs API
GraphicsLayer
, aby zapewnić większą elastyczność w umieszczaniu i renderowaniu instancjiGraphicsLayer
oraz obsługiwać funkcje renderowania wewnętrznego bez konieczności koordynacji z implementacjami kompozytowymi w celu określenia 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. Zalecamy używaniesnapshotFlow { state.text }
lubsnapshotFlow { TextFieldCharSequence(state.text, state.selection) }
(I7d629). - Uporządkowano parametry
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 wartościKeyboardActionHandler
zamiastKeyboardActions
do przetwarzania działań podejmowanych 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
. Usunęliśmy parametrykeyboardType
iimeAction
, zastępując je pełną klasąKeyboardOptions
, zachowując przy tym te same domyślne wartości odpowiednie dlaBasicSecureTextField
. Usunęliśmy też parametrscrollState
. (Ibbfa9) - Typ pola
TextFieldState.text
zmieniono zTextFieldCharSequence
naCharSequence
. 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żyjclipEntry.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 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) - Interfejs
rememberTextFieldState
został przekształcony w stabilny interfejs API. (I37999)
Poprawki błędów
- Naprawiliśmy błąd, który powodował, że wariant
BasicTextField(state)
nie działał z klawiaturami CJK(opartymi na 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ęty został niedawny wariant umowy, w którym wywołania
AnchoredDraggableState#anchoredDrag
były blokowane na końcu operacjianchoredDrag
. (I95715)
Wersja 1.7.0-alpha05
20 marca 2024 r.
androidx.compose.foundation:foundation-*:1.7.0-alpha05
został zwolniony. Wersja 1.7.0-alpha05 zawiera te komity.
Zmiany w interfejsie API
- Usunięto eksperymentalną kompozycję
LocalTextLinkStyle
lokalną do stylizowania hiperlinków. (Iebfa7) - Usunięto eksperymentalne zastąpienie wartości
BasicText
argumentemonLinkClicked
. W przyszłości udostępnimy nowe API obsługujące hiperlinki. (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. Środowisko wykonawczePlatformTextInputTestOverride
zostało wycofane. (I862ed, b/322680547) - Podziel
restrictedConstraints()
na 2 metody:fitPrioritizingWidth()
ifitPrioritizingHeight()
(I6d7fd)
Darowizna zewnętrzna
- 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 żadnego 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-alpha04 zawiera te komity.
Zmiany w interfejsie API
- Obsługa funkcji pisma odręcznego rysikiem na urządzeniach z Androidem U lub nowszym. (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 przyjmował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 tym CL dodajemy działanie semantyczne
GetScrollViewportLength
, aby przesyłać informacje o komponentach przewijanych w komponencie do systemu a11y. Ten CL dotyczy również używania tej usługi w podstawowych listach przewijanych. (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) - Wprowadzanie informacji o kontekstowym układzie w ramach zakresu wiersza w ramach procesu kontekstowego i zakresu kolumny w ramach procesu kontekstowego, w tym indeks linii, położenie oraz ograniczenia maksymalnej szerokości i wysokości, aby zachować określone położenie. 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
- Naprawiono 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.
androidx.compose.foundation:foundation-*:1.7.0-alpha03
został zwolniony. Wersja 1.7.0-alpha03 zawiera te commity.
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) 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
z opcjamiMaxLines
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. NatomiastFlowRow
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
. Aby zobaczyć przykłady działania nowych funkcji, przejdź do sekcjiContextualFlowRowSample
iFlowRowSample
. (Ib9135, b/293577082)
Poprawki błędów
- Animacja kursora nie wysyła już żądań klatek między stanami włączonym i wyłączonym. (Ia2253)
KeyboardOptions
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 w interfejsie API
- Funkcje
HorizontalPager
,VerticalPager
iPagerState
zostały przeniesione do wersji stabilnej. (I67660, b/316966909) - Dodano kompozycję lokalną
LocalTextLinkStyle
, która umożliwia zmianę stylu linków w Tekście w aplikacji. Jeśli używasz w aplikacji własnej motywy, musisz ustawić tę kompozycję lokalną zgodnie z tą tematyką. Jeśli używasz motywu Material, kolor linku zostanie domyślnie ustawiony na kolor podstawowy. (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 w pagerze
SnapFlingBehavior
wartościąTargetedFlingBehavior
, aby umożliwić inne przypadki użycia i zapewnić większą elastyczność. (I762ea) - W ramach tej zmiany interfejsy Snapping API stają się stabilne. Usuwamy też część kodu testowego i dodajemy więcej przykładów do Snapping. (Id8da9)
- Wprowadzamy
TargetedFlingBehavior
, czyliFlingBehavior
, który umożliwia rozpowszechnianie informacji o stanie bieżącej animacji i jej docelowym przesunięciu 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)
Darowizna zewnętrzna
- Dodaje eksperymentalny interfejs API do konfigurowania zachowania wstępnego pobierania listy leniwych. (I022a4)
Wersja 1.7.0-alpha01
24 stycznia 2024 r.
androidx.compose.foundation:foundation-*:1.7.0-alpha01
został zwolniony. 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
obsługuje teraz parametrMutableInteractionSource
, który może przyjmować wartość pustą. Jeśli wartość jest null, a podana wartośćIndication
jest wartościąIndicationNodeFactory
, obiektIndication
może być tworzony tylko wtedy, gdy jest to konieczne, co poprawia 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 w wersji produkcyjnej. Interfejs API jest jednak nadal w fazie eksperymentalnej. Zanim zostanie stabilna, 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, a niektóre elementy mogą nie działać prawidłowo. Będziemy jednak wdzięczni za wszelkie opinie na temat użyteczności interfejsu API w Twoich zastosowaniach. (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ę zBasicTextField2
, aby akceptować treści multimedialne udostępniane przez klawiaturę programową lub przez wklejanie ze schowka.KeyboardOptions.shouldShowKeyboardOnFocus
umożliwia wyłączenie domyślnego zachowaniaBasicTextField
polegającego na żądaniu klawiatury programowej po zaznaczeniu.- Funkcje
TextInputService
iLocalTextInputService
zostały wycofane. Zamiast tego użyj interfejsuPlatformTextInputModifierNode
, aby zintegrować się bezpośrednio z interfejsami IME platformy. (aosp/2862698) - Ś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
.
Poprawki błędów
- Funkcja
BasicTextField
będzie teraz sprawdzać przed weryfikacją małą grupę mapowań przesunięć, gdy zostanie przekazana funkcjaVisualTransformation
. Pomaga to w wychwyceniu typowych błędów kodowania, które prowadzą do nieodwracalnych wyjątków w późniejszych pomiarach lub kolejnych przebiegach funkcji draw(). Wyrzucanie wyjątku podczas kompilacji zwiększa prawdopodobieństwo, że deweloperzy zobaczą te błędy podczas tworzenia aplikacji, co pomoże im uniknąć awarii w wersji produkcyjnej. (I0fd42) VisualTransformation
nie wyrzuci wyjątku, 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 komisy.
Wersja 1.6.7
1 maja 2024 r.
androidx.compose.foundation:foundation-*:1.6.7
został zwolniony. Wersja 1.6.7 zawiera te komitowane zmiany.
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 wyprowadza 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 komisy.
Wersja 1.6.2
21 lutego 2024 r.
androidx.compose.foundation:foundation-*:1.6.2
został zwolniony. Wersja 1.6.2 zawiera te commity.
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ł nadmiernie buforowany. (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 zestawami kotwic. 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 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 commity.
Zmiany w interfejsie API
- Konstruktor rozszerzenia
DragAndDropTarget()
został usunięty. Utwórz nową instancję za pomocąobject: DragAndDropTarget {}
. (I32318)
Wersja 1.6.0-beta03
13 grudnia 2023 r.
androidx.compose.foundation:foundation-*:1.6.0-beta03
został zwolniony. Wersja 1.6.0-beta03 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd powodujący awarię, który dotyczył bardzo dużych tekstów mierzonych z nieograniczonymi ograniczeniami. (I1a7df, b/312294386)
PlatformImeOptions
jest teraz konkretną klasą, a nie interfejsem. (If40a4)
Wersja 1.6.0-beta02
29 listopada 2023 r.
androidx.compose.foundation:foundation-*:1.6.0-beta02
został zwolniony. Wersja 1.6.0-beta02 zawiera te commity.
Poprawki błędów
- Rozwiązanie problemu polegający na tym, że
canScroll
nie jest aktualizowany po przewinięciu tylko do ponownego układu. (I60a86) - Naprawiono problemy z funkcjami
Modifier.animateItemPlacement()
iLookaheadScope
po niewielkim przewinięciu. (I3a2b7)
Wersja 1.6.0-beta01
15 listopada 2023 r.
androidx.compose.foundation:foundation-*:1.6.0-beta01
został zwolniony. 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 i jeden 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. Inne funkcje lambda do przetwarzania zdarzeń związanych z przeciąganiem zostały zastąpione przez tę funkcję.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 przykład. (Ie6d13, b/285139987)Interfejsy API etykietki podstawy są teraz dostępne w wersji
@ExperimentalFoundationApi
(I30b0b).Usunięto parametr
DragAndDropInfo
, ponieważ typDragAndDropModifierNode.drag
przyjmuje teraz parametry dlatransferData
, rozmiaru dekoracji i dekoracji przeciąganiaDrawScope
lambdaDragAndDropTarget
ma metody dla poszczególnych zdarzeń przeciągania i upuszczania zamiast jednej abstrakcyjnej metodyFunkcja fabryczna
onDragAndDropEvent
w przypadku obiektuDragAndDropModifierNode
została przemianowana naonDragAndDropStart
, aby lepiej wskazywać, że podany obiektDragAndDropTarget
jest prawidłowy tylko w przypadku danej sesji przeciągania i upuszczania.Opcja
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
SubcomposeLayout
(i oparte na nich układy, np.LazyColumn
), które są zachowane, aby można było ich używać w przyszłości, są uważane za wyłączone. Wprowadziliśmy nowy interfejs API testówassertIsDeactivated()
, który umożliwia testowanie takich węzłów. Pozostałe interfejsy API testowe domyślnie odfiltrowują zdezaktywowane 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 metody equals i hashcode dla klasy
PageSize.Fixed
. (Ie3ede, b/300134276) - Naprawiliśmy błąd, który powodował, że układ
BasicText
nie kurczył się, gdy zmieniał sięminWidth
, a wartośćminWidth
była mniejsza niż początkowe ograniczenia pomiarumaxWidth
(Idb19c). - Dodaliśmy obsługę renderowania gradientu Sweep 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 w interfejsie 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 pisania testów dla niestandardowych edytorów tekstowych. (Id159b) - Nazwa
GraphicsSurface
została zmieniona naAndroidExternalSurface
(I11680) - Dodano tymczasową flagę
DisableNonLinearFontScalingInCompose
, aby wyłączyć nieliniowe skalowanie czcionki. Jeśli potrzebujesz czasu na uporządkowanie testów, ustaw w nich wartośćDisableNonLinearFontScalingInCompose = true
. Ten parametr zostanie usunięty w wersji Compose 1.6.0-beta01. (Ic9486) - Dodano kolekcje
ColorList
iColorSet
, które unikają przypisywania. (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. W metodzie pozycji w plikuSnapPositionInLayout
dodaj wypełnienie treści. (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ęcieMagnifierStyle
na rzecz parametrów wbudowanych w sam modyfikator. (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 implementacjeSnapLayoutInfoProvider
mają już sposób dostępu do gęstości, więc zakres odbiornika można usunąć, co spowoduje uproszczenie implementacji 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 przesuwając lub przesuwając przesunięcia. (If320c)
Zmiany w zachowaniu
- Funkcja tworzenia teraz wykorzystuje 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ń z tooltipów elementy
rememberSaveable
. (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 zatwierdzenia.
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ęmaximumFlingVelocity
, która ma zastosowanie doDraggable
. (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 ponownego użycia podkompozycji. (I812d1, b/252846775) - Interfejs
Modifier.focusGroup
został przeniesiony do stabilnych interfejsów API. (I7ffa3) - Dodaj przeciążenia funkcji
BasicTextField2
, które akceptują niezmienną wartość i funkcję wywołania zwrotnego, aby zmienić tę wartość, tak jak w bieżącym 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) - Rozwiązaliśmy problem, który powodował, że w przyspieszonym pobieraniu w elementach Pager nie było zachowane zachowanie widoków. (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-alpha03 zawiera te commity.
Zmiany w interfejsie API
- Dodano przeciążenie funkcji
LazyLayout
, która przyjmuje lambdaLazyLayoutItemProvider
, a nie zwykły obiekt, jak to było wcześniej. Poprzednia wersja funkcji overload została wycofana. (I42a5a) - Dodano obsługę konfiguracji
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 w interfejsie 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
jest teraz prawidłowymCompositionLocal
. (I4c364) Modifier.transformable
udostępnia teraz parametrcanPan
, który zawiera wartość przesunięcia, aby ułatwić określenie kierunku przesunięcia i jego zablokowanie. (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żyć do tworzenia komponentów, które można przeciągać między stanami, np. modalnymi kartami u dołu. 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. UstawienieBringIntoViewCalculator
zostało zmienione naBringIntoViewScroller
. (Idb741) - Dodaj typ
ResourceResolutionException
, aby opakować obiekty rzucane podczas próby załadowania zasobów bitmapy z opisem ścieżki zasobu, której nie udało się załadować. (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 umożliwia dostosowywanie 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, jeśli 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
androidx.compose.foundation:foundation-*:1.5.3
został zwolniony. 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ł awarie, gdy nieprawidłowa była semantyka.
Wersja 1.5.1
6 września 2023 r.
androidx.compose.foundation:foundation-*:1.5.1
został zwolniony. 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 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 nakład pracy związany z pierwotnym tworzeniem kompozycji. - 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 commity.
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 lint toAutoboxingStateCreation
. Wcześniej ta kontrola była domyślnie włączona we wszystkich projektach. Aby wyświetlić to ostrzeżenie w edytorze Android Studio i w wyjściach lint projektu, zmień jego poziom ważności z informacyjnego na ostrzeżenie (lub wyższy), deklarującwarning "AutoboxingStateCreation"
w konfiguracjibuild.gradle
lubbuild.gradle.kts
w module, jak pokazano (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 commity.
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 prędkoś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
SnapLayoutInfoProvider
, którego można używać zLazyGridState
. (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) - Wprowadź
snapPositionalThreshold
podczas tworzenia zachowania snap fling. Ten parametr służy do określania progu pozycji, który powoduje krótkie przycinanie w Pagerze. (If8f7f) - Zawartość komórki
SnapLayoutInfoProvider.calculateSnappingOffsetBounds
została zastąpiona komórkącalculateSnappingOffset
. W tej nowej metodzie po prostu żądamy następnego przesunięcia, do którego ma nastąpić przyciąganie. Obliczanie granic powinno być wykonywane na poziomie implementacji, ponieważ może się różnić w zależności od tego, jak ma przebiegać dopasowanie. (I923a4) - Interfejsy API
LazyStaggeredGrid
zostały przeniesione do wersji stabilnej. (I633a5) - Usuń
pageCount
z kontaHorizontal/VerticalPager
. Należy je podać podczas tworzenia stanu. ZaktualizowanoPagerState
irememberPagerState
, aby zaakceptowaćpageCount
. (Ieb52d, b/266965072) - Usuń
pageCount
z kontaHorizontal/VerticalPager
. Należy je podać podczas tworzenia stanu. ZaktualizowanoPagerState
irememberPagerState
, aby 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 funkcji get semantics na potrzeby Text, gdy ograniczenia mają
minWidth
iminHeight
, nie powodują już awarii. (Ibd072) - Rozwiązanie problemu polegającego na tym, że klawiatura nie wyświetlała się w przypadku pól tekstowych w oknach dialogowych, które nie zostały utworzone przez komponent
Dialog
. (I82551, b/262140644)
Wersja 1.5.0-alpha03
19 kwietnia 2023 r.
androidx.compose.foundation:foundation:1.5.0-alpha03
i androidx.compose.foundation:foundation-layout:1.5.0-alpha03
są dostępne. Wersja 1.5.0-alpha03 zawiera te commity.
Ta wersja udostępnia nowy moduł renderowania tekstu w edytorze. Nowy pakiet jest zoptymalizowany pod kątem wydajności, więc nie powinieneś zauważyć żadnych 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 wydaniem wersji 1.5 beta01.(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-alpha02 zawiera te commity.
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 bezpośrednio prosić o skupienie uwagi, używając działania semantycznego, zamiast klikania pola. (I6ed05) - Dodano obsługę rozmieszczania elementów na osi poziomej za pomocą atrybutu
verticalArrangement
w elementachFlowRow
ihorizontalArrangement
w elementachFlowColumn
. Usunęliśmy teżverticalAlignment
ihorizontalAlignment
na poziomie nadrzędnym w elementachFlowRow/FlowColumn
. Deweloperzy mogą zamiast tego użyć elementuModifier.align
. Dzięki temu nie będzie już możliwości pomylenia konwencji 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 w interfejsie API
- Tekst i
BasicText
zostały przebudowane, aby używać nowego systemu modyfikatorów. W wielu przypadkach prowadzi to do znacznej poprawy wydajnoś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) - Dodanie eksperymentalnej funkcji
onHover
doClickableText
(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) 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 interfejs API
PlatformTextInputAdapter
niskiego poziomu do tworzenia niestandardowych implementacji wprowadzania tekstu, które współpracują bezpośrednio z interfejsami API platformy. (I58df4) - Dodano obsługę odwróconego układu w
LazyStaggeredGrid
. (I3ef4a)
Poprawki błędów
- Działania semantyczne
BasicTextField
SetText
będą teraz aktualizować bufor tekstowy za pomocą tej samej ścieżki kodu co aktualizacje IME i funkcje testowe (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
są dostępne. 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) - Do metod
DrawScope.drawText
,Paragraph.paint
iMultiParagraph.paint
dodano parametrBlendMode
, aby umożliwić obsługę różnych algorytmów mieszania podczas rysowania tekstu na płótnie. (I57508) - Usunięto interfejs API
modifierElementOf()
. Zamiast tego rozszerz je bezpośrednio z poziomuModifierNodeElement
. (Ie6d21)
Poprawki błędów
- Za pomocą uchwytów nie można już zaznaczyć części znaku. (Idedd1)
- Naprawić 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
- Do właściwości
mainAxisItemSpacing
dodano właściwościLazyListLayoutInfo
,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
doClickableText
(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 aktualnymi przykładami w dokumentacji. (I8a9c4, b/255554340) - Więcej typów i możliwości ustawienia wartości w przypadku funkcji wbudowanych i wycofanych (I24f91)
- Interfejsy API
LineBreak
iHyphens
wTextStyle
są teraz stabilne. (Ic1e1d)
Poprawki błędów
- Kursor w polach tekstowych będzie teraz migać nawet wtedy, gdy animacje są wyłączone. (I95e70, b/265177763)
Modifier.basicMarquee
jest teraz animowany nawet wtedy, gdy animacje są wyłączone w ustawieniach systemu. (I23389, b/262298306, b/265177763)
Darowizna zewnętrzna
- 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
jest wycofywany na rzeczFocusRequesterNode
(I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)- 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ą składanki 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żyjTextMotion.Animated
, jeśli tekst ma być skalowany, przesuwany lub obracany za pomocą animacji. (I24dd7) - Dodanie
TextFieldFocusModifier
w celu naprawienia zachowania nawigacji fokusa na platformie Android (I00303) - Argument
maxSize: IntSize
w funkcjidrawText
został zastąpiony argumentemsize: Size
, aby była ona zgodna 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 aktualizacji z wersji
androidx.compose.foundation:1.4.0-alpha03
naandroidx.compose.foundation:1.4.0-alpha04
może wystąpić błądjava.lang.NoSuchFieldError
. Tutaj problem został zgłoszony po raz pierwszy. 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 UI korzystających z reguły Compose wznawianie kontynuacji podczas wywołań
withFrameNanos
nie będzie wysyłane, dopóki nie zakończą się wszystkie wywołaniawithFrameNanos
. Jest to zgodne z działaniem funkcji komponowania podczas normalnego działania. Testy oparte na starym zachowaniu 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. - Do konstruktora i funkcji fabrycznej
TestMonotonicFrameClock
dodano opcjonalny parametronPerformTraversals: (Long) -> Unit
, który umożliwia uruchamianie kodu po wywołaniach zwrotnychwithFrameNanos
, ale przed wznowieniem korzystania z funkcji współbieżnych wywołujących. (Idb413, b/254115946, b/222093277, b/255802670) - Przedstaw działania dotyczące 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śmyPagerState
, aby kontrolować pagery oraz uzyskiwać informacje o ich bieżącym stanie. 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 zostanie umieszczony element. (I569f6) - Użytkownik
OverscrollEffect#isEnabled
został usunięty. Zamiast pamiętać i ustawiać tę flagę, po prostu nie wysyłaj zdarzeń do efektu przewijania (w przypadku, gdy nie chcesz, aby efekt ten był widoczny, np. gdyScrollableState#canScrollForward/backward
zwraca 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 czy na końcu zakresu). Domyślnie jest to ustawione na wartość Prawda w celu zapewnienia zgodności wstecznej z dotychczasowymi implementacjamiScrollableState
. Użytkownicy 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).
- Służy w
Clickable
do prawidłowego opóźnienia interakcji z przyciskiem, gdy gesty mogą stać się zdarzeniami przewijania. - Rozwiązaliśmy problem z nieprawidłowym opóźnianiem efektów
Clickables
, gdy są używane w ramachScrollable ViewGroup
. - Zaktualizowano Drawers i Sheets, aby prawidłowo opóźniać naciśnięcia w przypadku, gdy gesty mogą stać się zdarzeniami przewijania.
- Zaktualizuj nazwy metod
snapStepSize
, aby były zgodne z innymi metodami wSnapLayoutInfoProvider
. (Ife67c) - Dodano
EmojiCompat
doCompose
(Ibf6f9, b/139326806) - Zmieniliśmy nazwę
consumedWindowInsets()
naconsumeWindowInsets()
, awithConsumedWindowInsets()
naonConsumedWindowInsetsChanged()
i uczyniłeś modyfikatory publicznymi. (Ie44e1)
Poprawki błędów
- Naprawiono awarię związaną z funkcją
Modifier.animateItemPlacement()
i nieaktywnymi siatkami. Występowało to w niektórych warunkach, gdy liczba nowych elementów była mniejsza niż poprzednia. (I0bcac, b/253195989)
Wersja 1.4.0-alpha02
9 listopada 2022 r.
androidx.compose.foundation:foundation:1.4.0-alpha02
i androidx.compose.foundation:foundation-layout:1.4.0-alpha02
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).
- Dodano parametr
minLines
doBasicText
iBasicTextField
. 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
są dostępne. Wersja 1.4.0-alpha01 zawiera te commity.
Zmiany w interfejsie 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 commity.
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
są dostępne. Wersja 1.3.0 zawiera te commity.
Ważne zmiany od wersji 1.2.0
- Wprowadzono 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) - Dodano nowe eksperymentalne interfejsy API Hyphens, aby umożliwić automatyczne dzielenie wyrazów w tekście (Iaa869).
Wersja 1.3.0-beta03
21 września 2022 r.
androidx.compose.foundation:foundation:1.3.0-beta03
i androidx.compose.foundation:foundation-layout:1.3.0-beta03
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
mogą teraz uzyskiwać najbardziej aktualne granice prośby podczas jej 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 commity.
Zmiany w interfejsie API
- Wstępna wersja eksperymentalna
StaggeredGrid
(Ia48be) - Zmieniono nazwy
FocusDirection.In
iFocusDirection.Out
naFocusDirection.Enter
iFocusDirection.Exit
(Ia4262, b/183746982) - Wprowadziliśmy przeciążenie
rememberSnapFlingBehavior
, które umożliwia szybkie włączanie blokowania wLazyLists
. (Ifb48a) - Zastąpiono fabrykę
snapFlingBehavior
konkretną 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) - Udostępnienie
AwaitPointerEventScope#awaitLongPressOrCancellation
jako dodatkowego elementu składowego do bardziej złożonego wykrywania gestów (I04374, b/181577176) - Wprowadziliśmy opcję
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 swojej siatce. (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
są dostępne. Wersja 1.3.0-alpha03 zawiera te commity.
Zmiany w interfejsie API
- Czcionki zasobów obsługują teraz ustawienia wariantów czcionek (API 26 i nowsze) (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) - Wprowadzenie eksperymentalnych interfejsów API do udostępniania logiki dostawcy elementów między układami opartymi na opóźnionym ładowaniu. (Ic891c)
- Funkcja
ScrollableDefaults.reverseDirection()
nie jest już eksperymentalna. (Iba646) - Wycofano
SemanticsModifier.id
i zamiast niego użyto identyfikatora semantycznegoLayoutInfo.semanticsId
. (Iac808, b/203559524) - Funkcja
checkScrollableContainerConstraints()
nie jest już eksperymentalna. (I2c290) - Funkcja
Modifier.clipScrollableContainer()
nie jest już eksperymentalna. (Ia2b44) - Wycofaj
TextInputService.show|hideSoftwareKeyboard
. Zamiast niej użyj w kodzie aplikacji wartościSoftwareKeyboardController
, a w kodzie zarządzania IME – wartościTextInputSession
. (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 zatwierdzenia.
Zmiany w interfejsie API
- Dodano funkcję rozszerzenia
drawText
w komponencieDrawScope
, aby umożliwić rysowanie tekstu w wielu stylach na komponentach i modyfikatorach, które działają naDrawScope
, takich jakCanvas
idrawBehind
. (I16a62, b/190787898)
Poprawki błędów
- Klawiatura ekranowa jest teraz ukryta, gdy pole tekstowe jest wyłączone podczas skupienia. (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 przesuwany ma zaznaczony element podrzędny, będzie on teraz prawidłowo przesuwany, aby zaznaczony element podrzędny był widoczny, gdy jego rozmiar się zmniejszy, nawet jeśli rozmiar jest animowany. (I80867, b/230756508, b/220119990)
- Naprawiliśmy błąd, który powodował awarię, gdy
TextField
był usuwany i ponownie wypełniany, gdy wybór był aktywny. (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-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wprowadziliśmy typ adnotacji
UrlAnnotation
i powiązane metody, aby umożliwić obsługę linkówTalkBack
w dokumentachAnnotatedString
. (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
są dostępne. 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. Umożliwi to komponentom bardziej efektywne ponowne używanie elementów.
- 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 touchpada.
Wersja 1.2.0-rc03
29 czerwca 2022 r.
androidx.compose.foundation:foundation:1.2.0-rc03
i androidx.compose.foundation:foundation-layout:1.2.0-rc03
są dostępne. 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
są dostępne. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wprowadziliśmy eksperymentalny element
OverscrollEffect
, który umożliwia stosowanie niestandardowych efektów przewijania, a także przeciążeńModifier.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 zagłębiamy zwitek z możliwością przewijania. Możesz go użyć, aby utworzyć własne przewijane układy oparte na lazy loadingu za pomocąLazyLayout
. (Id6fab, b/233352497) - Z pakietu
androidx.compose.foundation.lazy
usunięto przestarzały elementLazyVerticalGrid
. Nowy stabilny interfejs API znajduje się wandroidx.compose.foundation.lazy.grid
(I73c76, b/225192009)
Wersja 1.2.0-beta03
1 czerwca 2022 r.
androidx.compose.foundation:foundation:1.2.0-beta03
i androidx.compose.foundation:foundation-layout:1.2.0-beta03
są dostępne. Wersja 1.2.0-beta03 zawiera te commity.
Zmiany w interfejsie API
- Dodano nowe eksperymentalne funkcje
IntervalList
iMutableIntervalList
. Umożliwia ona reprezentowanie listy wartości za pomocą wielu przedziałów. Jest to przydatne, gdy chcesz zdefiniować własne dane DSL podobne do tych używanych przezLazyColumn
, gdzie elementy listy można definiować za pomocą wielu wywołań item lub items. (I2d05e, b/228580728)
Poprawki błędów
- W dokumentacji
WindowInsets.ime
dodaliśmy informację, że wstawkiime
są raportowane od interfejsu API 23, ale tylko animowane od wersji 30. (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
są dostępne. Wersja 1.2.0-beta01 zawiera te commity.
Nowe funkcje
- To 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) - Atrybuty
trimFirstLineTop
itrimLastLineBottom
obiektuLineHeightBehavior
zostały zastąpione jednym typem enumeracji:LineHeightTrim
.LineHeightTrim
mają 4 wartości zdefiniowane przez 2 wartości logiczne:FirstLineTop
,LastLineBottom
, Both i None (Ifc6a5, b/181155707) Dodano opcję
LineHeightBehavior
do opcjiTextStyle
iParagraphStyle. LineHeightBehavior
, która określa, czy wysokość linii ma być stosowana w górnej części pierwszego wiersza i dolnej części ostatniego wiersza. Określa też wyrównanie linii w miejscu podanym przezTextStyle
(lineHeight
).Możesz np. uzyskać działanie podobne do tego, które usługa porównywania cen definiuje za pomocą parametru
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.Konfiguracje
trimFirstLineTop
,trimLastLineBottom
działają prawidłowo tylko wtedy, gdyincludeFontPadding
ma wartość false. (I97332, b/181155707)Dodano eksperymentalny modyfikator
imeNestedScroll()
, aby deweloperzy mogli sterować IME za pomocą przewijania. (I60759)
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że pola tekstowe nie ukrywały klawiatury, gdy były usuwane z kompozycji, podczas gdy były w niej skupione. (I7a410, b/230536793, b/225541817)
- Obsługa wielokropka, gdy wysokość jest ograniczona i nie mieści wszystkich wierszy tekstu (Ie528c, b/168720622)
BringIntoViewRequester.bringIntoView
będzie teraz zawsze zawieszony, dopóki prośba nie zostanie zakończona lub nie zostanie przerwana przez nowszą prośbę, która się z nią nie pokrywa. Prośby nakładające się na siebie będą umieszczane w kolejce. (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 pozwoli nam to lepiej zintegrować ulepszenia wysokości linii (aosp/2058653) i rozwiązać problemy zTextField
. (I01423, b/171394808) Modifier.bringIntoViewRequester
nie używa jużonGloballyPositioned
. (I630f5)
Darowizna zewnętrzna
- Wartość
MouseInjectionScope.scroll(delta = someDelta)
jest teraz odwrócona na Androidzie, jeśli przewijamy pionowo (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 wyświetlanie (obniżanie lub pozycja) zostało wycofane w wersji
PointerInputChange
. Możesz użyćconsume()
, aby w pełni wdrożyć 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 wczesnej i może ulec zmianie w kolejnych wersjach. (Iba2bc, b/166591700) - Metoda
AndroidFont
przyjmuje teraz parametrtypefaceLoader
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 commity.
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 znak
KeyboardType.Decimal
jako alternatywę dla znakuKeyboard.Number
, aby umożliwić dodawanie separatora dziesiętnego w systemie IME. (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))
. 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. Dzięki temu oddzielneComposeViews
w hierarchii mogą stosowaćWindowInsets
bez wzajemnego zakłócania się. (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 w interfejsie 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 wyświetlane nad klawiaturą, gdy są aktywne i wyświetla się klawiatura, w przypadku elementów z możliwością przewijania i trybu
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
są dostępne. 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 LazyHorizontalGrid. (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)
Darowizna zewnętrzna
- 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ć żądań do elementów nadrzędnych. Zamiast tego muszą natychmiast zwrócić prostokąt, który rodzic ma wyświetlić. (I8e66a)- Obsługa asynchronicznego wczytywania czcionek w Tekście (I77057, b/214587005)
LazyVerticalGrid
obsługuje terazline breaking
przed elementami, których zakres nie mieści się w bieżącym wierszu. (I05c40, b/207462103)- Nazwa
excludeFromSystemGestures
została zmieniona 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 rzadko trzeba używać ich bezpośrednio . 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 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życia funkcjiComposableTargetMarker
znajdziesz w sekcjianroidx.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-alpha03
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 tego użyjBringIntoViewRequester
. (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
.- Dodaliśmy metody
createFontFamilyResolver(context)
icreateFontFamilyResolver(context, coroutineScope)
, które umożliwiają tworzenie nowych rozwiązujących FontFamily poza kompozycją. - Akapit i MultiParagraph przyjmują teraz wartość
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
zawiera teraz resolver używany w tym układzie, a nieużywany resolverTextLayoutResult.layoutInput.resourceLoader
, ponieważ nie jest już używany. (Id5a45, b/174162090)
- Dodaliśmy metody
- Dodano
AndroidFont
, nowy interfejs API na niskim poziomie do udostępniania nowych typów opisów zasobów czcionek na Androidzie. 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, aby deweloperzy aplikacji używali tego interfejsu API bezpośrednio. Aby dodać nowe typy czcionek, zobacz AndroidFont. - Funkcja rozszerzenia
Font.AndroidResourceLoader
umożliwia tworzenieFont.ResourceLoader
poza kompozycją. - Dodano parametr
loadingStrategy
do czcionek opartych na zasobach, aby umożliwić asynchroniczne wczytywanie, gdy czcionka oparta na zasobach odwołuje się do czcionek do pobrania w formacie XML. (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) - Obiekty
LazyListLayoutInfo
iLazyGridLayoutInfo
mają teraz nowe właściwości:viewportSize
,orientation
ireverseLayout
(Ifc8ed, b/200920410) - Teraz możesz określić typ treści dla elementów LazyColumn/LazyRow – funkcje item/items w LazyListScope akceptują 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
przyjmującymaxSlotsToRetainForReuse
został wycofany. Zamiast tego jest nowy konstruktor, który akceptujeSubcomposeSlotReusePolicy
– nowy interfejs umożliwiający bardziej szczegółową kontrolę nad tym, które sloty powinny być zachowane na potrzeby ponownego użycia. (I52c4d) - Dodaje modyfikatory dla WindowInsets, zarówno dla wypełnień, jak i rozmiarów. 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ą 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 przycisku Wstecz, gdy widoczny jest uchwyt kursora. (Ideb4b, b/205726883)
- Sposób działania lupy w przypadku zaznaczenia tekstu został dopracowany, aby pasował 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 w interfejsie API
- Dodaliśmy
NonRestartableComposable
do metod, które są przeciążeniem istniejących metod bez złożonej logiki. Zmniejsza to liczbę generowanych przez kompilator sprawdzeń zapamiętywania (równa) w przypadku wszystkich parametrów, które są powtarzane w wyzwanej funkcji wewnętrznej. (I90490) - Dodano modyfikatory
excludeFromSystemGesture
, aby ułatwić dostęp do funkcjisetSystemGestureExclusionRects
w Androidzie (I46f07).
Poprawki błędów
- Sposób działania lupy w przypadku zaznaczenia tekstu został dopracowany, aby pasował do lupy na platformie. (Idd918, b/206833278)
LazyColumn
,LazyRow
,Modifier.verticalScroll
i inne kontenery korzystające zModifier.scrollable
obsługują teraz przewijanie za pomocą kółka myszy. (I2b5e1, b/198214718)
Wersja 1.2.0-alpha01
12 stycznia 2022 r.
androidx.compose.foundation:foundation:1.2.0-alpha01
i androidx.compose.foundation:foundation-layout:1.2.0-alpha01
są dostępne. Wersja 1.2.0-alpha01 zawiera te commity.
Zmiany w interfejsie 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
wandroidx.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,
- Ulepszone dopasowywanie rozmiaru dotyku
- 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 zapewnia też, że podczas tworzenia interfejsu użytkownika za pomocą komponentów Compose Material zostaną spełnione minimalne wymagania dotyczące dostępności docelowych elementów dotykowych.
- 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 zapewnić zgodność z 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 commity.
Zmiany w interfejsie API
- Do LazyVerticalGrid dodano obsługę poziomych zakresów. (I7e2fa, b/176758183)
Dodano eksperymentalną możliwość animowania pozycji elementów listy Lazy. W ramach 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 commity.
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, aby element znalazł się w polu widzenia (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 commity.
Poprawki błędów
- Dodano eksperymentalny interfejs BringIntoView API, który umożliwia wysłanie do rodziców prośby o przewinięcie, aby element znalazł się w polu widzenia (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-alpha03
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 Compose
1.1.0-alpha03
, aby zależało od Kotlina1.5.30
. (I74545)
Zmiany w interfejsie API
- Dodano efekt poświaty dla przewijania. Dodano nowy eksperymentalny interfejs OverScrollConfiguration API, który umożliwia konfigurowanie efektu wizualnego przewijania. Aby wyłączyć efekt overscroll, 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 ViewConfiguration do użycia w semantyce i wejściu wskaźnika w celu zapewnienia ułatwień dostępu. (Ie861c)
Wersja 1.1.0-alpha02
18 sierpnia 2021 r.
androidx.compose.foundation:foundation:1.1.0-alpha02
i androidx.compose.foundation:foundation-layout:1.1.0-alpha02
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-alpha01 zawiera te commity.
Zmiany w interfejsie 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 kompozyt BitmapPainter + Image, aby używać 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
obsługuje teraz zarówno parametry układu poziomego, jak i pionowego. (If9c92)
Wersja 1.0
Wersja 1.0.5
3 listopada 2021 r.
androidx.compose.foundation:foundation:1.0.5
i androidx.compose.foundation:foundation-layout:1.0.5
są dostępne. 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, aby zależało 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
są dostępne. Wersja 1.0.3 zawiera te zatwierdzenia.
Aktualizacje zależności
- Zaktualizowano, aby zależało 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ć wersję 1.0.2
aplikacji Compose. Compose 1.0.2
jest nadal zgodny z Kotlinem 1.5.21
.
Wersja 1.0.1
4 sierpnia 2021 r.
androidx.compose.foundation:foundation:1.0.1
i androidx.compose.foundation:foundation-layout:1.0.1
są dostępne. 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
są dostępne. 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żesz napotkać ten błąd:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Aby to naprawić, tymczasowo zwiększ wartość minSdkVersion w pliku
build.gradle
do 24 lub więcej. 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
są dostępne. Wersja 1.0.0-rc02 zawiera te zatwierdzenia.
- Zaktualizowano renderowanie obrzeża w przypadku kształtów ogólnych, aby rozwiązać problemy z ścieżkami zdefiniowanymi z stałymi wymiarami. (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 w interfejsie API
- Canvas obsługuje teraz parametr contentDescription dotyczący ułatwień dostępu. (Ib547c)
Poprawki błędów
- Wyłączone przyciski, karty, pola wyboru i ogólne
Modifier.clickable(enabled=false)
uniemożliwiają przekazywanie kliknięć 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
są dostępne. Wersja 1.0.0-beta09 zawiera te commity.
Zmiany w interfejsie 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);
- Wielkość liter zależna od klawiatury jest zamieniana na klasę wstawianą. (Id5a1c)
- 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. Kod korzystający z funkcji może deklarować prywatne stałe przed stabilizacja. (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.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Co to są reguły profilu?
Reguły profilu biblioteki są określone w pliku tekstowym
baseline-prof.txt
znajdującym się w katalogusrc/main
lub równoważnym. 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 ma taki wzór:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Reguła klasy będzie miała ten wzór:
<CLASS_DESCRIPTOR>
Tutaj
<FLAGS>
to co najmniej jeden z znakówH
,S
lubP
, który wskazuje, czy ta metoda powinna być oznaczona jako „Aktywna”, „Uruchamianie” 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żą reguły?
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 podczas uruchamiania, i powinna zostać skompilowana wcześniej, aby uniknąć kosztów kompilacji i interpretacji metody podczas uruchamiania.Metoda z flagą
P
wskazuje, że jest wywoływana po uruchomieniu.Klasa obecna w tym pliku wskazuje, że jest używana podczas uruchamiania i należy ją wstępnie przydzielić do stosu, aby uniknąć kosztów wczytywania klasy.
Jak to działa?
- Biblioteki mogą definiować te reguły, które zostaną zapakowane w artefakty 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
są dostępne. Wersja 1.0.0-beta08 zawiera te commity.
Zmiany w interfejsie API
- Enum NestedScrollSource został zastąpiony przez klasę wbudowaną. (Ie321b, b/187055290)
- Przekształciliśmy użycie wyliczeń w klasy wbudowane, aby uniknąć problemów z wyczerpującymi instrukcjami warunkowymi, gdy dodawane są nowe wartości wyliczenia. (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).
- Środowisko wykonawcze
Modifier.focusModifier()
zostało wycofane i zastąpione środowiskiemModifier.focusTarget()
(I6c860) - Typ klawiatury zastąpiono za pomocą klasy wbudowanej. (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, a nie 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
- Naprawia awarie podczas przytrzymania pustego obszaru w niepustym tekście. (I33ab5, b/187437299)
- Pokaż pasek narzędzi po wybraniu wszystkich (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 karty. 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 obsługiwać 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 kolejność modyfikatorów wpływa na to, jakie współrzędne zostaną zgłoszone. (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 utrzymywać aktywne (nieusunięte) maksymalnie 2 widoczne wcześniej elementy, nawet jeśli zostały już przewinięte. Dzięki temu komponent może ponownie użyć aktywnych podkompozycji, gdy będziemy musieli utworzyć nowy element, co poprawia wydajność przewijania. (Ie5555)
- Usuń paintBackground. (I38660)
- Zaznacz tło za pomocą narzędzia DrawScope. (I73c61, b/186674472)
- Rozwiązano regresję w wersji beta06, która dotyczyła wiersza/kolumny używającej układów spacedBy do rozmieszczania elementów ważonych. (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 umożliwia uzyskanie indeksu 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
- Dodawanie obsługi zapisywania obiektu AnnotatedString do 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 w interfejsie API
- Interfejs FlingBehavior jest teraz oznaczony jako @Stable. Wszystkie implementacje powinny być zgodne z umową
@Stable
. (I93354, b/184830577)
Poprawki błędów
- Naprawiono działania przewijania w trybie dostępności dotyczące funkcji
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
iaccessibilityActionScrollDown
. Zamiast przewijania do końca elementu przewijalny będzie przesuwał się o jeden ekran w danym kierunku. (Ieccb0) - Pliki AndroidManifest z ui-test-manifest i ui-tooling-data są teraz zgodne z Androidem 12 (I6f9de, b/184718994).
Wersja 1.0.0-beta04
7 kwietnia 2021 r.
androidx.compose.foundation:foundation:1.0.0-beta04
i androidx.compose.foundation:foundation-layout:1.0.0-beta04
są dostępne. Wersja 1.0.0-beta04 zawiera te commity.
Zmiany w interfejsie API
- Zmień nazwy funkcji hideSoftwareKeyboard i showSoftwareKeyboard w klasie SoftwareKeyboardController odpowiednio na
hide()
ishow()
.- Udostępnij pełny interfejs CompositionLocal dla klasy LocalSoftwareKeyboardController, aby umożliwić jej ustawienie (szczególnie przydatne w przypadku testów) (I579a6)
TextOverflow.Visible
jest wprowadzany. (Ic8f89)- Usunięto publiczne wystąpienia parametrów
RowScope
,ColumnScope
,BoxScope
iBoxWithConstraintsScope
. (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 komitowane zmiany.
Zmiany w interfejsie API
- Środowisko wykonawcze
DefaultMonotonicFrameClock
zostało wycofane. Wywołanie funkcjiwithFrameNanos
lubRecomposer.runRecomposeAndApplyChanges
bez parametruMonotonicFrameClock
spowoduje wyjątekIllegalStateException
. (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 w interfejsie 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
- Wprowadzanie 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 pierwsza wersja Compose 1.0.0 w wersji beta.
Zmiany w interfejsie API
- Do
detectDragGestures
dodano wywołanie zwrotne onStart (I67269, b/179995594). - Modyfikatory służące do dopasowywania rozmiaru do wartości bezwzględnych nie są już eksperymentalne. (I15744)
- Usunięto stwierdzenia dotyczące 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 emitowanie i 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 rozszerzenia w źródle interakcji, np. 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 dotyczących źródła interakcji.
- (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 płynnie przewija listę do konkretnego elementu. (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 być pusty, ta metoda 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 lokalu będą mieli domyślną zależność od tego, że jest on dostarczany, co nie jest wymuszane 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ł to parametr wymagany. (Ic1764, b/152525426)Działania związane z tekstem sprawdzają teraz automatycznie 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. Zmienne width/height/size zostały przemianowane na requiredWidth/requiredHeight/requiredSize. Nazwa Modifier.preferredWidth/preferredHeight/preferredSize została zmieniona na width/height/size. (I5b414)
Parametr defaultMinSizeConstraints zmienił nazwę na defaultMinSize. (I4eaae)
Modifier.tapGestureFilter został usunięty. Zamiast tego użyj pola
Modifier.pointerInput { detectTapGestures(...) }
. (I266ed, b/175294473)usunięto częściowe zużycie z systemu wskaźnika. Zalecaną metodą koordynacji częściowego zużycia jest Modifier.nestedScroll. (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. Aby uzyskać zakres kompozycji, w której są wywoływane, użyj funkcji rememberCoroutineScope(). (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.
- Typ ComposableLambda został zastąpiony interfejsem, a typy nie są już parametrami.
- 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
@TestOnly
poziomu najwyższego clearRoots została usunięta. Nie jest już potrzebne. - Funkcje keySourceInfoOf i resetSourceInfo zostały usunięte. Nie są już potrzebne.
- Funkcja Composer.collectKeySourceInformation została usunięta. 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 zreorganizowane w różnych plikach. 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)
Funkcja Modifier.scrollable została zmieniona. Teraz zamiast klasy ScrollableController używa interfejsu Scrollable (I4f5a5, b/174485541, b/175294473)
Funkcja Modifier.draggable przyjmuje teraz typ 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 nowe lokalne API kompozycyjne LocalSoftwareKeyboardController, które zastępuje poprzedni interfejs SoftwareKeyboardController w 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
są dostępne. Wersja 1.0.0-alpha12 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Funkcja Modifier.pointerInput wymaga teraz kluczy zapamiętania, aby wskazywać, kiedy coroutine wykrywania danych wejściowych wskaźnika powinna zostać ponownie uruchomiona w przypadku nowych zależności. (I849cd)
- Aktualizacja testów: funkcja hasText() będzie sprawdzać, czy w polu tekstowym znajduje się tekst wejściowy, etykietowy, podpowiedzi lub tekst zastępczy (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 wykonywanych za pomocąComposeTestRule
. (I50ec4, b/151940543) - 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)
- Z kilku klas, w których były rzadko używane, usunięto metody destrukturyzacji i copy(). (I26702, b/178659281)
Dodano obsługę kluczy niestandardowych w przypadku kolumn i wierszy Lazy Dzięki temu możemy mądrzej zarządzać ponownym porządkowaniem 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 oraz zmodyfikowano LocalIndication tak, aby zawierała obiekt 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 lambdas zwracające wartości typu Float zamiast bezpośrednich wartości typu Float. (If4a35, b/178657186)
Dodano semantyczne pole tekstowe EditableText, aby oznaczać edytowalny tekst wejściowy w polu tekstowym na potrzeby ułatwień dostępu, oraz odpowiednie metody testów, aby sprawdzać semantykę (I8e07a)
Teraz atrybut Modifier.clickable nie obsługuje podwójnego ani 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ć Modifier.draggable do przeciągania po jednej osi (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 kompozytowy 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)
Annotacjami @ComposableContract zastąpiono 3 bardziej szczegółowe adnotacje.
@ComposableContract(restartable = false)
stało się@NonRestartableComposable
@ComposableContract(readonly = true)
stało się@ReadOnlyComposable
@ComposableContract(preventCapture = true)
stało się@DisallowComposableCalls
@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ę, dopóki nie zakończą się wszystkie podprocesy rekompilacji. Funkcja Recomposer.shutDown została przemianowana na cancel, aby odróżnić ją od funkcji close. (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)
Klasa RestorableStateHolder została przemianowana na SaveableStateHolder i 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).
Usunięto wiele starych interfejsów API w pakiecie ui. (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 w przypadkach, gdy automatyczne lustrzane odbicie nie jest pożądane. (I61040, b/152756983)
Zmienna canDrag została usunięta z modyfikatora scrollable. (Id66e7, b/175294473)
Interfejs API, do którego kieruje się działanie wtyczki kompilatora Compose, został przebudowany, aby używać interfejsu zamiast konkretnej klasy. Interfejs nie używa już też parametru typu.
Jest to zmiana wewnętrzna, która nie powinna mieć wpływu na zgodność kodu źródłowego, ale powoduje zmianę binarną. (I3b922, b/169406779)
Modifier.scaleGestureFilter został usunięty. Zamiast tego użyj Modifier.zoomable. Możesz też użyć
Modifier.pointerInput { detectMultitouchGestures { ... }}
(Id5da1, b/175294473).Właściwość AnimatedValue/Float została wycofana. Zamiast tego użyj interfejsu Animatable. (I71345, b/177457083)
- Usunięcie CoreText i CoreTextField z publicznego interfejsu API
- Usunięto przestarzałą metodę SelectionContainer (I99c19).
Usunięcie przestarzałych funkcji przewijania bez zawieszania W nawiązaniu do zmian wprowadzonych w poprzedniej wersji funkcje przewijania bez zawieszania zostały całkowicie usunięte. Przekształć je na funkcje zawieszania o tych samych nazwach. Zakres współprogramu można uzyskać za pomocą funkcji rememberCoroutineScope(). (I3d39c, b/178169563)
Interfejs androidx.compose.foundation.layout.ConstraintLayout został wycofany i zastąpiony 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. Rekompozycja i ticki animacji oparte na metodzie FrameNano są wstrzymywane, gdy cykl życia hosta jest zatrzymany. (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. Używaj tego interfejsu API zamiast Recomposer.current(), który został 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 tego przejścia wycofujemy wersje tych funkcji, które nie zostały zawieszone. (I12880)
Do obrazu i ikony dodano parametr opisu 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 funkcji suspend Animatable.animateDecay. (I4659b, b/177457083)
Usunięto nauczyciela
data class
z tych zajęć:- InlineTextContent
- 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 uniemożliwić użytkownikom korzystanie z nieefektywnych metod, zdecydowaliśmy się wycofać klasy ScrollableColumn i ScrollableRow oraz zachęcić do używania klas LazyColumn i LazyRow. Użytkownicy mogą zrezygnować z zachowania typu lazy i używać modyfikatorów bezpośrednio w ten sposób: Column(Modifier.verticalScroll(rememberScrollState())) (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 Boxa dodano parametr propagateMinConstraints, który umożliwia określenie, czy przychodzące minimalne ograniczenia mają być przekazywane do treści Boxa. Wartość domyślna to fałsz. (I0125b, b/152613457)
Poprawki błędów
- Interfejsy onCommit, onDispose i onActive zostały wycofane na rzecz interfejsów SideEffect i DisposableEffect (If760e).
- Element WithConstraints został przerobiony na BoxWithConstraints i przeniesiony do pakietu foundation.layout. (I9420b, b/173387208)
Zmiany funkcji fabrycznych dotyczące czcionki, rodziny czcionek lub kroju pisma
- 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)
Wprowadziliśmy funkcję
ComposeContentTestRule
, która rozszerza funkcjęComposeTestRule
i definiuje funkcjęsetContent
, która została usunięta z funkcjiComposeTestRule
. Dodano metodę fabrycznącreateEmptyComposeRule()
, która zwracaComposeTestRule
i nie uruchamia Activity. Użyj tego, gdy chcesz uruchomić aktywność podczas testu, np. za pomocąActivityScenario.launch
(I9d782, b/174472899)animateAsState jest teraz animateFooAsState, gdzie Foo to typ zmiennej, której dotyczy animacja, 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 odpowiednio funkcji currentRecomposeScope i rememberCompositionReference. (I583a8)
Klasa AnnotatedString została zmieniona tak, aby rozszerzała klasę 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 wartością Długie milisekundy, a ten krok usuwa zależność od wejścia wskaźnika w tych klasach. (Ia33b2, b/175142755, b/177420019)
Observer pamięci zastępuje CompositionLifecycleObserver, a CompositionLifecycleObserver jest teraz wycofany.
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 odwołanie zostało zapamiętane więcej niż raz w kompozycji, funkcjaonRemembered
jest wywoływana w przypadku każdego odwołania, podczas gdy funkcjaonEnter
jest wywoływana tylko raz.onEnter
został wywołany wielokrotnie, jeśli obiekt był używany w podkompozycjach, takich jakWithConstraints
iScaffold
, co sprawia, że gwarancja pojedynczego wywołaniaonEnter
jest niewiarygodna i została usunięta zRememberObserver
.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 rekomendacji z jednym odwołaniem powyżej śledzi zewnętrzny zasób, 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
- FontWeight
- TextDecoration
- 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. Nazwa AccessibilityRangeInfo została zmieniona na ProgressBarRangeInfo. Nazwa stateDescriptionRange została zmieniona na progressBarRangeInfo. AccessibilityScrollState zostało zmienione na ScrollAxisRange. horizontalAccessibilityScrollState zostało zmienione na horizontalScrollAxisRange. verticalAccessibilityScrollState zostało zmienione na verticalScrollAxisRange. (Id3148)
Zmiana metody VisualTransformation na interfejs funkcjonalny (I3bba4)
Korzystanie z TestCoroutineDispatcher w testach (I532b6)
Usunięto typ danych PointerInputData i zmodyfikowano typ danych PointerInputChange, aby zawierał on wszystkie pola typu danych 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ć rozmiaru z onRoot() lub co najmniej rozmiaru okna. (I62db4)
Wersja 1.0.0-alpha10
13 stycznia 2021 r.
androidx.compose.foundation:foundation:1.0.0-alpha10
i androidx.compose.foundation:foundation-layout:1.0.0-alpha10
są dostępne. Wersja 1.0.0-alpha10 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.
- Element PasswordTransformation nie jest już elementem klasy danych.
- Przeniesienie mapowania offsetów do oddzielnego pliku
- (I0bdf3)
- Zmiany w interfejsie EditOperations API
- Zmiana nazwy operacji edycji na EditCommand
- Dodano sufiks polecenia dla konkretnych implementacji operacji edycji
- Polecenie EditCommand nie jest już klasą 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 klasę TestUiDispatcher. Zamiast tego użyj Dispatchers.Main (Ic171f, b/175385255).
- Dodaj opcję przełączania do podstawy Strings.kt (I4a5b7, b/172366489)
- Przeniesiono nativeClass do modułu ui i uczynił go wewnętrznym. Zaktualizowano użycie nativeClass w implementacjach equals, aby zamiast tego używać „is 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ć Selectable o aktualizacjach SelectionManager. (I6ff30, b/173215242)
- Zmieniono
fun Dp.isFinite()
naval Dp.isFinite
(I50e00) - Nazwa Constraints#satisfiedBy została zmieniona na isSatisfiedBy. (I9cf5c)
- Dodano funkcje isSpecified, isUnspecified i useOrElse do klas inline z nieokreśloną stałą. (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).
- Wartość
animate()
została zastąpiona wartościąanimateAsState()
, która zwraca wartośćState<T>
zamiastT
. Dzięki temu można uzyskać lepszą wydajność, ponieważ zakres unieważnienia można zawęzić do miejsca, w którym odczywana jest wartość State. (Ib179e) - Dodaj interfejs API roli semantycznej i dodaj parametr Role do klikalnego, możliwego do wybrania i przełączalnego SemanticsModifier. Zmieniono Modifier.progressSemantics, aby można było go używać również w Slider. (I216cd)
- Do natywnego zdarzenia keyEvent można teraz uzyskać dostęp przez 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 pozwala na 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)
Wycofanie funkcji 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 verticalArrangement dla 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)
detectMultitouchGestures używa teraz jednej funkcji z połączonymi parametrami centroid, przesunięcie, powiększenie i obrót. (Ie6e1c)
Przeniesienie ContentDrawScope do modułu ui-graphics, aby był on razem z 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 interfejsy 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 łagodnym, gdy dostępne są informacje o wymiarach środowiska rysunku. Jest to przydatne do definiowania gradientów, które zajmują pełne granice rysowania kompozytowego w czasie tworzenia kompozycji, bez konieczności implementowania niestandardowych implementacji modyfikatora rysowania.
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 zmieniono na contentDescription. accessibilityValue zmieniono na stateDescription. (I250f2)
Wprowadziliśmy kilka nowych funkcji w SelectionRegistrar i zmieniliśmy nazwę funkcji onPositionChange na notifyPositionChange. (Ifbaf7)
AndroidOwner made internal (Ibcad0, b/170296980)
Nowa funkcja infiniteRepeatable do tworzenia specyfikacji nieskończonej powtarzalności (I668e5)
Interfejs
Applier
został zmieniony, aby ułatwić tworzenie drzew od dołu do góry zamiast odwrotnie.Nazwa metody
insert()
została zmieniona nainsertTopDown()
.Dodano nową metodę
insertBottomUp()
.Aplikator wstawia węzły do drzewa, które modyfikuje, za pomocą funkcji
insertTopDown()
lubinsertBottomUp()
, w zależności od tego, która z nich działa lepiej.Niektóre drzewa, takie jak
LayoutNode
iView
, są znacznie wydajniejsze w budowaniu od dołu do góry niż odwrotnie. Przed wprowadzeniem tej zmiany do wdrażania metody od dołu wymagany był stos wstawek, który trzeba było kopiować do każdego miejsca, w którym była potrzebna konstrukcja od dołu ze względu na wydajność. 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)
Dodano funkcję fabryki buildAnnotatedString do tworzenia obiektów AnnotatedString. Wycofana funkcja annotatedString.builder. (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
- Parametr
maxLines
został usunięty z funkcjiCoreTextField
. 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 z instrukcjami i sprawdzaniem błędów niektóre interfejsy API, które używają nazwy
children
jako nazwy funkcji lambda na końcu, zostały przeniesione docontent
. (Iec48e) - Interfejsy API
foundation:foundation-text
zostały przeniesione dofoundation:foundation
. Struktura pakietu pozostała bez zmian (Id3eb2). - Nowy moduł 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 wskaźnik, 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 z nią metod na ImageBitmap. (Ia2d99)
- Przeniesienie właściwości semantycznych z warstwy podstawowej do warstwy 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)
Dodano parametr singeLine do pól BasicTextField, TextField i OutlinedTextField. Ustaw ten parametr na „PRAWDA”, aby pole tekstowe miało postać pojedynczej linii, którą można przewijać poziomo. (I57004, b/168187755)
Dodano funkcję wykrywania gestów, która umożliwia rozpoznawanie dotyku, dwukrotnego dotyku, długiego naciśnięcia i wskazania naciśnięcia przy użyciu nowego wejścia za pomocą 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 prawidłowej semantyki i dostępności. (I41eb9, b/152525426, b/162865824)
Wycofane wcześniej 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. Metoda Modifier.gravity została usunięta. Zamiast niej użyj Modifier.align. Grupa została usunięta, użyj zamiast niej pola tekstowego (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 przestarzałych interfejsów API do obecnych. (Id6044, b/173834241)
- Zmieniliśmy nazwę Modifier.drawLayer na Modifier.graphicsLayer. Zaktualizowaliśmy też powiązane klasy na GraphicsLayer zgodnie z opiniami Rady API. (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)
- Motyw MaterialTheme teraz ustawia prawidłowe kolory uchwytów 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. Teraz zamiast stanu przyjmują one parametry lambda. (Ic3021, b/173594846)
- Dodano WindowManager.isWindowFocused, aby sprawdzić, czy okno hosta jest aktywne, oraz WindowFocusObserver, który udostępnia wywołanie zwrotne onWindowFocusChanged. (I53b2a, b/170932874)
- Dodano parametr resetInput do metody 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ętypefaceFromFontFamily()
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 funkcją eksperymentalną (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ównania został zaktualizowany i wprowadzony. (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
. NazwaMeasurable.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 w interfejsie API
- Podobnie jak w przypadku funkcji
Modifier.fillMaxSize[Width|Height]
, teraz obsługujemy ułamki w funkcjiModifier.fillParentMaxSize[Width|Height]
w zakresie funkcjiLazyColumn/Row
(I797e2, b/166586426) - Usunięto
KeyboardOptions.toImeOptions
z publicznego interfejsu 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, które nie są zgodne z Material Design, należy utworzyć własne motywy tematyczne, które można wykorzystać w komponentach. (I74acc, b/172067770)
- Komponent foundation.Text został wycofany i zastąpiony komponentem material.Text. Podstawowy interfejs API tekstu, 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. LazyColumn/LazyRow można teraz używać bez dodawania @OptIn (Idab7a, b/166584730)
- Komponent BaseTextField został wycofany. Zamiast tego użyj pola tekstowego podstawowego. (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. Dodano modyfikator paddingFromBaseline, który ułatwia określanie odległości od granic układu do linii bazowych tekstu. (I0440a, b/170633813)
- Do modyfikatora aspectRatio dodano parametr matchHeightConstraintsFirst, który 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)
- CoreTextField został oznaczony jako @InternalTextApi. Zamiast tego użyj pola tekstowego BasicTextField (Ie2469).
- Adnotacja ExperimentalSubcomposeLayoutApi została usunięta. Można teraz używać elementu SubcomposeLayout bez dodawania @OptIn (I708ad)
- Wprowadzenie 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ł podany 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 rozkładem zostało przeniesionych z androidx.compose.ui do androidx.compose.layout.ui. (I0fa98, b/170475424)
- androidx.ui.test przeniesione 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.
Funkcje androidx.compose.foundation:foundation:1.0.0-alpha06
, androidx.compose.foundation:foundation-layout:1.0.0-alpha06
i androidx.compose.foundation:foundation-text:1.0.0-alpha06
są dostępne. 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 stan interakcji do Modifier.scrollable, ScrollableColumn i LazyColumnFor (I81566, b/169509805).
- Do RowScope dodano alignByBaseline, a alignWithSiblings przemianowano na alignBy (I06503, b/170628732).
- Funkcja Box została przekształcona w funkcję wbudowaną. (Ibce0c, b/155056091)
- Dodano maxLines do CoreTextField (Ibee58, b/143687793)
- Dodano mię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)
- Dodano opcję klawiatury jednowierszowej do CoreTextField (I72e6d).
- Zmieniliśmy nazwę interfejsu API Radius na CornerRadius, aby lepiej odzwierciedlała sposób jego użycia w komponowaniu. 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ść wstecz: usunięto wartość zwracaną z metody PointerInputFilter.onPointerEvent(...), ponieważ jedyną wartością, która powinna być możliwa do zmiany w zdarzeniach związanych z wskaźnikiem, są dane o konsumpcji. Zamiast zwracać dane z metody PointerInputFilter.onPointerEvent(...) możesz teraz po prostu zmienić dane dotyczące zużycia przekazanych 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-alpha05 zawiera te commity.
Zmiany w interfejsie API
- Element CoreTextField obsługuje teraz funkcję 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 środowiska, aby lepiej opisywać ich przeznaczenie. Nowe nazwy:- 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ł Compose z obsługą pagingu i integrację z pagingiem (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 kolumny/wiersza Lazy (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. Należy użyć atrybutuPointerInputFilter.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. Jest to inne zachowanie niż w przypadku poprzedniej ramki, która działała podobnie jak kolumna. (I94893, b/167680279)
- Parametry dekoracji pudełka zostały wycofane. Jeśli chcesz użyć dekoracji lub wypełnienia w pudełku, użyj modyfikatorów (Modifier.background, Modifier.border, Modifier.padding) (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 pojedynczego modyfikatora współdzielonego stanu w czasie i anulowania konfliktujących modyfikatoró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 elementu tekstowego z danymi typu string. Nie będzie on używany, ponieważ inlineContent musi współpracować z AnnotatedString. (Ief403)
- Wycofane zostały interfejsy API niestandardowych aranżacji. (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 elipsydalnych obiektach o kształcie eliptycznym.
- Dodano dokumentację, aby wskazać, że publicznego konstruktora 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.
- Usunięto metody RoundRect.middleRect/tallMiddleRect/wideMiddleRect i Rect.isStadium.
- Zmieniono nazwę RoundRect.longestSide na RoundRect.maxDimension.
- Zmieniono nazwę RoundRect.shortestSide na RoundRect.minDimension.
- Zmiana funkcji RoundRect.center na właściwość
- 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
- Dodano do Radius interfejs API do niszczenia
- Przeniesienie różnych funkcji rozszerzenia RoundRect do właściwości
- (I8f5c7, b/168762961)
- Optymalizacje wydajności dla przewijania LazyColumnFor/LazyRowFor polegające na niewykonywanie niepotrzebnych ponownych składań 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 API do obsługi grafiki.
- 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 nazwy parametrów dx/dy w metodie inset na horizontal i vertical.
- Dodano przeciążenie w przypadku wstawienia, które zapewnia tę samą wartość wstawienia dla wszystkich 4 ograniczeń
- 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 metody Rect.translate(offset) i wycofano 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)
- W interfejsach API dotyczących układu nazwy metod związanych z grawitacją zostały zmienione na „wyrównaj” lub „wyrównywanie”. (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
- Wycofano interfejs DpConstraints i interfejsy API, które go używały. (I90cdb, b/167389835)
- Parametry
minWidth
imaxWidth
funkcjiwidthIn
zostały odpowiednio przemianowane 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 obliczenia rozmiaru i pozycji w GestureScope, które powodowały między innymi generowanie nieprawidłowych gestów przesuwania (Iaf358, b/166589947).
- Urządzenia
createAndroidComposeRule
iAndroidInputDispatcher
zostały przeniesione zandroidx.ui.test.android
doandroidx.ui.test
(Idef08, b/164060572)
Wersja 1.0.0-alpha02
2 września 2020 r.
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 zatwierdzenia.
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.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 wiersza i kolumny dodano ustawienie Spacing, aby umożliwić umieszczanie elementów potomnych układu z użyciem stałej odległości. Dodano też możliwość ustawienia elementów potomnych obok siebie i wyrównania ich 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)
- Opóźnienie stało 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 tego użyj Modifier.border. Klasa danych Border została zastąpiona przez BorderStroke (I4257d, b/158160576)
- Komponenty VerticalScroller i HorizontalScroller zostały usunięte. Zamiast tego użyj kolumny lub wiersza przewijalnego. 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).
- Dodano funkcję lambda mergePolicy do klucza SemanticsPropertyKey. Można go użyć do zdefiniowania niestandardowej zasady złączania z użyciem semantycznej metody 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)
- Do elementu LinearProgressIndicator dodano parametr backgroundColor, a z elementu CircularProgressIndicator usunięto wewnętrzne wypeł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) - Zmieniono nazwę RRect na RoundRect, aby lepiej pasowała do wzorca nazewnictwa funkcji. Utworzono konstruktory funkcji podobnych do RRect i wycofane konstruktory 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 pasek narzędzi po kliknięciu tekstu. (If4525)
- Ukrywanie paska narzędzi 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 ona modyfikatory do wypełniania maksymalnego rozmiaru elementu nadrzędnego, co rozwiązuje problem, gdy element ma wypełniać widok, a zwykła funkcja Modifier.fillMaxSize() nie działa, ponieważ element jest mierzony z ograniczeniami nieskończoności. (Ibd3b2, b/162248854)
- Przenoszenie okna do interfejsu (I47fa6)
- Dodano LazyColumnForIndexed/LazyRowForIndexed – wersje LazyColumnFor/LazyRowFor, które w itemCallback podają zarówno indeks, jak i element. 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 siły grawitacji na osi z-y dla elementów LazyRowItems/LazyColumnItems. 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. ConstraintSet2 został przemianowany na ConstraintSet. (If58d1, b/162450908)
- Dodano metody Modifier.absoluteOffset() i Modifier.absoluteOffsetPx(). W odróżnieniu od 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 inicjalizacji i zapewnić, aby pole nie było puste.
- Zmieniono nazwy typów ClipOp na Pascal Case.
- Zmieniono nazwy filtrów w układ Pascala.
- Zmieniono nazwy enumów StrokeJoin na Pascal Case.
- Zmieniono nazwy typów punktu na Pascal Case
- Zmieniono nazwy typów za pomocą Pascal Case.
- 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.
- Zaktualizowano komponent Image, aby uniknąć korzystania z Box, co pozwoliło zmniejszyć obciążenie.
- 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 warunków równości, ponieważ kompozycja już je obsługuje
- wycofanie metod konstruktora towarzysza Rect na rzecz konstruktorów funkcji;
- Zaktualizowano klasy pędzli i konstruktorów funkcji, aby używały 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ę na nieokreślony rozmiar 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 a 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żyjSemanticsNodeInteraction.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. Zamiast niego używaj 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()
SemanticsMatcher. (I0b760)Dodano 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)
Metoda OnChildPositioned została wycofana. Zamiast tego użyj metody OnPositioned w podrzędnym elemencie. (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.
Funkcje androidx.compose.foundation:foundation:0.1.0-dev15
, androidx.compose.foundation:foundation-layout:0.1.0-dev15
i androidx.compose.foundation:foundation-text:0.1.0-dev15
są dostępne. Wersja 0.1.0-dev15 zawiera te commity.
Aby korzystać z wersji 0.1.0-dev15
Compose, musisz:
Aktualizacja zależności
- Aby używać wersji
0.1.0-dev15
biblioteki Compose, musisz zaktualizować zależności zgodnie z nowymi fragmentami kodu pokazanymi powyżej w sekcji Deklarowanie zależności.
Zmiany w interfejsie API
- Podobnie jak nowy parametr w ScrollableColumn/ScrollableRow LazyColumnItems/LazyRowItems ma teraz też parametr contentPadding, który umożliwia dodanie wypełniania dla treści po jej przycięciu. Nie jest to możliwe za pomocą samego parametru modyfikatora. Umożliwia też dodanie odstępu tylko przed pierwszym lub po ostatnim elemencie. (Ibc24e)
- Wywołanie zwrotne onFocusChange w polach tekstowych zostało zmienione na onFocusChanged (Ida4a1).
- Komponenty VerticalScroller i HorizontalScroller 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 własnym elemencie. Podobnie w przypadku ScrollerPosition zastosowano wycofanie w wersji 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. Stan wymagany dla przewijanych elementów został uproszczony. Zmiana nazwy klasy ScrollableState 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 powiększaniu podrzędnego komponentu Painter, jeśli rozmiar układu jest większy niż rozmiar własny komponentu przy zachowaniu formatu obrazu. Takie działanie lepiej odpowiada oczekiwaniom użytkowników w przypadku przekazywania stałych rozmiarów do Image, a jednocześnie nie wpływa na domyślne działanie, jeśli do obliczenia rozmiaru komponentu składanego służy tylko rozmiar domyślny. (I40ae3, b/159838006)
- Używaj interfejsu AnimationSpec zamiast AnimationBuilder w interfejsach API najwyższego poziomu, aby uściśliwić koncepcję specyfikacji animacji statycznej. Ulepsza to język opisu przejścia, ponieważ usuwa wymóg użycia lambda do tworzenia specyfikacji animacji, takich jak tween czy spring. Zamiast tego używają parametrów konstruktora. – Zwiększenie ogólnej łatwości obsługi AnimationSpec dzięki udostępnieniu konstruktorów zamiast polegania na obiektach budujących. – Zmiana czasu trwania i opóźnienia w przypadku KeyFrames i Tween na Int. Pozwala to wyeliminować niepotrzebne konwersje typów i przeciążanie metod (w przypadku obsługi zarówno Long, jak i Int). (Ica0b4)
- Możliwość kliknięcia została usunięta. Użyj modyfikatora clickable (I84bdf).
- Dodano LazyRowItems – analogiczny do LazyColumnItems element umożliwiający przewijanie poziome (Ibbcf7).
- Wprowadziliśmy interfejsy API do animacji bezstanowych na niskim poziomie. Te interfejsy API (I63bf7)
- Interfejsy androidx.ui.foundation.TextFieldValue i androidx.ui.input.EditorValue zostały wycofane. Wycofane zostały też komponenty TextField, FilledTextField i CoreTextField, które używają tego typu. Zamiast tego użyj interfejsu 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 zmiennoprzecinkowych reprezentujących szerokość i wysokość jako zmiennoprzecinkowe. (Ic0191)
- Aby skonsolidować liczbę klas używanych do reprezentowania informacji o pozycjonowaniu, zamiast klasy PxPosition użyj klasy Offset. Dzięki temu można korzystać z klasy wbudowanej, aby za pomocą typu long pakować 2 wartości zmiennoprzecinkową, które reprezentują przesunięcia x i y zapisane jako zmiennoprzecinkowe. (I3ad98)
- Dodano modyfikator.zoomable dla funkcji powiększania za pomocą gestów (Id5d63)
- Komponent przełączalny został wycofany. Zamiast tego użyj 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)
- W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych kompozytowych klasach, aby polegać tylko na typach Dp i prymitywnych w przypadku parametrów pikseli (I19d02)
- VerticalScroller obsługuje teraz kolumny bez żadnych dodatkowych ustawień. Widget HorizontalScroller obsługuje teraz automatycznie komponent Row. (Ieca5d, b/157020670)
- 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 (Iede0b).
- Do pakietu foundation 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).
- VerticalScroller i HorizontalScroller obsługują teraz odwrotne przewijanie, jeśli w ScrollerPosition ustawiona jest opcja isReversed (I953bd)
- Obsługa dodawania elementów składanych do układu tekstu. (I1373c)
- Zbiorcze CanvasScope zostały scalone, więc teraz są tylko DrawScope i ContentDrawScope. Zmieniliśmy nazwę CanvasScope na DrawScope. 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. Przekształcono 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ą interfejs Canvas, tak aby zamiast niego udostępniały interfejs 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)
- HorizontalScroller i VerticalScroller nie przywracają pozycji przewijania za pomocą zapisanego stanu instancji. (Ia0fae, b/155075048)
- FocusManagerAmbient został usunięty. 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 użytkownika utrzymywania własnego obiektu stanu aplikacji 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 do Text() często używane parametry. Jeśli tworzysz lokalny styl tekstu, aby przekazać niewielką liczbę tych parametrów, np.
Text(style = TextStyle(textAlign = TextAlign.Center))
, możesz teraz 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 naciskanie 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 może wystąpić wartość null, typem niepustym i użyto typu 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. Zmieniliśmy nazwę FillMaxDimension na Crop, FillMinDimension na Fit, a Fit na Inside, aby lepiej dopasować je do odpowiedników ImageView.ScaleType. Dodaliśmy dokumentację wskazującą, że kombinacja Crop i Alignment.Center daje ten sam wynik co ImageView.ScaleType.CENTER_CROP, a Fit używany z Alignment.Center daje ten sam wynik co ImageView.ScaleType.FIT_CENTER. Inside używany z Alignment.Center daje ten sam wynik co ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521).
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 DrawModifier API:
- 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ąpienie operatora 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)Efekt rozchodzenia się fal jest teraz modyfikatorem. Chociaż opcja Clickable nie została jeszcze przekonwertowana, 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. Wynik podkompozycji to 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 kompozycja obsługuje też rysowanie dowolnego wystąpienia dowolnego programu Painter z zachowaniem jego rozmiaru wewnętrznego, a także obsługiwanego stałego rozmiaru lub minimalnego rozmiaru (Ibcc8f).
Przyciski Button, FloatingActionButton i Clickable mają teraz oddzielny parametr
enabled
. Niektóre parametry przycisku zostały przemianowane lub zmieniono ich kolejność. (I54b5a)Zmieniliśmy nazwę Image na ImageAsset, aby lepiej odróżnić dane Image od nadchodzącego komponentu Image, który służy do udziału w układaniu i rysowaniu 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 na istniejącym układzie, lub SimpleImage, aby wprowadzić obraz, który zajmuje miejsce (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. Informacje o użyciu znajdziesz w przykladach, a ikony, których możesz używać bezpośrednio z tymi komponentami, znajdziesz w sekcji Ikony. (I96849)
Usunięto kompozyt DrawShape. Zamiast tego użyj modyfikatora DrawBackground. (I7ceb2)
Dodano AdapterList, komponent listy przewijanej, który tylko składa i umieszcza widoczne elementy. Obecne znane problemy obejmują to, że jest to rozwiązanie tylko w orientacji pionowej i nie obsługuje w pełni wszystkich przypadków zmian w podrzędnych. (Ib351b)
Dodano komponent przewijania, który umożliwia tworzenie niestandardowych list i przewijaczy (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)
Scrollery działają teraz zgodnie z natywnym sposobem przewijania 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 procentowego podczas tworzenia wytycznych 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 układzie poziomym. (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 wycofany interfejs LayoutTag(). Zamiast niego używaj interfejsu Modifier.tag(). Wycofano wycofany interfejs Modifier.matchParent(). Zamiast niego użyj interfejsu Modifier.matchParentSize(). (If8044)
Dodano modyfikator układu offsetPx, który można wykorzystać do definiowania (dynamicznych) przesunięć w pikselach. (I5af57)
Interfejs kompozytowy AlignmentLineOffset został wycofany. Zamiast niego użyj modyfikatora relativePaddingFrom(). Usunięto kompozyt CenterAlignmentLine. (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 nieużywane modyfikatory LayoutWidth/Height/Size. (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 spakowanego 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. Wiersz, kolumna i stos zostały zaktualizowane, aby obsługiwać 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)
alignToSiblings przyjmuje teraz obiekt Measured 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 przestarzałe komponenty Wrap i Center. (I29e23)
Dodano interfejs LayoutModifier2, nowy interfejs API do definiowania modyfikatorów układu; wycofanie interfejsu LayoutModifier (If32ac).
Elementy RowScope i ColumnScope są teraz dostępne poza elementami Row i Column. (I3a641)
Kontenery zostały wycofane. Zamiast tego użyj 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)
Zmieniono 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 przeciągania, aby zmienić zaznaczenie pola tekstowego. (I27032)
Implementuje LongPressAndDrag dla TextField Selection. (I17919)
Poprawki błędów
- Interfejs FocusModifier został wycofany i zastąpiony interfejsami Modifier.focus, Modifier.focusRequester i 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. Wszystkie interfejsy doXYZ zostały przemianowane 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 falowania, 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).
- Usunięto parametr kierunku układu z bloku pomiaru funkcji Layout(). 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 ramach funkcji @Composable, jeśli wystąpiły one w ramach funkcji (I5205a, b/158123804).
- Dodaj komponent
viewModel()
, który umożliwia tworzenie lub pobieranie już utworzonego widoku modelu w sposób podobny do tego, w jaki działa on w komponencie Activity lub Fragment (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. Usunięto całą klasę Px (I3ff33)
W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych klasach kompozytowych, aby polegać tylko na typach Dp i pierwotnych w przypadku parametrów pikseli (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ż przekazywania tokenu gestu (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).
Dzieci elementów Layout i LayoutModifier można mierzyć z użyciem innego kierunku układu. (Ibd731)
Wprowadzenie dodatkowego opcjonalnego parametru rect do ImagePainter w celu obsługi rysowania podzbioru podrzędnego w ramach komponentu ImageAsset (I0ea9e)
Naprawiono awarię w AdapterList podczas usuwania elementów (Ic64b0, b/153195921)
Zmieniliśmy sposób pomiaru pierwszego układu umieszczonego w bloku activity.setContent { }. Wcześniej wypełniał on cały ekran aktywności, a teraz zachowuje się tak, jakby był umieszczony w grupie elementów: może być mniejszy niż ekran i znajduje się 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. Moduł 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)
Funkcje
runOnIdleCompose
irunOnUiThread
są teraz funkcjami globalnymi zamiast metodami w komponencie ComposeTestRule. (Icbe8f)[Zmienne]Operatory delegujące właściwości stanu zostały przeniesione do rozszerzeń, aby umożliwić optymalizacje delegowania właściwości w wersji Kotlin 1.4. Aby nadal korzystać z
by state { ... }
lubby mutableStateOf(...)
, dzwoniący muszą dodać importy. (I5312c)Domyślne wartości parametrów clipToBounds i clipToOutline w funkcjach DrawLayerModifier i drawLayer zostały ustawione na false. (I0eb8b, b/152810850)
Zmieniono nazwę LayoutResult na MeasureResult. (Id8c68)
Wycofany komponent Center. Należy go zastąpić modyfikatorem LayoutSize.Fill + LayoutAlign.Center lub jednym z komponowanych elementów Box lub Stack z odpowiednimi modyfikatorami (Idf5e0).
Zmieniono nazwę LayoutFlexible na LayoutWeight. Parametr tight został przemianowany na fill. (If4738)
Funkcja drawVector została zmieniona z zwykłej funkcji kompozytowej na funkcję zwracającą modyfikator drawVector(), która będzie rysować wektor jako tło 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)
Funkcję kompozytową DrawShadow zastąpiono modyfikatorem drawShadow(). Cienie są teraz rysowane jako część 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. Metoda Compose.composeInto została wycofana. 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 propagacji układu z węzła nadrzędnego do podrzędnych. Dodano modyfikator kierunku układu. (I3d955)
Zmień nazwę Painter.toModifier na Painter.asModifier, ponieważ nowo utworzony modyfikator zawiera odwołanie do oryginalnego modyfikatora, które można udostępniać w wielu instancjach 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żywać DensityAmbient.current. Zamiast withDensity(gęstość) wpisz tylko with(gęstość) (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.
- Dodaliśmy klasy modelu dla AnimatedValue, AnimatedFloat itp.
- Dodano nowy zestaw lekkiego interfejsu API @Composable do animowania wartości.
- (I79530)
Zmiany w interfejsie API ambients. Szczegółowe informacje znajdziesz w logach 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 linii wyrównania, zwracana jest wartość AlignmentLine.Unspecified. (I896c5, b/158134875)
Naprawiliśmy błąd w ConstraintLayout, który powodował awarię podczas rekompozycji. (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 metodzie LayoutPadding. Zamiast tego do przesunięcia pozycji ujemnej należy używać atrybutu LayoutOffset. (Ifb5b1)
WithConstraints ma parametr LayoutDirection (I6d6f7).
Zaktualizowaliśmy flagę
ComposeFlags.COMPOSER_PARAM
natrue
, co zmieni strategię generowania kodu dla wtyczki 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, która powoduje przerwanie binarne, ale 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ść position nie jest już dostępna w przypadku atrybutu LayoutCoordinates. Właściwość position nie ma sensu w przypadku modyfikatorów układu, obracania ani skalowania. Zamiast tego programiści powinni używać funkcji parentCoordinates i childToLocal() do obliczania transformacji z jednego układu współrzędnych na inny.
Właściwość size w metodzie LayoutCoordinates używa wartości IntPxSize zamiast PxSize. Układy używają rozmiarów w pikselach w postaci liczb całkowitych, dlatego wszystkie rozmiary układów powinny być podawane jako liczby całkowite, a nie wartości zmiennoprzecinkowe. (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)
Nazwa parametru TextDirectionAlgorithm została zmieniona 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)
TestTag i Semantics zostały usunięte. Zamiast tego użyj funkcji 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 interfejsu API: usługa
AnnotatedString.Item
została przemianowana 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 Compose UI, powinna teraz rozszerzać klasę androidx.activity.ComponentActivity (lub AppCompatActivity). Metoda setContent w klasie 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 dostosować ją do zasad dotyczących androidx. (I42711)