Tworzenie podstaw

Twórz aplikacje w Jetpack Compose za pomocą gotowych elementów składowych i rozszerzaj podstawy, aby tworzyć własne elementy systemu projektowania.
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.

GrupaOpis
compose.animationtworzyć animacje w aplikacjach Jetpack Compose, aby wzbogacać wrażenia użytkowników;
compose.compilerPrzekształcanie funkcji z adnotacją @Composable i włączanie optymalizacji za pomocą wtyczki kompilatora Kotlin.
compose.foundationTwórz aplikacje w Jetpack Compose za pomocą gotowych elementów składowych i rozszerzaj podstawy, aby tworzyć własne elementy systemu projektowania.
compose.materialTwó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.material3Twó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.runtimePodstawowe elementy modelu programowania i zarządzania stanem w Compose oraz podstawowe środowisko wykonawcze, do którego kierowany jest wtyczka kompilatora Compose.
compose.uiPodstawowe 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.

Tworzenie nowego problemu

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. TextField lub DatePicker) bezpośrednio w parametrze stylu komponentu kompozycyjnego. Umożliwia to na przykład utworzenie komponentu TextField, 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żywa TextFieldState do przenoszenia stanu. (I6b841, b/556234973)
  • Usunięto adnotację @ExperimentalFoundationApi z elementu undoState w usłudze TextFieldState. (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]s po 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, LazyListPrefetchScopeLazyListPrefetchResultScope. Działanie wstępnego pobierania należy skonfigurować za pomocą parametru LazyLayoutCacheWindow w przypadku LazyColumn lub LazyRow. LazyLayoutCacheWindow zapewnia 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.transformedPolygonShape.scaledToFit w 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 Style jest nadal dostępna, ale zostanie wycofana i usunięta. Wszelkie przypadki jego użycia należy zastąpić nowym interfejsem API opartym na tokenach CommonStyle.
  • Wprowadzone kluczowe komponenty:
    • CustomStyleCommonStyle: 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.placement oraz dynamiczne wywołania zwrotne oparte na Modifier.paddingModifier.graphicsLayer.
    • Podstawowe elementy usługi: stylePropertyOf, styleLocalOf.
    • Typy przydatne w przypadku właściwości stylu: Breadth, Fill i Shadows.
  • 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ę ExperimentalFoundationApi z interfejsów API TextFieldBuffer, które śledzą zmiany (I546a7)
  • Wprowadzono MorphPolygonShape w Compose Foundation do animacji przekształcania kształtów wielokątów oraz konwertery toPolygonShape() dla RoundedCornerShapeCutCornerShape. (Ic5a89)
  • Wprowadza PolygonShape w 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ą parametry value, onValueChange, zostały wycofane. Przejdź na przeciążenie BasicTextField, które używa TextFieldState do przenoszenia stanu. (I636bf, b/552879150)
  • Podobnie jak BasicTextField(value, onValueChange), interfejs VisualTransformation został wycofany, ponieważ jest udostępniany tylko w tej wersji TextField. Dotychczasowe przekształcenia powinny zostać przeniesione do OutputTransformation. (I636bf, b/552879150)
  • Przekazywanie wartości LazyLayoutCacheWindowLazyListPrefetchStrategy za pomocą LazyListState zostało wycofane na rzecz przekazywania wartości LazyLayoutCacheWindow do 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, dodano InputTransformation.maxLengthReject, aby odrzucać dane wejściowe przekraczające maxLength, a funkcja InputTransformation.maxLength została wycofana na rzecz maxLengthTrimmaxLengthReject. (I8d4cd)

Poprawki błędów

  • compileSdk bibliotek Compose zaktualizowanych do wersji 37.1. Wymaga to aktualizacji compileSdk we wszystkich aplikacjach i bibliotekach korzystających z Compose. (I05b0f)
  • Rozwiązaliśmy problem polegający na tym, że WindowInsetsRulers wstawki IME nie były oznaczane jako animowane podczas przewidywanego przejścia wstecz, oraz problem z imePadding, który nie był aktualizowany podczas przełączania fokusu między polami tekstowymi. (Id4562, b/537386261, b/539686000)
  • Zaktualizowano komponenty SecureTextFieldOutlinedSecureTextField (a także wycofane przeciążenia BasicSecureTextField), aby jako domyślny tryb zaciemniania używać TextObfuscationMode.System zamiast TextObfuscationMode.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ą BackgroundColor dla Modifier.background (I7eec3, b/518049030)
  • Usunęliśmy adnotację ExperimentalFlexBoxApi i zmieniliśmy nazwy właściwości opartych na pikselach w FlexConfigScope, dodając do nich sufiks Px w 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ę na false. (I110e9)
  • Dodano flagę isLazyLayoutItemAnimatorVisibleBoundsFixEnabled. Gdy ta opcja jest włączona, widoczne granice indeksu elementu są obliczane przed uruchomieniem animacji umieszczania w LazyListLazyGrid. (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.onFocusedBoundsChanged zostało całkowicie usunięte. Użycie tego modyfikatora nie powoduje teraz żadnej operacji. Przejdź na używanie symbolu FocusTargetModifierNode.getFocusedRect(), aby w razie potrzeby wysyłać zapytania o te informacje. (Ia39db, b/220030968)

Zmiany w interfejsie API

  • Przekazywanie wartości LazyLayoutCacheWindowLazyGridPrefetchStrategy za pomocą LazyGridState zostało wycofane na rzecz przekazywania wartości LazyLayoutCacheWindow do funkcji typu „composable”. (I3f31e)
  • Usuwanie flagi isSkipItemPlacementAnimationFixEnabled (I890f3, b/493183465)
  • Usuwanie flagi isClearNestedScrollCoroutineScopeFixEnabled (Iedfd7, b/506963276)
  • Zmieniono flagę isCacheWindowVisibleItemCountCheckEnabled na isCacheWindowLookaheadCheckEnabled (I2ea06)
  • TextFieldState zapisuje i przywraca teraz informacje o stylu tekstu. AnnotatedString.Annotation.Saver jest teraz publiczna, co umożliwia zapisywanie i przywracanie obiektów AnnotatedString.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ść isUsingCacheWindowInStaggeredGrids na „false”. (I1c70d)
  • FlexBox i powiązane z nim interfejsy API konfiguracji zostały przeniesione do wersji stabilnej i nie są już eksperymentalne. (I209ed, b/475491619)
  • Dodaliśmy konfigurację maxItemsInEachLine do FlexBox, 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 WindowInsets do 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ę isCacheWindowVisibleItemCountCheckEnabled na false, 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 enableNonScrollCaching została zmieniona na isNonScrollCachingEnabled (I7a54b, b/535290282)
  • Dodano @CheckResult do funkcji SemanticsNodeInteraction.isDisplayed() i isNotDisplayed(), 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 bringIntoViewSpec dla 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ę isLazyPrefetchSchedulerIdleTimeFixEnabled na wartość false. (If0594, b/458024295)
  • Wprowadzenie coroutineScopeOrNull()NestedScrollDispatcher, 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.benchmark ma teraz minSdk na 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 keysSaveableStateHolder, aby uprościć nawigację i zarządzanie stanem listy wstecznej oraz wyeliminować potrzebę zewnętrznego śledzenia key. Dostęp przez holder.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ść LocalBringIntoViewSpec na Androidzie. (Ibcb97)
  • Dodaj flagę isMultiLaneCacheWindowEnabled (I3d997)
  • Created a new SelectionState API, to be passed to SelectionContainer for observing selected text and programmatically updating selection." into androidx-main am: 929401883c am: c02871cac4 (I15bd4)
  • Dodaliśmy LocalTextFieldContentObserverRegistrationExecutor, które umożliwia delegowanie niejawnej rejestracji ContentObserver, która odbywa się w TextField, do wątku w tle. (Ib4fa6, b/505287297, b/509842675)
  • Zmieniono nazwę TextObfuscationMode.Default na System. TextObfuscationMode.RevealLastTyped działa teraz jako bezwzględne zastąpienie i zawsze ujawnia ostatni wpisany znak. Domyślny argument funkcji BasicSecureTextField został 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. ScrollView lub CoordinatorLayout) 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()Modifier.fillMaxHeight(), nie miały wpływu na elementy w FlexBox, 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 foundation za pomocą dynamicznych funkcji pobierających. (I570d7)
  • Zoptymalizowane inicjowanie obiektów towarzyszących foundation-layoutklas wartości (WindowInsetsSides itp.) 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, Source itp.) 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.Default na System. TextObfuscationMode.RevealLastTyped działa teraz jako bezwzględne zastąpienie i zawsze ujawnia ostatni wpisany znak. Domyślny argument funkcji BasicSecureTextField został zaktualizowany do wartości System. (If26d3, b/425658491, b/453647378)
  • Zaktualizowaliśmy funkcje getSpanStylesgetParagraphStyles, aby przyjmowały TextRange zamiast 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żnionych TrackedRanges. (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ążenia Modifier.gridItem(area), oddzielając intencje semantyczne od współrzędnych fizycznych. (Id9303, b/487503921)
  • Dodano operatory then i funkcje fabryczne combination dla FlexBoxConfigFlexConfig, aby umożliwić scalanie i zastępowanie konfiguracji układu. (Icfdd8, b/475491619)
  • Dodano funkcje RevealState.drag(), SwipeToRevealDragScope i udostępniono niestandardową funkcję flingBehaviorSwipeToReveal, 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

  • SelectionContainer zezwól na rozpoczęcie zaznaczania (za pomocą myszy) w pustych obszarach między elementami Text, które można zaznaczyć. (I93f69, b/502151445)
  • Udostępnienie interfejsu AndroidClipboard na potrzeby testowania, aby umożliwić symulowanie implementacji schowka (Ie4d72, b/512924975)
  • Dodaj zgodność wsteczną dla TextAttributewariantówcommitText()setComposingText(). 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 komponowalnym MediaPlayer). 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 w StyleScope do 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 ScrollIndicatorState prawidł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 textfield podczas edytowania tekstu za pomocą gestu. (I6fd98, b/490509264)
  • Dodaliśmy obsługę właściwości colorFilter do znacznika StyleScope w bibliotece Compose Foundation. (I553a0)
  • Dodano: textMotion do listy StyleScope. (Id8523, b/482301609)
  • Dodaje kolejne KeyboardType opcje, 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 contentPaddingexternalPaddingStyleScope, 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 compileSdk do 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 textfield podczas 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 listy GridTrackSize. Umożliwia to programistom wyraźne określenie minimalnych granic elastycznej ścieżki. Użycie MinMax(0.dp, 1.fr) skutecznie omija zapytania dotyczące pomiarów wewnętrznych, dzięki czemu można bezpiecznie umieszczać komponenty SubcomposeLayout, takie jak LazyColumnLazyRow, 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. Dodatkowo FlexBox nie 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ści Modifier.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)
  • ClipboardClipboardManager wysyłają teraz żądanie do usługi systemowej przy pierwszym wywołaniu metody (If0016, b/487947860).
  • Rozwiązaliśmy problem w Row z Arrangement.spacedBy w 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 sekcji ComposeFoundationFlags#isBasicTextFieldMinSizeOptimizationEnabled. (I70ade)
  • Dodano rememberUpdatedStyleState, który jest częścią eksperymentalnego interfejsu Style API. rememberUpdated należy używać podczas tworzenia instancji StyleState, gdy parametry komponentu kompozycyjnego (np. enabled) są kopiowane do stanu stylu (Idf7ff, b/485510967).
  • Zmienia nazwy właściwości PointerInputChangeHistoricalChange, 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.Pan na PointerEventType.PanStart, PointerEventType.PanMove i PointerEventType.PanEnd. Podobnie PointerEventType.Scale jest podzielona na PointerEventType.ScaleStart, PointerEventType.ScaleChangePointerEventType.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 constraints do GridConfigurationScope, aby umożliwić definiowanie ścieżek siatki na podstawie dostępnego rozmiaru. (I80a41, b/481205205, b/481205205)
  • Język DSL FlexBox używa teraz funkcji (np. grow(1f)) zamiast właściwości (np. grow = 1f) do konfiguracji w FlexBoxConfig i Modifier.flex. (I8dbae, b/475491619)

Poprawki błędów

  • Naprawiliśmy błąd, który powodował, że znak OutputTransformation był 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ż znak TextCompositionRange, 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 parametru propagateMinConstraints, podobnie jak parametr o tej samej nazwie w usłudze Box. Pozwala to przekazywać minimalne ograniczenia bezpośrednio do elementów podrzędnych elementu BasicTooltipBox bez ich łagodzenia przez element BasicTooltipBox. 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.combinedClickable jest 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.combinedClickable Zmiana 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.PanPointerEventType.Scale bę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 na Modifier.draggable, które wcześniej nie opóźniały naciśnięcia. (I53f24, b/203141462)
  • Usunięto flagę isDetectTapGesturesImmediateCoroutineDispatchEnabled i wycofano flagę DetectTapGesturesEnableNewDispatchingBehavior (I9bba3)

Poprawki błędów

  • Naprawiono IndexOutOfBoundsExceptionBasicTextField podczas używania ``OutputTransformation i usuwania tekstu. (I20ee1)
  • Zmieniono działanie GridTrackSize.Auto. Teraz może śledzić obiekty o rozmiarach od min-content do max-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 AnchoredDraggableStatetargetValue było nieprawidłowe. Gdy element targetValue znajdował 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ęcie currentValue. (I66a7a, b/476365336)
  • Wprowadzono FlexBox, konfigurowalny system układu, który jest nadzbiorem Row, Column, FlowRowFlowColumn. Obsługuje funkcje takie jak flex-grow, flex-shrink, niestandardowe zawijanie, zmiana kierunku i szczegółowa kontrola wyrównania za pomocą FlexBoxConfig i Modifier.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 tym Fixed, Percentage, Flex i opcji opartych na treści za pomocą bloku config. Podstawowa logika układu obsługuje jawne umieszczanie elementów w siatce za pomocą właściwości Modifier.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 w LookaheadScope I286ad

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 MultiModalInjectionScope są już stabilne. Obejmuje to elementy performKeyInputperformRotaryScrollInput oraz 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. Interfejs ScrollIndicatorFactory umożliwia tworzenie wskaźników przewijania przez określanie ich wyglądu i zachowania. (I89322)
  • Kontakt ComposeFoundationFlags.isTextFieldDpadNavigationEnabled został 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.isKeepInViewFocusObservationChangeEnabled został 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 elementu LazyColumn, 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żywanie Modifier.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, aby onRemeasured() oddzwonił. Jeśli nie potrzebujesz innych wywołań zwrotnych, używaj bezpośrednio tego interfejsu zamiast bardziej ogólnego interfejsu LayoutAwareModifierNode. (If6fb0)
  • Wprowadza visible Modifier, 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.isPausableCompositionInPrefetchEnabled jest 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 IndexOutOfBoundsExceptionBasicTextField podczas korzystania z OutputTransformation i 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.alignRow) 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

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.currentPageOffsetFraction z 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

  • PaddingValues obsługują teraz dodawanie i odejmowanie, co upraszcza typowe obliczenia dotyczące dopełnienia. (I327e1, b/244468479)

