Tworzenie podstaw
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ę API wszystkich pakietów Compose)
| Najnowsza aktualizacja | Wersja stabilna | Wersja kandydująca do publikacji | Wersja beta | Wersja alfa |
|---|---|---|---|---|
| 9 września 2026 r. | 1.12.1 | - | - | 1.13.0-alpha03 |
Struktura
Compose to połączenie 7 identyfikatorów grupy Maven w androidx. Każda grupa zawiera ukierunkowany podzbiór funkcji, a każda z nich ma własny zestaw informacji o wersji.
W tej tabeli znajdziesz grupy 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łcanie funkcji z adnotacją @Composable i włączanie optymalizacji za pomocą wtyczki kompilatora Kotlin. |
| compose.foundation | Twórz aplikacje w Jetpack Compose za pomocą gotowych elementów składowych i rozszerzaj podstawy, aby tworzyć własne elementy systemu projektowania. |
| compose.material | Twórz interfejsy Jetpack Compose za pomocą gotowych komponentów Material Design. Jest to punkt wejścia wyższego poziomu do Compose, który ma zapewniać komponenty zgodne z opisanymi na stronie www.material.io. |
| compose.material3 | Twórz interfejsy Jetpack Compose za pomocą komponentów Material Design 3, czyli kolejnej ewolucji Material Design. Material 3 zawiera zaktualizowane motywy i komponenty oraz funkcje personalizacji Material You, takie jak dynamiczny kolor. Jest on spójny z nowym stylem wizualnym Androida 12 i interfejsem systemu. |
| compose.runtime | Podstawowe elementy modelu programowania i zarządzania stanem w Compose oraz podstawowe środowisko wykonawcze, do którego kierowany jest wtyczka kompilatora Compose. |
| compose.ui | Podstawowe komponenty interfejsu Compose potrzebne do interakcji z urządzeniem, w tym układ, rysowanie i dane wejściowe. |
Deklarowanie zależności
Aby dodać zależność od Compose, musisz dodać do projektu repozytorium Maven Google. Więcej informacji znajdziesz w repozytorium Maven Google.
Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:
Groovy
dependencies { implementation "androidx.compose.foundation:foundation:1.12.1" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.12.1") } 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.
Prześlij opinię
Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nową kartę, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz oddać głos na istniejący problem, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.13
Wersja 1.13.0-alpha03
9 września 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.13.0-alpha03 Wersja 1.13.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaje obsługę określania stylu poszczególnych części złożonego komponentu kompozycyjnego (np.
TextFieldlubDatePicker) bezpośrednio w parametrze stylu komponentu kompozycyjnego. Umożliwia to na przykład utworzenie komponentuTextField, który pozwala dostosowywać każde z pudełek dekoracyjnych za pomocą stylu, co umożliwia zastępowanie ich na poziomie motywu lub w miejscu wywołania. (I43c0f) - Przeciążenia pola tekstowego Material 2, które akceptują parametry
value, onValueChange, zostały wycofane. Przejdź na przeciążenie, które używaTextFieldStatedo przenoszenia stanu. (I6b841, b/556234973) - Usunięto adnotację
@ExperimentalFoundationApiz elementuundoStatew usłudzeTextFieldState. (I93a44) - Dodaj domyślne obiekty konfiguracji dla każdego leniwego układu zawierającego wartości domyślne używane w odpowiednich funkcjach
@Composeable. Obecnie zawiera tylko domyślne okno pamięci podręcznej dla każdego układu. (I58633) - Flaga
isUsingDynamicDefaultCacheWindowIn[List|Grid|StaggeredGrid]spo włączeniu spowoduje, że leniwe układy będą używać okna pamięci podręcznej, które wykorzystuje średni rozmiar widocznych elementów do wstępnego pobierania danych przed obszarem widoku z minimalnym oknem wyprzedzającym wynoszącym 10% obszaru widoku i maksymalnym oknem wyprzedzającym wynoszącym 50% obszaru widoku. (I59212) - Wycofano
LazyListPrefetchStrategy,LazyListPrefetchScopeiLazyListPrefetchResultScope. Działanie wstępnego pobierania należy skonfigurować za pomocą parametruLazyLayoutCacheWindoww przypadkuLazyColumnlubLazyRow.LazyLayoutCacheWindowzapewnia deklaratywny mechanizm buforowania oparty na widoku, który automatycznie przygotowuje elementy przed widocznym oknem i utrzymuje elementy za nim bez konieczności stosowania złożonych wywołań zwrotnych planowania imperatywnego. Nowy interfejs API jest prostszy i wymaga mniej czynności konfiguracyjnych niżLazyListPrefetchStrategy. (I1fa2d) - Dodaje funkcje rozszerzeń
PolygonShape.transformediPolygonShape.scaledToFitw Compose Foundation do przekształcania i dopasowywania kształtów wielokątów. (I3f327) - Ta zmiana dzieli interfejs Styles API na 2 niezależne części: język DSL stylów i modyfikatory konfigurowane przez ten język. Poprzednia implementacja oparta na
Stylejest nadal dostępna, ale zostanie wycofana i usunięta. Wszelkie przypadki jego użycia należy zastąpić nowym interfejsem API opartym na tokenachCommonStyle. - Wprowadzone kluczowe komponenty:
CustomStyleiCommonStyle: podstawowe interfejsy i pomocnicze funkcje łączenia do deklarowania stylów kompozycyjnych.StyleResolver: rozwiązuje właściwości stylu w kompozycji i wiąże je z węzłami układu za pomocąModifier.styleResolver.Modifier scopes:Modifier.appearance,Modifier.placementoraz dynamiczne wywołania zwrotne oparte naModifier.paddingiModifier.graphicsLayer.- Podstawowe elementy usługi:
stylePropertyOf,styleLocalOf. - Typy przydatne w przypadku właściwości stylu:
Breadth,FilliShadows.
- Nowe modyfikatory są przydatne do wdrażania systemu projektowania za pomocą interfejsu Styles API, ale nie są wymagane. System projektowania może używać tych modyfikatorów lub udostępniać własne. (Ieb8cc, b/549921960)
- Usunięto adnotację
ExperimentalFoundationApiz interfejsów APITextFieldBuffer, które śledzą zmiany (I546a7) - Wprowadzono
MorphPolygonShapew Compose Foundation do animacji przekształcania kształtów wielokątów oraz konwerterytoPolygonShape()dlaRoundedCornerShapeiCutCornerShape. (Ic5a89) - Wprowadza
PolygonShapew Compose Foundation do renderowania zwykłych, gwiazdowych i niestandardowych wielokątów zaokrąglonych z wygładzaniem narożników. (I0b99d) - Przeciążenia funkcji
BasicTextField, które akceptują parametryvalue, onValueChange, zostały wycofane. Przejdź na przeciążenieBasicTextField, które używaTextFieldStatedo przenoszenia stanu. (I636bf, b/552879150) - Podobnie jak
BasicTextField(value, onValueChange), interfejsVisualTransformationzostał wycofany, ponieważ jest udostępniany tylko w tej wersjiTextField. Dotychczasowe przekształcenia powinny zostać przeniesione doOutputTransformation. (I636bf, b/552879150) - Przekazywanie wartości
LazyLayoutCacheWindowiLazyListPrefetchStrategyza pomocąLazyListStatezostało wycofane na rzecz przekazywania wartościLazyLayoutCacheWindowdo funkcji typu „composable”. (I71f19) - Usunięto tymczasową flagę funkcji
ComposeFoundationFlags.isPausableCompositionInPrefetchEnabled. (Ifff7f) - Dodano
InputTransformation.maxLengthTrim, aby ograniczyć długość tekstu przez obcinanie nadmiarowych znaków wejściowych, dodanoInputTransformation.maxLengthReject, aby odrzucać dane wejściowe przekraczającemaxLength, a funkcjaInputTransformation.maxLengthzostała wycofana na rzeczmaxLengthTrimimaxLengthReject. (I8d4cd)
Poprawki błędów
compileSdkbibliotek Compose zaktualizowanych do wersji 37.1. Wymaga to aktualizacjicompileSdkwe wszystkich aplikacjach i bibliotekach korzystających z Compose. (I05b0f)- Rozwiązaliśmy problem polegający na tym, że
WindowInsetsRulerswstawki IME nie były oznaczane jako animowane podczas przewidywanego przejścia wstecz, oraz problem zimePadding, który nie był aktualizowany podczas przełączania fokusu między polami tekstowymi. (Id4562, b/537386261, b/539686000) - Zaktualizowano komponenty
SecureTextFieldiOutlinedSecureTextField(a także wycofane przeciążeniaBasicSecureTextField), aby jako domyślny tryb zaciemniania używaćTextObfuscationMode.SystemzamiastTextObfuscationMode.RevealLastTyped. (I76c7e)
Wersja 1.13.0-alpha02
26 sierpnia 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.13.0-alpha02 Wersja 1.13.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Interfejsy API układu Promoted Grid (
Grid,GridScope,GridConfigurationScope,GridFlow,Fr,GridTrackSize,GridTrackSpec,Modifier.gridItem) są stabilne. (I43ac4, b/462550392) - Dodano nową właściwość semantyczną
BackgroundColordla Modifier.background (I7eec3, b/518049030) - Usunęliśmy adnotację
ExperimentalFlexBoxApii zmieniliśmy nazwy właściwości opartych na pikselach wFlexConfigScope, dodając do nich sufiksPxw celu uniknięcia wątpliwości. (I5b24e, b/543092286) - Zachowuj w pamięci podręcznej tylko elementy, które nie są używane w przypadku wyprzedzającego przetwarzania. Wprowadzono flagę
isKeepAroundDuringLookaheadDisabled. Aby przywrócić poprzednie działanie, ustaw flagę nafalse. (I110e9) - Dodano flagę
isLazyLayoutItemAnimatorVisibleBoundsFixEnabled. Gdy ta opcja jest włączona, widoczne granice indeksu elementu są obliczane przed uruchomieniem animacji umieszczania wLazyListiLazyGrid. (I56150) - Naprawiono zużycie w pierwszym przebiegu w przypadku elementu Draggable. Dzięki temu, jeśli zdarzenie naciśnięcia zostanie wykorzystane podczas pierwszego przejścia, przeciąganie rozpocznie się natychmiast podczas głównego przejścia. Ta zmiana w działaniu jest ograniczona przez flagę funkcji
ComposeFoundationFlags.isDraggableInitialPassConsumptionFixEnabled(I6a77f, b/532946466)
Wersja 1.13.0-alpha01
12 sierpnia 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.13.0-alpha01 Wersja 1.13.0-alpha01 zawiera te zmiany.
Zmiany powodujące niezgodność
- W związku z ogłoszeniem w poprzedniej wersji
Modifier.onFocusedBoundsChangedzostało całkowicie usunięte. Użycie tego modyfikatora nie powoduje teraz żadnej operacji. Przejdź na używanie symboluFocusTargetModifierNode.getFocusedRect(), aby w razie potrzeby wysyłać zapytania o te informacje. (Ia39db, b/220030968)
Zmiany w interfejsie API
- Przekazywanie wartości
LazyLayoutCacheWindowiLazyGridPrefetchStrategyza pomocąLazyGridStatezostało wycofane na rzecz przekazywania wartościLazyLayoutCacheWindowdo funkcji typu „composable”. (I3f31e) - Usuwanie flagi
isSkipItemPlacementAnimationFixEnabled(I890f3, b/493183465) - Usuwanie flagi
isClearNestedScrollCoroutineScopeFixEnabled(Iedfd7, b/506963276) - Zmieniono flagę
isCacheWindowVisibleItemCountCheckEnablednaisCacheWindowLookaheadCheckEnabled(I2ea06) TextFieldStatezapisuje i przywraca teraz informacje o stylu tekstu.AnnotatedString.Annotation.Saverjest teraz publiczna, co umożliwia zapisywanie i przywracanie obiektówAnnotatedString.Annotation. (I8b533, b/135556699)- Dodaje okno pamięci podręcznej do układu leniwej siatki kaskadowej. Aby przywrócić wcześniejsze działanie wstępnego pobierania, ustaw wartość
isUsingCacheWindowInStaggeredGridsna „false”. (I1c70d) FlexBoxi powiązane z nim interfejsy API konfiguracji zostały przeniesione do wersji stabilnej i nie są już eksperymentalne. (I209ed, b/475491619)- Dodaliśmy konfigurację
maxItemsInEachLinedoFlexBox, aby umożliwić ograniczenie liczby elementów w wierszu, gdy włączone jest zawijanie. (I2744b, b/475491619) - Dodano adnotacje do pustych metod bazowych, które można zastąpić w Compose, za pomocą symbolu
@EmptySuper, aby wskazać, że zastępujące implementacje nie powinny wywoływać super. (Id407b) - Promowanie interfejsów API widoczności i animacji
WindowInsetsdo wersji stabilnej. (I37441, b/537329254) - Kliknięcia elementów, które można kliknąć, automatycznie odtwarzają teraz efekty dźwiękowe interakcji na urządzeniach z Androidem. (Ia72f8)
- Okres buforowania ponownie wypełnia okres wyprzedzający, jeśli liczba widocznych elementów zmieni się bez przewijania. Ustaw flagę
isCacheWindowVisibleItemCountCheckEnablednafalse, aby wyłączyć to sprawdzanie i przywrócić stare zachowanie. (I67b5a) - Zaktualizowaliśmy właściwość
NestedScrollDispatcher.coroutineScope, aby bezpiecznie zwracać anulowaną wartośćCoroutineScope, gdy jest ona niepowiązana lub odłączona. (I9b112, b/535290281) - Nazwa
enableNonScrollCachingzostała zmieniona naisNonScrollCachingEnabled(I7a54b, b/535290282) - Dodano @
CheckResultdo funkcjiSemanticsNodeInteraction.isDisplayed() iisNotDisplayed(), aby zapewnić potwierdzenie ich wartości zwracanych, co zapobiega cichym błędom testów, gdy deweloperzy omyłkowo używają ich zamiast interfejsów API do potwierdzania. (I1b447, b/508178494) - Ustaw stabilną wersję
LazyLayoutCacheWindow(I2cda3) - Dodano parametr
bringIntoViewSpecdla komponentów Horizontal i Vertical Pager, aby umożliwić zastąpienie domyślnej implementacji komponentu Pager. (Icdcbf, b/505052292) - Naprawia błąd w wykrywaniu braku aktywności w harmonogramie wstępnego pobierania leniwego układu. Wcześniej harmonogram mógł błędnie uznać, że jest bezczynny, gdy klatka jest znacznie opóźniona, co mogło powodować zacinanie się podczas przewijania. Aby przywrócić stare działanie, ustaw flagę
isLazyPrefetchSchedulerIdleTimeFixEnabledna wartość false. (If0594, b/458024295) - Wprowadzenie
coroutineScopeOrNull()wNestedScrollDispatcher, alternatywnego interfejsu API do uzyskiwania dostępu do zakresu nadrzędnej współprogramu wysyłającego. (I18c0f) - Rozwiązanie problemu z przesuwaniem się tekstu w poziomie podczas przewijania w Compose. Można je wyłączyć za pomocą
AndroidComposeFoundationFlags.isOverscrollPixelRoundingEnabled. (Ica169, b/532079110, b/532081619) - Wprowadź flagę
isDraggableZeroDeltaConsumptionEnabled, aby kontrolować wdrażanie tej poprawki w komponencie Draggable. Zdarzenia delta o wartości 0 są teraz przetwarzane prawidłowo. (I50eb1, b/524163413) - Wybór tekstu jest teraz bezpiecznie ograniczony do długości tekstu podczas jednoczesnych aktualizacji tekstu, aby zapobiec awariom. (I64fd7)
androidx.benchmarkma terazminSdkna poziomie 24. (Ic2a85)- Linki lepiej obsługują kliknięcia, gdy obejmują wiele wierszy. Aby to umożliwić, docelowy element dotykowy został zastąpiony wartością 0. Jeśli nie jest to pożądane zachowanie, użyj flagi
ComposeFoundationFlags.isLinkMinimumTouchTargetSizeZeroEnabled, aby je zastąpić. (Ide41b, b/361106057) - Rozwiązaliśmy problem z wyjątkiem o małej liczbie wystąpień podczas zapisywania w obiekcie stanu modyfikowalnego. (I48194, b/503110696)
- Udostępnij obiekt observable
keyswSaveableStateHolder, aby uprościć nawigację i zarządzanie stanem listy wstecznej oraz wyeliminować potrzebę zewnętrznego śledzeniakey. Dostęp przezholder.keys; usuwanie za pomocąremoveState. (I9bbbb, b/398887924) - Usuwa eksperymentalną, nieaktualną funkcję pomocniczą
IndirectPointerEvent. (I05dee, b/499336763, b/501098299, b/501098376, b/513249467) - Zapewnij stabilność
LocalBringIntoViewSpecna Androidzie. (Ibcb97) - Dodaj flagę
isMultiLaneCacheWindowEnabled(I3d997) - Created a new
SelectionStateAPI, to be passed toSelectionContainerfor observing selected text and programmatically updating selection." into androidx-main am: 929401883c am: c02871cac4 (I15bd4) - Dodaliśmy
LocalTextFieldContentObserverRegistrationExecutor, które umożliwia delegowanie niejawnej rejestracjiContentObserver, która odbywa się wTextField, do wątku w tle. (Ib4fa6, b/505287297, b/509842675) - Zmieniono nazwę
TextObfuscationMode.DefaultnaSystem.TextObfuscationMode.RevealLastTypeddziała teraz jako bezwzględne zastąpienie i zawsze ujawnia ostatni wpisany znak. Domyślny argument funkcjiBasicSecureTextFieldzostał zaktualizowany do wartości System. (If26d3, b/425658491, b/453647378)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że szybkie przewijanie w Compose zagnieżdżonym w kontenerze przewijania Androida (np.
ScrollViewlubCoordinatorLayout) czasami obliczało nieprawidłową prędkość. (I0f017) - Rozwiązaliśmy problem w
FlexBox, w którym przechodzenie między elementami nie odpowiadało ich kolejności wizualnej w przypadku używania odwróconych kierunków, odwróconego zawijania lub niestandardowej kolejności elementów. (I4cc61, b/521609263) - Rozwiązaliśmy problem, który powodował, że standardowe modyfikatory układu, takie jak
Modifier.fillMaxWidth()iModifier.fillMaxHeight(), nie miały wpływu na elementy wFlexBox, chyba że określono wyraźny współczynnik powiększenia flex. (Ib0ac3, b/515657458) - Zoptymalizowana inicjalizacja na poziomie pliku właściwości klasy wartości najwyższego poziomu
foundationza pomocą dynamicznych funkcji pobierających. (I570d7) - Zoptymalizowane inicjowanie obiektów towarzyszących
foundation-layoutklas wartości (WindowInsetsSidesitp.) za pomocą dynamicznych funkcji pobierających. (I01c2b) - Rozwiązaliśmy problem, który powodował, że po przełączeniu języka w aplikacji, gdy ponowne uruchamianie aktywności było wyłączone za pomocą
android:configChanges, w menu kontekstowym wyboru tekstu w komponowaniu wyświetlały się nieaktualne ciągi znaków. (Ic910b, b/515156417) - Zoptymalizowano inicjowanie obiektu towarzyszącego klas wartości
compose:foundation(KeyModifiers,MarqueeAnimationMode,Sourceitp.) za pomocą dynamicznych funkcji pobierających. (I78455) - Poprawia animacje stylu, aby podczas przechodzenia do i z wartości, która jest ustawiana w animacji tylko warunkowo, była ona traktowana jako animacja do i z wartości domyślnej właściwości. (I8e41d, b/527140078)
- Rozwiązaliśmy problem w siatce, w którym automatycznie umieszczane elementy o rozpiętości większej niż dostępne ścieżki jawne w ograniczonym kierunku wychodziły poza granice siatki po zastosowaniu odstępów. (I00ce0, b/506570362)
- Czyszczenie informacji o interfejsie API (Ia8066)
- Naprawiliśmy błąd w
BasicTextField, który powodował, że na żądanie nie przekazywał on prawidłowo aktualizacji wyodrębnionego tekstu do edytora IME. (I746fa, b/203549026, b/492363474)
Wersja 1.12
Wersja 1.12.1
9 września 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.12.1 Wersja 1.12.1 zawiera te zmiany.
Wersja 1.12.0
12 sierpnia 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.12.0 Wersja 1.12.0 zawiera te zmiany.
Ważne zmiany od wersji 1.11.0:
Wersja 1.12.0-rc01
29 lipca 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.12.0-rc01 Wersja 1.12.0-rc01 zawiera te zmiany.
Wersja 1.12.0-beta02
1 lipca 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.12.0-beta02 Wersja 1.12.0-beta02 zawiera te zmiany.
Wersja 1.12.0-beta01
17 czerwca 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.12.0-beta01 Wersja 1.12.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Zmiana nazwy funkcji testowej do wywoływania zdarzeń wskaźnika pośredniego (I3ee35, b/509618414)
- Zmieniono nazwę
TextObfuscationMode.DefaultnaSystem.TextObfuscationMode.RevealLastTypeddziała teraz jako bezwzględne zastąpienie i zawsze ujawnia ostatni wpisany znak. Domyślny argument funkcjiBasicSecureTextFieldzostał zaktualizowany do wartościSystem. (If26d3, b/425658491, b/453647378) - Zaktualizowaliśmy funkcje
getSpanStylesigetParagraphStyles, aby przyjmowałyTextRangezamiast oddzielnych indeksów początkowych i końcowych. Złagodzono sprawdzanie granic w przypadku zapytań o style, aby nie zgłaszać już wyjątków, i zapobieżono awariom podczas wysyłania zapytań o właściwości unieważnionychTrackedRanges. (I62a9a, b/514404697) - Dodano funkcję nazwanych obszarów do układu siatki. Deweloperzy mogą teraz definiować obszary semantyczne za pomocą
GridConfigurationScope.area()i umieszczać w nich elementy za pomocą nowego przeciążeniaModifier.gridItem(area), oddzielając intencje semantyczne od współrzędnych fizycznych. (Id9303, b/487503921) - Dodano operatory then i funkcje fabryczne combination dla
FlexBoxConfigiFlexConfig, aby umożliwić scalanie i zastępowanie konfiguracji układu. (Icfdd8, b/475491619) - Dodano funkcje
RevealState.drag(),SwipeToRevealDragScopei udostępniono niestandardową funkcjęflingBehaviorwSwipeToReveal, aby umożliwić programowe sterowanie gestami przesuwania, przesunięciami i animacjami zatrzymania. (Ibfe56, b/484185090)
Poprawki błędów
- Rozwiązano problem polegający na tym, że pasek narzędzi do zaznaczania tekstu mógł nie aktualizować swojej pozycji lub elementów. (Ib2566)
Wkład zewnętrzny
- W
SelectionContainerzezwól na rozpoczęcie zaznaczania (za pomocą myszy) w pustych obszarach między elementamiText, które można zaznaczyć. (I93f69, b/502151445) - Udostępnienie interfejsu
AndroidClipboardna potrzeby testowania, aby umożliwić symulowanie implementacji schowka (Ie4d72, b/512924975) - Dodaj zgodność wsteczną dla
TextAttributewariantówcommitText()isetComposingText(). W przypadku SDK>=37 usługi ułatwień dostępu będą mogły ogłaszać, czy wybrano tekst zastępczy sugestii. W przypadku SDK<37 nie wpłynie to na odczytywanie informacji zwrotnych (czyli na dotychczasowe działanie). (I90e3d, b/439879822)
Wersja 1.12.0-alpha03
19 maja 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.12.0-alpha03 Wersja 1.12.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- W eksperymentalnym interfejsie Style API dodano obsługę tworzenia niestandardowych typów stylów, które mogą mieć niestandardowe zakresy stylów. Umożliwia to tworzenie podzbiorów właściwości, które można ustawić za pomocą stylu (np. całkowite usunięcie warstwy graficznej lub właściwości tekstu), a także rozszerzanie zakresu niezależnie od innych stylów (np. obsługiwanie tylko składni
playing { }w komponowalnymMediaPlayer). Ta zmiana powoduje naruszenie zgodności binarnej i zgodności kodu źródłowego. Główną zmianą, która powoduje utratę zgodności ze źródłem, jest przeniesienie funkcji pomocniczych wStyleScopedo funkcji rozszerzających (np.fun contentProperty(all: Dp)jest teraz funkcją rozszerzającą). Aby kod wywołujący te metody został prawidłowo skompilowany, wystarczy zaimportować wymagane funkcje rozszerzenia lub wszystkie symbole z androidx.compose.foundation.styles. (I1ef27, b/493676648). - Implementacje
ScrollIndicatorStateprawidłowo zwracają teraz przesunięcie przewijania od początku wizualnego w przypadku układów odwróconych, co zapewnia prawidłowe wyświetlanie wskaźników. (Ia3fae, b/503604996) - Dodano flagę
isClearNestedScrollCoroutineScopeFixEnabled, aby kontrolować poprawkę. (Ibd394, b/505343254)
Wkład zewnętrzny
- Włączono automatyczne przewijanie podczas przeciągania zaznaczonego tekstu poza obszar widoczny w
SelectionContainer. (Ibcb08, b/424433794)
Wersja 1.12.0-alpha02
6 maja 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.12.0-alpha02 Wersja 1.12.0-alpha02 zawiera te zmiany.
Wersja 1.12.0-alpha01
22 kwietnia 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.12.0-alpha01 Wersja 1.12.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaliśmy nową flagę
isBasicTextFieldHeighInLinesOptimizationEnabled, która umożliwia optymalizację obliczania wysokości pola tekstowego w liczbie minimalnych i maksymalnych wierszy. Powinna być domyślnie włączona. Jeśli zauważysz regresję w układzie pola tekstowego i wyłączenie tej flagi rozwiąże problem, zgłoś błąd zespołowi Compose, aby go zbadał. (Idffae, b/486871837, b/487546327) - Poprawiono zaznaczanie
textfieldpodczas edytowania tekstu za pomocą gestu. (I6fd98, b/490509264) - Dodaliśmy obsługę właściwości
colorFilterdo znacznikaStyleScopew bibliotece Compose Foundation. (I553a0) - Dodano:
textMotiondo listyStyleScope. (Id8523, b/482301609) - Dodaje kolejne
KeyboardTypeopcje, aby uzupełnić zestaw obsługiwanych opcji klawiatury na Androidzie, w tym datę, godzinę, datę i godzinę, liczbę dziesiętną ze znakiem i inne. (I3713e, b/202353328) - Usuwanie flagi
isNestedDraggablesTouchConflictFixEnabled(I79e52, b/485966180) - Usuwanie flagi
isDelayPressesUsingGestureConsumptionEnabled(I533dd, b/485966702) - Usuń flagę
isBringIntoViewRltBouncyBehaviorInPagerFixEnabled, ponieważ została ona udostępniona w stabilnej wersji. (I73fb2, b/485967682) - Usuń flagę
isCacheWindowRefillFixEnabled, ponieważ została ona udostępniona w stabilnej wersji. (Ic7505, b/485967875) - Usuwa
ComposeFoundationFlags#isNonSuspendingPointerInputInCombinedClickableEnabled(I1f76c, b/485966320, b/477836055) - Dodano przeciążenia funkcji
contentPaddingiexternalPaddingwStyleScope, które akceptująPaddingValues. (I3a6ce, b/493154098) - Zmieniono
VelocityTracker, aby korzystać z implementacji dostarczonej przez Android Framework (można ją skonfigurować za pomocąAndroidComposeUiFlags.isFrameworkVelocityTrackerEnabled). (Ibc7e2, b/359962905)
Poprawki błędów
- Zmieniliśmy sposób śledzenia animacji i właściwości, aby uniknąć nakładania się animacji dla tej samej właściwości. (I4921f)
- Naprawiliśmy błąd, który powodował awarię menu kontekstowego, gdy
TextField(lub tekst, który można wybrać) znajdował się w oknie. (I21461, b/441759435) - Zaktualizowano Compose
compileSdkdo interfejsu API 37. Oznacza to, że podczas korzystania z Compose wymagana jest minimalna wersja AGP 9.2.0. (Id45cd, b/413674743) - Rozwiązaliśmy problem w siatce, który powodował, że fokus klawiatury i przechodzenie w celu ułatwień dostępu odbywały się zgodnie z kolejnością kompozycji elementu, a nie z kolejnością wizualną w kształcie litery Z. (I122a8, b/494096503)
- Naprawiliśmy błąd, który powodował nieprawidłowe ukrywanie paska narzędzi do zaznaczania tekstu, gdy uchwyty początkowy i końcowy były wyrównane w poziomie (np. podczas zaznaczania tekstu w wielu wierszach kończących się pustym wierszem). (I391d2, b/497724722)
- Rozwiązaliśmy problem w
FlexBox, który powodował, że elementy nie zmniejszały się prawidłowo po przekroczeniu granic kontenera. (Ia741d, b/480797591) - Poprawka błędu polegającego na nieprawidłowym unieważnianiu
foregroundColor. (I74abe, b/493245886) - Rozwiązuje problem z nieaktualnymi wstawkami w przypadku odłączenia i ponownego dołączenia detektora wstawek w Compose. (I1e905, b/491346046, b/486084139)
- Gdy użytkownik przesunie kursor poza obszar przewijania, kursor zostanie teraz przewinięty do widocznego obszaru. (If694c, b/266094055)
Wersja 1.11
Wersja 1.11.4
1 lipca 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.11.4 Wersja 1.11.4 zawiera te zmiany.
Wersja 1.11.3
17 czerwca 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.11.3 Wersja 1.11.3 zawiera te zmiany.
Wersja 1.11.2
19 maja 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.11.2 Wersja 1.11.2 zawiera te zmiany.
Wersja 1.11.1
6 maja 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.11.1 Wersja 1.11.1 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem w
FlexBox, który powodował, że elementy nie zmniejszały się prawidłowo po przekroczeniu granic kontenera. (Ia741d, b/480797591)
Wersja 1.11.0
22 kwietnia 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.11.0 Wersja 1.11.0 zawiera te zmiany.
Wersja 1.11.0-rc01
8 kwietnia 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.11.0-rc01 Wersja 1.11.0-rc01 zawiera te zmiany.
Zmiany w interfejsie API
- Poprawiono zaznaczanie
textfieldpodczas edytowania tekstu za pomocą gestu. (I2ba33, b/490509264)
Wersja 1.11.0-beta02
25 marca 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.11.0-beta02 Wersja 1.11.0-beta02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano flagę
isReverseLayoutNestedScrollConnectionInPagerFixEnabled, aby kontrolować wdrażanie tej poprawki. (I07404, b/399800244) - Wprowadziliśmy zasadę
isSkipItemPlacementAnimationFixEnabled, aby kontrolować wdrażanie tej funkcji. (Id665d, b/455884472, b/352584409, b/410487464, b/372509998) - Dodano:
MinMax(min: Dp, max: Fr)do listyGridTrackSize. Umożliwia to programistom wyraźne określenie minimalnych granic elastycznej ścieżki. UżycieMinMax(0.dp, 1.fr)skutecznie omija zapytania dotyczące pomiarów wewnętrznych, dzięki czemu można bezpiecznie umieszczać komponentySubcomposeLayout, takie jakLazyColumniLazyRow, w elastycznych ścieżkach siatki bez powodowania awarii. (Ieb8c2, b/483822148)
Poprawki błędów
- Naprawiliśmy błąd w
FlexBox, który powodował nieprawidłowe zmniejszanie się elementów po osiągnięciu minimalnego rozmiaru wewnętrznego. Elementy prawidłowo udostępniają teraz niewykorzystane miejsce na zmniejszenie rozmiaru elementom równorzędnym. DodatkowoFlexBoxnie będzie już sztucznie ograniczać elementów na osi głównej. Jeśli elementy nie będą mogły się wystarczająco zmniejszyć, aby zmieścić się w kontenerze, będą teraz wizualnie wykraczać poza oś główną. Jeśli chcesz przyciąć obraz, użyj właściwościModifier.clipToBounds(). (Ief751, b/480797591) - Uniemożliwianie funkcji keep around dostępu do nielegalnych indeksów. (I19121, b/485626636)
- Rozwiązaliśmy problem w siatce, który polegał na tym, że przerwy między niejawnie utworzonymi wierszami lub kolumnami były pomijane w obliczeniach całkowitego rozmiaru kontenera, co powodowało przycinanie treści. (Ib9df8, b/480372415)
ClipboardiClipboardManagerwysyłają teraz żądanie do usługi systemowej przy pierwszym wywołaniu metody (If0016, b/487947860).- Rozwiązaliśmy problem w
RowzArrangement.spacedByw językach pisanych od prawej do lewej, który powodował, że elementy, które nie mieściły się w widoku, miały nieprawidłowy układ i odstępy. (I44e53, b/476006478)
Wersja 1.11.0-beta01
11 marca 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.11.0-beta01 Wersja 1.11.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Zoptymalizowano wewnętrzne obliczenia minimalnego rozmiaru w przypadku
BasicTextField. W razie potrzeby możesz je wyłączyć w sekcjiComposeFoundationFlags#isBasicTextFieldMinSizeOptimizationEnabled. (I70ade) - Dodano
rememberUpdatedStyleState, który jest częścią eksperymentalnego interfejsu Style API.rememberUpdatednależy używać podczas tworzenia instancjiStyleState, gdy parametry komponentu kompozycyjnego (np.enabled) są kopiowane do stanu stylu (Idf7ff, b/485510967). - Zmienia nazwy właściwości
PointerInputChangeiHistoricalChange, aby pobierać wartości skalowania i przesuwania. (I989a8, b/481333653) - Dodaje więcej funkcji do interfejsów API testowania trackpada, aby symulować różne krzywe i dane wejściowe dla gestu na trackpadzie. (I290fb, b/473603145, b/479213358)
- Dzieli nowy identyfikator
PointerEventType.PannaPointerEventType.PanStart,PointerEventType.PanMoveiPointerEventType.PanEnd. PodobniePointerEventType.Scalejest podzielona naPointerEventType.ScaleStart,PointerEventType.ScaleChangeiPointerEventType.ScaleEnd. Ten podział umożliwia przekazywanie dodatkowych informacji o początku i końcu gestów przesuwania i skalowania interpretowanych przez platformę. Dzięki temu moduły obsługi danych wejściowych wskaźnika w Compose mogą używać tych informacji do prawidłowego wykrywania zdarzeń, a zwłaszcza do rozpoznawania, kiedy przesuwanie lub skalowanie się kończy. (I4daf6, b/479285849, b/481333653) - Dodano
constraintsdoGridConfigurationScope, aby umożliwić definiowanie ścieżek siatki na podstawie dostępnego rozmiaru. (I80a41, b/481205205, b/481205205) - Język DSL
FlexBoxużywa teraz funkcji (np. grow(1f)) zamiast właściwości (np. grow = 1f) do konfiguracji wFlexBoxConfigi Modifier.flex. (I8dbae, b/475491619)
Poprawki błędów
- Naprawiliśmy błąd, który powodował, że znak
OutputTransformationbył wstawiany dwukrotnie w przypadku niektórych edytorów IME. (I9fdc0) - Dodaje obsługę przewijania z szybkim przesunięciem w przypadku gestów przewijania na trackpadzie (I55f8a, b/479285849).
- Dodano testy porównawcze dla eksperymentalnego interfejsu Style API (I67437)
Wkład zewnętrzny
- Dodaj właściwość
InputTextSuggestionState, aby ułatwić identyfikowanie różnych stanów, w jakich może znajdować się dane wejściowe transliteracji, gdy dostępne są sugestie zastąpienia tekstu. Wprowadza też znakTextCompositionRange, który śledzi zakres bieżącego tekstu transliteracji; wartość null oznacza brak kompozycji. (I7a67f, b/476472318) - Dodano nowe przeciążenie do funkcji
BasicTooltipBox, które umożliwia konfigurowanie parametrupropagateMinConstraints, podobnie jak parametr o tej samej nazwie w usłudze Box. Pozwala to przekazywać minimalne ograniczenia bezpośrednio do elementów podrzędnych elementuBasicTooltipBoxbez ich łagodzenia przez elementBasicTooltipBox. Dziękujemy Stevenowi Schoenowi! (Ib145f, b/467532639, b/301605744)
Wersja 1.11.0-alpha06
25 lutego 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.11.0-alpha06 Wersja 1.11.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- Wprowadza eksperymentalny interfejs API stylu, który umożliwia spójny sposób włączania dostosowywania funkcji kompozycyjnych. Ten interfejs API jest w fazie rozwoju i przed osiągnięciem stabilności może ulec znacznym zmianom. Szczegółowe informacje o korzystaniu z tego interfejsu API znajdziesz w dołączonej dokumentacji. (I7fed2, b/455788242)
Poprawki błędów
Modifier.combinedClickablejest przepisywany tak, aby nie używać wstrzymania wskaźnika jako optymalizacji. Ta funkcja jest włączona przez flagę, którą możesz wyłączyć, jeśli w nowej implementacji wystąpi błąd –ComposeFoundationFlags.isNonSuspendingPointerInputInCombinedClickableEnabled.(Iea684)
Znane problemy
Modifier.combinedClickableZmiana powoduje regresję w przypadku długiego kliknięcia, co może sprawić, że na niektórych urządzeniach głębokie naciśnięcia będą wywoływać powtarzające się długie kliknięcia. Naprawimy to w kolejnej wersji. Do tego czasu możesz ustawićComposeFoundationFlags.isNonSuspendingPointerInputInCombinedClickableEnabled=false, aby uniknąć tego problemu.
Wersja 1.11.0-alpha05
11 lutego 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.11.0-alpha05 Wersja 1.11.0-alpha05 zawiera te zmiany.
Zmiany w interfejsie API
- Wprowadzono
isNestedDraggablesTouchConflictFixEnabled, aby rozwiązywać konflikty zagnieżdżonych elementów, które można przeciągać. Będziemy bardziej preferować przeciąganie w pionie niż w poziomie, ponieważ z punktu widzenia UX użytkownik ma większą swobodę i niepewność, gdy wykonuje gest w pionie, a nie w poziomie. (I273c7, b/252334353, b/269627294, b/363198504, b/442390269, b/419580124) - Dodaje obsługę gestów na trackpadzie i konwersję zdarzeń wejściowych z trackpada na mysz. Po tej zmianie zdarzenia wskaźnika trackpada, które sterują kursorem, np. na tabletach lub laptopach, będą zwykle zgłaszane jako wskaźniki myszy. Gesty przesuwania i skalowania będą też raportowane z dodatkowymi informacjami dostępnymi w zmianach zdarzenia wskaźnika. Nowe wartości
PointerEventType.PaniPointerEventType.Scalebędą wskazywać, że te wartości zostaną ustawione (Id071a, b/315527861, b/459831570). - Przedstaw
isDelayPressesUsingGestureConsumptionEnabled. Gdy ta flaga jest włączona, kontenery z gestem przeciągania będą opóźniać naciśnięcie. Obejmuje to zmianę działania kontenerów opartych naModifier.draggable, które wcześniej nie opóźniały naciśnięcia. (I53f24, b/203141462) - Usunięto flagę
isDetectTapGesturesImmediateCoroutineDispatchEnabledi wycofano flagęDetectTapGesturesEnableNewDispatchingBehavior(I9bba3)
Poprawki błędów
- Naprawiono
IndexOutOfBoundsExceptionwBasicTextFieldpodczas używania ``OutputTransformation i usuwania tekstu. (I20ee1) - Zmieniono działanie
GridTrackSize.Auto. Teraz może śledzić obiekty o rozmiarach odmin-contentdomax-content. (Ifa22e, b/477748472)
Wkład zewnętrzny
- Dodanie obsługi klawiszy ruchu
NumPad(I1ff12)
Wersja 1.11.0-alpha04
28 stycznia 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.11.0-alpha04 Wersja 1.11.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Naprawiliśmy błąd, który powodował, że w niektórych scenariuszach z wieloma kotwicami o tym samym przesunięciu
AnchoredDraggableStatewtargetValuebyło nieprawidłowe. Gdy elementtargetValueznajdował się w punkcie zakotwiczenia o takim samym przesunięciu jak inny punkt zakotwiczenia, nieprawidłowo zwracał ostatni z tych punktów. Teraz zwraca wartośćcurrentValue, gdy jest ustawiony na przesunięciecurrentValue. (I66a7a, b/476365336) - Wprowadzono
FlexBox, konfigurowalny system układu, który jest nadzbioremRow,Column,FlowRowiFlowColumn. Obsługuje funkcje takie jak flex-grow, flex-shrink, niestandardowe zawijanie, zmiana kierunku i szczegółowa kontrola wyrównania za pomocąFlexBoxConfigiModifier.flex. (I44780) - Wprowadzono
Grid, nowy komponent układu 2D, który nie jest ładowany z opóźnieniem i jest inspirowany siatką CSS. Ta początkowa wersja umożliwia definiowanie wyraźnych struktur siatki o różnych rozmiarach ścieżek, w tymFixed,Percentage,Flexi opcji opartych na treści za pomocą blokuconfig. Podstawowa logika układu obsługuje jawne umieszczanie elementów w siatce za pomocą właściwościModifier.gridItem(). Wszystkie interfejsy API związane z Gridem mają obecnie charakter eksperymentalny i wymagają wyrażenia zgody za pomocą@OptIn(ExperimentalGridApi::class). Chętnie poznamy Twoją opinię o tym nowym układzie. (I04907, b/462550392)
Wersja 1.11.0-alpha03
14 stycznia 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.11.0-alpha03 Wersja 1.11.0-alpha03 zawiera te zmiany.
Poprawki błędów
- Naprawianie wycieku pamięci w
LazyStaggeredGrid, gdy jest używany wLookaheadScopeI286ad
Wersja 1.11.0-alpha02
17 grudnia 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.11.0-alpha02 Wersja 1.11.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Interfejsy API
MultiModalInjectionScopesą już stabilne. Obejmuje to elementyperformKeyInputiperformRotaryScrollInputoraz powiązane z nimi interfejsy API klawiszy i pokrętła. Adnotacja eksperymentalna została usunięta. (Ie8bbc, b/261561237) - Usunięto flagę
isNonSuspendingPointerInputInClickableEnabled. (I6a168, b/455591971)
Wersja 1.11.0-alpha01
3 grudnia 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.11.0-alpha01 Wersja 1.11.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Wprowadzono
Modifier.scrollIndicator, aby umożliwić dodawanie niestandardowych wskaźników przewijania do kontenerów z możliwością przewijania. InterfejsScrollIndicatorFactoryumożliwia tworzenie wskaźników przewijania przez określanie ich wyglądu i zachowania. (I89322) - Kontakt
ComposeFoundationFlags.isTextFieldDpadNavigationEnabledzostał usunięty. Nowe działanie jest teraz włączone przez cały czas. (I3f034) - Wprowadź
isCacheWindowRefillFixEnabled, aby kontrolować wdrażanie poprawki dotyczącej uzupełniania okna pamięci podręcznej. (I4e52b, b/454439658) - Kontakt
ComposeFoundationFlags.isKeepInViewFocusObservationChangeEnabledzostał usunięty. Nowe działanie jest teraz włączone przez cały czas. (I7cbd4) Modifier.onFirstVisible()jest wycofany, ponieważ jego działanie jest mylące i nie zawsze jest zgodne z umową, którą sugeruje nazwa. Jeśli np. zostanie dodane do elementuLazyColumn, to wywołanie zwrotne będzie wywoływane za każdym razem, gdy ten element stanie się widoczny po przewinięciu. Nie jest to zgodne z oczekiwaniami użytkowników modyfikatora o tej nazwie. Zamiast tego zalecamy używanieModifier.onVisibilityChanged()i ręczne śledzenie, czy układ był już wcześniej widoczny, na podstawie wymagań konkretnego przypadku użycia. (Ia7095, b/447601783)- Wprowadzono
MeasuredSizeAwareModifierNode, które jest potrzebne, gdy chcesz, abyonRemeasured()oddzwonił. Jeśli nie potrzebujesz innych wywołań zwrotnych, używaj bezpośrednio tego interfejsu zamiast bardziej ogólnego interfejsuLayoutAwareModifierNode. (If6fb0) - Wprowadza
visibleModifier, którego można użyć, aby pominąć rysowanie treści elementu Composable bez wpływu na zajmowane przez niego miejsce. (Ia6871, b/158837937)
Wersja 1.10
Wersja 1.10.6
25 marca 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.10.6 Wersja 1.10.6 zawiera te zmiany.
Poprawki błędów
ComposeFoundationFlags.isPausableCompositionInPrefetchEnabledjest domyślnie wyłączona ze względu na potencjalne problemy ze stabilnością. (I73960, b/482223006, b/488433633)
Wersja 1.10.5
11 marca 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.10.5 Wersja 1.10.5 zawiera te zmiany.
Poprawki błędów
- Naprawiliśmy
IndexOutOfBoundsExceptionwBasicTextFieldpodczas korzystania zOutputTransformationi usuwania tekstu. (I20ee1)
Wersja 1.10.4
25 lutego 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.10.4 Wersja 1.10.4 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiliśmy błąd regresji, który powodował, że użycie modyfikatora wyrównania z innego zakresu (np.
ColumnScope.alignwRow) skutkowało nieprawidłowym pozycjonowaniem. (6888f2b, b/477639546)
Wersja 1.10.3
11 lutego 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.10.3 Wersja 1.10.3 zawiera te zmiany.
Wersja 1.10.2
28 stycznia 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.10.2 Wersja 1.10.2 zawiera te zmiany.
Poprawki błędów
- Naprawiliśmy błąd powodujący awarię podczas powrotu z ekranu z aktywnym zaznaczeniem tekstu. (I9f540, b/444482508)
Wersja 1.10.1
14 stycznia 2026 r.
Publikacja androidx.compose.foundation:foundation-*:1.10.1 Wersja 1.10.1 zawiera te zmiany.
Poprawki błędów
- Naprawiono błąd powodujący awarię, gdy zaznaczenie tekstu rozciąga się od jednego elementu Text do drugiego, które są wyrównane poziomo. I351311, b/439758956
Wersja 1.10.0
3 grudnia 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.10.0 Wersja 1.10.0 zawiera te zmiany.
Wersja 1.10.0-rc01
19 listopada 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.10.0-rc01 Wersja 1.10.0-rc01 zawiera te zmiany.
Poprawki błędów
- Wyłączona flaga
isCacheWindowForPagerEnabled. (Iffdec, b/458193632)
Wersja 1.10.0-beta02
5 listopada 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.10.0-beta02 Wersja 1.10.0-beta02 zawiera te zmiany.
Wersja 1.10.0-beta01
22 października 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.10.0-beta01 Wersja 1.10.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Aktualizuje wszystkie interfejsy API dotyku pośredniego, aby używać nazwy interfejsy API wskaźnika pośredniego, co jest zgodne z interfejsami API danych wejściowych wskaźnika. (I238ce, b/451607214)
- Dodano adnotację
PagerState.currentPageOffsetFractionz tekstem@FrequentlyChangingValue. (Idfaab)
Poprawki błędów
- Poprawia zachowanie przewijania w przypadku układów od prawej do lewej. (Ib8be3)
Wersja 1.10.0-alpha05
8 października 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.10.0-alpha05 Wersja 1.10.0-alpha05 zawiera te zmiany.
Zmiany w interfejsie API
PaddingValuesobsługują teraz dodawanie i odejmowanie, co upraszcza typowe obliczenia dotyczące dopełnienia. (I327e1, b/244468479)
Poprawki błędów
- Funkcja
ComposeFoundationFlags.isPausableCompositionInPrefetchEnabledjest domyślnie włączona. Jest to optymalizacja wydajności, która pozwala nam lepiej rozłożyć pracę, którą musimy wykonać podczas wstępnego pobierania. Na przykład możemy wykonać kompozycję tylko części następnego elementuLazyColumnw jednej klatce interfejsu, a następnie kontynuować komponowanie reszty w kolejnych klatkach. (I4c7fe)
Wersja 1.10.0-alpha04
24 września 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.10.0-alpha04 Wersja 1.10.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano implementację usługi
ScrollIndicatorStatedlaPagerState. (I113b7) - Dodano implementację usługi
ScrollIndicatorStatedlaLazyStaggeredGridState. (I1028e) - Dodano implementację usługi
ScrollIndicatorStatedlaLazyGridState. (I9e50c) - Dodano implementację usługi
ScrollIndicatorStatedlaLazyListState. (I5ee29) - Dodano implementację usługi
ScrollIndicatorStatedlaScrollState. (I27f66) - Wprowadzenie usługi
scrollIndicatorStatew interfejsieScrollableState(Idca93) - Flaga
isWindowInsetsModifierLocalNodeImplementationEnabledzostała usunięta (I15e8f, b/440964232) - Udostępnij modyfikator
scrollableArea(), którego można użyć, aby umożliwić przewijanie komponentu z zachowaniem przycinania treści do jego granic i automatycznym obsługiwaniem kierunku przewijania treści na podstawie orientacji, kierunku pisania od prawej do lewej i flagireverseScrolling. (I9471b, b/316559454)
Wersja 1.10.0-alpha03
10 września 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.10.0-alpha03 Wersja 1.10.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Usuwa
ComposeFoundationFlags.isNonComposedClickableEnabled(I0dfc0, b/406228525) - Przeniesienie funkcji fabrycznych do tworzenia instancji
FillableDatado obiektu towarzyszącego. Zamiast wywoływaćFillableData(value), użyj nowych metod fabrycznych:FillableData.createFrom(value). (I2e200, b/441719650) - Wprowadzamy nowy węzeł modyfikatora
BeyondBoundsLayoutModifierNode, który umożliwia wyszukiwanie poza granicami układu. (I39be1, b/416133658) - Oznaczono
ScrollState.valuejako usługę@FrequentlyChangingValue. (I4723d) - Wprowadzono
LazyLayoutKeyIndexMapi fabrykę domyślnej implementacji. (I4fd0c, b/415038029)
Poprawki błędów
- Kolumna i wiersz prawidłowo przekazują teraz rzeczywisty rozmiar elementu do funkcji
Modifier.align, co rozwiązuje problem, w którym niestandardowa implementacja funkcjiModifier.alignotrzymywała nieprawidłową wartość 0. (I8194f, b/439716351)
Wersja 1.10.0-alpha02
27 sierpnia 2025 roku
Publikacja androidx.compose.foundation:foundation-*:1.10.0-alpha02 Wersja 1.10.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Usunięto flagę
isFlingContinuationAtBoundsEnabled. (I6b84f) - Usunięto flagę
isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled. (I62380) - Usunięto flagę
isOnScrollChangedCallbackEnabled. (I667dc) - Usunięto flagę
isAutomaticNestedPrefetchEnabled. (I4f416) - Usunięto flagę
DragGesturePickUpEnabled. (Ib8500) - Wprowadzenie interfejsu API
ScrollIndicatorStatedo reprezentowania stanu paska przewijania (I5e229)
Poprawki błędów
- Naprawiliśmy błąd, który powodował, że użycie znaku
Modifier.anchoredDraggablenie wywoływało znakuconfirmValueChange. (Iff7cc)
Wersja 1.10.0-alpha01
13 sierpnia 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.10.0-alpha01 Wersja 1.10.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zaktualizuj strategię wstępnego pobierania Pager, aby używać okna pamięci podręcznej zamiast domyślnego 1 elementu w kierunku przewijania. W komponencie Pager wstępne pobieranie jest teraz domyślnie włączone i będzie się odbywać na podstawie rozmiaru okna o wartości 1 obszaru widocznego. Oznacza to, że będziemy próbować wypełnić 1 cały obszar widoczny wstępnie pobranymi elementami. Elementy będą też dłużej przechowywane. (I4d45e, b/292136289)
- Dodaliśmy flagę
ComposeFoundationLayoutFlags.isWindowInsetsOptimizationEnabled, która umożliwia wyłączenie optymalizacji skutecznościWindowInsets, jeśli nowa implementacja spowoduje zmianę zachowania. (I8e912) SnapFlingBehaviorumożliwia teraz przekroczenie specyfikacji animacji przyciągania podczas przyciągania. Umożliwia to np. użycie sprężystej specyfikacji jakosnapAnimationSpecdo utworzenia sprężystej animacji przyciągania. Wartości przekraczające zakres nadal są ignorowane podczas wykonywania podejścia z użyciem specyfikacji przyciągania. (I373c2)- Wskaźniki myszy lub touchpada w
ComposeViewbędą teraz automatycznie usuwać fokus, jeśli wskaźnik nie znajduje się w granicach węzła, na którym jest fokus. Dzięki temu użytkownik może wyczyścić fokus, klikając ekran. Jest to bardziej intuicyjne niż obecne zachowanie w przypadku korzystania z urządzeń wskazujących. Możesz zrezygnować z tego sposobu działania za pomocą nowego interfejsuAbstractComposeView.isClearFocusOnPointerDownEnabledAPI. (I6322b, b/282963174) - Komponent Scrollable lepiej obsługuje teraz dwuwymiarowe zdarzenia przewijania za pomocą kółka myszy. Udostępniliśmy nowy interfejs API do testowania, który pomaga testować przypadki użycia w
MouseInjectionScope. Wprowadziliśmy też nowe przeciążenie metod przewijania wMouseInjectionScopeoraz flagę do kontrolowania nowego działania o nazwieisMouseWheel1DAxisLockingEnabled(I136df). - Zaktualizowano
DragGestureNode, aby używać surowych danych wejściowych wskaźnika zamiast zawieszania danych wejściowych wskaźnika na potrzeby optymalizacji. Zmiany są dodawane za flagąisNonSuspendingPointerInputInDraggableEnabled(I0fa4b). - Dodano adnotacje do niektórych interfejsów API
AnchoredDraggableza pomocą@FrequentlyChangingValue.offset,requireOffsetiprogressczęsto się zmieniają i nie należy ich odczytywać w połączeniu. Zamiast tego uzyskuj dostęp do tych wartości w fazach układu i rysowania, efektów lub w innych miejscach poza kompozycją. (I05539) - Usunięto flagi:
isOnScrollChangedCallbackEnabled,isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled,isFlingContinuationAtBoundsEnabled,isAutomaticNestedPrefetchEnabled,DragGesturePickUpEnabled,isPointerInteropFilterDispatchingFixEnabled,isNestedScrollInteropPostFlingFixEnabled,isNestedScrollDispatcherNodeFixEnabled(I36c18) - Wprowadziliśmy
CompositionLocal, którego można używać do modyfikowania pędzla podświetlenia udanego wypełnienia autouzupełniania. (I52329) - Dodano konfigurowalny prostokąt ostrości do
FocusProperties. Możesz teraz zdefiniować niestandardowy obszar ostrości zamiast domyślnej ramki ograniczającej elementu, na którym można ustawić ostrość. Te informacje są wykorzystywane przez system przechodzenia między elementami i logikę utrzymywania w widoku kontenerów z możliwością przewijania. (Id6555, b/368378073) - Dodano nowy
LineHeightStyle.Modeo nazwieTight. Ten tryb pomaga wymuszać mniejsze wysokości wierszy, nawet jeśli mogą one obcinać wyższe glify. (Id3849) - Wprowadziliśmy nowy interfejs Interpolatable, który umożliwia automatyczną interpolację między różnymi typami, pod warunkiem że jeden typ wie, jak przekonwertować dane z drugiego. Ten interfejs jest wykorzystywany w kilku typach kompozycji, takich jak Pędzel i Kształt, ale można go też używać zewnętrznie. (I58eab)
- Dodaje zdarzenia wejścia pośredniego i sposób określania osi współrzędnych do przewijania. (I58e7c)
- Dodano nowy interfejs API
WindowInsets.cutoutPathdo pobierania ścieżki wycięcia w ekranie (Ib90b1, b/279636456). - Flaga
isWindowInsetsDefaultPassThroughEnabledzostała usunięta, a domyślnym ustawieniem WindowInsets jest nieużywanie, dzięki czemu widoki podrzędne mogą domyślnie otrzymywaćWindowInsets. (I888e0, b/412469666)
Poprawki błędów
isNonSuspendingPointerInputInDraggableEnabledpowinna być na razie wyłączona. (Ia41c4)- Przeniesienie domyślnego minSdk z API 21 na API 23 (Ibdfca, b/380448311, b/435705964, b/435705223)
- Zaktualizowaliśmy dokumentację
DraggableAnchors'minPosition/maxPosition, aby wskazać, że te interfejsy API powinny zwracać Float.NaN zgodnie z innymi interfejsami APIDraggableAnchors. (I0460a) - Usunęliśmy błąd, który powodował awarię funkcji
DraggableAnchors#closestAnchor, jeśli kotwice były puste (I4e646). - Poprawa wydajności w przypadku
DraggableAnchors(If4065, I0460a) TextFieldState.edit { }nie czyści już historii cofania. Zamiast tego tworzy on osobny wpis cofania. Jeśli chcesz wyczyścić stos cofania po wywołaniu funkcjiedit, użyj funkcjiTextFieldState.undoState.clearHistory(). (I12c14)- Dodaliśmy obsługę dwukrotnego kliknięcia, aby wybrać słowo w przypadku przeciążenia
SelectionContaineriBasicTextField(value, onValueChange). (Ibb06a) - Drobna poprawka błędu, aby zapewnić zgodność
AutoboxingStateValuePropertyDetectorz K1 i K2 (Ie81c1) requestRectangleOnScreenżądania wysyłane przez AndroidViews są teraz prawidłowo przekazywane do Compose. Dzięki temu widoki takie jakEditTextpozostają na ekranie podczas interakcji. (Ibbf4c)- Kolumna i wiersz prawidłowo przekazują rzeczywisty rozmiar elementu do
Alignment.Vertical.aligniAlignment.Horizontal.align, co rozwiązuje problem, w którym niestandardowe implementacje wyrównania otrzymywały nieprawidłową wartość 0. (I3e460, b/349722072)
Wersja 1.9
Wersja 1.9.5
19 listopada 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.9.5 Wersja 1.9.5 zawiera te zatwierdzenia.
Wersja 1.9.4
22 października 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.9.4 Wersja 1.9.4 zawiera te zatwierdzenia.
Wersja 1.9.3
8 października 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.9.3 Wersja 1.9.3 zawiera te zatwierdzenia.
Wersja 1.9.2
24 września 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.9.2 Wersja 1.9.2 zawiera te zatwierdzenia.
Wersja 1.9.1
10 września 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.9.1 Wersja 1.9.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązano problem z awarią podczas korzystania z
LazyLayoutCacheWindowwLazyLists(c39f5f3)
Wersja 1.9.0
13 sierpnia 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.9.0 Wersja 1.9.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.8.0
- Sprawdzanie za pomocą narzędzia Lint dostarczane z Compose wymaga teraz minimalnej wersji AGP 8.8.2. Jeśli nie możesz uaktualnić AGP, możesz zamiast tego uaktualnić Lint, używając w pliku
gradle.propertieswersjiandroid.experimental.lint.version=8.8.2(lub nowszej). Aby uruchamiać sprawdzanie kodu Compose w IDE, musisz mieć Androida Studio w wersji Ladybug lub nowszej. - Zmiana powodująca niezgodność: przeciążenia
clickable,combinedClickable,selectable,toggleableitriStateToggleablebez parametru Indication obsługują teraz tylko instancjeIndicationNodeFactorydostarczane za pomocąLocalIndication. Ta zmiana zostanie zastosowana, gdy ponownie skompilujesz użycia tych modyfikatorów za pomocą tej wersji Compose. Nie ma to wpływu na zależności binarne ani pośrednie. Jeśli udostępniaszLocalIndicationwycofaną implementację Indication i używasz tych interfejsów API, spowoduje to awarię w czasie działania. Ta zmiana zachowania jest potrzebna, aby zwiększyć wydajność i umożliwić funkcjom typu „composable” korzystającym z tych modyfikatorów pomijanie rekompozycji. Możesz użyćComposeFoundationFlags.isNonComposedClickableEnabled=false, aby tymczasowo zrezygnować z tej zmiany zachowania i umożliwić uaktualnienie biblioteki Compose bez blokowania tej migracji. Ten flag zostanie usunięty po wydaniu jednej stabilnej wersji. Aby rozwiązać ten problem, przenieś wszystkie wycofane implementacje Indication, aby zamiast nich używać zasadyIndicationNodeFactory. Możesz też używać przeciążeń z jawnym parametrem Indication – te przeciążenia będą nadal obsługiwać instancje Indication inne niżIndicationNodeFactory, chociaż nie jest to zalecane ze względu na wydajność. (I6bcdc, b/316914333) - Wprowadzono
isFlingCancellationWithNestedScrollFixEnabled, aby rozwiązać problem z propagacją szybkiego przewijania w przypadku zagnieżdżonego przewijania. W tym CL przywracamy zachowanie kontynuacji przesunięcia usunięte w I9326a. Anulujemy animację przesunięcia, jeśli dziecko zostanie usunięte z kompozycji. (I467f4, b/405910180, b/419049142, b/416784125) - Ponownie dodaj użycie
scrollAnimationSpecw usłudzeContentInViewNode. Funkcja została usunięta podczasscrollAnimationSpecwycofywania, co spowodowało, że przypadki użycia przestały działać. (I1436a, b/403301605) - Ustabilizowano
LazyLayout. (If5db4),LazyLayoutPrefetchStateoraz metody planowaniaschedulePrecompositionischedulePrecompositionAndPremeasure. (I4362f, b/252853717) iLazyLayoutItemProvider(Icce09,b/261565751) - Zezwól na wywoływanie
ViewTreeObserver.OnScrollChangedprzez funkcję Tworzenie. To działanie jest wprowadzane pod flagąisOnScrollChangedCallbackEnabled. Wprowadziliśmy też funkcję rozszerzeniaDelegatableNode dispatchOnScrollChanged. (I34b9d, b/238109286) - Wprowadź interfejsy API
Modifier.scrollable2D,Scrollable2DStatei towarzyszące do tworzenia stanu. Wprowadziliśmy też typowe funkcje rozszerzenia przewijania. (Ic61c8, b/214410040) PrefetchScheduleri dostosowywanie zostały wycofane na rzecz wewnętrznej implementacji, która wykonuje wszystkie czynności automatycznie. (I3a9a6, b/420551535)TextFieldState.edit { }nie czyści już historii cofania. Zamiast tego tworzy on samodzielny wpis cofania. Jeśli chcesz wyczyścić stos cofania po wywołaniu edycji, użyjTextFieldState.undoState.clearHistory(). (I12c14)- Menu kontekstowe i pasek narzędzi wyboru obsługują teraz inteligentne elementy (inteligentny wybór).
- Dodano stylizowany tekst
OutputTransformation, aby umożliwić stylizowanie danych wyjściowychTextFieldza pomocą przeciążeniastate. TextField: menu kontekstowe (menu po kliknięciu prawym przyciskiem myszy).- Tekst skopiowany z wielu komponentów kompozycyjnych Text w
SelectionContainerbędzie teraz zawierać separator wiersza \n między tekstem pochodzącym z poszczególnych komponentów kompozycyjnych Text. (I25332, b/285036739) - Wprowadzenie interfejsu API do tworzenia niestandardowych list punktowanych za pomocą
AnnotatedString(I1d066, b/383269496, b/139326648) - Przeciążenie
stateBasicTextFieldspowoduje, że kursor będzie widoczny po zmianie jego rozmiaru. (I0eb41, b/406187741) - Zmiana powodująca niezgodność: węzły modyfikatora
backgroundiborderimplementują teraz interfejsSemanticsModifierNode. Może to spowodować dodanie nowychSemanticsNodesdo drzewa semantycznego, a tym samym doprowadzić do niepowodzenia testów, które opierają się na założeniach dotyczących struktury drzewa semantycznego. Na przykład testy, które używająonChild,onParent,onSiblingi innych podobnych metod do tworzenia asercji, mogą się nie powieść, jeśli między bieżącym a docelowym węzłem zostanie dodany nowy węzeł. Najlepszym sposobem na rozwiązanie tych problemów jest dodanietestTagbezpośrednio do węzła docelowego. Inne podejście to użycie mniej ścisłego dopasowania, np.onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)
Wersja 1.9.0-rc01
30 lipca 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.9.0-rc01 Wersja 1.9.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
TextFieldState.edit { }nie czyści już historii cofania. Zamiast tego tworzy on osobny wpis cofania. Jeśli chcesz wyczyścić stos cofania po wywołaniu funkcjiedit, użyj funkcjiTextFieldState.undoState.clearHistory(). (I12c14)
Wersja 1.9.0-beta03
16 lipca 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.9.0-beta03 Wersja 1.9.0-beta03 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiliśmy błąd regresji, który powodował nieprawidłowe działanie przyklejonych nagłówków w leniwie ładowanych siatkach, gdy podano pustą treść nagłówka. (e3e3400)
Wersja 1.9.0-beta02
2 lipca 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.9.0-beta02 Wersja 1.9.0-beta02 zawiera te zatwierdzenia.
Nowe funkcje
- Obsługa elementów inteligentnych w menu kontekstowym i na pasku narzędzi wyboru.
Zmiany w interfejsie API
- Rozwiązaliśmy problem polegający na tym, że niektóre klawiatury sprzętowe lub piloty do telewizora nie przesuwały kursora w nowym komponencie
TextFieldsza pomocą klawiszy kierunkowych, a zamiast tego przełączały fokus na inny komponent. DodanoComposeFoundationFlag.isTextFieldDpadNavigationFixEnabled, aby w razie niepożądanego zachowania, którego nie można cofnąć, można było tymczasowo wyłączyć tę poprawkę. (Ie1922)
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że przy obecności przypiętego elementu nagłówki przyklejone nie były przyklejone. (I9198d, b/385006133)
TextObfuscationMode.RevealLastTypedjest teraz zgodny z ustawieniem systemowym „TEXT_SHOW_PASSWORD”. (I41c0c)- Naprawiliśmy błąd, który powodował, że
BasicTextFieldnieprawidłowo wyświetlał ostrzeżenie „Wklejono ze schowka”, gdy pasek narzędzi tekstowych otwierał się po raz pierwszy. (I5fda2)
Wersja 1.9.0-beta01
18 czerwca 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.9.0-beta01 Wersja 1.9.0-beta01 zawiera te zatwierdzenia.
Zmiany powodujące niezgodność
- Węzły modyfikujące
backgroundiborderimplementują terazSemanticsModifierNode. Może to spowodować dodanie nowychSemanticsNodesdo drzewa semantycznego, a tym samym doprowadzić do niepowodzenia testów, które opierają się na założeniach dotyczących struktury drzewa semantycznego. Na przykład testy, które używająonChild,onParent,onSiblingi innych podobnych metod do tworzenia asercji, mogą się nie powieść, jeśli między bieżącym a docelowym węzłem zostanie dodany nowy węzeł. Najlepszym sposobem na rozwiązanie tych problemów jest dodanietestTagbezpośrednio do węzła docelowego. Inne podejście to użycie mniej ścisłego dopasowania, np.onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)
Zmiany w interfejsie API
- Zmień nazwę
Modifier.addTextContextMenuComponentsnaappendTextContextMenuComponents. (I4c43f) - Usunięto funkcje
AnnotatedOutputTransformationi przeniesiono funkcjeaddStyledoTextFieldBuffer. Na numeraddStylemożna dzwonić tylko z numeruOutputTransformation. (I9930a, b/417991824) - Element Clickable jest ponownie zapisywany, aby nie używać zawieszonego wskaźnika jako optymalizacji. Ta funkcja jest włączana za pomocą flagi. Jeśli w nowej implementacji wystąpi błąd, możesz ją wyłączyć –
ComposeFoundationFlags.isNonSuspendingPointerInputInClickableEnabled. (I85b65) - Wprowadzono
isFlingCancellationWithNestedScrollFixEnabled, aby rozwiązać problem z propagacją szybkiego przewijania w przypadku zagnieżdżonego przewijania. W tym CL przywracamy zachowanie kontynuacji przesunięcia usunięte w aosp/3260391. Jeśli dziecko zostanie usunięte z kompozycji, nadal będziemy anulować animację przesunięcia. (I467f4, b/405910180, b/419049142, b/416784125) WindowInsetsRulers: zmieniono wartość w kolumnie „rulersIgnoringVisibility” na maksymalną. Zmieniono funkcjęgetDisplayCutoutBounds(), aby była funkcją rozszerzenia funkcjiPlacementScope. WartośćWindowInsetsAnimationPropertieszostała zmieniona naWindowInsetsAnimation, a wartośćgetAnimationProperties()została zmieniona nagetAnimation(). (I3816f)- Zmieniono
InsetsRulers, aby był w kodzie wspólnym o nazwieWindowInsetsRulers. Uprościliśmy interfejs API, aby wszystkie wstawki miały wartośćWindowInsetsRulers. Wyodrębniono właściwości animacji inne niż linijki do klasyAnimationProperties. UsługaWindowInsetsRulers.innermostOf()może służyć do łączenia wieluWindowInsetsRulers. (I2f0c6, b/415012444)
Poprawki błędów
- Ponownie dodaj użycie
scrollAnimationSpecw usłudzeContentInViewNode. Funkcja została usunięta podczasscrollAnimationSpecwycofywania, co spowodowało, że przypadki użycia przestały działać. (I1436a, b/403301605)
Wersja 1.9.0-alpha04
4 czerwca 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.9.0-alpha04 Wersja 1.9.0-alpha04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
PrefetchScheduleri dostosowywanie zostały wycofane na rzecz wewnętrznej implementacji, która wykonuje wszystkie czynności automatycznie. (I3a9a6, b/420551535)- Zaktualizowaliśmy
Scrollable2DState, aby w metodziecanScrollużywać przesunięcia zamiast kąta. (I28694, b/417268474) - Tekst
addAnnotationw plikuAnnotatedOutputTransformationzostał zastąpiony tekstemaddStyle. (I91c6f, b/417991824) - Ustabilizowano
LazyLayout. (If5db4) - Ustabilizowano pusty konstruktor dla
LazyLayoutPrefetchStateoraz jego metody planowaniaschedulePrecompositionischedulePrecompositionAndPremeasure. (I4362f, b/252853717) - Wprowadziliśmy symbol
ProcessTextKeyna Androidzie, który jest używany w przypadku elementów menu kontekstowego dodawanych do działań związanych z intencjąPROCESS_TEXT. (If0ac4) - Udostępnij interfejsy API menu kontekstowego. Udostępniliśmy funkcje
Modifier.addTextContextMenuComponentsiModifier.filterTextContextMenuComponents, które umożliwiają dodawanie i usuwanie elementów w menu kontekstowym. Udostępniliśmy też te podstawowe interfejsy API, aby można było tworzyć niestandardowe menu kontekstowe:TextContextMenuProviderTextContextMenuDataProviderTextContextMenuDataTextContextMenuComponentLocalTextContextMenuDropdownProviderLocalTextContextMenuToolbarProvider(I1b7b0)
- Zapewnij stabilność
LazyLayoutItemProvider(Icce09, b/261565751) - Wprowadziliśmy funkcje inteligentnego zaznaczania na Androidzie, które można włączać i wyłączać w
ComposeFoundationFlags.isSmartSelectionEnabled. Udostępnia też statyczną właściwośćcompositionLocalLocalTextClassifierCoroutineContext, której można użyć do określeniaCoroutineContext, w którym uruchamiane jest zadanieTextClassification. (I1dbaa, b/139321320)
Wersja 1.9.0-alpha03
20 maja 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.9.0-alpha03 Wersja 1.9.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano
AnnotatedOutputTransformation, które umożliwia dodawanie adnotacji doTextFieldprzed renderowaniem. (Ibc6f0, b/389978748) - Wprowadzenie
LazyLayoutMeasurePolicyi ustabilizowanieLazyLayoutMeasureScope. (I8c5df, b/252853717) BasicSecureTextFieldteraz podnosi ScrollState swojego wewnętrznegoBasicTextField. (I6e576)- Wprowadzono modyfikatory
Modifier.onFirstVisibleiModifier.onVisibilityChanged, które są modyfikatorami wysokiego poziomu opartymi na modyfikatorzeModifier.onLayoutRectChanged. Te modyfikatory zostały opracowane specjalnie z myślą o obsłudze wielu typowych wymagań aplikacji, takich jak rejestrowanie wyświetleń czy automatyczne odtwarzanie filmów. Zostały one zaprojektowane z uwzględnieniem wydajności, dzięki czemu można ich używać w krytycznych scenariuszach opartych na listach bez ryzyka pogorszenia wydajności przewijania. Oprócz tych interfejsów API modyfikatorów dodaliśmy dodatkowe interfejsy APIRelativeLayoutBounds, aby obsługiwać te przypadki użycia i ułatwić deweloperom tworzenie podobnych modyfikatorów niestandardowych, które dokładnie odpowiadają ich potrzebom. (I759b8) - Wprowadzono
detectDragGestures, która ma kontrolę nad marginesem dotykowym i blokadą orientacji. (Iadb0d) - Wprowadź interfejsy API
Modifier.scrollable2D,Scrollable2DStatei towarzyszące do tworzenia stanu. Wprowadziliśmy też typowe funkcje rozszerzenia przewijania. (Ic61c8, b/214410040) - Wartości kolorów Compose 64-bitowych nie są bezpośrednio porównywalne z wartościami kolorów Androida
ColorLongs, ponieważ identyfikatory przestrzeni kolorów są w przypadku niektórych przestrzeni kolorów nieuporządkowane. Aby konwertować przestrzenie kolorów Androida, dodaliśmy 2 nowe interfejsy API:toColorLong()ifromColorLong(). (I36899)
Poprawki błędów
- Tekst skopiowany z wielu komponentów kompozycyjnych Text w
SelectionContainerbędzie teraz zawierać separator wierszy\nmiędzy tekstami pochodzącymi z poszczególnych komponentów kompozycyjnych Text. (I25332, b/285036739)
Wersja 1.9.0-alpha02
7 maja 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.9.0-alpha02 Wersja 1.9.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Poprawiono sposób dodawania zmian danych wejściowych wskaźnika do elementu
VelocityTrackerwDragGestureNode. Można to kontrolować za pomocą nowej flagiisOffsetPositionBeforeAddingToVelocityTrackerEnabled. (Ic7992, b/292556787, b/236451818) - Udostępnianie
await[Vertical/Horizontal]PointerSlopOrCancellationpublicznie (I6968b, b/298903681) AbstractComposeView.consumeWindowInsetsma teraz domyślnie wartość „false”.WindowInsetszostanie automatycznie dostosowana do rozmiaru i pozycji dziecka, gdy wartość tego parametru będzie ustawiona na false, więc nie musisz już ustawiać jej domyślnie na true. Rozwiązaliśmy problem polegający na tym, że widoki podrzędne nie otrzymywały domyślnie aktualizacjiWindowInsets. Deweloperzy mogą zrezygnować z aktualizacji, zmieniając wartość eksperymentalnego parametruComposeFoundationLayout.isWindowInsetsDefaultPassThroughEnabledna „true” lub, co jest preferowane, ustawiając wartość parametruAbstractComposeView.consumeWindowInsetsna „true” we wszystkich instancjach widoku Compose. (I6fa0a, b/411868840)
Wkład zewnętrzny
- Naprawiono awarię komponentu Pager w przypadku bardzo dużych wartości beyondViewportPageCount (Idb2db)
Wersja 1.9.0-alpha01
23 kwietnia 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.9.0-alpha01 Wersja 1.9.0-alpha01 zawiera te zatwierdzenia.
Zmiany w zachowaniu
Sprawdzanie za pomocą narzędzia Lint dostarczane z Compose wymaga teraz minimalnej wersji AGP 8.8.2. Jeśli nie możesz uaktualnić AGP, możesz zamiast tego uaktualnić Lint, używając w pliku
gradle.propertieswersjiandroid.experimental.lint.version=8.8.2(lub nowszej). Aby uruchamiać sprawdzanie kodu Compose w IDE, musisz mieć Androida Studio w wersji Ladybug lub nowszej.Zmiana powodująca niezgodność: przeciążenia
clickable,combinedClickable,selectable,toggleableitriStateToggleablebez parametru Indication obsługują teraz tylko instancjeIndicationNodeFactorydostarczane za pomocąLocalIndication. Ta zmiana zostanie zastosowana, gdy ponownie skompilujesz użycia tych modyfikatorów za pomocą tej wersji Compose. Nie ma to wpływu na zależności binarne ani pośrednie. Jeśli udostępniaszLocalIndicationwycofaną implementację Indication i używasz tych interfejsów API, spowoduje to awarię w czasie działania. Ta zmiana zachowania jest potrzebna, aby zwiększyć wydajność i umożliwić funkcjom typu „composable” korzystającym z tych modyfikatorów pomijanie rekompozycji. Możesz użyćComposeFoundationFlags.isNonComposedClickableEnabled=false, aby tymczasowo zrezygnować z tej zmiany zachowania i umożliwić uaktualnienie biblioteki Compose bez blokowania tej migracji. Ten flag zostanie usunięty po wydaniu jednej stabilnej wersji. Aby rozwiązać ten problem, przenieś wszystkie wycofane implementacje Indication, aby zamiast nich używać zasadyIndicationNodeFactory. Możesz też używać przeciążeń z jawnym parametrem Indication – te przeciążenia będą nadal obsługiwać instancje Indication inne niżIndicationNodeFactory, chociaż nie jest to zalecane ze względu na wydajność. (I6bcdc, b/316914333)
Zmiany w interfejsie API
- Wprowadzenie interfejsu API do tworzenia niestandardowych list punktowanych za pomocą
AnnotatedString(I1d066, b/383269496, b/139326648) - Zezwól na wywoływanie
ViewTreeObserver.OnScrollChangedprzez funkcję Tworzenie. To działanie jest wprowadzane pod flagąisOnScrollChangedCallbackEnabled. Wprowadziliśmy też funkcję rozszerzeniaDelegatableNode dispatchOnScrollChanged. (I34b9d, b/238109286) - Projekty wydane w Kotlinie 2.0 wymagają użycia KGP w wersji 2.0.0 lub nowszej (Idb6b5).
- Dodano obsługę sprawdzania kodu za pomocą narzędzia lint dla
TextFieldState, aby mieć pewność, że jest on zapamiętany w kompozycji. Zamiast niej użyj zasadyrememberTextFieldState. (I53d74) - Dodano obsługę sprawdzania kodu w przypadku
FocusRequester, aby mieć pewność, że jest on zapamiętany w kompozycji (I6bf91). - Dodano obsługę sprawdzania kodu za pomocą narzędzia Lint dla funkcji
BringIntoViewRequester, aby mieć pewność, że jest ona zapamiętywana w kompozycji. (Ibfba6) - Wprowadziliśmy zakresy wywołań
schedulePrefetchw strategiach siatek i list, aby dostosować je do możliwościLazyListPrefetchStatew zakresie podawania informacji o rozmiarze i indeksie. (Iad80c) - Zmiana powodująca niezgodność: przeciążenia
clickable,combinedClickable,selectable,toggleableitriStateToggleablebez parametru Indication obsługują teraz tylko instancjeIndicationNodeFactorydostarczane za pomocąLocalIndication. Ta zmiana zostanie zastosowana, gdy ponownie skompilujesz użycia tych modyfikatorów za pomocą tej wersji Compose. Nie ma to wpływu na zależności binarne ani pośrednie. Jeśli udostępniaszLocalIndicationwycofaną implementację Indication i używasz tych interfejsów API, spowoduje to awarię w czasie działania. Ta zmiana zachowania jest potrzebna, aby zwiększyć wydajność i umożliwić funkcjom typu „composable” korzystającym z tych modyfikatorów pomijanie rekompozycji. Możesz użyćComposeFoundationFlags.isNonComposedClickableEnabled=false, aby tymczasowo zrezygnować z tej zmiany zachowania i umożliwić uaktualnienie biblioteki Compose bez blokowania tej migracji. Ten flag zostanie usunięty po wydaniu jednej stabilnej wersji. Aby rozwiązać ten problem, przenieś wszystkie wycofane implementacje Indication, aby zamiast nich używać zasadyIndicationNodeFactory. Możesz też używać przeciążeń z jawnym parametrem Indication – te przeciążenia będą nadal obsługiwać instancje Indication inne niżIndicationNodeFactory, chociaż nie jest to zalecane ze względu na wydajność. (I6bcdc, b/316914333) - Wprowadzenie flagi do kontrolowania automatycznego zagnieżdżonego wstępnego pobierania:
isAutomaticNestedPrefetchEnabled(I8d448) - Wprowadź przeciążenie dla
LazyGridStateirememberLazyGridState, które zajmujeLazyLayoutCacheWindow. (I51151) - Dodaje linijki do wcięć okna. Dodaje
DerivedRuler, aby umożliwić obliczanie linijki na podstawie innej linijki. ModyfikujePlacmentScope, aby wdrożyć gęstość. (I658bc, b/359260964) - Dodano funkcję fabryczną
WindowInsets()bez argumentów, która ułatwia tworzenie pustych obiektówWindowInsets. (I65f62, b/395311689) - Dodano
PaddingValues.Zerodla pustego elementuPaddingValues. (If193e, b/386255688)
Poprawki błędów
- Przeciążenie
stateBasicTextFieldspowoduje, że kursor będzie widoczny po zmianie jego rozmiaru. (I0eb41, b/406187741) - Zaktualizowano interfejsy API
onVisibleItemsUpdatedw usługachLazyListPrefetchStrategyiLazyGridPrefetchStrategy, aby informować o stanie początkowym. (If2cfa)
Wersja 1.8
Wersja 1.8.3
18 czerwca 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.8.3 Wersja 1.8.3 zawiera te zatwierdzenia.
Wersja 1.8.2
20 maja 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.8.2 Wersja 1.8.2 zawiera te zatwierdzenia.
Poprawki błędów
- Wprowadziliśmy poprawkę, która zapobiega dzieleniu przez zero podczas obliczania liczby elementów do wczytania w przypadku wyszukiwania z użyciem fokusu. Zastosowano sprawdzanie do wszystkich układów, które używają
LazyLayoutBeyondBoundsState. (8e6dc8)
Wersja 1.8.1
7 maja 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.8.1 Wersja 1.8.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem w przypadku funkcji
BasicTextiTextAutoSize, w którym użycie funkcjiTextOverflow.Ellipsizepowodowało wyświetlanie tekstu o mniejszym rozmiarze niż optymalny. (I1e1d8, b/396582066) - Naprawiliśmy błąd w
BasicTextField, który powodował różne awarie, gdyTextFieldDecoratorpomijał wywołanieinnerTextField. (I2638c), b/308398612 - Naprawiliśmy błąd w
TextField, który powodował, że po zmianie instancjiTextFieldStatepasek narzędzi tekstowych i uchwyty zaznaczenia całkowicie znikały. (I8068a), b/390477786 - Naprawiliśmy błąd w funkcji
BasicText, który powodował, że zmiana minimalnego ograniczenia szerokości nie aktualizowała położenia tekstu, gdy wartośćtextAlignbyła ustawiona na wartość inną niż domyślna. (I77a96), b/406305552
Wersja 1.8.0
23 kwietnia 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.8.0 Wersja 1.8.0 zawiera te zatwierdzenia.
Wersja 1.8.0-rc03
9 kwietnia 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.8.0-rc03 Wersja 1.8.0-rc03 zawiera te zmiany.
Wersja 1.8.0-rc02
26 marca 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.8.0-rc02 Wersja 1.8.0-rc02 zawiera te zmiany.
Wersja 1.8.0-rc01
12 marca 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.8.0-rc01 Wersja 1.8.0-rc01 zawiera te zmiany.
Wersja 1.8.0-beta03
26 lutego 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.8.0-beta03 Wersja 1.8.0-beta03 zawiera te zmiany.
Poprawki błędów
- Dodano nową właściwość semantyczną
InputText, która rejestruje wartość pola tekstowego przed zastosowaniem transformacji wyjściowej. (Iae46a, b/395911609, b/176949051) - Usunięto wycofane przeciążenia funkcji
AutoSize. Użyj interfejsów APITextAutoSize, które pełnią tę samą funkcję. (I2c90f) - Rozwiązaliśmy problem z pamięcią podręczną w przypadku funkcji
TextAutoSize, w którym drugi przebieg układu z tymi samymi ograniczeniami mógł powodować użycie drugiego co do wielkości rozmiaru czcionki zamiast największego. (Id367f)
Wersja 1.8.0-beta02
12 lutego 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.8.0-beta02 Wersja 1.8.0-beta02 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że implementacje przewijania poza krawędź za pomocą
LayoutModifierNodenie działały prawidłowo w kontenerach przewijania.
Wersja 1.8.0-beta01
29 stycznia 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.8.0-beta01 Wersja 1.8.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Usunięto
SemanticsNodeInteraction.semanticsId(). Użyj w zamian zasadySemanticsNodeInteraction.fetchSemanticsNode().id. (Ie397a) - Przepisz interfejs
requestAutofillAPI, aby istniał poza menedżerem autouzupełniania. (Id1929) ContextualFlowRowiContextualFlowColumnzostały oznaczone jako wycofane. Ten eksperymentalny komponent został wprowadzony w wersji 1.7 i nie został jeszcze ustabilizowany, a jego wdrożenie uznano za niepożądane. W przyszłości może zostać udostępniony komponent rozwiązujący problemy, do których ten komponent był przeznaczony.FlowRowiFlowColumnmają eksperymentalne przeciążenia wprowadzone w wersji 1.7, które zawierają parametroverflow. Używanie tego parametru zostało wycofane. Zamiast niego można używać przeciążeń bez tego parametru. Domyślne działanie „overflow” w przypadku tych przeciążeń będzie miało wartość „Clip”, tak jak od momentu wprowadzenia.- Wiele przypadków użycia
ContextualFlowRowmożna zrealizować za pomocąFlowRow, ale zdajemy sobie sprawę, że nie zawsze jest to możliwe.ContextualFlowRowmożna w pełni wdrożyć w przestrzeni użytkownika. Możesz skopiować jego implementację i w razie potrzeby ją dostosować. W przyszłości chcemy rozwiązywać te problemy w inny sposób. (Ibafec)
Poprawki błędów
- Poprawiono układ tekstu z wielokropkiem, który czasami był nieprawidłowo tłumaczony podczas animacji. Więcej informacji znajdziesz w b/389707025 (Ie55b1, b/389707025).
- Naprawiliśmy błąd w funkcji
BasicText, gdy wartościTextAutoSizeimaxLinesbyły ustawione na 1. (Ic0450, b/376834366) - Minimalna wysokość wewnętrzna tekstu uwzględnia teraz parametr
minLines. Oznacza to, że minimalna zgłoszona wysokość nie będzie mniejsza niż wysokość wymagana do spełnienia parametruminLines(I225f9, b/388299762).
Wersja 1.8.0-alpha08
15 stycznia 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.8.0-alpha08 Wersja 1.8.0-alpha08 zawiera te zmiany.
Zmiany w interfejsie API
- AutoSize: zmieniliśmy nazwę interfejsu
AutoSizenaTextAutoSizei opublikowaliśmy interfejsy API, które umożliwiają tworzenie niestandardowych implementacjiTextAutoSize. Przykład implementacji automatycznego rozmiaru tekstu niestandardowego znajdziesz wTextAutoSizeSample. (I85756) - Przeniesiono flagę funkcji
DetectTapGesturesEnableNewDispatchingBehaviordoComposeFoundationFlagsi zmieniono jej nazwę naisDetectTapGesturesImmediateCoroutineDispatchEnabled. Stara flaga została wycofana i będzie teraz przekazywać wywołania do interfejsuComposeFoundationFlags.isDetectTapGesturesImmediateCoroutineDispatchEnabled. (I62932)
Poprawki błędów
- Domyślnie włączona
DetectTapGesturesEnableNewDispatchingBehavior. Interfejsy APITapGestureDetectordomyślnie używają teraz nowego zachowania wysyłania (natychmiastowego wysyłania). (I9f2bc, b/369648479) - Poprawiliśmy modyfikatory
requiredWidth/Height/Size, aby prawidłowo obsługiwały rozmiary wewnętrzne. (Ie3d7d, b/368113212)
Wkład zewnętrzny
- Ujednolicone
BasicTooltipw bibliotece foundation iBasicTooltip/Tooltipw bibliotece material3. (Ifc2e6) - Dodaliśmy nowy interfejs schowka i lokalną kompozycję. (I80809)
Wersja 1.8.0-alpha07
11 grudnia 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.8.0-alpha07 Wersja 1.8.0-alpha07 zawiera te zmiany.
Zmiany w interfejsie API
- Usunięto flagę
ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled, która pomagała cofnąć usunięcie wewnętrznego elementugraphicsLayerzBasicText. Jeśli używasz tego flagi, zgłoś błąd i podaj powody. Możesz też po prostu przekazać wartośćModifier.graphicsLayer()do wywołańBasicText, aby uzyskać takie samo działanie jak wcześniej. (Id9f90) - Dodaliśmy domyślną implementację nowego języka DSL
stickyHeader. (I68986) - Właściwość
LocalAutofillHighlightColorcomposition local musi mieć typ Color. (I0e05b) - Zmieniono nazwę
OverscrollEffect#withoutDrawingnaOverscrollEffect#withoutVisualEffect. (I1a154)
Poprawki błędów
- Poprawka problemu z obliczaniem celu w
AnchoredDraggable, który w przypadku niektórych przesunięć mógł ustawiać nieprawidłowy punkt zakotwiczenia. (I23b87, b/367660226)
Wkład zewnętrzny
- Dodanie
BringIntoViewResponderModifierNodedo interfejsu, co zapewnia nowy sposób wdrażania funkcji Bring Into View, a także umożliwia wdrożenie na poziomie platformy (Ia6dd8). - Stale nieznacznie zmieniamy sposób rysowania kursora. Aby wyłączyć rysowanie kursora w testach, możesz użyć znaku
LocalCursorBlinkEnabled. (I4c697)
Wersja 1.8.0-alpha06
13 listopada 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.8.0-alpha06 Wersja 1.8.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaje modyfikator
stylusHoverIcon. (Iff20a, b/331289114) - Wycofano
confirmValueChangewAnchoredDraggableState. Zamiast blokować zmiany stanu, niedozwolone kotwice nie powinny znajdować się w aktywnym zbiorze kotwic, a do wskazania niedostępności żądanego działania należy użyć koduOverscrollEffect. (Ia717f) - Zmienia menedżera autouzupełniania na interfejs. (I84914, b/376080755)
- Dodaje interfejsy API
OverscrollEffect#withoutDrawingiOverscrollEffect#withoutEventHandling– te interfejsy API tworzą opakowaną instancję podanego efektu przewijania, która nie rysuje ani nie obsługuje zdarzeń, co umożliwia renderowanie przewijania w osobnym komponencie od komponentu, który wysyła zdarzenia. Możesz na przykład wyłączyć rysowanie efektu przewijania poza zakres w leniwych listach, a potem rysować go osobno na górze lub w innym miejscu. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244) - Dodanie obsługi autouzupełniania na pasku narzędzi tekstowych. (Ie6a4c)
- Wycofuje
OverscrollConfigurationiLocalOverscrollConfigurationoraz dodajerememberPlatformOverscrollFactory, aby utworzyć instancję domyślnej implementacji przewijania poza krawędź lub dostosować jej parametry. Aby wyłączyć przewijanie poza krawędź, zamiastLocalOverscrollConfiguration provides nullużyjLocalOverscrollFactory provides null. Aby zmienić kolor lub wypełnienie efektu poświaty, zamiastLocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding)użyjLocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding). (Ie71f9, b/255554340, b/234451516) - Zmieniliśmy właściwość
effectModifierwOverscrollEffectnanode: DelegatableNode, aby była zgodna z innymi interfejsami API. (Ic0b46, b/255554340) - Usunięto eksperymentalny interfejs API
GlobalAssertions. Został on zaprojektowany do przeprowadzania testów ułatwień dostępu. Zamiast tego użyjenableAccessibilityChecks(). (I59322)
Wersja 1.8.0-alpha05
30 października 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.8.0-alpha05 Wersja 1.8.0-alpha05 zawiera te zmiany.
Nowe funkcje
- Obsługa automatycznego dopasowywania rozmiaru tekstu. Przekaż instancję
AutoSize(np.AutoSize.StepBased) do ulubionego komponentu tekstowego (np.BasicText) i zobacz, jak rozmiar tekstu dostosowuje się do dostępnego miejsca. (Ice7e0, b/139320827) - Dodaje interfejsy API
OverscrollFactoryiLocalOverscrollFactory, które umożliwiają konfigurowanie przewijania poza zakres w hierarchii. Wartość podana wLocalOverscrollFactorybędzie domyślnie używana do tworzeniaOverscrollEffect. Aby utworzyć i zapamiętać efekt z bieżącej fabryki, użyjrememberOverscrollEffect(). (I51ca4, b/255554340)
Zmiany w interfejsie API
- Wprowadzamy parametr
CompositionLocal, który umożliwia modyfikowanie odcienia koloru podświetlenia autouzupełniania. (I32092) - Usunięto
ScrollableDefaults.overscrollEffect– zamiast tego używajrememberOverscrollEffect. Spowoduje to utworzenie instancji bieżącej implementacji przewijania poza krawędź, która jest dostępna wLocalOverscrollFactory. (I1651a, b/255554340),(b/234451516) - Wprowadza nowy interfejs
AutofillManager, który umożliwia precyzyjne dostosowywanie procesu autouzupełniania, oraz flagęisSemanticAutofillEnabled, która włącza nową wersję autouzupełniania. (I9d484) - Usuwa
CombinedClickableNode. Ten eksperymentalny interfejs API został tymczasowo udostępniony, aby umożliwić pracę nad wydajnością, ale nie jest już potrzebny. Zamiast tego używaj bezpośrednioModifier.combinedClickable, tak jak w przypadku innych interfejsów API modyfikatorów. (I4b658) - Dodaje przeciążenia do funkcji
horizontalScroll,verticalScroll,LazyColumn,LazyRow,LazyHorizontalGrid,LazyVerticalGrid,LazyHorizontalStaggeredGrid,LazyVerticalStaggeredGrid,HorizontalPageriVerticalPagerz obsługą określania niestandardowego parametruOverscrollEffect. Podany elementOverscrollEffectbędzie otrzymywać zdarzenia i będzie renderowany w granicach tych komponentów. Pamiętaj, że dwukrotne narysowanie tego samego kształtuOverscrollEffectnie jest obsługiwane, więc nie możesz narysować tego samego kształtuOverscrollEffectdostarczonego do jednego z tych komponentów oddzielnie za pomocą kształtuModifier.overscroll. Przypadek użycia polegający na rysowaniu przewijania poza granicami tych komponentów zostanie rozwiązany w przyszłości. (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)
Wersja 1.8.0-alpha04
16 października 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.8.0-alpha04 Wersja 1.8.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaje wywołania zwrotne
DelegatableNode#onDensityChangeiDelegatableNode#onLayoutDirectionChange, aby umożliwić aktualizowanie stanu węzła po jego zmianie. (I04f3e, b/340662451) - Funkcja Paragraph i
ParagraphIntrinsicsprzyjmuje teraz listę wszystkich adnotacji zastosowanych doAnnotatedString, a wcześniej przyjmowała tylko listęSpanStyles. (I12f80) - Wprowadzono
PointerInputModifierNode#touchBoundsExpansion, którego można używać do powiększania obszaru dotyku modyfikatora danych wejściowych pojedynczego wskaźnika. (Iccf02, b/335339283)
Poprawki błędów
- Naprawiliśmy błąd polegający na tym, że w niektórych sytuacjach progi pozycji przekazywane do funkcji
AnchoredDraggableDefaults.flingBehaviornie były prawidłowo uwzględniane. (Ifdf0d, b/367660226) - Wprowadziliśmy poprawkę dotyczącą zagnieżdżonych elementów z możliwością przewijania, które są usuwane z drzewa węzłów podczas trwającego przewijania. Teraz te węzły anulują szybkie przesunięcie i prawidłowo wysyłają zdarzenie
onPostFlingz pozostałą prędkością. Wprowadzamy też flagęNewNestedScrollFlingDispatchingEnabled, która pozwala kontrolować zachowanie w przypadku regresji. Flaga zostanie usunięta przed rozpoczęciem testów beta. (I05c37, b/371168883) - Naprawiliśmy błąd polegający na tym, że wartość
OverscrollEffectsprzekazywana doModifier.anchoredDraggableotrzymywała delty 2D zamiast 1D. (Ie52c0)
Wersja 1.8.0-alpha03
2 października 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.8.0-alpha03 Wersja 1.8.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Aktualizacja wersji języka Kotlin do 1.9 (I1a14c)
- Wprowadzono flagę
DraggableAddDownEventFixEnabled(I848d5) - Wprowadzono nową rolę semantyczną o nazwie Karuzela, która emuluje zachowanie listy w pagerach na potrzeby usług ułatwień dostępu. (Id354b, b/354109776, b/239672673)
- Usunięto domyślny modyfikator
graphicsLayerz funkcji kompozycyjnejBasicText. Dodaliśmy eksperymentalną flagęComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled, aby można było przywrócić stare działanie. (Ie478d) - Dodano
Modifier.recalculateWindowInsets(), aby umożliwić dzieciom w hierarchii korzystanie zinsetsPaddingnawet wtedy, gdy rodzice dopasowali je bezconsumeWindowInsets(). (I7f9e4)
Poprawki błędów
- Wprowadź gest podnoszenia w
detectDragGestures, elementach, które można przeciągać, i elementach, które można przewijać. Jeśli element, który można przeciągać, przestanie reagować na gest, rodzic będzie mógł go przejąć. Umożliwia to bardziej ciągłą i zintegrowaną obsługę gestów. (Ic88fe) - Aktualizacja zachowania anulowania szybkiego przewijania w elementach przewijanych. Jeśli element z możliwością przewijania zostanie przesunięty i osiągnie granice, prawidłowo przekaże prędkość przesunięcia do następnego elementu z możliwością przewijania w łańcuchu, zamiast kontynuować przesunięcie. (I9326a)
Wersja 1.8.0-alpha02
18 września 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.8.0-alpha02 Wersja 1.8.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
TextOverflow.StartEllipsisiTextOverflow.MiddleEllipsis, które umożliwiają umieszczenie wielokropka na początku lub w środku wiersza tekstu jednowierszowego (I38913, b/185418980).
Wersja 1.8.0-alpha01
4 września 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.8.0-alpha01 Wersja 1.8.0-alpha01 zawiera te zmiany.
Wersja 1.7
Wersja 1.7.8
12 lutego 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.7.8 Wersja 1.7.8 zawiera te zmiany.
Poprawki błędów
- Naprawiono błąd w
BasicTextFieldz transformacją danych wejściowych podczas zastępowania części wklejonego tekstu. (I73702)
Wersja 1.7.7
29 stycznia 2025 r.
Publikacja androidx.compose.foundation:foundation-*:1.7.7 Wersja 1.7.7 zawiera te zmiany.
Poprawki błędów
- Usunięto awarię
IndexOutOfBoundz adnotacją do linku. (Ic96d2) - Rozwiązanie problemu z nieskończonym ponownym komponowaniem w niektórych przypadkach brzegowych z linkami. (I04a03)
Znane błędy
- Wykryliśmy błąd, który w rzadkich przypadkach może powodować nieoczekiwane zawijanie tekstu na urządzeniach z Androidem na poziomie interfejsu API 35. Nie można go rozwiązać w wersji 1.7, więc zostanie naprawiony w wersji 1.8. (b/391378120)
Wersja 1.7.6
11 grudnia 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.7.6 Wersja 1.7.6 zawiera te zmiany.
Poprawki błędów
- Treści wbudowane w tekście stałym nie są widoczne dla usług ułatwień dostępu.
- Rozwiązaliśmy problem, który powodował, że
AndroidEmbeddedExternalSurfacenie resetował się prawidłowo i zawieszał się podczas ponownego użycia na liście leniwej.
Wersja 1.7.5
30 października 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.7.5 Wersja 1.7.5 zawiera te zmiany.
Poprawki błędów
- Sprawdź, czy przypięte elementy nie są dwukrotnie uwzględniane w obszarze dopełnienia treści. (Ic6224)
Wersja 1.7.4
16 października 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.7.4 Wersja 1.7.4 zawiera te zmiany.
Poprawki błędów
- Naprawiliśmy błąd, który powodował rzadkie awarie w polach tekstowych. (I475c6, b/313010266)
- Usunięto
ReusableContentHostu podstawy elementów układu leniwego. Była to potencjalna główna przyczyna awarii „wywołania pomiaru na zdezaktywowanym węźle”. (Id6e60)
Wersja 1.7.3
2 października 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.7.3 Wersja 1.7.3 zawiera te zmiany.
Poprawki błędów
- Naprawiono wyciek pamięci w przypadku
BasicText, gdy minLines ma wartość inną niż domyślna.
Wersja 1.7.2
18 września 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.7.2 Wersja 1.7.2 zawiera te zmiany.
Poprawki błędów
- Rozwiązaliśmy problem z elementem, który można było przeciągać, ale nie miał zdarzeń naciśnięcia, co powodowało, że szybkie przesunięcia wyglądały wolniej niż zwykle.
Wersja 1.7.1
10 września 2024 r.
- Brak zmian w artefaktach Androida. Usunięto
-desktopartefaktów, a dodano-jvmStubsi-linuxx64Stubsartefakty. Żaden z tych celów nie jest przeznaczony do użycia. Są to tylko symbole zastępcze, które mają pomóc w pracach nad Jetbrains Compose.
Wersja 1.7.0
4 września 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.7.0 Wersja 1.7.0 zawiera te zmiany.
Ważne zmiany od wersji 1.6.0
- Znacznie poprawiliśmy wydajność
Modifier.clickable,Modifier.focusable,Modifier.indication,Modifier.scrollableiModifier.draggable. W ramach tych działań wprowadziliśmy te zmiany w interfejsie API oraz zmiany wewnętrzne:- Dodaliśmy nowy interfejs Indication API
IndicationNodeFactory. Dzięki temu wdrożenia sygnałów są bardziej wydajne niż w przypadku poprzedniego (obecnie wycofanego) interfejsurememberUpdatedInstanceAPI. Informacje o migracji znajdziesz na stronie developer.android.com. clickable/combinedClickable/selectable/toggleableakceptuje teraz parametrMutableInteractionSource, który może mieć wartość null. Jeśli wartość jest pusta, a podany element Indication toIndicationNodeFactory, element Indication można utworzyć tylko w razie potrzeby, co zwiększa wydajność. Jeśli nie przenosisz i nie używasz elementuMutableInteractionSource, zalecamy przekazywanie wartości null zamiastremember { MutableInteractionSource() }.- Środowisko wykonawcze
Indication#rememberUpdatedInstancezostało wycofane. Powoduje to duże, nieuniknione obniżenie wydajności i uniemożliwia inne optymalizacje. Zamiast tego używaj nowego interfejsuIndicationNodeFactoryAPI.
- Dodaliśmy nowy interfejs Indication API
BasicTextFieldza pomocąTextFieldStatejest już stabilne i zalecamy wszystkim witrynom wywołań rozpoczęcie migracji zBasicTextField(value, onValueChange)naBasicTextField(TextFieldState).- Środowisko wykonawcze
ClickableTextzostało wycofane. Aby dodać do tekstu linki, w plikuAnnotatedStringużyj znakuBasicTextz nową adnotacjąLinkAnnotation.LinkAnnotationumożliwia dostosowywanie stylu na podstawie stanu linku (np. zaznaczony, najechany). - Przedstawiamy
ContextualFlowRowiEnhanced FlowRow/ColumnzMaxLinesiOverflow. Z przyjemnością informujemy o ulepszeniach eksperymentalnych funkcjiFlowRowiFlowColumn, które teraz obsługująmaxLinesi przepełnienie, oraz o wprowadzeniu funkcjiContextualFlowRowiContextualFlowColumn. Ta aktualizacja ma na celu zapewnienie komponentów o optymalnej wydajności. KomponentContextualFlow*idealnie sprawdza się w przypadku dużej liczby produktów korzystających z małej konfiguracji maxLines i dynamicznych przycisków „+N zobacz więcej”, a komponentyFlowRowiFlowColumn– w przypadku małej liczby produktów (poniżej 100). Ważne: aby zachować dotychczasowe działanie wFlowRowlubFlowColumn, gdzie wszystkie elementy są komponowane niezależnie od tego, czy mieszczą się w maksymalnej wartości osi poprzecznej, ustaw podczas inicjowania wartość przepełnienia naFlowRowOverflow.VisiblelubFlowColumnOverflow.Visible. Przykłady działania tych nowych funkcji znajdziesz w sekcjachContextualFlowRowSampleiFlowRowSample. (Ib9135, b/293577082) - Dodaliśmy obsługę animacji pojawiania się i znikania elementów w
LazyColumniLazyRow. Wcześniej można było dodać modyfikatorModifier.animateItemPlacement(), aby obsługiwać animacje umieszczania (zmiany kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikatorModifier.animateItem(), który umożliwia obsługę wszystkich 3 rodzajów animacji: pojawiania się (zanikanie), znikania (zanikanie) i zmiany kolejności. (I2d7f7, b/150812265) - Wprowadziliśmy eksperymentalną obsługę długich zrzutów ekranu w kontenerach przewijania Compose za pomocą oficjalnego interfejsu Android API (
ScrollCaptureCallback). - Źródła
NestedScrollDrag and Fling są zastępowane przezUserInputiSideEffect, aby uwzględnić rozszerzoną definicję tych źródeł, która obejmuje teraz animacje (Side Effect) oraz kółko myszy i klawiaturę (UserInput). LazyLayoutżądania wstępnego pobierania mogą być teraz oznaczane jako pilne, co oznacza, że spodziewamy się, że ten element będzie potrzebny w następnej klatce, i chcemy zignorować budżet klatki, aby wykonać więcej pracy z wyprzedzeniem (Id513f);- Obsługa pisma odręcznego rysikiem na urządzeniach z Androidem U i nowszym. (I002e4)
- Różne interfejsy API zostały przeniesione do wersji stabilnej.
- Powiadomienia, przyciąganie, wstawki okien
Wersja 1.7.0-rc01
21 sierpnia 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.7.0-rc01 Wersja 1.7.0-rc01 zawiera te zmiany.
Poprawki błędów
- Naprawiliśmy regresję, która powodowała awarię, gdy dowolny element był zaznaczony w elemencie nadrzędnym, który można zaznaczyć (lub kliknąć) i który był wyłączony. (b/317561689)
Wersja 1.7.0-beta07
7 sierpnia 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.7.0-beta07 Wersja 1.7.0-beta07 zawiera te zmiany.
Poprawki błędów
- Funkcje związane z wprowadzaniem tekstu
SemanticsNodeInteraction,performTextReplacement,performTextInputiperformTextClearancebędą teraz zgłaszać błędy asercji, gdy zostaną wywołane w przypadkuTextFieldstylko do odczytu. (I4ae8f) - Naprawiliśmy błąd wizualny w hiperlinkach. (I23311)
- Rozwiązanie problemu polegającego na tym, że modyfikator
contentReceivernie działał z niektórymi edytorami IME. - Generowanie prędkości: zapobieganie propagacji wartości NaN w interfejsie Compose i bibliotece Foundation.
Wersja 1.7.0-beta06
24 lipca 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.7.0-beta06 Wersja 1.7.0-beta06 zawiera te zmiany.
Wersja 1.7.0-beta05
10 lipca 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.7.0-beta05 Wersja 1.7.0-beta05 zawiera te zmiany.
Poprawki błędów
- Poprawka dotycząca traktowania wartości NaN w
SnapFlingBehaviori Pager.
Wersja 1.7.0-beta04
26 czerwca 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.7.0-beta04 Wersja 1.7.0-beta04 zawiera te zmiany.
Poprawki błędów
- Unikanie awarii podczas pomiaru bardzo długich wierszy tekstu (np.10 tys. znaków) (8157ab)
- Poprawiono pomiar bardzo dużego tekstu, który powodował awarię w nowej wersji
BasicTextField(6b7575). - Przywraca zmianę w pomiarze wierszy i kolumn, która w określonych scenariuszach powoduje nieprawidłowe działanie tekstu (69e8ba).
Wersja 1.7.0-beta03
12 czerwca 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.7.0-beta03 Wersja 1.7.0-beta03 zawiera te zmiany.
Wersja 1.7.0-beta02
29 maja 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.7.0-beta02 Wersja 1.7.0-beta02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaje eksperymentalny interfejs API do konfigurowania zachowania wstępnego pobierania w przypadku
LazyGrids, podobny do istniejącego eksperymentalnego interfejsu API dlaLazyLists. Obejmuje to obsługę wstępnego pobierania elementów w zagnieżdżonych elementachLazyGrids. Podobnie jak w przypadkuLazyListPrefetchStrategydomyślna implementacja polega na wstępnym pobieraniu pierwszych 2 zagnieżdżonych elementów każdej siatki, ale można to skonfigurować za pomocą nowych interfejsów APILazyGridPrefetchStrategy(nestedPrefetchItemCount)iLazyListPrefetchStrategy#onNestedPrefetch. (I591c4) - Zmieniliśmy nazwę
SemanticsProperties.EditablenaIsEditablei zmieniliśmy wartośćSemanticsPropertyReceiver.editablenaisEditable. Właściwość jest teraz wartością logiczną i zawsze jest określana przez pola tekstowe. (I8acd8) - Przeniesiono wartości domyślne
basicMarqueedo obiektuMarqueeDefaults. (I12ff6) - Zmieniono nazwę parametru
basicMarqueedelayMillisnarepeatDelayMillis. (I12ff6) - Aktualizacja interfejsu API do stylizowania linków: przeniesiono
TextLinkStylesdoTextStylei usuniętoTextDefaultsz materiału (I5477b)
Poprawki błędów
- Nazwa
LayoutCoordinates.introducesFrameOfReferencezostała zmieniona naLayoutCoordinates.introducesMotionFrameOfReference, aby lepiej odzwierciedlała jej przeznaczenie. Zmieniono nazwę powiązanej funkcji, aby obliczać współrzędne na podstawie tej flagi. (I3a330) - Usunęliśmy wartość „Domyślna” z właściwości
MarqueeDefaults. (I1d8a0) - Usunięto „Marquee” z usług
MarqueeDefaults. (Iad4f4) - Usunięto użytkownika
TextLinkStylesz zajęćTextStyle. Zamiast tegoTextLinkStylesjest częścią konstruktoraLinkAnntationi metodyAnnotatedString.fromHtml(I90b2b). - Naprawiliśmy błąd, który powodował, że komponent Pager zatrzaskiwał się podczas przesuwania w kierunku granicy, gdy był już na niej zatrzymany. (I9f373, b/339171222)
- W BTF2 są teraz prawidłowe gesty wyboru myszą. (Ibe8c6)
Wkład zewnętrzny
- Ponowne przesłanie „Make compose/measure time calculation content-type based in prefetch to improve accuracy” (Iea622)
- Obliczanie czasu tworzenia/pomiaru na podstawie typu treści w wstępnym pobieraniu, aby zwiększyć dokładność (Ibccb1)
- Udostępnianie modyfikatorów
WindowInsetsPaddingze wspólnego zbioru źródeł (I070b2)
Wersja 1.7.0-beta01
14 maja 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.7.0-beta01 Wersja 1.7.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Właściwość
KeyboardOptions.shouldShowKeyboardOnFocuszostała ponownie dodana jako wycofana i ukryta ze względu na zgodność binarną. (I15cfe) Modifier.anchoredDraggabledomyślnie odwraca teraz delty przeciągania w przypadku komponentów o orientacji poziomej, gdy są one używane w układzie od prawej do lewej. (I3c6d9)AnnotatedString.hasEqualsAnnotationsto terazhasEqualAnnotations. (I685c0)- Zaktualizowano interfejs API do pobierania linków w tekście w motywie Material. W szczególności usunęliśmy metody z
TextDefaultsdo tworzenia tematycznychLinkAnnotationsi parsowania kodu HTML z tematycznymi linkami. Zamiast tego dodaliśmy klasęTextLinkStyles, która umożliwia stylowanie linków jako parametru funkcji kompozycyjnej Text. (I31b93) - Zastąpiono wywołania zwrotne
onDragStartedionDragStoppedwywołaniami zwrotnymi, które nie zawieszają działania. (I59de8)
Poprawki błędów
- Usunęliśmy błąd, który powodował awarię komponentu Pager, gdy wartość
contentPaddingbyła większa niż ograniczenia przychodzące. Pager wymusza teraz, aby wartości ujemne zwracane przezPageSizebyły równe 0. (Iba5d8, b/314008560)
Wersja 1.7.0-alpha08
1 maja 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.7.0-alpha08 Wersja 1.7.0-alpha08 zawiera te zmiany.
Nowe funkcje
- Dodaliśmy menu kontekstowe po kliknięciu prawym przyciskiem myszy ikon
BasicTextFieldiSelectionContainerz opcjami wycinania, kopiowania, wklejania i zaznaczania wszystkich elementów. (If8c93, Ia2b49, I6f268)
Zmiany w interfejsie API
- Żądania wstępnego pobierania
LazyLayoutmożna teraz oznaczać jako pilne, co oznacza, że spodziewamy się, że ten element będzie potrzebny w następnej klatce, i chcemy zignorować budżet klatki, aby wykonać więcej pracy z wyprzedzeniem (Id513f). - Zmieniono nazwę
isPositionedByParentWithDirectManipulationnaintroducesFrameOfReference. Pamiętaj, że teraz ma odwrotny efekt, co oznacza, że domyślnie większośćLayoutCoordinateswprowadza ramkę odniesienia, a właściwość ma wartość fałsz tylko wtedy, gdy jest poddawana bezpośredniej manipulacji. Aby wysłać zapytanie o pozycję tylko w przypadku tych, które wprowadzają ramę odniesienia, użyj znakupositionInLocalFrameOfReference(...). lubpositionInLocalLookaheadFrameOfReferencezLookaheadScope. (Ifc5f7) - Zmieniono nazwę
onClickednaonClickwLinkInteractionListener(Iaa35c) - Zmień funkcję lambda działania w przypadku
getScrollViewportLengthzgodnie z opinią rady ds. API. (Ibc74a) - Zmieniliśmy nazwy interfejsów API do przekazywania pisma odręcznego rysikiem. (Ica45f, b/327271923)
- Zmień nazwę
TextInclusionStrategy.isInsidenaisIncluded. Ustaw zwracany typParagraph/MultiParagraph#getRangeForRect()jako niepusty. (I51f26)
Poprawki błędów
- Dodaliśmy opcję „Zaznacz wszystko” do wszystkich menu kontekstowych tekstu w
SelectionContainer. (Ib750e, b/240143283) - Naprawiliśmy robienie długich zrzutów ekranu w przypadku przewijanych kontenerów z
reverseScrolling=true. (I7c59c) - Rozwiązaliśmy problem, który powodował zmianę
currentValueAnchoredDraggableStatepodczas zbliżania się do granic stanu. (Iea30b, b/333846848)
Wkład zewnętrzny
- Nazwa
PrefetchExecutor->PrefetchSchedulerzostała zmieniona, aby lepiej odzwierciedlać zakres obowiązków. (Ib9154) - Dodano obsługę wstępnego pobierania elementów w zagnieżdżonych komponentach
LazyLists(np. w komponencieLazyColumn, który renderuje zagnieżdżony komponentLazyRows). Oczekuje się, że ta zmiana zmniejszy liczbę pominiętych klatek podczas przewijania tych komponentówLazyLists. Domyślnie implementacja pobiera wstępnie pierwsze 2 zagnieżdżone elementy, 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.
Publikacja androidx.compose.foundation:foundation-*:1.7.0-alpha07 Wersja 1.7.0-alpha07 zawiera te zmiany.
Nowe funkcje
- Dodano obiekt
TextDefaults, który zawiera metody tworzenia obiektuLinkAnnotationi analizowania ciągu znaków z tagami HTML, które stosująMaterialThemedo linków. (I98532, b/139312671) - Dodaliśmy obsługę animacji pojawiania się i znikania elementów w
LazyVerticalGridiLazyHorizontalGrid. Wcześniej można było dodać modyfikatorModifier.animateItemPlacement(), aby obsługiwać animacje umieszczania (zmiany kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwieModifier.animateItem(), który umożliwia obsługę wszystkich 3 rodzajów animacji: pojawiania się (zanikanie), znikania (zanikanie) i zmiany kolejności. (Ib7d12, b/330510929) - Dodaliśmy obsługę animacji pojawiania się i znikania elementów w
LazyVerticalStaggeredGridiLazyHorizontalStaggeredGrid. Wcześniej można było dodać modyfikatorModifier.animateItemPlacement(), aby obsługiwać animacje umieszczania (zmiany kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikatorModifier.animateItem(), który umożliwia obsługę wszystkich 3 rodzajów animacji: pojawiania się (zanikanie), znikania (zanikanie) i zmiany kolejności. (I69bc9, b/330511290)
Zmiany w interfejsie API
- Dodaje
ContextMenuColorsi powiązany z nimLocalContextMenuThemeProvidableCompositionLocal. Kolory menu kontekstowego w polach tekstowych i tekście, który można zaznaczyć, można modyfikować, podając lokalizację kompozycji. (Ifa154) - Linki tekstowe mają teraz opcję stylu stanu naciśnięcia oprócz normalnego stylu, stylu po najechaniu kursorem i stylu po zaznaczeniu. (I5f864, b/139312671)
- Wprowadź
ViewConfiguration.HandwritingGestureLineMargindla gestów pisma odręcznego. Obsługa gestu pisania odręcznego w przypadku językaBasicTextField. (Ie6e13, b/325660505) - Usunęliśmy
DelegatableNode.scrollIntoVieww wersji 1.7, ponieważ nie mieliśmy czasu na ustabilizowanie pozostałej części powiązanego interfejsu API. Ta funkcja zostanie ponownie wprowadzona w wersji 1.8 (I6cf61, b/333421581, b/332900232). - Podczas wysyłania zapytań o współrzędne układu możesz teraz używać argumentu
excludeDirectManipulationOffset, aby wykluczyć przesunięcie ustawione przez układy nadrzędne, które umieściły elementy podrzędne za pomocą argumentuPlaceable.PlacementScope.withDirectManipulationPlacement. Podobnie układ, który często zmienia pozycję elementów podrzędnych, może teraz umieszczać je za pomocąwithDirectManipulationPlacement(np. Scroll, zaimplementowany domyślnie). Dzięki temu animacje oparte naapproachLayoutsą bardziej intuicyjne, ponieważ użytkownicy mają teraz możliwość rozróżniania, które przesunięcie ma być animowane, a które ma być stosowane bezpośrednio podczas decydowania o animowaniu swojego podejścia. (I60ec7) - Przedstaw
requestScrollToItemzaLazyStaggeredGrid. W przypadku każdego przejścia pomiaru klient może zrezygnować z utrzymywania indeksu na podstawie klucza, wywołując funkcjęrequestScrollToItem. Nie zmienia to w żaden sposób dotychczasowego działania, chyba że zostanie wywołana funkcjarequestScrollToItem. (I63983) - Przedstawiamy
requestScrollToPagew Pagerze. W przypadku każdego przejścia pomiaru klient może zrezygnować z utrzymywania indeksu na podstawie klucza, wywołując funkcjęrequestScrollToPage. Nie zmienia to w żaden sposób dotychczasowego działania, chyba że zostanie wywołana funkcjarequestScrollToPage. (Ic4213) - Wprowadzono
requestScrollToItemw przypadkuLazyGrids. W przypadku każdego przejścia pomiaru klient może zrezygnować z utrzymywania indeksu na podstawie klucza, wywołując funkcjęrequestScrollToItem. Nie zmienia to w żaden sposób dotychczasowego działania, chyba że zostanie wywołana funkcjarequestScrollToItem. (I0a7a0) ClickableTextjest oznaczony jako wycofany. Aby dodać linki do tekstu, utwórzAnnotatedStringzLinkAnnotationodpowiadającym linkowi i przekaż ten elementAnnotatedStringdo funkcji kompozycyjnejText(I34d4b, b/323346994).- Metoda
UrlAnnotationzostała wycofana. Zamiast niej używaj metodyLinkAnnotation.Url. Jeśli używasz motywu Material Design, użyj obiektuTextDefaults, aby utworzyć adnotację z zastosowanym motywem Material Design (I8d180, b/323346545). String.parseAsHtmlNazwa zmieniona naAnnotatedString.Companion.fromHtml(I43dcd)- Dodano argumenty stylu (
linkStyle,focusedLinkStyle,hoveredLinkStyle) i funkcję nasłuchiwania interakcji z linkiem do metodyparseAsHtml. Podczas analizowania ciągu znaków z tagami HTML z tagami<a>metoda utworzy obiektLinkAnnotation.Urldla każdego takiego tagu i przekaże obiekty stylu oraz odbiornik interakcji z linkiem do każdej adnotacji. (I7c977) LinkAnnotationprzyjmuje teraz argumenty stylizacji opartej na stanie i wartośćLinkInteractionListener. Dodaj tę adnotację doAnnotatedString, aby uzyskać hiperlink. Przekazując wartościfocusedStatelubhoveredState, możesz zdefiniować konfigurację wizualną linków, gdy są one zaznaczone lub nad nimi znajduje się kursor. (I81ce4, b/139312671)- Flaga funkcji długich zrzutów ekranu została usunięta. (I28648, b/329128246)
LazyColumnbędzie teraz prawidłowo renderować przyklejone nagłówki na długich zrzutach ekranu. (I8d239, b/329296635)- Stabilizacja większości pozostałych eksperymentalnych interfejsów API wprowadzonych w nowej wersji
BasicTextField. (I714e2) - Dodano parametr
textObfuscationCharacterdoBasicSecureTextField, który określa, jakiego znaku używać podczas zaciemniania treści. (I0588b) - Źródła
NestedScrollDrag i Fling zostaną zastąpione źródłamiUserInputiSideEffect, aby uwzględnić rozszerzoną definicję tych źródeł, która obejmuje teraz animacje (Side Effect) oraz kółko myszy i klawiaturę (UserInput). (I40579) - Wprowadź
LocalBringIntoViewSpec, czyli zależne od platformy zachowanie przewijania, które jest stosowane w warstwie modyfikatora Scrollable. (I27aa5, b/317453911) - Kontakt
TextFieldCharSequencezostał usunięty.TextFieldBuffer.originalValueszastąpiono wartościamiTextFieldBuffer.originalTextiTextFieldBuffer.originalSelection. (I2c7d6) ImeOptions.hintLocalesnie może już przyjmować wartości null. Jeśli chcesz przekazać pustą listę ustawień regionalnych, użyjLocaleList.Empty. (Ic5bc4)- Zmieniono nazwę
getOffsetFractionForPagenagetOffsetDistanceInPages. (Ia05e2)
Poprawki błędów
- Gdy
InputTransformationssą połączone znext, ichKeyboardOptionssą teraz prawidłowo scalane według poszczególnych opcji za pomocą nowej metodyKeyboardOptions.merge. (Ie5304, b/295951492) AnchoredDraggableStatetargetValuenie bierze już pod uwagę progów pozycji. Ma teraz domyślny próg 50%, co oznacza, żetargetValuezmienia się w połowie odległości między 2 punktami zakotwiczenia. (I82c2c)
Wkład zewnętrzny
- Zmiana nazw 2 interfejsów API przewijania (I56a75)
Wersja 1.7.0-alpha06
3 kwietnia 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.7.0-alpha06 Wersja 1.7.0-alpha06 zawiera te zmiany.
Nowe funkcje
- Dodaliśmy obsługę animacji pojawiania się i znikania elementów w
LazyColumniLazyRow. Wcześniej można było dodać modyfikatorModifier.animateItemPlacement(), aby obsługiwać animacje umieszczania (zmiany kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwieModifier.animateItem(), który umożliwia obsługę wszystkich 3 rodzajów animacji: pojawiania się (zanikanie), znikania (zanikanie) i zmiany kolejności. (I2d7f7, b/150812265) - Klienci
LazyColumn/LazyRowmogą teraz zrezygnować z utrzymywania indeksu opartego na kluczu dla nadchodzącego pomiaru, wywołując funkcjęLazyListState.requestToScroll, która nie zawiesza działania. (I98036, b/209652366) - Dodaliśmy metodę
parseAsHtmldla ciągów ze stylami: umożliwia ona przekształcenie ciągu oznaczonego tagami HTML wAnnotatedString. Pamiętaj, że nie wszystkie tagi są obsługiwane. Na przykład nie możesz jeszcze wyświetlać list punktowanych. (I84d3d) - Wprowadziliśmy eksperymentalną obsługę długich zrzutów ekranu w kontenerach przewijania Compose przy użyciu oficjalnego interfejsu Android API (
ScrollCaptureCallback). Ta funkcja jest eksperymentalna i może obecnie nie obsługiwać wszystkich przypadków prawidłowo. Z tego powodu jest ona obecnie domyślnie wyłączona. Aby włączyć tę funkcję, ustaw flagęComposeFeatureFlag_LongScreenshotsEnabledna wartość true. Ten tag zostanie usunięty przed wersją beta 1.7. (I2b055, b/329296471) - Wprowadzenie nowego interfejsu
GraphicsLayerAPI, który zapewnia większą elastyczność w zakresie umieszczania i renderowania instancjiGraphicsLayeroraz obsługuje wbudowane funkcje renderowania bez konieczności koordynowania z implementacjami funkcji Composable w celu określenia instancji modyfikatoraGraphicsLayer.
Zmiany w interfejsie API
- Wszystkie parametry
KeyboardOptionsmają teraz domyślnie wartość nieokreśloną. Dodaliśmy metodęKeyboardOptions.merge. - Zmieniliśmy nazwę atrybutu
KeyboardOptions.autoCorrectnaautoCorrectEnabledi umożliwiliśmy przypisywanie mu wartości null, która oznacza, że nie określono żadnej wartości. (Ia8ba0, b/295951492) - Zmieniono nazwę
outOfBoundsPageCountnabeyondViewportPageCount. (I129c6) - Wartość
fun ClipEntry.getMetadata()została zmieniona naval ClipEntry.clipMetadata. (I50155) - Kontakt
TextFieldState.valueAsFlow()został usunięty. Preferuj używaniesnapshotFlow { state.text }lubsnapshotFlow { TextFieldCharSequence(state.text, state.selection) }(I7d629). - Zmieniliśmy kolejność parametrów
InputTransformation.transformInput. UsuniętooriginalValue: TextFieldCharSequence. Zamiast tegoTextFieldBufferma teraz tę wartość o tej samej nazwie. Usunęliśmy też parametrvalueWithChanges: TextFieldBuffer.TextFieldBufferjest teraz zakresem odbiorcy funkcji. (I919cc) - Warianty
BasicTextField(state)iBasicSecureTextFieldużywają terazKeyboardActionHandlerzamiastKeyboardActionsdo przetwarzania działań wykonywanych przez klawiaturę ekranową. (I58dda) - Interfejsy API delegowania pisma odręcznego rysikiem, które obsługują pisanie odręczne rysikiem w „fałszywych” polach do wprowadzania tekstu. (I9c09c, b/327271923)
- Zmieniono nazwę
KeyboardOptions.shouldShowKeyboardOnFocusnashowKeyboardOnFocus. (Ib4b7a, b/295951492) - Usunięto parametr
hintMediaTypesz funkcjiModifier.contentReceiver. Zachęcaliśmy już deweloperów do sprawdzania typu multimediów w otrzymanym żądaniuTransferableContent, ponieważ może on być niezgodny ze skonfigurowanym żądaniemhintMediaTypes. (I82f99) - Zmieniono kolejność parametrów funkcji
BasicSecureTextField. Usunięto parametrykeyboardTypeiimeActionna rzecz pełnej klasyKeyboardOptions, zachowując te same wartości domyślne odpowiednie dlaBasicSecureTextField. Usunęliśmy też parametrscrollState. (Ibbfa9) - Typ
TextFieldState.textzostał zmieniony zTextFieldCharSequencenaCharSequence. Dlatego dodaliśmyTextFieldState.selection: TextRangeiTextFieldState.composition: TextRange?, aby odczytywać bieżące wartości wyboru i kompozycji bezpośrednio z obiektu stanu. - Kontakt
TextFieldState.forEachTextValuezostał usunięty. (Idb2a2) - Usunięto funkcje
ClipboardManager.getClipMetadataiClipboardManager.hasClip. Aby odczytać metadane bieżącego wpisu klipu, użyjclipEntry.getMetadata(). Sprawdź też wynikClipboardManager.getClip, aby dowiedzieć się, czy schowek zawiera bieżący klip. (I50498) ClipboardManager.setClipakceptuje teraz wartość null, aby można było wyczyścić schowek. (I7d2e9)ReceiveContentListenerjest przekształcana w interfejs funkcji. Usunięto też przeciążenieModifier.receiveContent, które przyjmuje lambdę, ponieważReceiveContentListenerjest teraz interfejsem funkcji.- Nazwa
Modifier.receiveContentzostała zmieniona naModifier.contentReceiver. (I1e6af) - Zmieniono nazwę
TransferableContent.consumeEachnaTransferableContent.consume. (I1e462) rememberTextFieldStatezostał przeniesiony do stabilnej wersji interfejsu API. (I37999)
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że wariant
BasicTextField(state)nie działał z klawiaturami CJK(opartymi na kompozycji). (I54425) - Usunęliśmy błąd, w którym w określonych scenariuszach z ponownym użyciem
Modifier.NodefunkcjaModifier.dragAndDropTarget()mogła odwoływać się do nieaktualnych danych. (I05bb1) - Cofnięto niedawną zmianę umowy, w której połączenia
AnchoredDraggableState#anchoredDragbyły zamykane po zakończeniu operacjianchoredDrag. (I95715)
Wersja 1.7.0-alpha05
20 marca 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.7.0-alpha05 Wersja 1.7.0-alpha05 zawiera te zmiany.
Zmiany w interfejsie API
- Usunięto eksperymentalną kompozycję
LocalTextLinkStyledo lokalnego stylizowania hiperlinków. (Iebfa7) - Usunięto eksperymentalne zastąpienie
BasicTextz argumentemonLinkClicked. W przyszłości udostępnimy interfejs API zastępujący obsługę hiperlinków. (I107d5) - Usunęliśmy metody i właściwości związane z punktami kodowymi w sekcjach
TextFieldStateiTextFieldBuffer. Usunięto też sufiksyinCharsz pozostałych interfejsów API związanych z wyborem i kompozycją. (Ief7ce) currentValueAnchoredDraggablebędzie teraz aktualizować się po przejściu przez punkt zakotwiczenia. UżyjsettledValue, aby otrzymać poprzednią semantykęcurrentValue, aktualizując tylko wtedy, gdy osiedlisz się w miejscu docelowym. Postęp jest teraz udostępniany jako funkcja (wymagająca punktu początkowego i końcowego), a nie jako właściwość. (Ibe6e8, b/318707189, b/298271489, b/294991954)BasicTextField(state),TextFieldState,InputTransformation,OutputTransformation,TextFieldLineLimits,TextFieldDecoratorsą stopniowo przekształcane w wartości stałe. (I9582b)- Wprowadziliśmy
InterceptPlatformTextInput, aby ułatwić pisanie testów niskiego poziomu związanych z IME i innych przypadków użycia IME niskiego poziomu. Środowisko wykonawczePlatformTextInputTestOverridezostało wycofane. (I862ed, b/322680547) - Podzielenie funkcji
restrictedConstraints()na 2 metody:fitPrioritizingWidth()ifitPrioritizingHeight()(I6d7fd)
Wkład zewnętrzny
- Dodano 2 nowe interfejsy API
isLastScrollForward/isLastScrollBackward, aby sprawdzać kierunek przewijania w przypadku ostatniej czynności przewijania. Jeśli nie wykonano jeszcze żadnej czynności przewijania, zwracana jest wartość „false”. (I63a0e)
Wersja 1.7.0-alpha04
6 marca 2024 roku
Publikacja androidx.compose.foundation:foundation-*:1.7.0-alpha04 Wersja 1.7.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Obsługa pisma odręcznego rysikiem na urządzeniach z Androidem U i nowszym. (I002e4)
- Dodano
hintLocalesdoKeyboardOptions, aby umożliwićTextFieldspodpowiadanie edytorom IME konkretnych ustawień regionalnych w celu wstępnego ustawienia preferowanego języka. (Id18c2) - Usunięto eksperymentalne przeciążenia funkcji
BasicTextField2iBasicSecureTextField, które przyjmowały parametryvalue: StringionValueChange: () -> String. (I568b4) - Dodaj opcjonalną funkcję
applySemanticsdoInputTransformation, aby wpłynąć na semantykę elementuBasicTextField2, do którego jest ona stosowana. (I74a2f, b/170648072) - W tym CL dodajemy
GetScrollViewportLengthdziałanie semantyczne, abyśmy mogli przekazywać do systemu ułatwień dostępu informacje o komponentach przewijanych w kompozycji. Ta zmiana dotyczy też użycia tej właściwości w listach przewijanych Foundation. (Ic5fa2) - Nazwa
BasicTextField2została zmieniona naBasicTextField. (Ie5713) FocusRequester.createRefsjest teraz stabilna (I4d92c, b/261436820)- Wprowadziliśmy
DelegatableNode.scrollIntoView(), aby umożliwić węzłom modyfikatorów bezpośrednie wysyłaniescrollIntoView. (I2b3b7, b/299939840) - Wprowadzono
DelegatableNode.requireView(), aby umożliwić węzłom modyfikatorów uzyskiwanie bieżącegoViewAndroida bez odczytywania lokalnej kompozycji. (I40768) - Wprowadziliśmy informacje o układzie kontekstowym w zakresie wiersza przepływu kontekstowego i zakresie kolumny przepływu kontekstowego, w tym indeks wiersza, pozycję i ograniczenia maksymalnej szerokości i wysokości, aby zachować określoną pozycję. Elementy przekraczające maksymalną szerokość lub wysokość mogą zostać przeniesione do następnego wiersza lub pominięte w zależności od ustawień przepełnienia. (Id13f8, b/292114798)
Poprawki błędów
- Usunęliśmy błąd, który w określonych warunkach powodował awarię podczas przełączania atrybutów
enabledlubreadOnlyelementuTextField. (Iae17b)
Wersja 1.7.0-alpha03
21 lutego 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.7.0-alpha03 Wersja 1.7.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wprowadziliśmy
DelegatableNode.requireLayoutCoordinates()jako sposób na uzyskanie bieżącegoModifier.NodeLayoutCoordinatesbez konieczności zastępowaniaonPlacedi samodzielnego przechowywania współrzędnych we właściwości. (Ia8657) - Wprowadziliśmy
DelegatableNode.currentLayoutCoordinatesjako sposób na uzyskanie bieżącegoModifier.NodeLayoutCoordinatesbez konieczności zastępowaniaonPlacedi samodzielnego przechowywania współrzędnych we właściwości. (Iaebaa) - Optymalizacje skuteczności w
DraggableAnchorsużywane przezAnchoredDraggable. (I89cff) - Interfejs API
BasicTextField2i powiązane interfejsy API w pakiecieandroidx.compose.foundation.text2zostaną przeniesione do pakietuandroidx.compose.foundation.text. (I9f635) BasicTextField2nie akceptuje już parametruCodepointTransformation. UżyjBasicSecureTextFieldlubOutputTransformation. (Id34ff)- Dodano metodę porównywania tylko adnotacji dwóch
AnnotatedStrings. (I32659) - Przedstawiamy
ContextualFlowRowi ulepszoneFlowRow/ColumnzMaxLinesiOverflow. Z przyjemnością informujemy o ulepszeniach eksperymentalnych funkcjiFlowRowiFlowColumn, które teraz obsługująmaxLinesi przepełnienie, oraz o wprowadzeniu funkcjiContextualFlowRowiContextualFlowColumn. Ta aktualizacja ma na celu udostępnienie komponentów o optymalnej wydajności. KomponentContextualFlow*doskonale sprawdza się w przypadku dużej liczby produktów korzystających z małej konfiguracjimaxLinesoraz dynamicznych przycisków „+N więcej”, a komponentyFlowRowiFlowColumnsą idealne w przypadku małej liczby produktów, czyli mniej niż 100. Ważne: aby zachować dotychczasowe działanie w przypadkuFlowRowlubFlowColumn, gdzie wszystkie elementy są tworzone niezależnie od tego, czy mieszczą się w maksymalnej wartości osi poprzecznej, podczas inicjowania ustaw wartośćoverflownaFlowRowOverflow.VisiblelubFlowColumnOverflow.Visible. Przykłady działania tych nowych funkcji znajdziesz w sekcjachContextualFlowRowSampleiFlowRowSample. (Ib9135, b/293577082)
Poprawki błędów
- Animacja kursora nie wysyła już żądań klatek między stanami włączonym i wyłączonym. (Ia2253)
KeyboardOptions' przestarzałe konstruktory kopiujące będą teraz prawidłowo kopiować wszystkie właściwości. (If12de)
Wersja 1.7.0-alpha02
7 lutego 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.7.0-alpha02 Wersja 1.7.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
HorizontalPager,VerticalPageriPagerStatezostały przeniesione do wersji stabilnej. (I67660, b/316966909)- Dodano lokalizację kompozycji
LocalTextLinkStyle, która umożliwia zmianę stylu linków w tekście w całej aplikacji. Jeśli używasz w aplikacji własnego motywu, musisz ustawić tę lokalizację kompozycji zgodnie z motywem. Gdy używasz motywu Material, kolor linku jest domyślnie ustawiony na kolor podstawowy Material. (I7eb10) - Wprowadzono modyfikator
receiveContent, który umożliwia deweloperom otrzymywanie szczegółowych treści w Jetpack Compose. receiveContentjest zintegrowany zBasicTextField2, aby akceptować szczegółowe treści dostarczane przez klawiaturę ekranową lub wklejane ze schowka. (I81b72)- W tej zmianie zastępujemy
SnapFlingBehavioroperatoremTargetedFlingBehaviorw pagerze, aby umożliwić inne zastosowania i zapewnić większą elastyczność. (I762ea) - W ramach tej zmiany udostępniamy interfejsy Snapping API w wersji stabilnej. Usuwamy też część kodu testowego i dodajemy więcej przykładów do funkcji przyciągania. (Id8da9)
- Wprowadziliśmy
TargetedFlingBehavior, czyliFlingBehavior, który umożliwia propagowanie informacji o stanie trwającej animacji i jej docelowym przesunięciu przewijania. (I6a207)
Poprawki błędów
BasicTextField2utrzymuje teraz kursor w polu widzenia podczas pisania, gdy został on przewinięty poza pole widzenia lub gdyby miał się z niego przesunąć z powodu wprowadzania tekstu. (Ieb856, b/237190748)
Wkład zewnętrzny
- Dodaje eksperymentalny interfejs API do konfigurowania zachowania wstępnego pobierania w przypadku LazyList. (I022a4)
Wersja 1.7.0-alpha01
24 stycznia 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.7.0-alpha01 Wersja 1.7.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano nowy
Indication API,IndicationNodeFactory. Dzięki temu wdrożeniaIndicationsą bardziej wydajne niż w przypadku poprzedniego (obecnie wycofanego) interfejsu APIrememberUpdatedInstance. Informacje o migracji znajdziesz na stronie developer.android.com. clickable / combinedClickable / selectable / toggleableakceptuje teraz parametrMutableInteractionSource, który może mieć wartość null. Jeśli wartość jest pusta, a podany elementIndicationjest elementemIndicationNodeFactory, elementIndicationmożna utworzyć tylko w razie potrzeby, co zwiększa wydajność. Jeśli nie używasz funkcji hoistingu iMutableInteractionSource, zalecamy przekazywanie wartości null.
Zmiany w interfejsie API
- Wprowadź
DecayAnimationwAnchoredDraggable. Ta zmiana dodaje parametrdecayAnimationSpecdoAnchoredDraggable, co umożliwia użycie animacji zanikania podczas przechodzenia do jednego z punktów zakotwiczenia. Zmiana obejmuje też zmianę nazwy istniejącego parametruanimationSpecnasnapAnimationSpec, aby ułatwić zrozumienie zastosowania każdej specyfikacji. - Usługa
BasicTextField2jest dostępna do użytku eksperymentalnego. Powinien być w przybliżeniu równoważny zBasicTextFieldpod względem funkcji, a jego działanie powinno być gotowe do wdrożenia w środowisku produkcyjnym. Interfejs API pozostaje jednak na razie w fazie eksperymentalnej. Przed stabilizacją zostanie zmieniona naBasicTextFieldi przeniesiona do tego samego pakietu. - Wprowadziliśmy pierwszą wersję roboczą interfejsu API
OutputTransformationdlaBasicTextField2. Ten interfejs API zastępuje większość przypadków użyciaVisualTransformationw starymBasicTextField. Nie jest on jeszcze kompletny i niektóre funkcje mogą nie działać prawidłowo, ale będziemy wdzięczni za wszelkie opinie na temat użyteczności interfejsu API w Twoich przypadkach użycia. (aosp/2708848) - Wprowadziliśmy
LinkAnnotation, które umożliwia dodawanie linków i elementów klikalnych do tekstu. Funkcja linków nie jest jeszcze w pełni gotowa i wkrótce wprowadzimy w niej więcej zmian w interfejsie API. - Wprowadzono modyfikator
receiveContent, który umożliwia deweloperom otrzymywanie szczegółowych treści w Jetpack Compose. receiveContentjest zintegrowany zBasicTextField2, aby akceptować szczegółowe treści dostarczane przez klawiaturę ekranową lub wklejane ze schowka.KeyboardOptions.shouldShowKeyboardOnFocusumożliwia wyłączenie domyślnego działaniaBasicTextField, czyli wysyłania żądania klawiatury ekranowej po zaznaczeniu.TextInputServiceiLocalTextInputServicezostały wycofane. Zamiast tego użyjPlatformTextInputModifierNode, aby przeprowadzić bezpośrednią integrację z interfejsami API IME platformy. (aosp/2862698)- Środowisko wykonawcze
Indication#rememberUpdatedInstancezostało wycofane. Powoduje to duże, nieuniknione obniżenie wydajności i uniemożliwia inne optymalizacje. Zamiast tego używaj nowego interfejsuIndicationNodeFactoryAPI.
Poprawki błędów
BasicTextFieldbędzie teraz wstępnie weryfikować niewielki wybór mapowań przesunięć, gdy zostanie przekazana wartośćVisualTransformation. Pomaga to wykrywać typowe błędy w kodzie, które prowadzą do nieodwracalnych wyjątków w późniejszych etapach pomiaru lub rysowania. Wyrzucanie podczas kompozycji zwiększa prawdopodobieństwo, że deweloperzy zobaczą te błędy podczas tworzenia, co pomoże uniknąć awarii w środowisku produkcyjnym. (I0fd42)VisualTransformationnie zgłosi błędu, jeśli zwrócisz nieprawidłowy indeks dla nieprawidłowego indeksu (b/316401857 ).
Wersja 1.6
Wersja 1.6.8
12 czerwca 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.6.8 Wersja 1.6.8 zawiera te zmiany.
Wersja 1.6.7
1 maja 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.6.7 Wersja 1.6.7 zawiera te zmiany.
Wersja 1.6.6
17 kwietnia 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.6.6 Wersja 1.6.6 zawiera te zmiany.
Poprawki błędów
- Naprawiliśmy błąd, który w określonych warunkach powodował awarię podczas przełączania atrybutów
enabledlubreadOnlyelementuTextField. (Iae17b)
Wersja 1.6.5
3 kwietnia 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.6.5 Wersja 1.6.5 zawiera te zmiany.
Poprawki błędów
- Dodaje logi debugowania do trudnych do odtworzenia błędów w wierszu lub kolumnie: (b/300280216 i b/297974033)
Wersja 1.6.4
20 marca 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.6.4 Wersja 1.6.4 zawiera te zmiany.
Poprawki błędów
- Gest zaznaczania przez długie naciśnięcie i przeciągnięcie, który w pierwszej klatce przeciągnięcia wykracza poza granice układu tekstu, nie powoduje już awarii. (Icdf90, b/325307463)
Wersja 1.6.3
6 marca 2024 roku
Publikacja androidx.compose.foundation:foundation-*:1.6.3 Wersja 1.6.3 zawiera te zmiany.
Wersja 1.6.2
21 lutego 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.6.2 Wersja 1.6.2 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono problem z nieprawidłowym resetowaniem
AnimateContentSize. (I07051) - Rozwiązaliśmy problem, który w niektórych przypadkach powodował nadmierne buforowanie
intrinsicHeighttekstu. (3cd398, b/217910352)
Wersja 1.6.1
7 lutego 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.6.1 Wersja 1.6.1 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono pomiar siatki schodkowej po przekroczeniu limitu przewijania. (bffc39)
- Dodaj sprawdzanie układu o dużych wymiarach. (e74af5)
- Poprawiono umieszczanie elementów o rozmiarze 0 na początku siatki schodkowej. (785f94)
- Wywołuj wywołanie zwrotne onRelease w tej samej kolejności co onForgotten. (31ce3b)
Wersja 1.6.0
24 stycznia 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.6.0 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 predefiniowanym zestawem punktów zakotwiczenia. Ten modyfikator ma zastąpićModifier.swipeable. Dowiedz się, jak z niego korzystać i jak przeprowadzić migrację zModifier.swipeable, w przewodniku po migracji. - Dodano funkcję przeciągania i upuszczania między aplikacjami i komponentami. Aby rozpocząć, zapoznaj się z interfejsami
DragAndDropTarget,Modifier.dragAndDropSourcei innymi. Modifier.draggable2Dto nowy modyfikator, który umożliwia łatwe przeciąganie w 2D. Zobacz przykład.- Dodaliśmy
AndroidExternalSurfaceiAndroidEmbeddedExternalSurface, aby ułatwić dodawanie komponentów opartych na powierzchni w komponowaniu. - Różne zmiany i ulepszenia interfejsu API w
PagerisnapFlingBehaviour - Różne interfejsy API dotyczące ostrości, tekstu i wstawień zostały przeniesione do stabilnych interfejsów API.
Wersja 1.6.0-rc01
10 stycznia 2024 r.
Publikacja androidx.compose.foundation:foundation-*:1.6.0-rc01 Wersja 1.6.0-rc01 zawiera te zatwierdzenia.
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.
Publikacja androidx.compose.foundation:foundation-*:1.6.0-beta03 Wersja 1.6.0-beta03 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd, który występował w przypadku bardzo dużego tekstu mierzonego z użyciem nieskończonych ograniczeń. (I1a7df, b/312294386)
PlatformImeOptionsjest teraz klasą konkretną zamiast interfejsu. (If40a4)
Wersja 1.6.0-beta02
29 listopada 2023 r.
Publikacja androidx.compose.foundation:foundation-*:1.6.0-beta02 Wersja 1.6.0-beta02 zawiera te zatwierdzenia.
Poprawki błędów
- Poprawka problemu z nieaktualizowaniem się wartości
canScrollpo przewijaniu, które powoduje tylko zmianę układu. (I60a86) - Poprawka dla
Modifier.animateItemPlacement()iLookaheadScopepo niewielkim przewinięciu. (I3a2b7)
Wersja 1.6.0-beta01
15 listopada 2023 r.
Publikacja androidx.compose.foundation:foundation-*:1.6.0-beta01 Wersja 1.6.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Modyfikator
DragAndDropTargetprzyjmuje teraz jawnie odbierającyDragAndDropTargeti ma funkcję lambda, która umożliwia rozpoczęcie sesji przeciągania i upuszczania. Obecnie dostępne są 2 funkcje fabryczne dlaDragAndDropModifierNode. jeden do odbierania przelewów i jeden do przesyłania danych (I69481); - Zaktualizowano wartość
maximumFlingVelocity, aby była reprezentowana jako liczba zmiennoprzecinkowa. Zaktualizowaliśmy dokumentację, aby była bardziej przejrzysta w kwestiimaximumFlingVelocity. (I8adc7) onDragAndDropStartw fabryceDragAndDropModifierNodezostał(a) zmieniony(a) naacceptDragAndDropTransfer.acceptsDragAndDropTransferzostał dodany dodragAndDropTargetModifier, aby akceptować elementy z sesji przeciągania i upuszczania. Ta funkcja lambda zwraca wartość logicznąDragAndDropTarget, jeśli użytkownik jest zainteresowany sesją przeciągania i upuszczania. Zastępuje ona inne funkcje lambda do przetwarzania zdarzeń przeciągania.dodano funkcję fabryczną
DragAndDropTargetdo odbierania danych z sesji przeciągania i upuszczania (Iebf3a);Udostępnienie
startDragImmediatelywAnchoredDraggableumożliwia wykrywanie gestów przeciągania podczas korzystania z tej funkcji. Warto ustawić tę wartość, gdy widżet jest animowany do docelowego elementu zakotwiczonego. Zobacz przykład. (Ie6d13, b/285139987)Interfejsy Foundation Tooltip API są teraz
@ExperimentalFoundationApi(I30b0b)Usunięto
DragAndDropInfojako typ. FunkcjaDragAndDropModifierNode.dragprzyjmuje teraz parametry dla funkcjitransferData, rozmiaru dekoracji i funkcji lambdaDrawScopedekoracji przeciągania.DragAndDropTargetma metody dla poszczególnych zdarzeń przeciągania i upuszczania, a nie jedną metodę abstrakcyjną.onDragAndDropEventw funkcji fabrycznej dlaDragAndDropModifierNodezostała zmieniona naonDragAndDropStart, aby lepiej informować, że podanyDragAndDropTargetjest ważny tylko w przypadku danej sesji przeciągania i upuszczania.Element
DragAndDropEventTypezostał usunięty (I645b1)Zmieniono nazwę
PlatformTextInputModifierNode.runTextInputSessionnaestablishTextInputSession. (I03cd0)Zastąp
OriginalTexttekstemTextSubstitution. (Ifa5a8)Zmieniono nazwę
PlatformTextInputModifierNode.textInputSessionnarunTextInputSession. (Ie9c6b)Elementy podrzędne
SubcomposeLayout(i układy takie jakLazyColumn, które są na nim oparte), które są zachowywane do ponownego użycia w przyszłości, są uważane za wyłączone. Wprowadziliśmy nowy interfejs APIassertIsDeactivated()do testowania takich węzłów. Pozostałe interfejsy API testu będą domyślnie odfiltrowywać zdezaktywowane węzły. (I2ef84, b/187188981)Parametr
clippingEnabledfunkcjiModifier.magnifierzostał zmieniony naclip.Parametr
magnifierCenterfunkcjiModifier.magnifierjest ustawiany jako dopuszczający wartość null, przy zachowaniu tego samego domyślnego działania. (I6aa66)Interfejsy API Material
SwipeToReveal(w przypadku kart i elementów) korzystają teraz z interfejsu API opartego na slotach (zgodnie z zaleceniami Compose) zamiast z instancji opartych na klasach danych, aby tworzyć te sloty. Jest to zmiana powodująca niezgodność wsteczną. Przykłady użycia nowego interfejsu API znajdziesz w wersji demonstracyjnej i przykładowym kodzie. (Ia8943)
Poprawki błędów
- Zaimplementuj metody equals i hashcode dla klasy
PageSize.Fixed. (Ie3ede, b/300134276) - Rozwiązaliśmy błąd, który powodował, że układ
BasicTextnie zmniejszał się, gdy zmieniał się układminWidth, a układminWidthbył mniejszy niż początkowe ograniczenia pomiarumaxWidth(Idb19c). - Dodaliśmy obsługę renderowania gradientu kołowego w
ArcLine. (I4d5bb) - Rozwiązanie problemu ze zgodnością binarną ze zmianą wstawki okna (Iee695)
- Usuń warstwę podstawową materiału w przypadku komponentu lub przycisku Material3, ponieważ testy porównawcze pokazują, że bez niej wydajność jest lepsza. (I55555)
Wersja 1.6.0-alpha08
18 października 2023 r.
Publikacja androidx.compose.foundation:foundation-*:1.6.0-alpha08 Wersja 1.6.0-alpha08 zawiera te zatwierdzenia.
Nowe funkcje
Modifier.draggable2Dto nowy modyfikator, który umożliwia łatwe przeciąganie w 2D. Zobacz Sample (Id95f5, b/214412658)
Zmiany w interfejsie API
- W funkcji
Modifier.dragAndDrawSourcezmieniliśmy nazwę funkcji lambdaonDrawDragShadownadrawDragDecoration, a w funkcjiDragAndDropInfozmieniliśmy nazwę parametru rozmiaru nadragDecorationSize. (Id0e30, b/303904810) - Parametr
decorationBoxfunkcjiBasicTextField2został zmieniony nadecorator. Jego typ zostanie też zmieniony na równoważny interfejs funkcjiTextFieldDecorator. (I23c1c)
Poprawki błędów
- Ulepszona dokumentacja dotycząca
BasicTextFieldw zakresie wymagańonValueChange. (I90fc9, b/160257648)
Wersja 1.6.0-alpha07
4 października 2023 roku
Publikacja androidx.compose.foundation:foundation-*:1.6.0-alpha07 Wersja 1.6.0-alpha07 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wprowadziliśmy
PlatformTextInputMethodTestOverridedo testów pisania w niestandardowych edytorach tekstu. (Id159b) - Nazwa
GraphicsSurfacezostała zmieniona naAndroidExternalSurface(I11680) - Dodaliśmy
DisableNonLinearFontScalingInComposetymczasową flagę, która wyłącza nieliniowe skalowanie czcionki. W testach ustaw wartośćDisableNonLinearFontScalingInCompose = true, jeśli potrzebujesz czasu na ich uporządkowanie. Ten atrybut zostanie usunięty w Compose 1.6.0-beta01. (Ic9486) - Dodano kolekcje
ColorListiColorSet, które unikają przydzielania. (I744bd) - Ta zmiana usuwa
shortSnapVelocityThreshold, które stało się szczegółem implementacjiSnapLayoutInfoProvider. (I65f6d) - Dodaje modyfikator
dragAndDropSourcedo rozpoczynania sesji przeciągania i upuszczania oraz modyfikatordragAndDropTargetdo odbierania danych z sesji przeciągania i upuszczania (Ib7828, b/286038936) - Zaktualizuj dokumentację
SnapPositionInLayouti metodę określania pozycji. Wprowadź do metody pozycjonowania wSnapPositionInLayoutdopełnienie treści. (Id7938, b/300116110) - Dodaliśmy
UndoStatedoTextFieldState, która umożliwia cofanie i ponawianie zmian wprowadzonych przez użytkownika. (Icc024)
Poprawki błędów
- Naprawiono problem z brakiem animacji elementu stałego
basicMarqueepo zmianie prędkości. (Id2e77, b/297974036)
Wersja 1.6.0-alpha06
20 września 2023 r.
Publikacja androidx.compose.foundation:foundation-*:1.6.0-alpha06 Wersja 1.6.0-alpha06 zawiera te zatwierdzenia.
Nowe funkcje
- Nowe komponenty Composable dla
SurfaceView,TextureView: GraphicsSurface()iEmbeddedGraphicsSurface(). Jest to eksperymentalny interfejs API, który może ulec zmianom i modyfikacjom. (I9ddb2) Modifier.magnifier()to teraz stabilny interfejs API. Obejmuje to usunięcie znakuMagnifierStylena rzecz parametrów wbudowanych w sam modyfikator. (I83bec, b/298381260, b/262367109, b/261438887)
Zmiany w interfejsie API
- Wprowadzono
updateCurrentPageiupdateTargetPagewScrollScope. Są to ostatnie elementy niezbędne do umożliwienia dostosowywania animowanego przewijaniaPagerState.scroll. (I9cad5, b/267744105, b/243786897) - Usuń gęstość z urządzenia
SnapFlingBehavior. Wszystkie implementacjeSnapLayoutInfoProvidermają już sposób na uzyskanie dostępu do gęstości, więc zakres odbiornika można usunąć, co doprowadzi do mniej złożonej implementacji zarównoSnapFlingBehavior, jak iSnapLayoutInfoProviders. (I153c3) - Więcej modyfikatorów oznaczonych jako stabilne. (I56af1, b/298046462)
- Usunięto:
SnapStepSizez listySnapLayoutInfoProviderObliczenia należy przeprowadzić na podstawie informacji o układzie i podać za pomocą przesunięć przyciągania lub podejścia. (If320c)
Zmiany w zachowaniu
- Komponowanie korzysta teraz z nieliniowego skalowania czcionek, co zwiększa czytelność i dostępność. Gdy skala czcionki w ustawieniach systemu jest większa niż 100%, mały tekst zwiększa się normalnie, ale już duży tekst powiększa się tylko nieznacznie. Wysokości wierszy zdefiniowane w SP będą też automatycznie dostosowywane, aby zachować proporcje do wysokości przy skali 100%. Więcej informacji znajdziesz w sprawdzonych metodach dotyczących skalowania czcionek. (I11518)
Poprawki błędów
- Usuń użycie
rememberSaveablew etykietkach. (Icc131, b/299500338)
Wersja 1.6.0-alpha05
6 września 2023 r.
Publikacja androidx.compose.foundation:foundation-*:1.6.0-alpha05 Wersja 1.6.0-alpha05 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaj przeciążenia dla funkcji
BasicSecureTextField, które akceptują niezmienną wartość i wywołanie zwrotne, aby zmienić tę wartość, tak jak w przypadku obecnego interfejsu APIBasicTextField. (Ia4882) - Dodaj
Modifier.preferKeepClear(), aby oznaczyć element jako kompozycyjny, ponieważ w przypadku interfejsu API na poziomie 33 i wyższym preferowane jest unikanie pływających okien. (Ib51d5, b/297260115) - Prędkości przesunięcia w komponentach widoku, takich jak
ScrollViewiRecyclerView, są ograniczone doViewConfiguration.ScaledMaximumFlingVelocity. Funkcja Pisanie zawiera teraz własną wersjęmaximumFlingVelocity, która obowiązuje w przypadkuDraggable. (Ibf974) - Usunięto wycofane przeciążenia
PageriPagerState. (Iea07e) - Dodano
BasicTooltipBoxdocompose.foundationi zaktualizowanoPlainTooltipBoxorazRichTooltipBox, aby używaćTooltipBoxz nowymi komponentamiPlainTooltipiRichTooltip. (I79e1d)
Wersja 1.6.0-alpha04
23 sierpnia 2023 r.
Publikacja androidx.compose.foundation:foundation-*:1.6.0-alpha04 Wersja 1.6.0-alpha04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaj interfejs
ReusableCompositiondo zarządzania cyklem życia i ponownym wykorzystywaniem podkompozycji. (I812d1, b/252846775) Modifier.focusGroupzostał przeniesiony do stabilnych interfejsów API. (I7ffa3)- Dodaj przeciążenia dla funkcji
BasicTextField2, które akceptują niezmienną wartość i wywołanie zwrotne, aby zmienić tę wartość, tak jak w przypadku obecnego interfejsu APIBasicTextField. (I3f2b8) GridItemSpan::currentLineSpanto teraz stabilny interfejs API. (Icc29c)- Element Canvas, który akceptuje
contentDescription, jest teraz stabilnym interfejsem API. (Ib3d29) - W
ScrollStatewprowadziliśmyviewportSize, czyli sposób na poznanieviewPortrozmiaru komponentu, który używaScrollStatepo dokonaniu pomiaru. (I8b85a, b/283102682) - Rozwiązaliśmy problem, który powodował, że wstępne pobieranie w komponencie Pager nie było zgodne z zachowaniem w widokach. (I93352, b/289088847)
Modifier.consumeWindowInsets(PaddingValues)jest teraz stabilny.- Interfejs
Deprecated Modifier.consumedWindowInsetsAPI został usunięty. Użyj w zamian zasadyModifier.consumeWindowInsets. (Id72bb)
- Interfejs
Wersja 1.6.0-alpha03
9 sierpnia 2023 r.
Publikacja androidx.compose.foundation:foundation-*:1.6.0-alpha03 Wersja 1.6.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano przeciążenie funkcji
LazyLayout, która akceptuje teraz lambdęLazyLayoutItemProvider, a nie zwykły obiekt, jak wcześniej. Poprzednie przeciążenie zostało wycofane. (I42a5a) - Dodano obsługę konfigurowania
privateImeOptions(Idb772)
Poprawki błędów
- Naprawiliśmy problem z wyświetlaniem klawiatury i możliwością edytowania pól tekstowych, gdy wartość
readOnlywynosiła „true”. Rozwiązaliśmy też problem z niewyświetlaniem klawiatury, gdy wartośćreadOnlyzmienia się z prawda na fałsz, gdy element jest aktywny. (I34a19, b/246909589)
Wersja 1.6.0-alpha02
26 lipca 2023 r.
Publikacja androidx.compose.foundation:foundation-*:1.6.0-alpha02 Wersja 1.6.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wprowadzono
PagerLayoutInfoz informacjami zebranymi po przejściu weryfikacji wPager. Wprowadziliśmy teżPageInfo, czyli informacje o pojedynczej zmierzonej stronie wPager. (Iad003, b/283098900) - Dodatkowe adnotacje do określania dozwolonych danych wejściowych w funkcjach kompozycyjnych (I51109)
- Dodano
SemanticsNodeInteraction.requestFocusjako wygodniejszy i łatwiejszy do znalezienia sposób na proszenie o skupienie uwagi w testach. (Ie8722) - Całkowicie przeprojektowany interfejs API
PlatformTextInput*. (I6c93a, b/274661182, b/267235947, b/277380808) - Atrybuty
SoftwareKeyboardControlleriLocalSoftwareKeyboardControllernie są już eksperymentalne.LocalSoftwareKeyboardControllerjest teraz też prawidłowymCompositionLocal. (I4c364) Modifier.transformableudostępnia teraz parametrcanPan, który pomaga określić kierunek panoramowania, aby zezwolić na nie lub je zablokować. (I692aa, b/266829800)- Aktualizuje modyfikator
consumeWindowInsets, aby rozszerzyć superklasęAbstractComposeView(Iacd74, b/269479941)
Wersja 1.6.0-alpha01
21 czerwca 2023 r.
Publikacja androidx.compose.foundation:foundation-*:1.6.0-alpha01 Wersja 1.6.0-alpha01 zawiera te zatwierdzenia.
Nowe funkcje
- Wprowadziliśmy nowy interfejs API
AnchoredDraggablew Foundation. Możesz jej używać do tworzenia komponentów, które można przeciągać między różnymi stanami, np. arkuszy modalnych u dołu ekranu. Ten interfejs API zastępuje interfejsSwipeableMaterial. (I4a2ed)
Zmiany w interfejsie API
- Wesprzyj kanał
InputConnection#requestCursorUpdates(I0c69b) - Wprowadzono
scrollAnimationSpec, aby umożliwić niestandardowe specyfikacje animacji. Zaktualizowano:BringIntoViewCalculatordo stanu:BringIntoViewScroller. (Idb741) - Dodaj typ
ResourceResolutionException, aby opakować wyjątki zgłaszane podczas próby wczytania komponentów bitmapowych z opisem ścieżki komponentu, którego nie udało się wczytać. (I19f44, b/230166331, b/278424788) - Dodaliśmy właściwości i działania semantyczne, aby obsługiwać tłumaczenie tekstu. (I4a6bc)
- Wprowadziliśmy interfejs
BringIntoViewCalculatorAPI, którego można używać do dostosowywania sposobu, w jaki komponenty takie jakScrollableodpowiadają na żądaniabringIntoView. Zmieniono przeciążenie elementu przewijanego, aby opcjonalnie akceptował instancjęBringIntoViewCalculator. (Iaf5af)
Poprawki błędów
- Dodaliśmy sprawdzanie kodu, które ostrzega, jeśli tworzysz
MutableInteractionSourcew kompozycji bez zapamiętywania, podobnie jak w przypadku tworzenia stanu modyfikowalnego lubAnimatable. (I5daae) - Dodaliśmy obsługę zaznaczania za pomocą myszy. Zaznaczanie dotykowe będzie rozszerzane o słowo i zmniejszane o znak. (Ic0c6c, b/180639271)
- Dodano interfejs
FocusTargetModifierNode, którego można użyć do utworzenia niestandardowegoFocusTarget. (I9790e)
Wersja 1.5
Wersja 1.5.4
18 października 2023 r.
Publikacja androidx.compose.foundation:foundation-*:1.5.4 Wersja 1.5.4 zawiera te zatwierdzenia.
Wersja 1.5.3
4 października 2023 roku
Publikacja androidx.compose.foundation:foundation-*:1.5.3 W tej wersji nie wprowadzono żadnych zmian.
Wersja 1.5.2
27 września 2023 r.
Publikacja androidx.compose.foundation:foundation-*:1.5.2 Wersja 1.5.2 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiliśmy błąd w tekście, który w określonych okolicznościach prowadził do awarii, gdy semantyka była nieprawidłowa.
Wersja 1.5.1
6 września 2023 r.
Publikacja androidx.compose.foundation:foundation-*:1.5.1 Wersja 1.5.1 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiliśmy problem z wyświetlaniem klawiatury i możliwością edytowania pól tekstowych, gdy wartość
readOnlywynosiła „true”. Rozwiązaliśmy też problem z niewyświetlaniem klawiatury, gdy wartośćreadOnlyzmienia się z prawda na fałsz, gdy element jest aktywny. (I34a19, b/246909589)
Wersja 1.5.0
9 sierpnia 2023 r.
Publikacja androidx.compose.foundation:foundation-*:1.5.0 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.NodeAPI, co zmniejsza obciążenie początkowej kompozycji. - Poprawiliśmy stabilność pagera. Wiele błędów zostało naprawionych.
- Parametry
pageCountznajdują się teraz wPagerState, a nie w samym pagerze.
Wersja 1.5.0-rc01
26 lipca 2023 r.
Publikacja androidx.compose.foundation:foundation-*:1.5.0-rc01 Wersja 1.5.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
Dostępna jest opcjonalna inspekcja, która zaleca przeniesienie wywołań
mutableStateOf()do odpowiednich typów specjalistycznych dla typów prostych. Identyfikator lintu toAutoboxingStateCreation. Wcześniej ta kontrola była domyślnie włączona we wszystkich projektach. Aby zobaczyć to ostrzeżenie w edytorze Android Studio i w wynikach lintowania projektu, zmień jego ważność z informacyjnej na ostrzeżenie (lub wyższą), deklarującwarning "AutoboxingStateCreation"w konfiguracjibuild.gradlelubbuild.gradle.ktsmodułu, jak pokazano poniżej (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
Wersja 1.5.0-beta03
28 czerwca 2023 r.
Publikacja androidx.compose.foundation:foundation-*:1.5.0-beta03 Wersja 1.5.0-beta03 zawiera te zatwierdzenia.
Wersja 1.5.0-beta02
7 czerwca 2023 r.
Publikacja androidx.compose.foundation:foundation-*:1.5.0-beta02 Wersja 1.5.0-beta02 zawiera te zatwierdzenia.
Wersja 1.5.0-beta01
24 maja 2023 r.
Publikacja androidx.compose.foundation:foundation-*:1.5.0-beta01 Wersja 1.5.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zaimplementuj
PlatformDataProvider, aby podawać tętno i dzienną liczbę kroków. InterfejsSensorGatewayzostał usunięty z publicznego interfejsu API. (I55b84)
Poprawki błędów
- Ograniczenie przydziałów podczas pomiarów leniwych list, siatek itp. (Iaf9e2)
- Zmniejszone przydziały podczas stosowania zrzutów (I65c09)
- Usunięto alokacje z animacji sprężynowych (Ie9431)
- Usunięto przydział z
TextLayout(I0fd11) - Usunięto wiele alokacji w śledzeniu prędkości wskaźnika (I26bae)
Wersja 1.5.0-alpha04
10 maja 2023 r.
Publikacja androidx.compose.foundation:foundation:1.5.0-alpha04 i androidx.compose.foundation:foundation-layout:1.5.0-alpha04 Wersja 1.5.0-alpha04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano zoptymalizowany element
TextStyle.merge(...)z pełną listą parametrów. (Iad234, b/246961787) - Przedstaw
SnapLayoutInfoProvider, którego można używać zLazyGridState. (I92134, b/269237141, b/260914964) - Dodano eksperymentalny
Modifier.animateItemPlacement()zakres elementu leniwych siatek z przesunięciem. Możesz zastosować ją do elementów, aby uzyskać animacje zmiany pozycji lub zmiany kolejności w automatyzacji. (I4b62d, b/257034719) - Promuj
GridCells.FixedSizedo wersji stabilnej.FixedSizedefiniujeLazyGrid, w którym każda komórka ma dokładny rozmiar na osi poprzecznej, a pozostałe miejsce jest rozdzielane przez układ osi poprzecznej. (I8542f) - Wprowadzono zakres odbiorcy
PagerScopedla komponentu Pager i funkcję narzędziową do obliczania danego przesunięcia strony. (If2577) - Wprowadź
snapPositionalThresholdpodczas tworzenia zachowania przyciągania. Ten parametr służy do określania progu pozycji dla krótkiego przyciągania w komponencie Pager. (If8f7f) - Tekst
SnapLayoutInfoProvider.calculateSnappingOffsetBoundszostał zastąpiony tekstemcalculateSnappingOffset. W tej nowej metodzie po prostu prosimy o następne przesunięcie, do którego ma nastąpić przyciąganie. Obliczenia granic powinny być wykonywane na poziomie implementacji, ponieważ mogą się różnić w zależności od tego, jak ma działać przyciąganie. (I923a4) - Interfejsy API
LazyStaggeredGridzostały przeniesione do wersji stabilnej. (I633a5) - Usuń urządzenie
pageCountz kontaHorizontal/VerticalPager. Należy go podać podczas tworzenia stanu. ZaktualizowanoPagerStateirememberPagerState, aby akceptowaćpageCount. (Ieb52d, b/266965072) - Usuń urządzenie
pageCountz kontaHorizontal/VerticalPager. Należy go podać podczas tworzenia stanu. ZaktualizowanoPagerStateirememberPagerState, aby akceptowaćpageCount. (Ifa3cb, b/266965072) - Przedstaw
shortSnapVelocityThresholdwSnapFlingBehaviorPager. (I7379e, b/275579012) - Dodaje
FlowRowScopeiFlowColumnScope. (I54fe2)
Poprawki błędów
- Wywołania w celu uzyskania semantyki tekstu, gdy ograniczenia mają wartości
minWidthiminHeight, nie powodują już awarii. (Ibd072) - Naprawiono regresję, która powodowała, że klawiatura nie była wyświetlana w polach tekstowych w oknach dialogowych, które nie zostały utworzone za pomocą funkcji
Dialog. (I82551, b/262140644)
Wersja 1.5.0-alpha03
19 kwietnia 2023 r.
Publikacja androidx.compose.foundation:foundation:1.5.0-alpha03 i androidx.compose.foundation:foundation-layout:1.5.0-alpha03 Wersja 1.5.0-alpha03 zawiera te zatwierdzenia.
Ta wersja udostępnia nowy stos renderowania tekstu w Compose. Nowy stos jest zoptymalizowany pod kątem wydajności i nie powinien powodować widocznych zmian.
Jeśli zauważysz zmiany w renderowanym tekście, możesz je debugować, ustawiając wartość NewTextRendering1_5 = false, aby potwierdzić różnicę w działaniu. Ustawienie tej wartości spowoduje ponowne skomponowanie. Wszelkie różnice w działaniu zgłaszaj jako błędy.
Flaga debugowania zostanie usunięta przed wydaniem wersji beta01 1.5.(Iada23, b/246960758)
Zmiany w interfejsie API
- Wstaw
FlowColumn/FlowRoww tekście. (Idab37)
Wersja 1.5.0-alpha02
5 kwietnia 2023 r.
Publikacja androidx.compose.foundation:foundation:1.5.0-alpha02 i androidx.compose.foundation:foundation-layout:1.5.0-alpha02 Wersja 1.5.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano obsługę komórek o stałym rozmiarze w
LazyGridi rozmieszczania ich za pomocą układu osi poprzecznej. (I83ed9, b/235121277, b/267942510) - Dodano obsługę pasów o stałym rozmiarze w funkcji
LazyStaggeredGridi układania ich za pomocą układu osi poprzecznej. (I7d519) UrlAnnotationwAnnotatedStringmożna teraz otwierać za pomocą usług ułatwień dostępu, takich jakTalkBack. (If4d82, b/253292081)- Dodano działanie semantyczne
InsertTextAtCursordla pól tekstowych. (I11ed5) - Działania testowe związane z tekstem (np.
performTextInput) będą teraz bezpośrednio żądać fokusu za pomocą działania semantycznego zamiast klikania pola. (I6ed05) - Dodaliśmy obsługę odstępów i układu wzdłuż osi poprzecznej za pomocą właściwości
verticalArrangementwFlowRowihorizontalArrangementwFlowColumn. Usuwamy też symboleverticalAlignmentihorizontalAlignmentnajwyższego poziomu wFlowRow/FlowColumn. Deweloperzy mogą zamiast tego używaćModifier.align. Pozwala to uniknąć nieporozumień związanych z konwencjami nazewnictwaverticalAlignmentiverticalArrangement. (I87b60, b/268365538)
Wersja 1.5.0-alpha01
22 marca 2023 r.
Publikacja androidx.compose.foundation:foundation:1.5.0-alpha01 i androidx.compose.foundation:foundation-layout:1.5.0-alpha01 Wersja 1.5.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Tekst i
BasicTextzostały zmodyfikowane, aby korzystać z nowego systemu modyfikatorów. W wielu przypadkach prowadzi to do znacznej poprawy skuteczności. Nie powinny być widoczne żadne zmiany. (If1d17, b/246961435) - Dodano działanie semantyczne
PerformImeAction, które umożliwia wywoływanie działania IME w węzłach edytora tekstu. (Ic606f, b/269633506)
Poprawki błędów
- Zaktualizowano wewnętrzne elementy
Modifier.hoverable. Modyfikatorhoverablebę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ą udostępniane bez zmian (zmienia się tylko numer wersji).
Wersja 1.4.2
19 kwietnia 2023 r.
Publikacja androidx.compose.foundation:foundation:1.4.2 i androidx.compose.foundation:foundation-layout:1.4.2 Wersja 1.4.2 zawiera te zatwierdzenia.
Wersja 1.4.1
5 kwietnia 2023 r.
Publikacja androidx.compose.foundation:foundation:1.4.1 i androidx.compose.foundation:foundation-layout:1.4.1 Wersja 1.4.1 zawiera te zatwierdzenia.
Wersja 1.4.0
22 marca 2023 r.
Publikacja androidx.compose.foundation:foundation:1.4.0 i androidx.compose.foundation:foundation-layout:1.4.0 Wersja 1.4.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.3.0
- Dodano integrację zgodności z emotikonami w przypadku elementów
TextiTextField, a także akapitu niższego poziomu. Jest ona domyślnie włączona, gdy skonfigurowana jest opcja emojicompat. EmojiCompatmożna skonfigurować w przypadku konkretnego tekstu za pomocąPlatformParagraphStyle.- Dodano obsługę pełnego zakresu wiersza w przypadku
LazyStaggeredGrid(I28252) - Dodanie eksperymentalnego parametru
onHoverdo parametruClickableText(I6938f) - Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji
runComposeUiTesticreate*ComposeRule, które akceptują parametryCoroutineContext. Kontekst będzie używany w kompozycji testu oraz w wywołaniachLaunchedEffectirememberCoroutineScope()w tej kompozycji. (I10614, b/265177763) FlowRowiFlowColumnsą teraz dostępne jako@ExperimentalFoundationApi, które umożliwiają bardziej elastyczny układ komponentów w wierszach i kolumnach. Jeśli na osi głównej nie ma wystarczająco dużo miejsca, komponenty będą przenoszone do nowego wiersza. (I3a7b2)Modifier.basicMarquee()jest dostępny w wersji eksperymentalnej do wyświetlania treści z efektem przewijania. (I2df44, b/139321650)
Wersja 1.4.0-rc01
8 marca 2023 r.
Publikacja androidx.compose.foundation:foundation:1.4.0-rc01 i androidx.compose.foundation:foundation-layout:1.4.0-rc01 Wersja 1.4.0-rc01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wprowadziliśmy nowy interfejs API niskiego poziomu
PlatformTextInputAdapterdo tworzenia niestandardowych implementacji wprowadzania tekstu, które komunikują się bezpośrednio z interfejsami API platformy. (I58df4) - Dodaliśmy obsługę układu od prawej do lewej w przypadku elementu
LazyStaggeredGrid. (I3ef4a)
Poprawki błędów
- Działanie semantyczne
BasicTextFieldSetTextbędzie teraz aktualizować bufor tekstu przy użyciu tej samej ścieżki kodu co aktualizacje IME i funkcje testowe (np.performTextReplacement). - Funkcje testowania tekstu
performTextClearance,performTextReplacementiperformTextSelectionużywają teraz funkcjiSemanticsActions. (I0807d, b/269633168, b/269624358)
Wersja 1.4.0-beta02
22 lutego 2023 roku
Publikacja androidx.compose.foundation:foundation:1.4.0-beta02 i androidx.compose.foundation:foundation-layout:1.4.0-beta02 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 stanu lokalnego, aby prawidłowo obsługiwać sytuację, w której komponentLayoutjest ponownie używany (np. jako elementLazyColumn). PoprawionoFocusTargetModifierNode, aby prawidłowo resetować stan zaznaczenia. (I65495, b/265201972) - Dodano parametr
BlendModedo metodDrawScope.drawText,Paragraph.paintiMultiParagraph.paint, aby obsługiwać różne algorytmy mieszania podczas rysowania tekstu na obiekcie Canvas. (I57508) - Usunięto interfejs API
modifierElementOf(). Zamiast tego rozszerzaj bezpośrednio zModifierNodeElement. (Ie6d21)
Poprawki błędów
- Dostosowywanie uchwytów zaznaczenia nie może już powodować zaznaczania części znaku. (Idedd1)
- Naprawiono błąd powodujący awarię po naciśnięciu Ctrl+Backspace w pustym polu
TextField(I0427f, b/244185537)
Wersja 1.4.0-beta01
8 lutego 2023 r.
Publikacja androidx.compose.foundation:foundation:1.4.0-beta01 i androidx.compose.foundation:foundation-layout:1.4.0-beta01 Wersja 1.4.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
- Od wersji 1.3 dodaliśmy integrację zgodności z emotikonami w przypadku elementów
TextiTextField, a także elementu niższego poziomu Paragraph. Jest ona domyślnie włączona, gdy skonfigurowana jest opcja emojicompat. EmojiCompatmożna skonfigurować w przypadku konkretnego tekstu za pomocąPlatformParagraphStyle.
Zmiany w interfejsie API
- Dodano wspólne wdrożenie interfejsu
PinnableContainerAPI używanego we wszystkichLazyLayouts, aby zachować elementy, które wychodzą z kompozycji, ale nadal muszą być aktywne. (If45a4) PinnableContainer.PinnedHandle.unpin()zmienił(a) nazwę narelease()(I4667a)
Wkład zewnętrzny
- Dodano właściwość
mainAxisItemSpacingdo obiektówLazyListLayoutInfo,LazyGridLayoutInfoiLazyStaggeredGridItemInfo(I52fad)
Wersja 1.4.0-alpha05
25 stycznia 2023 r.
Publikacja androidx.compose.foundation:foundation:1.4.0-alpha05 i androidx.compose.foundation:foundation-layout:1.4.0-alpha05 Wersja 1.4.0-alpha05 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano obsługę pełnego zakresu wiersza w przypadku
LazyStaggeredGrid(I28252) - Dodawanie eksperymentalnego parametru
onHoverdo parametruClickableText(I6938f) - Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji
runComposeUiTesticreate*ComposeRule, które akceptują parametryCoroutineContext. Kontekst będzie używany w kompozycji testu oraz w wywołaniachLaunchedEffectirememberCoroutineScope()w tej kompozycji. (I10614, b/265177763)
Zmiany w interfejsie API
- Łączy interfejsy API przed i po
OverscrollEffectw połączone funkcje „dekoratora”applyToScrolliapplyToFling. Przykłady implementacji efektu przewijania poza krawędź z użyciem nowego kształtu interfejsu API znajdziesz w zaktualizowanych przykładach w dokumentacji. (I8a9c4, b/255554340) - Więcej typów i dopuszczalności wartości null dla funkcji wbudowanych i ukrytych (I24f91)
- Interfejsy API
LineBreakiHyphenswTextStylezostały przeniesione do wersji stabilnej. (Ic1e1d)
Poprawki błędów
- Kursor w polach tekstowych będzie teraz migać nawet wtedy, gdy animacje są wyłączone. (I95e70, b/265177763)
Modifier.basicMarqueejest teraz animowany nawet wtedy, gdy animacje są wyłączone w ustawieniach systemu. (I23389, b/262298306, b/265177763)
Wkład zewnętrzny
- Metody
notifyFocusedRectwTextInputSessioniTextInputServicenie są ponownie wycofywane. (I23a04, b/262648050)
Wersja 1.4.0-alpha04
11 stycznia 2023 r.
Publikacja androidx.compose.foundation:foundation:1.4.0-alpha04 i androidx.compose.foundation:foundation-layout:1.4.0-alpha04 Wersja 1.4.0-alpha04 zawiera te zatwierdzenia.
Nowe funkcje
FlowRowiFlowColumnsą teraz dostępne jako@ExperimentalFoundationApi, które umożliwiają bardziej elastyczny układ komponentów w wierszach i kolumnach. Jeśli na osi głównej nie ma wystarczająco dużo miejsca, komponenty przechodzą do nowego wiersza. (I3a7b2)Modifier.basicMarquee()jest dostępna w wersji eksperymentalnej do wyświetlania treści z efektem przewijania. (I2df44, b/139321650)
Zmiany w interfejsie API
FocusRequesterModifierzostało wycofane na rzeczFocusRequesterNode(I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)- Konstruktor
AndroidFontz parametremvariationSettingsjest teraz stabilnym interfejsem API i może służyć do tworzenia nowych typów deskryptorów czcionek. (I5adcc, b/261565807) - Wprowadzono interfejs API
PinnableContainerpropagowany przez leniwe listy za pomocą lokalnego komponentu, który umożliwia przypinanie bieżącego elementu. Oznacza to, że element nie zostanie usunięty, gdy zniknie z widoku. Na przykładModifier.focusable()przypnie bieżący zaznaczony element za pomocą tego mechanizmu. (Ib8881, b/259274257, b/195049010) - Zmieniliśmy sposób, w jaki elementy przewijane reagują na
bringIntoViewRequesters, a elementy, na których można ustawić fokus, na bardziej złożone operacje, aby lepiej modelować te operacje i obsługiwać więcej przypadków brzegowych. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114) - Większa dopuszczalność wartości null zwracanego typu wycofanych i ukrytych funkcji (Ibf7b0)
- Dodano eksperymentalny parametr
TextMotiondo parametruTextStyle, aby określić, czy tekst ma byćStatic(default)czy animowany. UżyjTextMotion.Animated, jeśli tekst ma być skalowany, tłumaczony lub obracany za pomocą animacji. (I24dd7) - Dodanie
TextFieldFocusModifierw celu naprawienia działania nawigacji za pomocą fokusu na platformie Android (I00303) - Zastąpiliśmy argument
maxSize: IntSizew funkcjidrawTextargumentemsize: Size, aby był zgodny z innymi funkcjamiDrawScope.sizejest domyślnie ustawione naSize.Unspecified, co nie powinno zmieniać poprzedniego domyślnego działania. (Icd27d)
Poprawki błędów
- Dostosowanie fizyki przyciągania w
SnapFlingBehaviour, aby była bardziej naturalna.
Znany problem
- Podczas aktualizacji z wersji
androidx.compose.foundation:1.4.0-alpha03doandroidx.compose.foundation:1.4.0-alpha04może wystąpić błądjava.lang.NoSuchFieldError. Tutaj pierwotnie zgłoszono problem. Poprawka została przesłana i będzie dostępna w następnej aktualizacji Compose. Aby obejść ten problem, zaktualizuj bibliotekiandroidx.compose.materialiandroidx.compose.material3do najnowszej wersji(1.1.0-alpha04) lub zmień wersję bibliotekiandroidx.compose.foundationna 1.4.0-alpha03.
Wersja 1.4.0-alpha03
7 grudnia 2022 r.
Publikacja androidx.compose.foundation:foundation:1.4.0-alpha03 i androidx.compose.foundation:foundation-layout:1.4.0-alpha03 Wersja 1.4.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- W testach interfejsu przeprowadzanych za pomocą reguły Compose wznowienia w wywołaniach zwrotnych
withFrameNanosnie będą wysyłane, dopóki nie zostaną wykonane wszystkie wywołania zwrotne klatek. Odpowiada to zachowaniu funkcji tworzenia wiadomości podczas normalnego działania. Jednak testy, które opierają się na starym działaniu, mogą się nie powieść. Powinno to mieć wpływ tylko na kod, który bezpośrednio wywołuje funkcjewithFrameNanoslubwithFrameMillis, oraz na logikę poza wywołaniem zwrotnym przekazywaną do tych funkcji, która może wymagać przeniesienia do wywołań zwrotnych. Przykłady zmian w teście animacji znajdziesz w tym CL. - Dodano opcjonalny parametr
onPerformTraversals: (Long) -> Unitdo konstruktoraTestMonotonicFrameClocki funkcji fabrycznej, aby uruchamiać kod po wywołaniach zwrotnychwithFrameNanos, ale przed wznowieniem korutyn rozmówców. (Idb413, b/254115946, b/222093277, b/255802670) - Wprowadzenie działań związanych z ułatwieniami dostępu na stronie:
PageUp,PageDown,PageLeft,PageRight. Pamiętaj, że są one dostępne tylko od interfejsu API w wersji 29. (Ida4ab) - Wprowadzamy
HorizontalPageriVerticalPager, czyli sposób wyświetlania funkcji kompozycyjnych w stylu Pager. WprowadzonoPagerState, aby sterować pagerami i wykonywać zapytania o ich bieżący stan. WprowadzonoPageSize, czyli sposób kontrolowania rozmiaru strony w komponencie Pager. Można go używać do tworzenia karuzel podobnych do komponentów Pager. WprowadzonoPagerSnapDistance, czyli sposób kontrolowania przyciągania w przypadku gestu szybkiego przesunięcia w Pagerze. (I01120) - Wprowadziliśmy przeciążenie w
SnapFlingBehavior.performFling, aby pomóc w określeniu, gdzie zatrzyma się przesunięcie. (I569f6) - Kontakt
OverscrollEffect#isEnabledzostał usunięty. Nie musisz pamiętać o ustawieniu tej flagi. Wystarczy, że nie będziesz wysyłać zdarzeń do efektu przewijania poza zakres w przypadkach, gdy nie chcesz, aby był on widoczny (np. jeśliScrollableState#canScrollForward/backwardzwraca wartość fałsz). (I1a4b0, b/255554340, b/255557085) - Dodano
ScrollableState#canScrollForwardiScrollableState#canScrollBackward, aby sprawdzać, czyScrollableStatema miejsce na przewijanie w dowolnym kierunku (czy znajduje się na minimalnym lub maksymalnym poziomie zakresu). Domyślnie ma wartość „true”, aby zapewnić zgodność wsteczną z dotychczasowymi implementacjamiScrollableState. Konsumenci mogą używać tego sygnału, aby poinformować użytkownika, że nadal jest miejsce na przewijanie. Można go też używać, aby uniknąć wysyłania wartości delta doScrollableStates, które nie mają miejsca na przewijanie w danym kierunku, co zmniejsza niepotrzebną pracę. (Idf1a0, b/255557085) - Dodano interfejs Modifier API do wysyłania zapytań o informacje o przewijaniu elementów nadrzędnych. (I2ba9d, b/203141462)
- Używany w
Clickabledo prawidłowego opóźniania interakcji naciśnięcia, gdy gesty mogą stać się zdarzeniami przewijania. - Rozwiązaliśmy problem z nieprawidłowym opóźnianiem efektów falowania przez element
Clickables, gdy był używany w elemencieScrollable ViewGroup. - Zaktualizowano panele i arkusze, aby prawidłowo opóźniać naciśnięcia w przypadku, gdy gesty mogą stać się zdarzeniami przewijania.
- Zaktualizuj nazewnictwo
snapStepSize, aby było zgodne z innymi metodami wSnapLayoutInfoProvider. (Ife67c) - Dodano
EmojiCompatdoCompose(Ibf6f9, b/139326806) - Zmieniliśmy nazwy interfejsów
consumedWindowInsets()naconsumeWindowInsets()iwithConsumedWindowInsets()naonConsumedWindowInsetsChanged()oraz udostępniliśmy modyfikatory publicznie. (Ie44e1)
Poprawki błędów
- Naprawiono błąd powodujący awarię w przypadku
Modifier.animateItemPlacement()i siatek Lazy. Działo się to w niektórych przypadkach, gdy liczba nowych elementów była mniejsza niż poprzednia. (I0bcac, b/253195989)
Wersja 1.4.0-alpha02
9 listopada 2022 r.
Publikacja androidx.compose.foundation:foundation:1.4.0-alpha02 i androidx.compose.foundation:foundation-layout:1.4.0-alpha02 Wersja 1.4.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Atrybuty
awaitFirstDowniwaitForUpOrCancellationakceptują terazPointerEventPass, co zapewnia większą elastyczność. (I7579a, b/212091796) - Cofnięcie interfejsu
beyondBoundCountAPI z interfejsów Lazy* API (I12197) - Wprowadzono parametr w interfejsach Lazy API, który umożliwia tworzenie i umieszczanie elementów poza widocznym obszarem (I69e89, b/172029355)
- Dodano parametr
minLinesdo parametrówBasicTextiBasicTextField. Umożliwia ustawienie minimalnej wysokości tych komponentów w liczbie wierszy (I24294, b/122476634).
Wersja 1.4.0-alpha01
24 października 2022 r.
Publikacja androidx.compose.foundation:foundation:1.4.0-alpha01 i androidx.compose.foundation:foundation-layout:1.4.0-alpha01 Wersja 1.4.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaliśmy nową metodę
awaitEachGesture()dla detektorów gestów. Działa podobnie doforEachGesture(), ale pętla gestów działa w całości w ramachAwaitPointerEventScope, więc zdarzenia nie mogą zostać utracone między iteracjami. - Element
forEachGesture()został wycofany na rzecz elementuawaitEachGesture(), ponieważ umożliwia on utratę zdarzeń między gestami. (Iffc3f, b/251260206) - Dodano
WindowInsets.imeAnimationSource iWindowInsets.imeAnimationTarget, aby określić postęp animacji i wiedzieć, gdzie będzie się znajdować edytor IME po zakończeniu animacji. (I356f1, b/217770337)
Wersja 1.3
Wersja 1.3.1
9 listopada 2022 r.
Publikacja androidx.compose.foundation:foundation:1.3.1 i androidx.compose.foundation:foundation-layout:1.3.1 Wersja 1.3.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązanie problemu z wydajnością w
BeyondBoundsLayout(aosp/2255266) ContentInViewModifiernie będzie odczytywać współrzędnych układu, chyba że jest dołączony (aosp/2241316)
Wersja 1.3.0
24 października 2022 r.
Publikacja androidx.compose.foundation:foundation:1.3.0 i androidx.compose.foundation:foundation-layout:1.3.0 Wersja 1.3.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.2.0
- Wprowadzono eksperymentalne wersje
LazyVerticalStaggeredGridiLazyHorizontalStaggeredGrid. - Dodaliśmy interfejsy API
SnapFlingBehavior,rememberSnapFlingBehaviori inne powiązane interfejsy API w wersji eksperymentalnej. Modifier.clickable,Modifier.toggleableiModifier.selectableteraz wyświetlają efekt fali, gdy są klikane za pomocą klawiatury lub pada kierunkowego na pilocie.
Wersja 1.3.0-rc01
5 października 2022 r.
Publikacja androidx.compose.foundation:foundation:1.3.0-rc01 i androidx.compose.foundation:foundation-layout:1.3.0-rc01 Wersja 1.3.0-rc01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wprowadzono
lowVelocityAnimationSpecużywane przez krok zbliżania, gdy nie ma wystarczającej prędkości, aby ją zmniejszyć. (Iaeb27) - Dodano nowy eksperymentalny interfejs API Hyphens, który obsługuje automatyczne dzielenie wyrazów w tekście (Iaa869).
Wersja 1.3.0-beta03
21 września 2022 r.
Publikacja androidx.compose.foundation:foundation:1.3.0-beta03 i androidx.compose.foundation:foundation-layout:1.3.0-beta03 Wersja 1.3.0-beta03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaj opcje dostosowywania podziału wierszy w Tekście. (I86907)
BringIntoViewRespondermogą teraz podczas przetwarzania żądania uzyskiwać najbardziej aktualne granice. (If86a5, b/241591211)- Wprowadzenie obsługi odstępów między elementami w eksperymentalnym
Staggered Grid(I10b82) - Wprowadzenie dopełnienia treści w eksperymentalnym
Staggered Grid(I342ea) - Zmieniono argument
size:IntSizenaconstraints: Constraintsw metodzieTextMeasurer.measure, aby obsługiwać ograniczenia minimalnej szerokości. (I37530, b/242707525) - Dodaliśmy funkcję
Modifier.withConsumedWindowInsets(), aby pobieraćWindowInsetsdo użycia pozawindowInsetsPadding. - Dodano
MutableWindowInsets, aby umożliwić łatwą zmianęWindowInsetsbez rekompozycji. (I7fd28, b/237019262, b/243119659)
Wersja 1.3.0-beta02
7 września 2022 roku
Publikacja androidx.compose.foundation:foundation:1.3.0-beta02 i androidx.compose.foundation:foundation-layout:1.3.0-beta02 Wersja 1.3.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wersja początkowa eksperymentalnego modelu
StaggeredGrid(Ia48be) - Zmieniono nazwy
FocusDirection.IniFocusDirection.OutnaFocusDirection.EnteriFocusDirection.Exit(Ia4262, b/183746982) - Wprowadzono przeciążenie
rememberSnapFlingBehavior, które umożliwia szybkie włączanie przyciągania wLazyLists. (Ifb48a) - Zastąpiono fabrykę
snapFlingBehaviorkonkretną klasąSnapFlingBehavior. Metody z zakresemSnapLayoutInfoProviderdo gęstości, aby ułatwić użytkownikom interfejsu API konwersje Dp<->Px. (I54a11) - Zaktualizuj
LazyLayoutMeasureScope.measure, aby zwracać listę elementów, które można umieścić, podkreślając pożądaną niezmienność zwracanej wartości. (I48b7c) - Wprowadzono
SnapLayoutInfoProvider, która przyjmujeLazyListState, aby utworzyć instancjęSnapLayoutInfoProvider, której można użyć do włączeniaFlingBehaviordlaLazyLists. (I2dd10)
Poprawki błędów
- Zmiana struktury
AwaitPointerEventScope#awaitLongPressOrCancellation, aby pasowała do innych funkcji oczekiwania (I646e6)
Wersja 1.3.0-beta01
24 sierpnia 2022 r.
Publikacja androidx.compose.foundation:foundation:1.3.0-beta01 i androidx.compose.foundation:foundation-layout:1.3.0-beta01 Wersja 1.3.0-beta01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Usunięto
pointerPositionzOverscrollEffect– efekty, które uwzględniają pozycję wskaźnika, mogą zamiast tego używaćModifier.pointerInput { }weffectModifier, aby uzyskać bieżącą pozycję wskaźnika. (I9f606, b/241239306) - Udostępniono
AwaitPointerEventScope#awaitLongPressOrCancellationjako dodatkowy element składowy do bardziej złożonego wykrywania gestów (I04374, b/181577176) - Wprowadziliśmy
lazyListSnapLayoutInfoProvider, aby włączyć przyciąganie w leniwych listach. (I3ecdf) - Wprowadzono
SnapFlingBehavior, czyli gest szybkiego przesunięcia, który umożliwia przyciąganie listy. Podaj instancjęSnapLayoutInfoProviderz informacjami o układzie przyciągania. (Ie754c)
Wersja 1.3.0-alpha03
10 sierpnia 2022 r.
Publikacja androidx.compose.foundation:foundation:1.3.0-alpha03 i androidx.compose.foundation:foundation-layout:1.3.0-alpha03 Wersja 1.3.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Czcionki zasobów obsługują teraz ustawianie ustawień wariantu czcionki (API 26 i nowsze). (I900dd, b/143703328)
- Obsługa czcionek zmiennych w
DeviceFontFamilyNameFont(Ic1279, b/143703328) - Usunięto eksperymentalną adnotację z
PlatformTextStyleiLineHeightStyle. (I64bef) - Pola tekstowe będą teraz zgłaszać bardziej szczegółowe wyjątki, gdy funkcja
OffsetMappingdostarczona przez funkcjęVisualTransformationzwróci nieprawidłowe indeksy. (Ie73f9, b/229378536) - Wprowadzenie eksperymentalnych interfejsów API do udostępniania logiki dostawcy elementów między układami Lazy. (Ic891c)
ScrollableDefaults.reverseDirection()nie jest już funkcją eksperymentalną. (Iba646)- Wycofano
SemanticsModifier.idi przeniesiono identyfikator semantyczny doLayoutInfo.semanticsId. (Iac808, b/203559524) checkScrollableContainerConstraints()nie jest już funkcją eksperymentalną. (I2c290)Modifier.clipScrollableContainer()nie jest już funkcją eksperymentalną. (Ia2b44)- Wycofaj:
TextInputService.show|hideSoftwareKeyboardZamiast niej użyjSoftwareKeyboardControllerw kodzie aplikacji iTextInputSessionw kodzie zarządzania IME. (I14e4c, b/183448615)
Wersja 1.3.0-alpha02
27 lipca 2022 roku
Publikacja androidx.compose.foundation:foundation:1.3.0-alpha02 i androidx.compose.foundation:foundation-layout:1.3.0-alpha02 Wersja 1.3.0-alpha02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodaliśmy funkcję rozszerzenia
drawTextwDrawScope, aby umożliwić rysowanie tekstu w wielu stylach w komponentach i modyfikatorach, które działają naDrawScope, takich jakCanvasidrawBehind. (I16a62, b/190787898)
Poprawki błędów
- Klawiatura ekranowa będzie teraz ukrywana, gdy pole tekstowe jest wyłączone, ale zaznaczone. (I6e3e4, b/237308379)
- Podczas dodawania zdarzeń
InputEventChangedo narzędzia Velocity Tracker będziemy teraz uwzględniać różnice zamiast pozycji. Dzięki temu prędkość będzie prawidłowo obliczana we wszystkich przypadkach, nawet jeśli element docelowy się porusza (Icea9d, b/216582726, b/223440806, b/227709803). - Gdy element przewijany ma zaznaczony element podrzędny, będzie teraz prawidłowo przewijać, aby utrzymać go w widoku, gdy jego rozmiar się zmniejszy, nawet jeśli rozmiar jest animowany. (I80867, b/230756508, b/220119990)
- Naprawiliśmy błąd powodujący awarię, gdy
TextFieldjest czyszczone i ponownie wypełniane, gdy zaznaczenie jest aktywne. (I1235b, b/208655565, b/214253689)
Wersja 1.3.0-alpha01
29 czerwca 2022 r.
Publikacja androidx.compose.foundation:foundation:1.3.0-alpha01 i androidx.compose.foundation:foundation-layout:1.3.0-alpha01 Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wprowadziliśmy typ adnotacji
UrlAnnotationi powiązane z nim metody, aby obsługiwać linkiTalkBackwAnnotatedString. (I1c754, b/231495122)
Poprawki błędów
BasicTextFieldcursorBrushmoże teraz być animowany bez ponownego uruchamiania timera kursora. (I812e6, b/236383522)
Wersja 1.2
Wersja 1.2.1
10 sierpnia 2022 r.
Publikacja androidx.compose.foundation:foundation:1.2.1 i androidx.compose.foundation:foundation-layout:1.2.1 Wersja 1.2.1 zawiera te zatwierdzenia.
Wersja 1.2.0
27 lipca 2022 roku
Publikacja androidx.compose.foundation:foundation:1.2.0 i androidx.compose.foundation:foundation-layout:1.2.0 Wersja 1.2.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.1.0
- Wartości
LazyVerticalGridiLazyHorizontalGridsą teraz stabilne. - Możesz teraz określić typ treści dla elementów w leniwie ładowanych listach i siatkach. Umożliwi to komponentom bardziej efektywne ponowne wykorzystywanie elementów.
- Listy i siatki leniwe mają teraz parametr
userScrollEnabled, który umożliwia wyłączenie przewijania za pomocą gestów użytkownika. - Dodaliśmy nowy eksperymentalny interfejs API o nazwie
LazyLayout. Jest to interfejs API, którego używamy wewnętrznie do obsługi list i siatek leniwych. OverscrollEffectInterfejs API został wprowadzony jako eksperymentalny. Możesz zdefiniować niestandardowe efekty przewijania poza zakres, a także dodać standardowy efekt platformy do niestandardowych kontenerów z możliwością przewijania.- Wprowadzono interfejsy API interoperacyjności zagnieżdżonego przewijania, które umożliwiają interoperacyjność między widokami a komponentami przewijania.
- Przewijanie za pomocą myszy i trackpada zostało dodane do wszystkich kontenerów przewijania.
Wersja 1.2.0-rc03
29 czerwca 2022 r.
Publikacja androidx.compose.foundation:foundation:1.2.0-rc03 i androidx.compose.foundation:foundation-layout:1.2.0-rc03 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.
Publikacja androidx.compose.foundation:foundation:1.2.0-rc02 i androidx.compose.foundation:foundation-layout:1.2.0-rc02 Wersja 1.2.0-rc02 zawiera te zatwierdzenia.
Wersja 1.2.0-rc01
15 czerwca 2022 r.
Publikacja androidx.compose.foundation:foundation:1.2.0-rc01 i androidx.compose.foundation:foundation-layout:1.2.0-rc01 Wersja 1.2.0-rc01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wprowadzono eksperymentalny interfejs
OverscrollEffect, który umożliwia stosowanie niestandardowych efektów przewijania poza zakres, a także przeciążeniaModifier.scrollable, które go akceptują. - Eksperymentalny interfejs
LocalOverScrollConfigurationzostał przeniesiony zfoundation.gesturedo pakietu podstawowego i zmieniono jego nazwę naLocalOverscrollConfiguration(If19fb, b/204650733). - Interfejsy w bibliotekach Compose są teraz tworzone przy użyciu domyślnych metod interfejsu jdk8 (I5bcf1).
- Wprowadziliśmy eksperymentalny interfejs API
checkScrollableContainerConstraints(), który umożliwia sprawdzenie, czy nie zagnieżdżamy kontenerów z możliwością przewijania. Możesz go używać podczas tworzenia własnych układów z leniwym ładowaniem, które można przewijać, za pomocą funkcjiLazyLayout. (Id6fab, b/233352497) - Usunięto z pakietu
androidx.compose.foundation.lazywycofany elementLazyVerticalGrid. Nowy stabilny interfejs API znajduje się wandroidx.compose.foundation.lazy.grid(I73c76, b/225192009).
Wersja 1.2.0-beta03
1 czerwca 2022 r.
Publikacja androidx.compose.foundation:foundation:1.2.0-beta03 i androidx.compose.foundation:foundation-layout:1.2.0-beta03 Wersja 1.2.0-beta03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano nowe eksperymentalne funkcje
IntervalListiMutableIntervalList. Umożliwia przedstawienie listy wartości za pomocą wielu przedziałów. Będzie to przydatne, gdy chcesz zdefiniować własny język DSL podobny do tego używanego przezLazyColumn, w którym elementy listy można definiować za pomocą wielu wywołań item/items. (I2d05e, b/228580728)
Poprawki błędów
- Uściśliliśmy dokumentację dotyczącą
WindowInsets.ime, aby wyjaśnić, żeimewstawki są raportowane od interfejsu API 23, ale tylko animowane w przypadku interfejsu API 30 lub nowszego. (Ia7fc0, b/230756508) - Naciśnięcie klawisza usuwania do przodu, gdy kursor znajduje się na końcu pola tekstowego, nie spowoduje już awarii.
DeleteSurroundingTextCommandiDeleteSurroundingTextInCodePointsCommandwymagają teraz, aby argumenty konstruktora były nieujemne. (Ica8e6, b/199919707)
Wersja 1.2.0-beta02
18 maja 2022 r.
Publikacja androidx.compose.foundation:foundation:1.2.0-beta02 i androidx.compose.foundation:foundation-layout:1.2.0-beta02 Wersja 1.2.0-beta02 zawiera te zmiany.
- Rozdzielczość czcionki do pobrania, która nie zmienia rozmiaru układu tekstu ani
TextField, wcześniej nie była ponownie rysowana, co prowadziło do nieaktualnego wyświetlania czcionki. Ta poprawka zapewnia, że układ tekstu zawsze wywołuje ponowne rysowanie (b/229727404). (I1d49e, b/229727404)
Wersja 1.2.0-beta01
11 maja 2022 roku
Publikacja androidx.compose.foundation:foundation:1.2.0-beta01 i androidx.compose.foundation:foundation-layout:1.2.0-beta01 Wersja 1.2.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
- To pierwsza wersja beta 1.2.
Zmiany w interfejsie API
- Dodano eksperymentalny interfejs
BeyondBoundsInterval, który może być używany przez niestandardowe implementacje interfejsuLazyListpodczas rozmieszczania elementów poza widocznymi granicami (Ifabfb, b/184670295). - Nazwa
LineHeightBehaviorzostała zmieniona naLineHeightStyle - Nazwa
LineVerticalAlignmentzostała zmieniona naLineHeightStyle.Alignment - Zmienianie nazwy:
LineHeightTrimzmieniono naLineHeightStyle.Trim - Usunięto wartości konstruktora domyślnego z
LineHeightStyle(I582bf, b/181155707) - Dodano wartości domyślne dla opcjonalnych elementów interfejsu
LazyLayoutItemProvider. (Iba8a0) - W
LazyLayoutItemProviderzamiast fabryki zwracającej lambdę kompozycyjną według indeksu mamy teraz prostszą funkcję typu „composable” Item akceptującą indeks. (Id2196) - Nazwa LazyLayoutItemsProvider została zmieniona na LazyLayoutItemProvider (I0638c)
- Nazwa
LazyLayoutItemsProvider.itemsCountzostała zmieniona naitemCount(Id409c) - Dodano pędzel do
TextStyleiSpanStyle, aby umożliwić rysowanie tekstu z kolorowaniem gradientowym. (I53869, b/187839528) - Atrybuty
trimFirstLineTopitrimLastLineBottomelementuLineHeightBehaviorzostały przekształcone w jeden typ wyliczeniowy:LineHeightTrim.LineHeightTrimmają 4 stany zdefiniowane przez 2 wartości logiczne:FirstLineTop,LastLineBottom, Both i None (Ifc6a5, b/181155707). Dodano
LineHeightBehaviordo elementów sterującychTextStyleiParagraphStyle. LineHeightBehavior, które określają, czy wysokość wiersza jest stosowana do góry pierwszego wiersza i do dołu ostatniego wiersza. Określa też wyrównanie wiersza w przestrzeni podanej przezTextStyle(lineHeight).Na przykład zachowanie podobne do tego, które definiuje usługa porównywania cen, można uzyskać za pomocą parametru
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false).Konfiguracje
trimFirstLineTopitrimLastLineBottomdziałają prawidłowo tylko wtedy, gdyincludeFontPaddingma wartość false. (I97332, b/181155707)Dodano eksperymentalny modyfikator
imeNestedScroll(), aby deweloperzy mogli sterować edytorem IME za pomocą przewijania. (I60759)
Poprawki błędów
- Rozwiązaliśmy problem regresji, w którym pola tekstowe nie ukrywały klawiatury po usunięciu z kompozycji, gdy były zaznaczone. (I7a410, b/230536793, b/225541817)
- Obsługa wielokropka, gdy wysokość jest ograniczona i nie mieści wszystkich wierszy tekstu (Ie528c, b/168720622)
BringIntoViewRequester.bringIntoViewbędzie teraz zawsze wstrzymywane do momentu ukończenia żądania lub przerwania go przez nowsze, niepokrywające się żądanie. Nakładające się na siebie żądania będą umieszczane w kolejce. (I43e7f, b/216790855)- Równoczesne wywołania
BringIntoViewRequester.bringIntoVieww przypadku prostokątów, które całkowicie się pokrywają, będą teraz uwzględniać tylko żądanie większego prostokąta. (I34be7, b/216790855, b/184760918) - Domyślnie włączone
includeFontPadding. Możesz wyłączyćincludeFontPaddingza pomocą atrybutuTextStyle.platformTextStyle. W najbliższej przyszłości zmienimy domyślne działanie, ale do tego czasu pozwoli nam to lepiej zintegrować ulepszenia wysokości wiersza (aosp/2058653) i rozwiązać problemy zTextFieldprzycinaniem. (I01423, b/171394808) Modifier.bringIntoViewRequesternie korzysta już z usługionGloballyPositioned. (I630f5)
Wkład zewnętrzny
MouseInjectionScope.scroll(delta = someDelta)jest teraz odwrócony na Androidzie, jeśli przewijamy w pionie (jeśli someDelta jest dodatni, przewijanie będzie w dół) (Ifb697, b/224992993)
Wersja 1.2.0-alpha08
20 kwietnia 2022 r.
Publikacja androidx.compose.foundation:foundation:1.2.0-alpha08 i androidx.compose.foundation:foundation-layout:1.2.0-alpha08 Wersja 1.2.0-alpha08 zawiera te zmiany.
Zmiany w interfejsie API
- Wyświetl wszystkie dostępne grubości czcionek systemowych na Androidzie, gdy używasz
FontFamily.SansSerif. W przypadku interfejsów API w wersjach 21–28 wewnętrznie będą używane nazwy czcionek zastępczych, np. sans-serif-medium. Jest to zmiana w stosunku do poprzedniego działania, ponieważ w przypadku interfejsu API w wersjach 21–28 obsługiwane były tylko wagi 400 i 700. (I380fe, b/156048036, b/226441992) - Elementy Paragraph i MultiParagraph akceptują teraz parametr Constraints. Przekazywanie wartości
Constraints.maxHeightjest obecnie operacją bez efektu, ale w przyszłości umożliwi wykonywanie obliczeń, np. skracanie tekstu na podstawie wysokości. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()akceptuje teraz niestandardową klasę podobną do MutableSet, która nie zezwala na dodawanie do niej nowych elementów. (Icd314)- Częściowe wykorzystanie (w dół LUB pozycja) zostało wycofane w
PointerInputChange. Aby w pełni wykorzystać zmianę, możesz użyćconsume(). Możesz użyćisConsumed, aby sprawdzić, czy ktoś inny wcześniej wykorzystał zmianę. PointerInputChange::copy()zawsze tworzy teraz płytką kopię. Oznacza to, że kopiePointerInputChangezostaną wykorzystane, gdy jedna z nich zostanie wykorzystana. Jeśli chcesz utworzyć niepowiązany elementPointerInputChange, użyj konstruktora. (Ie6be4, b/225669674)- Wprowadzamy nowy eksperymentalny interfejs API
LazyLayout. Dzięki temu możesz tworzyć własne komponenty, np.LazyColumnzLazyVerticalGrid. Pamiętaj, że interfejs API jest na wczesnym etapie rozwoju i może ulec zmianie w przyszłych wersjach. (Iba2bc, b/166591700) AndroidFontprzyjmuje teraztypefaceLoaderjako parametr konstruktora. (I2c971)WindowInsetsreklama towarzysząca udostępnia teraz informacje o widoczności (czy jest widoczna na ekranie, niezależnie od tego, czy przecina okno) i rozmiarze, jaki może mieć, jeśli jest dostępna na urządzeniu, ale nie jest obecnie aktywna. (I65182, b/217770337)
Wersja 1.2.0-alpha07
6 kwietnia 2022 roku
Publikacja androidx.compose.foundation:foundation:1.2.0-alpha07 i androidx.compose.foundation:foundation-layout:1.2.0-alpha07 Wersja 1.2.0-alpha07 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano interfejs API
PinnableParent, który umożliwia elementom podrzędnym układów leniwych zapobieganie usuwaniu aktualnie skomponowanych elementów (Ibbdd0, b/184670295). - Pola
LazyListLayoutInfoiLazyGridLayoutInfomają teraz polabeforeContentPaddingiafterContentPadding(I3b628, b/200920410) - Dodano
KeyboardType.Decimaljako alternatywę dlaKeyboard.Number, aby uwzględnić separator dziesiętny w edytorze IME. (Iec4c8, b/209835363) - Dodaj nowy deskryptor czcionki Font(DeviceFontFamilyName), aby opcjonalnie wyszukiwać czcionki zainstalowane w systemie podczas łańcuchów zastępczych czcionek. (I30468, b/219754572)
PointerEventType.ScrolliPointerEvent.scrollDeltato teraz stabilne interfejsy API (I574c5, b/225669674)- Dodana tymczasowa konfiguracja zgodności dla
includeFontPaddingwTextStyle/ParagraphStyle. includeFontPaddingmoże zostać zmieniona za pomocąTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). Jest to tymczasowa opcja konfiguracji, która umożliwia migrację i zostanie usunięta. (If47be, b/171394808) - Zaktualizowano
FontFamily.Resolver, aby zintegrować ustawienie ułatwień dostępu „Pogrubienie tekstu w całym systemie” (I6c1e7) - Właściwość rozszerzenia
consumeWindowInsetselementuComposeViewumożliwia programistom wyłączenie korzystania z elementu Android WindowInsets. Dzięki temu poszczególneComposeViewsw hierarchii mogą stosowaćWindowInsetsbez wzajemnego zakłócania się. (I0ef08, b/220943142)
Wersja 1.2.0-alpha06
23 marca 2022 r.
Publikacja androidx.compose.foundation:foundation:1.2.0-alpha06 i androidx.compose.foundation:foundation-layout:1.2.0-alpha06 Wersja 1.2.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano działanie semantyczne
RequestFocus, aby poprosić o skupienie się na elemencie, na którym można ustawić fokus. (I17b71) - Usługa
FocusOrderzostała połączona z usługąFocusProperties, a usługafocusProperties()ma teraz wszystkie funkcje usługifocusOrder(). InterfejsyFocusOrderifocusOrder()zostały wycofane.focusOrder(), które akceptujefocusRequester, należy zastąpić modyfikatoremfocusRequester()w połączeniu zfocusProperties(). Dzięki temu modyfikatory mogą mieć bardziej wyraźny podział obowiązków. (I601b7) WindowInsets.asPaddingValues(Density)został dodany, aby umożliwić deweloperom przeprowadzanie konwersji bez konieczności korzystania z kompozycji. (I94c35)- Zaktualizowano analizowanie wektorowych elementów rysunkowych, aby obsługiwać automatyczne dublowanie, które odwraca zawartość elementu
VectorPainter, jeśli bieżący kierunek układu to RTL. (I79cd9, b/185760237)
Poprawki błędów
- Modyfikatory przewijania (
Modifier.verticalScroll(),Modifier.horizontalScroll()iModifier.scrollable()) będą teraz przewijać, aby zachować widoczność kompozycji, na której jest fokus, jeśli obszar przewijania zostanie zmieniony, a kompozycja, na której jest fokus, była wcześniej widoczna. - Pola tekstowe będą teraz wyświetlane nad klawiaturą, gdy są aktywne i klawiatura jest widoczna, jeśli znajdują się w przewijanym elemencie, który nie jest leniwy, a tryb wprowadzania tekstu to
ADJUST_RESIZE. (I4a485, b/190539358, b/192043120, b/216842427)
Wersja 1.2.0-alpha05
9 marca 2022 r.
Publikacja androidx.compose.foundation:foundation:1.2.0-alpha05 i androidx.compose.foundation:foundation-layout:1.2.0-alpha05 Wersja 1.2.0-alpha05 zawiera te zmiany.
Zmiany w interfejsie API
- Wartości
LazyVerticalGridiLazyHorizontalGridsą teraz stabilne. (I307c0) LazyGridItemInfo.Unknownzostał zastąpiony osobnymi polamiLazyGridItemInfo.UnknownRowiLazyGridItemInfo.UnknownColumn(I56d51)LazyVerticalGrid/LazyHorizontalGridi wszystkie powiązane interfejsy API zostały przeniesione do podpakietu.grid. Zaktualizuj importy zandroidx.compose.foundation.lazydoandroidx.compose.foundation.lazy.grid. (I2d446, b/219942574)- Tekst:
includeFontPaddingjest teraz domyślnie wyłączony. Problemy z przycinaniem wynikające zincludeFontPadding=falsezostały rozwiązane i nie powinno już dochodzić do przycinania w przypadku wysokich skryptów. (I31c84, b/171394808) - Interfejs pomiarowy udostępnia teraz właściwość parentData (I3313f)
- Wprowadzono eksperymentalną funkcję
Modifier.onFocusedBoundsChanged, która umożliwia obserwowanie granic elementów, na których można ustawić fokus. (I14283, b/220030968, b/190539358, b/192043120, b/216842427) - Dodano LazyHorizontalGrid. (I61ae7, b/191238807)
- Dodaliśmy nowy interfejs
LazyVerticalGridAPI do określania rozmiarów osi poprzecznej (I17723). - Dodano modyfikator FocusGroup (I64bc0, b/213508274, b/184670295)
Poprawki błędów
WindowInsets.toString()będzie teraz wyświetlać prawidłowe wartości. (I1585d)
Wkład zewnętrzny
- Zaktualizowano do korzystania ze współprogramów Kotlinx w wersji 1.6.0 (I3366d)
Wersja 1.2.0-alpha04
23 lutego 2022 r.
Publikacja androidx.compose.foundation:foundation:1.2.0-alpha04 i androidx.compose.foundation:foundation-layout:1.2.0-alpha04 Wersja 1.2.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
BringIntoViewRespondersnie muszą już ręcznie przekazywać żądań do elementów nadrzędnych, ale muszą od razu zwracać prostokąt, który ma być widoczny w elemencie nadrzędnym. (I8e66a)- Obsługa asynchronicznego wczytywania czcionek w komponencie Text (I77057, b/214587005)
LazyVerticalGridobsługuje terazline breakingprzed elementami, których zakres nie mieści się w bieżącym wierszu. (I05c40, b/207462103)- Zmieniono nazwę
excludeFromSystemGesturesnasystemGesturesExclusion(I19526) LazyVerticalGridobsługuje teraz reverseLayout. (I6d7d7, b/215572963, b/211753558)- Dodaj metodę
WindowInsets.only(), aby umożliwić programistom uwzględnianie tylko wymiarów z klasy WindowInsets. (I14c94, b/217768486) Dodano adnotacje
ComposableTarget,ComposableTargetMarkeriComposableOpenTarget, które umożliwiają zgłaszanie w czasie kompilowania sytuacji, w których funkcja typu „composable” jest wywoływana z kierowaniem na applier, do którego nie została zaprojektowana.W większości przypadków adnotacje te mogą być wywnioskowane przez wtyczkę kompilatora Compose, więc bezpośrednie używanie tych adnotacji powinno być rzadkie . Nie można wywnioskować przypadków, w których tworzone i używane są niestandardowe aplikatory, abstrakcyjne funkcje kompozycyjne (np. metody interfejsu), pola lub zmienne globalne, które są kompozycyjnymi wyrażeniami lambda (zmienne lokalne i parametry są wywnioskowane), lub gdy używane są funkcje kompozycyjne
ComposeNodelub powiązane.W przypadku niestandardowych funkcji stosujących funkcje kompozycyjne, które wywołują
ComposeNodelubReusableComposeNode, należy dodać adnotacjęCompoableTargetdo funkcji i wszystkich typów parametrów lambda kompozycyjnych. Zalecamy jednak utworzenie adnotacji oznaczonej symbolemComposableTargetMarker, a następnie użycie tej adnotacji zamiast symboluComposableTarget. Adnotacja kompozycyjna oznaczona symbolemComposableTargetMarkerjest równoważna adnotacjiComposbleTargetz pełną i jednoznaczną nazwą klasy atrybutu jako parametrem stosującym. Przykład użycia elementuComposableTargetMarkerznajdziesz w sekcjianroidx.compose.ui.UiComposable. (I38f11)
Poprawki błędów
- Teraz można przekazywać ujemne przesunięcia przewijania do funkcji
LazyGridState.scrollToItem()iLazyGridState.animateScrollToItem(). (I025c6, b/211753558) - Obsługa asynchronicznego wczytywania czcionek w przypadku elementu TextField. (Icc4bf, b/214587005)
Wersja 1.2.0-alpha03
9 lutego 2022 r.
Publikacja androidx.compose.foundation:foundation:1.2.0-alpha03 i androidx.compose.foundation:foundation-layout:1.2.0-alpha03 Wersja 1.2.0-alpha03 zawiera te zmiany.
Zmiany w interfejsie API
- Metody
notifyFocusedRectwTextInputSessioniTextInputServicezostały wycofane i nie będą wywoływane. Zamiast niej używaj zasadyBringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874) - Animacje zostały włączone w przypadku elementów leniwych siatek z funkcją Modifier.animateItemPlacement(). (Ib6621, b/211753218)
BringIntoViewRequesterprzekazuje teraz żądania do hostowanego widoku Androida. (Ia7a51)FontFamilyResolverjest teraz dostępny w ramach usługiLocalFontFamilyResolver.current- Dodano
createFontFamilyResolver(context)icreateFontFamilyResolver(context, coroutineScope), aby tworzyć nowe moduły rozpoznawania FontFamily poza użyciem funkcji Compose. - Komponenty Paragraph i MultiParagraph przyjmują teraz wartość
FontFamily.Resolver TextLayoutResult.layoutInput.fontFamilyResolverzawiera teraz resolver używany w tym układzie, wycofanyTextLayoutResult.layoutInput.resourceLoader, ponieważ nie jest już używany. (Id5a45, b/174162090)
- Dodano
- Dodaliśmy
AndroidFont, nowy interfejs API niskiego poziomu do udostępniania nowych typów deskryptorów zasobów czcionek na Androidzie. Na przykład wczytywanie czcionek z backendu aplikacji, opcjonalne lokalizowanie wstępnie zainstalowanych czcionek na urządzeniu lub wczytywanie czcionki z zasobu, który nie jest udostępniany przez bieżące fabryki czcionek.- Rozszerzony interfejs
Font.ResourceLoadedAPI obsługujący opcjonalne i asynchroniczne wczytywanie czcionek. Nie zalecamy deweloperom aplikacji bezpośredniego korzystania z tego interfejsu API. Aby dodać nowe typy czcionek, zapoznaj się z dokumentacją AndroidFont. - Funkcja rozszerzenia
Font.AndroidResourceLoaderumożliwia tworzenieFont.ResourceLoaderpoza kompozycją. - Dodano parametr
loadingStrategydo czcionek opartych na zasobach, aby umożliwić asynchroniczne wczytywanie, gdy czcionka zasobu odwołuje się do pliku XML czcionek do pobrania. (Ie5aea, b/174162090)
- Rozszerzony interfejs
- Konstruktor
Typeface(FontFamily)został wycofany. Wcześniej służyło do wstępnego wczytywania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. W przypadku czcionek do pobrania to wywołanie może blokować działanie przez 10 sekund. Zamiast niej używaj zasadyFontFamilyResolver.preload- Interfejs
fontResource(FontFamily): Typefacezostał wycofany. Wcześniej służyło do wstępnego wczytywania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. Zamiast tego użyjFontFamilyResolver.preload(If8e7c, b/174162090).
- Interfejs
- Możesz teraz określić typ treści dla elementów funkcji
LazyVerticalGrid- item/items. FunkcjeLazyGridScopeakceptują teraz taki parametr. Podanie takich informacji pomaga logice ponownego wykorzystania kompozycji produktów działać wydajniej i ponownie wykorzystywać treści tylko w przypadku produktów podobnego typu. (I7b355, b/215372836) LazyListLayoutInfoiLazyGridLayoutInfomają teraz nowe właściwości:viewportSize,orientation,reverseLayout(Ifc8ed, b/200920410)- Możesz teraz określić typ treści dla elementów funkcji item/items w LazyColumn/LazyRow. Funkcje LazyListScope akceptują teraz taki parametr. Podanie takich informacji pomaga logice ponownego wykorzystania kompozycji produktów działać wydajniej i ponownie wykorzystywać treści tylko w przypadku produktów podobnego typu. (I26506)
- Konstruktor
SubcomposeLayoutStateakceptującymaxSlotsToRetainForReusezostał wycofany. Zamiast tego jest nowy konstruktor akceptującySubcomposeSlotReusePolicy– nowy interfejs umożliwiający bardziej szczegółową kontrolę nad tym, które sloty powinny zostać zachowane do ponownego użycia w przyszłości. (I52c4d) - Dodaje modyfikatory do WindowInsets, zarówno w przypadku dopełnienia, jak i rozmiaru. Dzięki temu niektóre treści mogą się rozciągać na obszar wcięcia, a treści główne pozostają poza nim. Na przykład windowInsetsPadding można użyć do dodania dopełnienia obszaru treści, aby uniknąć obszarów, które mogą być całkowicie lub częściowo zasłonięte. (Id0395, b/213942085)
Poprawki błędów
- Pola tekstowe będą teraz wyświetlane nad klawiaturą, gdy są aktywne i klawiatura jest widoczna, a tryb wprowadzania programowego to
ADJUST_PAN. (I8eaeb, b/190539358, b/192043120) - Desktop używa lokalnej kompozycji dla
FontFamily.Resolver- Wycofanie wersji
FontLoaderna komputery - Nowa fabryka
createFontFamilyResolverna komputerze (I6bbbb, b/174162090)
- Wycofanie wersji
- Klawiatura ekranowa nie miga już podczas przełączania zaznaczenia między polami tekstowymi. (I1bf50, b/187746439)
- Pola tekstowe nie wymagają już dodatkowego naciśnięcia przycisku Wstecz, gdy wyświetlany jest uchwyt kursora. (Ideb4b, b/205726883)
- Działanie lupy do zaznaczania tekstu zostało dopracowane, aby pasowało do lupy platformy. (Idd918, b/206833278)
Wersja 1.2.0-alpha02
26 stycznia 2022 r.
Publikacja androidx.compose.foundation:foundation:1.2.0-alpha02 i androidx.compose.foundation:foundation-layout:1.2.0-alpha02 Wersja 1.2.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaliśmy
NonRestartableComposabledo metod, które są przeciążeniami istniejących metod bez złożonej logiki. Zmniejsza to liczbę sprawdzania przez kompilator zapamiętywania (równości) dla wszystkich parametrów, które są powtarzane w wywoływanej funkcji wewnętrznej. (I90490) - Dodano
excludeFromSystemGesturemodyfikatory, aby ułatwić dostęp dosetSystemGestureExclusionRects(I46f07) na Androidzie.
Poprawki błędów
- Działanie lupy do zaznaczania tekstu zostało dopracowane, aby pasowało do lupy platformy. (Idd918, b/206833278)
LazyColumn,LazyRow,Modifier.verticalScrolli inne kontenery korzystające zModifier.scrollableobsługują teraz przewijanie za pomocą kółka myszy. (I2b5e1, b/198214718)
Wersja 1.2.0-alpha01
12 stycznia 2022 r.
Publikacja androidx.compose.foundation:foundation:1.2.0-alpha01 i androidx.compose.foundation:foundation-layout:1.2.0-alpha01 Wersja 1.2.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Do funkcji
LazyColumn,LazyRowiLazyVerticalGriddodaliśmy nowy parametruserScrollEnabled, który umożliwia użytkownikom tymczasowe lub trwałe wyłączenie przewijania inicjowanego przez użytkownika za pomocą gestów dotykowych lub działań związanych z ułatwieniami dostępu. Programowe przewijanie za pomocą metod w stanie będzie nadal dozwolone. (I7eae9, b/201150093) - Dodaj wywołanie zwrotne
onSizeChangeddo modyfikatora lupy. (I6879f) - Widżet lupy jest teraz widoczny podczas przeciągania uchwytów zaznaczenia w
SelectionContainer. (I30b38, b/139320979)
Poprawki błędów
- Rozwiązuje problem z
TextFielduchwytem kursora, który nie ukrywa się po przewinięciu poza widok. (I14552, b/208883748)
Aktualizacje zależności
- Teraz zależy od Kotlin
1.6.10.
Wersja 1.1
Wersja 1.1.1
23 lutego 2022 r.
Publikacja androidx.compose.foundation:foundation:1.1.1 i androidx.compose.foundation:foundation-layout:1.1.1 Wersja 1.1.1 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono problem
NullPointerExceptionwandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList(aosp/1947059, b/206677462) - Rozwiązaliśmy problem z awarią spowodowaną przez zawartość schowka podczas odczytu ze schowka na urządzeniu z Androidem. (I06020, b/197769306)
- Poprawiono RTL w
LazyVerticalGrid(aosp/1931080, b/207510535)
Wersja 1.1.0
9 lutego 2022 r.
Publikacja androidx.compose.foundation:foundation:1.1.0 i androidx.compose.foundation:foundation-layout:1.1.0 Wersja 1.1.0 zawiera te zmiany.
Ważne zmiany od wersji 1.0.0
- Stabilna obsługa efektu przewijania w Androidzie 12
- Ulepszenia rozmiaru docelowego elementu dotykowego
- Pamiętaj, że w przypadku Compose 1.0 komponenty Material rozszerzą swój obszar układu, aby spełnić wytyczne dotyczące ułatwień dostępu w interfejsie Material w zakresie rozmiaru obszaru klikalnego. Na przykład docelowy element dotykowy przycisku zostanie powiększony do minimalnego rozmiaru 48 x 48 dp, nawet jeśli ustawisz mniejszy rozmiar przycisku. Dzięki temu biblioteka Compose Material zachowuje się tak samo jak komponenty Material Design, co zapewnia spójne działanie w przypadku łączenia widoków i elementów Compose. Ta zmiana zapewnia też, że podczas tworzenia interfejsu za pomocą komponentów Compose Material spełnione zostaną minimalne wymagania dotyczące dostępności docelowych elementów dotykowych.
- Stabilna obsługa kolumny nawigacji
- Przekształcenie kilku eksperymentalnych interfejsów API w stabilne
- Obsługa nowszych wersji języka Kotlin
Wersja 1.1.0-rc03
26 stycznia 2022 r.
Publikacja androidx.compose.foundation:foundation:1.1.0-rc03 i androidx.compose.foundation:foundation-layout:1.1.0-rc03 Wersja 1.1.0-rc03 zawiera te zatwierdzenia.
Poprawki błędów
- Zaktualizowano, aby obsługiwać Compose Material w wersji 1.1.0-rc03
Wersja 1.1.0-rc01
15 grudnia 2021 roku
Publikacja androidx.compose.foundation:foundation:1.1.0-rc01 i androidx.compose.foundation:foundation-layout:1.1.0-rc01 Wersja 1.1.0-rc01 zawiera te zmiany.
Poprawki błędów
- Teraz można przekazywać ujemne przesunięcia przewijania do funkcji
LazyListState.scrollToItem()iLazyListState.animateScrollToItem(). (Iceb90, b/184252837) - Usunęliśmy błąd, który powodował brak działań przewijania ułatwień dostępu (I7cbfb).
Wersja 1.1.0-beta04
1 grudnia 2021 r.
Publikacja androidx.compose.foundation:foundation:1.1.0-beta04 i androidx.compose.foundation:foundation-layout:1.1.0-beta04 Wersja 1.1.0-beta04 zawiera te zmiany.
Nowe funkcje
- Zaktualizowano, aby była zgodna z Kotlinem w wersji
1.6.0
Zmiany w interfejsie API
- Usunięto możliwość wartości null w
androidx.core.view(I7078a, b/204917439) - Dodano eksperymentalne interfejsy API, które umożliwiają wykorzystanie obiektu PointerInputchange w całości lub sprawdzenie, czy został on wykorzystany. (I2e59d)
- Wyświetlaj widżet lupy podczas przeciągania kursora lub uchwytów zaznaczenia w polach tekstowych. (I5391e, b/203781358)
Poprawki błędów
- Naprawiono problem z nieprzesuwaniem się uchwytów tekstu po zmianie widoczności edytora IME. (I25f2e)
Wersja 1.1.0-beta03
17 listopada 2021 r.
Publikacja androidx.compose.foundation:foundation:1.1.0-beta03 i androidx.compose.foundation:foundation-layout:1.1.0-beta03 Wersja 1.1.0-beta03 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaliśmy obsługę poziomych zakresów w LazyVerticalGrid. (I7e2fa, b/176758183)
Dodaliśmy eksperymentalną możliwość animowania pozycji elementów list leniwych. W ramach LazyItemScope dostępny jest nowy modyfikator o nazwie
Modifier.animateItemPlacement(). Przykład użycia:var list by remember { mutableStateOf(listOf("A", "B", "C")) } LazyColumn { item { Button(onClick = { list = list.shuffled() }) { Text("Shuffle") } } items(list, key = { it }) { Text("Item $it", Modifier.animateItemPlacement()) } }- Jeśli podasz klucz za pomocą
LazyListScope.itemlubLazyListScope.items, ten modyfikator włączy animacje zmiany kolejności elementów. Oprócz zmiany kolejności elementów animowane będą też wszystkie inne zmiany pozycji spowodowane zdarzeniami takimi jak zmiany układu lub wyrównania. (I59e7b, b/150812265)
- Jeśli podasz klucz za pomocą
Wersja 1.1.0-beta02
3 listopada 2021 r.
Publikacja androidx.compose.foundation:foundation:1.1.0-beta02 i androidx.compose.foundation:foundation-layout:1.1.0-beta02 Wersja 1.1.0-beta02 zawiera te zmiany.
Poprawki błędów
- Efekty falowania i inne wskaźniki będą teraz opóźniane tylko wtedy, gdy znajdują się w kontenerze
Modifier.scrollable(), a nie zawsze w przypadku zdarzenia w dół. (Ibefe0, b/203141462) - Dodano eksperymentalny interfejs BringIntoView API, który umożliwia wysyłanie do rodziców próśb o przewinięcie ekranu, aby wyświetlić dany element (Ib918d, b/195353459).
Wkład zewnętrzny
- Dodano
Modifier.pointerHoverIcon(I95f01)
Wersja 1.1.0-beta01
27 października 2021 r.
Publikacja androidx.compose.foundation:foundation:1.1.0-beta01 i androidx.compose.foundation:foundation-layout:1.1.0-beta01 Wersja 1.1.0-beta01 zawiera te zmiany.
Poprawki błędów
- Dodano eksperymentalny interfejs BringIntoView API, który umożliwia wysyłanie do rodziców próśb o przewinięcie ekranu, aby wyświetlić dany element (Ib918d, b/195353459).
Wersja 1.1.0-alpha06
13 października 2021 r.
Publikacja androidx.compose.foundation:foundation:1.1.0-alpha06 i androidx.compose.foundation:foundation-layout:1.1.0-alpha06 Wersja 1.1.0-alpha06 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano przeciążenie bez elementów podrzędnych dla układu, co zwiększa wydajność (Ib0d9a).
- Funkcja
SemanticsNodeInteraction.performSemanticsActionzwraca terazSemanticsNodeInteraction, na którym została wywołana. (I9e5db) - Dodano
performScrollToNode(matcher: SemanticsMatcher), które przewija kontener z możliwością przewijania do treści pasujących do danego dopasowania. (Ic1cb8)
Wersja 1.1.0-alpha05
29 września 2021 r.
Publikacja androidx.compose.foundation:foundation:1.1.0-alpha05 i androidx.compose.foundation:foundation-layout:1.1.0-alpha05 Wersja 1.1.0-alpha05 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano eksperymentalne wskaźniki historyczne do PointerEventChange. (Ic1fd8, b/197553056, b/199921305)
Poprawki błędów
- Poprawiona obsługa ułatwień dostępu w przypadku elementów z możliwością przewijania (zarówno ładowanych leniwie, jak i nie) w odniesieniu do przewijania (I6cdb0).
Wersja 1.1.0-alpha04
15 września 2021 r.
Publikacja androidx.compose.foundation:foundation:1.1.0-alpha04 i androidx.compose.foundation:foundation-layout:1.1.0-alpha04 Wersja 1.1.0-alpha04 zawiera te zmiany.
Zmiany w interfejsie API
- Wycofano
performGestureiGestureScope, które zostały zastąpione przezperformTouchInputiTouchInjectionScope. (Ia5f3f, b/190493367) - Dodaliśmy
touchBoundsInRootdoSemanticsNode, 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
- Na urządzeniach z Androidem 12 dodano obsługę rozciągania przewijania. (Iccf3c, b/171682480)
Wersja 1.1.0-alpha03
1 września 2021 roku
Publikacja androidx.compose.foundation:foundation:1.1.0-alpha03 i androidx.compose.foundation:foundation-layout:1.1.0-alpha03 Wersja 1.1.0-alpha03 zawiera te zmiany.
Nowe funkcje
- Zaktualizowano
1.1.0-alpha03Compose, aby zależał od Kotlin1.5.30. (I74545)
Zmiany w interfejsie API
- Dodano efekt świecenia podczas przewijania. Dodaliśmy nowy eksperymentalny interfejs OverScrollConfiguration API, który umożliwia konfigurowanie efektu wizualnego przewijania poza krawędź. Aby wyłączyć efekt overscroll, podaj wartość null. (I0c304, b/171682480)
- Interfejs AwaitPointerEventScope ma teraz funkcje withTimeout() i withTimeoutOrNull() (I507f0, b/179239764, b/182397793).
- Dodano metodę testową, aby uzyskać przycięte granice. (I6b28e)
- Dodano minimalny rozmiar docelowego elementu dotykowego do ViewConfiguration do użycia w semantyce i danych wejściowych wskaźnika, aby zapewnić dostępność. (Ie861c)
Wersja 1.1.0-alpha02
18 sierpnia 2021 r.
Publikacja androidx.compose.foundation:foundation:1.1.0-alpha02 i androidx.compose.foundation:foundation-layout:1.1.0-alpha02 Wersja 1.1.0-alpha02 zawiera te zmiany.
Zmiany w interfejsie API
- Dodano wersje DpSize dla
Modifier.sizeirequiredSize(I3fc7e, b/194219828)
Wersja 1.1.0-alpha01
4 sierpnia 2021 r.
Publikacja androidx.compose.foundation:foundation:1.1.0-alpha01 i androidx.compose.foundation:foundation-layout:1.1.0-alpha01 Wersja 1.1.0-alpha01 zawiera te zmiany.
Zmiany w interfejsie API
- Zaktualizowana metoda
DrawScope#drawImage, która wykorzystuje prostokąty źródłowe i docelowe, aby wykorzystać opcjonalny parametr FilterQuality. Jest to przydatne w przypadku grafiki pikselowej, która ma być pikselowana po powiększeniu. Zaktualizowano funkcję BitmapPainter i funkcję kompozycyjną Image, aby korzystały też z opcjonalnego parametru FilterQuality (Ie4fb0, b/180311607) - Pole tekstowe czyści teraz zaznaczenie po naciśnięciu przycisku Wstecz, co jest zgodne z działaniem pola EditText na Androidzie. (I3ca16, b/174173645)
- Dodaj uchwyt kursora. (I07a82, b/173016579)
Poprawki błędów
- Przewijanie za pomocą działań semantycznych w przypadku list leniwych i zwykłych komponentów przewijania jest teraz animowane (Id9066, b/190742024).
Wkład zewnętrzny
LazyVerticalGridakceptuje teraz parametry układu poziomego i pionowego. (If9c92)
Wersja 1.0
Wersja 1.0.5
3 listopada 2021 r.
Publikacja androidx.compose.foundation:foundation:1.0.5 i androidx.compose.foundation:foundation-layout:1.0.5 Wersja 1.0.5 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiązaliśmy problem z awarią śledzenia instancji derivedStateOf. (aosp/1792247)
Wersja 1.0.4
13 października 2021 r.
Publikacja androidx.compose.foundation:foundation:1.0.4 i androidx.compose.foundation:foundation-layout:1.0.4 Wersja 1.0.4 zawiera te zatwierdzenia.
Aktualizacje zależności
- Zaktualizowano, aby zależał od wersji
1.5.31języka Kotlin
Wersja 1.0.3
29 września 2021 r.
Publikacja androidx.compose.foundation:foundation:1.0.3 i androidx.compose.foundation:foundation-layout:1.0.3 Wersja 1.0.3 zawiera te zatwierdzenia.
Aktualizacje zależności
- Zaktualizowano, aby zależał od wersji
1.5.30języka Kotlin
Wersja 1.0.2
1 września 2021 roku
Publikacja androidx.compose.foundation:foundation:1.0.2 i androidx.compose.foundation:foundation-layout:1.0.2 Wersja 1.0.2 zawiera te zatwierdzenia.
Zaktualizowano, aby obsługiwać wersję Compose 1.0.2. Compose 1.0.2 jest nadal zgodny z Kotlinem 1.5.21.
Wersja 1.0.1
4 sierpnia 2021 r.
Publikacja androidx.compose.foundation:foundation:1.0.1 i androidx.compose.foundation:foundation-layout:1.0.1 Wersja 1.0.1 zawiera te zatwierdzenia.
Aktualizacje zależności
- Zaktualizowano zależność od Kotlina
1.5.21.
Wersja 1.0.0
28 lipca 2021 roku
Publikacja androidx.compose.foundation:foundation:1.0.0 i androidx.compose.foundation:foundation-layout:1.0.0 Wersja 1.0.0 zawiera te zatwierdzenia.
Główne funkcje wersji 1.0.0
To pierwsza stabilna wersja Compose. Więcej informacji znajdziesz na oficjalnym blogu o wersjach Compose.
Znane problemy
Jeśli używasz Androida Studio Bumblebee Canary 4 lub wtyczki Androida do obsługi Gradle w wersji
7.1.0-alpha04/7.1.0-alpha05, może wystąpić ten błąd:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"Aby rozwiązać ten problem, tymczasowo zwiększ wartość parametru minSdkVersion do 24 lub wyższej w pliku
build.gradle. Ten problem zostanie rozwiązany w kolejnej wersji Androida Studio Bumblebee i wtyczki Androida do obsługi Gradle7.1. (b/194289155)
Wersja 1.0.0-rc02
14 lipca 2021 roku
Publikacja androidx.compose.foundation:foundation:1.0.0-rc02 i androidx.compose.foundation:foundation-layout:1.0.0-rc02 Wersja 1.0.0-rc02 zawiera te zatwierdzenia.
- Zaktualizowano renderowanie obramowań w przypadku ogólnych kształtów, aby rozwiązać problemy ze ścieżkami zdefiniowanymi za pomocą stałych wymiarów. (aosp/1748871, b/191817116)
Wersja 1.0.0-rc01
1 lipca 2021 r.
Publikacja androidx.compose.foundation:foundation:1.0.0-rc01 i androidx.compose.foundation:foundation-layout:1.0.0-rc01 Wersja 1.0.0-rc01 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Canvas obsługuje teraz parametr contentDescription na potrzeby ułatwień dostępu. (Ib547c)
Poprawki błędów
- Wyłączony przycisk, karta, pola wyboru i ogólnie
Modifier.clickable(enabled=false)będą blokować kliknięcia, które mają być przekazywane do elementu nadrzędnego. (Ic2c3b, b/183908811)
Wersja 1.0.0-beta09
16 czerwca 2021 r.
Publikacja androidx.compose.foundation:foundation:1.0.0-beta09 i androidx.compose.foundation:foundation-layout:1.0.0-beta09 Wersja 1.0.0-beta09 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Kontakt
ManualFrameClockzostał usunięty. Jeśli chcesz kontrolować animacje, użyj elementucomposeTestRule.mainClock. (I3c3e8, b/189951065) - zmiana wyliczenia Role i LiveRegionMode na klasy wbudowane z prywatnym konstruktorem (Id1890);
- KeyboardCapitalization jest przekształcane w klasę wbudowaną. (Id5a1c)
- TextOverflow jest zmieniany na klasę wbudowaną. (I433af)
Poprawki błędów
- Teraz, gdy określisz unikalne klucze dla elementów LazyColumn/Row, pozycja przewijania będzie utrzymywana na podstawie klucza, co oznacza, że jeśli dodasz lub usuniesz elementy przed aktualnie widocznym elementem, element z danym kluczem pozostanie pierwszym widocznym elementem. (Id263f, b/184257857)
- Kluczowe stałe to obecnie @ExperimentalComposeUiApi. Kod korzystający z interfejsu API może deklarować stałe prywatne przed stabilizacją. (Ia5d48)
- Dodaliśmy do klasy AndroidComposeTestRule interfejs IdlingStrategy, który może być używany przez platformy testowe do instalowania alternatywnego mechanizmu oczekiwania lub osiągania stanu spoczynku. Użyj
AndroidComposeTestRule.setIdlingStrategyFactory()przed rozpoczęciem testu, aby zainstalować własną strategię. (I608fa)
Dodane reguły profilu
W tej wersji dodaliśmy reguły profilu do tych modułów kompozycji (I14ed6):
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
Czym są reguły profilu?
Reguły profilu dla biblioteki są określone w pliku tekstowym
baseline-prof.txtznajdującym się w katalogusrc/mainlub w odpowiednim katalogu. Plik zawiera regułę w każdym wierszu. Reguła jest w tym przypadku wzorcem dopasowywanym do metod lub klas w bibliotece. Składnia tych reguł jest nadzbiorem formatu profilu ART czytelnego dla człowieka, który jest używany podczas korzystania zadb shell profman --dump-classes-and-methods .... Reguły te przyjmują jedną z 2 form, aby kierować reklamy na metody lub klasy.Reguła metody będzie mieć ten wzorzec:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>Reguła klasy będzie miała następujący wzorzec:
<CLASS_DESCRIPTOR>W tym przypadku
<FLAGS>to co najmniej jeden z tych znaków:H,SiP. Wskazuje on, czy ta metoda powinna być oznaczona jako „Hot”, „Startup” lub „Post Startup”.Symbol
<CLASS_DESCRIPTOR>to deskryptor klasy, do której należy kierowana metoda. Na przykład klasaandroidx.compose.runtime.SlotTablebędzie miała deskryptorLandroidx/compose/runtime/SlotTable;.<METHOD_SIGNATURE>to sygnatura metody, która zawiera jej nazwę, typy parametrów i typy zwracanych wartości. Na przykład metodafun isPlaced(): BooleanwLayoutNodema sygnaturęisPlaced()Z.Wzorce mogą zawierać symbole wieloznaczne (
**,*i?), dzięki czemu jedna reguła może obejmować wiele metod lub klas.
Do czego służą reguły?
Metoda oznaczona flagą
Hjest „gorącą” metodą i powinna być skompilowana z wyprzedzeniem.Metoda oznaczona flagą
Sjest wywoływana podczas uruchamiania i powinna być skompilowana z wyprzedzeniem, aby uniknąć kosztów kompilacji i interpretacji w momencie uruchamiania.Metoda oznaczona flagą
Pjest wywoływana po uruchomieniu.Klasa obecna w tym pliku wskazuje, że jest używana podczas uruchamiania i powinna być wstępnie przydzielona w stercie, aby uniknąć kosztów ładowania klasy.
Jak to działa?
- Biblioteki mogą definiować te reguły, które będą pakowane w artefakty AAR. Gdy aplikacja zawierająca te artefakty zostanie skompilowana, reguły zostaną połączone, a połączone reguły zostaną użyte do utworzenia kompaktowego binarnego profilu ART, który jest specyficzny dla aplikacji. ART może następnie użyć tego profilu, gdy aplikacja jest instalowana na urządzeniach, aby skompilować z wyprzedzeniem określony podzbiór aplikacji i poprawić jej wydajność, zwłaszcza podczas pierwszego uruchomienia. Pamiętaj, że nie będzie to miało wpływu na aplikacje, które można debugować.
Wersja 1.0.0-beta08
2 czerwca 2021 r.
Publikacja androidx.compose.foundation:foundation:1.0.0-beta08 i androidx.compose.foundation:foundation-layout:1.0.0-beta08 Wersja 1.0.0-beta08 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wyliczenie NestedScrollSource zostało zastąpione klasą wbudowaną. (Ie321b, b/187055290)
- Zmieniliśmy sposób używania wyliczeń, aby uniknąć problemów z wyczerpującymi instrukcjami „when” po dodaniu nowych wartości wyliczenia. (I2b5eb)
- Dodaje limit czasu kliknięcia do elementów, które można kliknąć lub przełączyć, aby zapobiec wyświetlaniu efektu fali podczas przewijania lub przeciągania (Ia2704, b/168524931).
- Właściwości semantyczne ContentDescription i Text nie są już pojedynczymi wartościami, ale listami. Dzięki temu można je łączyć w takiej postaci, w jakiej są, zamiast je ze sobą sklejać. Udostępniliśmy też lepsze interfejsy API do testowania, które umożliwiają korzystanie z tych zmian (Ica6bf, b/184825850).
- Środowisko wykonawcze
Modifier.focusModifier()zostało wycofane i zastąpione środowiskiemModifier.focusTarget()(I6c860) - Wyliczenie KeyboardType zostało zastąpione klasą wbudowaną. (I73045, b/187055290)
- Zastąpiono wyliczenie
FocusStateinterfejsemFocusState(Iccc1a, b/187055290). - Wyliczenie ImeAction zostało zastąpione klasą wbudowaną. (I18be5, b/187055290)
- funkcje
AnnotatedString.withAnnotationsą teraz częścią interfejsu ExperimentalTextApi zamiast ExperimentalComposeApi. (I0cd0a)- Konstruktor TextUnit z TextUnitType jest teraz ExperimentalTextApi zamiast ExperimentalComposeApi.
- Wartość PaddingValues to teraz
@Stable, a nie@Immutable(I88c50)
Poprawki błędów
- Naprawiono awarie spowodowane długim naciśnięciem pustego obszaru w niepustym tekście. (I33ab5, b/187437299)
- Wyświetlanie paska narzędzi po zaznaczeniu wszystkich elementów (I495d9, b/185919613)
- Poprawka dotycząca przycinania elementów podrzędnych w kontenerach z możliwością przewijania wzdłuż osi poprzecznej. Problem można było łatwo odtworzyć, jeśli w komponencie LazyRow znajdowały się elementy Card. Teraz cień nie będzie już przycinany. (Icb635, b/186318448)
- Rozwiązaliśmy problem polegający na tym, że efekt fali lub inne wskazanie czasami zawieszały się po długim kliknięciu podczas korzystania z funkcji Modifier.combinedClickable (I2298c, b/186223077).
- Teraz
detectDragGesures,detectVerticalGesturesidetectHorizontalGesturesbędą automatycznie wykorzystywać zmianę pozycji, więc nie trzeba wywoływać funkcji change.consumePositionChange w wywołaniach zwrotnych onDrag (I42fc4, b/185096350, b/187320697). Modifier.onGloballyPositioned()zmieniono tak, aby raportować współrzędne tego modyfikatora w łańcuchu modyfikatorów, a nie współrzędne układu po zastosowaniu wszystkich modyfikatorów. Oznacza to, że kolejność modyfikatorów wpływa teraz na raportowane współrzędne. (Ieb67d, b/177926591)
Wersja 1.0.0-beta07
18 maja 2021 r.
Publikacja androidx.compose.foundation:foundation:1.0.0-beta07 i androidx.compose.foundation:foundation-layout:1.0.0-beta07 Wersja 1.0.0-beta07 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wprowadzono logikę wstępnego pobierania kolejnego widocznego elementu w przypadku komponentów LazyColumn i LazyRow (I8a4bc, b/184940225).
- Dodano uchwyt wyboru klipu (Iff80d, b/183408447)
Poprawki błędów
- Kompozycja LazyColumn/Row będzie teraz utrzymywać aktywność (nie będzie usuwać) maksymalnie 2 wcześniej widocznych elementów, nawet jeśli zostały już przewinięte. Dzięki temu komponent może ponownie wykorzystywać aktywne podkompozycje, gdy będziemy musieli utworzyć nowy element, co poprawia wydajność przewijania. (Ie5555)
- Usuń paintBackground. (I38660)
- Rysowanie tła zaznaczenia za pomocą DrawScope. (I73c61, b/186674472)
- Naprawiliśmy regresję w wersji beta06, która wpływała na wiersze i kolumny korzystające z układów spacedBy do rozmieszczania ważonych elementów podrzędnych. (Ifaf8c, b/187326588)
Wersja 1.0.0-beta06
5 maja 2021 roku
Publikacja androidx.compose.foundation:foundation:1.0.0-beta06 i androidx.compose.foundation:foundation-layout:1.0.0-beta06 Wersja 1.0.0-beta06 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Rozwiązywanie konfliktów z gestem nawigacji (I1145e)
- Dodano interfejsy API ułatwień dostępu CollectionInfo i CollectionItemInfo, które umożliwiają oznaczanie kolekcji i jej elementów dla usług ułatwień dostępu (Id54ef, b/180479017).
- Dodano
SemanticsActions.ScrollToIndexdo przewijania listy z elementami indeksowanymi do elementu o określonym indeksie orazSemanticsProperties.IndexForKeydo uzyskiwania indeksu elementu na liście z elementami kluczowymi. Obie te czynności są wykonywane przez element LazyList.- Dodano funkcję
SemanticsNodeInteraction.performScrollToIndex, która przewija listę do podanego indeksu, oraz funkcjęSemanticsNodeInteraction.performScrollToKey, która przewija listę do elementu o podanym kluczu. (I4fe63, b/178483889, b/161584524)
- Dodano funkcję
- Obsługa zapisywania AnnotatedString w TextFieldValue.Saver. Dodano funkcje narzędziowe addTtsAnnotation i withAnnotation do klasy AnnotatedString.Builder (I8cbdc, b/178446304)
- Do parametru
PaddingValues(horizontal, vertical)dodano domyślne wartości parametru0.dp(I05571, b/181336792)
Poprawki błędów
- Elementy podrzędne w wierszu i kolumnie z wartością
weight(fill = false)nie powodują już wypełniania przez element nadrzędny całej dostępnej przestrzeni osi głównej. (Ied94d, b/186012444, b/184355105)
Wersja 1.0.0-beta05
21 kwietnia 2021 r.
Publikacja androidx.compose.foundation:foundation:1.0.0-beta05 i androidx.compose.foundation:foundation-layout:1.0.0-beta05 Wersja 1.0.0-beta05 zawiera te zatwierdzenia.
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 związane z ułatwieniami dostępu w przypadku elementów
ACTION_SCROLL_FORWARD,ACTION_SCROLL_BACKWARD,accessibilityActionScrollLeft,accessibilityActionScrollUp,accessibilityActionScrollRightiaccessibilityActionScrollDown. Zamiast przewijać do końca przewijanego elementu, będzie teraz przewijać o jeden ekran w danym kierunku. (Ieccb0) - Pliki AndroidManifest z ui-test-manifest i ui-tooling-data są teraz zgodne z Androidem 12 (I6f9de, b/184718994).
Wersja 1.0.0-beta04
7 kwietnia 2021 r.
Publikacja androidx.compose.foundation:foundation:1.0.0-beta04 i androidx.compose.foundation:foundation-layout:1.0.0-beta04 Wersja 1.0.0-beta04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zmień nazwy funkcji hideSoftwareKeyboard i showSoftwareKeyboard w klasie SoftwareKeyboardController na
hide()ishow().- Udostępnia pełny interfejs CompositionLocal dla LocalSoftwareKeyboardController, co umożliwia jego ustawienie (szczególnie przydatne w testach) (I579a6).
- Wprowadzamy
TextOverflow.Visible. (Ic8f89) - Usunęliśmy publiczne instancje
RowScope,ColumnScope,BoxScopeiBoxWithConstraintsScope. (I4e83e, b/181869067)
Poprawki błędów
- Rozwiązaliśmy problem z nieprawidłowym pozycjonowaniem elementów
LazyColumn/LazyRowznajdujących się na krawędziach po szybkim przesunięciu (Ie4d13, b/183877420). Przed tą zmianą lokalne funkcje kompozycyjne można było pominąć na podstawie ich parametrów. Po tej zmianie żadne lokalne funkcje z możliwością komponowania nie będą pomijane. Ta zmiana została wprowadzona, ponieważ funkcje lokalne zwykle przechwytują parametry z funkcji nadrzędnej, a ich pomijanie jest częstym źródłem błędów.
Podsumowując, rozważmy przykład:
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }Przed tą zmianą funkcja
ShowCountzawsze była pomijana, nawet po zaktualizowaniu parametrucount. Ta informacja jest nieaktualna. (I5648a)
Wersja 1.0.0-beta03
24 marca 2021 r.
Publikacja androidx.compose.foundation:foundation:1.0.0-beta03 i androidx.compose.foundation:foundation-layout:1.0.0-beta03 Wersja 1.0.0-beta03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Interfejs
DefaultMonotonicFrameClockzostał wycofany. Wywołanie funkcjiwithFrameNanoslubRecomposer.runRecomposeAndApplyChangesbezMonotonicFrameClockbędzie teraz zgłaszać błądIllegalStateException. (I4eb0d)
Poprawki błędów
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.
Publikacja androidx.compose.foundation:foundation:1.0.0-beta02 i androidx.compose.foundation:foundation-layout:1.0.0-beta02 Wersja 1.0.0-beta02 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano kilka drobnych optymalizacji w logice pomiaru elementu LazyColumn (Ic6889).
- Dodano nowy interfejs API
LocalSoftwareKeyboardControllercomposition local API, który zastępuje poprzedni interfejs SoftwareKeyboardController w polu TextField. (I5951e, b/168778053) - Dodano nowy interfejs API
LocalSoftwareKeyboardControllercomposition local API, który zastępuje poprzedni interfejs SoftwareKeyboardController w polu TextField. (I84472, b/168778053)
Poprawki błędów
- Wymuszanie ograniczeń dotyczących publicznego korzystania z eksperymentalnych interfejsów API (I6aa29, b/174531520)
Wersja 1.0.0-beta01
24 lutego 2021 r.
Publikacja androidx.compose.foundation:foundation:1.0.0-beta01 i androidx.compose.foundation:foundation-layout:1.0.0-beta01 Wersja 1.0.0-beta01 zawiera te zatwierdzenia.
To pierwsza wersja Compose 1.0.0 w wersji beta.
Zmiany w interfejsie API
- Dodano wywołanie zwrotne onStart do
detectDragGestures(I67269, b/179995594) - Modyfikatory rozmiaru do wartości wewnętrznych nie są już eksperymentalne. (I15744)
- Usunięto potwierdzenia dp (I798d2)
- Usunięto wywołanie zwrotne SoftwareKeyboardController ze wszystkich pól tekstowych, które wkrótce zostaną zastąpione nowym interfejsem API. (Iae869, b/168778053)
- Usługa MeasureBlocks została przekształcona w MeasurePolicy, która stała się zabawnym interfejsem. Interfejsy API układu zostały zaktualizowane i uproszczone, aby korzystać z funkcji MeasurePolicy. (Icab48, b/167662468, b/156751158)
InteractionStatezostało zastąpione przez[Mutable]InteractionSource- Interfejsy odpowiadają za wysyłanie i zbieranie zdarzeń interakcji.
- Zamiast przekazywać
interactionState = remember { InteractionState() }do komponentów takich jakButtoniModifier.clickable(), używajinteractionSource = remember { MutableInteractionSource() }. - Zamiast:
Interaction.Pressed in interactionStateużyj funkcji rozszerzających w obiekcie InteractionSource, np. InteractionSource.collectIsPressedAsState(). - W przypadku złożonych przypadków użycia możesz użyć InteractionSource.interactions, aby obserwować strumień interakcji. Więcej informacji znajdziesz w dokumentacji i przykładach dotyczących InteractionSource.
- (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
- Usunięto przestarzałe metody LayoutCoordinates. Zamiast właściwości positionInParent i boundsInParent używaj funkcji (I580ed, b/169874631, b/175142755)
- Utworzono nową klasę TextInputSession dla sesji wprowadzania danych z komponentów tekstowych niskiego poziomu, takich jak CoreTextField. (I8817f, b/177662148)
- Interfejs Placeable udostępnia teraz właściwość measuredSize, która reprezentuje rozmiar, do którego został faktycznie zmierzony układ podrzędny. Ten rozmiar może nie spełniać ograniczeń pomiarowych. (Ib2729, b/172560206, b/172338608)
- Dodanie modyfikatora selectionGroup, który umożliwia oznaczanie kolekcji kart lub przycisków opcji na potrzeby ułatwień dostępu (Ie5c29)
Dodaj LazyListState.animateScrollToItem
Ta metoda umożliwia płynne przewijanie do określonego elementu na liście. (I4bfd7)
Funkcja ScrollableState.smoothScrollBy() została zmieniona na animateScrollBy(). Funkcja LazyListState.snapToItemIndex() została zmieniona na scrollToItem(). Funkcja ScrollState.smoothScrollTo() została zmieniona na animateScrollTo() (I35ded).
Funkcja Modifier.zoomable została zastąpiona funkcją Modifier.transformable. Dodano funkcje smoothPanBy i smoothRotationBy. (Ifc32b, b/175294473)
defaultFactoryw przypadkucompositionLocalOfistaticCompositionLocalOfjest teraz wymagany zamiast opcjonalnego.Ta zmiana usuwa potencjalny błąd typu w przypadku typów, które nie mogą mieć wartości null, a dla których nie podano domyślnej funkcji fabrycznej. Wcześniej w przypadku typu, który nie dopuszcza wartości null, zwracana była wartość null.
W przypadku typów dopuszczających wartość null rozważ podanie wartości
{ null }jako domyślnej funkcji fabrycznej.Nie zalecamy używania ustawień regionalnych z typami, które nie dopuszczają wartości null, chyba że można podać rozsądną wartość domyślną. Jeśli nie ma sensownej wartości domyślnej, funkcja lambda
defaultFactorypowinna zgłosić wyjątek. Jednak zgłoszenie wyjątku oznacza, że konsumenci lokalnego będą mieli niejawną zależność od jego dostarczenia, która nie jest wymuszana przez system typów. (Ifbd2a)Zmieniono
Indication#createIndication()naIndication#rememberUpdatedIndication(InteractionState)i usunięto parametrInteractionStatez funkcji IndicationInstance#drawIndication(). Klasa IndicationInstance powinna odpowiadać tylko za rysowanie efektów wizualnych, a nie za uruchamianie animacji ani zapisywanie stanu w odpowiedzi na zmiany stanu interakcji. Animacje i zapisy stanu powinny następować w ciągurememberUpdatedIndication(). Parametrindicationw plikuModifier.indicationzostał też zmieniony na wymagany. (Ic1764, b/152525426)Działania związane z tekstem automatycznie sprawdzają teraz fokus (I13777, b/179648629)
Usunięto
runBlockingWithManualClock(I15cdc, b/179664814)Pozycja przewijania w funkcjach Modifier.verticalScroll()/horizontalScroll() jest teraz reprezentowana przez liczby całkowite (I81298).
Pakiety metod smoothScrollBy i scrollBy zmieniono na
androidx.compose.foundation.gestures.*(I3f7c1, b/175294473)Klasa FlingConfig została zmieniona na FlingBehavior i umożliwia teraz dostosowywanie animacji zawieszenia zamiast wstępnie zdefiniowanych zanikań. (I02b86, b/175294473)
Zmieniono nazwy modyfikatorów rozmiaru. Modyfikatory Modifier.width/height/size zostały zmienione na requiredWidth/requiredHeight/requiredSize. Zmienne Modifier.preferredWidth/preferredHeight/preferredSize zostały zmienione na width/height/size. (I5b414)
Zmieniliśmy nazwę defaultMinSizeConstraints na defaultMinSize. (I4eaae)
Usunięto Modifier.tapGestureFilter. Użyj w zamian zasady
Modifier.pointerInput { detectTapGestures(...) }. (I266ed, b/175294473)częściowe wykorzystanie zostało usunięte z systemu wprowadzania za pomocą wskaźnika. Zalecanym sposobem koordynowania częściowego zużycia jest Modifier.nestedScroll. (Ie9c9b)
Orientacja została przeniesiona do pakietu podstawowego. VelocirtTracker został przeniesiony z ui.gesture do ui.input.pointer. (Iff4a8, b/175294473)
Klasy AnimationClockObservable i ich podklasy zostały usunięte. Usunięto AnimatedFloat. (Icde52, b/177457083)
Funkcje drawerState.open() i drawerState.close() są teraz funkcjami zawieszającymi. Aby je wywołać, użyj funkcji rememberCoroutineScope() do uzyskania zakresu kompozycji (I16f60, b/175294473).
Element Providers został zmieniony na CompositionLocalProvider
- Konstruktor Composition nie akceptuje już parametru key i został wycofany.
- currentCompositeKeyHash został przekształcony w funkcję najwyższego poziomu typu „composable” zamiast w funkcję najwyższego poziomu typu „composable”.
- Klasy CompositionData i CompositionGroup zostały przeniesione do przestrzeni nazw androidx.compose.runtime.tooling.
- ComposableLambda jest teraz interfejsem, a nie klasą konkretną, i nie ma już parametrów typu.
- ComposableLambdaN stał się interfejsem zamiast klasy konkretnej i nie ma już parametrów typu.
- Funkcja snapshotFlow została przeniesiona do przestrzeni nazw androidx.compose.runtime
- metoda scalania SnapshotMutationPolicy nie jest już eksperymentalna;
- Usunięto funkcję
@TestOnlynajwyższego poziomu clearRoots. 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.
- Usunęliśmy metody isJoinedKey, joinedKeyLeft i joinedKeyRight. Nie są już potrzebne.
- Różne interfejsy API najwyższego poziomu zostały przeniesione i zreorganizowane w różnych plikach. Ze względu na semantykę klasy plików w języku Kotlin spowoduje to 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)
Zmodyfikowano element Modifier.scrollable. Teraz używa interfejsu Scrollable zamiast klasy ScrollableController (I4f5a5, b/174485541, b/175294473).
Modifier.draggable akceptuje teraz DraggableState zamiast prostej lambdy. Stan możesz utworzyć za pomocą
rememberDraggableState { delta -> }, aby uzyskać takie samo działanie jak wcześniej (Ica70f, b/175294473).Dodano modyfikatory requiredWidth(IntrinsicSize) i requiredHeight(IntrinsicSize) do określania wymaganych rozmiarów na podstawie rozmiarów wewnętrznych. (I0a6b4)
Wycofany element
emptyContent()został usunięty. Użyj w zamian zasady{}. (Idb33f, b/179432510)Usunięto niektóre wcześniej wycofane interfejsy API (Ice5da, b/178633932)
Poprawki błędów
- Dodano nowy lokalny interfejs API LocalSoftwareKeyboardController do zastąpienia poprzedniego interfejsu SoftwareKeyboardController w polu TextField. (I658b6, b/168778053)
Wersja 1.0.0-alpha12
10 lutego 2021 r.
Publikacja androidx.compose.foundation:foundation:1.0.0-alpha12 i androidx.compose.foundation:foundation-layout:1.0.0-alpha12 Wersja 1.0.0-alpha12 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Funkcja Modifier.pointerInput wymaga teraz kluczy pamięci, aby wskazywać, kiedy współprogram wykrywania danych wejściowych wskaźnika powinien zostać ponownie uruchomiony w przypadku nowych zależności. (I849cd)
- Aktualizacja testowania: funkcja hasText() będzie sprawdzać zarówno tekst wprowadzony, jak i tekst etykiety, podpowiedzi lub symbolu zastępczego w polu tekstowym (Iab803)
- Dodano PaddingValues.Absolute, którego można używać w interfejsach API akceptujących PaddingValues. (Ia5f30)
- Metoda onImeActionPerformed jest wycofana. Zamiast niej używaj KeyboardActions (If0bbd, b/179071523)
- Aby lepiej dopasować konwencje nazewnictwa do ImageBitmap i ImageVector, zmieniliśmy nazwę ImagePainter na BitmapPainter, aby była podobna do VectorPainter. (Iba381, b/174565889)
- Ulepszone interfejsy API testowania podciągów z podciągiem jako argumentem (Icbe78)
- Wprowadzono element
InfiniteAnimationPolicykontekstu współprogramu , który będzie stosowany w animacjach nieskończonych. Domyślnie nie jest instalowana żadna zasada, z wyjątkiem testów przeprowadzanych w ramachComposeTestRule. (I50ec4, b/151940543) - Funkcje Animatable.snapTo i Animatable.stop są teraz funkcjami zawieszania (If4288).
- Metoda ComponentActivity.setContent została przeniesiona do pakietu androidx.activity.compose.setContent w module androidx.activity:activity-compose. (Icf416)
- Metody destrukcji i copy() zostały usunięte z kilku klas, w których były rzadko używane. (I26702, b/178659281)
Dodaliśmy obsługę kluczy niestandardowych w przypadku elementów LazyColumn i LazyRow. Dzięki temu możemy lepiej zarządzać ponownym zamawianiem produktów. Stan zapisany w blokach remember {} będzie przenoszony razem z elementem, gdy zmienisz kolejność elementów lub usuniesz element ze środka.
LazyColumn { items(users, key = { user -> user.id }) { ... } }Zmieniono funkcję Indication#createInstance na @Composable i zmieniono LocalIndication tak, aby zawierała Indication, a nie () -> Indication. (I5eeea, b/157150564)
Constraints.enforcezastąpiono tekstemConstraints.constrain. (I8b8ea)Metoda loadFontResource została wycofana. Zamiast nich używaj fontResource. imageResource, loadImageResource, vectorResource i loadVectorResource zostały wycofane. Zamiast tego użyj painterResource. (I6b809)
Ze względu na wydajność semantyka ScrollAxisRange przyjmuje teraz lambdy zwracające wartości zmiennoprzecinkowe zamiast bezpośrednich wartości zmiennoprzecinkowych. (If4a35, b/178657186)
Dodano semantykę EditableText, aby oznaczyć edytowalny tekst wejściowy pola tekstowego na potrzeby ułatwień dostępu, oraz odpowiednie metody testowania, aby sprawdzić semantykę (I8e07a).
Funkcja Modifier.clickable nie obsługuje już podwójnego i długiego kliknięcia. Aby to osiągnąć, użyj Modifier.combinedClickable. (Iafad1)
Funkcja toIntPx() została zmieniona na roundToPx(). (I9b7e4, b/173502290)
Zmieniliśmy nazwę IntBounds na IntRect i ulepszyliśmy interfejs API. (I1f6ff)
Funkcja Modifier.dragGestureFilter została wycofana. Użyj w zamian zasady
Modifier.pointerInput { detectDragGestures (...)}. Możesz też użyć Modifier.draggable do przeciągania w jednej osi (I0ba93, b/175294473).Zmieniono nazwy elementów Ambients, aby pasowały do zmiany nazwy Ambient -> CompositionLocal. Obiekty AmbientFoo nazywają się teraz CompositionLocals, a obiekty LocalFoo – LocalFoo. (I2d55d)
Zaznaczenie zostało przeniesione do fundamentu. (I7892b)
Podobnie jak wcześniej usunęliśmy funkcję
state { 0 }i teraz promujemy używanie funkcjiremember { mutableStateOf(0) }, usuniemy funkcjęsavedInstanceState { 0 }. Zamiast tego używajrememberSaveable { mutableStateOf(0) }, które automatycznie zapisuje i przywraca stan, jeśli typ użyty w MutableState można zapisać w obiekcie Bundle. Jeśli wcześniej przekazywano niestandardowy obiekt zapisujący, teraz trzeba użyć nowego przeciążenia funkcji rememberSaveable, które ma parametrstateSaver. Użycie będzie wyglądać tak:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }(Ib4c26, b/177338004)Dodano semantykę haseł na potrzeby ułatwień dostępu (I231ce)
Dodano ProgressBarRangeInfo.Indeterminate, aby oznaczać nieokreślone paski postępu na potrzeby ułatwień dostępu (I6fe05)
Czas odtwarzania animacji jest teraz ujednolicony do nanosekund (If776a)
Adnotacja @ComposableContract została wycofana na rzecz 3 bardziej szczegółowych adnotacji.
@ComposableContract(restartable = false)jest teraz@NonRestartableComposable@ComposableContract(readonly = true)jest teraz@ReadOnlyComposable@ComposableContract(preventCapture = true)jest teraz@DisallowComposableCalls@ComposableContract(tracked = true)został usunięty. (I60a9d)Narzędzia
emptyContent()i(@Composable () -> Unit).orEmpty()zostały wycofane, ponieważ nie mają już pozytywnego wpływu na skuteczność ani wartość (I0484d).Recomposery można teraz zamknąć. Zamknięte kompozytory będą kontynuować kompozycję, dopóki nie zostaną ukończone podrzędne korutyny kompozycji. Funkcja Recomposer.shutDown została zmieniona na cancel, aby odróżnić ją od funkcji close. (Ib6d76)
Interfejsy API związane z LazyVerticalGrid są oznaczone jako eksperymentalne (Ia53e3, b/178519862).
Funkcja rememberSavedInstanceState() została zmieniona na rememberSaveable() i przeniesiona do pakietu androidx.compose.runtime.saveable. (I1366e, b/177338004)
Klasa RestorableStateHolder została zmieniona na SaveableStateHolder i przeniesiona do pakietu androidx.compose.runtime.saveable. Metoda wewnętrzna RestorableStateProvider została zmieniona na SaveableStateProvider. Typ ogólny został usunięty, więc jako klucz możesz przekazać dowolny typ. Adnotacja eksperymentalna nie jest już potrzebna. (I0902e, b/174598702)
Funkcje Saver, listSaver(), mapSaver() i autoSaver zostały przeniesione z pakietu androidx.compose.runtime.savedinstancestate do pakietu androidx.compose.runtime.saveable (I77fe6).
Artefakt androidx:compose:runtime:runtime-saved-instance-state został zmieniony na androidx:compose:runtime:runtime-saveable (I6dcac)
Wiele wycofanych interfejsów API z pakietu ui zostało usuniętych. (I2f2dc)
Artefakt compose:runtime-dispatch został wycofany. Klasa MonotonicFrameClock znajduje się teraz w pakiecie compose:runtime, a klasa AndroidUiDispatcher – w pakiecie compose:ui. (Ib5c36)
Parametry w klasach RounderCornerShape, CutCornerShape i CornerBasedShape zostały zmienione z left/right na start/end, aby umożliwić automatyczne odzwierciedlanie kształtu w kierunku od prawej do lewej. Kształty AbsoluteRounderCornerShape i AbsoluteCutCornerShape zostały wprowadzone w przypadkach, gdy automatyczne odbicie lustrzane nie jest pożądane. (I61040, b/152756983)
Właściwość canDrag została usunięta z modyfikatora scrollable. (Id66e7, b/175294473)
Interfejs API, na którym działa wtyczka kompilatora Compose, został przekształcony tak, aby używać interfejsu zamiast konkretnej klasy. Interfejs nie używa już też parametru typu.
Jest to zmiana wewnętrzna, która nie powinna wpływać na zgodność kodu źródłowego, ale jest zmianą powodującą niezgodność binarną. (I3b922, b/169406779)
Usunięto Modifier.scaleGestureFilter. Zamiast tego użyj Modifier.zoomable. Możesz też użyć
Modifier.pointerInput { detectMultitouchGestures { ... }}(Id5da1, b/175294473).Klasa AnimatedValue/Float została wycofana. Zamiast niej użyj interfejsu Animatable. (I71345, b/177457083)
- Usunięto CoreText i CoreTextField z publicznego interfejsu API
- Usunięto wycofane przeciążenie SelectionContainer (I99c19)
Usunięcie wycofanych funkcji przewijania bez zawieszania Kontynuując zmiany z ostatniej wersji, całkowicie usunęliśmy funkcje przewijania bez zawieszania. Zmień je na funkcje zawieszania o tych samych nazwach. Zakres współprogramu można uzyskać za pomocą funkcji rememberCoroutineScope(). (I3d39c, b/178169563)
androidx.compose.foundation.layout.ConstraintLayout zostało wycofane na rzecz androidx.constraintlayout.compose.ConstraintLayout. Musisz dodać zależność od
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01. (I87adc)Funkcje tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter i pressIndicaitonGestureFilter zostały wycofane. Zamiast tego użyj funkcji Modifier.clickable lub Modifier.pointerInput z funkcją detectTapGestures. (I6baf9, b/175294473)
Kontakt
Recomposer.current()został usunięty. [Abstract]ComposeView now default to lazily created, window-scoped Recomposers driven by the ViewTreeLifecycleOwner for the window. Rekompozycja i tiki animacji oparte na withFrameNanos są wstrzymywane, gdy cykl życia hosta jest zatrzymany. (I38e11)Recomposer.runningRecomposers udostępnia teraz globalny StateFlow tylko do odczytu RecomposerInfo, który umożliwia obserwowanie stanu bieżącej kompozycji w procesie. Zalecamy używanie tego interfejsu API zamiast interfejsu Recomposer.current(), który został wycofany. (If8ebe)
Wersja 1.0.0-alpha11
28 stycznia 2021 roku
Publikacja androidx.compose.foundation:foundation:1.0.0-alpha11 i androidx.compose.foundation:foundation-layout:1.0.0-alpha11 Wersja 1.0.0-alpha11 zawiera te zatwierdzenia.
Zmiany w interfejsie API
Wycofanie funkcji scrollBy bez zawieszania, usunięcie funkcji scrollTo bez zawieszania
Obecnie zalecamy używanie funkcji zawieszających do kontrolowania przewijania i oczekiwania na jego zakończenie. W ramach tej zmiany wycofujemy lub usuwamy wersje tych funkcji, które nie powodują zawieszenia. (Ie9ced)
Wycofanie funkcji smoothScrollBy, która nie jest funkcją zawieszającą Zalecamy teraz używanie funkcji zawieszających do sterowania przewijaniem i oczekiwania na zakończenie przewijania. W ramach tej zmiany wycofujemy wersje tych funkcji, które nie są zawieszane. (I12880)
Do obrazu i ikony dodano parametr opisu treści. Służy do przekazywania opisu usługom ułatwień dostępu (I2ac4c).
Komponent BasicTextField otrzymał nowy parametr o nazwie „decorationBox”. Umożliwia dodawanie do pola tekstowego elementów dekoracyjnych, takich jak ikony, symbole zastępcze czy etykiety, oraz zwiększanie obszaru docelowego kliknięcia. (I16996)
Usunięto parametr canDrag z funkcji Modifier.draggable (Ic4bec, b/175294473)
Usunięto funkcję AnimatedFloat.fling, która akceptuje FlingConfig. Zamiast niej użyj metody suspend Animatable.animateDecay. (I4659b, b/177457083)
Usunięto
data classz tych zajęć:- InlineTextContent
- LocaleList
- (I605c7)
klikane, przełączane i wybieralne elementy można teraz tworzyć poza kompozycją (I0a130, b/172938345, b/175294473);
Komponenty ScrollableColumn i ScrollableRow zostały wycofane. Używanie komponentu ScrollableColumn jest mniej wydajne niż LazyColumn w przypadku dużych treści przewijanych, ponieważ w przypadku komponentu LazyColumn możemy tylko komponować, mierzyć i rysować widoczne elementy. Aby zapobiec nieefektywnemu korzystaniu z tych funkcji, postanowiliśmy wycofać ScrollableColumn i ScrollableRow oraz promować zamiast nich LazyColumn i LazyRow. Użytkownicy mogą nadal decydować, że nie potrzebują leniwego działania, i używać modyfikatorów bezpośrednio, np. Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083).
Nowa metoda fabryczna
items(count: Int)dla zakresu LazyColumn/LazyRow/LazyVerticalGrid. Funkcjeitems(items: List)iitemsIndexed(items: List)są teraz funkcjami rozszerzającymi, więc musisz je ręcznie importować, gdy ich używasz. Nowe przeciążenia rozszerzeń dla tablic: items(items: Array) i itemsIndexed(Array) (I803fc, b/175562574)Przestarzały element AbsoluteArrangement został usunięty. (Iffa96, b/177641870)
Do komponentu Box dodano parametr propagateMinConstraints, który określa, czy przychodzące minimalne ograniczenia mają być przekazywane do treści komponentu Box. Wartość domyślna to fałsz. (I0125b, b/152613457)
Poprawki błędów
- Funkcje onCommit, onDispose i onActive zostały wycofane na rzecz interfejsów SideEffect i DisposableEffect API (If760e).
- Funkcja WithConstraints została przekształcona w BoxWithConstraints i przeniesiona do pakietu foundation.layout. (I9420b, b/173387208)
Zmiany w funkcjach fabrycznych dla Font/FontFamily/Typeface
- Dodano funkcje fabryczne rozpoczynające się wielką literą
- Wycofanie poprzednich funkcji fabrycznych z małymi literami na początku
- Nowe funkcje fabryczne zwracają FontFamily zamiast podklas
- Ukryto konstruktory podklas, aby można je było tworzyć tylko za pomocą funkcji fabrycznych.
- Zmiana nazwy Font.asFontFamily na Font.toFontFamily
- (I42aa7)
Wprowadzono
ComposeContentTestRule, która rozszerzaComposeTestRulei definiujesetContent, która została usunięta zComposeTestRule. Dodano metodę fabrycznącreateEmptyComposeRule(), która zwraca obiektComposeTestRulei nie uruchamia aktywności. Użyj tej opcji, gdy chcesz uruchomić aktywność podczas testu, np.za pomocąActivityScenario.launch(I9d782, b/174472899).Funkcja animateAsState została zmieniona na animateFooAsState, gdzie Foo to typ animowanej zmiennej, np. Float, Dp, Offset itp. (Ie7e25)
Gęstość jest teraz zakresem odbiornika w przypadku interfejsów Arrangement. (I18aad)
TextFieldValue akceptuje AnnotatedString. Jest to jednak zmiana tylko w interfejsie API, a edycja tekstu w wielu stylach nie została jeszcze wdrożona.
- Usunięto parametr
initialz parametrów konstruktora EditingBuffer. (I326d5)
- Usunięto parametr
Funkcje invalidate i compositionReference() zostały wycofane na rzecz funkcji currentRecomposeScope i rememberCompositionReference. (I583a8)
Klasa AnnotatedString została zmieniona tak, aby rozszerzać klasę kotlin.CharSequence. Dlatego length i subSequence są teraz funkcjami instancji, a funkcje rozszerzające zostały usunięte. (Iaf429)
Wartości Duration i Uptime zostaną zastąpione wartościami Long milliseconds, a ten krok usuwa zależność danych wejściowych wskaźnika od tych klas. (Ia33b2, b/175142755, b/177420019)
RememberObserver zastępuje CompositionLifecycleObserver, który jest obecnie wycofany.
RememberObserverzastępujeCompositionLifecycleObserver, ale ma zmodyfikowaną semantykę i zmienione nazwy metod. Przejście na nowy interfejs API można przeprowadzić mechanicznie w przypadku obiektów, które są zapamiętywane tylko raz. Jest to zalecana praktyka. Jeśli jednak odwołanie zostało zapamiętane w kompozycji więcej niż raz, funkcjaonRememberedjest wywoływana dla każdego odwołania, a funkcjaonEnterjest wywoływana tylko raz.onEnterbyło wywoływane wielokrotnie, jeśli obiekt był używany w kompozycjach podrzędnych, np.WithConstraintsiScaffold, co sprawiało, że pojedyncze wywołanieonEnterbyło niewiarygodne i zostało usunięte w przypadkuRememberObserver.RememberObserverdodajeonAbandoned, które jest wywoływane, jeśli instancjaRememberObserverjest zwracana z wywołania zwrotnego przekazanego doremember, ale nie została zapamiętana w stanie kompozycji, a więc nigdy nie zostanie wywołana funkcjaonRemembered. Może to nastąpić, jeśli wyjątek zakończy kompozycję przed jej ukończeniem lub kompozycja zostanie odrzucona, ponieważ stan, dla którego była tworzona, nie jest już aktualny lub nie jest już potrzebny. Jeśli instancjaRememberObserverpo pojedynczej rekomendacji referencyjnej powyżej śledzi zasób zewnętrzny, zarównoonForgotten, jak ionAbandonedwskazują, że zasób nie jest już potrzebny. Jeśli obiekt śledzi rozpoczęcie pracy lub zasoby przydzielone wonRemembered, można zignorowaćonAbandoned, ponieważ nie zostanie on wywołany, jeśli zostanie wywołanyonRemembered. (I02c36)Zmiana nazwy pola TransformedText.transformedText na TransformedText.text
- TransformedText nie jest już klasą danych (Ie672a)
Te klasy nie są już klasami danych:
- AnnotatedString
- ParagraphStyle
- SpanStyle
- TextStyle
- FontWeight
- TextDecoration
- TextGeometricTransform
- TextIndex
- TextLayoutResult
- TextLayoutInput (Iaff99)
Usunięto eksperymentalne metody monotonicFrameAnimationClockOf (Ib753f, b/170708374)
Wycofaliśmy metody globalnych współrzędnych i wprowadziliśmy nowe metody współrzędnych oparte na oknach. (Iee284)
Zamiast ImeAction.NoAction użyj ImeAction.None.
- Zamiast ImeAction.Unspecified (Ie1bcc) używaj ImeAction.Default.
Metoda FocusRequester.createRefs jest teraz oznaczona jako eksperymentalna, ponieważ może ulec zmianie. (I2d898, b/177000821)
Właściwość SemanticsPropertyReceiver.hidden została zmieniona na invisibleToUser i oznaczona adnotacją @ExperimentalComposeUiApi. Zmiana nazwy AccessibilityRangeInfo na ProgressBarRangeInfo. stateDescriptionRange na progressBarRangeInfo. Zmieniono nazwę AccessibilityScrollState na ScrollAxisRange. Zmieniono nazwę horizontalAccessibilityScrollState na horizontalScrollAxisRange. Zmieniono nazwę verticalAccessibilityScrollState na verticalScrollAxisRange. (Id3148)
Zmiana interfejsu VisualTransformation na interfejs funkcyjny (I3bba4)
Używanie TestCoroutineDispatcher w testach (I532b6)
Usunięto PointerInputData i zmodyfikowano PointerInputChange, aby zawierał wszystkie pola PointerInputData. Uczyniono klasy PointerInputEvent i PointerInputEventData wewnętrznymi, ponieważ nie są używane w żadnym publicznym interfejsie API. (Ifff97, b/175142755)
Zmiana nazwy TextInputService.onStateUpdated na updateState (Id4853)
Usuń displaySize, ponieważ należy go unikać. Zwykle lepiej jest używać co najmniej rozmiaru onRoot() lub rozmiaru okna. (I62db4)
Wersja 1.0.0-alpha10
13 stycznia 2021 r.
Publikacja androidx.compose.foundation:foundation:1.0.0-alpha10 i androidx.compose.foundation:foundation-layout:1.0.0-alpha10 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
- Zmiana nazwy OffsetMap na OffsetMapping
- Zmiana nazwy OffsetMapping.identityOffsetMap na OffsetMapping.Identity
- PasswordTransformation nie jest już klasą danych
- Przeniesiono OffsetMapping do osobnego pliku
- (I0bdf3)
- Zmiany w interfejsie EditOperations API
- Zmiana nazwy EditOperation na EditCommand
- Dodano sufiks Command do konkretnych implementacji EditOperation
- EditCommand nie są już klasami danych
- Zmiana nazwy funkcji EditOperation.process na applyTo
- Zmiana nazwy InputEventListener na InputEventCallback
- (I0a366)
- Zmodyfikowano prędkość, aby zawierała składowe i operacje matematyczne. (Ib0447)
- Zmieniono nazwę adnotacji @ExperimentalTesting na @ExperimentalTestApi, aby była zgodna z podobnymi adnotacjami eksperymentalnych interfejsów API (Ia4502, b/171464963).
- Dodano eksperymentalną metodę stickyHeader dla LazyColumn/LazyRow (I0a81d)
- Zmiana nazwy funkcji Color.useOrElse() na Color.takeOrElse() (Ifdcf5)
- Wycofano TestUiDispatcher. Zamiast niego używaj Dispatchers.Main (Ic171f, b/175385255)
- Dodaj przełącznik do pliku Strings.kt (I4a5b7, b/172366489)
- Przeniesiono klasę nativeClass do modułu ui i ustawiono ją jako wewnętrzną. Zaktualizowano użycie nativeClass w implementacjach equals, aby zamiast niego używać „is MyClass”. (I4f734)
- Elementy FlowRow i FlowColumn zostały wycofane. Zamiast niego użyj układu niestandardowego. (I09027)
- Metody Modifier.focus() i Modifier.focusRequester() zostały wycofane. Zamiast tego użyj funkcji Modifier.focusModifier() i Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
- Wprowadzono SelectionRegistrar.notifySelectableChange, aby powiadamiać SelectionManager o aktualizacjach Selectable. (I6ff30, b/173215242)
- Zmieniono
fun Dp.isFinite()naval Dp.isFinite(I50e00) - Właściwość Constraints#satisfiedBy została zmieniona na isSatisfiedBy. (I9cf5c)
- Dodano funkcje isSpecified, isUnspecified i useOrElse dla klas wbudowanych ze stałą Unspecified. (I93f7b, b/174310811)
Poprawki błędów
- Nowy interfejs API oparty na korutynach
Animatable, który zapewnia wzajemną wyłączność animacji. Nowy obiekt DecayAnimationSpec do obsługi wielowymiarowej animacji zanikania (I820f2, b/168014930) - Dodano obsługę wyłączonych i tylko do odczytu pól tekstowych (I35279, b/171040474, b/166478534)
animate()zastąpiono funkcjąanimateAsState(), która zwraca wartośćState<T>zamiastT. Umożliwia to lepszą wydajność, ponieważ zakres unieważnienia można zawęzić do miejsca, w którym odczytywana jest wartość State. (Ib179e)- Dodaj interfejs API roli Semantics i dodaj rolę jako parametr do klikalnego, wybieralnego i przełączalnego elementu SemanticsModifier. Zmiana funkcji Modifier.progressSemantics, aby można było jej używać również w przypadku suwaka. (I216cd)
- Do zdarzenia keyEvent można teraz uzyskać dostęp za pomocą keyEvent.nativeKeyEvent (I87c57, b/173086397).
Wersja 1.0.0-alpha09
16 grudnia 2020 roku
Publikacja androidx.compose.foundation:foundation:1.0.0-alpha09 i androidx.compose.foundation:foundation-layout:1.0.0-alpha09 Wersja 1.0.0-alpha09 zawiera te zatwierdzenia.
Zmiany w interfejsie API
Dodawanie interfejsu z możliwością przewijania
Dzięki temu ScrollState i LazyListState mogą być traktowane jako wspólny typ, co umożliwia wdrożenie niestandardowego przewijania w obu typach.
Przenosi to też smoothScrollBy do funkcji rozszerzenia w Scrollable, wykorzystując tę funkcję. (I2153b)
Dodano LazyVerticalGrid. (I17267, b/162213211)
Wycofanie funkcji LazyColumnFor, LazyRowFor, LazyColumnForIndexed i LazyRowForIndexed. Zamiast tego używaj elementów LazyColumn i LazyRow (I5b48c)
W przypadku interfejsów API zawieszających dane wejściowe wskaźnika zmieniono nazwy funkcji HandlePointerInputScope na AwaitPointerEventScope i handlePointerInput() na awaitPointerEventScope(). (Idf0a1, b/175142755)
Dodano LazyListState.layoutInfo, które udostępnia listę rozmiarów i przesunięć aktualnie widocznych elementów (If8678, b/170472532).
Usunięto adnotację ExperimentalPointerInput (Ia7a24)
Dodaliśmy obsługę stanu interakcji w przypadku pól tekstowych. (I61d91)
Dodaj parametr reverseLayout do LazyColumn/Row. Gdy
true, elementy będą komponowane od dołu do góry, aLazyListState.firstVisibleItemIndex == 0będzie oznaczać, że pierwszy element znajduje się na dole. (I552ae, b/166589935)Dodano parametr verticalArrangement dla elementu LazyColumn. Dodano parametr horizontalArrangement dla LazyRow. Umożliwia dodanie odstępu między elementami i określenie ich rozmieszczenia, gdy nie mamy ich wystarczająco dużo, aby wypełnić cały minimalny rozmiar. (Icf79a, b/170394300)
Funkcja detectMultitouchGestures używa teraz 1 wywołania zwrotnego z połączonymi parametrami centroid, pan, zoom i rotate. (Ie6e1c)
Przeniesiono ContentDrawScope do modułu ui-graphics, aby był razem z DrawScope. (Iee043, b/173832789)
Poprawki błędów
- Funkcje lambda w modyfikatorach przesunięcia zwracają teraz wartość IntOffset zamiast Float. (Ic9ee5, b/174137212, b/174146755)
Usunęliśmy z publicznego interfejsu API klasy SlotTable, SlotReader i SlotWriter. Wcześniej były one oznaczane jako InternalComposeAPI. Teraz są one wewnętrzne w module tworzenia.
Dodano CompositionData i CompositionGroup jako zamienniki interfejsu API ui-tooling, które służą do wyodrębniania informacji o kompozycji. Są one publiczne, ale nie są przeznaczone do użytku poza interfejsem ui-tooling API, ponieważ dostarczają surowych informacji, które interpretuje ten interfejs (I31a9c).
Zmodyfikowano klasę ShaderBrush, aby leniwie tworzyć instancję shadera, gdy dostępne są informacje o rozmiarze środowiska rysowania. Jest to przydatne do definiowania gradientów, które w momencie kompozycji zajmują pełne granice rysowania elementu kompozycyjnego, bez konieczności implementowania niestandardowych implementacji DrawModifier.
Wycofano interfejsy API konstruktora funkcji gradientu na rzecz metod fabrykujących w obiekcie Gradient. (I511fc, b/173066799)
Modifier.focusObserver został wycofany. Zamiast tego użyj Modifier.onFocusChanged lub Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
Interfejs Autofill API jest teraz interfejsem eksperymentalnym i wymaga zgody użytkownika (I0a1ec).
Dodawanie deklaracji destrukcyjnych do tworzenia instancji FocusRequester (I35d84, b/174817008)
accessibilityLabel zmieniło nazwę na contentDescription. accessibilityValue zmieniło nazwę na stateDescription. (I250f2)
Wprowadziliśmy kilka nowych funkcji w klasie SelectionRegistrar, a także zmieniliśmy nazwę funkcji onPositionChange na notifyPositionChange. (Ifbaf7)
AndroidOwner made internal (Ibcad0, b/170296980)
Nowa funkcja infiniteRepeatable do tworzenia elementu InfiniteRepeatableSpec (I668e5)
Interfejs
Applierzostał zmieniony, aby uprościć tworzenie drzew od dołu do góry, a nie od góry do dołu.Metoda
insert()została zmieniona nainsertTopDown().Dodaliśmy nową metodę:
insertBottomUp().Aplikator wstawia węzły do edytowanego drzewa za pomocą funkcji
insertTopDown()lubinsertBottomUp()w zależności od tego, która z nich jest skuteczniejsza.Niektóre drzewa, np.
LayoutNodeiView, znacznie łatwiej jest budować od dołu niż od góry. Przed wprowadzeniem tej zmiany do implementacji metody od dołu do góry wymagany był stos wstawek, który należało skopiować do każdego narzędzia, które potrzebowało konstrukcji od dołu do góry, aby zapewnić wydajność. Po tej zmianieApplierzastępujeinsertBottomUp(), aby budować drzewo od dołu do góry, ainsertTopDown()– aby budować drzewo od góry do dołu. (Icbdc2)Dodano interfejs API painterResource, który umożliwia nieprzezroczyste wczytywanie obiektów Painter z formatów zasobów rastrowych (np. PNG) lub obiektów VectorDrawable. Konsumenci nie muszą już z wyprzedzeniem określać typu komponentu. Mogą wywołać tę metodę, aby uzyskać obiekt Painter do użycia w komponentach kompozycyjnych Image lub modyfikatorach malowania. (I2c703, b/173818471)
Dodano funkcję fabryczną buildAnnotatedString, która służy do tworzenia obiektu AnnotatedString. Wycofana funkcja konstruktora annotatedString. (Idfe0b)
Wersja 1.0.0-alpha08
2 grudnia 2020 r.
Publikacja androidx.compose.foundation:foundation:1.0.0-alpha08 i androidx.compose.foundation:foundation-layout:1.0.0-alpha08 Wersja 1.0.0-alpha08 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Usunięto parametr
maxLinesz funkcjiCoreTextField. Jeśli chcesz ograniczyć wysokość pola tekstowego liczbą wierszy, użyj zamiast tego parametruBasicTextField. (Iec002) - Zmieniono metody
await*TouchSlop(), aby nie wykrywały wskaźnika w dół, i zmieniono ich nazwy na*OrCancellation. Usunęliśmy też parametrorientationLock. (Ie96e1) - Dodano sprawdzanie lint dla nazw i pozycji parametrów funkcji kompozycyjnej lambda, aby zapewnić spójność ze wskazówkami dotyczącymi Compose.
Zgodnie z kontrolą i wskazówkami dotyczącymi lintowania niektóre interfejsy API zostały przeniesione z użyciem nazwy
childrendla lambdy końcowej nacontent. (Iec48e) - Przeniesiono interfejsy API
foundation:foundation-textdofoundation:foundation. Struktura pakietu pozostała bez zmian (Id3eb2) - Nowy detektor gestów wielodotykowych, w tym funkcje pomocnicze do wykrywania obracania, powiększania i przesuwania. (Ic459d)
- Nowy detektor gestów przeciągania zawieszający interfejs API danych wejściowych wskaźnika, w tym blokowanie orientacji. (Icef25)
- Zmiana nazwy VectorAsset na ImageVector Przeniesienie i zmiana nazwy VectorAsset na Builder, aby była klasą wewnętrzną ImageVector zgodnie z wytycznymi rady API. Dodano alias typu VectorAssetBuilder, aby zapewnić zgodność z ImageVector.Builder. (Icfdc8)
- Zmieniliśmy nazwy ImageAsset i powiązanych metod na ImageBitmap. (Ia2d99)
- Przeniesiono właściwości semantyczne podstaw do interfejsu (I6f05c)
Dodaj interfejsy API przewijania oparte na korutynach:
Dodaje LazyListState.snapToItem i LazyListState.smoothScrollBy, a także interfejsy API niższego poziomu do sterowania przewijaniem. Te interfejsy API udostępniają interfejs zawieszania do sterowania przewijaniem, który czeka na zakończenie przewijania przed zwróceniem wartości. (Ie5642)
Dodano parametr singleLine do komponentów BasicTextField, TextField i OutlinedTextField. Ustaw wartość tego parametru na „true”, aby pole tekstowe było pojedynczą linią z możliwością przewijania w poziomie. (I57004, b/168187755)
Detektor gestów do kliknięcia, dwukrotnego kliknięcia, długiego naciśnięcia i wskazania naciśnięcia został dodany przy użyciu nowego wskaźnika zawieszania. Dodaliśmy też kilka narzędzi, które ułatwiają deweloperom pisanie własnych detektorów gestów. (I00807)
W bibliotece Foundation dodano właściwość Modifier.focusable. Użyj tego, aby dodać do komponentu możliwość uzyskania fokusu z prawidłową semantyką i dostępnością. (I41eb9, b/152525426, b/162865824)
Usunęliśmy wcześniej wycofane interfejsy API: usunęliśmy Border, zamiast niego używaj BorderStroke. Funkcja Modifier.drawBorder została usunięta. Zamiast niej używaj funkcji Modifier.border. Wycofaliśmy Modifier.gravity. Zamiast niego używaj Modifier.align. Usunięto stos, użyj pola (I32c2b, b/172470874)
Element AbsoluteArrangement został przemianowany na Arrangement.Absolute. (If26f2)
Poprawki błędów
- Przeniesiono interfejsy DrawModifier API z pakietu androidx.compose.ui do pakietu androidx.compose.ui.draw. Utworzono plik DrawModifierDeprecated.kt, który zawiera aliasy typów i metody pomocnicze ułatwiające migrację z przestarzałych interfejsów API na obecne. (Id6044, b/173834241)
- Zmieniono nazwę Modifier.drawLayer na Modifier.graphicsLayer. Zaktualizowano też powiązane klasy do GraphicsLayer zgodnie z opinią rady API. (I0bd29, b/173834241)
- Element
<T>został usunięty z deklaracji SubcomposeLayout. Możesz teraz używać tego atrybutu bez określania typu. (Ib60c8) - Pola uptime i position w klasie PointerInputData nie mogą mieć wartości null. (Id468a)
- Motyw MaterialTheme ustawia teraz prawidłowe kolory uchwytów zaznaczenia i tła zaznaczenia. Aplikacje inne niż Material mogą ręcznie używać AmbientTextSelectionColors, aby dostosować kolory używane do zaznaczania. (I1e6f4, b/139320372, b/139320907)
- Parametr wyrównania elementu Box został zmieniony na contentAlignment. (I2c957)
- Modyfikatory offsetPx zostały zmienione na offset. Zamiast parametru State przyjmują teraz 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 TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
- Zaktualizowany interfejs TextFieldValue API
- pole TextFieldValue.composition zostało ustawione jako tylko do odczytu.
- usunięto wyjątek zgłaszany w przypadku nieprawidłowego zakresu wyboru (I4a675, b/172239032);
- Wycofaliśmy Ambients z sufiksem
Ambienti zastąpiliśmy je nowymi właściwościami z prefiksem Ambient, zgodnie z innymi Ambients i wytycznymi interfejsu Compose API. (I33440) - Dodano kod Android Typeface. Czcionkę Androida możesz wczytać za pomocą funkcji
typeface, np.typeface(Typeface.DEFAULT). Zmieniono też nazwętypefaceFromFontFamily()natypeface()(I52ab7) - Dodano sprawdzanie kodu, aby upewnić się, że fabryki modyfikatorów używają wewnętrznie interfejsu
androidx.compose.ui.composed {}zamiast być oznaczane jako@Composable. (I3c4bc) - Dodano sprawdzanie kodu, aby upewnić się, że funkcje fabryczne modyfikatorów są zdefiniowane jako rozszerzenia modyfikatora, dzięki czemu można je płynnie łączyć w łańcuchy. (I07981)
- Argument semantyczny mergeAllDescendants został zmieniony na mergeDescendants. (Ib6250)
- Kontrola czasu w testach (TestAnimationClock i jego zastosowania) jest teraz eksperymentalna (I6ef86, b/171378521).
- Usuwanie starego modułu ui-test i jego stubów (I3a7cb)
- W przypadku innych jednostek TextUnit.Inherit zmieniono nazwę na TextUnit.Unspecified. (Ifce19)
- Interfejs wyrównania został zaktualizowany i jest już funkcjonalny. (I46a07, b/172311734)
foundation:foundation-textmodule został scalony zfoundation:foundation(Idac0f)- Wycofanie funkcji place(Offset) i placeRelative(Offset). Zamiast tego używaj przeciążeń z przesunięciami int (I4c5e7)
- Nazwa
idzostała zmieniona nalayoutIdw przypadkuLayoutIdParentData. NazwaMeasurable.idzostała zmieniona naMeasurable.layoutId. (Iadbcb, b/172449643)
Wersja 1.0.0-alpha07
11 listopada 2020 roku
androidx.compose.foundation:foundation:1.0.0-alpha07, androidx.compose.foundation:foundation-layout:1.0.0-alpha07 i androidx.compose.foundation:foundation-text:1.0.0-alpha07 są udostępnione. Wersja 1.0.0-alpha07 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Podobnie jak w przypadku
Modifier.fillMaxSize[Width|Height]obsługujemy teraz ułamki wModifier.fillParentMaxSize[Width|Height]w zakresieLazyColumn/Row(I797e2, b/166586426). - Usunięto interfejs
KeyboardOptions.toImeOptionsz publicznego interfejsu API. (Ic2e45) - Podstawowe style AmbientTextStyle, ProvideTextStyle i AmbientContentColor zostały wycofane. Zamiast tego używaj nowych wersji dostępnych w bibliotece Material. W przypadku aplikacji innych niż Material należy utworzyć własny system projektowania z motywami, które można wykorzystać w komponentach. (I74acc, b/172067770)
- foundation.Text został wycofany i zastąpiony przez material.Text. Podstawowy interfejs API tekstu, który nie korzysta z wartości z motywu, znajdziesz w artykule androidx.compose.foundation.BasicText. (If64cb)
- Dodano maxLines do pól tekstowych (Ib2a5b)
- Aktualizacja pól tekstowych, aby akceptowały KeyboardOptions (Ida7f3)
- Dodano KeyboardOptions do użycia w polach tekstowych (I9ca32)
- Dodaje BasicText jako interfejs API do obsługi tekstu, który nie narzuca konkretnego stylu, podobnie jak BasicTextField. (I28268)
- Usunięto adnotację ExperimentalLazyDsl. Elementy LazyColumn i LazyRow można teraz używać bez dodawania adnotacji @OptIn (Idab7a, b/166584730).
- Komponent BaseTextField został wycofany. Zamiast tego użyj BasicTextField. (I896eb)
- Dodaliśmy komponent BasicTextField jako zamiennik komponentów CoreTextField i BaseTextField (Id4cea).
- Usuń wycofane elementy LazyColumnItems/LazyRowItems (I1d8a8)
- Usunęliśmy wycofane funkcje kompozycyjne do określania rozmiaru na podstawie pomiarów wewnętrznych. (I18537, b/171811496)
- Zmieniliśmy nazwę parametru relativePaddingFrom na paddingFrom. Dodaliśmy modyfikator paddingFromBaseline, aby ułatwić określanie odległości od granic układu do linii bazowych tekstu. (I0440a, b/170633813)
- Do modyfikatora aspectRatio dodano parametr matchHeightConstraintsFirst, który umożliwia określenie modyfikatora, który ma być dopasowany do ograniczeń wysokości przed wypróbowaniem odpowiedników szerokości. (Ie7c43, b/155290593)
- Wycofany interfejs DpConstraints został usunięty. (I87884, b/171702471)
Poprawki błędów
- Wprowadziliśmy klasę wbudowaną ScaleFactor, aby reprezentować współczynniki skali dla osi poziomej i pionowej niezależnie od siebie, co umożliwia obsługę przypadków użycia skalowania nierównomiernego.
- Dodano metodę computeScaleFactor do ContentScale
- Dodano ContentScale.FillBounds, aby wykonać nierównomierne skalowanie i rozciągnąć granice src tak, aby w pełni zajmowały miejsce docelowe.
- Dodano metody operatora do obliczania parametrów ScaleFactor za pomocą parametrów Size.
- (Ic96a6, b/172291582)
- Funkcja captureToBitmap została przeniesiona do funkcji captureToImage. (I86385)
- Oznacza CoreText jako @InternalTextApi. Zamiast tego użyj BasicText. (I6aaeb)
- Zmiana nazwy KeyboardOptions na ImeOptions (I82f36)
- Przeniesiono KeyboardType i ImeAction do KeyboardOptions (I910ce)
- Element CoreTextField został oznaczony jako @InternalTextApi. Zamiast tego użyj BasicTextField (Ie2469)
- Usunięto adnotację ExperimentalSubcomposeLayoutApi. Funkcja SubcomposeLayout może być teraz używana bez dodawania @OptIn (I708ad)
- Wprowadzenie modułu ui-test-junit4 (Ib91f8)
- Zaktualizowano interfejs Icon API, aby przyjmował wartość Color.Unspecified jako możliwy kolor odcienia, który będzie rysować podany zasób lub malarza bez filtra ColorFilter. Wcześniej próby zignorowania odcienia za pomocą Color.Unspecified powodowały odcień przezroczystego koloru, co w rezultacie nie powodowało renderowania. (I049e2, b/171624632)
- Element MeasureResult został przeniesiony poza element MeasureScope. (Ibf96d, b/171184002)
- Kilka symboli związanych z układem zostało przeniesionych z pakietu androidx.compose.ui do androidx.compose.layout.ui. (I0fa98, b/170475424)
- Pakiet androidx.ui.test został przeniesiony do androidx.compose.ui.test (I9ffdb).
- FirstBaseline i LastBaseline zostały przeniesione do pakietu androidx.compose.ui.layout (Ied2e7).
- Dodano SelectionContainer bez wywołania zwrotnego (Ibfadb)
- Dodaj testy pozycji elementów SelectionHandle w obiekcie SelectionContainer. (Ie93db)
- Dodano opcję autokorekty klawiatury IME (I57b8d)
Wersja 1.0.0-alpha06
28 października 2020 r.
androidx.compose.foundation:foundation:1.0.0-alpha06, androidx.compose.foundation:foundation-layout:1.0.0-alpha06 i androidx.compose.foundation:foundation-text:1.0.0-alpha06 są udostępnione. Wersja 1.0.0-alpha06 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- androidx.compose.foundation.Icon został przeniesiony do androidx.compose.material.Icon. Jeśli nie chcesz korzystać z biblioteki Material, możesz też użyć komponentu Image lub funkcji Modifier.paint() z obiektem Painter. (I9f622)
- Dodano interactionState do Modifier.scrollable, ScrollableColumn i LazyColumnFor (I81566, b/169509805)
- Do RowScope dodano alignByBaseline, a alignWithSiblings zmieniono na alignBy (I06503, b/170628732).
- Pole zostało przekształcone w funkcję wbudowaną. (Ibce0c, b/155056091)
- Dodano maxLines do CoreTextField (Ibee58, b/143687793)
- Dodano miękkie zawijanie w komponencie CoreTextField. (I21a4b)
Poprawki błędów
- Wycofanie funkcji VectorPainter na rzecz funkcji rememberVectorPainter, aby lepiej wskazywać, że interfejs API funkcji kompozycyjnych wewnętrznie wykorzystuje funkcję „remember” do utrwalania danych w kompozycjach. (Ifda43)
- Włącz przejścia w ComposeTestRule; usuń opcję włączania migającego kursora z ComposeTestRule. (If0de3)
- Dodano opcję klawiatury jednoliniowej do komponentu CoreTextField (I72e6d)
- Zmieniliśmy nazwę interfejsu Radius API na CornerRadius, aby lepiej odzwierciedlała sposób jego użycia w Compose. Zaktualizowano dokumentację, aby wskazać, że ujemne promienie zaokrąglenia są przycinane do zera. (I130c7, b/168762961)
- Dodanie możliwości określania informacji o inspektorze w złożonym modyfikatorze (Idee08, b/163494569)
- Dodano opcję IME KeyboardCapitalization (I8ac38)
- Popraw pozycję uchwytu w przypadku języków pisanych od prawej do lewej. (I6e1e0)
- Zmiana powodująca niezgodność: usunięto wartość zwracaną z funkcji PointerInputFilter.onPointerEvent(...), ponieważ jedyną wartością, którą można zmienić w zdarzeniach wskaźnika, są dane o użyciu. Zamiast zwracać dane z PointerInputFilter.onPointerEvent(...), możesz teraz po prostu zmieniać dane o użyciu przekazywanych zdarzeń PointerEvents. (I6acd0)
- Dodano opcję Zaznacz wszystko do menu wyboru (Ief02b)
Wersja 1.0.0-alpha05
14 października 2020 r.
androidx.compose.foundation:foundation:1.0.0-alpha05, androidx.compose.foundation:foundation-layout:1.0.0-alpha05 i androidx.compose.foundation:foundation-text:1.0.0-alpha05 są udostępnione. Wersja 1.0.0-alpha05 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Element CoreTextField obsługuje teraz funkcję kursora (Id23aa).
Wycofuje interfejsy API contentColor() i currentTextStyle() i zastępuje je odpowiednio AmbientContentColor i AmbientTextStyle. Aktualną wartość możesz uzyskać, używając
.currentwe właściwości otoczenia, tak jak w przypadku każdego innego otoczenia. Ta zmiana została wprowadzona w celu zachowania spójności i uniknięcia sytuacji, w której to samo zadanie można wykonać na kilka sposobów. Dodatkowo zmieniliśmy nazwy niektórych właściwości otoczenia, aby lepiej opisywały ich przeznaczenie:- ContentColorAmbient -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
Poprawki błędów
- W ramach standaryzacji wartości wartowniczych w przypadku klas wbudowanych zmień nazwę Color.Unset na Color.Unspecified, aby zachować spójność z innymi klasami wbudowanymi (I97611, b/169797763).
- Dodano działania ułatwień dostępu Kopiuj/Wklej/Wytnij (I6db4f)
- Wprowadzono TextOverflow.None. Gdy wartość parametru overflow to None, komponent Text nie będzie już obsługiwać przepełnienia i będzie zgłaszać do komponentu LayoutNode swój rzeczywisty rozmiar. (I175c9, b/158830170)
- Zaktualizowano parametry Size.Unspecified na Float.NaN zamiast Float.POSITIVE_INFINITY. Zaktualizowano implementacje Painter, aby sprawdzać zarówno Size.Unspecified, jak i rozmiary nieokreślone. (I95a7e)
- Dodano moduł Paging Compose i integrację z pagingiem (Ib85da)
- Zmiana zakresu LazyListScope na odbieranie wartości dopuszczających wartość null (I1765b)
- Zmiana nazwy OnPositionedModifier na OnGloballyPositionedModifier i onPositioned() na onGloballyPositioned(). (I587e8, b/169083903)
- Dodaliśmy przykłady LazyColumn/Row (Idc16d)
- Poprawka metod items i itemsIndexed, aby zezwalać na emptyList (I06647)
- Dodanie języka DSL do określania informacji o inspektorze (Ic9a22)
- Przenieś LongPress do tekstu. (Iff2bc)
- Wyłącz zaznaczanie tekstu i obejrzyj wersję demonstracyjną. (Ie7e97)
- Obsługa konwersji AnnotatedString na SpannableString na potrzeby ułatwień dostępu. (Ief907)
- Kontakt
PointerInputFilter.onPointerInput(...)został usunięty.PointerInputFilter.onPointerEvent(...). (I6f04a)
Wersja 1.0.0-alpha04
1 października 2020 roku
androidx.compose.foundation:foundation:1.0.0-alpha04, androidx.compose.foundation:foundation-layout:1.0.0-alpha04 i androidx.compose.foundation:foundation-text:1.0.0-alpha04 są udostępnione. Wersja 1.0.0-alpha04 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Grupa została zmieniona na Box. Wcześniej istniejący komponent foundation.Box zostanie wycofany na rzecz nowego komponentu Box w pakiecie compose.foundation.layout. Nowy element Box układa elementy podrzędne jeden na drugim, gdy ma ich kilka. Różni się to od poprzedniego elementu Box, który działał podobnie do elementu Column. (I94893, b/167680279)
- Parametry dekoracji pola zostały wycofane. Jeśli chcesz dodać dekoracje lub wypełnienie do pola, użyj modyfikatorów (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279).
- Dodaj nową klasę LazyListState. Umożliwia to obserwowanie i kontrolowanie pozycji przewijania komponentów LazyRow i LazyColumn. Instancje można tworzyć za pomocą funkcji rememberLazyListState() i przekazywać do parametru stanu komponentu. Obecnie w tej początkowej wersji można obserwować pierwszy widoczny element i przesunięcia. (Ic7cb7, b/159307669)
- Pozycja listy leniwej i przesunięcie przewijania są teraz zapisywane i przywracane podczas ponownego tworzenia aktywności (Ie045f, b/166589058).
- Dodawanie działania semantycznego długiego kliknięcia (I6281b, b/156468846)
- Dodano narzędzie MutatorMutex, które umożliwia utrzymywanie pojedynczego mutatora stanu współdzielonego w czasie i anulowanie sprzecznych mutatorów według priorytetu (I3f975).
- Oznaczanie adnotacjami rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled i textInputServiceFactory za pomocą @VisibleForTesting, przekształcanie ich w wewnętrzne interfejsy API i ukrywanie ich dokumentacji w KDoc (I554eb, b/168308412)
- Usunięto parametr inlineContent z elementu Text with String input (Tekst z wejściem w postaci ciągu znaków). Nie będzie używany, ponieważ element inlineContent musi działać z elementem AnnotatedString. (Ief403)
- Wycofane niestandardowe interfejsy API Arrangement zostały usunięte. (Ic576d, b/168297922, b/168297923)
- Do modyfikatorów wrapContentSize dodaliśmy parametr
unbounded, który umożliwia pomiar elementu układu z nieskończonymi ograniczeniami maksymalnymi. (I77951, b/158559319) - Zapobiegliśmy statycznemu importowaniu treści z zakresów układu (np. alignWithSiblings w RowScope). Zamiast tego użyj alternatywnego zakresu:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, b/166760797)
Poprawki błędów
- Zaktualizowano wiele interfejsów API grafiki.
- Zaktualizowano interfejsy API przekształceń skalowania i obracania, aby używały jednego parametru Offset do reprezentowania współrzędnych punktu obrotu zamiast oddzielnych parametrów zmiennoprzecinkowych dla współrzędnych x/y w DrawScope i DrawTransform.
- Usunięto metody Rect.expandToInclude i Rect.join
- Zaktualizowana dokumentacja dotycząca promienia, w której oprócz kształtu eliptycznego podano też owalny.
- Dodano dokumentację, aby wskazać, że publiczny konstruktor wbudowanej klasy Radius nie powinien być wywoływany bezpośrednio, ale obiekty Radius powinny być tworzone za pomocą konstruktorów funkcji.
- Usunięto interfejsy API RoundRect do wysyłania zapytań o wartości topRight, bottomRight, bottomCenter itp.
- Wycofanie Rect.shift na rzecz Rect.translate
- Usunięto interfejsy API RoundRect.grow i Rect.shrink
- Zmiana nazwy RoundRect.outerRect na Rect.boundingRect
- Usunięto metody RoundRect.middleRect/tallMiddleRect/wideMiddleRect i Rect.isStadium
- Zmiana nazwy RoundRect.longestSide na RoundRect.maxDimension
- Zmiana nazwy RoundRect.shortestSide na RoundRect.minDimension
- Zmiana RoundRect.center na właściwość zamiast funkcji
- Zaktualizowano konstruktor RoundRect, aby korzystał z właściwości Radius zamiast z poszczególnych parametrów wartości promienia x/y
- Usunięto interfejsy API rozmiaru, które zakładały, że jest to prostokąt o początku w punkcie 0,0
- Dodano interfejs API niszczenia do Radius
- Przeniesiono różne funkcje rozszerzenia RoundRect, aby były właściwościami.
- (I8f5c7, b/168762961)
- Optymalizacja wydajności przewijania elementów LazyColumnFor i LazyRowFor dzięki unikaniu niepotrzebnych ponownych kompozycji podczas każdego przewijania (I64f65, b/168293643, b/167972292, b/165028371)
- Naprawiono błąd w LazyColumnFor/LazyRowFor po przewinięciu, a następnie zmianie elementów. Wprowadzono automatyczne przewijanie w górę po usunięciu wcześniej widocznego elementu, aby nie wyświetlać już pustych przerw na końcu (I220ab, b/161480164, b/167855468).
- Zagnieżdżanie kontenerów z możliwością przewijania w tym samym kierunku, takich jak ScrollableContainer i LazyColumnFor, nie jest już dozwolone. Nigdy nie była obsługiwana i powodowała problemy z przeciąganiem oraz leniwym komponowaniem elementów w LazyColumnFor (I6e101).
- Zaktualizowano wiele interfejsów API grafiki.
- Zaktualizowano interfejsy DrawScope API o metody przekształcania w określonym zakresie, aby wskazać, że przekształcenie jest stosowane tylko w wywołaniu zwrotnym i usuwane po jego wywołaniu.
- Zaktualizowaliśmy dokumentację clipPath, aby odwoływała się do ścieżki zamiast do zaokrąglonego prostokąta
- Poprawiono odstępy w dokumentacji parametru right w elemencie clipPath
- Zmieniono nazwę funkcji DrawScope.drawCanvas na drawIntoCanvas i usunięto parametr rozmiaru
- Zmieniono nazwy parametrów dx/dy w metodzie inset na horizontal i vertical
- Dodano przeciążenie wstawki, które zapewnia tę samą wartość wstawki dla wszystkich 4 obszarów.
- Usunięto dokumentację dotyczącą metody wstawiania, która wskazywała, że wstawianie będzie stosowane do wszystkich 4 stron.
- Zaktualizowana dokumentacja klasy Rect
- Zaktualizowano komentarze dotyczące parametrów Rect, aby były zgodne ze stylem kdoc.
- Usunięto Rect.join i Rect.expandToInclude
- Utworzono przeciążenie funkcji Rect.translate(offset) i wycofano funkcję Rect.shift
- (If086a, b/167737376)
- dodaj AccessibilityScrollState do właściwości semantycznych; (Ifeda9)
- Ustaw TextRange jako wbudowany, aby uniknąć tworzenia obiektu. (Id034b)
- Usunięto element ParagraphConstraints. Szerokość jest teraz przekazywana bezpośrednio do akapitu. (Ica712)
Wersja 1.0.0-alpha03
16 września 2020 roku
androidx.compose.foundation:foundation:1.0.0-alpha03, androidx.compose.foundation:foundation-layout:1.0.0-alpha03 i androidx.compose.foundation:foundation-text:1.0.0-alpha03 są udostępnione. Wersja 1.0.0-alpha03 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Wewnętrzne dopełnienie zostało zmienione na PaddingValues. (I195f1, b/167389171)
- W interfejsach API układu nazwy używanych wcześniej stałych związanych z grawitacją zostały zmienione na align lub alignment. (I2421a, b/164077038)
- Do komponentu Stack dodano parametr wyrównania, który umożliwia określenie domyślnego wyrównania wszystkich elementów podrzędnych komponentu Stack. (Ie80ca, b/164085265)
Poprawki błędów
- Interfejs DpConstraints i interfejsy API, które go używają, zostały wycofane. (I90cdb, b/167389835)
- Parametry
minWidthimaxWidthfunkcjiwidthInzostały zmienione naminimax. Podobnie w przypadku błędówpreferredWidthIn,heightInipreferredHeightIn. (I0e5e1, b/167389544) - Dodano metody onNode i inne metody globalne w klasie ComposeTestRule, ponieważ obecne metody globalne zostaną wycofane. (Ieae36)
- Poprawiliśmy obliczenia rozmiaru i pozycji w GestureScope, co powodowało m.in. generowanie nieprawidłowych gestów przesuwania (Iaf358, b/166589947).
- Przeniesiono elementy
createAndroidComposeRuleiAndroidInputDispatcherzandroidx.ui.test.androidnaandroidx.ui.test(Idef08, b/164060572)
Wersja 1.0.0-alpha02
2 września 2020 r.
androidx.compose.foundation:foundation:1.0.0-alpha02, androidx.compose.foundation:foundation-layout:1.0.0-alpha02 i androidx.compose.foundation:foundation-text:1.0.0-alpha02 są udostępnione. 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 zegar oczekuje na klatkę;runWithManualClockjako zamiennikrunBlockingpodczas przeprowadzania testów, które wymagają ManualFrameClock;TestUiDispatcher.Main, aby zapewnić łatwy dostęp do głównego dyspozytora interfejsu 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.
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ą udostępnione. Wersja 1.0.0-alpha01 zawiera te zatwierdzenia.
Wersja 0.1.0-dev
Wersja 0.1.0-dev17
19 sierpnia 2020 r.
androidx.compose.foundation:foundation:0.1.0-dev17, androidx.compose.foundation:foundation-layout:0.1.0-dev17 i androidx.compose.foundation:foundation-text:0.1.0-dev17 są udostępnione. Wersja 0.1.0-dev17 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- W przypadku elementów Row i Column dodano właściwość spacedBy Arrangement, aby umożliwić pozycjonowanie elementów podrzędnych układu ze stałym odstępem. Dodano też wyrównane rozmieszczenie, aby umożliwić umieszczanie elementów układu obok siebie i wyrównywanie ich w wierszu lub kolumnie zgodnie z wyrównaniem. Poprzednie metody Arrangement.Vertical#arrange i Arrangement.Horizontal#arrange zostały wycofane, a w przyszłości tworzenie niestandardowych układów nie będzie obsługiwane. (I6733d, b/161985975)
- Przesunięcie stało się klasą wbudowaną (Iaec70)
- Usunięto wywołania zwrotne onFocusChanged z pola tekstowego. Zamiast tego użyj Modifier.focusObserver. (I51089, b/161297615)
- Funkcja Modifier.drawBorder została wycofana. Zamiast tego użyj Modifier.border. Klasa danych Border została zastąpiona klasą BorderStroke (I4257d, b/158160576)
- Komponenty VerticalScroller i HorizontalScroller zostały usunięte. Zamiast tego użyj elementu ScrollableColumn/Row. Usunięto Modifier.drawBackground. Użyj Modifier.background (I73b0d, b/163019183)
- Usunięcie z LazyItemScope modyfikatorów fillMax* oznaczonych jako przestarzałe, ponieważ utrudniają one prawidłowe dodawanie takich modyfikatorów do elementów, które nie są bezpośrednimi elementami podrzędnymi LazyColumnFor (Ifa78d).
- dodano implementację LazyColumn/LazyRow jako DSL (I93cc6);
- Ograniczenia są teraz klasą wbudowaną (I88736)
- Dodaliśmy możliwość określania rozmiaru układu jako ułamka dostępnej przestrzeni za pomocą modyfikatorów fillMaxWidth, fillMaxHeight i fillMaxSize. (I945bb, b/161562591)
Poprawki błędów
- Dodano parametr modyfikatora do SelectionContainer (I4aada, b/161487952)
- Dodano funkcję lambda mergePolicy do SemanticsPropertyKey. Można jej użyć do zdefiniowania niestandardowych zasad scalania wszystkich elementów podrzędnych. Domyślna zasada polega na używaniu wartości nadrzędnej, jeśli jest już obecna, w przeciwnym razie używana jest 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 kontekstach pisanych od prawej do lewej. Jeśli chcesz to zrobić, użyj zasadyPlacementScope.placeRelative(). (I873ac, b/162916675) - Usunięto wycofany komponent FilledTextField. Zamiast niego używaj komponentu TextField, aby uzyskać implementację pola tekstowego wypełnionego zgodną z Material Design. (I5e889)
- Dodano parametr backgroundColor do LinearProgressIndicator i usunięto wewnętrzny dopełnienie z CircularProgressIndicator. Dodano nową klasę ProgressIndicatorConstants.DefaultProgressAnimationSpec, której można używać jako domyślnej klasy AnimationSpec podczas animowania postępu między wartościami (If38b5, b/161809914, b/161804677).
- Funkcja
state { ... }została wycofana na rzecz jawnych wywołań funkcjiremember { mutableStateOf(...) }w celu uniknięcia wątpliwości. Zmniejsza to ogólną powierzchnię interfejsu API i liczbę koncepcji zarządzania stanem oraz pasuje do wzorcaby mutableStateOf()delegowania właściwości klasy. (Ia5727) - Zmiana nazwy RRect na RoundRect w celu lepszego dopasowania do wzorców nazewnictwa w Compose Utworzenie podobnych konstruktorów funkcji do RRect i wycofanie konstruktorów funkcji RRect (I5d325)
- Usunięto funkcje onChildPositioned i OnChildPositionedModifier. Zamiast tego deweloperzy powinni używać funkcji onPositioned i OnPositionedModifier w układzie podrzędnym. (I4522e, b/162109766)
- IntSize jest teraz klasą wbudowaną (I2bf42).
- Przytrzymaj dłużej pusty obszar, aby go edytować. (Ib1e5b)
- Ukryj pływający pasek narzędzi po kliknięciu tekstu. (If4525)
- Ukrywanie pływającego paska narzędzi podczas aktualizowania zaznaczenia. (I8444c)
- Odznacz opcję Gdy rozmycie. (I781a2)
Wersja 0.1.0-dev16
5 sierpnia 2020 r.
androidx.compose.foundation:foundation:0.1.0-dev16, androidx.compose.foundation:foundation-layout:0.1.0-dev16 i androidx.compose.foundation:foundation-text:0.1.0-dev16 są udostępnione. Wersja 0.1.0-dev16 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Dodano LazyItemScope dla parametru itemContent list leniwych. Zawiera modyfikatory, które wypełniają maksymalny rozmiar elementu nadrzędnego. Rozwiązuje to problem, gdy element powinien wypełniać obszar widoczny, a zwykły modyfikator Modifier.fillMaxSize() nie działa, ponieważ element jest mierzony z ograniczeniami nieskończoności. (Ibd3b2, b/162248854)
- Przeniesienie okna do interfejsu (I47fa6)
- Dodano LazyColumnForIndexed/LazyRowForIndexed – wersje LazyColumnFor/LazyRowFor, które w funkcji itemCallback udostępniają zarówno indeks, jak i element. Jest to przydatne, gdy oprócz bieżącego elementu musisz znać bieżący indeks. (I65ff3)
- Właściwość Modifier.deternimateProgress została zmieniona na Modifier.progressSemantics (I9c0b4)
- LazyColumnItems została zmieniona na LazyColumnFor. Zmiana nazwy LazyRowItems na LazyRowFor (I84f84)
- Dodaj kilka oznaczeń lub adnotacji, aby zastosować sprawdzone metody. (I66b20)
- Pakiet foundation.shape.corner został spłaszczony do foundation.share (I46491, b/161887429)
- Dodano parametr grawitacji osi poprzecznej dla LazyRowItems/LazyColumnItems. Elementy LazyRowItems/LazyColumnItems obsługują teraz zachowanie zawijania treści. (Ib39fc)
- Zmiana nazwy ZoomableState na ZoomableController. Dodaliśmy obsługę niestandardowych krzywych w przypadku funkcji smoothScale. Dodano funkcje
enabledionZoomStarted(If8b8f). - Komponent Material FilledTextField został zmieniony na TextField, a komponent podstawowy TextField został zmieniony na BaseTextField, aby ułatwić odkrywanie i używanie najprostszego interfejsu API (Ia6242, b/155482676).
- Wycofana wcześniej klasa AdapterList została usunięta. Zamiast niego używaj LazyColumnItems (I12b9b).
- Funkcja Modifier.drawBackground została zmieniona na Modifier.background (I13677)
- Stary język DSL ConstraintLayout został usunięty. Zmieniono nazwę ConstraintSet2 na ConstraintSet. (If58d1, b/162450908)
- Dodano Modifier.absoluteOffset() i Modifier.absoluteOffsetPx(). W odróżnieniu od modyfikatorów przesunięcia modyfikatory przesunięcia bezwzględnego nie będą automatycznie odzwierciedlane w kontekście od prawej do lewej (I3aa21).
RowiColumnto teraz funkcje wbudowane, które znacznie zmniejszają obciążenie związane z ich używaniem. (I75c10)
Poprawki błędów
- Rozwiązanie problemów z interfejsem API (I077bc)
- Usuwanie nieużywanego interfejsu OffsetBase
- Ujednolicenie klas Offset i IntOffset w celu zapewnienia spójności interfejsu API
- Zmiana nazwy IntOffset.Origin na IntOffset.Zero w celu zachowania spójności z interfejsem Offset API
- Przeniesiono metodę nativeCanvas z interfejsu Canvas, aby umożliwić użytkownikom tworzenie własnych instancji Canvas.
- Utworzono klasę EmptyCanvas, aby refaktoryzować DrawScope i zamiast lateinit używać parametru niepustego, a także zapewnić, że pole nie będzie miało wartości null.
- Zmiana nazw wyliczeń ClipOp na Pascal Case
- Zmiana nazwy wyliczeń FilterQuality na Pascal Case
- Zmieniono nazwy wyliczeń StrokeJoin na Pascal Case
- Zmiana nazw wyliczeń PointMode na Pascal Case
- Zmiana nazwy wyliczeń PaintingStyle na Pascal Case
- Zmiana nazwy wyliczeń PathFillType na Pascal Case
- Zmieniono nazwy wyliczeń StrokeCap na Pascal Case
- Zaktualizowano implementację DrawCache, aby nie używać już parametrów lateinit.
- Zaktualizowano DrawScope, aby nie używać już leniwego delegowania w przypadku wewnętrznych parametrów fillPaint i strokePaint
- Zaktualizowano funkcję kompozycyjną Image, aby uniknąć używania Boxa i zmniejszyć obciążenie.
- Zaktualizowano klasę Outline, aby zawierała adnotacje @Immutable
- Zaktualizowano klasę PathNode, aby zawierała adnotacje @Immutable dla każdej instrukcji ścieżki.
- Zaktualizowano podkompozycję wektora, aby usunąć zbędne sprawdzanie warunkowe równości, ponieważ kompozycja już je obsługuje.
- Wycofanie metod konstruktora towarzyszącego Rect na rzecz konstruktorów funkcji
- Zaktualizowano klasy Brush i konstruktory funkcji za pomocą interfejsów API @Immutable i @Stable
- Zaktualizowano wyliczenie VertexMode, aby używać notacji PascalCase
- Zaktualizowano metodę selectPaint w klasie DrawScope, aby warunkowo zastępować parametry pędzla w obiekcie Paint, jeśli uległy zmianie.
- Zaktualizowano klasę Size, aby dodać interfejs API destructuring, zmienić nazwę UnspecifiedSize na Unspecified i usunąć nieużywane metody.
Dodano MonotonicFrameAnimationClock, który umożliwia używanie MonotonicFrameClock jako AnimationClockObservable, aby wypełnić lukę między nowymi zegarami opartymi na korutynach a interfejsami API, które nadal używają starych zegarów opartych na wywołaniach zwrotnych.
Odpowiednikiem klasy MonotonicFrameClock w przypadku klasy ManualAnimationClock jest teraz klasa ManualFrameClock. (I111c7, b/161247083)
Kontakt
SemanticsNodeInteraction.performPartialGesturezostał usunięty. Zamiast niej używaj zasadySemanticsNodeInteraction.performGesture. (Id9b62)Nazwa
SemanticsNodeInteraction.getBoundsInRoot()została zmieniona naSemanticsNodeInteraction.getUnclippedBoundsInRoot()(Icafdf, b/161336532)Interfejsy API obsługujące pisanie od prawej do lewej zostały zaktualizowane. Dodano LayoutDirectionAmbient, którego można używać do odczytywania i zmieniania kierunku układu. Usunięto Modifier.rtl i Modifier.ltr. (I080b3)
Metoda Modifier.plus została wycofana. Zamiast niej używaj metody Modifier.then. Słowo „wtedy” silniej sygnalizuje kolejność, a także uniemożliwia wpisanie znaku
Modifier.padding().background() + anotherModifier, który przerywa łańcuch i utrudnia czytanie (Iedd58, b/161529964).Dodano
isFocused()iisNotFocused()SemanticsMatcher. (I0b760)Dodano RemeasurementModifier. Umożliwia użytkownikom synchroniczne ponowne pomiary układu. Zwykle nie jest on potrzebny, ponieważ ponowny pomiar i ponowny układ są wykonywane automatycznie, ale używamy go w LazyColumnItems podczas przewijania. (I5f331, b/160791058)
Metoda isSystemInDarkTheme zawsze uwzględnia ustawienie ciemnego motywu w systemie i ignoruje stan oszczędzania energii w przypadku wersji starszych niż Q, zgodnie z najnowszymi wytycznymi. (I0c10c)
Metoda OnChildPositioned została wycofana. Zamiast tego użyj OnPositioned w przypadku elementu podrzędnego. (I87f95, b/162109766)
Zmiana nazwy AndroidComposeTestRule na createAndroidComposeRule. (I70aaf)
Dodawanie działania związanego z ułatwieniami dostępu w celu uzyskania obiektu TextLayoutResult (I9d6e6)
Wersja 0.1.0-dev15
22 lipca 2020 r.
androidx.compose.foundation:foundation:0.1.0-dev15, androidx.compose.foundation:foundation-layout:0.1.0-dev15 i androidx.compose.foundation:foundation-text:0.1.0-dev15 są udostępnione. Wersja 0.1.0-dev15 zawiera te zatwierdzenia.
Aby korzystać z wersji 0.1.0-dev15 funkcji Twórz, musisz:
Aktualizacja zależności
- Aby używać wersji
0.1.0-dev15biblioteki Compose, musisz zaktualizować zależności zgodnie z nowymi fragmentami kodu pokazanymi powyżej w sekcji Deklarowanie zależności.
Zmiany w interfejsie API
- Podobnie jak w przypadku nowego parametru w ScrollableColumn/ScrollableRow, LazyColumnItems/LazyRowItems mają teraz również parametr contentPadding, który umożliwia dodanie dopełnienia do treści po jej przycięciu, co nie jest możliwe tylko za pomocą parametru modyfikatora. Umożliwia też dodanie odstępu tylko przed pierwszym elementem lub po ostatnim elemencie. (Ibc24e)
- Wywołanie zwrotne onFocusChange w polach tekstowych zostało zmienione na onFocusChanged (Ida4a1)
- Komponenty VerticalScroller i HoriziontalScroller zostały wycofane. Użyj komponentów ScrollableColumn i ScrollableRow, aby wbudować funkcje z zachowaniem i parametrami Column/Row, lub użyj modyfikatorów Modifier.verticalScroll i Modifier.horizontalScroll we własnym elemencie. Podobnie ScrollerPosition został wycofany na rzecz ScrollState' (I400ce, b/157225838, b/149460415, b/154105299).
- Interfejsy Modifier.draggable i Modifier.scrollable zostały zmodyfikowane. Właściwość DragDirection została usunięta na rzecz właściwości Orientation. Uprościliśmy stan wymagany w przypadku elementów przewijanych. Klasa ScrollableState została zmieniona na ScrollableController (Iab63c, b/149460415).
- Właściwości semantyczne pojedynczej wartości używają teraz stylu wywoływania.
Na przykład „semantics { hidden = true }” jest teraz zapisywane jako:
semantics { hidden() }(Ic1afd, b/145951226, b/145955412) - Rozmiary narożników używane przez RoundedCornerShape i CutCornerShape mogą być teraz większe niż 50% (Id2340, b/160400213).
- Zmieniono domyślny parametr ContentScale kompozycji Image z Inside na Fit. Zrobiliśmy to, aby w przypadku, gdy rozmiar układu jest większy niż rozmiar wewnętrzny obiektu Painter, zachowanie skalowało go w górę przy zachowaniu współczynnika proporcji. Takie zachowanie lepiej odpowiada oczekiwaniom dotyczącym podawania stałych rozmiarów obrazu, a jednocześnie nie wpływa na domyślne zachowanie, jeśli do obliczenia rozmiaru komponentu kompozycyjnego używany jest tylko rozmiar wewnętrzny. (I40ae3, b/159838006)
- W interfejsach API najwyższego poziomu używaj AnimationSpec zamiast AnimationBuilder, aby wyjaśnić koncepcję statycznej specyfikacji animacji. -Ulepsz DSL przejścia, usuwając wymaganie lambdy do tworzenia specyfikacji animacji, takich jak tween i spring. Zamiast tego przyjmują one bezpośrednio parametry konstruktora. – Zwiększenie ogólnej łatwości użycia AnimationSpec przez udostępnienie konstruktorów zamiast polegania na konstruktorach. (Ica0b4)
- Element klikalny został usunięty. Użyj Modifier.clickable (I84bdf)
- Dodano LazyRowItems – przewijany w poziomie odpowiednik LazyColumnItems (Ibbcf7)
- Wprowadzono interfejsy API animacji bezstanowych niskiego poziomu. Te interfejsy API (I63bf7)
- Interfejsy androidx.ui.foundation.TextFieldValue i androidx.ui.input.EditorValue zostały wycofane. Funkcje kompozycyjne TextField, FilledTextField i CoreTextField, które używają tego typu, również zostały wycofane. Zamiast tego używaj androidx.ui.input.TextFieldValue (I4066d, b/155211005)
- Zastąpiono użycie IntPx wartością Int. Zastąpiono IntPxPosition wartością IntOffset. Zastąpiono IntPxSize wartością IntSize. (Ib7b44)
- androidx.ui.foundation.shape.RectangleShape removed; use androidx.ui.graphics.RectangleShape (I94939, b/154507984)
- Aby zmniejszyć liczbę klas używanych do reprezentowania informacji o rozmiarach, ujednolić użycie klasy Size zamiast PxSize. Daje to korzyści klasy wbudowanej, która wykorzystuje typ long do spakowania 2 wartości zmiennoprzecinkowych reprezentujących szerokość i wysokość. (Ic0191)
- Aby zmniejszyć liczbę klas używanych do reprezentowania informacji o pozycjonowaniu, zamiast klasy PxPosition używaj klasy Offset. Daje to korzyści klasy wbudowanej, która wykorzystuje typ long do pakowania 2 wartości zmiennoprzecinkowych reprezentujących przesunięcia x i y. (I3ad98)
- Dodano Modifier.zoomable do funkcji powiększania za pomocą gestu rozciągania palców (Id5d63)
- Komponent przełączany został wycofany. Zamiast tego użyj Modifier.toggleable (I35220, b/157642842).
- Element MutuallyExclusiveSetItem został wycofany. Zamiast tego użyj Modifier.selectable. (I02b47, b/157642842)
- TestTag został wycofany. Zamiast tego użyj Modifier.testTag. (If5110, b/157173105)
- Dodaje parametr fontWeight do komponentu Text, który został wcześniej przypadkowo pominięty (I56937).
- Zastąpiono użycie klasy Px w różnych klasach Compose w ramach dużego refaktoryzacji, aby w przypadku parametrów pikseli używać tylko typów Dp i podstawowych (I19d02).
- Komponent VerticalScroller udostępnia teraz kolumnę od razu po wyjęciu z pudełka. Komponent HorizontalScroller udostępnia teraz komponent Row od razu po wyjęciu z pudełka. (Ieca5d, b/157020670)
- W ramach dużego refaktoryzacji zastąpiono użycie klasy Px w różnych klasach kompozycji, aby w przypadku parametrów pikseli używać tylko typów Dp i podstawowych (Iede0b).
- Do pakietu podstawowego dodano pole Modifier.indication. Używaj go do wyświetlania informacji o naciśnięciu, przeciągnięciu lub innych interakcjach w przypadku niestandardowych elementów interaktywnych (I8425f, b/155287131).
- Komponenty VerticalScroller i HorizontalScroller obsługują teraz odwrócone przewijanie, gdy w komponencie ScrollerPosition ustawiona jest wartość isReversed (I953bd).
- Obsługa dodawania komponentów kompozycyjnych do układu tekstu. (I1373c)
- Ujednoliciliśmy implementacje CanvasScope, więc teraz są tylko DrawScope i ContentDrawScope. Zmieniliśmy nazwę CanvasScope na DrawScope. Zaktualizowano DrawScope, aby implementować interfejs Density i udostępniać LayoutDirection. Usunięto podklasę DrawScope w ContentDrawScope. Zaktualizowano Painter i PainterModifier, aby nie utrzymywały już właściwości RTL, ponieważ DrawScope już ją udostępnia bez ręcznego podawania (I1798e).
- Usunęliśmy przestarzały interfejs DrawBackground API na rzecz interfejsów drawBackground API w rozszerzeniu Modifier. Przebudowano implementacje kolorów, pędzli i malowania tła, aby zmniejszyć liczbę ścieżek kodu, a także usunąć wymaganie tworzenia modyfikatora w ramach kompozycji. (I0343a)
- Zaktualizowane interfejsy API Compose wyższego poziomu, które udostępniają Canvas, aby zamiast tego udostępniać CanvasScope. Dzięki temu konsumenci nie muszą utrzymywać własnych obiektów Paint. Użytkownicy, którzy nadal potrzebują dostępu do elementu Canvas, mogą użyć metody drawCanvas rozszerzenia, która zapewnia wywołanie zwrotne do wydawania poleceń rysowania za pomocą bazowego elementu Canvas. (I80afd)
- Komponenty HorizontalScroller i VerticalScroller nie przywracają pozycji przewijania za pomocą zapisanego stanu instancji. (Ia0fae, b/155075048)
- Interfejs FocusManagerAmbient został usunięty. Aby uzyskać fokus, użyj FocusModifier.requestFocus. (Ic4826)
- Układ tabeli został tymczasowo usunięty. Udostępnimy go ponownie w odświeżonej wersji interfejsu API. (Id88a7)
Utworzono interfejs CanvasScope API, który otacza obiekt Canvas, aby udostępnić bezstanowy, deklaratywny interfejs API do rysowania. Przekształcenia są zawarte w odpowiednim zakresie odbiornika, a informacje o rozmiarze są również ograniczone do odpowiednich granic wstawki. Nie wymaga to od użytkownika utrzymywania własnego obiektu stanu Paint do konfigurowania operacji rysowania.
Dodaliśmy CanvasScopeSample, a także zaktualizowaliśmy aplikację w wersji demonstracyjnej, aby zawierała demonstrację grafiki deklaratywnej (Ifd86d).
Usunięto element ColoredRect. Zamiast tego użyj elementu User Box z modyfikatorem drawBackground (I983c7, b/152753731).
Dodanie możliwości dostosowania koloru kursora w elemencie TextField (I6e33f)
Teraz można ukrywać i wyświetlać klawiaturę ekranową za pomocą elementu SoftwareKeyboardController, który jest dostarczany przez wywołanie zwrotne onTextInputStarted (I8dc44, b/151860051).
Wartość TextFieldValue używana z polem TextField może teraz przetrwać ponowne utworzenie aktywności, jeśli jest używana w ten sposób:
var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() }(I5c3ce, b/155075724)Dodaje do funkcji Text() często używane parametry. Jeśli obecnie tworzysz lokalny styl tekstu, aby przekazać niewielką liczbę tych parametrów, np.
Text(style = TextStyle(textAlign = TextAlign.Center)), możesz teraz po prostu podać parametry bezpośrednio:Text(textAlign = TextAlign.Center)(I82768)Zastąpiono parametr focusIdentifier w komponencie CoreTextField/TextField parametrem FocusNode, aby zintegrować go z podsystemem fokusu. (I7ea48)
Aktualizacja pola tekstowego – w wymiarze poziomym zajmie ono całą dostępną przestrzeń (Ib08df, b/154638552).
Dodano InteractionState i Interaction, co ułatwia tworzenie komponentów reagujących na zmiany stanu interfejsu, takie jak naciśnięcie i przeciągnięcie (Icfe25, b/152525426).
RectangleShape przeniesiono z androidx.ui.foundation.shape.* do androidx.ui.graphics.* (Ia74d5, b/154507984)
Zastąpiono wszystkie użycia koloru dopuszczającego wartość null w interfejsie API kolorem niedopuszczającym wartości null i zamiast wartości null użyto Color.Unset (Iabaa7).
Aktualizacja interfejsu TextField API – scalenie wywołań zwrotnych onFocus i onBlur w jedno wywołanie zwrotne onFocusChange(Boolean) z parametrem (I66cd3)
Zmiana nazwy ScaleFit na ContentScale. Przeniesienie ContentScale z modułu ui-graphics do modułu ui-core. Moduł będzie znajdować się w tym samym module co interfejs Alignment API. Zmiana nazwy FillMaxDimension na Crop. Zmiana nazwy FillMinDimension na Fit. Zmiana nazwy Fit na Inside, aby lepiej dopasować ją do odpowiedników ImageView.ScaleType. Dodanie dokumentacji wskazującej, że połączenie Crop i Alignment.Center daje taki sam efekt jak ImageView.ScaleType.CENTER_CROP, a Fit użyte z Alignment.Center daje taki sam efekt jak ImageView.ScaleType.FIT_CENTER. Inside użyte z Alignment.Center daje taki sam efekt jak ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521).
Usuwa ProvideContentColor i zamiast tego używa bezpośrednio ContentColorAmbient z
Providers(Iee942).Dodaje parametr koloru do tekstu, co umożliwia zastąpienie koloru stylu tekstu bez konieczności ręcznego łączenia ze stylem podanym w motywie. (I41a66)
Ulepszenie interfejsu DrawModifier API:
- Zmieniono zakres odbiornika funkcji draw() na ContentDrawScope
- Usunięto wszystkie parametry funkcji draw()
- DrawScope ma taki sam interfejs jak poprzednia aplikacja CanvasScope.
- ContentDrawScope ma metodę drawContent() (Ibaced, b/152919067)
Komponent ColoredRect został wycofany. Użyj w zamian zasady
Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)System motywów kształtów jest aktualizowany zgodnie ze specyfikacją Material Design. Możesz teraz podać małe, średnie i duże kształty, które będą używane przez większość komponentów (Ifb4d1).
Zastąpienie operatora modyfikatora plus funkcjami rozszerzenia fabryki (I225e4)
Przeniesienie elementu Draggable do modyfikatora (Id9b16, b/151959544)
Przeniesiono
Textdo pakietu androidx.ui.foundation z pakietu androidx.ui.core. (I87ce5)dodanie parametru
enableddo komponentów Checkbox, Switch i Toggleable (I41c16)Efekt falowania jest teraz modyfikatorem. Dopóki nie zostanie przekonwertowany, zalecane użycie to
Clickable(onClick = { ... }, modifier = ripple())(Ie5200, b/151331852, b/150060763).Dodano interfejs VectorPainter API, który zastępuje dotychczasowy interfejs subcomposition API w przypadku grafiki wektorowej. Wynikiem subkompozycji jest obiekt VectorPainter zamiast DrawModifier. Wycofano poprzednie funkcje kompozycyjne DrawVector na rzecz VectorPainter.
Zmiana nazwy interfejsu
Image(Painter)API naPaintBox(Painter)Utworzono komponent Vector, który działa jak komponent Image, ale zamiast ImageAsset używa VectorAsset (I9af9a, b/149030271)Utworzono komponent CreatedImage, który obsługuje rozmiar i układ, a także rysuje na ekranie dany element ImageAsset. Ten komponent obsługuje też rysowanie dowolnej instancji Painter z uwzględnieniem jej rozmiaru wewnętrznego oraz obsługę danego stałego lub minimalnego rozmiaru (Ibcc8f).
Komponenty Button, FloatingActionButton i Clickable mają teraz osobny parametr
enabled. Niektóre parametry w elemencie Button zmieniły nazwę lub kolejność. (I54b5a)Zmieniliśmy nazwę Image na ImageAsset, aby lepiej odróżnić dane Image od nadchodzącego komponentu Image, który będzie używany do układania i rysowania treści.
Utworzono metodę rozszerzenia w klasie android.graphics.Bitmap,
Bitmap.asImageAsset(), aby utworzyć instancję klasy ImageAsset przydatną do łączenia tradycyjnego tworzenia aplikacji na Androida z platformą Compose. (Id5bbd)Funkcja kompozycyjna DrawImage została usunięta. Użyj ImagePainter, aby narysować obraz w istniejącym układzie, lub SimpleImage, aby wprowadzić obraz zajmujący miejsce (I595e1, b/149827027).
Komponent stosu obsługuje kierunek od prawej do lewej (Ic9e00)
Dodano komponenty Icon, IconButton i IconToggleButton, a usunięto AppBarIcon. Możesz bezpośrednio zastąpić istniejące użycia AppBarIcon elementem IconButton, a będą one teraz miały prawidłowy docelowy element dotykowy. Informacje o użyciu znajdziesz w przykładach, a ikony Material Icons, których możesz używać bezpośrednio z tymi komponentami, znajdziesz w sekcji Ikony. (I96849)
Funkcja kompozycyjna DrawShape została usunięta. Zamiast tego użyj modyfikatora DrawBackground. (I7ceb2)
Dodano AdapterList, komponent listy przewijanej, który tworzy i układa tylko widoczne elementy. Obecnie znane problemy obejmują to, że jest on tylko pionowy i nie obsługuje w pełni wszystkich przypadków zmian w jego elementach podrzędnych. (Ib351b)
Dodano komponent z możliwością przewijania, który umożliwia tworzenie niestandardowych komponentów przewijanych i list (I5fd37).
Zmieniliśmy nazwę tła na DrawBackground i ustawiliśmy domyślne zapamiętywanie (Ia0bd3).
Dodaj parametry dopełnienia, obramowania, kształtu i tła do komponentu Box (I05027, b/148147281)
Dodano komponent obszaru roboczego. Ten komponent zajmuje pewną przestrzeń (określoną przez użytkownika) i umożliwia rysowanie za pomocą CanvasScope (I0d622).
zmiana nazwy modyfikatora
BordernaDrawBorder(I8ffcc)Dodano komponent Box, który łączy układ i funkcje rysowania. (I6e2a7)
Elementy przewijane działają teraz tak jak w przypadku natywnego gestu szybkiego przesunięcia na Androidzie. (I922af, b/147493715)
Zastąpiono DrawBorder modyfikatorem obramowania (Id335a)
Aby uniknąć pomyłki z Modifier.testTag, zmieniliśmy nazwę Modifier.tag na Modifier.layoutId. (I995f0)
Parametr percent podczas tworzenia wytycznych ConstraintLayout został zmieniony na fraction. (Ida2db)
Dodaliśmy obsługę marginesów barier ConstraintLayout. (I47ffe)
Poprawiona obsługa układu od prawej do lewej w ConstraintLayout. Dodano interfejsy API, które nie uwzględniają pisma od prawej do lewej. (I3b1c7)
Dodaliśmy nowy język DSL dla ConstraintLayout. Więcej informacji znajdziesz w przykładach. (Icaa9a)
Dodano adnotację @ExperimentalLayout. Komponenty ConstraintLayout, FlowRow i FlowColumn są teraz oznaczone tym tagiem, aby wskazać, że ich interfejsy API ulegną zmianie. (I412a8)
Dodano
Modifier.padding(InnerPadding)(I94985, b/157133803)Usunięto przestarzałe atrybuty RowAlign i ColumnAlign w elementach Row i Column. (If60d4, b/155858731)
Usunięto wycofaną funkcję LayoutTag(). Zamiast niej używaj funkcji Modifier.tag(). Usunięto wycofany modyfikator Modifier.matchParent(). Zamiast niego używaj modyfikatora Modifier.matchParentSize(). (If8044)
Dodaliśmy modyfikator układu offsetPx, którego można używać do definiowania (dynamicznych) przesunięć w pikselach. (I5af57)
Funkcja kompozycyjna AlignmentLineOffset została wycofana. Zamiast niej używaj modyfikatora relativePaddingFrom(). Kompozycja CenterAlignmentLine została usunięta. (I60107)
Dodano domyślny modyfikator układu defaultMinSizeConstraints, który ustawia ograniczenia rozmiaru na opakowany układ tylko wtedy, gdy przychodzące odpowiednie ograniczenia nie są określone (0 – minimalne ograniczenia, nieskończoność – maksymalne ograniczenia). (I311ea, b/150460257)
Kontener został usunięty. Użyj Box (Ibbc2b, b/151407926)
Usunięto wycofane modyfikatory LayoutWidth/Height/Size. (Ib0bc1)
Dodano domyślne wartości parametrów modyfikatora przesunięcia. (I37f06)
Dodano modyfikator dopełnienia symetrycznego. (I39840)
Usunięto wycofany modyfikator LayoutAspectRatio. (I65a74)
Usunięto wycofane modyfikatory LayoutAlign. (I10877)
Naprawiliśmy błąd w modyfikatorach szerokości i wysokości, który powodował, że układ zawijany był mierzony bez ograniczeń osi przeciwnej. (I210b8, b/154797971)
Dodano parametry verticalGravity i horizontalGravity odpowiednio do wiersza i kolumny. (I7dc5a)
Zaktualizowano funkcje wrapContentWidth i wrapContentHeight, aby oczekiwały wyrównania w pionie lub poziomie, a nie dowolnego wyrównania. Modyfikator grawitacji został zaktualizowany, aby akceptować wyrównanie w pionie lub poziomie. Wiersz, Kolumna i Stos zostały zaktualizowane, aby obsługiwać niestandardowe ciągłe wyrównania. (Ib0728)
Umożliwiono tworzenie instancji klasy Alignment z dowolnymi wartościami. Dodano wyrównania 1D. (Ia0c05)
Zmieniono nazwę EdgeInsets na InnerPadding. Zmiana nazwy parametru innerPadding w przypadku przycisków Material na padding. (I66165)
Funkcja alignToSiblings akceptuje teraz obiekt Measured zamiast Placeable. (I5788d)
Dodaliśmy modyfikatory rozmiaru do pomiarów wewnętrznych i wycofaliśmy komponenty służące do tego celu. (I8295d)
Dodano obsługę dostosowywania wymiarów elementów podrzędnych elementu ConstraintLayout (Idb1a5).
Usunięto wycofane funkcje kompozycyjne Wrap i Center. (I29e23)
Dodano LayoutModifier2, nowy interfejs API do definiowania modyfikatorów układu; wycofano LayoutModifier (If32ac).
Elementy RowScope i ColumnScope są teraz dostępne poza wierszem i kolumną. (I3a641)
Kontener został wycofany. Zamiast tego użyj Box. (I675ce, b/151407926)
Dodano modyfikator LayoutOffset do przesuwania pozycji układu (I0b8a3)
Początkowa obsługa układu od prawej do lewej w układzie Compose (Ia5519)
Zaktualizowano LayoutAlign, aby nie wypełniał już dostępnej przestrzeni (I2b14f)
Usunięto funkcję kompozycyjną AspectRatio na rzecz modyfikatora. Usunięto przestarzałe komponenty FlexColumn i FlexRow oraz modyfikator Spacing (Iec8a7)
Usunięto modyfikator LayoutInflexible w przypadku wiersza i kolumny (I0d820)
Zaimplementuj uchwyty przeciągania zaznaczenia, aby zmienić zaznaczenie w przypadku elementu TextField. (I27032)
Implementuje LongPressAndDrag na potrzeby zaznaczania w polu tekstowym. (I17919)
Poprawki błędów
- FocusModifier został wycofany na rzecz Modifier.focus, Modifier.focusRequester i Modifier.focusObserver. FocusState i FocusDetailedState zostały wycofane na rzecz FocusState2 (I46919, b/160822875, b/160922136).
runOnIdleComposeNazwa została zmieniona narunOnIdle(I83607)- Zmieniliśmy nazwy kilku interfejsów API do testowania, aby były bardziej intuicyjne. Wszystkie interfejsy API findXYZ zostały zmienione na onNodeXYZ. Wszystkie interfejsy API doXYZ zostały zmienione na performXYZ. (I7f164)
- Usuwa wcześniej wycofany modyfikator Modifier.ripple. Komponent Clickable używa teraz efektu falowania jako domyślnego wskaźnika (jeśli w aplikacji masz ustawiony komponent MaterialTheme {}), więc w większości przypadków możesz po prostu użyć komponentu Clickable i uzyskać efekt falowania bez dodatkowych działań. Jeśli chcesz dostosować kolor, rozmiar lub parametr ograniczony efektu falowania, możesz ręcznie utworzyć RippleIndication i przekazać go do funkcji clickable jako parametr indication. (I663b2, b/155375067)
- Usunięto nieaktualne interfejsy API do testowania rozmiaru. (Iba0a0)
- Oznaczono interfejs API LayoutNode jako eksperymentalny (I4f2e9)
- W całym Compose zaimplementowano wersję 1 blokowania orientacji przewijania. (I1ce7a, b/150289741)
- Wyskakujące okienka, okna dialogowe i menu dziedziczą teraz kontekstowy motyw MaterialTheme (Ia3665, b/156527485).
- Usunięto parametr kierunku układu z bloku miary funkcji Layout(). Kierunek układu jest jednak dostępny w wywołaniu zwrotnym w obiekcie zakresu pomiaru (Ic7d9d).
- Dodaj AbsoluteArrangement – umożliwia rozmieszczenie elementów podrzędnych w wierszu bez automatycznego dublowania w przypadku języków pisanych od prawej do lewej (I3a1df).
- Adnotacja @Untracked została wycofana. Zastąp @ComposableContract(tracked=false) (Id211e)
- Przed tą zmianą wtyczka kompilatora Compose w nietrywialny sposób przechwytywała wywołania konstruktorów w funkcji @Composable, jeśli istniał (I5205a, b/158123804).
- Dodaj funkcję
viewModel(), która umożliwia tworzenie lub pobieranie utworzonego już obiektu ViewModel w sposób podobny do tego, jak działa to w przypadku aktywności lub fragmentu (I5fdd1). Zmieniliśmy klasę Radius, aby była klasą wbudowaną. Usunięto metody tworzenia komponentu towarzyszącego na rzecz konstruktora funkcji z parametrem domyślnym, aby promień wzdłuż osi Y był zgodny z obowiązkowym parametrem promienia wzdłuż osi X.
Zaktualizowano DrawScope.drawRoundRect, aby używać jednego parametru Radius zamiast 2 oddzielnych wartości zmiennoprzecinkowych dla promienia wzdłuż osi X i Y (I46d1b).
Zastąpiono użycie klasy Px w różnych klasach kompozycji w ramach dużego refaktoryzacji, aby w przypadku parametrów pikseli używać tylko typów Dp i podstawowych. Usunięto w całości klasę Px (I3ff33)
W ramach dużych zmian w kodzie zastąpiono użycie klasy Px w różnych klasach Compose, aby w przypadku parametrów pikseli używać tylko typów Dp i podstawowych (I086f4).
W ramach dużych zmian w kodzie zastąpiono użycie klasy Px w różnych klasach Compose, aby w przypadku parametrów pikseli używać tylko typów Dp i podstawowych (Id3434).
W ramach dużych zmian w kodzie zastąpiono użycie klasy Px w różnych klasach Compose, aby w przypadku parametrów pikseli używać tylko typów Dp i pierwotnych (I97a5a).
Kursor w polu tekstowym ma animację migania (Id10a7)
Gesty częściowe nie wymagają już przekazywania elementu GestureToken (Id7ae5).
W ramach dużego refaktoryzacji zastąpiono użycie klasy Px w różnych klasach kompozycji, aby w przypadku parametrów pikseli używać tylko typów Dp i podstawowych (I57bff).
Wycofanie funkcji Modifier.semantics zostało cofnięte, aby umożliwić używanie jej w komponentach wyższego poziomu. (I4cfdc)
Zmień nazwę funkcji AnnotatedString.Builder.addAnnotationString na addStringAnnotation. (I5059e)
Zaktualizowano interfejs Alignment API i dodano obsługę wyrównania bezwzględnego (które nie jest automatycznie odzwierciedlane w kontekście RTL) (I38cd3).
Elementy podrzędne Layout i LayoutModifier można mierzyć w innym kierunku układu. (Ibd731)
Wprowadzenie dodatkowego opcjonalnego parametru rect do ImagePainter, aby obsługiwać rysowanie podsekcji bazowego elementu ImageAsset (I0ea9e)
Naprawiono błąd powodujący awarię w klasie AdapterList podczas usuwania elementów (Ic64b0, b/153195921).
Zmieniliśmy sposób pomiaru pierwszego układu umieszczonego w bloku activity.setContent { }. Wcześniej musiał wypełniać cały ekran aktywności, a teraz zachowuje się tak, jakby układ był umieszczony w obiekcie Stack: może być mniejszy niż ekran i będzie umieszczony w lewym górnym rogu ekranu. Jeśli chcesz przywrócić stare działanie, możesz zastosować Modifier.fillMaxSize() w układzie. (Ie88a7, b/153453714)
Moduł ui-text-compose został zmieniony na ui-text. Moduł ui-text zawiera teraz funkcje kompozycyjne CoreText i CoreTextField (Ib7d47).
Moduł ui-text został zmieniony na ui-text-core (I57dec)
Przeniesiono funkcje kompozycyjne ui-framework/CoreText i CoreTextField do pakietu ui-text-compose. Możesz uwzględnić ui-text-compose w swoim projekcie. (I32042)
Funkcje
runOnIdleComposeirunOnUiThreadsą teraz funkcjami globalnymi, a nie metodami w ComposeTestRule. (Icbe8f)[Mutable]State property delegate operators moved to extensions to support Kotlin 1.4 property delegate optimizations. Aby nadal korzystać z funkcji
by state { ... }lubby mutableStateOf(...), elementy wywołujące muszą dodać importy. (I5312c)W przypadku funkcji DrawLayerModifier i drawLayer() domyślne wartości clipToBounds i clipToOutline to teraz false. (I0eb8b, b/152810850)
Zmieniono nazwę LayoutResult na MeasureResult. (Id8c68)
Wycofany komponent Center. Należy go zastąpić modyfikatorem LayoutSize.Fill + LayoutAlign.Center lub jednym z kompozycji Box lub Stack z odpowiednimi modyfikatorami (Idf5e0).
Zmieniono nazwę LayoutFlexible na LayoutWeight. Zmieniliśmy nazwę parametru „tight” na „fill”. (If4738)
Funkcja DrawVector została zmieniona z zwykłej funkcji typu „composable” na funkcję zwracającą modyfikator drawVector(), który rysuje wektor jako tło układu. (I7b8e0)
Zastąp funkcję typu „composable” Clip modyfikatorem drawClip(). DrawClipToBounds to wygodny modyfikator, którego możesz użyć, gdy chcesz przyciąć tylko do granic warstwy w kształcie prostokąta. (If28eb)
Zastąpiono funkcję typu „composable” DrawShadow modyfikatorem drawShadow(). Cienie są teraz rysowane w ramach modyfikatora warstwy. (I0317a)
Klasa androidx.compose.ViewComposer została przeniesiona do androidx.ui.node.UiComposer. Klasa androidx.compose.Emittable została usunięta. Było to zbędne w przypadku ComponentNode. androidx.compose.ViewAdapters zostało usunięte. Nie są już obsługiwane. Funkcja Compose.composeInto została wycofana. Użyj w zamian zasady
setContentlubsetViewContent. Metoda Compose.disposeComposition została wycofana. Zamiast tego użyj metodydisposena obiekcieCompositionzwróconym przezsetContent. Funkcja androidx.compose.Compose.subcomposeInto została przeniesiona do androidx.ui.core.subcomposeInto. Funkcja ComponentNode#emitInsertAt została zmieniona na ComponentNode#insertAt. Funkcja ComponentNode#emitRemoveAt została zmieniona na ComponentNode#removeAt. Funkcja ComponentNode#emitMode została zmieniona na ComponentNode#move (Idef00).Wycofany komponent Wrap. Można go zastąpić modyfikatorem LayoutAlign lub funkcją kompozycyjną Stack (Ib237f).
Umożliwiliśmy propagowanie kierunku układu z węzła układu nadrzędnego do węzłów podrzędnych. Dodano modyfikator kierunku układu. (I3d955)
Zmiana nazwy Painter.toModifier na Painter.asModifier, ponieważ nowo utworzony modyfikator ma odniesienie do oryginalnego obiektu Painter, które można udostępniać w wielu instancjach modyfikatora (I7195b).
Obsługa kierunku od prawej do lewej w modyfikatorze LayoutPadding (I9e8da)
Parametry Density i DensityScope zostały połączone w jeden interfejs. Zamiast ambientDensity() możesz teraz używać DensityAmbient.current. Zamiast withDensity(density) używaj tylko with(density) (I11cb1).
Usunięto klasę ValueHolder. Zmiana struktury klas AnimatedValue i AnimatedFloat, aby pole wartości animacji było abstrakcyjne i umożliwiało podklasom śledzenie aktualizacji wartości.
- Dodano klasy modeli dla AnimatedValue, AnimatedFloat itp.
- Dodaliśmy nowy zestaw lekkich interfejsów API @Composable do animowania przejść między wartościami.
- (I79530)
Zmiany powodujące niezgodność w interfejsie API ambients. Szczegółowe informacje znajdziesz w logu i dokumentacji
Ambient<T>(I4c7ee, b/143769776).Pozycje liczb całkowitych w liniach wyrównania zwracane przez Placeable#get(AlignmentLine) nie są już wartościami null. Jeśli wyszukiwana linia wyrównania nie istnieje, zwracana jest wartość AlignmentLine.Unspecified. (I896c5, b/158134875)
Naprawiliśmy błąd w ConstraintLayout, który powodował awarię podczas ponownego komponowania. (Ibee5a, b/158164341)
Zmieniono interfejs API lambda końcowego WithConstraints. Zamiast 2 parametrów ma teraz zakres odbiorcy, który oprócz ograniczeń i kierunku układu zapewnia właściwości minWidth, maxWidth, minHeight i maxHeight w dp (I91b9a, b/149979702).
Zmieniono nazwę LayoutModifier2 na LayoutModifier. (Id29f3)
Funkcje pomiarów wewnętrznych w kompozycjach i modyfikatorach kompozycji 2 mają teraz odbiornik IntrinsicMeasureScope, który udostępnia interfejs API zapytań o wartości wewnętrzne z niejawnym kierunkiem kompozycji. (Id9945)
LayoutDirectionAmbient został wycofany. Aby odczytać kierunek układu zdefiniowany przez ustawienia regionalne, użyj parametru localeLayoutDirection w przypadku ConfigurationAmbient (I851b1).
Dodano positionInParent i boundsInParent dla LayoutCoordinates. (Icacdd, b/152735784)
Komponent ParentData został wycofany. Możesz utworzyć modyfikator, który implementuje interfejs ParentDataModifier, lub użyć modyfikatora LayoutTag, jeśli chcesz tylko otagować elementy podrzędne układu, aby można było je rozpoznać w bloku pomiaru. (I51368, b/150953183)
Dodaj modyfikatory OnPositionedModifier i OnChildPositionedModifier, aby zastąpić funkcje kompozycyjne OnPositioned i OnChildPositioned. (I2ec8f)
Zabraniać stosowania ujemnego dopełnienia w LayoutPadding. W przypadku ujemnych przesunięć pozycji należy używać parametru LayoutOffset. (Ifb5b1)
WithConstraints got LayoutDirection parameter (I6d6f7)
Zaktualizowano flagę
ComposeFlags.COMPOSER_PARAMnatrue, co zmieni strategię generowania kodu w przypadku wtyczki Compose. W uproszczeniu powoduje to generowanie funkcji z adnotacją @Composable z dodatkowym parametrem syntetycznym, który jest przekazywany do kolejnych wywołań funkcji z adnotacją @Composable, aby środowisko wykonawcze mogło prawidłowo zarządzać wykonaniem. Jest to istotna zmiana binarna, która jednak powinna zachować zgodność na poziomie źródła we wszystkich dozwolonych przypadkach użycia funkcji Compose. (I7971c)Zmieniono LayoutCoordinates, aby providedAlignmentLines było zbiorem zamiast mapy, a LayoutCoordinates implementowało operatora get() zamiast pobierania wartości. Ułatwia to modyfikatorom modyfikowanie co najmniej jednej wartości zestawu bez tworzenia nowej kolekcji dla każdego modyfikatora. (I0245a)
W przypadku elementu LayoutCoordinates nie ma już właściwości position. Właściwość position nie ma sensu w przypadku modyfikatorów układu, obrotu ani skalowania. Zamiast tego deweloperzy powinni używać parentCoordinates i childToLocal() do obliczania przekształcenia z jednego LayoutCoordinate na inny.
W przypadku właściwości size w klasie LayoutCoordinates używany jest typ IntPxSize zamiast PxSize. Układy korzystają z rozmiarów w pikselach, więc wszystkie rozmiary układów powinny być liczbami całkowitymi, a nie wartościami zmiennoprzecinkowymi. (I9367b)
Ulepszenia interfejsu API ograniczeń (I0fd15)
Dodano TextDirection.Content (I48f36)
Dostosuj menu paska narzędzi, aby prawidłowo wyświetlać opcje kopiowania, wycinania i wklejania. (Id3955)
Dodanie pływającego paska narzędzi do zaznaczenia pola tekstowego. (Ie8b07)
Zmiana nazwy TextDirectionAlgorithm na TextDirection (I75ce8)
Zmiana nazwy TextDirection na ResolvedTextDirection (I3ff38).
Dodaj HapticFeedback do zaznaczenia TextField. (I58050)
Dodaj metody kopiowania, wycinania i wklejania do zaznaczenia TextField. (Idb70b)
Tag testowy i semantyka zostały usunięte. Zamiast tego używaj Modifier.testTag i Modifier.semantics (I15ff0, b/158841414)
Zmieniono nazwę pakietu dla Locale i LocaleList z androidx.ui.text na androidx.ui.intl (I8132c)
Zmiana w interfejsie API: nazwa
AnnotatedString(builder: Builder)została zmieniona naannotatedString(builder: Builder). (Ia6377)Zmiana w interfejsie API: nazwa
AnnotatedString.Itemzostała zmieniona naAnnotatedString.Range. (I2d44d)Dodano pasek narzędzi do operacji związanych z tekstem. (I49d53)
Dostępny jest nowy komponent LifecycleOwnerAmbient. Aktywność używana w interfejsie Compose powinna teraz rozszerzać klasę androidx.activity.ComponentActivity (lub AppCompatActivity). Metoda setContent w klasie android.app.Activity jest teraz wycofana (Idb25a, b/153141084).
Nazwa pakietu ui-android-text (androidx.text) została zastąpiona przez androidx.ui.text.platform, aby zachować zgodność z zasadami androidx. (I42711)