Poprawki błędów

  • Funkcja ComposeFoundationFlags.isPausableCompositionInPrefetchEnabled jest 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 elementu LazyColumn w 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 ScrollIndicatorState dla PagerState. (I113b7)
  • Dodano implementację usługi ScrollIndicatorState dla LazyStaggeredGridState. (I1028e)
  • Dodano implementację usługi ScrollIndicatorState dla LazyGridState. (I9e50c)
  • Dodano implementację usługi ScrollIndicatorState dla LazyListState. (I5ee29)
  • Dodano implementację usługi ScrollIndicatorState dla ScrollState. (I27f66)
  • Wprowadzenie usługi scrollIndicatorState w interfejsie ScrollableState (Idca93)
  • Flaga isWindowInsetsModifierLocalNodeImplementationEnabled został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 flagi reverseScrolling. (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 FillableData do 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.value jako usługę @FrequentlyChangingValue. (I4723d)
  • Wprowadzono LazyLayoutKeyIndexMap i 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 funkcji Modifier.align otrzymywał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 ScrollIndicatorState do reprezentowania stanu paska przewijania (I5e229)

Poprawki błędów

  • Naprawiliśmy błąd, który powodował, że użycie znaku Modifier.anchoredDraggable nie wywoływało znaku confirmValueChange. (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ści WindowInsets, jeśli nowa implementacja spowoduje zmianę zachowania. (I8e912)
  • SnapFlingBehavior umożliwia teraz przekroczenie specyfikacji animacji przyciągania podczas przyciągania. Umożliwia to np. użycie sprężystej specyfikacji jako snapAnimationSpec do 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 ComposeView bę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 interfejsu AbstractComposeView.isClearFocusOnPointerDownEnabled API. (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 w MouseInjectionScope oraz flagę do kontrolowania nowego działania o nazwie isMouseWheel1DAxisLockingEnabled (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 AnchoredDraggable za pomocą @FrequentlyChangingValue. offset, requireOffset i progress czę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.Mode o nazwie Tight. 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.cutoutPath do pobierania ścieżki wycięcia w ekranie (Ib90b1, b/279636456).
  • Flaga isWindowInsetsDefaultPassThroughEnabled został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

  • isNonSuspendingPointerInputInDraggableEnabled powinna 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 API DraggableAnchors. (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 funkcji edit, użyj funkcji TextFieldState.undoState.clearHistory(). (I12c14)
  • Dodaliśmy obsługę dwukrotnego kliknięcia, aby wybrać słowo w przypadku przeciążenia SelectionContainerBasicTextField(value, onValueChange). (Ibb06a)
  • Drobna poprawka błędu, aby zapewnić zgodność AutoboxingStateValuePropertyDetector z K1 i K2 (Ie81c1)
  • requestRectangleOnScreen żądania wysyłane przez AndroidViews są teraz prawidłowo przekazywane do Compose. Dzięki temu widoki takie jak EditText pozostają na ekranie podczas interakcji. (Ibbf4c)
  • Kolumna i wiersz prawidłowo przekazują rzeczywisty rozmiar elementu do Alignment.Vertical.align i Alignment.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 LazyLayoutCacheWindowLazyLists (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.properties wersji android.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, toggleabletriStateToggleable bez parametru Indication obsługują teraz tylko instancje IndicationNodeFactory dostarczane za pomocą LocalIndication. Ta zmiana zostanie zastosowana, gdy ponownie skompilujesz użycia tych modyfikatorów za pomocą tej wersji Compose. Nie ma to wpływu na zależności binarne ani pośrednie. Jeśli udostępniasz LocalIndication wycofaną 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ć zasady IndicationNodeFactory. Możesz też używać przeciążeń z jawnym parametrem Indication – te przeciążenia będą nadal obsługiwać instancje Indication inne niż IndicationNodeFactory, chociaż nie jest to zalecane ze względu na wydajność. (I6bcdc, b/316914333)
  • 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 scrollAnimationSpec w usłudze ContentInViewNode. Funkcja została usunięta podczas scrollAnimationSpec wycofywania, co spowodowało, że przypadki użycia przestały działać. (I1436a, b/403301605)
  • Ustabilizowano LazyLayout. (If5db4), LazyLayoutPrefetchState oraz metody planowania schedulePrecompositionschedulePrecompositionAndPremeasure. (I4362f, b/252853717) i LazyLayoutItemProvider (Icce09,b/261565751)
  • Zezwól na wywoływanie ViewTreeObserver.OnScrollChanged przez funkcję Tworzenie. To działanie jest wprowadzane pod flagą isOnScrollChangedCallbackEnabled. Wprowadziliśmy też funkcję rozszerzenia DelegatableNode dispatchOnScrollChanged. (I34b9d, b/238109286)
  • Wprowadź interfejsy API Modifier.scrollable2D, Scrollable2DState i towarzyszące do tworzenia stanu. Wprowadziliśmy też typowe funkcje rozszerzenia przewijania. (Ic61c8, b/214410040)
  • PrefetchScheduler i 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żyj TextFieldState.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ściowych TextField za pomocą przeciążenia state.
  • TextField: menu kontekstowe (menu po kliknięciu prawym przyciskiem myszy).
  • Tekst skopiowany z wielu komponentów kompozycyjnych Text w SelectionContainer bę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 state BasicTextField spowoduje, że kursor będzie widoczny po zmianie jego rozmiaru. (I0eb41, b/406187741)
  • Zmiana powodująca niezgodność: węzły modyfikatora backgroundborder implementują teraz interfejs SemanticsModifierNode. Może to spowodować dodanie nowych SemanticsNodes do 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, onSibling i innych podobnych metod do tworzenia asercji, mogą się nie powieść, jeśli między bieżącym a docelowym węzłem zostanie dodany nowy węzeł. Najlepszym sposobem na rozwiązanie tych problemów jest dodanie testTag bezpośrednio do węzła docelowego. Inne podejście to użycie mniej ścisłego dopasowania, np. onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)

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 funkcji edit, użyj funkcji TextFieldState.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 TextFields za pomocą klawiszy kierunkowych, a zamiast tego przełączały fokus na inny komponent. Dodano ComposeFoundationFlag.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.RevealLastTyped jest teraz zgodny z ustawieniem systemowym „TEXT_SHOW_PASSWORD”. (I41c0c)
  • Naprawiliśmy błąd, który powodował, że BasicTextField nieprawidłowo wyświetlał ostrzeżenie „Wklejono ze schowka”, 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 backgroundborder implementują teraz SemanticsModifierNode. Może to spowodować dodanie nowych SemanticsNodes do 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, onSibling i innych podobnych metod do tworzenia asercji, mogą się nie powieść, jeśli między bieżącym a docelowym węzłem zostanie dodany nowy węzeł. Najlepszym sposobem na rozwiązanie tych problemów jest dodanie testTag bezpośrednio do węzła docelowego. Inne podejście to użycie mniej ścisłego dopasowania, np. onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")). (I638b5)

Zmiany w interfejsie API

  • Zmień nazwę Modifier.addTextContextMenuComponents na appendTextContextMenuComponents. (I4c43f)
  • Usunięto funkcje AnnotatedOutputTransformation i przeniesiono funkcje addStyle do TextFieldBuffer. Na numer addStyle można dzwonić tylko z numeru OutputTransformation. (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 funkcji PlacementScope. Wartość WindowInsetsAnimationProperties została zmieniona na WindowInsetsAnimation, a wartość getAnimationProperties() została zmieniona na getAnimation(). (I3816f)
  • Zmieniono InsetsRulers, aby był w kodzie wspólnym o nazwie WindowInsetsRulers. Uprościliśmy interfejs API, aby wszystkie wstawki miały wartość WindowInsetsRulers. Wyodrębniono właściwości animacji inne niż linijki do klasy AnimationProperties. Usługa WindowInsetsRulers.innermostOf() może służyć do łączenia wielu WindowInsetsRulers. (I2f0c6, b/415012444)

Poprawki błędów

  • Ponownie dodaj użycie scrollAnimationSpec w usłudze ContentInViewNode. Funkcja została usunięta podczas scrollAnimationSpec wycofywania, 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

  • PrefetchScheduler i dostosowywanie zostały wycofane na rzecz wewnętrznej implementacji, która wykonuje wszystkie czynności automatycznie. (I3a9a6, b/420551535)
  • Zaktualizowaliśmy Scrollable2DState, aby w metodzie canScroll używać przesunięcia zamiast kąta. (I28694, b/417268474)
  • Tekst addAnnotation w pliku AnnotatedOutputTransformation został zastąpiony tekstem addStyle. (I91c6f, b/417991824)
  • Ustabilizowano LazyLayout. (If5db4)
  • Ustabilizowano pusty konstruktor dla LazyLayoutPrefetchState oraz jego metody planowania schedulePrecompositionschedulePrecompositionAndPremeasure. (I4362f, b/252853717)
  • Wprowadziliśmy symbol ProcessTextKey na 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.addTextContextMenuComponents i Modifier.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:
    • TextContextMenuProvider
    • TextContextMenuDataProvider
    • TextContextMenuData
    • TextContextMenuComponent
    • LocalTextContextMenuDropdownProvider
    • LocalTextContextMenuToolbarProvider (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ść compositionLocal LocalTextClassifierCoroutineContext, której można użyć do określenia CoroutineContext, w którym uruchamiane jest zadanie TextClassification. (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 do TextField przed renderowaniem. (Ibc6f0, b/389978748)
  • Wprowadzenie LazyLayoutMeasurePolicy i ustabilizowanie LazyLayoutMeasureScope. (I8c5df, b/252853717)
  • BasicSecureTextField teraz podnosi ScrollState swojego wewnętrznego BasicTextField. (I6e576)
  • Wprowadzono modyfikatory Modifier.onFirstVisibleModifier.onVisibilityChanged, które są modyfikatorami wysokiego poziomu opartymi na modyfikatorze Modifier.onLayoutRectChanged. Te modyfikatory zostały opracowane specjalnie z myślą o obsłudze wielu typowych wymagań aplikacji, takich jak rejestrowanie wyświetleń czy automatyczne odtwarzanie filmów. Zostały one zaprojektowane z uwzględnieniem wydajności, dzięki czemu można ich używać w krytycznych scenariuszach opartych na listach bez ryzyka pogorszenia wydajności przewijania. Oprócz tych interfejsów API modyfikatorów dodaliśmy dodatkowe interfejsy API RelativeLayoutBounds, 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, Scrollable2DState i 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()fromColorLong(). (I36899)

Poprawki błędów

  • Tekst skopiowany z wielu komponentów kompozycyjnych Text w SelectionContainer będzie teraz zawierać separator wierszy \n mię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 VelocityTrackerDragGestureNode. Można to kontrolować za pomocą nowej flagi isOffsetPositionBeforeAddingToVelocityTrackerEnabled. (Ic7992, b/292556787, b/236451818)
  • Udostępnianie await[Vertical/Horizontal]PointerSlopOrCancellation publicznie (I6968b, b/298903681)
  • AbstractComposeView.consumeWindowInsets ma teraz domyślnie wartość „false”. WindowInsets zostanie 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 aktualizacji WindowInsets. Deweloperzy mogą zrezygnować z aktualizacji, zmieniając wartość eksperymentalnego parametru ComposeFoundationLayout.isWindowInsetsDefaultPassThroughEnabled na „true” lub, co jest preferowane, ustawiając wartość parametru AbstractComposeView.consumeWindowInsets na „true” we wszystkich instancjach widoku Compose. (I6fa0a, b/411868840)

Wkład zewnętrzny

  • Naprawiono awarię komponentu Pager w przypadku bardzo dużych wartości 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.properties wersji android.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, toggleabletriStateToggleable bez parametru Indication obsługują teraz tylko instancje IndicationNodeFactory dostarczane za pomocą LocalIndication. Ta zmiana zostanie zastosowana, gdy ponownie skompilujesz użycia tych modyfikatorów za pomocą tej wersji Compose. Nie ma to wpływu na zależności binarne ani pośrednie. Jeśli udostępniasz LocalIndication wycofaną 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ć zasady IndicationNodeFactory. Możesz też używać przeciążeń z jawnym parametrem Indication – te przeciążenia będą nadal obsługiwać instancje Indication inne niż IndicationNodeFactory, chociaż nie jest to zalecane ze względu na wydajność. (I6bcdc, b/316914333)

Zmiany w interfejsie API

  • Wprowadzenie interfejsu API do tworzenia niestandardowych list punktowanych za pomocą AnnotatedString (I1d066, b/383269496, b/139326648)
  • Zezwól na wywoływanie ViewTreeObserver.OnScrollChanged przez funkcję Tworzenie. To działanie jest wprowadzane pod flagą isOnScrollChangedCallbackEnabled. Wprowadziliśmy też funkcję rozszerzenia DelegatableNode 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 zasady rememberTextFieldState. (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ń schedulePrefetch w strategiach siatek i list, aby dostosować je do możliwości LazyListPrefetchState w zakresie podawania informacji o rozmiarze i indeksie. (Iad80c)
  • Zmiana powodująca niezgodność: przeciążenia clickable, combinedClickable, selectable, toggleabletriStateToggleable bez parametru Indication obsługują teraz tylko instancje IndicationNodeFactory dostarczane za pomocą LocalIndication. Ta zmiana zostanie zastosowana, gdy ponownie skompilujesz użycia tych modyfikatorów za pomocą tej wersji Compose. Nie ma to wpływu na zależności binarne ani pośrednie. Jeśli udostępniasz LocalIndication wycofaną 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ć zasady IndicationNodeFactory. Możesz też używać przeciążeń z jawnym parametrem Indication – te przeciążenia będą nadal obsługiwać instancje Indication inne niż IndicationNodeFactory, chociaż nie jest to zalecane ze względu na wydajność. (I6bcdc, b/316914333)
  • Wprowadzenie flagi do kontrolowania automatycznego zagnieżdżonego wstępnego pobierania: isAutomaticNestedPrefetchEnabled (I8d448)
  • Wprowadź przeciążenie dla LazyGridStaterememberLazyGridState, które zajmuje LazyLayoutCacheWindow. (I51151)
  • Dodaje linijki do wcięć okna. Dodaje DerivedRuler, aby umożliwić obliczanie linijki na podstawie innej linijki. Modyfikuje PlacmentScope, aby wdrożyć gęstość. (I658bc, b/359260964)
  • Dodano funkcję fabryczną WindowInsets() bez argumentów, która ułatwia tworzenie pustych obiektów WindowInsets. (I65f62, b/395311689)
  • Dodano PaddingValues.Zero dla pustego elementu PaddingValues. (If193e, b/386255688)

Poprawki błędów

  • Przeciążenie state BasicTextField spowoduje, że kursor będzie widoczny po zmianie jego rozmiaru. (I0eb41, b/406187741)
  • Zaktualizowano interfejsy API onVisibleItemsUpdated w usługach LazyListPrefetchStrategyLazyGridPrefetchStrategy, 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 BasicTextTextAutoSize, w którym użycie funkcji TextOverflow.Ellipsize powodowało wyświetlanie tekstu o mniejszym rozmiarze niż optymalny. (I1e1d8, b/396582066)
  • Naprawiliśmy błąd w BasicTextField, który powodował różne awarie, gdy TextFieldDecorator pomijał wywołanie innerTextField. (I2638c), b/308398612
  • Naprawiliśmy błąd w TextField, który powodował, że po zmianie instancji TextFieldState pasek 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ść textAlign był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 API TextAutoSize, 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ą LayoutModifierNode nie 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 zasady SemanticsNodeInteraction.fetchSemanticsNode().id. (Ie397a)
  • Przepisz interfejs requestAutofill API, aby istniał poza menedżerem autouzupełniania. (Id1929)
  • ContextualFlowRowContextualFlowColumn zostały oznaczone jako wycofane. Ten eksperymentalny komponent został wprowadzony w wersji 1.7 i nie został jeszcze ustabilizowany, a jego wdrożenie uznano za niepożądane. W przyszłości może zostać udostępniony komponent rozwiązujący problemy, do których ten komponent był przeznaczony.
    • FlowRowFlowColumn mają eksperymentalne przeciążenia wprowadzone w wersji 1.7, które zawierają parametr overflow. 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 ContextualFlowRow można zrealizować za pomocą FlowRow, ale zdajemy sobie sprawę, że nie zawsze jest to możliwe. ContextualFlowRow można w pełni wdrożyć w przestrzeni użytkownika. Możesz skopiować jego implementację i w razie potrzeby ją dostosować. W przyszłości chcemy rozwiązywać te problemy w inny sposób. (Ibafec)

Poprawki błędów

  • Poprawiono układ tekstu z wielokropkiem, który czasami był nieprawidłowo tłumaczony podczas animacji. Więcej informacji znajdziesz w b/389707025 (Ie55b1, b/389707025).
  • Naprawiliśmy błąd w funkcji BasicText, gdy wartości TextAutoSizemaxLines był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 parametru minLines (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 AutoSize na TextAutoSize i opublikowaliśmy interfejsy API, które umożliwiają tworzenie niestandardowych implementacji TextAutoSize. Przykład implementacji automatycznego rozmiaru tekstu niestandardowego znajdziesz w TextAutoSizeSample. (I85756)
  • Przeniesiono flagę funkcji DetectTapGesturesEnableNewDispatchingBehavior do ComposeFoundationFlags i zmieniono jej nazwę na isDetectTapGesturesImmediateCoroutineDispatchEnabled. Stara flaga została wycofana i będzie teraz przekazywać wywołania do interfejsu ComposeFoundationFlags.isDetectTapGesturesImmediateCoroutineDispatchEnabled. (I62932)

Poprawki błędów

  • Domyślnie włączona DetectTapGesturesEnableNewDispatchingBehavior. Interfejsy API TapGestureDetector domyś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 BasicTooltip w bibliotece foundation i BasicTooltip/Tooltip w 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 elementu graphicsLayerBasicText. 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ść LocalAutofillHighlightColor composition local musi mieć typ Color. (I0e05b)
  • Zmieniono nazwę OverscrollEffect#withoutDrawing na OverscrollEffect#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 BringIntoViewResponderModifierNode do 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 confirmValueChangeAnchoredDraggableState. 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ć kodu OverscrollEffect. (Ia717f)
  • Zmienia menedżera autouzupełniania na interfejs. (I84914, b/376080755)
  • Dodaje interfejsy API OverscrollEffect#withoutDrawingOverscrollEffect#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 OverscrollConfigurationLocalOverscrollConfiguration oraz dodaje rememberPlatformOverscrollFactory, aby utworzyć instancję domyślnej implementacji przewijania poza krawędź lub dostosować jej parametry. Aby wyłączyć przewijanie poza krawędź, zamiast LocalOverscrollConfiguration provides null użyj LocalOverscrollFactory provides null. Aby zmienić kolor lub wypełnienie efektu poświaty, zamiast LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding) użyj LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding). (Ie71f9, b/255554340, b/234451516)
  • Zmieniliśmy właściwość effectModifierOverscrollEffect na node: 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żyj enableAccessibilityChecks(). (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 OverscrollFactoryLocalOverscrollFactory, które umożliwiają konfigurowanie przewijania poza zakres w hierarchii. Wartość podana w LocalOverscrollFactory będzie domyślnie używana do tworzenia OverscrollEffect. Aby utworzyć i zapamiętać efekt z bieżącej fabryki, użyj rememberOverscrollEffect(). (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żywaj rememberOverscrollEffect. Spowoduje to utworzenie instancji bieżącej implementacji przewijania poza krawędź, która jest dostępna w LocalOverscrollFactory. (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średnio Modifier.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, HorizontalPagerVerticalPager z obsługą określania niestandardowego parametru OverscrollEffect. Podany element OverscrollEffect będzie otrzymywać zdarzenia i będzie renderowany w granicach tych komponentów. Pamiętaj, że dwukrotne narysowanie tego samego kształtu OverscrollEffect nie jest obsługiwane, więc nie możesz narysować tego samego kształtu OverscrollEffect dostarczonego do jednego z tych komponentów oddzielnie za pomocą kształtu Modifier.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#onDensityChangeDelegatableNode#onLayoutDirectionChange, aby umożliwić aktualizowanie stanu węzła po jego zmianie. (I04f3e, b/340662451)
  • Funkcja Paragraph i ParagraphIntrinsics przyjmuje teraz listę wszystkich adnotacji zastosowanych do AnnotatedString, 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.flingBehavior nie były prawidłowo uwzględniane. (Ifdf0d, b/367660226)
  • Wprowadziliśmy poprawkę dotyczącą zagnieżdżonych elementów z możliwością przewijania, które są usuwane z drzewa węzłów podczas trwającego przewijania. Teraz te węzły anulują szybkie przesunięcie i prawidłowo wysyłają zdarzenie onPostFling z 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ść OverscrollEffects przekazywana do Modifier.anchoredDraggable otrzymywał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 graphicsLayer z funkcji kompozycyjnej BasicText. 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 z insetsPadding nawet wtedy, gdy rodzice dopasowali je bez consumeWindowInsets(). (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.StartEllipsisTextOverflow.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 BasicTextField z 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ę IndexOutOfBound z 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 AndroidEmbeddedExternalSurface nie resetował się prawidłowo i zawieszał się podczas ponownego użycia na liście leniwej.

Wersja 1.7.5

30 października 2024 r.

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 ReusableContentHost u 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 -desktop artefaktów, a dodano -jvmStubs-linuxx64Stubs artefakty. Ż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.scrollableModifier.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) interfejsu rememberUpdatedInstance API. Informacje o migracji znajdziesz na stronie developer.android.com.
    • clickable / combinedClickable / selectable / toggleable akceptuje teraz parametr MutableInteractionSource, który może mieć wartość null. Jeśli wartość jest pusta, a podany element Indication to IndicationNodeFactory, element Indication można utworzyć tylko w razie potrzeby, co zwiększa wydajność. Jeśli nie przenosisz i nie używasz elementu MutableInteractionSource, zalecamy przekazywanie wartości null zamiast remember { MutableInteractionSource() }.
    • Środowisko wykonawcze Indication#rememberUpdatedInstance zostało wycofane. Powoduje to duże, nieuniknione obniżenie wydajności i uniemożliwia inne optymalizacje. Zamiast tego używaj nowego interfejsu IndicationNodeFactory API.
  • BasicTextField za pomocą TextFieldState jest już stabilne i zalecamy wszystkim witrynom wywołań rozpoczęcie migracji z BasicTextField(value, onValueChange) na BasicTextField(TextFieldState).
  • Środowisko wykonawcze ClickableText zostało wycofane. Aby dodać do tekstu linki, w pliku AnnotatedString użyj znaku BasicText z nową adnotacją LinkAnnotation. LinkAnnotation umożliwia dostosowywanie stylu na podstawie stanu linku (np. zaznaczony, najechany).
  • Przedstawiamy ContextualFlowRowEnhanced FlowRow/ColumnMaxLinesOverflow. Z przyjemnością informujemy o ulepszeniach eksperymentalnych funkcji FlowRowFlowColumn, które teraz obsługują maxLines i przepełnienie, oraz o wprowadzeniu funkcji ContextualFlowRowContextualFlowColumn. Ta aktualizacja ma na celu zapewnienie komponentów o optymalnej wydajności. Komponent ContextualFlow* 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 komponenty FlowRowFlowColumn – w przypadku małej liczby produktów (poniżej 100). Ważne: aby zachować dotychczasowe działanie w FlowRow lub FlowColumn, gdzie wszystkie elementy są komponowane niezależnie od tego, czy mieszczą się w maksymalnej wartości osi poprzecznej, ustaw podczas inicjowania wartość przepełnienia na FlowRowOverflow.Visible lub FlowColumnOverflow.Visible. Przykłady działania tych nowych funkcji znajdziesz w sekcjach ContextualFlowRowSampleFlowRowSample. (Ib9135, b/293577082)
  • Dodaliśmy obsługę animacji pojawiania się i znikania elementów w LazyColumn i LazyRow. Wcześniej można było dodać modyfikator Modifier.animateItemPlacement(), aby obsługiwać animacje umieszczania (zmiany kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator Modifier.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 NestedScroll Drag and Fling są zastępowane przez UserInputSideEffect, 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, performTextInputperformTextClearance będą teraz zgłaszać błędy asercji, gdy zostaną wywołane w przypadku TextFields tylko do odczytu. (I4ae8f)
  • Naprawiliśmy błąd wizualny w hiperlinkach. (I23311)
  • Rozwiązanie problemu polegającego na tym, że modyfikator contentReceiver nie działał z niektórymi edytorami IME.
  • Generowanie prędkości: zapobieganie propagacji wartości NaN w interfejsie Compose i bibliotece Foundation.

Wersja 1.7.0-beta06

24 lipca 2024 r.

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 SnapFlingBehavior i 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 dla LazyLists. Obejmuje to obsługę wstępnego pobierania elementów w zagnieżdżonych elementach LazyGrids. Podobnie jak w przypadku LazyListPrefetchStrategy domyślna implementacja polega na wstępnym pobieraniu pierwszych 2 zagnieżdżonych elementów każdej siatki, ale można to skonfigurować za pomocą nowych interfejsów API LazyGridPrefetchStrategy(nestedPrefetchItemCount)LazyListPrefetchStrategy#onNestedPrefetch. (I591c4)
  • Zmieniliśmy nazwę SemanticsProperties.Editable na IsEditable i zmieniliśmy wartość SemanticsPropertyReceiver.editable na isEditable. Właściwość jest teraz wartością logiczną i zawsze jest określana przez pola tekstowe. (I8acd8)
  • Przeniesiono wartości domyślne basicMarquee do obiektu MarqueeDefaults. (I12ff6)
  • Zmieniono nazwę parametru basicMarquee delayMillis na repeatDelayMillis. (I12ff6)
  • Aktualizacja interfejsu API do stylizowania linków: przeniesiono TextLinkStyles do TextStyle i usunięto TextDefaults z materiału (I5477b)

Poprawki błędów

  • Nazwa LayoutCoordinates.introducesFrameOfReference została zmieniona na LayoutCoordinates.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 TextLinkStyles z zajęć TextStyle. Zamiast tego TextLinkStyles jest częścią konstruktora LinkAnntation i metody AnnotatedString.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 WindowInsetsPadding ze 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.shouldShowKeyboardOnFocus została ponownie dodana jako wycofana i ukryta ze względu na zgodność binarną. (I15cfe)
  • Modifier.anchoredDraggable domyś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.hasEqualsAnnotations to teraz hasEqualAnnotations. (I685c0)
  • Zaktualizowano interfejs API do pobierania linków w tekście w motywie Material. W szczególności usunęliśmy metody z TextDefaults do tworzenia tematycznych LinkAnnotations i 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 onDragStartedonDragStopped wywoł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ść contentPadding była większa niż ograniczenia przychodzące. Pager wymusza teraz, aby wartości ujemne zwracane przez PageSize był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 BasicTextFieldSelectionContainer z opcjami wycinania, kopiowania, wklejania i zaznaczania wszystkich elementów. (If8c93, Ia2b49, I6f268)

Zmiany w interfejsie API

  • Żądania wstępnego pobierania LazyLayout moż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ę isPositionedByParentWithDirectManipulation na introducesFrameOfReference. Pamiętaj, że teraz ma odwrotny efekt, co oznacza, że domyślnie większość LayoutCoordinates wprowadza ramkę odniesienia, a właściwość ma wartość fałsz tylko wtedy, gdy jest poddawana bezpośredniej manipulacji. Aby wysłać zapytanie o pozycję tylko w przypadku tych, które wprowadzają ramę odniesienia, użyj znaku positionInLocalFrameOfReference(...). lub positionInLocalLookaheadFrameOfReferenceLookaheadScope. (Ifc5f7)
  • Zmieniono nazwę onClicked na onClickLinkInteractionListener (Iaa35c)
  • Zmień funkcję lambda działania w przypadku getScrollViewportLength zgodnie z opinią rady ds. API. (Ibc74a)
  • Zmieniliśmy nazwy interfejsów API do przekazywania pisma odręcznego rysikiem. (Ica45f, b/327271923)
  • Zmień nazwę TextInclusionStrategy.isInside na isIncluded. Ustaw zwracany typ Paragraph/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ę currentValue AnchoredDraggableState podczas zbliżania się do granic stanu. (Iea30b, b/333846848)

Wkład zewnętrzny

  • Nazwa PrefetchExecutor -> PrefetchScheduler została zmieniona, aby lepiej odzwierciedlać zakres obowiązków. (Ib9154)
  • Dodano obsługę wstępnego pobierania elementów w zagnieżdżonych komponentach LazyLists (np. w komponencie LazyColumn, który renderuje zagnieżdżony komponent LazyRows). Oczekuje się, że ta zmiana zmniejszy liczbę pominiętych klatek podczas przewijania tych komponentów LazyLists. Domyślnie implementacja pobiera wstępnie pierwsze 2 zagnieżdżone elementy, ale to zachowanie można kontrolować za pomocą nowych interfejsów API LazyLayoutPrefetchStrategy(nestedPrefetchItemCount)LazyListPrefetchStrategy#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 obiektu LinkAnnotation i analizowania ciągu znaków z tagami HTML, które stosują MaterialTheme do linków. (I98532, b/139312671)
  • Dodaliśmy obsługę animacji pojawiania się i znikania elementów wLazyVerticalGrid iLazyHorizontalGrid. Wcześniej można było dodać modyfikator Modifier.animateItemPlacement(), aby obsługiwać animacje umieszczania (zmiany kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwie Modifier.animateItem(), który umożliwia obsługę wszystkich 3 rodzajów animacji: pojawiania się (zanikanie), znikania (zanikanie) i zmiany kolejności. (Ib7d12, b/330510929)
  • Dodaliśmy obsługę animacji pojawiania się i znikania elementów w LazyVerticalStaggeredGrid i LazyHorizontalStaggeredGrid. Wcześniej można było dodać modyfikator Modifier.animateItemPlacement(), aby obsługiwać animacje umieszczania (zmiany kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator Modifier.animateItem(), który umożliwia obsługę wszystkich 3 rodzajów animacji: pojawiania się (zanikanie), znikania (zanikanie) i zmiany kolejności. (I69bc9, b/330511290)

Zmiany w interfejsie API

  • Dodaje ContextMenuColors i powiązany z nim LocalContextMenuTheme ProvidableCompositionLocal. Kolory menu kontekstowego w polach tekstowych i tekście, który można zaznaczyć, można modyfikować, podając lokalizację kompozycji. (Ifa154)
  • Linki tekstowe mają teraz opcję stylu stanu naciśnięcia oprócz normalnego stylu, stylu po najechaniu kursorem i stylu po zaznaczeniu. (I5f864, b/139312671)
  • Wprowadź ViewConfiguration.HandwritingGestureLineMargin dla gestów pisma odręcznego. Obsługa gestu pisania odręcznego w przypadku języka BasicTextField. (Ie6e13, b/325660505)
  • Usunęliśmy DelegatableNode.scrollIntoView w wersji 1.7, ponieważ nie mieliśmy czasu na ustabilizowanie pozostałej części powiązanego interfejsu API. Ta funkcja zostanie ponownie wprowadzona w wersji 1.8 (I6cf61, b/333421581, b/332900232).
  • Podczas wysyłania zapytań o współrzędne układu możesz teraz używać argumentu excludeDirectManipulationOffset, aby wykluczyć przesunięcie ustawione przez układy nadrzędne, które umieściły elementy podrzędne za pomocą argumentu Placeable.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 na approachLayout są 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 requestScrollToItem za LazyStaggeredGrid. 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 funkcja requestScrollToItem. (I63983)
  • Przedstawiamy requestScrollToPage w 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 funkcja requestScrollToPage. (Ic4213)
  • Wprowadzono requestScrollToItem w przypadku LazyGrids. 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 funkcja requestScrollToItem. (I0a7a0)
  • ClickableText jest oznaczony jako wycofany. Aby dodać linki do tekstu, utwórz AnnotatedStringLinkAnnotation odpowiadającym linkowi i przekaż ten element AnnotatedString do funkcji kompozycyjnej Text (I34d4b, b/323346994).
  • Metoda UrlAnnotation została wycofana. Zamiast niej używaj metody LinkAnnotation.Url. Jeśli używasz motywu Material Design, użyj obiektu TextDefaults, aby utworzyć adnotację z zastosowanym motywem Material Design (I8d180, b/323346545).
  • String.parseAsHtml Nazwa zmieniona na AnnotatedString.Companion.fromHtml (I43dcd)
  • Dodano argumenty stylu (linkStyle, focusedLinkStyle, hoveredLinkStyle) i funkcję nasłuchiwania interakcji z linkiem do metody parseAsHtml. Podczas analizowania ciągu znaków z tagami HTML z tagami <a> metoda utworzy obiekt LinkAnnotation.Url dla każdego takiego tagu i przekaże obiekty stylu oraz odbiornik interakcji z linkiem do każdej adnotacji. (I7c977)
  • LinkAnnotation przyjmuje teraz argumenty stylizacji opartej na stanie i wartość LinkInteractionListener. Dodaj tę adnotację do AnnotatedString, aby uzyskać hiperlink. Przekazując wartości focusedState lub hoveredState, 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)
  • LazyColumn będzie teraz prawidłowo renderować przyklejone nagłówki na długich zrzutach ekranu. (I8d239, b/329296635)
  • Stabilizacja większości pozostałych eksperymentalnych interfejsów API wprowadzonych w nowej wersji BasicTextField. (I714e2)
  • Dodano parametr textObfuscationCharacter do BasicSecureTextField, który określa, jakiego znaku używać podczas zaciemniania treści. (I0588b)
  • Źródła NestedScroll Drag i Fling zostaną zastąpione źródłami UserInputSideEffect, 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 TextFieldCharSequence został usunięty. TextFieldBuffer.originalValues zastąpiono wartościami TextFieldBuffer.originalTextTextFieldBuffer.originalSelection. (I2c7d6)
  • ImeOptions.hintLocales nie może już przyjmować wartości null. Jeśli chcesz przekazać pustą listę ustawień regionalnych, użyj LocaleList.Empty. (Ic5bc4)
  • Zmieniono nazwę getOffsetFractionForPage na getOffsetDistanceInPages. (Ia05e2)

Poprawki błędów

  • Gdy InputTransformations są połączone z next, ich KeyboardOptions są teraz prawidłowo scalane według poszczególnych opcji za pomocą nowej metody KeyboardOptions.merge. (Ie5304, b/295951492)
  • AnchoredDraggableState targetValue nie bierze już pod uwagę progów pozycji. Ma teraz domyślny próg 50%, co oznacza, że targetValue zmienia 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 LazyColumn i LazyRow. Wcześniej można było dodać modyfikator Modifier.animateItemPlacement(), aby obsługiwać animacje umieszczania (zmiany kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwie Modifier.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ę parseAsHtml dla ciągów ze stylami: umożliwia ona przekształcenie ciągu oznaczonego tagami HTML w AnnotatedString. 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_LongScreenshotsEnabled na wartość true. Ten tag zostanie usunięty przed wersją beta 1.7. (I2b055, b/329296471)
  • Wprowadzenie nowego interfejsu GraphicsLayer API, który zapewnia większą elastyczność w zakresie umieszczania i renderowania instancji GraphicsLayer oraz obsługuje wbudowane funkcje renderowania bez konieczności koordynowania z implementacjami funkcji Composable w celu określenia instancji modyfikatora GraphicsLayer.

Zmiany w interfejsie API

  • Wszystkie parametry KeyboardOptions mają teraz domyślnie wartość nieokreśloną. Dodaliśmy metodę KeyboardOptions.merge.
  • Zmieniliśmy nazwę atrybutu KeyboardOptions.autoCorrect na autoCorrectEnabled i umożliwiliśmy przypisywanie mu wartości null, która oznacza, że nie określono żadnej wartości. (Ia8ba0, b/295951492)
  • Zmieniono nazwę outOfBoundsPageCount na beyondViewportPageCount. (I129c6)
  • Wartość fun ClipEntry.getMetadata() została zmieniona na val ClipEntry.clipMetadata. (I50155)
  • Kontakt TextFieldState.valueAsFlow() został usunięty. Preferuj używanie snapshotFlow { state.text } lub snapshotFlow { TextFieldCharSequence(state.text, state.selection) } (I7d629).
  • Zmieniliśmy kolejność parametrów InputTransformation.transformInput. Usunięto originalValue: TextFieldCharSequence. Zamiast tego TextFieldBuffer ma teraz tę wartość o tej samej nazwie. Usunęliśmy też parametr valueWithChanges: TextFieldBuffer. TextFieldBuffer jest teraz zakresem odbiorcy funkcji. (I919cc)
  • Warianty BasicTextField(state)BasicSecureTextField używają teraz KeyboardActionHandler zamiast KeyboardActions do przetwarzania działań wykonywanych przez klawiaturę ekranową. (I58dda)
  • Interfejsy API delegowania pisma odręcznego rysikiem, które obsługują pisanie odręczne rysikiem w „fałszywych” polach do wprowadzania tekstu. (I9c09c, b/327271923)
  • Zmieniono nazwę KeyboardOptions.shouldShowKeyboardOnFocus na showKeyboardOnFocus. (Ib4b7a, b/295951492)
  • Usunięto parametr hintMediaTypes z funkcji Modifier.contentReceiver. Zachęcaliśmy już deweloperów do sprawdzania typu multimediów w otrzymanym żądaniu TransferableContent, ponieważ może on być niezgodny ze skonfigurowanym żądaniem hintMediaTypes. (I82f99)
  • Zmieniono kolejność parametrów funkcji BasicSecureTextField. Usunięto parametry keyboardTypeimeAction na rzecz pełnej klasy KeyboardOptions, zachowując te same wartości domyślne odpowiednie dla BasicSecureTextField. Usunęliśmy też parametr scrollState. (Ibbfa9)
  • Typ TextFieldState.text został zmieniony z TextFieldCharSequence na CharSequence. Dlatego dodaliśmy TextFieldState.selection: TextRangeTextFieldState.composition: TextRange?, aby odczytywać bieżące wartości wyboru i kompozycji bezpośrednio z obiektu stanu.
  • Kontakt TextFieldState.forEachTextValue został usunięty. (Idb2a2)
  • Usunięto funkcje ClipboardManager.getClipMetadataClipboardManager.hasClip. Aby odczytać metadane bieżącego wpisu klipu, użyj clipEntry.getMetadata(). Sprawdź też wynik ClipboardManager.getClip, aby dowiedzieć się, czy schowek zawiera bieżący klip. (I50498)
  • ClipboardManager.setClip akceptuje teraz wartość null, aby można było wyczyścić schowek. (I7d2e9)
  • ReceiveContentListener jest przekształcana w interfejs funkcji. Usunięto też przeciążenie Modifier.receiveContent, które przyjmuje lambdę, ponieważ ReceiveContentListener jest teraz interfejsem funkcji.
  • Nazwa Modifier.receiveContent została zmieniona na Modifier.contentReceiver. (I1e6af)
  • Zmieniono nazwę TransferableContent.consumeEach na TransferableContent.consume. (I1e462)
  • rememberTextFieldState został 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.Node funkcja Modifier.dragAndDropTarget() mogła odwoływać się do nieaktualnych danych. (I05bb1)
  • Cofnięto niedawną zmianę umowy, w której połączenia AnchoredDraggableState#anchoredDrag były zamykane po zakończeniu operacji anchoredDrag. (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ę LocalTextLinkStyle do lokalnego stylizowania hiperlinków. (Iebfa7)
  • Usunięto eksperymentalne zastąpienie BasicText z argumentem onLinkClicked. 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 TextFieldStateTextFieldBuffer. Usunięto też sufiksy inChars z pozostałych interfejsów API związanych z wyborem i kompozycją. (Ief7ce)
  • currentValue AnchoredDraggable będzie teraz aktualizować się po przejściu przez punkt zakotwiczenia. Użyj settledValue, 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, TextFieldDecorator są 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 wykonawcze PlatformTextInputTestOverride zostało wycofane. (I862ed, b/322680547)
  • Podzielenie funkcji restrictedConstraints() na 2 metody: fitPrioritizingWidth()fitPrioritizingHeight() (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 hintLocales do KeyboardOptions, aby umożliwić TextFields podpowiadanie edytorom IME konkretnych ustawień regionalnych w celu wstępnego ustawienia preferowanego języka. (Id18c2)
  • Usunięto eksperymentalne przeciążenia funkcji BasicTextField2BasicSecureTextField, które przyjmowały parametry value: StringonValueChange: () -> String. (I568b4)
  • Dodaj opcjonalną funkcję applySemantics do InputTransformation, aby wpłynąć na semantykę elementu BasicTextField2, do którego jest ona stosowana. (I74a2f, b/170648072)
  • W tym CL dodajemy GetScrollViewportLength dział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 BasicTextField2 została zmieniona na BasicTextField. (Ie5713)
  • FocusRequester.createRefs jest teraz stabilna (I4d92c, b/261436820)
  • Wprowadziliśmy DelegatableNode.scrollIntoView(), aby umożliwić węzłom modyfikatorów bezpośrednie wysyłanie scrollIntoView. (I2b3b7, b/299939840)
  • Wprowadzono DelegatableNode.requireView(), aby umożliwić węzłom modyfikatorów uzyskiwanie bieżącego View Androida bez odczytywania lokalnej kompozycji. (I40768)
  • Wprowadziliśmy informacje o układzie kontekstowym w zakresie wiersza przepływu kontekstowego i zakresie kolumny przepływu kontekstowego, w tym indeks wiersza, pozycję i ograniczenia maksymalnej szerokości i wysokości, aby zachować określoną pozycję. Elementy przekraczające maksymalną szerokość lub wysokość mogą zostać przeniesione do następnego wiersza lub pominięte w zależności od ustawień przepełnienia. (Id13f8, b/292114798)

Poprawki błędów

  • Usunęliśmy błąd, który w określonych warunkach powodował awarię podczas przełączania atrybutów enabled lub readOnly elementu TextField. (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żącego Modifier.Node LayoutCoordinates bez konieczności zastępowania onPlaced i samodzielnego przechowywania współrzędnych we właściwości. (Ia8657)
  • Wprowadziliśmy DelegatableNode.currentLayoutCoordinates jako sposób na uzyskanie bieżącego Modifier.Node LayoutCoordinates bez konieczności zastępowania onPlaced i samodzielnego przechowywania współrzędnych we właściwości. (Iaebaa)
  • Optymalizacje skuteczności w DraggableAnchors używane przez AnchoredDraggable. (I89cff)
  • Interfejs API BasicTextField2 i powiązane interfejsy API w pakiecie androidx.compose.foundation.text2 zostaną przeniesione do pakietu androidx.compose.foundation.text. (I9f635)
  • BasicTextField2 nie akceptuje już parametru CodepointTransformation. Użyj BasicSecureTextField lub OutputTransformation. (Id34ff)
  • Dodano metodę porównywania tylko adnotacji dwóch AnnotatedStrings. (I32659)
  • Przedstawiamy ContextualFlowRow i ulepszone FlowRow/ColumnMaxLinesOverflow. Z przyjemnością informujemy o ulepszeniach eksperymentalnych funkcji FlowRowFlowColumn, które teraz obsługują maxLines i przepełnienie, oraz o wprowadzeniu funkcji ContextualFlowRowContextualFlowColumn. Ta aktualizacja ma na celu udostępnienie komponentów o optymalnej wydajności. Komponent ContextualFlow* doskonale sprawdza się w przypadku dużej liczby produktów korzystających z małej konfiguracji maxLines oraz dynamicznych przycisków „+N więcej”, a komponenty FlowRowFlowColumn są idealne w przypadku małej liczby produktów, czyli mniej niż 100. Ważne: aby zachować dotychczasowe działanie w przypadku FlowRow lub FlowColumn, gdzie wszystkie elementy są tworzone niezależnie od tego, czy mieszczą się w maksymalnej wartości osi poprzecznej, podczas inicjowania ustaw wartość overflow na FlowRowOverflow.Visible lub FlowColumnOverflow.Visible. Przykłady działania tych nowych funkcji znajdziesz w sekcjach ContextualFlowRowSampleFlowRowSample. (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, VerticalPager i PagerState został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.
  • receiveContent jest zintegrowany z BasicTextField2, aby akceptować szczegółowe treści dostarczane przez klawiaturę ekranową lub wklejane ze schowka. (I81b72)
  • W tej zmianie zastępujemy SnapFlingBehavior operatorem TargetedFlingBehavior w 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, czyli FlingBehavior, który umożliwia propagowanie informacji o stanie trwającej animacji i jej docelowym przesunięciu przewijania. (I6a207)

Poprawki błędów

  • BasicTextField2 utrzymuje 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żenia Indication są bardziej wydajne niż w przypadku poprzedniego (obecnie wycofanego) interfejsu API rememberUpdatedInstance. Informacje o migracji znajdziesz na stronie developer.android.com.
  • clickable / combinedClickable / selectable / toggleable akceptuje teraz parametr MutableInteractionSource, który może mieć wartość null. Jeśli wartość jest pusta, a podany element Indication jest elementem IndicationNodeFactory, element Indication można utworzyć tylko w razie potrzeby, co zwiększa wydajność. Jeśli nie używasz funkcji hoistingu i MutableInteractionSource, zalecamy przekazywanie wartości null.

Zmiany w interfejsie API

  • Wprowadź DecayAnimationAnchoredDraggable. Ta zmiana dodaje parametr decayAnimationSpec do AnchoredDraggable, co umożliwia użycie animacji zanikania podczas przechodzenia do jednego z punktów zakotwiczenia. Zmiana obejmuje też zmianę nazwy istniejącego parametru animationSpec na snapAnimationSpec, aby ułatwić zrozumienie zastosowania każdej specyfikacji.
  • Usługa BasicTextField2 jest dostępna do użytku eksperymentalnego. Powinien być w przybliżeniu równoważny z BasicTextField pod 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 na BasicTextField i przeniesiona do tego samego pakietu.
  • Wprowadziliśmy pierwszą wersję roboczą interfejsu API OutputTransformation dla BasicTextField2. Ten interfejs API zastępuje większość przypadków użycia VisualTransformation w starym BasicTextField. 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.
  • receiveContent jest zintegrowany z BasicTextField2, aby akceptować szczegółowe treści dostarczane przez klawiaturę ekranową lub wklejane ze schowka.
  • KeyboardOptions.shouldShowKeyboardOnFocus umożliwia wyłączenie domyślnego działania BasicTextField, czyli wysyłania żądania klawiatury ekranowej po zaznaczeniu.
  • TextInputServiceLocalTextInputService zostały wycofane. Zamiast tego użyj PlatformTextInputModifierNode, aby przeprowadzić bezpośrednią integrację z interfejsami API IME platformy. (aosp/2862698)
  • Środowisko wykonawcze Indication#rememberUpdatedInstance zostało wycofane. Powoduje to duże, nieuniknione obniżenie wydajności i uniemożliwia inne optymalizacje. Zamiast tego używaj nowego interfejsu IndicationNodeFactory API.

Poprawki błędów

  • BasicTextField będzie teraz wstępnie weryfikować niewielki wybór mapowań przesunięć, gdy zostanie przekazana wartość VisualTransformation. Pomaga to wykrywać typowe błędy w kodzie, które 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)
  • VisualTransformation nie zgłosi błędu, jeśli zwrócisz nieprawidłowy indeks dla nieprawidłowego indeksu (b/316401857 ).

Wersja 1.6

Wersja 1.6.8

12 czerwca 2024 r.

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 enabled lub readOnly elementu TextField. (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/300280216b/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 intrinsicHeight tekstu. (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ę z Modifier.swipeable, w przewodniku po migracji.
  • Dodano funkcję przeciągania i upuszczania między aplikacjami i komponentami. Aby rozpocząć, zapoznaj się z interfejsami DragAndDropTarget, Modifier.dragAndDropSource i innymi.
  • Modifier.draggable2D to nowy modyfikator, który umożliwia łatwe przeciąganie w 2D. Zobacz przykład.
  • Dodaliśmy AndroidExternalSurfaceAndroidEmbeddedExternalSurface, aby ułatwić dodawanie komponentów opartych na powierzchni w komponowaniu.
  • Różne zmiany i ulepszenia interfejsu API w PagersnapFlingBehaviour
  • 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)
  • PlatformImeOptions jest 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 canScroll po przewijaniu, które powoduje tylko zmianę układu. (I60a86)
  • Poprawka dla Modifier.animateItemPlacement()LookaheadScope po 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 DragAndDropTarget przyjmuje teraz jawnie odbierający DragAndDropTarget i ma funkcję lambda, która umożliwia rozpoczęcie sesji przeciągania i upuszczania. Obecnie dostępne są 2 funkcje fabryczne dla DragAndDropModifierNode. 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 kwestii maximumFlingVelocity. (I8adc7)
  • onDragAndDropStart w fabryce DragAndDropModifierNode został(a) zmieniony(a) na acceptDragAndDropTransfer.

    acceptsDragAndDropTransfer został dodany do dragAndDropTarget Modifier, 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ą DragAndDropTarget do odbierania danych z sesji przeciągania i upuszczania (Iebf3a);

  • Udostępnienie startDragImmediatelyAnchoredDraggable umożliwia wykrywanie gestów przeciągania podczas korzystania z tej funkcji. Warto ustawić tę wartość, gdy widżet jest animowany do docelowego elementu zakotwiczonego. Zobacz przykład. (Ie6d13, b/285139987)

  • Interfejsy Foundation Tooltip API są teraz @ExperimentalFoundationApi (I30b0b)

  • Usunięto DragAndDropInfo jako typ. Funkcja DragAndDropModifierNode.drag przyjmuje teraz parametry dla funkcji transferData, rozmiaru dekoracji i funkcji lambda DrawScope dekoracji przeciągania.

    DragAndDropTarget ma metody dla poszczególnych zdarzeń przeciągania i upuszczania, a nie jedną metodę abstrakcyjną.

    onDragAndDropEvent w funkcji fabrycznej dla DragAndDropModifierNode została zmieniona na onDragAndDropStart, aby lepiej informować, że podany DragAndDropTarget jest ważny tylko w przypadku danej sesji przeciągania i upuszczania.

    Element DragAndDropEventType został usunięty (I645b1)

  • Zmieniono nazwę PlatformTextInputModifierNode.runTextInputSession na establishTextInputSession. (I03cd0)

  • Zastąp OriginalText tekstem TextSubstitution. (Ifa5a8)

  • Zmieniono nazwę PlatformTextInputModifierNode.textInputSession na runTextInputSession. (Ie9c6b)

  • Elementy podrzędne SubcomposeLayout (i układy takie jak LazyColumn, 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 API assertIsDeactivated() do testowania takich węzłów. Pozostałe interfejsy API testu będą domyślnie odfiltrowywać zdezaktywowane węzły. (I2ef84, b/187188981)

  • Parametr clippingEnabled funkcji Modifier.magnifier został zmieniony na clip.

  • Parametr magnifierCenter funkcji Modifier.magnifier jest 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 BasicText nie zmniejszał się, gdy zmieniał się układ minWidth, a układ minWidth był mniejszy niż początkowe ograniczenia pomiaru maxWidth (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.draggable2D to nowy modyfikator, który umożliwia łatwe przeciąganie w 2D. Zobacz Sample (Id95f5, b/214412658)

Zmiany w interfejsie API

  • W funkcji Modifier.dragAndDrawSource zmieniliśmy nazwę funkcji lambda onDrawDragShadow na drawDragDecoration, a w funkcji DragAndDropInfo zmieniliśmy nazwę parametru rozmiaru na dragDecorationSize. (Id0e30, b/303904810)
  • Parametr decorationBox funkcji BasicTextField2 został zmieniony na decorator. Jego typ zostanie też zmieniony na równoważny interfejs funkcji TextFieldDecorator. (I23c1c)

Poprawki błędów

  • Ulepszona dokumentacja dotycząca BasicTextField w zakresie wymagań onValueChange. (I90fc9, b/160257648)

Wersja 1.6.0-alpha07

4 października 2023 roku

Publikacja androidx.compose.foundation:foundation-*:1.6.0-alpha07 Wersja 1.6.0-alpha07 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Wprowadziliśmy PlatformTextInputMethodTestOverride do testów pisania w niestandardowych edytorach tekstu. (Id159b)
  • Nazwa GraphicsSurface została zmieniona na AndroidExternalSurface (I11680)
  • Dodaliśmy DisableNonLinearFontScalingInCompose tymczasową 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 ColorListColorSet, które unikają przydzielania. (I744bd)
  • Ta zmiana usuwa shortSnapVelocityThreshold, które stało się szczegółem implementacji SnapLayoutInfoProvider. (I65f6d)
  • Dodaje modyfikator dragAndDropSource do rozpoczynania sesji przeciągania i upuszczania oraz modyfikator dragAndDropTarget do odbierania danych z sesji przeciągania i upuszczania (Ib7828, b/286038936)
  • Zaktualizuj dokumentację SnapPositionInLayout i metodę określania pozycji. Wprowadź do metody pozycjonowania w SnapPositionInLayout dopełnienie treści. (Id7938, b/300116110)
  • Dodaliśmy UndoState do TextFieldState, 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 basicMarquee po 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() i EmbeddedGraphicsSurface(). 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 znaku MagnifierStyle na rzecz parametrów wbudowanych w sam modyfikator. (I83bec, b/298381260, b/262367109, b/261438887)

Zmiany w interfejsie API

  • Wprowadzono updateCurrentPageupdateTargetPageScrollScope. Są to ostatnie elementy niezbędne do umożliwienia dostosowywania animowanego przewijania PagerState.scroll. (I9cad5, b/267744105, b/243786897)
  • Usuń gęstość z urządzenia SnapFlingBehavior. Wszystkie implementacje SnapLayoutInfoProvider mają już sposób na uzyskanie dostępu do gęstości, więc zakres odbiornika można usunąć, co doprowadzi do mniej złożonej implementacji zarówno SnapFlingBehavior, jak i SnapLayoutInfoProviders. (I153c3)
  • Więcej modyfikatorów oznaczonych jako stabilne. (I56af1, b/298046462)
  • Usunięto: SnapStepSize z listy SnapLayoutInfoProvider Obliczenia 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

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 API BasicTextField. (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 ScrollViewRecyclerView, są ograniczone do ViewConfiguration.ScaledMaximumFlingVelocity. Funkcja Pisanie zawiera teraz własną wersję maximumFlingVelocity, która obowiązuje w przypadku Draggable. (Ibf974)
  • Usunięto wycofane przeciążenia PagerPagerState. (Iea07e)
  • Dodano BasicTooltipBox do compose.foundation i zaktualizowano PlainTooltipBox oraz RichTooltipBox, aby używać TooltipBox z nowymi komponentami PlainTooltipRichTooltip. (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 ReusableComposition do zarządzania cyklem życia i ponownym wykorzystywaniem podkompozycji. (I812d1, b/252846775)
  • Modifier.focusGroup został przeniesiony do stabilnych interfejsów API. (I7ffa3)
  • Dodaj przeciążenia dla funkcji BasicTextField2, które akceptują niezmienną wartość i wywołanie zwrotne, aby zmienić tę wartość, tak jak w przypadku obecnego interfejsu API BasicTextField. (I3f2b8)
  • GridItemSpan::currentLineSpan to teraz stabilny interfejs API. (Icc29c)
  • Element Canvas, który akceptuje contentDescription, jest teraz stabilnym interfejsem API. (Ib3d29)
  • ScrollState wprowadziliśmy viewportSize, czyli sposób na poznanie viewPort rozmiaru komponentu, który używa ScrollState po dokonaniu pomiaru. (I8b85a, b/283102682)
  • Rozwiązaliśmy problem, który powodował, że wstępne pobieranie w komponencie Pager nie było zgodne z zachowaniem w widokach. (I93352, b/289088847)
  • Modifier.consumeWindowInsets(PaddingValues) jest teraz stabilny.
    • Interfejs Deprecated Modifier.consumedWindowInsets API został usunięty. Użyj w zamian zasady Modifier.consumeWindowInsets. (Id72bb)

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ść readOnly wynosiła „true”. Rozwiązaliśmy też problem z niewyświetlaniem klawiatury, gdy wartość readOnly zmienia 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 PagerLayoutInfo z informacjami zebranymi po przejściu weryfikacji w Pager. Wprowadziliśmy też PageInfo, czyli informacje o pojedynczej zmierzonej stronie w Pager. (Iad003, b/283098900)
  • Dodatkowe adnotacje do określania dozwolonych danych wejściowych w funkcjach kompozycyjnych (I51109)
  • Dodano SemanticsNodeInteraction.requestFocus jako wygodniejszy i łatwiejszy do znalezienia sposób na proszenie o skupienie uwagi w testach. (Ie8722)
  • Całkowicie przeprojektowany interfejs API PlatformTextInput*. (I6c93a, b/274661182, b/267235947, b/277380808)
  • Atrybuty SoftwareKeyboardController i LocalSoftwareKeyboardController nie są już eksperymentalne. LocalSoftwareKeyboardController jest teraz też prawidłowym CompositionLocal. (I4c364)
  • Modifier.transformable udostępnia teraz parametr canPan, 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 AnchoredDraggable w 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 interfejs Swipeable Material. (I4a2ed)

Zmiany w interfejsie API

  • Wesprzyj kanał InputConnection#requestCursorUpdates (I0c69b)
  • Wprowadzono scrollAnimationSpec, aby umożliwić niestandardowe specyfikacje animacji. Zaktualizowano: BringIntoViewCalculator do 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 BringIntoViewCalculator API, którego można używać do dostosowywania sposobu, w jaki komponenty takie jak Scrollable odpowiadają na żądania bringIntoView. Zmieniono przeciążenie elementu przewijanego, aby opcjonalnie akceptował instancję BringIntoViewCalculator. (Iaf5af)

Poprawki błędów

  • Dodaliśmy sprawdzanie kodu, które ostrzega, jeśli tworzysz MutableInteractionSource w kompozycji bez zapamiętywania, podobnie jak w przypadku tworzenia stanu modyfikowalnego lub Animatable. (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 niestandardowego FocusTarget. (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ść readOnly wynosiła „true”. Rozwiązaliśmy też problem z niewyświetlaniem klawiatury, gdy wartość readOnly zmienia 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 interfejsu Modifier.Node API, co zmniejsza obciążenie początkowej kompozycji.
  • Poprawiliśmy stabilność pagera. Wiele błędów zostało naprawionych.
  • Parametry pageCount znajdują się teraz w PagerState, 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 to AutoboxingStateCreation. 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ąc warning "AutoboxingStateCreation" w konfiguracji build.gradle lub build.gradle.kts moduł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. Interfejs SensorGateway został 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-alpha04androidx.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ć z LazyGridState. (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.FixedSize do wersji stabilnej. FixedSize definiuje LazyGrid, w którym każda komórka ma dokładny rozmiar na osi poprzecznej, a pozostałe miejsce jest rozdzielane przez układ osi poprzecznej. (I8542f)
  • Wprowadzono zakres odbiorcy PagerScope dla komponentu Pager i funkcję narzędziową do obliczania danego przesunięcia strony. (If2577)
  • Wprowadź snapPositionalThreshold podczas tworzenia zachowania przyciągania. Ten parametr służy do określania progu pozycji dla krótkiego przyciągania w komponencie Pager. (If8f7f)
  • Tekst SnapLayoutInfoProvider.calculateSnappingOffsetBounds został zastąpiony tekstem calculateSnappingOffset. 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 LazyStaggeredGrid zostały przeniesione do wersji stabilnej. (I633a5)
  • Usuń urządzenie pageCount z konta Horizontal/VerticalPager. Należy go podać podczas tworzenia stanu. Zaktualizowano PagerStaterememberPagerState, aby akceptować pageCount. (Ieb52d, b/266965072)
  • Usuń urządzenie pageCount z konta Horizontal/VerticalPager. Należy go podać podczas tworzenia stanu. Zaktualizowano PagerStaterememberPagerState, aby akceptować pageCount. (Ifa3cb, b/266965072)
  • Przedstaw shortSnapVelocityThresholdSnapFlingBehavior Pager. (I7379e, b/275579012)
  • Dodaje FlowRowScopeFlowColumnScope. (I54fe2)

Poprawki błędów

  • Wywołania w celu uzyskania semantyki tekstu, gdy ograniczenia mają wartości minWidthminHeight, 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-alpha03androidx.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/FlowRow w tekście. (Idab37)

Wersja 1.5.0-alpha02

5 kwietnia 2023 r.

Publikacja androidx.compose.foundation:foundation:1.5.0-alpha02androidx.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 LazyGrid i rozmieszczania ich za pomocą układu osi poprzecznej. (I83ed9, b/235121277, b/267942510)
  • Dodano obsługę pasów o stałym rozmiarze w funkcji LazyStaggeredGrid i układania ich za pomocą układu osi poprzecznej. (I7d519)
  • UrlAnnotationAnnotatedString można teraz otwierać za pomocą usług ułatwień dostępu, takich jak TalkBack. (If4d82, b/253292081)
  • Dodano działanie semantyczne InsertTextAtCursor dla pól tekstowych. (I11ed5)
  • Działania testowe związane z tekstem (np. performTextInput) będą teraz bezpośrednio żądać fokusu za pomocą działania semantycznego zamiast klikania pola. (I6ed05)
  • Dodaliśmy obsługę odstępów i układu wzdłuż osi poprzecznej za pomocą właściwości verticalArrangementFlowRowhorizontalArrangementFlowColumn. Usuwamy też symbole verticalAlignmenthorizontalAlignment najwyższego poziomu w FlowRow/FlowColumn. Deweloperzy mogą zamiast tego używać Modifier.align. Pozwala to uniknąć nieporozumień związanych z konwencjami nazewnictwa verticalAlignmentverticalArrangement. (I87b60, b/268365538)

Wersja 1.5.0-alpha01

22 marca 2023 r.

Publikacja androidx.compose.foundation:foundation:1.5.0-alpha01androidx.compose.foundation:foundation-layout:1.5.0-alpha01 Wersja 1.5.0-alpha01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Tekst i BasicText został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. Modyfikator hoverable będzie widoczny w inspektorze tylko wtedy, gdy jest włączony. (I82103)

Wersja 1.4

Wersja 1.4.3

3 maja 2023 r.

androidx.compose.foundation:foundation:1.4.3androidx.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.2androidx.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.1androidx.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.0androidx.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 Text i TextField, a także akapitu niższego poziomu. Jest ona domyślnie włączona, gdy skonfigurowana jest opcja emojicompat.
  • EmojiCompat można skonfigurować w przypadku konkretnego tekstu za pomocą PlatformParagraphStyle.
  • Dodano obsługę pełnego zakresu wiersza w przypadku LazyStaggeredGrid(I28252)
  • Dodanie eksperymentalnego parametru onHover do parametru ClickableText (I6938f)
  • Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji runComposeUiTestcreate*ComposeRule, które akceptują parametry CoroutineContext. Kontekst będzie używany w kompozycji testu oraz w wywołaniach LaunchedEffectrememberCoroutineScope() w tej kompozycji. (I10614, b/265177763)
  • FlowRowFlowColumn są 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-rc01androidx.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 PlatformTextInputAdapter do 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 BasicTextFieldSetText będzie teraz aktualizować bufor tekstu przy użyciu tej samej ścieżki kodu co aktualizacje IME i funkcje testowe (np. performTextReplacement).
  • Funkcje testowania tekstu performTextClearance, performTextReplacementperformTextSelection używają teraz funkcji SemanticsActions. (I0807d, b/269633168, b/269624358)

Wersja 1.4.0-beta02

22 lutego 2023 roku

Publikacja androidx.compose.foundation:foundation:1.4.0-beta02androidx.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 komponent Layout jest ponownie używany (np. jako element LazyColumn). Poprawiono FocusTargetModifierNode, aby prawidłowo resetować stan zaznaczenia. (I65495, b/265201972)
  • Dodano parametr BlendMode do metod DrawScope.drawText, Paragraph.paintMultiParagraph.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 z ModifierNodeElement. (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-beta01androidx.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 TextTextField, a także elementu niższego poziomu Paragraph. Jest ona domyślnie włączona, gdy skonfigurowana jest opcja emojicompat.
  • EmojiCompat można skonfigurować w przypadku konkretnego tekstu za pomocą PlatformParagraphStyle.

Zmiany w interfejsie API

  • Dodano wspólne wdrożenie interfejsu PinnableContainer API używanego we wszystkich LazyLayouts, aby zachować elementy, które wychodzą z kompozycji, ale nadal muszą być aktywne. (If45a4)
  • PinnableContainer.PinnedHandle.unpin() zmienił(a) nazwę na release() (I4667a)

Wkład zewnętrzny

  • Dodano właściwość mainAxisItemSpacing do obiektów LazyListLayoutInfo, LazyGridLayoutInfoLazyStaggeredGridItemInfo (I52fad)

Wersja 1.4.0-alpha05

25 stycznia 2023 r.

Publikacja androidx.compose.foundation:foundation:1.4.0-alpha05androidx.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 onHover do parametru ClickableText (I6938f)
  • Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji runComposeUiTestcreate*ComposeRule, które akceptują parametry CoroutineContext. Kontekst będzie używany w kompozycji testu oraz w wywołaniach LaunchedEffectrememberCoroutineScope() w tej kompozycji. (I10614, b/265177763)

Zmiany w interfejsie API

  • Łączy interfejsy API przed i po OverscrollEffect w połączone funkcje „dekoratora” applyToScrollapplyToFling. 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 LineBreakHyphensTextStyle zostały przeniesione do wersji stabilnej. (Ic1e1d)

Poprawki błędów

  • Kursor w polach tekstowych będzie teraz migać nawet wtedy, gdy animacje są wyłączone. (I95e70, b/265177763)
  • Modifier.basicMarquee jest teraz animowany nawet wtedy, gdy animacje są wyłączone w ustawieniach systemu. (I23389, b/262298306, b/265177763)

Wkład zewnętrzny

  • Metody notifyFocusedRectTextInputSessionTextInputService nie są ponownie wycofywane. (I23a04, b/262648050)

Wersja 1.4.0-alpha04

11 stycznia 2023 r.

Publikacja androidx.compose.foundation:foundation:1.4.0-alpha04androidx.compose.foundation:foundation-layout:1.4.0-alpha04 Wersja 1.4.0-alpha04 zawiera te zatwierdzenia.

Nowe funkcje

  • FlowRowFlowColumn są 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

  • FocusRequesterModifier zostało wycofane na rzecz FocusRequesterNode (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • Konstruktor AndroidFont z parametrem variationSettings jest teraz stabilnym interfejsem API i może służyć do tworzenia nowych typów deskryptorów czcionek. (I5adcc, b/261565807)
  • Wprowadzono interfejs API PinnableContainer propagowany przez leniwe listy za pomocą lokalnego komponentu, który umożliwia przypinanie bieżącego elementu. Oznacza to, że element nie zostanie usunięty, gdy zniknie z widoku. Na przykład Modifier.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 TextMotion do parametru TextStyle, aby określić, czy tekst ma być Static(default) czy animowany. Użyj TextMotion.Animated, jeśli tekst ma być skalowany, tłumaczony lub obracany za pomocą animacji. (I24dd7)
  • Dodanie TextFieldFocusModifier w celu naprawienia działania nawigacji za pomocą fokusu na platformie Android (I00303)
  • Zastąpiliśmy argument maxSize: IntSize w funkcji drawText argumentem size: Size, aby był zgodny z innymi funkcjami DrawScope. size jest domyślnie ustawione na Size.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-alpha03 do androidx.compose.foundation:1.4.0-alpha04 może wystąpić błąd java.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 biblioteki androidx.compose.materialandroidx.compose.material3 do najnowszej wersji(1.1.0-alpha04) lub zmień wersję biblioteki androidx.compose.foundation na 1.4.0-alpha03.

Wersja 1.4.0-alpha03

7 grudnia 2022 r.

Publikacja androidx.compose.foundation:foundation:1.4.0-alpha03androidx.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 withFrameNanos nie 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 funkcje withFrameNanos lub withFrameMillis, oraz na logikę poza wywołaniem zwrotnym przekazywaną do tych funkcji, która może wymagać przeniesienia do wywołań zwrotnych. Przykłady zmian w teście animacji znajdziesz w tym CL.
  • Dodano opcjonalny parametr onPerformTraversals: (Long) -> Unit do konstruktora TestMonotonicFrameClock i funkcji fabrycznej, aby uruchamiać kod po wywołaniach zwrotnych withFrameNanos, 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 HorizontalPager i VerticalPager, czyli sposób wyświetlania funkcji kompozycyjnych w stylu Pager. Wprowadzono PagerState, aby sterować pagerami i wykonywać zapytania o ich bieżący stan. Wprowadzono PageSize, czyli sposób kontrolowania rozmiaru strony w komponencie Pager. Można go używać do tworzenia karuzel podobnych do komponentów Pager. Wprowadzono PagerSnapDistance, 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#isEnabled został 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śli ScrollableState#canScrollForward/backward zwraca wartość fałsz). (I1a4b0, b/255554340, b/255557085)
  • Dodano ScrollableState#canScrollForwardScrollableState#canScrollBackward, aby sprawdzać, czy ScrollableState ma miejsce na przewijanie w dowolnym kierunku (czy znajduje się na minimalnym lub maksymalnym poziomie zakresu). Domyślnie ma wartość „true”, aby zapewnić zgodność wsteczną z dotychczasowymi implementacjami ScrollableState. 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 do ScrollableStates, 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 Clickable do 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 elemencie Scrollable 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 w SnapLayoutInfoProvider. (Ife67c)
  • Dodano EmojiCompat do Compose (Ibf6f9, b/139326806)
  • Zmieniliśmy nazwy interfejsów consumedWindowInsets() na consumeWindowInsets()withConsumedWindowInsets() na onConsumedWindowInsetsChanged() 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-alpha02androidx.compose.foundation:foundation-layout:1.4.0-alpha02 Wersja 1.4.0-alpha02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Atrybuty awaitFirstDown i waitForUpOrCancellation akceptują teraz PointerEventPass, co zapewnia większą elastyczność. (I7579a, b/212091796)
  • Cofnięcie interfejsu beyondBoundCount API z interfejsów Lazy* API (I12197)
  • Wprowadzono parametr w interfejsach Lazy API, który umożliwia tworzenie i umieszczanie elementów poza widocznym obszarem (I69e89, b/172029355)
  • Dodano parametr minLines do parametrów BasicTextBasicTextField. 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-alpha01androidx.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 do forEachGesture(), ale pętla gestów działa w całości w ramach AwaitPointerEventScope, więc zdarzenia nie mogą zostać utracone między iteracjami.
  • Element forEachGesture() został wycofany na rzecz elementu awaitEachGesture(), ponieważ umożliwia on utratę zdarzeń między gestami. (Iffc3f, b/251260206)
  • Dodano WindowInsets.imeAnimationSource i WindowInsets.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.1androidx.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)
  • ContentInViewModifier nie 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.0androidx.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 LazyVerticalStaggeredGridLazyHorizontalStaggeredGrid.
  • Dodaliśmy interfejsy API SnapFlingBehavior, rememberSnapFlingBehavior i inne powiązane interfejsy API w wersji eksperymentalnej.
  • Modifier.clickable, Modifier.toggleableModifier.selectable teraz 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-rc01androidx.compose.foundation:foundation-layout:1.3.0-rc01 Wersja 1.3.0-rc01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Wprowadzono lowVelocityAnimationSpec uż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-beta03androidx.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:IntSize na constraints: Constraints w metodzie TextMeasurer.measure, aby obsługiwać ograniczenia minimalnej szerokości. (I37530, b/242707525)
  • Dodaliśmy funkcję Modifier.withConsumedWindowInsets(), aby pobierać WindowInsets do użycia poza windowInsetsPadding.
  • Dodano MutableWindowInsets, aby umożliwić łatwą zmianę WindowInsets bez rekompozycji. (I7fd28, b/237019262, b/243119659)

Wersja 1.3.0-beta02

7 września 2022 roku

Publikacja androidx.compose.foundation:foundation:1.3.0-beta02androidx.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.InFocusDirection.Out na FocusDirection.EnterFocusDirection.Exit (Ia4262, b/183746982)
  • Wprowadzono przeciążenie rememberSnapFlingBehavior, które umożliwia szybkie włączanie przyciągania w LazyLists. (Ifb48a)
  • Zastąpiono fabrykę snapFlingBehavior konkretną klasą SnapFlingBehavior. Metody z zakresem SnapLayoutInfoProvider do 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 przyjmuje LazyListState, aby utworzyć instancję SnapLayoutInfoProvider, której można użyć do włączenia FlingBehavior dla LazyLists. (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-beta01androidx.compose.foundation:foundation-layout:1.3.0-beta01 Wersja 1.3.0-beta01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Usunięto pointerPositionOverscrollEffect – efekty, które uwzględniają pozycję wskaźnika, mogą zamiast tego używać Modifier.pointerInput { }effectModifier, aby uzyskać bieżącą pozycję wskaźnika. (I9f606, b/241239306)
  • Udostępniono AwaitPointerEventScope#awaitLongPressOrCancellation jako 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ę SnapLayoutInfoProvider z informacjami o układzie przyciągania. (Ie754c)

Wersja 1.3.0-alpha03

10 sierpnia 2022 r.

Publikacja androidx.compose.foundation:foundation:1.3.0-alpha03androidx.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 PlatformTextStyleLineHeightStyle. (I64bef)
  • Pola tekstowe będą teraz zgłaszać bardziej szczegółowe wyjątki, gdy funkcja OffsetMapping dostarczona przez funkcję VisualTransformation zwró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.id i przeniesiono identyfikator semantyczny do LayoutInfo.semanticsId. (Iac808, b/203559524)
  • checkScrollableContainerConstraints() nie jest już funkcją eksperymentalną. (I2c290)
  • Modifier.clipScrollableContainer() nie jest już funkcją eksperymentalną. (Ia2b44)
  • Wycofaj: TextInputService.show|hideSoftwareKeyboard Zamiast niej użyj SoftwareKeyboardController w kodzie aplikacji i TextInputSession w kodzie zarządzania IME. (I14e4c, b/183448615)

Wersja 1.3.0-alpha02

27 lipca 2022 roku

Publikacja androidx.compose.foundation:foundation:1.3.0-alpha02androidx.compose.foundation:foundation-layout:1.3.0-alpha02 Wersja 1.3.0-alpha02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodaliśmy funkcję rozszerzenia drawTextDrawScope, aby umożliwić rysowanie tekstu w wielu stylach w komponentach i modyfikatorach, które działają na DrawScope, takich jak CanvasdrawBehind. (I16a62, b/190787898)

Poprawki błędów

  • Klawiatura ekranowa będzie teraz ukrywana, gdy pole tekstowe jest wyłączone, ale zaznaczone. (I6e3e4, b/237308379)
  • Podczas dodawania zdarzeń InputEventChange do narzędzia Velocity Tracker będziemy teraz uwzględniać różnice zamiast pozycji. Dzięki temu prędkość będzie prawidłowo obliczana we wszystkich przypadkach, nawet jeśli element docelowy się porusza (Icea9d, b/216582726, b/223440806, b/227709803).
  • Gdy element przewijany ma 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 TextField jest 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-alpha01androidx.compose.foundation:foundation-layout:1.3.0-alpha01 Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Wprowadziliśmy typ adnotacji UrlAnnotation i powiązane z nim metody, aby obsługiwać linki TalkBackAnnotatedString. (I1c754, b/231495122)

Poprawki błędów

  • BasicTextField cursorBrush moż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.1androidx.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.0androidx.compose.foundation:foundation-layout:1.2.0 Wersja 1.2.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.1.0

  • Wartości LazyVerticalGridLazyHorizontalGrid są 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.
  • OverscrollEffect Interfejs API został wprowadzony jako eksperymentalny. Możesz zdefiniować niestandardowe efekty przewijania poza zakres, a także dodać standardowy efekt platformy do niestandardowych kontenerów z możliwością przewijania.
  • Wprowadzono interfejsy API interoperacyjności zagnieżdżonego przewijania, 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-rc03androidx.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-rc02androidx.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-rc01androidx.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ążenia Modifier.scrollable, które go akceptują.
  • Eksperymentalny interfejs LocalOverScrollConfiguration został przeniesiony z foundation.gesture do pakietu podstawowego i zmieniono jego nazwę na LocalOverscrollConfiguration (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ą funkcji LazyLayout. (Id6fab, b/233352497)
  • Usunięto z pakietu androidx.compose.foundation.lazy wycofany element LazyVerticalGrid. Nowy stabilny interfejs API znajduje się w androidx.compose.foundation.lazy.grid (I73c76, b/225192009).

Wersja 1.2.0-beta03

1 czerwca 2022 r.

Publikacja androidx.compose.foundation:foundation:1.2.0-beta03androidx.compose.foundation:foundation-layout:1.2.0-beta03 Wersja 1.2.0-beta03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano nowe eksperymentalne funkcje IntervalListMutableIntervalList. 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 przez LazyColumn, 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ć, że ime wstawki 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.
  • DeleteSurroundingTextCommandDeleteSurroundingTextInCodePointsCommand wymagają 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-beta02androidx.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-beta01androidx.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 interfejsu LazyList podczas rozmieszczania elementów poza widocznymi granicami (Ifabfb, b/184670295).
  • Nazwa LineHeightBehavior została zmieniona na LineHeightStyle
  • Nazwa LineVerticalAlignment została zmieniona na LineHeightStyle.Alignment
  • Zmienianie nazwy: LineHeightTrim zmieniono na LineHeightStyle.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)
  • LazyLayoutItemProvider zamiast 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.itemsCount została zmieniona na itemCount (Id409c)
  • Dodano pędzel do TextStyleSpanStyle, aby umożliwić rysowanie tekstu z kolorowaniem gradientowym. (I53869, b/187839528)
  • Atrybuty trimFirstLineToptrimLastLineBottom elementu LineHeightBehavior zostały przekształcone w jeden typ wyliczeniowy: LineHeightTrim. LineHeightTrim mają 4 stany zdefiniowane przez 2 wartości logiczne:FirstLineTop, LastLineBottom, Both i None (Ifc6a5, b/181155707).
  • Dodano LineHeightBehavior do elementów sterujących TextStyleParagraphStyle. 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 przez TextStyle(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 trimFirstLineToptrimLastLineBottom działają prawidłowo tylko wtedy, gdy includeFontPadding ma 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.bringIntoView bę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.bringIntoView w przypadku prostokątów, które całkowicie się pokrywają, będą teraz uwzględniać tylko żądanie większego prostokąta. (I34be7, b/216790855, b/184760918)
  • Domyślnie włączone includeFontPadding. Możesz wyłączyć includeFontPadding za pomocą atrybutu TextStyle.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 z TextField przycinaniem. (I01423, b/171394808)
  • Modifier.bringIntoViewRequester nie korzysta już z usługi onGloballyPositioned. (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-alpha08androidx.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.maxHeight jest 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 kopie PointerInputChange zostaną wykorzystane, gdy jedna z nich zostanie wykorzystana. Jeśli chcesz utworzyć niepowiązany element PointerInputChange, użyj konstruktora. (Ie6be4, b/225669674)
  • Wprowadzamy nowy eksperymentalny interfejs API LazyLayout. Dzięki temu możesz tworzyć własne komponenty, np. LazyColumnLazyVerticalGrid. Pamiętaj, że interfejs API jest na wczesnym etapie rozwoju i może ulec zmianie w przyszłych wersjach. (Iba2bc, b/166591700)
  • AndroidFont przyjmuje teraz typefaceLoader jako parametr konstruktora. (I2c971)
  • WindowInsets reklama 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-alpha07androidx.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 LazyListLayoutInfoLazyGridLayoutInfo mają teraz pola beforeContentPaddingafterContentPadding (I3b628, b/200920410)
  • Dodano KeyboardType.Decimal jako alternatywę dla Keyboard.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.ScrollPointerEvent.scrollDelta to teraz stabilne interfejsy API (I574c5, b/225669674)
  • Dodana tymczasowa konfiguracja zgodności dla includeFontPaddingTextStyle/ParagraphStyle. includeFontPadding moż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 consumeWindowInsets elementu ComposeView umożliwia programistom wyłączenie korzystania z elementu Android WindowInsets. Dzięki temu poszczególne ComposeViews w hierarchii mogą stosować WindowInsets bez wzajemnego zakłócania się. (I0ef08, b/220943142)

Wersja 1.2.0-alpha06

23 marca 2022 r.

Publikacja androidx.compose.foundation:foundation:1.2.0-alpha06androidx.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 FocusOrder została połączona z usługą FocusProperties, a usługa focusProperties() ma teraz wszystkie funkcje usługi focusOrder(). Interfejsy FocusOrderfocusOrder() zostały wycofane. focusOrder(), które akceptuje focusRequester, należy zastąpić modyfikatorem focusRequester() w połączeniu z focusProperties(). 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()Modifier.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-alpha05androidx.compose.foundation:foundation-layout:1.2.0-alpha05 Wersja 1.2.0-alpha05 zawiera te zmiany.

Zmiany w interfejsie API

  • Wartości LazyVerticalGridLazyHorizontalGrid są teraz stabilne. (I307c0)
  • LazyGridItemInfo.Unknown został zastąpiony osobnymi polami LazyGridItemInfo.UnknownRowLazyGridItemInfo.UnknownColumn (I56d51)
  • LazyVerticalGrid/LazyHorizontalGrid i wszystkie powiązane interfejsy API zostały przeniesione do podpakietu .grid. Zaktualizuj importy z androidx.compose.foundation.lazy do androidx.compose.foundation.lazy.grid. (I2d446, b/219942574)
  • Tekst: includeFontPadding jest teraz domyślnie wyłączony. Problemy z przycinaniem wynikające z includeFontPadding=false został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 LazyVerticalGrid API 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-alpha04androidx.compose.foundation:foundation-layout:1.2.0-alpha04 Wersja 1.2.0-alpha04 zawiera te zmiany.

Zmiany w interfejsie API

  • BringIntoViewResponders nie muszą już ręcznie przekazywać żądań do elementów nadrzędnych, ale muszą 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)
  • LazyVerticalGrid obsługuje teraz line breaking przed elementami, których zakres nie mieści się w bieżącym wierszu. (I05c40, b/207462103)
  • Zmieniono nazwę excludeFromSystemGestures na systemGesturesExclusion (I19526)
  • LazyVerticalGrid obsługuje teraz reverseLayout. (I6d7d7, b/215572963, b/211753558)
  • Dodaj metodę WindowInsets.only(), aby umożliwić programistom uwzględnianie tylko wymiarów z klasy WindowInsets. (I14c94, b/217768486)
  • Dodano adnotacje ComposableTarget, ComposableTargetMarkerComposableOpenTarget, 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 ComposeNode lub powiązane.

    W przypadku niestandardowych funkcji stosujących funkcje kompozycyjne, które wywołują ComposeNode lub ReusableComposeNode, należy dodać adnotację CompoableTarget do funkcji i wszystkich typów parametrów lambda kompozycyjnych. Zalecamy jednak utworzenie adnotacji oznaczonej symbolem ComposableTargetMarker, a następnie użycie tej adnotacji zamiast symbolu ComposableTarget. Adnotacja kompozycyjna oznaczona symbolem ComposableTargetMarker jest równoważna adnotacji ComposbleTarget z pełną i jednoznaczną nazwą klasy atrybutu jako parametrem stosującym. Przykład użycia elementu ComposableTargetMarker znajdziesz w sekcji anroidx.compose.ui.UiComposable. (I38f11)

Poprawki błędów

  • Teraz można przekazywać ujemne przesunięcia przewijania do funkcji LazyGridState.scrollToItem()LazyGridState.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-alpha03androidx.compose.foundation:foundation-layout:1.2.0-alpha03 Wersja 1.2.0-alpha03 zawiera te zmiany.

Zmiany w interfejsie API

  • Metody notifyFocusedRectTextInputSessionTextInputService zostały wycofane i nie będą wywoływane. Zamiast niej używaj zasady BringIntoViewRequester. (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)
  • BringIntoViewRequester przekazuje teraz żądania do hostowanego widoku Androida. (Ia7a51)
  • FontFamilyResolver jest teraz dostępny w ramach usługi LocalFontFamilyResolver.current
    • Dodano createFontFamilyResolver(context)createFontFamilyResolver(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.fontFamilyResolver zawiera teraz resolver używany w tym układzie, wycofany TextLayoutResult.layoutInput.resourceLoader, ponieważ nie jest już używany. (Id5a45, b/174162090)
  • 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.ResourceLoaded API 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.AndroidResourceLoader umożliwia tworzenie Font.ResourceLoader poza kompozycją.
    • Dodano parametr loadingStrategy do czcionek opartych na zasobach, aby umożliwić asynchroniczne wczytywanie, gdy czcionka zasobu odwołuje się do pliku XML czcionek do pobrania. (Ie5aea, b/174162090)
  • 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 zasady FontFamilyResolver.preload
    • Interfejs fontResource(FontFamily): Typeface 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. Zamiast tego użyj FontFamilyResolver.preload (If8e7c, b/174162090).
  • Możesz teraz określić typ treści dla elementów funkcji LazyVerticalGrid - item/items. Funkcje LazyGridScope akceptują teraz taki parametr. Podanie takich informacji pomaga logice ponownego wykorzystania kompozycji produktów działać wydajniej i ponownie wykorzystywać treści tylko w przypadku produktów podobnego typu. (I7b355, b/215372836)
  • LazyListLayoutInfoLazyGridLayoutInfo mają teraz nowe właściwości: viewportSize, orientation, reverseLayout (Ifc8ed, b/200920410)
  • Możesz teraz określić typ treści dla elementów funkcji item/items w LazyColumn/LazyRow. Funkcje LazyListScope akceptują teraz taki parametr. Podanie takich informacji pomaga logice ponownego wykorzystania kompozycji produktów działać wydajniej i ponownie wykorzystywać treści tylko w przypadku produktów podobnego typu. (I26506)
  • Konstruktor SubcomposeLayoutState akceptujący maxSlotsToRetainForReuse został wycofany. Zamiast tego jest nowy konstruktor akceptujący SubcomposeSlotReusePolicy – 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 FontLoader na komputery
    • Nowa fabryka createFontFamilyResolver na komputerze (I6bbbb, b/174162090)
  • 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-alpha02androidx.compose.foundation:foundation-layout:1.2.0-alpha02 Wersja 1.2.0-alpha02 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodaliśmy NonRestartableComposable do metod, które są przeciążeniami istniejących metod bez złożonej logiki. Zmniejsza to liczbę sprawdzania przez kompilator zapamiętywania (równości) dla wszystkich parametrów, które są powtarzane w wywoływanej funkcji wewnętrznej. (I90490)
  • Dodano excludeFromSystemGesture modyfikatory, aby ułatwić dostęp do setSystemGestureExclusionRects (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.verticalScroll i inne kontenery korzystające z Modifier.scrollable obsł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-alpha01androidx.compose.foundation:foundation-layout:1.2.0-alpha01 Wersja 1.2.0-alpha01 zawiera te zmiany.

Zmiany w interfejsie API

  • Do funkcji LazyColumn, LazyRowLazyVerticalGrid dodaliśmy nowy parametr userScrollEnabled, 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 onSizeChanged do modyfikatora lupy. (I6879f)
  • Widżet lupy jest teraz widoczny podczas przeciągania uchwytów zaznaczenia w SelectionContainer. (I30b38, b/139320979)

Poprawki błędów

  • Rozwiązuje problem z TextField uchwytem 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.1androidx.compose.foundation:foundation-layout:1.1.1 Wersja 1.1.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono problem NullPointerExceptionandroidx.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.0androidx.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-rc03androidx.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-rc01androidx.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()LazyListState.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-beta04androidx.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-beta03androidx.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.item lub LazyListScope.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)

Wersja 1.1.0-beta02

3 listopada 2021 r.

Publikacja androidx.compose.foundation:foundation:1.1.0-beta02androidx.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-beta01androidx.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-alpha06androidx.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.performSemanticsAction zwraca teraz SemanticsNodeInteraction, 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-alpha05androidx.compose.foundation:foundation-layout:1.1.0-alpha05 Wersja 1.1.0-alpha05 zawiera te zmiany.

Zmiany w interfejsie API

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-alpha04androidx.compose.foundation:foundation-layout:1.1.0-alpha04 Wersja 1.1.0-alpha04 zawiera te zmiany.

Zmiany w interfejsie API

  • Wycofano performGestureGestureScope, które zostały zastąpione przez performTouchInputTouchInjectionScope. (Ia5f3f, b/190493367)
  • Dodaliśmy touchBoundsInRoot do SemanticsNode, 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-alpha03androidx.compose.foundation:foundation-layout:1.1.0-alpha03 Wersja 1.1.0-alpha03 zawiera te zmiany.

Nowe funkcje

  • Zaktualizowano 1.1.0-alpha03 Compose, aby zależał od Kotlin 1.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-alpha02androidx.compose.foundation:foundation-layout:1.1.0-alpha02 Wersja 1.1.0-alpha02 zawiera te zmiany.

Zmiany w interfejsie API

Wersja 1.1.0-alpha01

4 sierpnia 2021 r.

Publikacja androidx.compose.foundation:foundation:1.1.0-alpha01androidx.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

  • LazyVerticalGrid akceptuje 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.5androidx.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.4androidx.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.31 języka Kotlin

Wersja 1.0.3

29 września 2021 r.

Publikacja androidx.compose.foundation:foundation:1.0.3androidx.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.30 języka Kotlin

Wersja 1.0.2

1 września 2021 roku

Publikacja androidx.compose.foundation:foundation:1.0.2androidx.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.1androidx.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.0androidx.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 Gradle 7.1. (b/194289155)

Wersja 1.0.0-rc02

14 lipca 2021 roku

Publikacja androidx.compose.foundation:foundation:1.0.0-rc02androidx.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-rc01androidx.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-beta09androidx.compose.foundation:foundation-layout:1.0.0-beta09 Wersja 1.0.0-beta09 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Kontakt ManualFrameClock został usunięty. Jeśli chcesz kontrolować animacje, użyj elementu composeTestRule.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.txt znajdującym się w katalogu src/main lub w odpowiednim katalogu. Plik zawiera regułę w każdym wierszu. Reguła jest w tym przypadku wzorcem dopasowywanym do metod lub klas w bibliotece. Składnia tych reguł jest nadzbiorem formatu profilu ART czytelnego dla człowieka, który jest używany podczas korzystania z adb 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, SP. 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 klasa androidx.compose.runtime.SlotTable będzie miała deskryptor Landroidx/compose/runtime/SlotTable;.

  • <METHOD_SIGNATURE> to sygnatura metody, która zawiera jej nazwę, typy parametrów i typy zwracanych wartości. Na przykład metoda fun isPlaced(): BooleanLayoutNode ma sygnaturę isPlaced()Z.

  • Wzorce mogą zawierać symbole wieloznaczne (**, *?), dzięki czemu jedna reguła może obejmować wiele metod lub klas.

Do czego służą reguły?

  • Metoda oznaczona flagą H jest „gorącą” metodą i powinna być skompilowana z wyprzedzeniem.

  • Metoda oznaczona flagą S jest wywoływana podczas uruchamiania i powinna być skompilowana z wyprzedzeniem, aby uniknąć kosztów kompilacji i interpretacji w momencie uruchamiania.

  • Metoda oznaczona flagą P jest wywoływana po uruchomieniu.

  • Klasa obecna w tym pliku wskazuje, że jest używana podczas uruchamiania i powinna być wstępnie przydzielona w stercie, aby uniknąć kosztów ładowania klasy.

Jak to działa?

  • Biblioteki mogą definiować te reguły, które będą pakowane w artefakty AAR. Gdy aplikacja zawierająca te artefakty zostanie skompilowana, reguły zostaną połączone, a 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-beta08androidx.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 środowiskiem Modifier.focusTarget() (I6c860)
  • Wyliczenie KeyboardType zostało zastąpione klasą wbudowaną. (I73045, b/187055290)
  • Zastąpiono wyliczenie FocusState interfejsem FocusState (Iccc1a, b/187055290).
  • Wyliczenie ImeAction zostało zastąpione klasą wbudowaną. (I18be5, b/187055290)
  • funkcje AnnotatedString.withAnnotation są 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, detectVerticalGesturesdetectHorizontalGestures bę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-beta07androidx.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-beta06androidx.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.ScrollToIndex do przewijania listy z elementami indeksowanymi do elementu o określonym indeksie oraz SemanticsProperties.IndexForKey do 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)
  • 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 parametru 0.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-beta05androidx.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,accessibilityActionScrollRightaccessibilityActionScrollDown. 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-beta04androidx.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() i show().
    • 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, BoxScopeBoxWithConstraintsScope. (I4e83e, b/181869067)

Poprawki błędów

  • Rozwiązaliśmy problem z nieprawidłowym pozycjonowaniem elementów LazyColumn/LazyRow znajdujących się na krawędziach po szybkim przesunięciu (Ie4d13, b/183877420).
  • Przed tą zmianą lokalne funkcje kompozycyjne można było pominąć na podstawie ich parametrów. Po tej zmianie żadne lokalne funkcje 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 ShowCount zawsze była pomijana, nawet po zaktualizowaniu parametru count. Ta informacja jest nieaktualna. (I5648a)

Wersja 1.0.0-beta03

24 marca 2021 r.

Publikacja androidx.compose.foundation:foundation:1.0.0-beta03androidx.compose.foundation:foundation-layout:1.0.0-beta03 Wersja 1.0.0-beta03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Interfejs DefaultMonotonicFrameClock został wycofany. Wywołanie funkcji withFrameNanos lub Recomposer.runRecomposeAndApplyChanges bez MonotonicFrameClock będzie teraz zgłaszać błąd IllegalStateException. (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-beta02androidx.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 LocalSoftwareKeyboardController composition local API, który zastępuje poprzedni interfejs SoftwareKeyboardController w polu TextField. (I5951e, b/168778053)
  • Dodano nowy interfejs API LocalSoftwareKeyboardController composition local API, który zastępuje poprzedni interfejs SoftwareKeyboardController w polu TextField. (I84472, b/168778053)

Poprawki błędów

  • Wymuszanie ograniczeń dotyczących publicznego korzystania z eksperymentalnych interfejsów API (I6aa29, b/174531520)

Wersja 1.0.0-beta01

24 lutego 2021 r.

Publikacja androidx.compose.foundation:foundation:1.0.0-beta01androidx.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)
  • InteractionState zostało zastąpione przez [Mutable]InteractionSource
    • Interfejsy odpowiadają za wysyłanie i zbieranie zdarzeń interakcji.
    • Zamiast przekazywać interactionState = remember { InteractionState() } do komponentów takich jak Button i Modifier.clickable(), używaj interactionSource = remember { MutableInteractionSource() }.
    • Zamiast: Interaction.Pressed in interactionState uż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)

  • defaultFactory w przypadku compositionLocalOf i staticCompositionLocalOf jest 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 defaultFactory powinna 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() na Indication#rememberUpdatedIndication(InteractionState) i usunięto parametr InteractionState z 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ągu rememberUpdatedIndication(). Parametr indication w pliku Modifier.indication został 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ę @TestOnly najwyż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-alpha12androidx.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 ramach ComposeTestRule. (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.enforce zastąpiono tekstem Constraints.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 funkcji remember { mutableStateOf(0) }, usuniemy funkcję savedInstanceState { 0 }. Zamiast tego używaj rememberSaveable { 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 parametr stateSaver. 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()(@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-alpha11androidx.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 class z 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. Funkcje items(items: List)itemsIndexed(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 rozszerza ComposeTestRule i definiuje setContent, która została usunięta z ComposeTestRule. Dodano metodę fabryczną createEmptyComposeRule(), która zwraca obiekt ComposeTestRule i nie uruchamia aktywności. Użyj tej opcji, gdy chcesz uruchomić aktywność podczas testu, np.za pomocą ActivityScenario.launch (I9d782, b/174472899).

  • Funkcja animateAsState została zmieniona na animateFooAsState, gdzie Foo to typ animowanej zmiennej, np. Float, Dp, Offset itp. (Ie7e25)

  • Gęstość jest teraz zakresem odbiornika w przypadku interfejsów Arrangement. (I18aad)

  • TextFieldValue akceptuje AnnotatedString. Jest to jednak zmiana tylko w interfejsie API, a edycja tekstu w wielu stylach nie została jeszcze wdrożona.

    • Usunięto parametr initial z parametrów konstruktora EditingBuffer. (I326d5)
  • 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.

    RememberObserver zastępuje CompositionLifecycleObserver, 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, funkcja onRemembered jest wywoływana dla każdego odwołania, a funkcja onEnter jest wywoływana tylko raz. onEnter było wywoływane wielokrotnie, jeśli obiekt był używany w kompozycjach podrzędnych, np. WithConstraintsScaffold, co sprawiało, że pojedyncze wywołanie onEnter było niewiarygodne i zostało usunięte w przypadku RememberObserver.

    RememberObserver dodaje onAbandoned, które jest wywoływane, jeśli instancja RememberObserver jest zwracana z wywołania zwrotnego przekazanego do remember, ale nie została zapamiętana w stanie kompozycji, a więc nigdy nie zostanie wywołana funkcja onRemembered. 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 instancja RememberObserver po pojedynczej rekomendacji referencyjnej powyżej śledzi zasób zewnętrzny, zarówno onForgotten, jak i onAbandoned wskazują, że zasób nie jest już potrzebny. Jeśli obiekt śledzi rozpoczęcie pracy lub zasoby przydzielone w onRemembered, można zignorować onAbandoned, ponieważ nie zostanie on wywołany, jeśli zostanie wywołany onRemembered. (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-alpha10androidx.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() na val 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> zamiast T. 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-alpha09androidx.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, a LazyListState.firstVisibleItemIndex == 0 będzie oznaczać, że pierwszy element znajduje się na dole. (I552ae, b/166589935)

  • Dodano parametr verticalArrangement dla elementu LazyColumn. Dodano parametr horizontalArrangement dla LazyRow. Umożliwia dodanie odstępu między elementami i określenie ich rozmieszczenia, gdy nie mamy ich wystarczająco dużo, aby wypełnić cały minimalny rozmiar. (Icf79a, b/170394300)

  • Funkcja detectMultitouchGestures używa teraz 1 wywołania zwrotnego z połączonymi parametrami centroid, pan, zoom i rotate. (Ie6e1c)

  • Przeniesiono 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 Applier został 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 na insertTopDown().

    Dodaliśmy nową metodę: insertBottomUp().

    Aplikator wstawia węzły do edytowanego drzewa za pomocą funkcji insertTopDown() lub insertBottomUp() w zależności od tego, która z nich jest skuteczniejsza.

    Niektóre drzewa, np. LayoutNodeView, 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 zmianie Applier zastępuje insertBottomUp(), aby budować drzewo od dołu do góry, a insertTopDown() – 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-alpha08androidx.compose.foundation:foundation-layout:1.0.0-alpha08 Wersja 1.0.0-alpha08 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Usunięto parametr maxLines z funkcji CoreTextField. Jeśli chcesz ograniczyć wysokość pola tekstowego liczbą wierszy, użyj zamiast tego parametru BasicTextField. (Iec002)
  • Zmieniono metody await*TouchSlop(), aby nie wykrywały wskaźnika w dół, i zmieniono ich nazwy na *OrCancellation. Usunęliśmy też parametr orientationLock. (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 children dla lambdy końcowej na content. (Iec48e)
  • Przeniesiono interfejsy API foundation:foundation-text do foundation: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 Ambient i 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() na typeface() (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-text module został scalony z foundation:foundation (Idac0f)
  • Wycofanie funkcji place(Offset) i placeRelative(Offset). Zamiast tego używaj przeciążeń z przesunięciami int (I4c5e7)
  • Nazwa id została zmieniona na layoutId w przypadku LayoutIdParentData. Nazwa Measurable.id została zmieniona na Measurable.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-alpha07androidx.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 w Modifier.fillParentMaxSize[Width|Height] w zakresie LazyColumn/Row (I797e2, b/166586426).
  • Usunięto interfejs KeyboardOptions.toImeOptions z 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-alpha06androidx.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-alpha05androidx.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 .current we 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-alpha04androidx.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-alpha03androidx.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 minWidthmaxWidth funkcji widthIn zostały zmienione na minmax. Podobnie w przypadku błędów preferredWidthIn, heightInpreferredHeightIn. (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 createAndroidComposeRuleAndroidInputDispatcherandroidx.ui.test.android na androidx.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-alpha02androidx.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ę; runWithManualClock jako zamiennik runBlocking podczas 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")
        }
    }
    

    (I0a85b, b/161247083)

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-alpha01androidx.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-dev17androidx.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 na PlacementScope.place(), a poprzednia nazwa PlacementScope.place() została zmieniona na PlacementScope.placeRelative(). W rezultacie metoda PlacementScope.place() nie będzie już automatycznie odzwierciedlać pozycji w kontekstach pisanych od prawej do lewej. Jeśli chcesz to zrobić, użyj zasady PlacementScope.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ń funkcji remember { mutableStateOf(...) } w celu uniknięcia wątpliwości. Zmniejsza to ogólną powierzchnię interfejsu API i liczbę koncepcji zarządzania stanem oraz pasuje do wzorca by 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-dev16androidx.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 enabledonZoomStarted (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).
  • RowColumn to 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)
    1. Usuwanie nieużywanego interfejsu OffsetBase
    2. Ujednolicenie klas Offset i IntOffset w celu zapewnienia spójności interfejsu API
    3. Zmiana nazwy IntOffset.Origin na IntOffset.Zero w celu zachowania spójności z interfejsem Offset API
    4. Przeniesiono metodę nativeCanvas z interfejsu Canvas, aby umożliwić użytkownikom tworzenie własnych instancji Canvas.
    5. 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.
    6. Zmiana nazw wyliczeń ClipOp na Pascal Case
    7. Zmiana nazwy wyliczeń FilterQuality na Pascal Case
    8. Zmieniono nazwy wyliczeń StrokeJoin na Pascal Case
    9. Zmiana nazw wyliczeń PointMode na Pascal Case
    10. Zmiana nazwy wyliczeń PaintingStyle na Pascal Case
    11. Zmiana nazwy wyliczeń PathFillType na Pascal Case
    12. Zmieniono nazwy wyliczeń StrokeCap na Pascal Case
    13. Zaktualizowano implementację DrawCache, aby nie używać już parametrów lateinit.
    14. Zaktualizowano DrawScope, aby nie używać już leniwego delegowania w przypadku wewnętrznych parametrów fillPaint i strokePaint
    15. Zaktualizowano funkcję kompozycyjną Image, aby uniknąć używania Boxa i zmniejszyć obciążenie.
    16. Zaktualizowano klasę Outline, aby zawierała adnotacje @Immutable
    17. Zaktualizowano klasę PathNode, aby zawierała adnotacje @Immutable dla każdej instrukcji ścieżki.
    18. Zaktualizowano podkompozycję wektora, aby usunąć zbędne sprawdzanie warunkowe równości, ponieważ kompozycja już je obsługuje.
    19. Wycofanie metod konstruktora towarzyszącego Rect na rzecz konstruktorów funkcji
    20. Zaktualizowano klasy Brush i konstruktory funkcji za pomocą interfejsów API @Immutable i @Stable
    21. Zaktualizowano wyliczenie VertexMode, aby używać notacji PascalCase
    22. Zaktualizowano metodę selectPaint w klasie DrawScope, aby warunkowo zastępować parametry pędzla w obiekcie Paint, jeśli uległy zmianie.
    23. 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.performPartialGesture został usunięty. Zamiast niej używaj zasady SemanticsNodeInteraction.performGesture. (Id9b62)

  • Nazwa SemanticsNodeInteraction.getBoundsInRoot() została zmieniona na SemanticsNodeInteraction.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()isNotFocused() 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-dev15androidx.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-dev15 biblioteki Compose, musisz zaktualizować zależności zgodnie z nowymi fragmentami kodu pokazanymi powyżej w sekcji Deklarowanie zależności.

Zmiany w interfejsie API

  • Podobnie jak w przypadku nowego parametru w 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 Text do pakietu androidx.ui.foundation z pakietu androidx.ui.core. (I87ce5)

  • dodanie parametru enabled do komponentów Checkbox, Switch i Toggleable (I41c16)

  • Efekt falowania jest teraz modyfikatorem. Dopóki nie zostanie przekonwertowany, zalecane użycie to Clickable(onClick = { ... }, modifier = ripple()) (Ie5200, b/151331852, b/150060763).

  • Dodano interfejs VectorPainter API, który zastępuje dotychczasowy interfejs subcomposition API w przypadku grafiki wektorowej. Wynikiem subkompozycji jest obiekt VectorPainter zamiast DrawModifier. Wycofano poprzednie funkcje kompozycyjne DrawVector na rzecz VectorPainter.

    Zmiana nazwy interfejsu Image(Painter) API na PaintBox(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 Border na DrawBorder (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).
  • runOnIdleCompose Nazwa została zmieniona na runOnIdle (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 runOnIdleComposerunOnUiThread są teraz funkcjami globalnymi, a nie metodami w ComposeTestRule. (Icbe8f)

  • [Mutable]State property delegate operators moved to extensions to support Kotlin 1.4 property delegate optimizations. Aby nadal korzystać z funkcji by state { ... } lub by 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 setContent lub setViewContent. Metoda Compose.disposeComposition została wycofana. Zamiast tego użyj metody dispose na obiekcie Composition zwróconym przez setContent. 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_PARAM na true, 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 na annotatedString(builder: Builder). (Ia6377)

  • Zmiana w interfejsie API: nazwa AnnotatedString.Item została zmieniona na AnnotatedString.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)