Compose Foundation

Twórz aplikacje w Jetpack Compose za pomocą gotowych elementów składowych i rozszerzaj podstawy, aby tworzyć własne elementy systemu projektowania.
Najnowsza aktualizacja Wersja stabilna Wersja kandydująca do publikacji Wersja Beta Wersja alfa
2 lipca 2025 r. 1.8.3 - 1.9.0-beta02 -

Struktura

Compose to połączenie 7 identyfikatorów grupy Maven w androidx. Każda grupa zawiera ukierunkowany podzbiór funkcji, a każda z nich ma własny zestaw informacji o wersji.

W tej tabeli znajdziesz wyjaśnienie grup i linki do poszczególnych zestawów informacji o wersji.

GrupaOpis
compose.animationtworzyć animacje w aplikacjach Jetpack Compose, aby zwiększać komfort 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 w Compose, który ma udostępniać komponenty zgodne z tymi 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 Google Maven. Więcej informacji znajdziesz w repozytorium Maven Google.

Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:

Groovy

dependencies {
    implementation "androidx.compose.foundation:foundation:1.8.3"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.foundation:foundation:1.8.3")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.

Opinia

Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nową kartę, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk gwiazdki.

Tworzenie nowego problemu

Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.

Wersja 1.9

Wersja 1.9.0-beta02

2 lipca 2025 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.9.0-beta02 Wersja 1.9.0-beta02 zawiera te zmiany.

Nowe funkcje

  • Obsługa elementów inteligentnych w menu kontekstowym i na pasku narzędzi wyboru.

Zmiany w interfejsie API

  • Rozwiązaliśmy problem polegający na tym, że niektóre klawiatury sprzętowe lub piloty do telewizora nie przesuwały kursora w nowym komponencie TextFields za pomocą klawiszy kierunkowych, tylko przełączały fokus na inny komponent. 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ązanie problemu polegającego na tym, że przyklejone nagłówki nie były przyklejone, jeśli był obecny przypięty element. (I9198d, b/385006133)
  • TextObfuscationMode.RevealLastTyped jest teraz zgodny z ustawieniem systemowym „TEXT_SHOW_PASSWORD”. (I41c0c)
  • Naprawiliśmy błąd, który powodował, że BasicTextField nieprawidłowo wyświetlał ostrzeżenie „Wklejono ze schowka” przy pierwszym otwarciu paska narzędzi tekstowych. (I5fda2)

Wersja 1.9.0-beta01

18 czerwca 2025 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.9.0-beta01 Wersja 1.9.0-beta01 zawiera te zmiany.

Zmiany powodujące niezgodność

  • Węzły modyfikujące backgroundborder implementują teraz SemanticsModifierNode. Może to spowodować dodanie nowych SemanticsNodes do drzewa semantycznego, a w konsekwencji niepowodzenie testów, które opierają się na założeniach dotyczących struktury drzewa semantycznego. Na przykład testy, które używają onChild, onParent, onSibling i innych podobnych metod do tworzenia asercji, mogą się nie powieść, jeśli między bieżącym a docelowym węzłem zostanie dodany nowy węzeł. Najlepszym sposobem na naprawienie tych błędów jest 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 AnnotatedOutputTransformationaddStyle oraz przeniesiono je do TextFieldBuffer. Na numer addStyle można dzwonić tylko z urządzenia OutputTransformation. (I9930a, b/417991824)
  • Funkcja Clickable jest przepisywana tak, aby nie używać zawieszonego wskaźnika jako optymalizacji. Ta funkcja jest włączana za pomocą flagi. Jeśli w nowej implementacji wystąpi błąd, możesz ją wyłączyć – ComposeFoundationFlags.isNonSuspendingPointerInputInClickableEnabled. (I85b65)
  • Wprowadziliśmy isFlingCancellationWithNestedScrollFixEnabled, aby rozwiązać problem z propagacją szybkiego przewijania w zagnieżdżonym przewijaniu. W tym CL przywracamy zachowanie kontynuacji przesunięcia usunięte w aosp/3260391. Nadal będziemy anulować animację szybkiego przewijania, jeśli dziecko zostanie usunięte z kompozycji. (I467f4, b/405910180, b/419049142, b/416784125)
  • WindowInsetsRulers: zmieniono wartość rulersIgnoringVisibility na maksymalną. Zmieniono funkcję getDisplayCutoutBounds() na funkcję rozszerzenia 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 z nazwą WindowInsetsRulers. Uprościliśmy interfejs API, aby wszystkie wstawki miały wartość WindowInsetsRulers. Wyodrębniono właściwości animacji inne niż linijki do klasy AnimationProperties. Za pomocą funkcji WindowInsetsRulers.innermostOf() można łączyć wiele elementów WindowInsetsRulers. (I2f0c6, b/415012444)

Poprawki błędów

  • Ponownie dodaj użycie konta scrollAnimationSpec w aplikacji ContentInViewNode. To zachowanie zostało usunięte 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.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.9.0-alpha04 Wersja 1.9.0-alpha04 zawiera te zmiany.

Zmiany w interfejsie API

  • PrefetchScheduler i dostosowywanie zostały wycofane na rzecz wewnętrznej implementacji, która wykonuje wszystkie czynności automatycznie. (I3a9a6, b/420551535)
  • Zaktualizowano funkcję Scrollable2DState, aby w 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)
  • Stabilizacja LazyLayout. (If5db4)
  • Ustabilizowano pusty konstruktor dla LazyLayoutPrefetchState i jego metody planowania schedulePrecompositionschedulePrecompositionAndPremeasure. (I4362f, b/252853717)
  • Wprowadziliśmy ProcessTextKey na Androidzie, które jest używane w przypadku elementów menu kontekstowego dodanych do działań związanych z intencją PROCESS_TEXT. (If0ac4)
  • Udostępnij interfejsy API menu kontekstowego. Udostępniliśmy funkcje Modifier.addTextContextMenuComponents i Modifier.filterTextContextMenuComponents, aby dodawać i usuwać elementy w menu kontekstowym. Udostępniliśmy też te podstawowe interfejsy API, aby można było tworzyć niestandardowe menu kontekstowe:
    • TextContextMenuProvider
    • TextContextMenuDataProvider
    • TextContextMenuData
    • TextContextMenuComponent
    • LocalTextContextMenuDropdownProvider
    • LocalTextContextMenuToolbarProvider (I1b7b0)
  • Zapewnij stabilność LazyLayoutItemProvider (Icce09, b/261565751)
  • Wprowadziliśmy inteligentne funkcje wyboru na Androidzie, które można włączać i wyłączać w ComposeFoundationFlags.isSmartSelectionEnabled. Udostępnia też statyczną właściwość compositionLocal LocalTextClassifierCoroutineContext, której można użyć do określenia CoroutineContext, w którym uruchamiane jest zadanie TextClassification. (I1dbaa, b/139321320)

Wersja 1.9.0-alpha03

20 maja 2025 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.9.0-alpha03 Wersja 1.9.0-alpha03 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodano AnnotatedOutputTransformation, która umożliwia dodawanie adnotacji 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, aby obsługiwać te przypadki użycia i ułatwić programistom tworzenie podobnych modyfikatorów niestandardowych, które dokładnie odpowiadają ich potrzebom.RelativeLayoutBounds (I759b8)
  • Wprowadziliśmy przeciążenie detectDragGestures, które ma kontrolę nad tolerancją dotyku i blokadą orientacji. (Iadb0d)
  • Wprowadź interfejsy API Modifier.scrollable2D, Scrollable2DState i towarzyszące im interfejsy API do tworzenia stanu. Wprowadziliśmy też wspólne funkcje rozszerzenia przewijania. (Ic61c8, b/214410040)
  • Wartości kolorów w przestrzeni Compose 64-bitowej nie są bezpośrednio porównywalne z wartościami w przestrzeni Android ColorLongs, ponieważ identyfikatory przestrzeni kolorów są w przypadku niektórych przestrzeni kolorów nieuporządkowane. Aby konwertować przestrzenie kolorów Androida, dodaliśmy 2 nowe interfejsy API: toColorLong()fromColorLong(). (I36899)

Poprawki błędów

  • Tekst skopiowany z wielu komponentów kompozycyjnych Text w SelectionContainer będzie teraz zawierać separator wiersza \n dodany między tekstami pochodzącymi z poszczególnych komponentów kompozycyjnych Text. (I25332, b/285036739)

Wersja 1.9.0-alpha02

7 maja 2025 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.9.0-alpha02 Wersja 1.9.0-alpha02 zawiera te zmiany.

Zmiany w interfejsie API

  • Poprawiono sposób dodawania zmian danych wejściowych wskaźnika do elementu VelocityTrackerDragGestureNode. Można to kontrolować za pomocą nowej flagi isOffsetPositionBeforeAddingToVelocityTrackerEnabled. (Ic7992, b/292556787, b/236451818)
  • Udostępnianie await[Vertical/Horizontal]PointerSlopOrCancellation (I6968b, b/298903681)
  • AbstractComposeView.consumeWindowInsets ma teraz domyślnie wartość „false”. WindowInsets zostanie automatycznie dostosowany do rozmiaru i pozycji dziecka, gdy wartość tego parametru będzie ustawiona na false, więc nie musisz już ustawiać go domyślnie na true. Rozwiązuje to problem polegający na tym, że widoki podrzędne nie otrzymywały domyślnie 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 parametru beyondViewportPageCount (Idb2db)

Wersja 1.9.0-alpha01

23 kwietnia 2025 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.9.0-alpha01 Wersja 1.9.0-alpha01 zawiera te zmiany.

Zmiany w zachowaniu

  • Sprawdzanie Lint dostarczane z Compose wymaga teraz minimalnej wersji AGP 8.8.2. Jeśli nie możesz uaktualnić AGP, możesz zamiast tego uaktualnić Lint, używając w pliku gradle.properties wersji android.experimental.lint.version=8.8.2 (lub nowszej). Aby uruchamiać sprawdzanie kodu za pomocą narzędzia Lint w IDE, musisz mieć Androida Studio Ladybug lub nowszego.

  • Zmiana powodująca niezgodność: przeciążenia clickable, combinedClickable, selectable, 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 wycofaną implementację Indication w LocalIndication i używasz tych interfejsów API, spowoduje to awarię w czasie działania. Ta zmiana jest konieczna, aby zwiększyć wydajność i umożliwić funkcjom Composable korzystającym z tych modyfikatorów pomijanie ponownego komponowania. Możesz użyć ComposeFoundationFlags.isNonComposedClickableEnabled=false, aby tymczasowo zrezygnować z tej zmiany zachowania i umożliwić uaktualnienie biblioteki Compose bez blokowania migracji. Ten flag zostanie usunięty po wydaniu jednej stabilnej wersji. Aby rozwiązać ten problem, przenieś wszystkie wycofane implementacje sygnałów, aby zamiast nich używać IndicationNodeFactory. Możesz też używać przeciążeń z jawnym parametrem Indication – te przeciążenia będą nadal obsługiwać instancje Indication inne niż IndicationNodeFactory, chociaż nie jest to zalecane ze względu na wydajność. (I6bcdc, b/316914333)

Zmiany w interfejsie API

  • Wprowadzenie interfejsu API do tworzenia niestandardowych list punktowanych za pomocą AnnotatedString (I1d066, b/383269496, b/139326648)
  • Zezwól na wywoływanie ViewTreeObserver.OnScrollChanged przez funkcję Twórz. Ta funkcja jest wprowadzana pod flagą isOnScrollChangedCallbackEnabled. Wprowadziliśmy też funkcję rozszerzenia właściwości DelegatableNode dispatchOnScrollChanged. (I34b9d, b/238109286)
  • Projekty wydane w Kotlinie 2.0 wymagają do użycia KGP w wersji 2.0.0 lub nowszej (Idb6b5).
  • Dodano obsługę sprawdzania kodu za pomocą narzędzia lint dla TextFieldState, aby mieć pewność, że jest on zapamiętany w kompozycji. Zamiast tego możesz użyć rememberTextFieldState. (I53d74)
  • Dodano obsługę sprawdzania kodu w narzędziu lint dla elementu FocusRequester, aby mieć pewność, że jest on zapamiętany w kompozycji (I6bf91).
  • Dodano obsługę sprawdzania kodu za pomocą narzędzia lint dla BringIntoViewRequester, aby mieć pewność, że jest on zapamiętany w kompozycji. (Ibfba6)
  • Wprowadziliśmy zakresy wywołań schedulePrefetch w strategiach siatek i list, aby dostosować je do możliwoś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 wycofaną implementację Indication w LocalIndication i używasz tych interfejsów API, spowoduje to awarię w czasie działania. Ta zmiana jest konieczna, aby zwiększyć wydajność i umożliwić funkcjom Composable korzystającym z tych modyfikatorów pomijanie ponownego komponowania. Możesz użyć ComposeFoundationFlags.isNonComposedClickableEnabled=false, aby tymczasowo zrezygnować z tej zmiany zachowania i umożliwić uaktualnienie biblioteki Compose bez blokowania migracji. Ten flag zostanie usunięty po wydaniu jednej stabilnej wersji. Aby rozwiązać ten problem, przenieś wszystkie wycofane implementacje sygnałów, aby zamiast nich używać IndicationNodeFactory. Możesz też używać przeciążeń z jawnym parametrem Indication – te przeciążenia będą nadal obsługiwać instancje Indication inne niż IndicationNodeFactory, chociaż nie jest to zalecane ze względu na wydajność. (I6bcdc, b/316914333)
  • Wprowadzenie flagi do kontrolowania automatycznego zagnieżdżonego wstępnego pobierania: isAutomaticNestedPrefetchEnabled (I8d448)
  • Wprowadź przeciążenie dla LazyGridStaterememberLazyGridState, które przyjmuje LazyLayoutCacheWindow. (I51151)
  • Dodaje linijki do wcięć okna. Dodaje DerivedRuler, aby umożliwić obliczenie 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 stateBasicTextField spowoduje, że kursor pozostanie widoczny po zmianie rozmiaru. (I0eb41, b/406187741)
  • Zaktualizowano interfejsy API onVisibleItemsUpdatedLazyListPrefetchStrategyLazyGridPrefetchStrategy, aby informować o stanie początkowym. (If2cfa)

Wersja 1.8

Wersja 1.8.3

18 czerwca 2025 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.3 Wersja 1.8.3 zawiera te zmiany.

Wersja 1.8.2

20 maja 2025 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.2 Wersja 1.8.2 zawiera te zmiany.

Poprawki błędów

  • Wprowadziliśmy poprawkę, która zapobiega dzieleniu przez zero podczas obliczania liczby elementów do wczytania w przypadku wyszukiwania z użyciem fokusu. Zastosowano sprawdzanie we wszystkich układach, które używają symbolu LazyLayoutBeyondBoundsState. (8e6dc8)

Wersja 1.8.1

7 maja 2025 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.1 Wersja 1.8.1 zawiera te zmiany.

Poprawki błędów

  • Naprawiliśmy błąd w BasicTextTextAutoSize, który powodował, że użycie TextOverflow.Ellipsize skutkowało wyświetlaniem tekstu mniejszego 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
  • Usunęliś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 BasicText, który powodował, że zmiana ograniczenia minimalnej szerokości nie aktualizowała położenia tekstu, gdy wartość textAlign była inna niż domyślna. (I77a96), b/406305552

Wersja 1.8.0

23 kwietnia 2025 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0 Wersja 1.8.0 zawiera te zmiany.

Wersja 1.8.0-rc03

9 kwietnia 2025 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-rc03 Wersja 1.8.0-rc03 zawiera te zmiany.

Wersja 1.8.0-rc02

26 marca 2025 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-rc02 Wersja 1.8.0-rc02 zawiera te zmiany.

Wersja 1.8.0-rc01

12 marca 2025 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-rc01 Wersja 1.8.0-rc01 zawiera te zmiany.

Wersja 1.8.0-beta03

26 lutego 2025 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-beta03 Wersja 1.8.0-beta03 zawiera te zmiany.

Poprawki błędów

  • Dodano nową właściwość semantyczną InputText, która rejestruje wartość pola tekstowego przed zastosowaniem transformacji danych wyjściowych. (Iae46a, b/395911609, b/176949051)
  • Usunięto wycofane przeciążenia AutoSize. Używaj TextAutoSize interfejsów API, które pełnią tę samą funkcję. (I2c90f)
  • Rozwiązaliśmy problem z pamięcią podręczną w przypadku funkcji TextAutoSize, w którym drugi przebieg układu z tymi samymi ograniczeniami mógł powodować użycie drugiego co do wielkości rozmiaru czcionki zamiast największego. (Id367f)

Wersja 1.8.0-beta02

12 lutego 2025 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-beta02 Wersja 1.8.0-beta02 zawiera te zmiany.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że implementacje przewijania poza zakres za pomocą LayoutModifierNode nie działały prawidłowo w kontenerach przewijania.

Wersja 1.8.0-beta01

29 stycznia 2025 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-beta01 Wersja 1.8.0-beta01 zawiera te zmiany.

Zmiany w interfejsie API

  • SemanticsNodeInteraction.semanticsId() został(a) usunięty(a). Zamiast niej używaj zasady SemanticsNodeInteraction.fetchSemanticsNode().id. (Ie397a)
  • Przepisz interfejs requestAutofill API, aby istniał poza menedżerem autouzupełniania. (Id1929)
  • Funkcje 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, które zostały wprowadzone w wersji 1.7 i zawierają parametr overflow. Użycie tego parametru zostało wycofane. Zamiast niego można używać przeciążeń bez tego parametru. Domyślne działanie „overflow” w przypadku tych przeciążeń będzie miało wartość „Clip”, tak jak od momentu wprowadzenia.
    • Wiele przypadków użycia ContextualFlowRow można zrealizować za pomocą FlowRow, ale zdajemy sobie sprawę, że nie zawsze jest to możliwe. ContextualFlowRow można w pełni wdrożyć w przestrzeni użytkownika. Możesz skopiować jego implementację i w razie potrzeby ją dostosować. W przyszłości chcemy rozwiązywać te problemy w inny sposób. (Ibafec)

Poprawki błędów

  • Poprawiono układ tekstu z wielokropkiem, który czasami był nieprawidłowo tłumaczony podczas animacji. Więcej informacji znajdziesz w b/389707025 (Ie55b1, b/389707025).
  • Naprawiono błąd w elemencie BasicText, w którym wartości TextAutoSizemaxLines były ustawione na 1. (Ic0450, b/376834366)
  • Minimalna wysokość wewnętrzna tekstu uwzględnia teraz parametr minLines. Oznacza to, że zgłoszona minimalna wysokość nie będzie mniejsza niż wysokość wymagana do spełnienia parametru minLines (I225f9, b/388299762).

Wersja 1.8.0-alpha08

15 stycznia 2025 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-alpha08 Wersja 1.8.0-alpha08 zawiera te commity.

Zmiany w interfejsie API

  • AutoSize: nazwa została zmieniona z AutoSize na TextAutoSize. 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 funkcji ComposeFoundationFlags.isDetectTapGesturesImmediateCoroutineDispatchEnabled. (I62932)

Poprawki błędów

  • Domyślnie DetectTapGesturesEnableNewDispatchingBehavior włączona. Interfejsy API TapGestureDetector domyślnie korzystają teraz z nowego zachowania wysyłania (natychmiastowego wysyłania). (I9f2bc, b/369648479)
  • Poprawiono modyfikatory requiredWidth/Height/Size, aby prawidłowo obsługiwały rozmiary wewnętrzne. (Ie3d7d, b/368113212)

Wkład zewnętrzny

  • Ujednolicone BasicTooltip w foundation i BasicTooltip/Tooltip w material3. (Ifc2e6)
  • Dodano nowy interfejs Schowka i lokalizację kompozycji. (I80809)

Wersja 1.8.0-alpha07

11 grudnia 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-alpha07 Wersja 1.8.0-alpha07 zawiera te zmiany.

Zmiany w interfejsie API

  • Usunięto flagę ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled, która pomagała cofnąć usunięcie wewnętrznego elementu graphicsLayerBasicText. Jeśli używasz tego flagi, zgłoś błąd i podaj powody. Możesz też przekazywać wartość Modifier.graphicsLayer() do wywołań funkcji BasicText, aby uzyskać takie samo działanie jak wcześniej. (Id9f90)
  • Dodano domyślną implementację nowego języka DSL stickyHeader. (I68986)
  • W przypadku LocalAutofillHighlightColor kompozycji lokalnej użyj typu Kolor. (I0e05b)
  • Zmieniono nazwę OverscrollEffect#withoutDrawing na OverscrollEffect#withoutVisualEffect. (I1a154)

Poprawki błędów

  • Poprawka problemu z obliczaniem celu w AnchoredDraggable, który mógł się zatrzymać w niewłaściwym miejscu w przypadku określonych przesunięć. (I23b87, b/367660226)

Wkład zewnętrzny

  • Dodanie do interfejsu funkcji BringIntoViewResponderModifierNode, która zapewnia nowy sposób implementacji funkcji Bring Into View, a także umożliwia implementację na poziomie platformy (Ia6dd8).
  • Nieustannie nieznacznie zmieniamy sposób rysowania kursora. Aby wyłączyć rysowanie kursora w testach, możesz użyć znaku LocalCursorBlinkEnabled. (I4c697)

Wersja 1.8.0-alpha06

13 listopada 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-alpha06 Wersja 1.8.0-alpha06 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodaje modyfikator stylusHoverIcon. (Iff20a, b/331289114)
  • Wycofano 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 w interfejs. (I84914, b/376080755)
  • Dodaje interfejsy API OverscrollEffect#withoutDrawingOverscrollEffect#withoutEventHandling – tworzą one opakowaną instancję podanego efektu przewijania, która nie rysuje ani nie obsługuje zdarzeń. Umożliwia to renderowanie przewijania w osobnym komponencie od komponentu, który wysyła zdarzenia. Możesz na przykład wyłączyć rysowanie przewijania poza obszar w leniwym komponencie listy, a potem rysować je osobno na górze lub w innym miejscu. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244)
  • Dodanie obsługi autouzupełniania na pasku narzędzi tekstowych. (Ie6a4c)
  • Wycofuje 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)
  • Zmieniono właściwość effectModifier w interfejsie OverscrollEffect na node: DelegatableNode, aby zachować spójność z innymi interfejsami API. (Ic0b46, b/255554340)
  • Usunięto eksperymentalny interfejs GlobalAssertions API. Został on zaprojektowany do przeprowadzania testów ułatwień dostępu. Zamiast tego użyj enableAccessibilityChecks(). (I59322)

Wersja 1.8.0-alpha05

30 października 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-alpha05 Wersja 1.8.0-alpha05 zawiera te zmiany.

Nowe funkcje

  • Obsługa automatycznego dopasowywania rozmiaru tekstu. Przekaż instancję AutoSize (np. AutoSize.StepBased) do ulubionego komponentu tekstowego (np. BasicText) i zobacz, jak rozmiar tekstu dostosowuje się do dostępnego miejsca. (Ice7e0, b/139320827)
  • Dodaje interfejsy API OverscrollFactoryLocalOverscrollFactory, które umożliwiają konfigurowanie przewijania poza krawędź w hierarchii. Wartość podana w parametrze 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 CompositionLocal, którego można używać do modyfikowania odcienia podświetlenia udanego wypełnienia w funkcji autouzupełniania. (I32092)
  • Usunięto ScrollableDefaults.overscrollEffect. Zamiast tego używaj rememberOverscrollEffect. Spowoduje to utworzenie instancji bieżącej implementacji przewijania poza krawędź, która jest dostarczana z 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 jest niemożliwe. Nie możesz więc narysować tego samego kształtu OverscrollEffect, który został przekazany 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.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-alpha04 Wersja 1.8.0-alpha04 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodaje wywołania zwrotne DelegatableNode#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 elementu AnnotatedString. Wcześniej zawierała tylko listę SpanStyles. (I12f80)
  • Wprowadzono PointerInputModifierNode#touchBoundsExpansion, którego można używać do powiększania obszaru dotyku pojedynczego modyfikatora danych wejściowych wskaźnika. (Iccf02, b/335339283)

Poprawki błędów

  • Naprawiliśmy błąd polegający na tym, że w niektórych sytuacjach progi pozycji przekazywane do funkcji AnchoredDraggableDefaults.flingBehavior nie były prawidłowo uwzględniane. (Ifdf0d, b/367660226)
  • Wprowadziliśmy poprawkę dotyczącą zagnieżdżonych elementów z możliwością przewijania, które są usuwane z drzewa węzłów podczas trwającego przewijania. Teraz te węzły anulują gest szybkiego przesunięcia i prawidłowo wysyłają zdarzenie onPostFling z pozostałą prędkością. Wprowadzamy też flagę NewNestedScrollFlingDispatchingEnabled, która pozwala kontrolować działanie w przypadku regresji. Przed wersją beta flaga zostanie usunięta. (I05c37, b/371168883)
  • Naprawiliśmy błąd polegający na tym, że funkcja OverscrollEffects przekazywana do funkcji Modifier.anchoredDraggable otrzymywała delty 2D zamiast 1D. (Ie52c0)

Wersja 1.8.0-alpha03

2 października 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-alpha03 Wersja 1.8.0-alpha03 zawiera te zmiany.

Zmiany w interfejsie API

  • Aktualizacja wersji Kotlina do 1.9 (I1a14c)
  • Wprowadzono flagę DraggableAddDownEventFixEnabled (I848d5)
  • Wprowadziliśmy nową rolę semantyczną o nazwie Karuzela, która emuluje zachowanie listy w pagerach na potrzeby usług ułatwień dostępu. (Id354b, b/354109776, b/239672673)
  • Usunięto domyślny modyfikator graphicsLayer z funkcji kompozycyjnej BasicText. Dodaliśmy eksperymentalną flagę ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled, która umożliwia przywrócenie starego działania. (Ie478d)
  • Dodano Modifier.recalculateWindowInsets(), aby umożliwić dzieciom w hierarchii korzystanie z insetsPadding nawet wtedy, gdy rodzice dopasowali je bez consumeWindowInsets(). (I7f9e4)

Poprawki błędów

  • Wdróż gest podnoszenia w detectDragGestures, elementach, które można przeciągać, i elementach, które można przewijać. Jeśli element, który można przeciągać, przestanie reagować na gest, element nadrzędny będzie mógł go przejąć. Umożliwia to bardziej ciągłą i zintegrowaną obsługę gestów. (Ic88fe)
  • Aktualizowanie zachowania anulowania szybkiego przewijania w elementach przewijanych. Jeśli element przewijany zostanie przesunięty i osiągnie granice, prawidłowo przekaże prędkość przesunięcia do następnego elementu przewijanego w łańcuchu, zamiast kontynuować przesunięcie. (I9326a)

Wersja 1.8.0-alpha02

18 września 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-alpha02 Wersja 1.8.0-alpha02 zawiera te zmiany.

Zmiany w interfejsie API

  • Dostępne są teraz znaki TextOverflow.StartEllipsisTextOverflow.MiddleEllipsis, które umożliwiają umieszczanie wielokropka na początku lub w środku wiersza tekstu jednowierszowego (I38913, b/185418980).

Wersja 1.8.0-alpha01

4 września 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.8.0-alpha01 Wersja 1.8.0-alpha01 zawiera te zmiany.

Wersja 1.7

Wersja 1.7.8

12 lutego 2025 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.8 Wersja 1.7.8 zawiera te zmiany.

Poprawki błędów

  • Naprawiono błąd w BasicTextField z transformacją danych wejściowych podczas zastępowania części wklejonego tekstu. (I73702)

Wersja 1.7.7

29 stycznia 2025 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.7 Wersja 1.7.7 zawiera te zmiany.

Poprawki błędów

  • Usunięto awarię IndexOutOfBound związaną z adnotacją linku. (Ic96d2)
  • Rozwiązano problem z nieskończonym ponownym komponowaniem w niektórych przypadkach brzegowych z linkami. (I04a03)

Znane błędy

  • Wykryliśmy błąd, który w rzadkich przypadkach może powodować nieoczekiwane zawijanie tekstu na urządzeniach z Androidem w wersji API 35. Nie można go rozwiązać w wersji 1.7, więc zostanie naprawiony w wersji 1.8. (b/391378120)

Wersja 1.7.6

11 grudnia 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.6 Wersja 1.7.6 zawiera te zmiany.

Poprawki błędów

  • Rozwiązanie problemu z niewidocznością treści w tekście dla usług ułatwień dostępu.
  • Rozwiązaliśmy problem, który powodował, że AndroidEmbeddedExternalSurface nie resetował się prawidłowo i zawieszał się podczas ponownego użycia na liście leniwej.

Wersja 1.7.5

30 października 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.5 Wersja 1.7.5 zawiera te zmiany.

Poprawki błędów

  • Sprawdź, czy przypięte elementy nie są dwukrotnie umieszczane w obszarze dopełnienia treści. (Ic6224)

Wersja 1.7.4

16 października 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.4 Wersja 1.7.4 zawiera te zmiany.

Poprawki błędów

  • Naprawiliśmy błąd, który powodował rzadkie awarie w polach tekstowych. (I475c6, b/313010266)
  • Usunięto ReusableContentHost u podstawy elementów układu Lazy. Była to potencjalna główna przyczyna awarii „measure called on a deactivated node”. (Id6e60)

Wersja 1.7.3

2 października 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.3 Wersja 1.7.3 zawiera te zmiany.

Poprawki błędów

  • Naprawiono wyciek pamięci w przypadku funkcji BasicText, gdy parametr minLines miał wartość inną niż domyślna.

Wersja 1.7.2

18 września 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.2 Wersja 1.7.2 zawiera te zmiany.

Poprawki błędów

  • Rozwiązanie problemu z elementem, który można było przeciągać, ale w którym brakowało zdarzeń „w dół”, co powodowało, że szybkie przesunięcia wyglądały wolniej niż zwykle.

Wersja 1.7.1

10 września 2024 r.

  • Brak zmian w artefaktach Androida. Usunięto -desktop artefaktów, a dodano -jvmStubs-linuxx64Stubs artefakty. Żaden z tych celów nie jest przeznaczony do użytku. Są to symbole zastępcze, które mają pomóc w pracach nad Jetbrains Compose.

Wersja 1.7.0

4 września 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0 Wersja 1.7.0 zawiera te zmiany.

Ważne zmiany od wersji 1.6.0

  • Znacznie poprawiliśmy wydajność funkcji Modifier.clickable, Modifier.focusable, Modifier.indication, Modifier.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 funkcji Indication są bardziej wydajne niż w przypadku poprzedniego (obecnie wycofanego) interfejsu API rememberUpdatedInstance. Informacje o migracji znajdziesz na stronie developer.android.com.
    • Funkcje clickable / combinedClickable / selectable / toggleable akceptują teraz parametr MutableInteractionSource, który może mieć wartość null. Jeśli wartość jest pusta, a podany element Indication jest IndicationNodeFactory, element Indication można utworzyć tylko w razie potrzeby, co zwiększa wydajność. Jeśli nie przenosisz zmiennej MutableInteractionSource na początek funkcji i nie używasz jej, zalecamy przekazywanie wartości null zamiast remember { MutableInteractionSource() }.
    • Indication#rememberUpdatedInstance zostało wycofane. Powoduje to duże, nieuniknione obniżenie wydajności i uniemożliwia inne optymalizacje. Zamiast tego używaj nowego interfejsu IndicationNodeFactory API.
  • BasicTextField używanie TextFieldState jest już stabilne i zalecamy wszystkim witrynom wywołań rozpoczęcie migracji z BasicTextField(value, onValueChange) na BasicTextField(TextFieldState).
  • Pole 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* doskonale sprawdza się w przypadku dużej liczby elementów, które korzystają z małej konfiguracji maxLines i dynamicznych przycisków „+N więcej”, a komponenty FlowRowFlowColumn są idealne w przypadku małej liczby elementó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, podczas inicjowania ustaw przepełnienie 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 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)
  • Wdrożono eksperymentalną obsługę długich zrzutów ekranu w kontenerach przewijania Compose za pomocą oficjalnego interfejsu Android API (ScrollCaptureCallback).
  • Źródła NestedScrollDrag and FlingUserInput zastępujemy ź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).
  • LazyLayout żądania wstępnego pobierania mogą być teraz oznaczane jako pilne, co oznacza, że spodziewamy się, że ten element będzie potrzebny w następnej klatce, i chcemy zignorować budżet klatki, aby wykonać więcej pracy z wyprzedzeniem (Id513f);
  • Obsługa pisma odręcznego rysikiem na urządzeniach z Androidem U i nowszym. (I002e4)
  • Różne interfejsy API zostały oznaczone jako stabilne.
    • Pagery, przyciąganie, wstawki okien

Wersja 1.7.0-rc01

21 sierpnia 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-rc01 Wersja 1.7.0-rc01 zawiera te zmiany.

Poprawki błędów

  • Naprawiliśmy regresję, która powodowała awarię, gdy dowolny element był aktywny w elemencie nadrzędnym, który można było aktywować (lub kliknąć) i który był wyłączony. (b/317561689)

Wersja 1.7.0-beta07

7 sierpnia 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-beta07 Wersja 1.7.0-beta07 zawiera te zmiany.

Poprawki błędów

  • Funkcje związane z wprowadzaniem tekstu SemanticsNodeInteraction, performTextReplacement, performTextInputperformTextClearance będą teraz zgłaszać błędy asercji, gdy zostaną wywołane w przypadku TextFields tylko do odczytu. (I4ae8f)
  • Rozwiązaliśmy problem z wyglądem hiperlinków. (I23311)
  • Rozwiązanie problemu z modyfikatorem contentReceiver, który nie działał z niektórymi edytorami IME.
  • Generowanie prędkości: zapobieganie propagacji wartości NaN w interfejsie Compose i bibliotece Foundation.

Wersja 1.7.0-beta06

24 lipca 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-beta06 Wersja 1.7.0-beta06 zawiera te zmiany.

Wersja 1.7.0-beta05

10 lipca 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-beta05 Wersja 1.7.0-beta05 zawiera te zmiany.

Poprawki błędów

  • Poprawka dotycząca traktowania wartości NaN w SnapFlingBehavior i Pager.

Wersja 1.7.0-beta04

26 czerwca 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-beta04 Wersja 1.7.0-beta04 zawiera te zmiany.

Poprawki błędów

  • Unikanie awarii podczas pomiaru bardzo długich wierszy tekstu (np.10 tys. znaków) (8157ab)
  • Poprawiono pomiar bardzo dużego tekstu, który powodował awarię w nowej wersji BasicTextField (6b7575)
  • Przywraca zmianę w pomiarze wierszy i kolumn, która w określonych scenariuszach powoduje nieprawidłowe działanie tekstu (69e8ba).

Wersja 1.7.0-beta03

12 czerwca 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-beta03 Wersja 1.7.0-beta03 zawiera te zmiany.

Wersja 1.7.0-beta02

29 maja 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-beta02 Wersja 1.7.0-beta02 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodaje eksperymentalny interfejs API do konfigurowania zachowania wstępnego pobierania LazyGrids podobny do istniejącego eksperymentalnego interfejsu API 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)
  • Zmieniono nazwę SemanticsProperties.Editable na IsEditable, a wartość SemanticsPropertyReceiver.editable na isEditable. Właściwość jest teraz wartością logiczną i jest zawsze określana przez pola tekstowe. (I8acd8)
  • Przeniesiono basicMarquee wartości domyślnych 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 tego flagi. (I3a330)
  • Usunęliśmy wartość „Domyślna” z właściwości MarqueeDefaults. (I1d8a0)
  • Usunięto „Marquee” z usług MarqueeDefaults. (Iad4f4)
  • Usunięto użytkownika TextLinkStyles z zajęć TextStyle. Zamiast tego TextLinkStyles jest częścią konstruktora LinkAnntation i metody AnnotatedString.fromHtml (I90b2b).
  • Naprawiliśmy błąd, który powodował, że Pager zatrzaskiwał się podczas przesuwania w kierunku granicy, gdy był już na niej zatrzymany. (I9f373, b/339171222)
  • W BTF2 działają teraz prawidłowe gesty wyboru myszą. (Ibe8c6)

Wkład zewnętrzny

  • Ponowne przesłanie „Make compose/measure time calculation content-type based in prefetch to improve accuracy” (Iea622)
  • Ulepszenie dokładności obliczania czasu tworzenia/pomiaru na podstawie typu treści w wstępnym pobieraniu (Ibccb1)
  • Udostępnianie modyfikatorów WindowInsetsPadding z typowego zestawu źródeł (I070b2)

Wersja 1.7.0-beta01

14 maja 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-beta01 Wersja 1.7.0-beta01 zawiera te commity.

Zmiany w interfejsie API

  • Ponownie dodaliśmy właściwość KeyboardOptions.shouldShowKeyboardOnFocus jako wycofaną i ukrytą ze względu na zgodność binarną. (I15cfe)
  • Modifier.anchoredDraggable odwraca teraz domyślnie różnice przeciągania w przypadku komponentów o orientacji poziomej używanych w układzie od prawej do lewej. (I3c6d9)
  • AnnotatedString.hasEqualsAnnotations to 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 do funkcji kompozycyjnej Text parametr TextLinkStyles, który umożliwia stylowanie linków. (I31b93)
  • Zastąpiono wywołania zwrotne onDragStartedonDragStopped wywołaniami zwrotnymi, które nie powodują zawieszenia. (I59de8)

Poprawki błędów

  • Usunęliśmy błąd, który powodował awarię komponentu Pager, gdy wartość contentPadding była większa niż ograniczenia przychodzące. Pager wymusza teraz, aby wartości ujemne zwracane przez PageSize były równe 0. (Iba5d8, b/314008560)

Wersja 1.7.0-alpha08

1 maja 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-alpha08 Wersja 1.7.0-alpha08 zawiera te zmiany.

Nowe funkcje

  • Dodaliśmy menu kontekstowe po kliknięciu prawym przyciskiem myszy ikon BasicTextFieldSelectionContainer, które zawiera opcje wycinania, kopiowania, wklejania i zaznaczania wszystkiego. (If8c93, Ia2b49, I6f268)

Zmiany w interfejsie API

  • LazyLayout żądania wstępnego pobierania mogą być teraz oznaczane jako pilne, co oznacza, że spodziewamy się, że ten element będzie potrzebny w następnej klatce, i chcemy zignorować budżet klatki, aby wykonać więcej pracy z wyprzedzeniem (Id513f);
  • Zmieniono nazwę isPositionedByParentWithDirectManipulation 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 dla getScrollViewportLength zgodnie z opinią rady ds. API. (Ibc74a)
  • Zmieniono nazwy interfejsów API przekazywania pisania odręcznego rysikiem. (Ica45f, b/327271923)
  • Zmień nazwę TextInclusionStrategy.isInside na isIncluded. Ustaw typ zwracany 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)
  • Rozwiązanie problemu z robieniem długich zrzutów ekranu w przypadku przewijanych kontenerów z reverseScrolling=true. (I7c59c)
  • Rozwiązaliśmy problem polegający na tym, że AnchoredDraggableState currentValue zmieniał się po zbliżeniu się do granic stanu. (Iea30b, b/333846848)

Wkład zewnętrzny

  • Nazwa PrefetchExecutor -> PrefetchScheduler została zmieniona, aby lepiej odzwierciedlać zakres obowiązków. (Ib9154)
  • Dodano obsługę wstępnego pobierania elementów w zagnieżdżonych komponentach LazyLists (np. w komponencie LazyColumn, który renderuje zagnieżdżone komponenty LazyRows). Oczekuje się, że ta zmiana zmniejszy liczbę pominiętych klatek podczas przewijania tych komponentów LazyLists. Domyślnie w przypadku implementacji wstępnie pobierane są pierwsze 2 elementy zagnieżdżone, ale to działanie można kontrolować za pomocą nowych interfejsów API LazyLayoutPrefetchStrategy(nestedPrefetchItemCount)LazyListPrefetchStrategy#onNestedPrefetch. (I51952)

Wersja 1.7.0-alpha07

17 kwietnia 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-alpha07 Wersja 1.7.0-alpha07 zawiera te zmiany.

Nowe funkcje

  • Dodano obiekt TextDefaults, który zawiera metody tworzenia obiektu LinkAnnotation i parsowania ciągu znaków z tagami HTML, które stosują atrybut 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 o nazwie 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 stylów normalnego, najechanej i skupionej. (I5f864, b/139312671)
  • Wprowadź ViewConfiguration.HandwritingGestureLineMargin dla gestów pisma odręcznego. Obsługa gestu pisania odręcznego w przypadku ję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. przewijania, które jest domyślnie zaimplementowane). Dzięki temu animacje oparte na approachLayout są bardziej intuicyjne, ponieważ twórcy mają możliwość rozróżnienia, które przesunięcie animować, a które zastosować bezpośrednio podczas animowania swojego podejścia. (I60ec7)
  • Wprowadź requestScrollToItem 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)
  • Przedstaw requestScrollToPage w miejscu podziału na strony. W przypadku każdego przejścia pomiaru klient może zrezygnować z utrzymywania indeksu na podstawie klucza, wywołując funkcję requestScrollToPage. Nie zmienia to w żaden sposób dotychczasowego działania, chyba że zostanie wywołana 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).
  • Typ pliku „UrlAnnotation” został wycofany. Zamiast niego używaj typu „LinkAnnotation.Url”. Jeśli używasz motywów Material Design, użyj obiektu TextDefaults, aby utworzyć adnotację z zastosowanym motywem Material Design (I8d180, b/323346545).
  • Nazwa została zmieniona z String.parseAsHtml na AnnotatedString.Companion.fromHtml (I43dcd)
  • Dodano argumenty stylu (linkStyle, focusedLinkStyle, hoveredLinkStyle) i detektor 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 dotyczące stylu opartego 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ą zaznaczone lub gdy nad nimi najedziesz kursorem. (I81ce4, b/139312671)
  • Flaga funkcji długich zrzutów ekranu została usunięta. (I28648, b/329128246)
  • LazyColumn będzie teraz prawidłowo renderować przyklejone nagłówki na długich zrzutach ekranu. (I8d239, b/329296635)
  • Stabilizacja większości pozostałych eksperymentalnych interfejsów API wprowadzonych w nowej wersji BasicTextField. (I714e2)
  • Dodano parametr textObfuscationCharacter do elementu BasicSecureTextField, który określa, jakiego znaku używać podczas maskowania treści. (I0588b)
  • Źródła Drag i Fling zostaną zastąpione źródłami UserInputSideEffect, aby uwzględnić rozszerzoną definicję tych źródeł, która obejmuje teraz animacje (Side Effect) oraz kółko myszy i klawiaturę (UserInput). (I40579)NestedScroll
  • Wprowadź LocalBringIntoViewSpec, czyli zależne od platformy zachowanie przewijania, które jest stosowane w warstwie modyfikatora Scrollable. (I27aa5, b/317453911)
  • Użytkownik TextFieldCharSequence został usunięty. TextFieldBuffer.originalValues zastępuje TextFieldBuffer.originalTextTextFieldBuffer.originalSelection. (I2c7d6)
  • Pole ImeOptions.hintLocales nie może już mieć 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 uwzględnia już 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. (I82c2c)

Wkład zewnętrzny

  • Zmiana nazw 2 interfejsów API przewijania (I56a75)

Wersja 1.7.0-alpha06

3 kwietnia 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-alpha06 Wersja 1.7.0-alpha06 zawiera te zmiany.

Nowe funkcje

  • Dodaliśmy obsługę animacji pojawiania się i znikania elementów w LazyColumn 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 na potrzeby nadchodzącego przekazywania pomiarów, wywołując funkcję LazyListState.requestToScroll, która nie zawiesza działania. (I98036, b/209652366)
  • Dodaliśmy metodę parseAsHtml dla ciągów ze stylami: umożliwia ona przekształcenie ciągu oznaczonego tagami HTML 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 za pomocą oficjalnego interfejsu Android API (ScrollCaptureCallback). Ta funkcja jest eksperymentalna i może obecnie nie obsługiwać wszystkich przypadków prawidłowo. Dlatego jest ona obecnie domyślnie wyłączona. Aby włączyć tę funkcję, ustaw flagę ComposeFeatureFlag_LongScreenshotsEnabled na wartość true. Ten flag zostanie usunięty przed wersją beta 1.7. (I2b055, b/329296471)
  • Wprowadzenie nowego interfejsu GraphicsLayer API, który zapewnia większą elastyczność w zakresie umieszczania i renderowania instancji GraphicsLayer oraz obsługuje wewnętrzne funkcje renderowania bez konieczności koordynowania z implementacjami Composable w celu określenia instancji modyfikatora GraphicsLayer.

Zmiany w interfejsie API

  • Wszystkie parametry KeyboardOptions mają teraz domyślnie nieokreśloną wartość. Dodano metodę KeyboardOptions.merge.
  • Zmieniono nazwę KeyboardOptions.autoCorrect na autoCorrectEnabled i umożliwiono przypisywanie wartości null, która oznacza, że nie podano żadnej wartości. (Ia8ba0, b/295951492)
  • Zmieniono nazwę outOfBoundsPageCount na beyondViewportPageCount. (I129c6)
  • Wartość fun ClipEntry.getMetadata() została zmieniona na val ClipEntry.clipMetadata. (I50155)
  • Użytkownik TextFieldState.valueAsFlow() został usunięty. Preferowane jest 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 odbiornika w funkcji. (I919cc)
  • 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 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 otrzymanego parametru TransferableContent, ponieważ może on być niezgodny ze skonfigurowanym parametrem 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.
  • Użytkownik 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łcany w interfejs funkcji. Usunięto też przeciążenie funkcji 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ł przekształcony w stabilny interfejs API. (I37999)

Poprawki błędów

  • Naprawiliśmy błąd, który powodował, że wariant BasicTextField(state) nie działał z klawiaturami CJK(opartymi na kompozycji). (I54425)
  • Usunęliśmy błąd, który powodował, że w określonych scenariuszach z ponownym użyciem Modifier.Node funkcja Modifier.dragAndDropTarget() mogła odwoływać się do nieaktualnych danych. (I05bb1)
  • Cofnięto niedawną zmianę umowy, zgodnie z którą wywołania AnchoredDraggableState#anchoredDrag byłyby zamykane po zakończeniu operacji anchoredDrag. (I95715)

Wersja 1.7.0-alpha05

20 marca 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-alpha05 Wersja 1.7.0-alpha05 zawiera te zmiany.

Zmiany w interfejsie API

  • Usunięto eksperymentalny lokalny element kompozycji LocalTextLinkStyle do stylizowania hiperlinków. (Iebfa7)
  • Usunięto eksperymentalne zastąpienie BasicText argumentem onLinkClicked. W przyszłości udostępnimy API zastępujące obsługę hiperlinków. (I107d5)
  • Usunięto metody i właściwości związane z punktami kodowymi w sekcjach TextFieldStateTextFieldBuffer. Usunęliśmy też sufiksy inChars z pozostałych interfejsów API związanych z wyborem i kompozycją. (Ief7ce)
  • currentValue AnchoredDraggable będzie teraz aktualizowany po przejściu przez punkt zakotwiczenia. Użyj settledValue, aby otrzymać poprzednią semantykę currentValue, aktualizującą się tylko po zatrzymaniu się w punkcie zakotwiczenia. Postęp jest teraz udostępniany jako funkcja (wymagająca punktu początkowego i końcowego), a nie jako właściwość. (Ibe6e8, b/318707189, b/298271489, b/294991954)
  • BasicTextField(state), TextFieldState, InputTransformation, OutputTransformation, TextFieldLineLimits, TextFieldDecorator są stopniowo przekształcane w wartości stabilne. (I9582b)
  • Wprowadziliśmy InterceptPlatformTextInput, aby ułatwić pisanie testów związanych z IME niskiego poziomu i innych przypadków użycia IME niskiego poziomu. PlatformTextInputTestOverride zostało wycofane. (I862ed, b/322680547)
  • Podzielenie restrictedConstraints() na 2 metody: fitPrioritizingWidth()fitPrioritizingHeight() (I6d7fd)

Wkład zewnętrzny

  • Dodano 2 nowe interfejsy API isLastScrollForward/isLastScrollBackward, które sprawdzają kierunek przewijania w przypadku ostatniej czynności przewijania. Jeśli nie ma jeszcze żadnej czynności przewijania, zwracają wartość false. (I63a0e)

Wersja 1.7.0-alpha04

6 marca 2024 roku

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-alpha04 Wersja 1.7.0-alpha04 zawiera te zmiany.

Zmiany w interfejsie API

  • Obsługa pisma odręcznego rysikiem na urządzeniach z Androidem U i nowszym. (I002e4)
  • Dodano hintLocales do KeyboardOptions, aby umożliwić TextFields podpowiadanie edytorom IME określonych ustawień regionalnych w celu wstępnego ustawienia preferowanego języka. (Id18c2)
  • Usunięto eksperymentalne przeciążenia funkcji 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 semantic action, aby przekazywać do systemu ułatwień dostępu informacje o komponentach przewijanych w Compose. Ta zmiana dotyczy też użycia tej właściwości w listach przewijanych Foundation. (Ic5fa2)
  • Nazwa BasicTextField2 została zmieniona na BasicTextField. (Ie5713)
  • FocusRequester.createRefs jest już stabilna (I4d92c, b/261436820)
  • Wprowadzono DelegatableNode.scrollIntoView(), aby umożliwić węzłom modyfikatorów bezpośrednie wysyłanie żądań scrollIntoView. (I2b3b7, b/299939840)
  • Wprowadzono DelegatableNode.requireView(), aby umożliwić węzłom modyfikatorów uzyskiwanie bieżą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

  • 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.7.0-alpha03

21 lutego 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-alpha03 Wersja 1.7.0-alpha03 zawiera te zmiany.

Zmiany w interfejsie API

  • Wprowadziliśmy DelegatableNode.requireLayoutCoordinates() jako sposób na uzyskanie bieżą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)
  • BasicTextField2 i powiązane interfejsy API w pakiecie androidx.compose.foundation.text2 zostały przeniesione do 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 zapewnienie komponentów o optymalnej wydajności. Komponent ContextualFlow* doskonale sprawdza się w przypadku dużej liczby elementó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 elementów, czyli mniej niż 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, 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.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-alpha02 Wersja 1.7.0-alpha02 zawiera te zmiany.

Zmiany w interfejsie API

  • Aplikacje HorizontalPager, VerticalPagerPagerState zostaną przeniesione do wersji stabilnej. (I67660, b/316966909)
  • Dodano LocalTextLinkStylekompozycję lokalną, która umożliwia zmianę stylu linków w tekście w całej aplikacji. Jeśli używasz w niej własnego motywu, musisz ustawić tę kompozycję lokalną zgodnie z motywem. Gdy używasz motywu Material, kolor linku jest domyślnie ustawiony na kolor podstawowy Material. (I7eb10)
  • Wprowadzono modyfikator receiveContent, który umożliwia deweloperom otrzymywanie bogatych treści w Jetpack Compose.
  • receiveContent jest zintegrowany z BasicTextField2, aby akceptować treści multimedialne dostarczane przez klawiaturę programową lub wklejane ze schowka. (I81b72)
  • W tej zmianie zastępujemy symbol SnapFlingBehavior symbolem TargetedFlingBehavior w pagerze, aby umożliwić inne przypadki użycia i zapewnić większą elastyczność. (I762ea)
  • W ramach tej zmiany interfejsy Snapping API stają się stabilne. Usuwamy też część kodu testowego i dodajemy więcej przykładów do przyciągania. (Id8da9)
  • Wprowadzamy TargetedFlingBehavior, czyli FlingBehavior, który umożliwia przekazywanie informacji o stanie trwającej animacji i docelowym przesunięciu przewijania. (I6a207)

Poprawki błędów

  • BasicTextField2 utrzymuje teraz kursor w widoku podczas pisania, gdy został on przewinięty poza widok lub gdyby miał się przesunąć poza widok z powodu wprowadzania danych. (Ieb856, b/237190748)

Wkład zewnętrzny

  • Dodaje eksperymentalny interfejs API do konfigurowania wstępnego pobierania w przypadku elementów LazyList. (I022a4)

Wersja 1.7.0-alpha01

24 stycznia 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.7.0-alpha01 Wersja 1.7.0-alpha01 zawiera te zmiany.

Nowe funkcje

  • Dodano nowy Indication API: IndicationNodeFactory. Dzięki temu implementacje Indication są wydajniejsze 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 z wartością null. Jeśli wartość jest pusta, a podany element Indication jest elementem IndicationNodeFactory, element Indication można utworzyć leniwie tylko wtedy, gdy jest to potrzebne, 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 do AnchoredDraggable parametr decayAnimationSpec, który umożliwia używanie 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ówny pod względem funkcji wersji BasicTextField, a jego działanie powinno być gotowe do wdrożenia w środowisku produkcyjnym. Interfejs API pozostaje jednak na razie w fazie eksperymentalnej. Przed ustabilizowaniem zostanie zmieniona na BasicTextField i przeniesiona do tego samego pakietu.
  • Wprowadzono pierwszą wersję roboczą interfejsu OutputTransformation API dla BasicTextField2. Ten interfejs API zastępuje większość przypadków użycia VisualTransformation w starym BasicTextField. Nie jest ona jeszcze kompletna i niektóre funkcje mogą nie działać prawidłowo, ale będziemy wdzięczni za wszelkie opinie na temat użyteczności interfejsu API w Twoich przypadkach użycia. (aosp/2708848)
  • Wprowadzono LinkAnnotation, który umożliwia dodawanie linków i elementów klikalnych do tekstu. Funkcja linków nie jest jeszcze w pełni gotowa i wkrótce wprowadzimy w interfejsie API kolejne zmiany.
  • Wprowadzono modyfikator receiveContent, który umożliwia deweloperom otrzymywanie bogatych treści w Jetpack Compose.
  • receiveContent jest zintegrowany z BasicTextField2, aby akceptować treści multimedialne dostarczane przez klawiaturę programową lub wklejane ze schowka.
  • KeyboardOptions.shouldShowKeyboardOnFocus umożliwia wyłączenie domyślnego działania BasicTextField, czyli żądania klawiatury ekranowej po zaznaczeniu.
  • Funkcje TextInputServiceLocalTextInputService zostały wycofane. Zamiast tego użyj PlatformTextInputModifierNode, aby zintegrować się bezpośrednio z interfejsami API platformy IME. (aosp/2862698)
  • Indication#rememberUpdatedInstance zostało wycofane. Powoduje to duże, nieuniknione obniżenie wydajności i uniemożliwia inne optymalizacje. Zamiast tego używaj nowego 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 w późniejszych etapach pomiaru lub rysowania prowadzą do nieodwracalnych wyjątków. Wyrzucanie wyjątków podczas tworzenia kompozycji zwiększa prawdopodobieństwo, że deweloperzy zobaczą te błędy podczas tworzenia, co pomoże uniknąć awarii w środowisku produkcyjnym. (I0fd42)
  • VisualTransformation nie zgłosi błędu, jeśli zwrócisz nieprawidłowy indeks dla nieprawidłowego indeksu (b/316401857 ).

Wersja 1.6

Wersja 1.6.8

12 czerwca 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.8 Wersja 1.6.8 zawiera te zmiany.

Wersja 1.6.7

1 maja 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.7 Wersja 1.6.7 zawiera te zmiany.

Wersja 1.6.6

17 kwietnia 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.6 Wersja 1.6.6 zawiera te zmiany.

Poprawki błędów

  • Naprawiliśmy błąd, który w określonych warunkach powodował awarię podczas przełączania atrybutów enabled lub readOnly elementu TextField. (Iae17b)

Wersja 1.6.5

3 kwietnia 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.5 Wersja 1.6.5 zawiera te zmiany.

Poprawki błędów

  • Dodaje dzienniki debugowania do trudnych do odtworzenia błędów w wierszu/kolumnie: (b/300280216b/297974033)

Wersja 1.6.4

20 marca 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.4 Wersja 1.6.4 zawiera te zmiany.

Poprawki błędów

  • Gest zaznaczania przez długie naciśnięcie i przeciągnięcie, który w pierwszej klatce przeciągnięcia wychodzi poza granice układu tekstu, nie powoduje już awarii. (Icdf90, b/325307463)

Wersja 1.6.3

6 marca 2024 roku

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.3 Wersja 1.6.3 zawiera te zmiany.

Wersja 1.6.2

21 lutego 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.2 Wersja 1.6.2 zawiera te zmiany.

Poprawki błędów

  • Rozwiąż problem z nieprawidłowym resetowaniem AnimateContentSize. (I07051)
  • Rozwiązaliśmy problem, który w niektórych przypadkach powodował nadmierne buforowanie intrinsicHeight tekstu. (3cd398, b/217910352)

Wersja 1.6.1

7 lutego 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.1 Wersja 1.6.1 zawiera te zmiany.

Poprawki błędów

  • Poprawiliśmy pomiar siatki kaskadowej po przewinięciu poza limit. (bffc39)
  • Dodaj sprawdzanie układu o dużych wymiarach. (e74af5)
  • Poprawiono umieszczanie elementów o rozmiarze 0 na początku siatki schodkowej. (785f94)
  • Wywołuj wywołanie zwrotne onRelease w tej samej kolejności co onForgotten. (31ce3b)

Wersja 1.6.0

24 stycznia 2024 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0 Wersja 1.6.0 zawiera te zmiany.

Ważne zmiany od wersji 1.5.0

  • Nowy modyfikator Modifier.anchoredDraggable, który umożliwia przeciąganie i animowanie między predefiniowanym zestawem punktów zakotwiczenia. Ten modyfikator ma zastąpić Modifier.swipeable. Dowiedz się, jak z niej korzystać i jak przeprowadzić migrację z Modifier.swipeable, w przewodniku po migracji.
  • Dodaliśmy funkcję przeciągania i upuszczania między aplikacjami i komponentami. Aby rozpocząć, zapoznaj się z DragAndDropTarget, Modifier.dragAndDropSource i innymi interfejsami API.
  • Modifier.draggable2D to nowy modyfikator, który umożliwia łatwe przeciąganie w 2D. Zobacz przykład.
  • Dodano komponenty AndroidExternalSurfaceAndroidEmbeddedExternalSurface, aby ułatwić dodawanie komponentów opartych na powierzchni w Compose.
  • 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.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-rc01 Wersja 1.6.0-rc01 zawiera te zmiany.

Zmiany w interfejsie API

  • Konstruktor rozszerzenia DragAndDropTarget() został usunięty. Utwórz nową instancję za pomocą object: DragAndDropTarget {}. (I32318)

Wersja 1.6.0-beta03

13 grudnia 2023 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-beta03 Wersja 1.6.0-beta03 zawiera te zmiany.

Poprawki błędów

  • Naprawiono błąd powodujący awarię w przypadku bardzo dużego tekstu mierzonego z użyciem nieskończonych ograniczeń. (I1a7df, b/312294386)
  • PlatformImeOptions jest teraz klasą konkretną, a nie interfejsem. (If40a4)

Wersja 1.6.0-beta02

29 listopada 2023 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-beta02 Wersja 1.6.0-beta02 zawiera te zmiany.

Poprawki błędów

  • Poprawka problemu z nieaktualizowaniem się wartości canScroll po przewijaniu bez zmiany układu. (I60a86)
  • Poprawka dla Modifier.animateItemPlacement()LookaheadScope po niewielkim przewinięciu. (I3a2b7)

Wersja 1.6.0-beta01

15 listopada 2023 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-beta01 Wersja 1.6.0-beta01 zawiera te zmiany.

Zmiany w interfejsie API

  • Modyfikator DragAndDropTarget przyjmuje teraz jawnie odbierają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 elementu DragAndDropModifierNode. Jeden do odbierania przelewów i jeden do przesyłania danych (I69481).
  • Zaktualizowano wartość maximumFlingVelocity, aby była reprezentowana jako liczba zmiennoprzecinkowa. Zaktualizowana dokumentacja, aby dokładniej wyjaśnić pojęcie maximumFlingVelocity. (I8adc7)
  • onDragAndDropStart w fabryce DragAndDropModifierNode został(a) przemianowany(a) na acceptDragAndDropTransfer.

    Adres acceptsDragAndDropTransfer został dodany do dragAndDropTarget Modifier, aby można było zaakceptować go w sesji przeciągania i upuszczania. Ta funkcja lambda zwraca wartość logicznąDragAndDropTarget, jeśli użytkownik jest zainteresowany sesją przeciągania i upuszczania. Zastępuje ona inne funkcje lambda do przetwarzania zdarzeń przeciągania.

    dodano funkcję fabryczną DragAndDropTarget do odbierania danych z sesji przeciągania i upuszczania (Iebf3a);

  • Udostępnienie 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. DragAndDropModifierNode.drag przyjmuje teraz parametry dla lambdy transferData, rozmiaru dekoracji i przeciągania dekoracji DrawScope.

    DragAndDropTarget ma metody dla poszczególnych zdarzeń przeciągania i upuszczania zamiast jednej metody abstrakcyjnej.

    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.

    Usunięto element DragAndDropEventType (I645b1)

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

  • Zastąp OriginalText tekstem TextSubstitution. (Ifa5a8)

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

  • Elementy podrzędne elementu 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ą uznawane 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 magnifierCenterModifier.magnifier jest ustawiany jako dopuszczający wartość null, ale zachowuje to samo działanie domyślne. (I6aa66)

  • Interfejsy API Material SwipeToReveal (w przypadku kart i elementów) korzystają teraz z interfejsu API opartego na slotach (zgodnie z zaleceniami Compose) zamiast z instancji opartych na klasach danych do tworzenia tych slotów. Jest to zmiana powodująca niezgodność wsteczną. Przykłady użycia nowego interfejsu API znajdziesz w wersji demonstracyjnej i przykładowym kodzie. (Ia8943)

Poprawki błędów

  • Zaimplementuj metody equals i hashcode dla klasy PageSize.Fixed. (Ie3ede, b/300134276)
  • Usunęliśmy błąd, który powodował, że układ BasicText nie zmniejszał się, gdy zmieniał się element minWidth, a jego rozmiar był mniejszy niż początkowe ograniczenia pomiaru maxWidth (Idb19c).minWidth
  • Dodaliśmy obsługę renderowania gradientu kołowego w ArcLine. (I4d5bb)
  • Rozwiązanie problemu ze zgodnością binarną ze zmianą wstawki okna (Iee695)
  • Usuń podstawową warstwę materiału w przypadku komponentu lub przycisku Material3, ponieważ testy porównawcze pokazują, że bez niej wydajność jest lepsza. (I55555)

Wersja 1.6.0-alpha08

18 października 2023 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-alpha08 Wersja 1.6.0-alpha08 zawiera te zmiany.

Nowe funkcje

  • Modifier.draggable2D to nowy modyfikator, który umożliwia łatwe przeciąganie w 2D. Zobacz Sample (Id95f5, b/214412658)

Zmiany w interfejsie API

  • W funkcji Modifier.dragAndDrawSource zmieniliśmy nazwę lambdy 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 odpowiedni 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

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-alpha07 Wersja 1.6.0-alpha07 zawiera te zmiany.

Zmiany w interfejsie API

  • Wprowadziliśmy PlatformTextInputMethodTestOverride do pisania testów niestandardowych edytorów tekstu. (Id159b)
  • Nazwa GraphicsSurface została zmieniona na AndroidExternalSurface (I11680)
  • Dodano DisableNonLinearFontScalingInCompose tymczasową flagę, która wyłącza nieliniowe skalowanie czcionki. Jeśli potrzebujesz czasu na ich wyczyszczenie, ustaw w testach wartość DisableNonLinearFontScalingInCompose = true. Ten atrybut zostanie usunięty w Compose 1.6.0-beta01. (Ic9486)
  • Dodano kolekcje ColorListColorSet, które nie wymagają 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 ikony basicMarquee po zmianie prędkości. (Id2e77, b/297974036)

Wersja 1.6.0-alpha06

20 września 2023 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-alpha06 Wersja 1.6.0-alpha06 zawiera te zmiany.

Nowe funkcje

  • Nowe komponenty Composable dla SurfaceView, TextureView: GraphicsSurface() i EmbeddedGraphicsSurface(). Jest to eksperymentalny interfejs API, który może ulec zmianom i modyfikacjom. (I9ddb2)
  • Interfejs Modifier.magnifier() jest teraz stabilnym interfejsem API. Obejmuje to usunięcie znaku MagnifierStyle na rzecz parametrów wbudowanych w sam modyfikator. (I83bec, b/298381260, b/262367109, b/261438887)

Zmiany w interfejsie API

  • Wprowadzone w ScrollScope funkcje updateCurrentPage i updateTargetPage to ostatnie elementy niezbędne do umożliwienia dostosowywania animowanego przewijania PagerState.scroll. (I9cad5, b/267744105, b/243786897)
  • Usuń gęstość z pliku 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 przekazać za pomocą podejścia lub przesunięć przyciągania. (If320c)

Zmiany w zachowaniu

  • Compose używa teraz nieliniowego skalowania czcionek, co zwiększa czytelność i ułatwia korzystanie z aplikacji. Gdy skala czcionki w ustawieniach systemu jest większa niż 100%, mały tekst zwiększa się normalnie, ale już duży tekst zwiększa się tylko nieznacznie. Wysokość wiersza zdefiniowana w SP będzie się też automatycznie dostosowywać, aby zachować proporcje do wysokości przy skali 100%. Więcej informacji znajdziesz w sprawdzonych metodach dotyczących skalowania czcionek. (I11518)

Poprawki błędów

Wersja 1.6.0-alpha05

6 września 2023 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-alpha05 Wersja 1.6.0-alpha05 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodaj przeciążenia dla funkcji BasicSecureTextField, które akceptują niezmienną wartość i wywołanie zwrotne, aby zmienić tę wartość, tak jak w przypadku obecnego interfejsu API BasicTextField. (Ia4882)
  • Dodaj Modifier.preferKeepClear(), aby oznaczyć element jako kompozycyjny, co oznacza, że nie chcesz, aby na interfejsie API na poziomie 33 lub wyższym pojawiały się pływające okna. (Ib51d5, b/297260115)
  • Prędkości przesunięcia w komponentach View, takich jak ScrollViewRecyclerView, są ograniczone do ViewConfiguration.ScaledMaximumFlingVelocity. Komponowanie ma teraz własną wersję maximumFlingVelocity, która dotyczy 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.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-alpha04 Wersja 1.6.0-alpha04 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodanie interfejsu ReusableComposition do zarządzania cyklem życia i ponownym wykorzystywaniem podkompozycji. (I812d1, b/252846775)
  • Modifier.focusGroup został przeniesiony do stabilnych interfejsów API. (I7ffa3)
  • Dodaj przeciążenia dla funkcji BasicTextField2, które akceptują niezmienną wartość i wywołanie zwrotne, aby zmienić tę wartość, tak jak w przypadku obecnego interfejsu API BasicTextField. (I3f2b8)
  • Interfejs GridItemSpan::currentLineSpan jest teraz stabilnym interfejsem API. (Icc29c)
  • Interfejs 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 działaniem w widokach. (I93352, b/289088847)
  • Modifier.consumeWindowInsets(PaddingValues) jest teraz stabilny.
    • Interfejs API Deprecated Modifier.consumedWindowInsets został usunięty. Zamiast niej używaj zasady Modifier.consumeWindowInsets. (Id72bb)

Wersja 1.6.0-alpha03

9 sierpnia 2023 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-alpha03 Wersja 1.6.0-alpha03 zawiera te zmiany.

Zmiany w interfejsie API

  • Przeciążenie LazyLayout zostało dodane i akceptuje funkcję lambda LazyLayoutItemProvider, a nie zwykły obiekt, jak to było wcześniej. Poprzednie przeciążenie zostało wycofane. (I42a5a)
  • Dodano obsługę konfigurowania privateImeOptions (Idb772)

Poprawki błędów

  • Rozwiązaliśmy problem z wyświetlaniem klawiatury i możliwością edytowania pól tekstowych, gdy wartość readOnly wynosiła „true”. Naprawiliśmy też problem polegający na tym, że klawiatura nie wyświetlała się, gdy wartość readOnly zmieniała się z prawda na fałsz, gdy element był aktywny. (I34a19, b/246909589)

Wersja 1.6.0-alpha02

26 lipca 2023 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-alpha02 Wersja 1.6.0-alpha02 zawiera te zmiany.

Zmiany w interfejsie API

  • Wprowadzono PagerLayoutInfo z informacjami zebranymi po przejściu weryfikacji 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 żądanie ostrości w testach. (Ie8722)
  • Całkowicie przeprojektowany PlatformTextInput* interfejs API. (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.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.6.0-alpha01 Wersja 1.6.0-alpha01 zawiera te zmiany.

Nowe funkcje

  • Wprowadziliśmy nowy interfejs API AnchoredDraggable w Foundation. Można go używać do tworzenia komponentów, które można przeciągać między różnymi stanami, np. wysuwanych od dołu arkuszy modalnych. Ten interfejs API zastępuje interfejs Swipeable Material Design. (I4a2ed)

Zmiany w interfejsie API

  • Wesprzyj kanał InputConnection#requestCursorUpdates (I0c69b)
  • Wprowadzono scrollAnimationSpec, aby umożliwić niestandardowe specyfikacje animacji. Ustawienie BringIntoViewCalculator zostało zmienione na BringIntoViewScroller. (Idb741)
  • Dodaj typ ResourceResolutionException, aby opakować obiekty throwable zgłaszane podczas próby wczytania zasobów bitmapowych z opisem ścieżki zasobu, którego nie udało się wczytać. (I19f44, b/230166331, b/278424788)
  • Dodano właściwości i działania semantyczne, aby obsługiwać tłumaczenie tekstu. (I4a6bc)
  • Wprowadziliśmy interfejs API BringIntoViewCalculator, którego można używać do dostosowywania sposobu, w jaki komponenty takie 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 wyrazy i zmniejszane o znaki. (Ic0c6c, b/180639271)
  • Dodano FocusTargetModifierNode interfejs, za pomocą którego można tworzyć niestandardowe FocusTarget. (I9790e)

Wersja 1.5

Wersja 1.5.4

18 października 2023 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.5.4 Wersja 1.5.4 zawiera te zmiany.

Wersja 1.5.3

4 października 2023 roku

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.5.3 W tej wersji nie wprowadzono żadnych zmian.

Wersja 1.5.2

27 września 2023 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.5.2 Wersja 1.5.2 zawiera te zmiany.

Poprawki błędów

  • Naprawiliśmy błąd w tekście, który w określonych okolicznościach powodował awarie, gdy semantyka była nieprawidłowa.

Wersja 1.5.1

6 września 2023 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.5.1 Wersja 1.5.1 zawiera te zmiany.

Poprawki błędów

  • Rozwiązaliśmy problem z wyświetlaniem klawiatury i możliwością edytowania pól tekstowych, gdy wartość readOnly wynosiła „true”. Naprawiliśmy też problem polegający na tym, że klawiatura nie wyświetlała się, gdy wartość readOnly zmieniała się z prawda na fałsz, gdy element był aktywny. (I34a19, b/246909589)

Wersja 1.5.0

9 sierpnia 2023 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.5.0 Wersja 1.5.0 zawiera te zmiany.

Ważne zmiany od wersji 1.4.0

  • Wiele podstawowych modyfikatorów, w tym Modifier.clickable, Modifier.draggable, Modifier.scrollable, modyfikator układu i inne, zostało przeniesionych do 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 zamiast w samym elemencie Pager.

Wersja 1.5.0-rc01

26 lipca 2023 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.5.0-rc01 Wersja 1.5.0-rc01 zawiera te zmiany.

Poprawki błędów

  • Dostępna jest opcjonalna inspekcja, która zaleca migrację wywołań mutableStateOf() do odpowiednich typów specjalistycznych dla typów prostych. Jego identyfikator to AutoboxingStateCreation. Wcześniej ta kontrola była domyślnie włączona we wszystkich projektach. Aby zobaczyć to ostrzeżenie w edytorze Androida Studio i w wynikach lintowania projektu, zmień jego ważność z informacyjnej na ostrzeżenie (lub wyższą), deklarują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.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.5.0-beta03 Wersja 1.5.0-beta03 zawiera te zmiany.

Wersja 1.5.0-beta02

7 czerwca 2023 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.5.0-beta02 Wersja 1.5.0-beta02 zawiera te zmiany.

Wersja 1.5.0-beta01

24 maja 2023 r.

Zostanie wycofaneandroidx.compose.foundation:foundation-*:1.5.0-beta01 Wersja 1.5.0-beta01 zawiera te zmiany.

Zmiany w interfejsie API

  • Wdróż PlatformDataProvider, aby podawać tętno i dzienną liczbę kroków. Interfejs SensorGateway zostanie usunięty z publicznego interfejsu API. (I55b84)

Poprawki błędów

  • Ograniczanie przydziałów podczas pomiarów leniwych list, siatek itp. (Iaf9e2)
  • Zmniejszone przydziały podczas stosowania zrzutów (I65c09)
  • Usunięto przydziały z animacji sprężynowych (Ie9431)
  • Usunięto przydział z TextLayout (I0fd11)
  • Usunięto wiele alokacji w śledzeniu prędkości wskaźnika (I26bae)

Wersja 1.5.0-alpha04

10 maja 2023 r.

androidx.compose.foundation:foundation:1.5.0-alpha04androidx.compose.foundation:foundation-layout:1.5.0-alpha04 zostały opublikowane. Wersja 1.5.0-alpha04 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodano zoptymalizowany element TextStyle.merge(...) z pełną listą parametrów. (Iad234, b/246961787)
  • Przedstaw SnapLayoutInfoProvider, którego można używać z LazyGridState. (I92134, b/269237141, b/260914964)
  • Dodano eksperymentalny Modifier.animateItemPlacement() zakres elementu leniwych siatek z przesunięciem. Możesz zastosować go do elementów, aby uzyskać animacje zmiany pozycji lub zmiany kolejności w automatyzacji. (I4b62d, b/257034719)
  • Promuj GridCells.FixedSize do wersji stabilnej. FixedSize 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. Użyj tego parametru, aby określić próg pozycji dla krótkiego przyciągania w komponencie Pager. (If8f7f)
  • Tekst SnapLayoutInfoProvider.calculateSnappingOffsetBounds został zamieniony na calculateSnappingOffset. W tej nowej metodzie po prostu prosimy o następne przesunięcie, do którego ma się przyciągnąć. Obliczenia granic należy przeprowadzać na poziomie implementacji, ponieważ mogą się one różnić w zależności od tego, jak ma działać przyciąganie. (I923a4)
  • Interfejsy API LazyStaggeredGrid zostały przeniesione do wersji stabilnej. (I633a5)
  • Usuń urządzenie pageCount z konta Horizontal/VerticalPager. Należy go podać podczas tworzenia stanu. Zaktualizowaliśmy PagerStaterememberPagerState, aby akceptować pageCount. (Ieb52d, b/266965072)
  • Usuń urządzenie pageCount z konta Horizontal/VerticalPager. Należy go podać podczas tworzenia stanu. Zaktualizowaliśmy PagerStaterememberPagerState, aby akceptować pageCount. (Ifa3cb, b/266965072)
  • Wprowadź shortSnapVelocityThreshold w miejscu podziału na strony SnapFlingBehavior. (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)
  • Rozwiązaliśmy problem, który powodował, że klawiatura nie wyświetlała się w polach tekstowych w oknach dialogowych, które nie zostały utworzone za pomocą funkcji kompozycyjnej Dialog. (I82551, b/262140644)

Wersja 1.5.0-alpha03

19 kwietnia 2023 r.

androidx.compose.foundation:foundation:1.5.0-alpha03androidx.compose.foundation:foundation-layout:1.5.0-alpha03 zostały opublikowane. Wersja 1.5.0-alpha03 zawiera te zmiany.

Ta wersja włącza nowy stos renderowania tekstu w Compose. Nowy stos jest zoptymalizowany pod kątem wydajności i nie powinien powodować widocznych zmian.

Jeśli zauważysz zmiany w renderowanym tekście, możesz przeprowadzić debugowanie, ustawiając wartość NewTextRendering1_5 = false, aby potwierdzić różnicę w działaniu. Ustawienie tej opcji spowoduje ponowne komponowanie. Wszelkie różnice w zachowaniu zgłaszaj jako błędy.

Flaga debugowania zostanie usunięta przed wydaniem wersji beta 1.5.01.(Iada23, b/246960758)

Zmiany w interfejsie API

  • Ustaw FlowColumn/FlowRow w tekście. (Idab37)

Wersja 1.5.0-alpha02

5 kwietnia 2023 r.

androidx.compose.foundation:foundation:1.5.0-alpha02androidx.compose.foundation:foundation-layout:1.5.0-alpha02 zostały opublikowane. Wersja 1.5.0-alpha02 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodano obsługę komórek o stałym rozmiarze w LazyGrid i rozmieszczania ich za pomocą układu osi poprzecznej. (I83ed9, b/235121277, b/267942510)
  • Dodano obsługę pasów o stałym rozmiarze w LazyStaggeredGrid i rozmieszczania ich za pomocą układu osi poprzecznej. (I7d519)
  • UrlAnnotation w AnnotatedString 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ż znaki verticalAlignmenthorizontalAlignment najwyższego poziomu w FlowRow/FlowColumn. Zamiast tego programiści mogą używać interfejsu Modifier.align. Pozwala to uniknąć nieporozumień związanych z konwencjami nazewnictwa verticalAlignmentverticalArrangement. (I87b60, b/268365538)

Wersja 1.5.0-alpha01

22 marca 2023 r.

androidx.compose.foundation:foundation:1.5.0-alpha01androidx.compose.foundation:foundation-layout:1.5.0-alpha01 zostały opublikowane. Wersja 1.5.0-alpha01 zawiera te zmiany.

Zmiany w interfejsie API

  • Tekst i BasicText zostały przekształcone, aby korzystać z nowego systemu modyfikatorów. W wielu przypadkach prowadzi to do znacznej poprawy skuteczności. Nie powinny być widoczne żadne zmiany. (If1d17, b/246961435)
  • Dodano działanie semantyczne PerformImeAction, aby wywoływać działanie IME w węzłach edytora tekstu. (Ic606f, b/269633506)

Poprawki błędów

  • Zaktualizowano wewnętrzne elementy Modifier.hoverable. 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ą publikowane bez zmian (tylko ze zmianą numeru wersji).

Wersja 1.4.2

19 kwietnia 2023 r.

androidx.compose.foundation:foundation:1.4.2androidx.compose.foundation:foundation-layout:1.4.2 zostały opublikowane. Wersja 1.4.2 zawiera te zmiany.

Wersja 1.4.1

5 kwietnia 2023 r.

androidx.compose.foundation:foundation:1.4.1androidx.compose.foundation:foundation-layout:1.4.1 zostały opublikowane. Wersja 1.4.1 zawiera te zmiany.

Wersja 1.4.0

22 marca 2023 r.

androidx.compose.foundation:foundation:1.4.0androidx.compose.foundation:foundation-layout:1.4.0 zostały opublikowane. Wersja 1.4.0 zawiera te zmiany.

Ważne zmiany od wersji 1.3.0

  • Dodano integrację zgodności z emotikonami w przypadku elementów TextTextField, a także elementu Paragraph niższego poziomu. Jest ona domyślnie włączona, gdy skonfigurowana jest opcja emojicompat.
  • EmojiCompat można skonfigurować w przypadku konkretnego tekstu za pomocą PlatformParagraphStyle.
  • Dodano obsługę pełnego zakresu wierszy do LazyStaggeredGrid(I28252)
  • Dodawanie eksperymentalnego onHover do ClickableText (I6938f)
  • Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji runComposeUiTestcreate*ComposeRule, które akceptują parametry CoroutineContext. Kontekst będzie używany do tworzenia testu oraz wszystkich wywołań LaunchedEffectrememberCoroutineScope() w teście. (I10614, b/265177763)
  • FlowRowFlowColumn są teraz dostępne jako @ExperimentalFoundationApi, które umożliwiają bardziej elastyczny układ komponentów oparty na wierszach i kolumnach. Jeśli na osi głównej nie ma wystarczająco dużo miejsca, komponenty zostaną przeniesione do nowego wiersza. (I3a7b2)
  • Modifier.basicMarquee() jest dostępny w wersji eksperymentalnej do wyświetlania treści z efektem przewijania. (I2df44, b/139321650)

Wersja 1.4.0-rc01

8 marca 2023 r.

androidx.compose.foundation:foundation:1.4.0-rc01androidx.compose.foundation:foundation-layout:1.4.0-rc01 zostały opublikowane. Wersja 1.4.0-rc01 zawiera te zmiany.

Zmiany w interfejsie API

  • Wprowadziliśmy nowy interfejs API niskiego poziomu PlatformTextInputAdapter do tworzenia niestandardowych implementacji wprowadzania tekstu, które komunikują się bezpośrednio z interfejsami API platformy. (I58df4)
  • Dodaliśmy obsługę odwróconego układu do elementu LazyStaggeredGrid. (I3ef4a)

Poprawki błędów

  • Działanie semantyczne BasicTextField's SetText 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 SemanticsActions. (I0807d, b/269633168, b/269624358)

Wersja 1.4.0-beta02

22 lutego 2023 roku

androidx.compose.foundation:foundation:1.4.0-beta02androidx.compose.foundation:foundation-layout:1.4.0-beta02 zostały opublikowane. Wersja 1.4.0-beta02 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodano nowe wywołanie zwrotne Modifier.Node.onReset(), które umożliwia zresetowanie stanu lokalnego, aby prawidłowo obsługiwać sytuację, w której komponent Layout jest ponownie używany (np. jako element komponentu LazyColumn). Poprawiono komponent 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 elemencie Canvas. (I57508)
  • Usunęliśmy 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.

androidx.compose.foundation:foundation:1.4.0-beta01androidx.compose.foundation:foundation-layout:1.4.0-beta01 zostały opublikowane. Wersja 1.4.0-beta01 zawiera te zmiany.

Nowe funkcje

  • Od wersji 1.3 dodaliśmy integrację zgodności z emotikonami w przypadku elementów 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ólną implementację interfejsu PinnableContainer API używanego we wszystkich LazyLayouts, aby zachować elementy, które wychodzą z kompozycji, ale nadal muszą być aktywne. (If45a4)
  • Nazwa elementu PinnableContainer.PinnedHandle.unpin() została zmieniona na release() (I4667a)

Wkład zewnętrzny

  • Do usług LazyListLayoutInfo, LazyGridLayoutInfoLazyStaggeredGridItemInfo dodano usługę mainAxisItemSpacing (I52fad)

Wersja 1.4.0-alpha05

25 stycznia 2023 r.

androidx.compose.foundation:foundation:1.4.0-alpha05androidx.compose.foundation:foundation-layout:1.4.0-alpha05 zostały opublikowane. Wersja 1.4.0-alpha05 zawiera te zmiany.

Nowe funkcje

  • Dodano obsługę pełnego zakresu wierszy do LazyStaggeredGrid (I28252)
  • Dodawanie eksperymentalnego onHover do ClickableText (I6938f)
  • Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji runComposeUiTestcreate*ComposeRule, które akceptują parametry CoroutineContext. Kontekst będzie używany do tworzenia testu oraz wszystkich wywołań LaunchedEffectrememberCoroutineScope() w teście. (I10614, b/265177763)

Zmiany w interfejsie API

  • Łączy interfejsy API przed i po w 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 informacji o typach i możliwościach przyjmowania wartości null w przypadku funkcji wbudowanych i ukrytych (I24f91)
  • Interfejsy API LineBreakHyphensTextStyle osiągnęły stabilność. (Ic1e1d)

Poprawki błędów

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

Wkład zewnętrzny

  • Metody notifyFocusedRect w przestrzeniach nazw TextInputSessionTextInputService nie są już wycofane. (I23a04, b/262648050)

Wersja 1.4.0-alpha04

11 stycznia 2023 r.

androidx.compose.foundation:foundation:1.4.0-alpha04androidx.compose.foundation:foundation-layout:1.4.0-alpha04 zostały opublikowane. Wersja 1.4.0-alpha04 zawiera te zmiany.

Nowe funkcje

  • FlowRowFlowColumn są teraz dostępne jako @ExperimentalFoundationApi, które umożliwiają bardziej elastyczny układ komponentów oparty na wierszach i kolumnach. Jeśli na osi głównej nie ma wystarczająco dużo miejsca, komponenty zostaną przeniesione do nowego wiersza. (I3a7b2)
  • Modifier.basicMarquee()jest dostępny w wersji eksperymentalnej do wyświetlania treści z efektem przewijania. (I2df44, b/139321650)

Zmiany w interfejsie API

  • FocusRequesterModifier zostało wycofane na 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 się skupić, na bardziej złożone operacje, aby lepiej modelować te operacje i obsługiwać więcej przypadków brzegowych. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114)
  • Większa możliwość zwracania wartości null przez wycofane i ukryte funkcje (Ibf7b0)
  • Dodano eksperymentalny parametr TextMotion do 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. Domyślnie parametr size jest ustawiony na Size.Unspecified, co nie powinno zmieniać poprzedniego domyślnego działania. (Icd27d)

Poprawki błędów

  • Dostosowanie fizyki przyciągania w SnapFlingBehaviour, aby zapewnić bardziej naturalne wrażenia.

Znany problem

  • Podczas aktualizacji z wersji androidx.compose.foundation:1.4.0-alpha03 do androidx.compose.foundation:1.4.0-alpha04 może wystąpić błąd java.lang.NoSuchFieldError. Tutaj problem został zgłoszony po raz pierwszy. Poprawka została przesłana i będzie dostępna w kolejnej aktualizacji Compose. Aby rozwiązać ten problem, zaktualizuj biblioteki androidx.compose.materialandroidx.compose.material3 do najnowszej wersji(1.1.0-alpha04) lub przywróć androidx.compose.foundation do wersji 1.4.0-alpha03.

Wersja 1.4.0-alpha03

7 grudnia 2022 r.

androidx.compose.foundation:foundation:1.4.0-alpha03androidx.compose.foundation:foundation-layout:1.4.0-alpha03 zostały opublikowane. Wersja 1.4.0-alpha03 zawiera te zmiany.

Zmiany w interfejsie API

  • W testach interfejsu przeprowadzanych za pomocą reguły Compose wznowienia w wywołaniach zwrotnych withFrameNanos nie będą wysyłane, dopóki nie zostaną wykonane wszystkie wywołania zwrotne klatek. Odpowiada to działaniu funkcji tworzenia wiadomości w normalnych warunkach. Testy, które opierają się na starym działaniu, mogą jednak zakończyć się niepowodzeniem. Powinno to mieć wpływ tylko na kod, który bezpośrednio wywołuje 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 w interfejsie API w wersji 29. (Ida4ab)
  • Wprowadzenie HorizontalPager i VerticalPager, czyli sposobu wyświetlania funkcji kompozycyjnych w stylu Pager. Wprowadzono PagerState, aby sterować pagerami i wykonywać zapytania o informacje o ich bieżącym stanie. Wprowadziliśmy 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 sterowania przyciąganiem w przypadku przewijania w Pagerze. (I01120)
  • Dodaliśmy przeciążenie w SnapFlingBehavior.performFling, aby ułatwić określenie, gdzie zatrzyma się przesunięcie. (I569f6)
  • Użytkownik OverscrollEffect#isEnabled został usunięty. Nie musisz pamiętać o ustawieniu tej flagi. Po prostu nie wysyłaj zdarzeń do efektu przewijania poza zakres, jeśli nie chcesz, aby był on widoczny (np. jeśli ScrollableState#canScrollForward/backward zwraca wartość false). (I1a4b0, b/255554340, b/255557085)
  • Dodano warunki ScrollableState#canScrollForwardScrollableState#canScrollBackward, aby sprawdzić, 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)
  • Dodaliśmy interfejs Modifier API do wysyłania zapytań o informacje o przewijaniu elementów nadrzędnych. (I2ba9d, b/203141462)
  • Używany w Clickable do prawidłowego opóźniania interakcji z naciśnięciem, gdy gesty mogą stać się zdarzeniami przewijania.
  • Rozwiązaliśmy problem z nieprawidłowym opóźnianiem efektów falowania przez element Clickables, gdy jest używany w 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 consumedWindowInsets() na consumeWindowInsets()withConsumedWindowInsets() na onConsumedWindowInsetsChanged() oraz udostępniliśmy modyfikatory. (Ie44e1)

Poprawki błędów

  • Naprawiono awarię związaną z Modifier.animateItemPlacement() i siatkami Lazy. Występowało to w niektórych przypadkach, gdy liczba nowych elementów była mniejsza niż poprzednia. (I0bcac, b/253195989)

Wersja 1.4.0-alpha02

9 listopada 2022 r.

androidx.compose.foundation:foundation:1.4.0-alpha02androidx.compose.foundation:foundation-layout:1.4.0-alpha02 zostały opublikowane. Wersja 1.4.0-alpha02 zawiera te zmiany.

Zmiany w interfejsie API

  • Atrybuty awaitFirstDownwaitForUpOrCancellation akceptują teraz PointerEventPass, co zapewnia większą elastyczność. (I7579a, b/212091796)
  • Wycofanie interfejsu beyondBoundCount API z interfejsów Lazy* API (I12197)
  • Wprowadzono parametr w interfejsach Lazy API, który umożliwia tworzenie i umieszczanie elementów poza widocznym obszarem (I69e89, b/172029355)
  • Dodano parametr minLines do parametró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.

androidx.compose.foundation:foundation:1.4.0-alpha01androidx.compose.foundation:foundation-layout:1.4.0-alpha01 zostały opublikowane. Wersja 1.4.0-alpha01 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodaliśmy nową metodę awaitEachGesture() dla detektorów gestów. Działa podobnie 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ł 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 IME po zakończeniu animacji. (I356f1, b/217770337)

Wersja 1.3

Wersja 1.3.1

9 listopada 2022 r.

androidx.compose.foundation:foundation:1.3.1androidx.compose.foundation:foundation-layout:1.3.1 zostały opublikowane. Wersja 1.3.1 zawiera te zmiany.

Poprawki błędów

  • Rozwiązywanie problemów z wydajnością w BeyondBoundsLayout (aosp/2255266)
  • ContentInViewModifier nie odczytuje współrzędnych układu, chyba że jest dołączony (aosp/2241316)

Wersja 1.3.0

24 października 2022 r.

androidx.compose.foundation:foundation:1.3.0androidx.compose.foundation:foundation-layout:1.3.0 zostały opublikowane. Wersja 1.3.0 zawiera te zmiany.

Ważne zmiany od wersji 1.2.0

  • Wprowadzono wersje eksperymentalne LazyVerticalStaggeredGridLazyHorizontalStaggeredGrid.
  • SnapFlingBehavior, rememberSnapFlingBehavior i inne powiązane interfejsy API zostały dodane jako eksperymentalne.
  • Modifier.clickable, Modifier.toggleableModifier.selectable wyświetlają teraz efekt fali, jeśli klikniesz je za pomocą klawiatury lub pada kierunkowego na pilocie.

Wersja 1.3.0-rc01

5 października 2022 r.

androidx.compose.foundation:foundation:1.3.0-rc01androidx.compose.foundation:foundation-layout:1.3.0-rc01 zostały opublikowane. Wersja 1.3.0-rc01 zawiera te zmiany.

Zmiany w interfejsie API

  • Wprowadzono lowVelocityAnimationSpec używane w kroku zbliżania, gdy nie ma wystarczającej prędkości, aby ją zmniejszyć. (Iaeb27)
  • Dodano nowy eksperymentalny interfejs API Hyphens, który obsługuje automatyczne dzielenie wyrazów w tekście (Iaa869).

Wersja 1.3.0-beta03

21 września 2022 r.

androidx.compose.foundation:foundation:1.3.0-beta03androidx.compose.foundation:foundation-layout:1.3.0-beta03 zostały opublikowane. Wersja 1.3.0-beta03 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodaj opcje dostosowywania podziału wierszy w tekście. (I86907)
  • BringIntoViewResponder mogą teraz podczas przetwarzania żądania uzyskiwać najbardziej aktualne granice. (If86a5, b/241591211)
  • Wprowadzenie obsługi odstępów między elementami w eksperymentalnej wersji Staggered Grid (I10b82)
  • Wprowadzenie dopełnienia treści w eksperymentalnym Staggered Grid (I342ea)
  • Zmieniono argument size:IntSize na constraints: Constraints w metodzie TextMeasurer.measure, aby obsługiwać ograniczenia minimalnej szerokości. (I37530, b/242707525)
  • Dodano Modifier.withConsumedWindowInsets() do wykorzystania WindowInsets do użytku poza windowInsetsPadding.
  • Dodano MutableWindowInsets, aby umożliwić łatwą zmianę WindowInsets bez ponownego komponowania. (I7fd28, b/237019262, b/243119659)

Wersja 1.3.0-beta02

7 września 2022 roku

androidx.compose.foundation:foundation:1.3.0-beta02androidx.compose.foundation:foundation-layout:1.3.0-beta02 zostały opublikowane. Wersja 1.3.0-beta02 zawiera te zmiany.

Zmiany w interfejsie API

  • Wstępna wersja eksperymentalnego StaggeredGrid (Ia48be)
  • Zmiana nazw FocusDirection.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ąpiliśmy fabrykę snapFlingBehavior konkretną klasą SnapFlingBehavior. Metody z zakresem SnapLayoutInfoProvider w klasie Density, aby ułatwić użytkownikom interfejsu API konwersje Dp<->Px. (I54a11)
  • Zaktualizuj LazyLayoutMeasureScope.measure, aby zwracać listę elementów, podkreślając pożądaną niezmienność zwracanej wartości. (I48b7c)
  • Wprowadzono SnapLayoutInfoProvider, który przyjmuje LazyListState, aby utworzyć instancję SnapLayoutInfoProvider, której można użyć do włączenia migawki 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.

androidx.compose.foundation:foundation:1.3.0-beta01androidx.compose.foundation:foundation-layout:1.3.0-beta01 zostały opublikowane. Wersja 1.3.0-beta01 zawiera te zmiany.

Zmiany w interfejsie API

  • Usunięto 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 na potrzeby bardziej złożonego wykrywania gestów (I04374, b/181577176)
  • Wprowadziliśmy lazyListSnapLayoutInfoProvider, aby włączyć przyciąganie w leniwych listach. (I3ecdf)
  • Wprowadzono SnapFlingBehavior, czyli gest szybkiego przesunięcia, który umożliwia przyciąganie listy. Podaj instancję SnapLayoutInfoProvider z informacjami o układzie przyciągania. (Ie754c)

Wersja 1.3.0-alpha03

10 sierpnia 2022 r.

androidx.compose.foundation:foundation:1.3.0-alpha03androidx.compose.foundation:foundation-layout:1.3.0-alpha03 zostały opublikowane. Wersja 1.3.0-alpha03 zawiera te zmiany.

Zmiany w interfejsie API

  • Czcionki zasobów obsługują teraz ustawianie ustawień wariacji czcionki (API w wersji 26 lub nowszej). (I900dd, b/143703328)
  • Obsługa czcionek zmiennych w DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • Usunięto eksperymentalną adnotację z funkcji PlatformTextStyleLineHeightStyle. (I64bef)
  • Pola tekstowe będą teraz zgłaszać bardziej szczegółowe wyjątki, gdy element OffsetMapping dostarczony przez element VisualTransformation zwraca nieprawidłowe indeksy. (Ie73f9, b/229378536)
  • Wprowadzamy eksperymentalne interfejsy API, które umożliwiają udostępnianie logiki dostawcy elementów między układami Lazy. (Ic891c)
  • ScrollableDefaults.reverseDirection() nie jest już funkcją eksperymentalną. (Iba646)
  • Wycofano SemanticsModifier.id i przeniesiono identyfikator semantyki 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 niego użyj w kodzie aplikacji interfejsu SoftwareKeyboardController, a w kodzie zarządzania IME – interfejsu TextInputSession. (I14e4c, b/183448615)

Wersja 1.3.0-alpha02

27 lipca 2022 roku

androidx.compose.foundation:foundation:1.3.0-alpha02androidx.compose.foundation:foundation-layout:1.3.0-alpha02 zostały opublikowane. Wersja 1.3.0-alpha02 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodano funkcję rozszerzenia drawTextDrawScope, która umożliwia rysowanie tekstu z wieloma stylami w komponentach i modyfikatorach działających 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 fokus na elemencie podrzędnym, będzie teraz prawidłowo przewijać, aby utrzymać ten element w widoku, gdy jego rozmiar zostanie zmniejszony, nawet jeśli rozmiar jest animowany. (I80867, b/230756508, b/220119990)
  • Naprawiliśmy błąd powodujący awarię, gdy TextField jest czyszczone i ponownie wypełniane podczas aktywnego zaznaczenia. (I1235b, b/208655565, b/214253689)

Wersja 1.3.0-alpha01

29 czerwca 2022 r.

androidx.compose.foundation:foundation:1.3.0-alpha01androidx.compose.foundation:foundation-layout:1.3.0-alpha01 zostały opublikowane. Wersja 1.3.0-alpha01 zawiera te zmiany.

Zmiany w interfejsie API

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

Poprawki błędów

  • BasicTextField cursorBrush można teraz animować bez ponownego uruchamiania timera kursora. (I812e6, b/236383522)

Wersja 1.2

Wersja 1.2.1

10 sierpnia 2022 r.

androidx.compose.foundation:foundation:1.2.1androidx.compose.foundation:foundation-layout:1.2.1 zostały opublikowane. Wersja 1.2.1 zawiera te zmiany.

Wersja 1.2.0

27 lipca 2022 roku

androidx.compose.foundation:foundation:1.2.0androidx.compose.foundation:foundation-layout:1.2.0 zostały opublikowane. Wersja 1.2.0 zawiera te zmiany.

Ważne zmiany od wersji 1.1.0

  • Wartości LazyVerticalGridLazyHorizontalGrid są teraz stabilne.
  • Możesz teraz określić typ treści dla elementów na leniwych listach i w siatkach. Umożliwi to komponentom bardziej efektywne ponowne wykorzystywanie elementów.
  • Listy i siatki ładowane na żądanie mają teraz parametr userScrollEnabled, który umożliwia wyłączenie przewijania za pomocą gestów użytkownika.
  • Dodaliśmy nowy eksperymentalny interfejs API o nazwie LazyLayout. Jest to interfejs API, którego używamy wewnętrznie do obsługi leniwych list i siatek.
  • OverscrollEffect Interfejs API został wprowadzony jako eksperymentalny. Możesz zdefiniować niestandardowe efekty przewijania poza zakres, a także dodać standardowy efekt platformy do niestandardowych kontenerów z możliwością przewijania.
  • Wprowadzono interfejsy API interoperacyjności zagnieżdżonego przewijania, aby umożliwić interoperacyjność między widokami a komponentami przewijania.
  • Do wszystkich kontenerów przewijania dodaliśmy przewijanie za pomocą myszy i touchpada.

Wersja 1.2.0-rc03

29 czerwca 2022 r.

androidx.compose.foundation:foundation:1.2.0-rc03androidx.compose.foundation:foundation-layout:1.2.0-rc03 zostały opublikowane. Wersja 1.2.0-rc03 zawiera te zmiany.

  • Brak zmian od wersji 1.2.0-rc02.

Wersja 1.2.0-rc02

22 czerwca 2022 r.

androidx.compose.foundation:foundation:1.2.0-rc02androidx.compose.foundation:foundation-layout:1.2.0-rc02 zostały opublikowane. Wersja 1.2.0-rc02 zawiera te zmiany.

Wersja 1.2.0-rc01

15 czerwca 2022 r.

androidx.compose.foundation:foundation:1.2.0-rc01androidx.compose.foundation:foundation-layout:1.2.0-rc01 zostały opublikowane. Wersja 1.2.0-rc01 zawiera te zmiany.

Zmiany w interfejsie API

  • Wprowadzono eksperymentalny interfejs OverscrollEffect, który umożliwia stosowanie niestandardowych efektów przewijania poza krawędź, a także przeciąż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 leniwych z możliwością przewijania za pomocą 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.

androidx.compose.foundation:foundation:1.2.0-beta03androidx.compose.foundation:foundation-layout:1.2.0-beta03 zostały opublikowane. Wersja 1.2.0-beta03 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodano nowe eksperymentalne funkcje 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

  • Wyjaśniliśmy w dokumentacji dotyczącej WindowInsets.ime, że wstawki ime są zgłaszane od interfejsu API 23, ale tylko animowane w przypadku interfejsu API 30 lub nowszego (Ia7fc0, b/230756508).
  • Naciśnięcie klawisza usuwania do przodu, gdy kursor znajduje się na końcu pola tekstowego, nie spowoduje już awarii.
  • DeleteSurroundingTextCommandDeleteSurroundingTextInCodePointsCommand wymagają teraz, aby argumenty konstruktora były nieujemne. (Ica8e6, b/199919707)

Wersja 1.2.0-beta02

18 maja 2022 r.

androidx.compose.foundation:foundation:1.2.0-beta02androidx.compose.foundation:foundation-layout:1.2.0-beta02 zostały opublikowane. Wersja 1.2.0-beta02 zawiera te zmiany.

  • Rozdzielczość czcionki do pobrania, która nie zmienia rozmiaru układu tekstu lub TextField, nie była wcześniej ponownie rysowana, co prowadziło do nieaktualnego wyświetlania czcionki. Ta poprawka zapewnia, że układ tekstu zawsze powoduje ponowne rysowanie (b/229727404). (I1d49e, b/229727404)

Wersja 1.2.0-beta01

11 maja 2022 roku

androidx.compose.foundation:foundation:1.2.0-beta01androidx.compose.foundation:foundation-layout:1.2.0-beta01 zostały opublikowane. Wersja 1.2.0-beta01 zawiera te zmiany.

Nowe funkcje

  • To pierwsza wersja beta 1.2.

Zmiany w interfejsie API

  • Dodano eksperymentalny interfejs BeyondBoundsInterval, który może być używany przez niestandardowe implementacje 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
  • Zmieniono nazwę LineHeightTrim na LineHeightStyle.Trim
  • Usunięto wartości domyślnego konstruktora z LineHeightStyle (I582bf, b/181155707)
  • Dodano wartości domyślne dla opcjonalnych elementów interfejsu LazyLayoutItemProvider. (Iba8a0)
  • W interfejsie LazyLayoutItemProvider zamiast fabryki zwracającej lambdę kompozycyjną według indeksu mamy teraz prostszą funkcję kompozycyjną Item, która akceptuje indeks. (Id2196)
  • Nazwa LazyLayoutItemsProvider została zmieniona na LazyLayoutItemProvider (I0638c)
  • LazyLayoutItemsProvider.itemsCount zmienia nazwę na itemCount (Id409c)
  • Dodano pędzel do TextStyleSpanStyle, aby umożliwić rysowanie tekstu z gradientowym kolorowaniem. (I53869, b/187839528)
  • Atrybuty trimFirstLineToptrimLastLineBottom elementu LineHeightBehavior zostały zmienione w jedno wyliczenie: LineHeightTrim. LineHeightTrim mają 4 stany zdefiniowane przez 2 wartości logiczne:FirstLineTop, LastLineBottom, Both i None (Ifc6a5, b/181155707).
  • Dodano LineHeightBehavior do elementów sterują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 udostępnionej 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).

  • trimFirstLineTop, trimLastLineBottom configurations works correctly only when includeFontPadding is false. (I97332, b/181155707)

  • Dodano eksperymentalny modyfikator imeNestedScroll(), aby deweloperzy mogli sterować edytorem IME za pomocą przewijania. (I60759)

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował, że pola tekstowe nie ukrywały klawiatury po usunięciu z kompozycji, gdy były aktywne. (I7a410, b/230536793, b/225541817)
  • Obsługa wielokropka, gdy wysokość jest ograniczona i nie mieści wszystkich wierszy tekstu (Ie528c, b/168720622)
  • BringIntoViewRequester.bringIntoView będzie teraz zawsze wstrzymywane do czasu zakończenia żądania lub przerwania go przez nowsze, niepokrywające się żądanie. Nakładające się na siebie żądania będą umieszczane w kolejce. (I43e7f, b/216790855)
  • Równoczesne wywołania BringIntoViewRequester.bringIntoView w przypadku prostokątów, które całkowicie się pokrywają, będą teraz uwzględniać tylko żądanie większego prostokąta. (I34be7, b/216790855, b/184760918)
  • Domyślnie włączone includeFontPadding. Możesz wyłączyć includeFontPadding za pomocą 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.

androidx.compose.foundation:foundation:1.2.0-alpha08androidx.compose.foundation:foundation-layout:1.2.0-alpha08 zostały opublikowane. Wersja 1.2.0-alpha08 zawiera te zmiany.

Zmiany w interfejsie API

  • Wyświetlaj wszystkie dostępne grubości czcionek systemowych na Androidzie, gdy używasz FontFamily.SansSerif. W przypadku interfejsów API w wersjach 21–28 wewnętrznie będą używane nazwy czcionek zastępczych, np. sans-serif-medium. Jest to zmiana w działaniu, ponieważ wcześniej w interfejsach API w wersjach 21–28 obsługiwane były tylko wagi 400 i 700. (I380fe, b/156048036, b/226441992)
  • Elementy Paragraph i MultiParagraph akceptują teraz parametr Constraints. Przekazywanie wartości Constraints.maxHeight jest obecnie operacją pustą, ale w przyszłości umożliwi wykonywanie obliczeń, np. skracanie tekstu na podstawie wysokości. (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() akceptuje teraz niestandardową klasę podobną do MutableSet, która nie zezwala na dodawanie do niej nowych elementów. (Icd314)
  • Częściowe wykorzystanie (obniżenie lub pozycja) zostało wycofane w PointerInputChange. Aby w pełni wykorzystać zmianę, możesz użyć consume(). Możesz użyć isConsumed, aby sprawdzić, czy ktoś inny wcześniej wykorzystał tę zmianę.
  • PointerInputChange::copy() zawsze tworzy teraz płytką kopię. Oznacza to, że po wykorzystaniu jednej kopii PointerInputChange zostaną wykorzystane kolejne kopie. 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 towarzyszące wyświetlają teraz widoczność (czy są na ekranie, niezależnie od tego, czy przecinają okno) i rozmiar, jaki mogłyby mieć, gdyby były dostępne na urządzeniu, ale nie są obecnie aktywne. (I65182, b/217770337)

Wersja 1.2.0-alpha07

6 kwietnia 2022 roku

androidx.compose.foundation:foundation:1.2.0-alpha07androidx.compose.foundation:foundation-layout:1.2.0-alpha07 zostały opublikowane. Wersja 1.2.0-alpha07 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodano interfejs PinnableParent API, który umożliwia elementom podrzędnym układów leniwych zapobieganie usuwaniu aktualnie skomponowanych elementów (Ibbdd0, b/184670295).
  • Pola 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)
  • Interfejsy PointerEventType.ScrollPointerEvent.scrollDelta są teraz stabilne (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 umożliwiająca migrację, która zostanie usunięta. (If47be, b/171394808)
  • Zaktualizowano FontFamily.Resolver, aby zintegrować ustawienie ułatwień dostępu „Pogrubienie tekstu w całym systemie” (I6c1e7)
  • Właściwość rozszerzenia consumeWindowInsets elementu ComposeView umożliwia programistom wyłączenie korzystania z elementu WindowInsets na Androidzie. Dzięki temu poszczególne ComposeViews w hierarchii mogą stosować WindowInsets bez wzajemnego zakłócania działania. (I0ef08, b/220943142)

Wersja 1.2.0-alpha06

23 marca 2022 r.

androidx.compose.foundation:foundation:1.2.0-alpha06androidx.compose.foundation:foundation-layout:1.2.0-alpha06 zostały opublikowane. Wersja 1.2.0-alpha06 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodano działanie semantyczne RequestFocus, aby poprosić o skupienie się na elemencie, na którym można ustawić fokus. (I17b71)
  • Usługa FocusOrder została połączona z usługą FocusProperties, a usługa focusProperties() ma teraz wszystkie funkcje usługi focusOrder(). Funkcje FocusOrderfocusOrder() zostały wycofane. focusOrder(), który akceptuje focusRequester, należy zastąpić modyfikatorem focusRequester() w połączeniu z focusProperties(). Dzięki temu modyfikatory mogą być bardziej od siebie odseparowane. (I601b7)
  • WindowInsets.asPaddingValues(Density) został dodany, aby umożliwić deweloperom przeprowadzanie konwersji bez konieczności korzystania z kompozycji. (I94c35)
  • Zaktualizowano analizowanie rysunków wektorowych, aby obsługiwać automatyczne dublowanie, które odwraca zawartość elementu VectorPainter, jeśli bieżący kierunek układu to RTL. (I79cd9, b/185760237)

Poprawki błędów

  • Modyfikatory przewijania (Modifier.verticalScroll(), Modifier.horizontalScroll()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, w przypadku gdy znajdują się w nieprzewijanym kontenerze i tryb wprowadzania tekstu jest ustawiony na ADJUST_RESIZE. (I4a485, b/190539358, b/192043120, b/216842427)

Wersja 1.2.0-alpha05

9 marca 2022 r.

androidx.compose.foundation:foundation:1.2.0-alpha05androidx.compose.foundation:foundation-layout:1.2.0-alpha05 zostały opublikowane. Wersja 1.2.0-alpha05 zawiera te zmiany.

Zmiany w interfejsie API

  • Wartości LazyVerticalGridLazyHorizontalGrid są teraz stabilne. (I307c0)
  • LazyGridItemInfo.Unknown został zastąpiony osobnymi polami LazyGridItemInfo.UnknownRow i LazyGridItemInfo.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 obcinaniem wynikające z includeFontPadding=false zostały rozwiązane i nie powinno już dochodzić do obcinania w przypadku wysokich skryptów. (I31c84, b/171394808)
  • Interfejs pomiarowy udostępnia teraz właściwość parentData (I3313f)
  • Wprowadzono eksperymentalną funkcję Modifier.onFocusedBoundsChanged, która umożliwia obserwowanie granic elementów podrzędnych, na których można ustawić fokus. (I14283, b/220030968, b/190539358, b/192043120, b/216842427)
  • Dodano LazyHorizontalGrid. (I61ae7, b/191238807)
  • Dodano nowy interfejs API LazyVerticalGrid do określania rozmiarów osi poprzecznej (I17723).
  • Dodano modyfikator FocusGroup (I64bc0, b/213508274, b/184670295)

Poprawki błędów

  • WindowInsets.toString() będzie teraz wyświetlać prawidłowe wartości. (I1585d)

Wkład zewnętrzny

  • Zaktualizowano do korzystania z rutyn Kotlinx w wersji 1.6.0 (I3366d).

Wersja 1.2.0-alpha04

23 lutego 2022 r.

androidx.compose.foundation:foundation:1.2.0-alpha04androidx.compose.foundation:foundation-layout:1.2.0-alpha04 zostały opublikowane. Wersja 1.2.0-alpha04 zawiera te zmiany.

Zmiany w interfejsie API

  • BringIntoViewResponders nie muszą już ręcznie przekazywać żądań do elementów nadrzędnych, ale muszą natychmiast zwracać prostokąt, który ma być widoczny dla elementu nadrzędnego. (I8e66a)
  • Obsługa asynchronicznego wczytywania czcionek w komponencie Tekst (I77057, b/214587005)
  • LazyVerticalGrid obsługuje teraz line breaking przed elementami z zakresem, który 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 WindowInsets. (I14c94, b/217768486)
  • Dodano adnotacje ComposableTarget, ComposableTargetMarkerComposableOpenTarget, które umożliwiają zgłaszanie w czasie kompilacji sytuacji, w których funkcja typu „composable” jest wywoływana w odniesieniu do narzędzia, do którego nie została zaprojektowana.

    W większości przypadków adnotacje te mogą być wywnioskowane przez wtyczkę kompilatora Compose, więc bezpośrednie używanie tych adnotacji powinno być rzadkie . Nie można wywnioskować przypadków, w których tworzony jest i używany niestandardowy aplikator, abstrakcyjne funkcje kompozycyjne (np. metody interfejsu), pola lub zmienne globalne, które są kompozycyjnymi wyrażeniami lambda (zmienne lokalne i parametry są wywnioskowane), lub gdy używana jest funkcja ComposeNode lub powiązane funkcje kompozycyjne.

    W przypadku niestandardowych funkcji stosujących funkcje kompozycyjne, które wywołują ComposeNode lub ReusableComposeNode, należy dodać adnotację CompoableTarget do funkcji i wszystkich typów parametrów lambda kompozycyjnych. Zalecamy jednak utworzenie adnotacji, która jest oznaczona 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 LazyGridState.scrollToItem()LazyGridState.animateScrollToItem(). (I025c6, b/211753558)
  • Obsługa asynchronicznego wczytywania czcionek w przypadku komponentu TextField. (Icc4bf, b/214587005)

Wersja 1.2.0-alpha03

9 lutego 2022 r.

androidx.compose.foundation:foundation:1.2.0-alpha03androidx.compose.foundation:foundation-layout:1.2.0-alpha03 zostały opublikowane. 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 właściwości BringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874)
  • Animacje zostały włączone w przypadku elementów leniwych siatek za pomocą funkcji Modifier.animateItemPlacement(). (Ib6621, b/211753218)
  • BringIntoViewRequester przekazuje teraz żądania do hostowanego widoku Androida. (Ia7a51)
  • FontFamilyResolver jest teraz dostępna w ramach usługi LocalFontFamilyResolver.current
    • Dodano createFontFamilyResolver(context)createFontFamilyResolver(context, coroutineScope), aby tworzyć nowe moduły rozpoznawania FontFamily poza użyciem funkcji Compose.
    • Elementy Paragraph i MultiParagraph przyjmują teraz wartość FontFamily.Resolver
    • TextLayoutResult.layoutInput.fontFamilyResolver zawiera teraz resolver używany w tym układzie. Wycofaliśmy TextLayoutResult.layoutInput.resourceLoader, ponieważ nie jest już używany. (Id5a45, b/174162090)
  • Dodano AndroidFont, nowy interfejs API niskiego poziomu do udostępniania nowych typów deskryptorów zasobów czcionek na Androidzie. Może to być np. wczytywanie czcionek z backendu aplikacji, opcjonalne lokalizowanie wstępnie zainstalowanych czcionek na urządzeniu lub wczytywanie czcionki z zasobu, który nie jest udostępniany przez bieżące fabryki czcionek.
    • Rozszerzyliśmy interfejs Font.ResourceLoaded API, aby obsługiwał opcjonalne i asynchroniczne wczytywanie czcionek. Nie zalecamy programistom aplikacji bezpośredniego korzystania z tego interfejsu API. Aby dodać nowe typy czcionek, zobacz AndroidFont.
    • Funkcja rozszerzenia Font.AndroidResourceLoader umożliwia 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 to do wstępnego wczytywania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. W przypadku czcionek do pobrania to wywołanie może blokować działanie przez 10 sekund. Zamiast tego użyj FontFamilyResolver.preload
    • Środowisko wykonawcze fontResource(FontFamily): Typeface zostało wycofane. Wcześniej służyło to do wstępnego wczytywania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. Zamiast tego uż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 w LazyListScope akceptują teraz taki parametr. Podanie takich informacji pomaga logice ponownego wykorzystania kompozycji produktów działać wydajniej i ponownie wykorzystywać treści tylko w przypadku produktów podobnego typu. (I26506)
  • Konstruktor SubcomposeLayoutState akceptują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 być zachowane do ponownego użycia w przyszłości. (I52c4d)
  • Dodaje modyfikatory dla WindowInsets, zarówno w przypadku dopełnienia, jak i rozmiaru. Dzięki temu niektóre treści mogą się rozciągać na obszar wcięcia, a treści główne pozostają poza nim. Na przykład windowInsetsPadding może służyć do dodawania dopełnienia do obszaru treści, aby uniknąć obszarów, które mogą być całkowicie lub częściowo zasłonięte. (Id0395, b/213942085)

Poprawki błędów

  • Pola tekstowe będą teraz wyświetlane nad klawiaturą, gdy są aktywne i klawiatura jest widoczna, a tryb wprowadzania programowego to ADJUST_PAN. (I8eaeb, b/190539358, b/192043120)
  • Desktop używa lokalnej kompozycji dla FontFamily.Resolver
    • Wycofanie platformy FontLoader na komputery
    • Nowa fabryka createFontFamilyResolver na komputerze (I6bbbb, b/174162090)
  • Klawiatura ekranowa nie migocze już podczas przełączania fokusu między polami tekstowymi. (I1bf50, b/187746439)
  • Pola tekstowe nie wymagają już dodatkowego naciśnięcia przycisku Wstecz, gdy wyświetlany jest uchwyt kursora. (Ideb4b, b/205726883)
  • Ulepszyliśmy działanie lupy do zaznaczania tekstu, aby było zgodne z lupą platformy. (Idd918, b/206833278)

Wersja 1.2.0-alpha02

26 stycznia 2022 r.

androidx.compose.foundation:foundation:1.2.0-alpha02androidx.compose.foundation:foundation-layout:1.2.0-alpha02 zostały opublikowane. Wersja 1.2.0-alpha02 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodaliśmy NonRestartableComposable do metod, które są przeciążeniami istniejących metod bez złożonej logiki. Zmniejsza to liczbę sprawdzania przez kompilator zapamiętywania (równości) w przypadku wszystkich parametrów, które powtarzają się w wywoływanej funkcji wewnętrznej. (I90490)
  • Dodano modyfikatory excludeFromSystemGesture, aby ułatwić dostęp do setSystemGestureExclusionRects na Androidzie (I46f07)

Poprawki błędów

  • Ulepszyliśmy działanie lupy do zaznaczania tekstu, aby było zgodne z lupą platformy. (Idd918, b/206833278)
  • LazyColumn, LazyRow, Modifier.verticalScroll i inne kontenery, które korzystają z Modifier.scrollable, obsługują teraz przewijanie za pomocą kółka myszy. (I2b5e1, b/198214718)

Wersja 1.2.0-alpha01

12 stycznia 2022 r.

androidx.compose.foundation:foundation:1.2.0-alpha01androidx.compose.foundation:foundation-layout:1.2.0-alpha01 zostały opublikowane. Wersja 1.2.0-alpha01 zawiera te zmiany.

Zmiany w interfejsie API

  • Do funkcji LazyColumn, LazyRowLazyVerticalGrid dodaliśmy nowy parametr userScrollEnabled, aby umożliwić użytkownikom tymczasowe lub trwałe wyłączenie przewijania inicjowanego przez użytkownika za pomocą gestów dotykowych lub działań związanych z ułatwieniami dostępu. Programowe przewijanie za pomocą metod w stanie będzie nadal dozwolone. (I7eae9, b/201150093)
  • Dodaj wywołanie zwrotne onSizeChanged do modyfikatora lupy. (I6879f)
  • Widżet lupy jest teraz widoczny podczas przeciągania uchwytów zaznaczenia w SelectionContainer. (I30b38, b/139320979)

Poprawki błędów

  • Rozwiązanie problemu polegającego na tym, że uchwyt kursora TextField nie ukrywał się po przewinięciu poza widok. (I14552, b/208883748)

Aktualizacje zależności

  • Teraz zależy od Kotlin 1.6.10.

Wersja 1.1

Wersja 1.1.1

23 lutego 2022 r.

androidx.compose.foundation:foundation:1.1.1androidx.compose.foundation:foundation-layout:1.1.1 zostały opublikowane. Wersja 1.1.1 zawiera te zmiany.

Poprawki błędów

  • Rozwiązanie problemu NullPointerException na stronie androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList (aosp/1947059, b/206677462)
  • Naprawiliśmy awarię spowodowaną zawartością schowka podczas odczytywania danych ze schowka na urządzeniu z Androidem. (I06020, b/197769306)
  • Poprawiono układ od prawej do lewej w LazyVerticalGrid (aosp/1931080, b/207510535)

Wersja 1.1.0

9 lutego 2022 r.

androidx.compose.foundation:foundation:1.1.0androidx.compose.foundation:foundation-layout:1.1.0 zostały opublikowane. Wersja 1.1.0 zawiera te zmiany.

Ważne zmiany od wersji 1.0.0

  • Stabilna obsługa efektu przewijania w Androidzie 12
  • Ulepszenia rozmiaru obszaru dotyku
  • Pamiętaj, że w przypadku Compose 1.0 komponenty Material rozszerzą swój obszar układu, aby spełnić wytyczne dotyczące ułatwień dostępu w interfejsie Material w zakresie rozmiaru docelowego elementu dotykowego. Na przykład docelowy element dotykowy przycisku zostanie powiększony do minimalnego rozmiaru 48x48 dp, nawet jeśli ustawisz mniejszy rozmiar przycisku. Dzięki temu biblioteka Compose Material zachowuje się tak samo jak komponenty Material Design, co zapewnia spójność, jeśli używasz widoków i biblioteki Compose. Ta zmiana zapewnia też, że podczas tworzenia interfejsu za pomocą komponentów Compose Material spełnione zostaną minimalne wymagania dotyczące dostępności docelowych elementów dotykowych.
  • Stabilna obsługa kolumny nawigacji
  • Przenosi kilka wcześniej eksperymentalnych interfejsów API do wersji stabilnej.
  • Obsługa nowszych wersji języka Kotlin

Wersja 1.1.0-rc03

26 stycznia 2022 r.

androidx.compose.foundation:foundation:1.1.0-rc03androidx.compose.foundation:foundation-layout:1.1.0-rc03 zostały opublikowane. Wersja 1.1.0-rc03 zawiera te zmiany.

Poprawki błędów

  • Zaktualizowano, aby obsługiwać Compose Material w wersji 1.1.0-rc03

Wersja 1.1.0-rc01

15 grudnia 2021 roku

androidx.compose.foundation:foundation:1.1.0-rc01androidx.compose.foundation:foundation-layout:1.1.0-rc01 zostały opublikowane. Wersja 1.1.0-rc01 zawiera te zmiany.

Poprawki błędów

  • Teraz można przekazywać ujemne przesunięcia przewijania do LazyListState.scrollToItem()LazyListState.animateScrollToItem(). (Iceb90, b/184252837)
  • Naprawiono błąd, który powodował brak działań przewijania ułatwień dostępu (I7cbfb).

Wersja 1.1.0-beta04

1 grudnia 2021 r.

androidx.compose.foundation:foundation:1.1.0-beta04androidx.compose.foundation:foundation-layout:1.1.0-beta04 zostały opublikowane. Wersja 1.1.0-beta04 zawiera te zmiany.

Nowe funkcje

  • Zaktualizowano, aby była zgodna z Kotlinem 1.6.0

Zmiany w interfejsie API

  • Usunięto możliwość wartości null w androidx.core.view(I7078a, b/204917439)
  • Dodano eksperymentalne interfejsy API, które umożliwiają wykorzystanie zdarzenia PointerInputchange w całości lub sprawdzenie, czy zostało ono wykorzystane. (I2e59d)
  • Wyświetlaj widżet lupy podczas przeciągania kursora lub uchwytów zaznaczenia w polach tekstowych. (I5391e, b/203781358)

Poprawki błędów

  • Rozwiązanie problemu polegającego na tym, że uchwyty tekstu nie przesuwały się, gdy zmieniała się widoczność edytora IME. (I25f2e)

Wersja 1.1.0-beta03

17 listopada 2021 r.

androidx.compose.foundation:foundation:1.1.0-beta03androidx.compose.foundation:foundation-layout:1.1.0-beta03 zostały opublikowane. Wersja 1.1.0-beta03 zawiera te commity.

Zmiany w interfejsie API

  • Do komponentu LazyVerticalGrid dodano obsługę poziomych zakresów. (I7e2fa, b/176758183)
  • Dodaliśmy eksperymentalną możliwość animowania pozycji elementów list leniwych. W ramach LazyItemScope dostępny jest nowy modyfikator o nazwie Modifier.animateItemPlacement(). Przykład użycia:

      var list by remember { mutableStateOf(listOf("A", "B", "C")) }
      LazyColumn {
          item {
              Button(onClick = { list = list.shuffled() }) {
                  Text("Shuffle")
              }
          }
          items(list, key = { it }) {
              Text("Item $it", Modifier.animateItemPlacement())
          }
      }
    
    • Jeśli podasz klucz za pomocą LazyListScope.item 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 czy wyrównania. (I59e7b, b/150812265)

Wersja 1.1.0-beta02

3 listopada 2021 r.

androidx.compose.foundation:foundation:1.1.0-beta02androidx.compose.foundation:foundation-layout:1.1.0-beta02 zostały opublikowane. Wersja 1.1.0-beta02 zawiera te zmiany.

Poprawki błędów

  • Efekty falowania i inne wskaźniki będą teraz opóźniane tylko wtedy, gdy znajdują się w kontenerze Modifier.scrollable(), a nie zawsze w przypadku zdarzenia w dół. (Ibefe0, b/203141462)
  • Dodano eksperymentalny interfejs BringIntoView API, który umożliwia wysyłanie do elementów nadrzędnych żądań przewinięcia, aby wyświetlić element (Ib918d, b/195353459).

Wkład zewnętrzny

  • Dodano Modifier.pointerHoverIcon (I95f01)

Wersja 1.1.0-beta01

27 października 2021 roku

androidx.compose.foundation:foundation:1.1.0-beta01androidx.compose.foundation:foundation-layout:1.1.0-beta01 zostały opublikowane. Wersja 1.1.0-beta01 zawiera te zmiany.

Poprawki błędów

  • Dodano eksperymentalny interfejs BringIntoView API, który umożliwia wysyłanie do elementów nadrzędnych żądań przewinięcia, aby wyświetlić element (Ib918d, b/195353459).

Wersja 1.1.0-alpha06

13 października 2021 r.

androidx.compose.foundation:foundation:1.1.0-alpha06androidx.compose.foundation:foundation-layout:1.1.0-alpha06 zostały opublikowane. Wersja 1.1.0-alpha06 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodano przeciążenie bez elementów podrzędnych dla układu, co zwiększa wydajność (Ib0d9a).
  • SemanticsNodeInteraction.performSemanticsAction zwraca teraz SemanticsNodeInteraction, na którym wywołano funkcję. (I9e5db)
  • Dodano performScrollToNode(matcher: SemanticsMatcher), które przewija kontener z możliwością przewijania do treści pasujących do danego dopasowania. (Ic1cb8)

Wersja 1.1.0-alpha05

29 września 2021 r.

androidx.compose.foundation:foundation:1.1.0-alpha05androidx.compose.foundation:foundation-layout:1.1.0-alpha05 zostały opublikowane. Wersja 1.1.0-alpha05 zawiera te zmiany.

Zmiany w interfejsie API

Poprawki błędów

  • Poprawiono obsługę ułatwień dostępu w przypadku elementów z możliwością przewijania (zarówno ładowanych leniwie, jak i nie) w odniesieniu do przewijania (I6cdb0).

Wersja 1.1.0-alpha04

15 września 2021 r.

androidx.compose.foundation:foundation:1.1.0-alpha04androidx.compose.foundation:foundation-layout:1.1.0-alpha04 zostały opublikowane. Wersja 1.1.0-alpha04 zawiera te zmiany.

Zmiany w interfejsie API

  • Wycofano funkcje performGestureGestureScope, które zostały zastąpione przez performTouchInputTouchInjectionScope. (Ia5f3f, b/190493367)
  • Dodano 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 ułatwień dostępu. (I2e14b, b/197751214)

Poprawki błędów

  • Na urządzeniach z Androidem 12 dodano obsługę rozciągania przewijania. (Iccf3c, b/171682480)

Wersja 1.1.0-alpha03

1 września 2021 roku

androidx.compose.foundation:foundation:1.1.0-alpha03androidx.compose.foundation:foundation-layout:1.1.0-alpha03 zostały opublikowane. Wersja 1.1.0-alpha03 zawiera te zmiany.

Nowe funkcje

  • Zaktualizowano Compose 1.1.0-alpha03, aby zależał od Kotlin 1.5.30. (I74545)

Zmiany w interfejsie API

  • Dodano efekt świecenia podczas przewijania. Dodano nowy eksperymentalny interfejs OverScrollConfiguration API, który umożliwia konfigurowanie efektu wizualnego przewijania poza zakres. Aby wyłączyć efekt overscroll, podaj wartość null. (I0c304, b/171682480)
  • AwaitPointerEventScope ma teraz funkcje withTimeout() i withTimeoutOrNull() (I507f0, b/179239764, b/182397793).
  • Dodano metodę testową, aby uzyskać przycięte granice. (I6b28e)
  • Dodano minimalny rozmiar docelowego elementu dotykowego do ViewConfiguration do użycia w semantyce i danych wejściowych wskaźnika, aby zapewnić dostępność. (Ie861c)

Wersja 1.1.0-alpha02

18 sierpnia 2021 r.

androidx.compose.foundation:foundation:1.1.0-alpha02androidx.compose.foundation:foundation-layout:1.1.0-alpha02 zostały opublikowane. Wersja 1.1.0-alpha02 zawiera te zmiany.

Zmiany w interfejsie API

Wersja 1.1.0-alpha01

4 sierpnia 2021 r.

androidx.compose.foundation:foundation:1.1.0-alpha01androidx.compose.foundation:foundation-layout:1.1.0-alpha01 zostały opublikowane. Wersja 1.1.0-alpha01 zawiera te zmiany.

Zmiany w interfejsie API

  • Zaktualizowana metoda DrawScope#drawImage, która pobiera prostokąty źródłowe i docelowe, aby pobierać opcjonalny parametr FilterQuality. Jest to przydatne w przypadku grafiki pikselowej, która ma być pikselowana po powiększeniu. Zaktualizowano funkcję kompozycyjną BitmapPainter + Image, aby przyjmowała też opcjonalny parametr FilterQuality (Ie4fb0, b/180311607)
  • Pole tekstowe czyści teraz zaznaczenie po naciśnięciu przycisku Wstecz, co jest zgodne z działaniem elementu EditText na Androidzie. (I3ca16, b/174173645)
  • Dodaj uchwyt kursora. (I07a82, b/173016579)

Poprawki błędów

  • Przewijanie za pomocą działań semantycznych w przypadku list leniwych i zwykłych komponentów przewijania jest teraz animowane (Id9066, b/190742024).

Wkład zewnętrzny

  • LazyVerticalGrid akceptuje teraz parametry układu poziomego i pionowego. (If9c92)

Wersja 1.0

Wersja 1.0.5

3 listopada 2021 r.

androidx.compose.foundation:foundation:1.0.5androidx.compose.foundation:foundation-layout:1.0.5 zostały opublikowane. Wersja 1.0.5 zawiera te zmiany.

Poprawki błędów

  • Naprawiliśmy awarię śledzenia instancji derivedStateOf. (aosp/1792247)

Wersja 1.0.4

13 października 2021 r.

androidx.compose.foundation:foundation:1.0.4androidx.compose.foundation:foundation-layout:1.0.4 zostały opublikowane. Wersja 1.0.4 zawiera te zmiany.

Aktualizacje zależności

  • Zaktualizowano, aby zależał od Kotlin 1.5.31

Wersja 1.0.3

29 września 2021 r.

androidx.compose.foundation:foundation:1.0.3androidx.compose.foundation:foundation-layout:1.0.3 zostały opublikowane. Wersja 1.0.3 zawiera te zmiany.

Aktualizacje zależności

  • Zaktualizowano, aby zależał od Kotlin 1.5.30

Wersja 1.0.2

1 września 2021 roku

androidx.compose.foundation:foundation:1.0.2androidx.compose.foundation:foundation-layout:1.0.2 zostały opublikowane. Wersja 1.0.2 zawiera te zmiany.

Zaktualizowano, aby obsługiwać wersję 1.0.2 Compose. Compose 1.0.2 jest nadal zgodny z Kotlinem 1.5.21.

Wersja 1.0.1

4 sierpnia 2021 r.

androidx.compose.foundation:foundation:1.0.1androidx.compose.foundation:foundation-layout:1.0.1 zostały opublikowane. Wersja 1.0.1 zawiera te zmiany.

Aktualizacje zależności

  • Zaktualizowano, aby zależał od Kotlina w wersji 1.5.21.

Wersja 1.0.0

28 lipca 2021 roku

androidx.compose.foundation:foundation:1.0.0androidx.compose.foundation:foundation-layout:1.0.0 zostały opublikowane. Wersja 1.0.0 zawiera te zmiany.

Główne funkcje wersji 1.0.0

To pierwsza stabilna wersja Compose. Więcej informacji znajdziesz na oficjalnym blogu o wersji Compose.

Znane problemy

  • Jeśli używasz Androida Studio Bumblebee Canary 4 lub AGP 7.1.0-alpha04/7.1.0-alpha05, może wystąpić ten błąd:

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    Aby to naprawić, tymczasowo zwiększ wartość minSdkVersion do 24 lub więcej w pliku build.gradle. Ten problem zostanie rozwiązany w kolejnej wersji Androida Studio Bumblebee i AGP 7.1. (b/194289155)

Wersja 1.0.0-rc02

14 lipca 2021 roku

androidx.compose.foundation:foundation:1.0.0-rc02androidx.compose.foundation:foundation-layout:1.0.0-rc02 zostały opublikowane. Wersja 1.0.0-rc02 zawiera te zmiany.

  • Zaktualizowano renderowanie obramowań w przypadku ogólnych kształtów, aby rozwiązać problemy ze ścieżkami zdefiniowanymi za pomocą stałych wymiarów. (aosp/1748871, b/191817116)

Wersja 1.0.0-rc01

1 lipca 2021 r.

androidx.compose.foundation:foundation:1.0.0-rc01androidx.compose.foundation:foundation-layout:1.0.0-rc01 zostały opublikowane. Wersja 1.0.0-rc01 zawiera te zmiany.

Zmiany w interfejsie API

  • Canvas obsługuje teraz parametr contentDescription na potrzeby ułatwień dostępu. (Ib547c)

Poprawki błędów

  • Wyłączony przycisk, karta, pola wyboru i ogólnie Modifier.clickable(enabled=false) będą blokować kliknięcia, które mają być przekazywane do elementu nadrzędnego. (Ic2c3b, b/183908811)

Wersja 1.0.0-beta09

16 czerwca 2021 r.

androidx.compose.foundation:foundation:1.0.0-beta09androidx.compose.foundation:foundation-layout:1.0.0-beta09 zostały opublikowane. Wersja 1.0.0-beta09 zawiera te zmiany.

Zmiany w interfejsie API

  • Użytkownik ManualFrameClock został usunięty. Jeśli chcesz sterować animacjami, użyj 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)
  • Obecnie kluczową stałą jest @ExperimentalComposeUiApi. Kod korzystający z interfejsu API może deklarować stałe prywatne przed jego ustabilizowaniem. (Ia5d48)
  • Dodano IdlingStrategy do AndroidComposeTestRule, z którego mogą korzystać platformy testowe, aby zainstalować alternatywny mechanizm oczekiwania lub osiągania stanu spoczynku. Użyj funkcji AndroidComposeTestRule.setIdlingStrategyFactory() przed rozpoczęciem testu, aby zainstalować własną strategię. (I608fa)

Dodano reguły profilu

W tej wersji dodaliśmy reguły profilu do tych modułów kompozycji (I14ed6):

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.foundation
  • androidx.compose.foundation-layout
  • androidx.compose.material
  • androidx.compose.material-ripple
  • androidx.compose.runtime
  • androidx.compose.ui
  • androidx.compose.ui.geometry
  • androidx.compose.ui.graphics
  • androidx.compose.ui.text
  • androidx.compose.ui.text
  • androidx.compose.ui.unit
  • androidx.compose.ui.util

Czym są reguły profilu?

  • Reguły profilu dla biblioteki są określone w pliku tekstowym baseline-prof.txt znajdującym się w 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”.

  • <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;.

  • Symbol <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 metodą „gorącą” i powinna być skompilowana z wyprzedzeniem.

  • Metoda z flagą S wskazuje, że jest to metoda wywoływana podczas uruchamiania i powinna być skompilowana z wyprzedzeniem, aby uniknąć kosztów kompilacji i interpretacji metody podczas uruchamiania.

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

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

Jak to działa?

  • Biblioteki mogą definiować te reguły, które będą pakowane w artefakty AAR. Gdy aplikacja zawierająca te artefakty zostanie skompilowana, reguły zostaną połączone, a następnie użyte do utworzenia kompaktowego binarnego profilu ART, który jest specyficzny dla aplikacji. ART może następnie wykorzystać ten profil podczas instalowania aplikacji na urządzeniach, aby skompilować z wyprzedzeniem określony podzbiór aplikacji i zwiększyć jej wydajność, zwłaszcza podczas pierwszego uruchomienia. Nie będzie to miało wpływu na aplikacje, które można debugować.

Wersja 1.0.0-beta08

2 czerwca 2021 r.

androidx.compose.foundation:foundation:1.0.0-beta08androidx.compose.foundation:foundation-layout:1.0.0-beta08 zostały opublikowane. Wersja 1.0.0-beta08 zawiera te zmiany.

Zmiany w interfejsie API

  • Wyliczenie NestedScrollSource zostało zastąpione klasą wbudowaną. (Ie321b, b/187055290)
  • Zmieniliśmy sposób używania wyliczeń na klasy wbudowane, aby uniknąć problemów z wyczerpującymi instrukcjami „when” po dodaniu nowych wartości wyliczenia. (I2b5eb)
  • Dodaje limit czasu kliknięcia do elementów klikalnych i przełączalnych, aby zapobiec wyświetlaniu efektu fali podczas przewijania lub przeciągania (Ia2704, b/168524931).
  • Właściwości semantyczne ContentDescription i Text nie są już pojedynczymi wartościami, ale listami. Dzięki temu można je scalić w takiej postaci, w jakiej są, zamiast je łączyć. Udostępniliśmy też lepsze interfejsy API do testowania, które pozwalają korzystać z tych zmian (Ica6bf, b/184825850).
  • Środowisko wykonawcze Modifier.focusModifier() zostało wycofane i zastąpione ś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)
  • AnnotatedString.withAnnotation są teraz częścią ExperimentalTextApi zamiast ExperimentalComposeApi. (I0cd0a)
    • Konstruktor TextUnit z TextUnitType jest teraz ExperimentalTextApi zamiast ExperimentalComposeApi.
  • Wartość PaddingValues to teraz @Stable zamiast @Immutable (I88c50)

Poprawki błędów

  • Naprawiono awarie spowodowane długim naciśnięciem pustego obszaru w niepustym tekście. (I33ab5, b/187437299)
  • Wyświetlanie paska narzędzi po wybraniu wszystkich elementów (I495d9, b/185919613)
  • Poprawka dotycząca przycinania elementów podrzędnych kontenerów z możliwością przewijania na osi poprzecznej. Problem można było łatwo odtworzyć, jeśli w komponencie LazyRow znajdowały się elementy Card. Teraz cień nie będzie już przycinany. (Icb635, b/186318448)
  • Rozwiązaliśmy problem, który powodował, że efekt fali lub inne wskazanie czasami zawieszały się podczas długiego kliknięcia, gdy używano Modifier.combinedClickable (I2298c, b/186223077).
  • Teraz detectDragGesures, detectVerticalGesturesdetectHorizontalGestures będą automatycznie wykorzystywać zmianę pozycji, więc nie musisz wywoływać funkcji change.consumePositionChange w wywołaniach zwrotnych onDrag (I42fc4, b/185096350, b/187320697).
  • Modifier.onGloballyPositioned() została zmieniona tak, aby raportować współrzędne tego modyfikatora w łańcuchu modyfikatorów, a nie współrzędne układu po zastosowaniu wszystkich modyfikatorów. Oznacza to, że kolejność modyfikatorów wpływa teraz na to, jakie współrzędne będą raportowane. (Ieb67d, b/177926591)

Wersja 1.0.0-beta07

18 maja 2021 r.

androidx.compose.foundation:foundation:1.0.0-beta07androidx.compose.foundation:foundation-layout:1.0.0-beta07 zostały opublikowane. Wersja 1.0.0-beta07 zawiera te zmiany.

Zmiany w interfejsie API

  • Wprowadzono logikę wstępnego pobierania następnego widocznego elementu w przypadku komponentów LazyColumn/Row (I8a4bc, b/184940225).
  • Dodano uchwyt zaznaczenia klipu (Iff80d, b/183408447)

Poprawki błędów

  • Komponenty LazyColumn i LazyRow będą teraz utrzymywać do 2 wcześniej widocznych elementów w stanie aktywnym (nieusuniętym), nawet jeśli zostały już przewinięte. Dzięki temu komponent może ponownie wykorzystywać aktywne podkompozycje, gdy będziemy musieli utworzyć nowy element, co poprawia wydajność przewijania. (Ie5555)
  • Usuń paintBackground. (I38660)
  • Rysuj tło zaznaczenia za pomocą DrawScope. (I73c61, b/186674472)
  • Naprawiliśmy regresję w wersji beta06, która wpływała na wiersze i kolumny korzystające z układów spacedBy do rozmieszczania ważonych elementów podrzędnych. (Ifaf8c, b/187326588)

Wersja 1.0.0-beta06

5 maja 2021 roku

androidx.compose.foundation:foundation:1.0.0-beta06androidx.compose.foundation:foundation-layout:1.0.0-beta06 zostały opublikowane. Wersja 1.0.0-beta06 zawiera te zmiany.

Zmiany w interfejsie API

  • Rozwiązywanie konfliktów z gestami nawigacyjnymi (I1145e)
  • Dodano interfejsy API ułatwień dostępu CollectionInfo i CollectionItemInfo, które umożliwiają oznaczanie kolekcji i jej elementów dla usług ułatwień dostępu (Id54ef, b/180479017).
  • Dodano SemanticsActions.ScrollToIndex, aby przewijać listę z elementami indeksowanymi do elementu o określonym indeksie, oraz SemanticsProperties.IndexForKey, aby uzyskać indeks elementu na liście z elementami kluczowymi. Oba działania są realizowane przez LazyList.
    • Dodano funkcję SemanticsNodeInteraction.performScrollToIndex, która przewija listę do podanego indeksu, oraz funkcję SemanticsNodeInteraction.performScrollToKey, która przewija listę do elementu o podanym kluczu. (I4fe63, b/178483889, b/161584524)
  • 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 wiersza i kolumny z symbolem weight(fill = false) nie powodują już wypełnienia przez element nadrzędny całej dostępnej przestrzeni osi głównej. (Ied94d, b/186012444, b/184355105)

Wersja 1.0.0-beta05

21 kwietnia 2021 r.

androidx.compose.foundation:foundation:1.0.0-beta05androidx.compose.foundation:foundation-layout:1.0.0-beta05 zostały opublikowane. Wersja 1.0.0-beta05 zawiera te zmiany.

Zmiany w interfejsie API

  • Interfejs FlingBehavior jest teraz oznaczony jako @Stable. Wszystkie implementacje powinny być zgodne z umową @Stable. (I93354, b/184830577)

Poprawki błędów

  • Naprawiono działania przewijania w ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD,accessibilityActionScrollLeft, accessibilityActionScrollUp,accessibilityActionScrollRightaccessibilityActionScrollDown. Zamiast przewijać do końca obszaru przewijania, będzie teraz przewijać o jeden ekran w danym kierunku. (Ieccb0)
  • Pliki AndroidManifest z ui-test-manifest i ui-tooling-data są teraz zgodne z Androidem 12 (I6f9de, b/184718994).

Wersja 1.0.0-beta04

7 kwietnia 2021 r.

androidx.compose.foundation:foundation:1.0.0-beta04androidx.compose.foundation:foundation-layout:1.0.0-beta04 zostały opublikowane. Wersja 1.0.0-beta04 zawiera te zmiany.

Zmiany w interfejsie API

  • Zmień nazwy funkcji hideSoftwareKeyboard i showSoftwareKeyboard w klasie SoftwareKeyboardController na hide()show().
    • Udostępnia pełny interfejs CompositionLocal dla LocalSoftwareKeyboardController, co umożliwia jego ustawienie (szczególnie przydatne w testach) (I579a6).
  • TextOverflow.Visible zostaje wprowadzony. (Ic8f89)
  • Usunęliśmy publiczne instancje RowScope, ColumnScope, 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 kompozycyjne nie będą pomijane. Ta zmiana została wprowadzona, ponieważ funkcje lokalne często i zgodnie z oczekiwaniami przechwytują parametry z funkcji nadrzędnej, a ich pomijanie jest częstym źródłem błędów.

    Podsumowując, rozważmy przykład:

    @Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) {
      @Composable fun ShowCount() { Text("Count: $count") }
      ShowCount()
      Button(onClick={ onCountChange(count + 1) }) {
        Text("Increment")
      }
    }
    

    Przed tą zmianą funkcja ShowCount zawsze była pomijana, nawet po zaktualizowaniu parametru count. Ta informacja jest nieaktualna. (I5648a)

Wersja 1.0.0-beta03

24 marca 2021 r.

androidx.compose.foundation:foundation:1.0.0-beta03androidx.compose.foundation:foundation-layout:1.0.0-beta03 zostały opublikowane. Wersja 1.0.0-beta03 zawiera te zmiany.

Zmiany w interfejsie API

  • Środowisko wykonawcze DefaultMonotonicFrameClock zostało wycofane. Wywołanie funkcji withFrameNanos lub Recomposer.runRecomposeAndApplyChanges bez argumentu MonotonicFrameClock spowoduje teraz zgłoszenie błędu IllegalStateException. (I4eb0d)

Poprawki błędów

  • Funkcja FlingBehavior.performFling() jest teraz wywoływana nawet wtedy, gdy prędkość wynosi 0 (I0b6e5, b/181237123).

Wersja 1.0.0-beta02

10 marca 2021 r.

androidx.compose.foundation:foundation:1.0.0-beta02androidx.compose.foundation:foundation-layout:1.0.0-beta02 zostały opublikowane. Wersja 1.0.0-beta02 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodano kilka drobnych optymalizacji w logice pomiaru LazyColumn (Ic6889).
  • Dodano nowy interfejs API LocalSoftwareKeyboardControllercomposition local API, który zastępuje poprzedni interfejs SoftwareKeyboardController w polu TextField. (I5951e, b/168778053)
  • Dodano nowy interfejs API LocalSoftwareKeyboardControllercomposition local API, który zastępuje poprzedni interfejs SoftwareKeyboardController w polu TextField. (I84472, b/168778053)

Poprawki błędów

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

Wersja 1.0.0-beta01

24 lutego 2021 r.

androidx.compose.foundation:foundation:1.0.0-beta01androidx.compose.foundation:foundation-layout:1.0.0-beta01 zostały opublikowane. Wersja 1.0.0-beta01 zawiera te zmiany.

To pierwsza wersja Compose 1.0.0 w wersji beta.

Zmiany w interfejsie API

  • Dodano wywołanie zwrotne onStart do detectDragGestures (I67269, b/179995594)
  • Modyfikatory rozmiaru do wartości wewnętrznych nie są już eksperymentalne. (I15744)
  • Usunięto asercje dp (I798d2)
  • Usunięto wywołanie zwrotne SoftwareKeyboardController ze wszystkich pól tekstowych. Wkrótce zostanie ono zastąpione nowym interfejsem API. (Iae869, b/168778053)
  • Usługa MeasureBlocks została przekształcona w MeasurePolicy, która zyskała zabawny interfejs. Interfejsy API układu zostały zaktualizowane i uproszczone, aby korzystać z funkcji MeasurePolicy. (Icab48, b/167662468, b/156751158)
  • InteractionState zostało zastąpione przez [Mutable]InteractionSource
    • Interfejsy odpowiadają za emitowanie i zbieranie zdarzeń interakcji.
    • Zamiast przekazywać wartość interactionState = remember { InteractionState() } do komponentów takich jak ButtonModifier.clickable(), użyj wartości interactionSource = remember { MutableInteractionSource() }.
    • Zamiast: Interaction.Pressed in interactionState używaj funkcji rozszerzających w klasie InteractionSource, np. InteractionSource.collectIsPressedAsState().
    • W przypadku złożonych przypadków użycia możesz użyć InteractionSource.interactions, aby obserwować strumień interakcji. Więcej informacji znajdziesz w dokumentacji i przykładach dotyczących InteractionSource.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • Usunięto wycofane metody LayoutCoordinates. Zamiast właściwości positionInParent i boundsInParent używaj funkcji (I580ed, b/169874631, b/175142755)
  • Utworzono nową klasę TextInputSession dla sesji wprowadzania danych z komponentów tekstowych niskiego poziomu, takich jak CoreTextField. (I8817f, b/177662148)
  • Komponent Placeable udostępnia teraz właściwość measuredSize, która reprezentuje rozmiar, do którego został zmierzony układ podrzędny. Ten rozmiar może nie spełniać ograniczeń pomiarowych. (Ib2729, b/172560206, b/172338608)
  • Dodaj modyfikator selectionGroup, który umożliwia oznaczanie kolekcji kart lub przycisków opcji na potrzeby ułatwień dostępu (Ie5c29).
  • Dodanie funkcji LazyListState.animateScrollToItem

    Ta metoda umożliwia płynne przewijanie do określonego elementu na liście. (I4bfd7)

  • Funkcja ScrollableState.smoothScrollBy() została zmieniona na animateScrollBy(). Funkcja LazyListState.snapToItemIndex() została zmieniona na scrollToItem(). Funkcja ScrollState.smoothScrollTo() została zmieniona na animateScrollTo() (I35ded).

  • Modifier.zoomable został zastąpiony przez Modifier.transformable. Dodano funkcje smoothPanBy i smoothRotationBy. (Ifc32b, b/175294473)

  • Pole defaultFactory dla compositionLocalOf i staticCompositionLocalOf jest teraz wymagane zamiast opcjonalnego.

    Ta zmiana usuwa potencjalny błąd typu w przypadku typów, które nie mogą mieć wartości null, a dla których nie podano domyślnej funkcji fabrycznej. Wcześniej w przypadku typu, który nie dopuszcza wartości null, zwracana była referencja null.

    W przypadku typów dopuszczających wartość null rozważ podanie wartości { null } jako domyślnej funkcji fabrycznej.

    Nie zalecamy używania zmiennych lokalnych z typami, które nie dopuszczają wartości null, chyba że można podać rozsądną wartość domyślną. Jeśli nie ma sensownej wartości domyślnej, funkcja lambda defaultFactory powinna zgłosić wyjątek. Wyjątek oznacza jednak, że konsumenci lokalnego będą mieli niejawną zależność od jego dostarczenia, która nie jest wymuszana przez system typów. (Ifbd2a)

  • Zmieniono wartość Indication#createIndication() na Indication#rememberUpdatedIndication(InteractionState) i usunięto parametr InteractionState z funkcji IndicationInstance#drawIndication(). Klasa IndicationInstance powinna być odpowiedzialna tylko za rysowanie efektów wizualnych, a nie za uruchamianie animacji ani zapisywanie stanu w odpowiedzi na zmiany w klasie InteractionState. Animacje i zapisy stanu powinny następować w cią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 ostrość (I13777, b/179648629)

  • Usunięto runBlockingWithManualClock (I15cdc, b/179664814)

  • Pozycja przewijania w funkcjach Modifier.verticalScroll()/horizontalScroll() jest teraz reprezentowana przez liczby całkowite (I81298).

  • Pakiety metod smoothScrollBy i scrollBy zmieniono na androidx.compose.foundation.gestures.* (I3f7c1, b/175294473)

  • Klasa FlingConfig została zmieniona na FlingBehavior i umożliwia teraz dostosowywanie animacji zawieszenia zamiast wstępnie zdefiniowanych zanikań. (I02b86, b/175294473)

  • Zmieniliśmy nazwy modyfikatorów rozmiaru. Zmieniono nazwy modyfikatorów Modifier.width/height/size na requiredWidth/requiredHeight/requiredSize. Zmieniono nazwy modyfikatorów Modifier.preferredWidth/preferredHeight/preferredSize na width/height/size. (I5b414)

  • defaultMinSizeConstraints zmieniono na defaultMinSize. (I4eaae)

  • Usunięto Modifier.tapGestureFilter. Zamiast niej używaj zasady Modifier.pointerInput { detectTapGestures(...) }. (I266ed, b/175294473)

  • częściowe wykorzystanie zostało usunięte z systemu wprowadzania za pomocą wskaźnika. Zalecanym sposobem koordynowania częściowego zużycia jest Modifier.nestedScroll. (Ie9c9b)

  • Orientacja została przeniesiona do pakietu podstawowego. VelocityTracker został przeniesiony z ui.gesture do ui.input.pointer. (Iff4a8, b/175294473)

  • Klasy AnimationClockObservable i ich podklasy zostały usunięte. Klasa AnimatedFloat została usunięta. (Icde52, b/177457083)

  • Funkcje drawerState.open() i drawerState.close() są teraz funkcjami zawieszającymi. Aby wywołać te funkcje, użyj funkcji rememberCoroutineScope() w zakresie kompozycji (I16f60, b/175294473).

  • Element Providers został zmieniony na CompositionLocalProvider

    • Konstruktor Composition nie akceptuje już parametru key i został wycofany.
    • currentCompositeKeyHash został przekształcony w właściwość najwyższego poziomu typu „composable”, a nie w funkcję najwyższego poziomu typu „composable”.
    • Klasy CompositionData i CompositionGroup zostały przeniesione do przestrzeni nazw androidx.compose.runtime.tooling.
    • Typ ComposableLambda został zmieniony z klasy konkretnej na interfejs i nie ma już parametrów typu.
    • ComposableLambdaN stał się interfejsem zamiast konkretnej klasy i nie ma już parametrów typu.
    • Funkcja snapshotFlow została przeniesiona do przestrzeni nazw androidx.compose.runtime
    • metoda scalania SnapshotMutationPolicy nie jest już eksperymentalna;
    • Usunęliśmy funkcję @TestOnly clearRoots najwyższego poziomu. Nie jest już potrzebny.
    • Funkcje keySourceInfoOf i resetSourceInfo zostały usunięte. Nie są już potrzebne.
    • Funkcja Composer.collectKeySourceInformation została usunięta. Nie jest już potrzebny.
    • Usunęliśmy metody isJoinedKey, joinedKeyLeft i joinedKeyRight. Nie są już potrzebne.
    • Różne interfejsy API najwyższego poziomu zostały przeniesione i zreorganizowane w różnych plikach. Ze względu na semantykę klasy plików w języku Kotlin spowoduje to przerwanie zgodności binarnej, ale nie zgodności kodu źródłowego, więc nie powinno stanowić problemu dla większości użytkowników.
    • (I99b7d, b/177245490)
  • Zmodyfikowano element Modifier.scrollable. Zamiast klasy ScrollableController używa teraz interfejsu Scrollable (I4f5a5, b/174485541, b/175294473).

  • Modifier.draggable akceptuje teraz DraggableState zamiast zwykłej lambdy. Stan możesz utworzyć za pomocą rememberDraggableState { delta -> }, aby uzyskać takie samo działanie jak wcześniej (Ica70f, b/175294473).

  • Dodano modyfikatory requiredWidth(IntrinsicSize) i requiredHeight(IntrinsicSize) do wymaganych rozmiarów do rozmiarów wewnętrznych. (I0a6b4)

  • Wycofany element emptyContent() został usunięty. Zamiast niej używaj zasady {}. (Idb33f, b/179432510)

  • Usunięto niektóre wcześniej wycofane interfejsy API (Ice5da, b/178633932).

Poprawki błędów

  • Dodano nowy lokalny interfejs API LocalSoftwareKeyboardController, który zastępuje poprzedni interfejs SoftwareKeyboardController w polu TextField. (I658b6, b/168778053)

Wersja 1.0.0-alpha12

10 lutego 2021 r.

androidx.compose.foundation:foundation:1.0.0-alpha12androidx.compose.foundation:foundation-layout:1.0.0-alpha12 zostały opublikowane. Wersja 1.0.0-alpha12 zawiera te zmiany.

Zmiany w interfejsie API

  • Funkcja Modifier.pointerInput wymaga teraz kluczy pamięci, aby wskazywać, kiedy korutyna wykrywania danych wejściowych wskaźnika powinna zostać ponownie uruchomiona w przypadku nowych zależności. (I849cd)
  • Aktualizacja testowania: funkcja hasText() będzie sprawdzać zarówno tekst wprowadzony, jak i tekst etykiety, podpowiedzi lub symbolu zastępczego w polu tekstowym (Iab803)
  • Dodano PaddingValues.Absolute, którego można używać w interfejsach API akceptujących PaddingValues. (Ia5f30)
  • onImeActionPerformed jest wycofana. Zamiast niej używaj KeyboardActions (If0bbd, b/179071523)
  • Aby lepiej dopasować konwencje nazewnictwa do ImageBitmap i ImageVector, zmieniliśmy nazwę ImagePainter na BitmapPainter, aby była podobna do VectorPainter. (Iba381, b/174565889)
  • Ulepszone interfejsy API testów podłańcuchów z podłańcuchem jako argumentem (Icbe78)
  • Wprowadzono element InfiniteAnimationPolicy kontekstu współprogramu, który będzie stosowany w animacjach nieskończonych. Domyślnie nie jest instalowana żadna zasada, z wyjątkiem testów przeprowadzanych w projekcie ComposeTestRule. (I50ec4, b/151940543)
  • Funkcje Animatable.snapTo i Animatable.stop są teraz funkcjami zawieszania (If4288).
  • Funkcja ComponentActivity.setContent została przeniesiona do androidx.activity.compose.setContent w module androidx.activity:activity-compose. (Icf416)
  • Metody destrukcji i copy() zostały usunięte z kilku klas, w których były rzadko używane. (I26702, b/178659281)
  • Dodaliśmy obsługę kluczy niestandardowych w przypadku elementów LazyColumn i LazyRow. Dzięki temu możemy inteligentniej zarządzać ponownym zamawianiem produktów. Dlatego stan zapisany w blokach remember {} będzie przenoszony razem z elementem, gdy zmienisz kolejność elementów lub usuniesz element ze środka.

    LazyColumn {
        items(users, key = { user -> user.id }) { ... }
    }
    
  • Zmieniono funkcję Indication#createInstance, aby była funkcją @Composable, a zmieniono LocalIndication, aby zawierała Indication, a nie () -> Indication. (I5eeea, b/157150564)

  • Tekst Constraints.enforce został zastąpiony tekstem Constraints.constrain. (I8b8ea)

  • Funkcja loadFontResource została wycofana. Zamiast nich używaj fontResource. imageResource, loadImageResource, vectorResource i loadVectorResource zostały wycofane. Zamiast tego użyj painterResource. (I6b809)

  • Ze względu na wydajność semantyka ScrollAxisRange przyjmuje teraz lambdy zwracające wartości zmiennoprzecinkowe zamiast bezpośrednich wartości zmiennoprzecinkowych. (If4a35, b/178657186)

  • Dodano semantykę EditableText, aby oznaczyć edytowalny tekst wejściowy pola tekstowego na potrzeby ułatwień dostępu, oraz odpowiednie metody testowania, aby sprawdzić semantykę (I8e07a).

  • Modyfikator clickable nie obsługuje już podwójnego i długiego kliknięcia. Aby uzyskać tę funkcjonalność, użyj Modifier.combinedClickable. (Iafad1)

  • Nazwa funkcji toIntPx() została zmieniona na roundToPx(). (I9b7e4, b/173502290)

  • Zmieniliśmy nazwę IntBounds na IntRect i ulepszyliśmy interfejs API. (I1f6ff)

  • Modyfikator Modifier.dragGestureFilter został wycofany. Zamiast niej używaj zasady Modifier.pointerInput { detectDragGestures (...)}. Możesz też użyć modyfikatora Modifier.draggable do przeciągania w jednej osi (I0ba93, b/175294473).

  • Zmieniliśmy nazwę Ambients, aby pasowała do zmiany nazwy Ambient -> CompositionLocal. Komponenty Ambients miały wcześniej nazwy AmbientFoo, a teraz komponenty CompositionLocals mają nazwy LocalFoo. (I2d55d)

  • Zaznaczenie zostało przeniesione do warstwy podstawowej. (I7892b)

  • Podobnie jak wcześniej usunęliśmy funkcję state { 0 } i teraz promujemy używanie funkcji remember { mutableStateOf(0) }, usuniemy funkcję savedInstanceState { 0 }. Zamiast tego użyj rememberSaveable { mutableStateOf(0) }. Będzie on automatycznie zapisywać i przywracać stan, jeśli typ użyty w MutableState można zapisać w obiekcie Bundle. Jeśli wcześniej przekazywano niestandardowy obiekt zapisujący, teraz trzeba użyć nowego przeciążenia funkcji rememberSaveable, które ma 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ć rekompozycję, dopóki nie zostaną ukończone podrzędne korutyny kompozycji. Funkcja Recomposer.shutDown została zmieniona na cancel, aby odróżnić ją od funkcji close. (Ib6d76)

  • Interfejsy API związane z LazyVerticalGrid są oznaczone jako eksperymentalne (Ia53e3, b/178519862).

  • Funkcja rememberSavedInstanceState() została zmieniona na rememberSaveable() i przeniesiona do pakietu androidx.compose.runtime.saveable. (I1366e, b/177338004)

  • Klasa RestorableStateHolder została zmieniona na SaveableStateHolder i przeniesiona do pakietu androidx.compose.runtime.saveable. Metoda wewnętrzna RestorableStateProvider została zmieniona na SaveableStateProvider. Typ ogólny został usunięty, więc jako klucz możesz przekazać dowolny typ. Adnotacja eksperymentalna nie jest już potrzebna. (I0902e, b/174598702)

  • Funkcje Saver, listSaver(), mapSaver() i autoSaver zostały przeniesione z pakietu androidx.compose.runtime.savedinstancestate do pakietu androidx.compose.runtime.saveable (I77fe6).

  • Artefakt androidx:compose:runtime:runtime-saved-instance-state został zmieniony na androidx:compose:runtime:runtime-saveable (I6dcac)

  • Wiele wycofanych interfejsów API z pakietu ui zostało usuniętych. (I2f2dc)

  • Artefakt compose:runtime-dispatch został wycofany. Klasa MonotonicFrameClock znajduje się teraz w pakiecie compose:runtime, a klasa AndroidUiDispatcher – w pakiecie compose:ui. (Ib5c36)

  • Parametry w klasach RounderCornerShape, CutCornerShape i CornerBasedShape zostały zmienione z left/right na start/end, aby obsługiwać automatyczne odbijanie kształtu w kierunku od prawej do lewej. Kształty AbsoluteRounderCornerShape i AbsoluteCutCornerShape zostały wprowadzone w przypadkach, gdy automatyczne dublowanie nie jest pożądane. (I61040, b/152756983)

  • Właściwość canDrag została usunięta z modyfikatora scrollable. (Id66e7, b/175294473)

  • Interfejs API, na który jest kierowana wtyczka kompilatora Compose, został przekształcony tak, aby używać interfejsu zamiast klasy konkretnej. Interfejs nie używa już też parametru typu.

    Jest to zmiana wewnętrzna, która nie powinna wpływać na zgodność kodu źródłowego, ale jest zmianą binarną. (I3b922, b/169406779)

  • Usunięto Modifier.scaleGestureFilter. Zamiast tego użyj Modifier.zoomable. Możesz też użyć Modifier.pointerInput { detectMultitouchGestures { ... }} (Id5da1, b/175294473)

  • Właściwość AnimatedValue/Float została wycofana. Zamiast tego użyj Animatable. (I71345, b/177457083)

    • Usunięto CoreText i CoreTextField z publicznego interfejsu API
    • Usunięto wycofane przeciążenie SelectionContainer (I99c19)
  • Usunięcie wycofanych funkcji przewijania bez zawieszania Kontynuując zmiany z ostatniej wersji, całkowicie usunęliśmy funkcje przewijania bez zawieszania. Zastąp je funkcjami zawieszania o tych samych nazwach. Zakres współprogramu można uzyskać za pomocą funkcji rememberCoroutineScope(). (I3d39c, b/178169563)

  • androidx.compose.foundation.layout.ConstraintLayout zostało wycofane na rzecz androidx.constraintlayout.compose.ConstraintLayout. Musisz dodać zależność od androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01. (I87adc)

  • Funkcje tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter i pressIndicaitonGestureFilter zostały wycofane. Zamiast tego użyj funkcji Modifier.clickable lub Modifier.pointerInput z funkcją detectTapGestures. (I6baf9, b/175294473)

  • Użytkownik Recomposer.current() został usunięty. [Abstract]ComposeView now default to lazily created, window-scoped Recomposers driven by the ViewTreeLifecycleOwner for the window. Ponowne komponowanie i tyknięcia animacji oparte na withFrameNanos są wstrzymywane, gdy cykl życia hosta jest zatrzymany. (I38e11)

  • Właściwość Recomposer.runningRecomposers udostępnia teraz globalny obiekt StateFlow tylko do odczytu RecomposerInfo, który umożliwia obserwowanie stanu bieżącej kompozycji w procesie. Zalecamy używanie tego interfejsu API zamiast Recomposer.current(), który jest obecnie wycofany. (If8ebe)

Wersja 1.0.0-alpha11

28 stycznia 2021 roku

androidx.compose.foundation:foundation:1.0.0-alpha11androidx.compose.foundation:foundation-layout:1.0.0-alpha11 zostały opublikowane. Wersja 1.0.0-alpha11 zawiera te zmiany.

Zmiany w interfejsie API

  • Wycofanie funkcji scrollBy, która nie wstrzymuje działania, i usunięcie funkcji scrollTo, która nie wstrzymuje działania

    Zalecamy teraz używanie funkcji zawieszania do kontrolowania przewijania i oczekiwania na jego zakończenie. W ramach tej zmiany wycofujemy lub usuwamy wersje tych funkcji, które nie powodują zawieszenia. (Ie9ced)

  • Wycofanie funkcji smoothScrollBy, która nie jest funkcją zawieszającą Zalecamy teraz używanie funkcji zawieszających do sterowania przewijaniem i oczekiwania na zakończenie przewijania. W ramach tej zmiany wycofujemy wersje tych funkcji, które nie są zawieszane. (I12880)

  • Do komponentów Obraz i Ikona dodaliśmy parametr opis treści. Służy do przekazywania opisu usługom ułatwień dostępu (I2ac4c).

  • Komponent BasicTextField otrzymał nowy parametr o nazwie „decorationBox”. Umożliwia dodawanie do pola tekstowego elementów dekoracyjnych, takich jak ikony, symbole zastępcze czy etykiety, oraz zwiększanie obszaru docelowego kliknięcia. (I16996)

  • Usunięto parametr canDrag z funkcji Modifier.draggable (Ic4bec, b/175294473)

  • Usunięto funkcję AnimatedFloat.fling, która akceptuje FlingConfig. Zamiast niej użyj metody suspend Animatable.animateDecay. (I4659b, b/177457083)

  • Usunięto nauczyciela data class z tych zajęć:

    • InlineTextContent
    • LocaleList
    • (I605c7)
  • elementy klikalne, przełączane i możliwe do zaznaczenia można teraz tworzyć poza kompozycją (I0a130, b/172938345, b/175294473);

  • Komponenty ScrollableColumn i ScrollableRow zostały wycofane. Używanie komponentu ScrollableColumn jest mniej wydajne niż LazyColumn w przypadku dużych treści przewijanych, ponieważ w przypadku LazyColumn możemy tylko tworzyć, mierzyć i rysować widoczne elementy. Aby zapobiec nieefektywnemu korzystaniu z tej funkcji, zdecydowaliśmy się wycofać ScrollableColumn i ScrollableRow oraz promować zamiast nich LazyColumn i LazyRow. Użytkownicy mogą nadal decydować, że nie potrzebują leniwego zachowania, i używać modyfikatorów bezpośrednio, np. Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083).

  • Nowa metoda fabryczna items(count: Int) dla zakresu LazyColumn/LazyRow/LazyVerticalGrid. items(items: List)itemsIndexed(items: List) są teraz funkcjami rozszerzającymi, więc musisz je importować ręcznie, gdy są używane. Nowe przeciążenia rozszerzeń dla tablic: items(items: Array) i itemsIndexed(Array) (I803fc, b/175562574)

  • Usunięto wycofany element AbsoluteArrangement. (Iffa96, b/177641870)

  • Do komponentu Box dodano parametr propagateMinConstraints, który określa, czy przychodzące minimalne ograniczenia powinny być przekazywane do treści komponentu Box. Wartość domyślna to fałsz. (I0125b, b/152613457)

Poprawki błędów

  • Funkcje onCommit, onDispose i onActive zostały wycofane na rzecz interfejsów SideEffect i DisposableEffect API (If760e).
  • Funkcja WithConstraints została przekształcona w BoxWithConstraints i przeniesiona do pakietu foundation.layout. (I9420b, b/173387208)
  • Zmiany w funkcjach fabrycznych dla Font/FontFamily/Typeface

    • Dodano funkcje fabryczne rozpoczynające się wielką literą
    • Wycofanie poprzednich funkcji fabrycznych z małymi literami na początku
    • Nowe funkcje fabryczne zwracają FontFamily zamiast podklas
    • Ukryte konstruktory podklas, dzięki czemu można je tworzyć tylko za pomocą funkcji fabrycznych.
    • Zmiana nazwy Font.asFontFamily na Font.toFontFamily
    • (I42aa7)
  • Wprowadzono ComposeContentTestRule, która 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 teraz 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 i nadal nią pozostanie. 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 podkompozycjach, 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 rekomendacji pojedynczego odwołania 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 pracę rozpoczętą lub zasoby przydzielone w onRemembered, onAbandoned można zignorować, ponieważ nie zostanie wywołany, jeśli zostanie wywołany onRemembered. (I02c36)

  • Zmiana nazwy TransformedText.transformedText na TransformedText.text

    • TransformedText nie jest już klasą danych (Ie672a)
  • Te klasy nie są już klasami danych:

    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • Grubość czcionki
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput (Iaff99)
  • Usunięto eksperymentalne metody monotonicFrameAnimationClockOf (Ib753f, b/170708374)

  • Wycofaliśmy metody globalnych współrzędnych i wprowadziliśmy nowe metody współrzędnych oparte na oknach. (Iee284)

  • Zamiast ImeAction.NoAction użyj ImeAction.None.

    • Zamiast ImeAction.Unspecified (Ie1bcc) używaj ImeAction.Default.
  • Funkcja FocusRequester.createRefs została oznaczona jako eksperymentalna, ponieważ może ulec zmianie. (I2d898, b/177000821)

  • Właściwość SemanticsPropertyReceiver.hidden została zmieniona na invisibleToUser i oznaczona jako @ExperimentalComposeUiApi. Zmieniliśmy nazwę AccessibilityRangeInfo na ProgressBarRangeInfo. Zmieniliśmy nazwę stateDescriptionRange na progressBarRangeInfo. Zmieniliśmy nazwę AccessibilityScrollState na ScrollAxisRange. Zmieniliśmy nazwę horizontalAccessibilityScrollState na horizontalScrollAxisRange. Zmieniliśmy nazwę verticalAccessibilityScrollState na verticalScrollAxisRange. (Id3148)

  • Zmiana interfejsu VisualTransformation na interfejs funkcyjny (I3bba4)

  • Używanie TestCoroutineDispatcher w testach (I532b6)

  • Usunięto PointerInputData i zmodyfikowano PointerInputChange, aby zawierał wszystkie pola PointerInputData. Uczyniono klasy PointerInputEvent i PointerInputEventData wewnętrznymi, ponieważ nie są używane w żadnym publicznym interfejsie API. (Ifff97, b/175142755)

  • Zmiana nazwy TextInputService.onStateUpdated na updateState (Id4853)

  • Usuń displaySize, ponieważ należy go unikać. Zwykle lepiej jest używać rozmiaru onRoot() lub co najmniej rozmiaru okna. (I62db4)

Wersja 1.0.0-alpha10

13 stycznia 2021 r.

androidx.compose.foundation:foundation:1.0.0-alpha10androidx.compose.foundation:foundation-layout:1.0.0-alpha10 zostały opublikowane. Wersja 1.0.0-alpha10 zawiera te zmiany.

Zmiany w interfejsie API

  • ImeOptions i KeyboardOptions nie są już klasą danych (I3c898, b/168684531)
  • Zmiany w interfejsie VisualTransformation API
    • Zmiana nazwy OffsetMap na OffsetMapping
    • Zmiana nazwy OffsetMapping.identityOffsetMap na OffsetMapping.Identity
    • PasswordTransformation nie jest już klasą danych
    • Przeniesiono OffsetMapping do osobnego pliku
    • (I0bdf3)
  • Zmiany w interfejsie EditOperations API
    • Zmiana nazwy EditOperation na EditCommand
    • Dodano sufiks Command do konkretnych implementacji EditOperation
    • EditCommand nie są już klasami danych
    • Zmiana nazwy funkcji EditOperation.process na applyTo
    • Zmiana nazwy InputEventListener na InputEventCallback
    • (I0a366)
  • Zmodyfikowano Velocity, aby zawierał części składowe i operacje matematyczne. (Ib0447)
  • Zmiana nazwy adnotacji @ExperimentalTesting na @ExperimentalTestApi, aby była zgodna z podobnymi adnotacjami interfejsu API w wersji eksperymentalnej (Ia4502, b/171464963).
  • Dodano eksperymentalną metodę stickyHeader dla LazyColumn/LazyRow (I0a81d)
  • Zmiana nazwy funkcji Color.useOrElse() na Color.takeOrElse() (Ifdcf5)
  • Wycofano TestUiDispatcher. Zamiast tego użyj Dispatchers.Main (Ic171f, b/175385255)
  • Dodaj przełącznik do pliku foundation Strings.kt (I4a5b7, b/172366489)
  • Przeniesiono klasę nativeClass do modułu ui i ustawiono ją jako wewnętrzną. Zaktualizowano użycie nativeClass w implementacjach equals, aby zamiast niego używać „is MyClass”. (I4f734)
  • Komponenty FlowRow i FlowColumn zostały wycofane. Zamiast niego użyj układu niestandardowego. (I09027)
  • Funkcje Modifier.focus() i Modifier.focusRequester() zostały wycofane. Zamiast tego użyj funkcji Modifier.focusModifier() i Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
  • Wprowadzono SelectionRegistrar.notifySelectableChange, aby powiadamiać SelectionManager o aktualizacjach Selectable. (I6ff30, b/173215242)
  • Zmieniono fun Dp.isFinite() 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 korutynachAnimatable, który zapewnia wzajemną wyłączność animacji. Nowy interfejs DecayAnimationSpec do obsługi wielowymiarowej animacji zanikania (I820f2, b/168014930)
  • Dodano obsługę wyłączonych i tylko do odczytu pól tekstowych (I35279, b/171040474, b/166478534)
  • animate() zastępuje teraz animateAsState(), która zwraca State<T> zamiast T. Zapewnia to lepszą wydajność, ponieważ zakres unieważnienia można zawęzić do miejsca, w którym odczytywana jest wartość State. (Ib179e)
  • Dodaj interfejs API roli Semantics i dodaj rolę jako parametr do klikalnego, wybieralnego i przełączalnego elementu SemanticsModifier. Zmiana parametru Modifier.progressSemantics, aby można było go używać także w przypadku suwaka. (I216cd)
  • Do natywnego zdarzenia keyEvent można teraz uzyskać dostęp za pomocą keyEvent.nativeKeyEvent (I87c57, b/173086397).

Wersja 1.0.0-alpha09

16 grudnia 2020 roku

androidx.compose.foundation:foundation:1.0.0-alpha09androidx.compose.foundation:foundation-layout:1.0.0-alpha09 zostały opublikowane. Wersja 1.0.0-alpha09 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodawanie interfejsu Scrollable

    Dzięki temu ScrollState i LazyListState mogą być traktowane jako wspólny typ, co umożliwia wdrożenie niestandardowego przewijania w obu typach.

    Przenosi to też smoothScrollBy do funkcji rozszerzenia w Scrollable, korzystając z tej funkcji. (I2153b)

  • Dodano LazyVerticalGrid. (I17267, b/162213211)

  • Wycofanie funkcji LazyColumnFor, LazyRowFor, LazyColumnForIndexed i LazyRowForIndexed. Zamiast tego używaj komponentów LazyColumn i LazyRow (I5b48c).

  • W przypadku interfejsów API zawieszających dane wejściowe wskaźnika zmieniono nazwy funkcji HandlePointerInputScope na AwaitPointerEventScope i handlePointerInput() na awaitPointerEventScope(). (Idf0a1, b/175142755)

  • Dodano LazyListState.layoutInfo, które udostępnia listę rozmiarów i przesunięć aktualnie widocznych elementów (If8678, b/170472532).

  • Usunięto adnotację ExperimentalPointerInput (Ia7a24)

  • Dodano obsługę stanu interakcji w przypadku pól tekstowych. (I61d91)

  • Dodaj parametr reverseLayout do LazyColumn/Row. Gdy true, elementy będą komponowane od dołu do góry, 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 klasę ContentDrawScope do modułu ui-graphics, aby była razem z klasą DrawScope. (Iee043, b/173832789)

Poprawki błędów

  • Funkcje lambda w modyfikatorach przesunięcia zwracają teraz IntOffset zamiast Float. (Ic9ee5, b/174137212, b/174146755)
  • Usunęliśmy z publicznego interfejsu API klasy SlotTable, SlotReader i SlotWriter. Wcześniej były one oznaczone jako InternalComposeAPI. Teraz są one wewnętrzne w module kompozycji.

    Dodano CompositionData i CompositionGroup jako zamienniki interfejsu API ui-tooling, które służą do wyodrębniania informacji o kompozycji. Są one publiczne, ale nie są przeznaczone do użytku poza interfejsem ui-tooling API, ponieważ dostarczają surowe informacje, które interpretuje ten interfejs (I31a9c).

  • Zrefaktoryzowano klasę ShaderBrush, aby leniwie tworzyć instancję shadera, gdy dostępne są informacje o rozmiarze środowiska rysowania. Przydaje się to do definiowania gradientów, które w momencie tworzenia kompozycji zajmują pełne granice rysowania elementu kompozycyjnego, bez konieczności implementowania niestandardowych implementacji DrawModifier.

    Wycofano interfejsy API konstruktora funkcji gradientu na rzecz metod fabrykujących w obiekcie Gradient. (I511fc, b/173066799)

  • Pole Modifier.focusObserver zostało wycofane. Zamiast tego użyj Modifier.onFocusChanged lub Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)

  • Interfejs Autofill API jest teraz interfejsem eksperymentalnym i wymaga zgody użytkownika (I0a1ec).

  • Dodawanie deklaracji destrukcyjnych do tworzenia instancji FocusRequester (I35d84, b/174817008)

  • accessibilityLabel zmieniono na contentDescription. accessibilityValue zmieniono na stateDescription. (I250f2)

  • Wprowadziliśmy kilka nowych funkcji w klasie SelectionRegistrar, a także zmieniliśmy nazwę funkcji onPositionChange na notifyPositionChange. (Ifbaf7)

  • AndroidOwner made internal (Ibcad0, b/170296980)

  • Nowa funkcja infiniteRepeatable do tworzenia elementu InfiniteRepeatableSpec (I668e5)

  • Interfejs Applier został zmieniony, aby uprościć tworzenie drzew od dołu do góry, a nie od góry do dołu.

    Nazwa metody insert() została zmieniona na insertTopDown().

    Dodano nową metodę: insertBottomUp().

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

    Niektóre drzewa, np. LayoutNodeView, znacznie łatwiej jest budować od dołu niż od góry. Przed wprowadzeniem tej zmiany do wdrożenia metody od dołu do góry wymagany był stos wstawek, który należało skopiować do każdego narzędzia, które potrzebowało konstrukcji od dołu do góry ze względu na wydajność. Po tej zmianie ApplierzastępujeinsertBottomUp() budowanie drzewa od dołu do góry, a insertTopDown() – od góry do dołu. (Icbdc2)

  • Dodano interfejs API painterResource, który umożliwia nieprzezroczyste wczytywanie obiektów Painter z formatów zasobów rastrowych (np. PNG) lub obiektów VectorDrawable. Konsumenci nie muszą już z wyprzedzeniem określać typu komponentu i mogą wywołać tę metodę, aby uzyskać obiekt Painter do użycia w komponentach kompozycyjnych Image lub modyfikatorach malowania. (I2c703, b/173818471)

  • Dodano funkcję fabryczną buildAnnotatedString, która służy do tworzenia obiektu AnnotatedString. Wycofana funkcja konstruktora annotatedString. (Idfe0b)

Wersja 1.0.0-alpha08

2 grudnia 2020 r.

androidx.compose.foundation:foundation:1.0.0-alpha08androidx.compose.foundation:foundation-layout:1.0.0-alpha08 zostały opublikowane. Wersja 1.0.0-alpha08 zawiera te zmiany.

Zmiany w interfejsie API

  • Usunięto parametr maxLines z funkcji CoreTextField. Jeśli chcesz ograniczyć wysokość pola tekstowego liczbą wierszy, użyj BasicTextField. (Iec002)
  • Zmieniono metody await*TouchSlop(), aby nie wykrywały wskaźnika w dół, i zmieniono ich nazwy na *OrCancellation. Usunęliśmy też konieczność stosowania parametru orientationLock. (Ie96e1)
  • Dodano sprawdzanie składni nazw i pozycji parametrów funkcji lambda, aby zapewnić zgodność ze wskazówkami dotyczącymi Compose. Zgodnie z kontrolą składni i wskazówkami zmieniliśmy też nazwy niektórych interfejsów API, które używały children jako nazwy funkcji lambda na końcu, na content. (Iec48e)
  • Interfejsy API foundation:foundation-text przeniesiono 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 wskaźnik interfejs API danych wejściowych, w tym blokowanie orientacji. (Icef25)
  • Zmiana nazwy VectorAsset na ImageVector. Przeniesienie i zmiana nazwy VectorAsset na Builder, aby była klasą wewnętrzną ImageVector zgodnie z wytycznymi rady API. Dodano alias typu VectorAssetBuilder, aby zapewnić zgodność z ImageVector.Builder. (Icfdc8)
  • Zmieniliśmy nazwy ImageAsset i powiązanych metod na ImageBitmap. (Ia2d99)
  • Przeniesiono właściwości semantyczne podstaw do interfejsu (I6f05c)
  • Dodaj interfejsy API przewijania oparte na korutynach:

    Dodaje funkcje LazyListState.snapToItem i LazyListState.smoothScrollBy, a także interfejsy API niższego poziomu do sterowania przewijaniem. Te interfejsy API udostępniają interfejs zawieszania do sterowania przewijaniem, który czeka na zakończenie przewijania przed zwróceniem wyniku. (Ie5642)

  • Dodano parametr singeLine do komponentów BasicTextField, TextField i OutlinedTextField. Ustaw ten parametr na „true”, aby pole tekstowe było pojedynczą linią z możliwością przewijania w poziomie. (I57004, b/168187755)

  • Dodano detektor gestów do wykrywania kliknięć, dwukrotnych kliknięć, długich naciśnięć i naciśnięć za pomocą nowego wskaźnika zawieszającego. Dodaliśmy też kilka narzędzi, które ułatwiają deweloperom pisanie własnych detektorów gestów. (I00807)

  • W bibliotece podstawowej dodano właściwość Modifier.focusable. Użyj tego komponentu, aby dodać do komponentu możliwość uzyskania fokusu z prawidłową semantyką i dostępnością. (I41eb9, b/152525426, b/162865824)

  • Usunęliśmy wycofane wcześniej interfejsy API: usunęliśmy Border, zamiast niego używaj BorderStroke. Funkcja Modifier.drawBorder została usunięta. Zamiast niej używaj funkcji Modifier.border. Wycofaliśmy Modifier.gravity. Zamiast niego użyj Modifier.align. Element Stack został usunięty. Zamiast niego użyj elementu Box (I32c2b, b/172470874)

  • AbsoluteArrangement została zmieniona na Arrangement.Absolute. (If26f2)

Poprawki błędów

  • Przeniesiono interfejsy API DrawModifier z pakietu androidx.compose.ui do pakietu androidx.compose.ui.draw. Utworzono plik DrawModifierDeprecated.kt, który zawiera aliasy typów i metody pomocnicze ułatwiające migrację z przestarzałych interfejsów API na obecne. (Id6044, b/173834241)
  • Zmieniono nazwę Modifier.drawLayer na Modifier.graphicsLayer. Zaktualizowano też powiązane klasy do GraphicsLayer zgodnie z opinią rady API. (I0bd29, b/173834241)
  • Element <T> został usunięty z deklaracji SubcomposeLayout. Możesz teraz używać tego atrybutu bez określania typu. (Ib60c8)
  • Pola uptime i position w klasie PointerInputData nie mogą mieć wartości null. (Id468a)
  • Motyw MaterialTheme ustawia teraz prawidłowe kolory uchwytów zaznaczenia i tła zaznaczenia. Aplikacje inne niż Material mogą ręcznie używać AmbientTextSelectionColors, aby dostosować kolory używane do zaznaczania. (I1e6f4, b/139320372, b/139320907)
  • Parametr wyrównania komponentu Box został zmieniony na contentAlignment. (I2c957)
  • Modyfikatory offsetPx zostały zmienione na offset. Przyjmują teraz parametry lambda zamiast stanu. (Ic3021, b/173594846)
  • Dodano WindowManager.isWindowFocused, aby sprawdzać, czy okno hosta jest aktywne, oraz WindowFocusObserver, który udostępnia wywołanie zwrotne onWindowFocusChanged. (I53b2a, b/170932874)
  • Dodano parametr resetInput do TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947)
  • Zaktualizowany interfejs TextFieldValue API
    • pole TextFieldValue.composition zostało ustawione jako tylko do odczytu.
    • usunięto wyjątek zgłaszany w przypadku nieprawidłowego zakresu wyboru (I4a675, b/172239032);
  • Wycofaliśmy właściwości Ambients, których nazwy miały sufiks Ambient, i zastąpiliśmy je nowymi właściwościami z prefiksem Ambient, zgodnie z innymi właściwościami Ambients i wytycznymi interfejsu Compose API. (I33440)
  • Dodano otoczkę Android Typeface. Czcionkę Androida możesz wczytać za pomocą funkcji typeface, np. typeface(Typeface.DEFAULT). Zmieniono też nazwę typefaceFromFontFamily() 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 lint, aby upewnić się, że funkcje fabryczne modyfikatora są zdefiniowane jako rozszerzenia modyfikatora, dzięki czemu można je płynnie łączyć w łańcuchy. (I07981)
  • Argument semantyki mergeAllDescendants został zmieniony na mergeDescendants. (Ib6250)
  • Kontrola czasu w testach (TestAnimationClock i jego zastosowania) jest obecnie eksperymentalna (I6ef86, b/171378521).
  • Usuwanie starego modułu ui-test i jego stubów (I3a7cb)
  • W przypadku innych jednostek TextUnit.Inherit zmieniono nazwę na TextUnit.Unspecified. (Ifce19)
  • Interfejs wyrównania został zaktualizowany i jest już funkcjonalny. (I46a07, b/172311734)
  • foundation:foundation-text został scalony 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ą zwalniane. Wersja 1.0.0-alpha07 zawiera te zmiany.

Zmiany w interfejsie API

  • Podobnie jak w przypadku Modifier.fillMaxSize[Width|Height] obsługujemy teraz ułamki w Modifier.fillParentMaxSize[Width|Height] w zakresie LazyColumn/Row (I797e2, b/166586426).
  • Usunięto KeyboardOptions.toImeOptions z publicznego interfejsu API. (Ic2e45)
  • Funkcje AmbientTextStyle, ProvideTextStyle i AmbientContentColor zostały wycofane. Zamiast tego używaj nowych wersji dostępnych w bibliotece Material. W przypadku aplikacji innych niż Material należy utworzyć własny system projektowania z motywami, które można wykorzystać we własnych komponentach. (I74acc, b/172067770)
  • foundation.Text został wycofany i zastąpiony przez material.Text. Podstawowy interfejs API tekstu, który nie korzysta z wartości z motywu, znajdziesz w artykule androidx.compose.foundation.BasicText. (If64cb)
  • Dodano maxLines do pól tekstowych (Ib2a5b)
  • Aktualizacja pól tekstowych, aby akceptowały KeyboardOptions (Ida7f3)
  • Dodano KeyboardOptions do użycia w polach tekstowych (I9ca32)
  • Dodaje BasicText jako interfejs API do obsługi tekstu, który nie narzuca konkretnego stylu, równolegle do BasicTextField. (I28268)
  • Usunięto adnotację ExperimentalLazyDsl. LazyColumn/LazyRow można teraz używać bez dodawania adnotacji @OptIn (Idab7a, b/166584730)
  • Komponent BaseTextField został wycofany. Zamiast tego użyj BasicTextField. (I896eb)
  • Dodaliśmy komponent BasicTextField, który zastępuje komponenty CoreTextField i BaseTextField (Id4cea).
  • Usuwanie wycofanych elementów LazyColumnItems/LazyRowItems (I1d8a8)
  • Usunięto wycofane funkcje kompozycyjne do określania rozmiaru na podstawie pomiarów wewnętrznych. (I18537, b/171811496)
  • Zmieniliśmy nazwę parametru relativePaddingFrom na paddingFrom. Dodano modyfikator paddingFromBaseline, który ułatwia określanie odległości od granic układu do linii bazowych tekstu. (I0440a, b/170633813)
  • Do modyfikatora aspectRatio dodano parametr matchHeightConstraintsFirst, który umożliwia określenie modyfikatora, który ma być dopasowany do ograniczeń wysokości przed wypróbowaniem odpowiedników szerokości. (Ie7c43, b/155290593)
  • Przestarzałe ograniczenia DpConstraints zostały usunięte. (I87884, b/171702471)

Poprawki błędów

  • Wprowadzono klasę wbudowaną ScaleFactor, która reprezentuje współczynniki skali dla osi poziomej i pionowej niezależnie od siebie, aby obsługiwać przypadki użycia skalowania nierównomiernego.
    • Dodano metodę computeScaleFactor do ContentScale
    • Dodano ContentScale.FillBounds, aby wykonać skalowanie nierównomierne i rozciągnąć granice źródła, tak aby w pełni zajmowały miejsce docelowe.
    • Dodano metody operatorów do obliczania parametrów ScaleFactor za pomocą parametrów Size.
    • (Ic96a6, b/172291582)
  • Funkcja captureToBitmap została przeniesiona do funkcji captureToImage. (I86385)
  • Oznacza CoreText jako @InternalTextApi. Zamiast tego użyj BasicText. (I6aaeb)
  • Zmiana nazwy KeyboardOptions na ImeOptions (I82f36)
  • Przeniesienie KeyboardType i ImeAction do KeyboardOptions (I910ce)
  • Element CoreTextField został oznaczony jako @InternalTextApi. Zamiast tego użyj BasicTextField (Ie2469)
  • Usunięto adnotację ExperimentalSubcomposeLayoutApi. Funkcja SubcomposeLayout może być teraz używana bez dodawania adnotacji @OptIn (I708ad)
  • Wprowadzenie modułu ui-test-junit4 (Ib91f8)
  • Zaktualizowano interfejs Icon API, aby przyjmował wartość Color.Unspecified jako możliwy kolor odcienia, który będzie rysować podany zasób lub malarza bez filtra ColorFilter. Wcześniejsze próby zignorowania odcienia za pomocą Color.Unspecified powodowały odcień w przezroczystym kolorze, co w efekcie nie powodowało renderowania. (I049e2, b/171624632)
  • Element MeasureResult został przeniesiony poza element MeasureScope. (Ibf96d, b/171184002)
  • Kilka symboli związanych z układem zostało przeniesionych z pakietu androidx.compose.ui do pakietu androidx.compose.layout.ui. (I0fa98, b/170475424)
  • Pakiet androidx.ui.test został przeniesiony do androidx.compose.ui.test (I9ffdb).
  • FirstBaseline i LastBaseline zostały przeniesione do pakietu androidx.compose.ui.layout (Ied2e7).
  • Dodano SelectionContainer bez wywołania zwrotnego (Ibfadb)
  • Dodaj testy pozycji elementów SelectionHandle w SelectionContainer. (Ie93db)
  • Dodano opcję autokorekty klawiatury IME (I57b8d)

Wersja 1.0.0-alpha06

28 października 2020 r.

androidx.compose.foundation:foundation:1.0.0-alpha06, androidx.compose.foundation:foundation-layout:1.0.0-alpha06androidx.compose.foundation:foundation-text:1.0.0-alpha06 są zwalniane. Wersja 1.0.0-alpha06 zawiera te zmiany.

Zmiany w interfejsie API

  • androidx.compose.foundation.Icon został przeniesiony do androidx.compose.material.Icon. Jeśli nie chcesz korzystać z biblioteki Material, możesz też użyć komponentu Image lub funkcji Modifier.paint() z obiektem Painter. (I9f622)
  • Dodano interactionState do Modifier.scrollable, ScrollableColumn i LazyColumnFor (I81566, b/169509805)
  • Do RowScope dodano alignByBaseline, a alignWithSiblings zmieniono na alignBy (I06503, b/170628732).
  • Funkcja Box została przekształcona w funkcję wbudowaną. (Ibce0c, b/155056091)
  • Dodano maxLines do CoreTextField (Ibee58, b/143687793)
  • Dodano miękkie zawijanie w komponencie CoreTextField. (I21a4b)

Poprawki błędów

  • Wycofanie funkcji VectorPainter na rzecz funkcji rememberVectorPainter, aby lepiej wskazywać, że interfejs API funkcji kompozycyjnych wewnętrznie wykorzystuje funkcję „remember” do utrwalania danych w różnych kompozycjach. (Ifda43)
  • Włącz przejścia w ComposeTestRule; usuń opcję włączania migającego kursora z ComposeTestRule. (If0de3)
  • Dodano opcję klawiatury z jednym wierszem w komponencie CoreTextField (I72e6d)
  • Zmiana nazwy interfejsu API Radius na CornerRadius, aby lepiej odzwierciedlała sposób jego użycia w Compose. Zaktualizowano dokumentację, aby wskazać, że ujemne promienie zaokrąglenia są przycinane do zera. (I130c7, b/168762961)
  • Dodanie możliwości określania informacji o inspektorze w zmodyfikowanym komponencie (Idee08, b/163494569)
  • Dodano opcję IME KeyboardCapitalization (I8ac38)
  • Ustal pozycję uchwytu od prawej do lewej. (I6e1e0)
  • Zmiana powodująca niezgodność: usunięto wartość zwracaną z funkcji PointerInputFilter.onPointerEvent(...), ponieważ jedyną wartością, którą można zmienić w przypadku zdarzeń wskaźnika, są dane o użyciu. Zamiast zwracać dane z PointerInputFilter.onPointerEvent(...), możesz teraz po prostu zmieniać dane o użyciu przekazywanych obiektów PointerEvent. (I6acd0)
  • Dodano opcję Zaznacz wszystko w menu wyboru (Ief02b)

Wersja 1.0.0-alpha05

14 października 2020 r.

androidx.compose.foundation:foundation:1.0.0-alpha05, androidx.compose.foundation:foundation-layout:1.0.0-alpha05androidx.compose.foundation:foundation-text:1.0.0-alpha05 są zwalniane. Wersja 1.0.0-alpha05 zawiera te zmiany.

Zmiany w interfejsie API

  • CoreTextField obsługuje teraz funkcję kursora (Id23aa).
  • Wycofuje interfejsy contentColor() i currentTextStyle() i zastępuje je odpowiednio AmbientContentColor i AmbientTextStyle. Aktualną wartość możesz uzyskać, używając .current w przypadku właściwości otoczenia, tak jak w przypadku każdego innego otoczenia. Ta zmiana została wprowadzona w celu zapewnienia spójności i uniknięcia sytuacji, w której to samo zadanie można wykonać na kilka sposobów. Dodatkowo zmieniliśmy nazwy niektórych właściwości otoczenia, aby lepiej opisywały ich przeznaczenie:

    • ContentColorAmbient -> AmbientContentColor
    • TextStyleAmbient -> AmbientTextStyle
    • IndicationAmbient -> AmbientIndication
    • EmphasisAmbient -> AmbientEmphasisLevels
    • RippleThemeAmbient -> AmbientRippleTheme (I37b6d)

Poprawki błędów

  • W ramach standaryzacji wartości wartowniczych w przypadku klas wbudowanych zmień nazwę Color.Unset na Color.Unspecified, aby zachować spójność z innymi klasami wbudowanymi (I97611, b/169797763).
  • Dodano działania związane z ułatwieniami dostępu Kopiuj/Wklej/Wytnij (I6db4f)
  • Wprowadzono TextOverflow.None. Gdy wartość parametru overflow to None, komponent Text nie będzie już obsługiwać przepełnienia i będzie zgłaszać do komponentu LayoutNode swój rzeczywisty rozmiar. (I175c9, b/158830170)
  • Zaktualizowano parametry Size.Unspecified tak, aby zamiast Float.POSITIVE_INFINITY miały wartość Float.NaN. Zaktualizowano implementacje Painter, aby sprawdzały zarówno Size.Unspecified, jak i rozmiary nieograniczone. (I95a7e)
  • Dodano moduł Paging Compose i integrację stronicowania (Ib85da)
  • Zmiana zakresu LazyListScope, aby przyjmował wartości dopuszczające wartość null (I1765b)
  • Interfejs OnPositionedModifier został zmieniony na OnGloballyPositionedModifier, a funkcja onPositioned() na onGloballyPositioned(). (I587e8, b/169083903)
  • Dodano przykłady dla LazyColumn/Row (Idc16d)
  • Poprawka metod items i itemsIndexed, aby zezwalać na emptyList (I06647)
  • Dodanie języka DSL do określania informacji o inspektorze (Ic9a22)
  • Przenieś LongPress do Text. (Iff2bc)
  • Wyłącz zaznaczanie tekstu i obejrzyj wersję demonstracyjną. (Ie7e97)
  • Obsługa konwersji AnnotatedString na SpannableString na potrzeby ułatwień dostępu. (Ief907)
  • Użytkownik PointerInputFilter.onPointerInput(...) został usunięty. Zamiast niego należy użyć atrybutu 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ą zwalniane. Wersja 1.0.0-alpha04 zawiera te zmiany.

Zmiany w interfejsie API

  • Grupa została zmieniona na Box. Dotychczasowa funkcja foundation.Box zostanie wycofana na rzecz nowej funkcji Box w pakiecie compose.foundation.layout. Nowy komponent Box układa elementy podrzędne jeden na drugim, gdy ma ich kilka. Różni się to od poprzedniego komponentu Box, który działał podobnie do komponentu Column. (I94893, b/167680279)
  • Parametry dekoracji pola zostały wycofane. Jeśli chcesz dodać dekoracje lub dopełnienie do elementu Box, użyj zamiast tego modyfikatorów (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279).
  • Dodaj nową klasę LazyListState. Umożliwia to obserwowanie i kontrolowanie pozycji przewijania komponentów LazyRow i LazyColumn. Instancje można tworzyć za pomocą funkcji rememberLazyListState() i przekazywać do parametru stanu komponentu. Obecnie w tej początkowej wersji można obserwować pierwszy widoczny element i przesunięcia. (Ic7cb7, b/159307669)
  • Pozycja na liście i przesunięcie przewijania są teraz zapisywane i przywracane podczas ponownego tworzenia aktywności (Ie045f, b/166589058).
  • Dodaj działanie semantyczne długiego kliknięcia (I6281b, b/156468846)
  • Dodano narzędzie MutatorMutex, które umożliwia utrzymywanie pojedynczego mutatora stanu współdzielonego w czasie i anulowanie sprzecznych mutatorów według priorytetu (I3f975).
  • Oznaczanie adnotacjami rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled i textInputServiceFactory za pomocą @VisibleForTesting, przekształcanie ich w wewnętrzne interfejsy API i ukrywanie ich dokumentacji w formacie KDoc (I554eb, b/168308412)
  • Usunięto parametr inlineContent z tekstu z wejściem String. Nie będzie używana, ponieważ element inlineContent musi działać z elementem AnnotatedString. (Ief403)
  • Usunięto wycofane niestandardowe interfejsy API do zarządzania umowami. (Ic576d, b/168297922, b/168297923)
  • Do modyfikatorów wrapContentSize dodano parametr unbounded, który umożliwia pomiar elementu układu z nieskończonymi maksymalnymi ograniczeniami. (I77951, b/158559319)
  • Zapobiegliśmy statycznemu importowaniu treści z zakresów układu (np. alignWithSiblings w RowScope). Zamiast tego użyj alternatywnego zakresu: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, b/166760797)

Poprawki błędów

  • Zaktualizowano wiele interfejsów API grafiki
    • Zaktualizowano interfejsy API przekształceń skali i rotacji, aby używały jednego parametru Offset do reprezentowania współrzędnych punktu obrotu zamiast oddzielnych parametrów zmiennoprzecinkowych dla współrzędnych x/y w DrawScope i DrawTransform.
    • Usunięto metody Rect.expandToInclude i Rect.join
    • Zaktualizowano dokumentację dotyczącą promienia, aby uwzględnić kształt owalny oprócz eliptycznego.
    • Dodano dokumentację, aby wskazać, że publiczny konstruktor wbudowanej klasy Radius nie powinien być wywoływany bezpośrednio, ale obiekty Radius powinny być tworzone za pomocą konstruktorów funkcji.
    • Usunięto interfejsy API RoundRect do wysyłania zapytań o wartości topRight, bottomRight, bottomCenter itp.
    • Wycofanie Rect.shift na rzecz Rect.translate
    • Usunięto interfejsy API RoundRect.grow i Rect.shrink
    • Zmiana nazwy RoundRect.outerRect na Rect.boundingRect
    • Usunięto metody RoundRect.middleRect/tallMiddleRect/wideMiddleRect i Rect.isStadium
    • Zmiana nazwy RoundRect.longestSide na RoundRect.maxDimension
    • Zmiana nazwy RoundRect.shortestSide na RoundRect.minDimension
    • Zmiana RoundRect.center na właściwość zamiast funkcji
    • Zaktualizowano konstruktor RoundRect, aby korzystał z właściwości Radius zamiast z poszczególnych parametrów wartości promienia x/y.
    • Usunięto interfejsy API rozmiaru, które zakładały, że jest to prostokąt o początku w punkcie 0,0
    • Dodano do Radius interfejs API niszczenia
    • Przeniesiono różne funkcje rozszerzenia RoundRect, aby były właściwościami.
    • (I8f5c7, b/168762961)
  • Optymalizacja wydajności przewijania elementów LazyColumnFor i LazyRowFor dzięki unikaniu niepotrzebnych ponownych kompozycji podczas każdego przewijania (I64f65, b/168293643, b/167972292, b/165028371)
  • Naprawiono awarię w LazyColumnFor/LazyRowFor po przewinięciu, a następnie zmianie elementów. Wdrożono automatyczne przewijanie w górę, gdy usunięto wcześniej widoczny element, aby nie wyświetlać już pustych przerw na końcu (I220ab, b/161480164, b/167855468).
  • Zagnieżdżanie kontenerów z możliwością przewijania w tym samym kierunku, takich jak ScrollableContainer i LazyColumnFor, nie jest już dozwolone. Nigdy nie była obsługiwana i psuła przewijanie oraz całą leniwość tworzenia elementów LazyColumnFor (I6e101).
  • Zaktualizowano wiele interfejsów API grafiki
    • Zaktualizowano interfejsy DrawScope API o metody przekształcania w określonym zakresie, aby wskazać, że przekształcenie jest stosowane tylko w wywołaniu zwrotnym i usuwane po jego wywołaniu.
    • Zaktualizowano dokumentację clipPath, aby odwoływała się do ścieżki zamiast do zaokrąglonego prostokąta
    • Poprawiono odstępy w dokumentacji parametru right w elemencie clipPath
    • Zmieniono nazwę DrawScope.drawCanvas na drawIntoCanvas i usunięto parametr rozmiaru
    • Zmieniono nazwy parametrów dx/dy w metodzie inset na horizontal i vertical
    • Dodano przeciążenie wstawki, które zapewnia tę samą wartość wstawki dla wszystkich 4 obszarów.
    • Usunięto dokumentację dotyczącą metody wstawiania, która wskazywała, że wstawianie będzie stosowane do wszystkich 4 stron.
    • Zaktualizowana dokumentacja klasy Rect
    • Zaktualizowano komentarze do parametrów Rect, aby były zgodne ze stylem kdoc.
    • Usunięto Rect.join i Rect.expandToInclude
    • Utworzono przeciążenie dla Rect.translate(offset) i wycofano Rect.shift
    • (If086a, b/167737376)
  • dodaj AccessibilityScrollState do właściwości semantycznych; (Ifeda9)
  • Ustaw TextRange jako inline, aby uniknąć tworzenia obiektu. (Id034b)
  • Usunięto ParagraphConstraints. Szerokość jest teraz przekazywana bezpośrednio do akapitu. (Ica712)

Wersja 1.0.0-alpha03

16 września 2020 roku

androidx.compose.foundation:foundation:1.0.0-alpha03, androidx.compose.foundation:foundation-layout:1.0.0-alpha03androidx.compose.foundation:foundation-text:1.0.0-alpha03 są zwalniane. Wersja 1.0.0-alpha03 zawiera te zmiany.

Zmiany w interfejsie API

  • Zmieniliśmy nazwę parametru InnerPadding na PaddingValues. (I195f1, b/167389171)
  • W interfejsach API układu nazwy związane z grawitacją zostały zmienione na align lub alignment. (I2421a, b/164077038)
  • Do komponentu Stack dodano parametr wyrównania, który umożliwia określenie domyślnego wyrównania wszystkich elementów podrzędnych komponentu Stack. (Ie80ca, b/164085265)

Poprawki błędów

  • Interfejs DpConstraints i interfejsy API, które go używają, zostały wycofane. (I90cdb, b/167389835)
  • Parametry minWidthmaxWidth funkcji widthIn zostały zmienione na minmax. Podobnie w przypadku błędów preferredWidthIn, heightInpreferredHeightIn. (I0e5e1, b/167389544)
  • Dodano onNode i inne metody globalne w ComposeTestRule, ponieważ obecne metody globalne zostaną wycofane. (Ieae36)
  • Poprawiono obliczenia rozmiaru i pozycji w GestureScope, co powodowało m.in. generowanie nieprawidłowych gestów przesuwania (Iaf358, b/166589947).
  • Przeniesiono createAndroidComposeRuleAndroidInputDispatcherandroidx.ui.test.android do 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ą zwalniane. Wersja 1.0.0-alpha02 zawiera te zmiany.

Poprawki błędów

  • TestUiDispatcher jest oznaczony jako eksperymentalny (Iae99d, b/161247083)
  • Dodano ManualFrameClock.hasAwaiters, aby sprawdzić, czy zegar oczekuje na klatkę; runWithManualClock jako zamiennik runBlocking podczas przeprowadzania testów, które wymagają zegara ManualFrameClock; TestUiDispatcher.Main, który zapewnia łatwy dostęp do głównego dyspozytora interfejsu w testach.

    Na przykład:

    @Test
    fun myTest() = runWithManualClock { clock ->
        // set some compose content
        withContext(TestUiDispatcher.Main) {
            clock.advanceClock(1000L)
        }
        if (clock.hasAwaiters) {
            println("The clock has awaiters")
        } else {
            println("The clock has no more awaiters")
        }
    }
    

    (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ą zwalniane. Wersja 1.0.0-alpha01 zawiera te zmiany.

Wersja 0.1.0-dev

Wersja 0.1.0-dev17

19 sierpnia 2020 r.

androidx.compose.foundation:foundation:0.1.0-dev17, androidx.compose.foundation:foundation-layout:0.1.0-dev17androidx.compose.foundation:foundation-text:0.1.0-dev17 są zwalniane. Wersja 0.1.0-dev17 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodaliśmy właściwość spacedBy do komponentów Row i Column, aby umożliwić pozycjonowanie elementów podrzędnych układu ze stałym odstępem. Dodano też wyrównane rozmieszczenie, aby umożliwić umieszczanie elementów podrzędnych obok siebie i wyrównywanie ich w wierszu lub kolumnie zgodnie z wyrównaniem. Poprzednie metody Arrangement.Vertical#arrange i Arrangement.Horizontal#arrange zostały wycofane, a w przyszłości pisanie niestandardowych układów nie będzie obsługiwane. (I6733d, b/161985975)
  • Przesunięcie stało się klasą wbudowaną (Iaec70)
  • Usunięto wywołania zwrotne onFocusChanged z pola tekstowego. Zamiast tego użyj Modifier.focusObserver. (I51089, b/161297615)
  • Funkcja Modifier.drawBorder została wycofana. Zamiast tego użyj Modifier.border. Klasa danych Border została zastąpiona klasą BorderStroke (I4257d, b/158160576)
  • Komponenty VerticalScroller i HorizontalScroller zostały usunięte. Zamiast tego użyj ScrollableColumn/Row. Usunięto Modifier.drawBackground. Użyj Modifier.background (I73b0d, b/163019183)
  • Usunięcie z LazyItemScope modyfikatorów fillMax* oznaczonych jako przestarzałe, ponieważ utrudniają one prawidłowe dodawanie takich modyfikatorów do elementów, które nie są bezpośrednimi elementami podrzędnymi LazyColumnFor (Ifa78d).
  • dodano implementację LazyColumn/LazyRow jako DSL (I93cc6);
  • Constraints to teraz klasa wbudowana (I88736)
  • Dodaliśmy możliwość określania rozmiaru układu jako ułamka dostępnej przestrzeni za pomocą modyfikatorów fillMaxWidth, fillMaxHeight i fillMaxSize. (I945bb, b/161562591)

Poprawki błędów

  • Dodano parametr modyfikatora do SelectionContainer (I4aada, b/161487952)
  • Dodano funkcję lambda mergePolicy do SemanticsPropertyKey. Można jej użyć do zdefiniowania niestandardowych zasad scalania semantyki mergeAllDescendants. Zasada domyślna polega na używaniu wartości nadrzędnej, jeśli jest już obecna, a w przeciwnym razie wartości podrzędnej. (Iaf6c4, b/161979921)
  • Nazwa PlacementScope.placeAbsolute() została zmieniona na PlacementScope.place(), a poprzednia nazwa PlacementScope.place() została zmieniona na PlacementScope.placeRelative(). W konsekwencji 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 tego użyj komponentu TextField, aby uzyskać implementację pola tekstowego wypełnionego zgodną z Material Design. (I5e889)
  • Dodano parametr backgroundColor do LinearProgressIndicator i usunięto wewnętrzny dopełnienie z CircularProgressIndicator. Dodano nową klasę ProgressIndicatorConstants.DefaultProgressAnimationSpec, której można używać jako domyślnej klasy AnimationSpec podczas animowania postępu między wartościami (If38b5, b/161809914, b/161804677).
  • Funkcja state { ... } została wycofana na rzecz jawnych wywołań funkcji remember { mutableStateOf(...) }, aby zwiększyć przejrzystość. 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, aby lepiej pasowała do wzorców nazewnictwa w Compose. Utworzono podobne konstruktory funkcji do RRect i wycofano konstruktory funkcji RRect (I5d325).
  • Usunięto funkcje onChildPositioned i OnChildPositionedModifier. Zamiast tego programiści powinni używać funkcji onPositioned i OnPositionedModifier w układzie podrzędnym. (I4522e, b/162109766)
  • IntSize jest teraz klasą wbudowaną (I2bf42).
  • Przytrzymaj dłużej pusty obszar, aby go edytować. (Ib1e5b)
  • Ukryj pływający pasek narzędzi po kliknięciu tekstu. (If4525)
  • Ukryj pływający pasek narzędzi podczas aktualizowania zaznaczenia. (I8444c)
  • Odznacz opcję Gdy rozmycie. (I781a2)

Wersja 0.1.0-dev16

5 sierpnia 2020 r.

androidx.compose.foundation:foundation:0.1.0-dev16, androidx.compose.foundation:foundation-layout:0.1.0-dev16androidx.compose.foundation:foundation-text:0.1.0-dev16 są zwalniane. Wersja 0.1.0-dev16 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodano LazyItemScope dla parametru itemContent list leniwych. Zawiera modyfikatory, które wypełniają maksymalny rozmiar elementu nadrzędnego, co rozwiązuje problem, gdy element powinien wypełniać obszar widoku, a zwykły modyfikator Modifier.fillMaxSize() nie działa, ponieważ element jest mierzony z ograniczeniami nieskończoności. (Ibd3b2, b/162248854)
  • Przeniesienie okna do interfejsu (I47fa6)
  • Dodano LazyColumnForIndexed/LazyRowForIndexed – wersje LazyColumnFor/LazyRowFor, które w funkcji itemCallback udostępniają zarówno indeks, jak i element. Jest to przydatne, gdy oprócz bieżącego elementu musisz znać bieżący indeks. (I65ff3)
  • Nazwa Modifier.deternimateProgress została zmieniona na Modifier.progressSemantics (I9c0b4)
  • LazyColumnItems zmieniono na LazyColumnFor. LazyRowItems został zmieniony na LazyRowFor (I84f84)
  • Dodaj kilka oznaczeń lub adnotacji, aby zastosować sprawdzone metody. (I66b20)
  • Pakiet foundation.shape.corner został spłaszczony do foundation.share (I46491, b/161887429).
  • Dodano parametr grawitacji osi poprzecznej dla LazyRowItems/LazyColumnItems. Elementy LazyRowItems/LazyColumnItems obsługują teraz zachowanie zawijania treści. (Ib39fc)
  • ZoomableState został zmieniony na ZoomableController. Dodaliśmy obsługę niestandardowych krzywych w przypadku funkcji smoothScale. Dodano funkcje 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 tego używaj LazyColumnItems (I12b9b)
  • Funkcja Modifier.drawBackground została zmieniona na Modifier.background (I13677)
  • Stary język DSL ConstraintLayout został usunięty. Zmieniono nazwę ConstraintSet2 na ConstraintSet. (If58d1, b/162450908)
  • Dodano Modifier.absoluteOffset() i Modifier.absoluteOffsetPx(). W przeciwieństwie do modyfikatorów przesunięcia modyfikatory przesunięcia bezwzględnego nie będą automatycznie odzwierciedlane w kontekście od prawej do lewej (I3aa21).
  • Funkcje Row i Column są teraz funkcjami wbudowanymi, co znacznie zmniejsza obciążenie związane z ich używaniem. (I75c10)

Poprawki błędów

  • Poprawki w interfejsie API (I077bc)
    1. Usuwanie nieużywanego interfejsu OffsetBase
    2. Ujednolicenie klas Offset i IntOffset w celu zapewnienia spójnego 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ć konsumentom 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 PascalCase
    7. Zmiana nazwy wyliczeń FilterQuality na Pascal Case
    8. Zmiana nazw wyliczeń StrokeJoin na Pascal Case
    9. Zmiana nazwy wyliczeń PointMode na Pascal Case
    10. Zmiana nazw 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 Box, co zmniejsza 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. Wyłączenie 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ę DrawScope selectPaint, aby warunkowo nadpisywać parametry pędzla, jeśli uległy zmianie.
    23. Aktualizacja klasy Size w celu dodania interfejsu API destructuring, zmiany nazwy UnspecifiedSize na Unspecified i usunięcia nieużywanych metod
  • Dodano klasę MonotonicFrameAnimationClock, która umożliwia używanie klasy MonotonicFrameClock jako klasy AnimationClockObservable, aby wypełnić lukę między nowymi zegarami opartymi na korutynach a interfejsami API, które nadal używają starych zegarów opartych na wywołaniach zwrotnych.

    Odpowiednikiem klasy MonotonicFrameClock w przypadku klasy ManualAnimationClock jest teraz klasa ManualFrameClock. (I111c7, b/161247083)

  • Użytkownik SemanticsNodeInteraction.performPartialGesture został usunięty. Zamiast niej używaj właściwości SemanticsNodeInteraction.performGesture. (Id9b62)

  • Nazwa SemanticsNodeInteraction.getBoundsInRoot() została zmieniona na SemanticsNodeInteraction.getUnclippedBoundsInRoot() (Icafdf, b/161336532)

  • Zaktualizowaliśmy interfejsy API obsługujące pisanie od prawej do lewej. Dodano LayoutDirectionAmbient, którego można używać do odczytywania i zmieniania kierunku układu. Usunięto Modifier.rtl i Modifier.ltr. (I080b3)

  • Funkcja Modifier.plus została wycofana. Zamiast niej używaj funkcji Modifier.then. Słowo „wtedy” silniej sygnalizuje kolejność, a także uniemożliwia wpisanie znaku Modifier.padding().background() + anotherModifier, który przerywa ciąg i utrudnia czytanie (Iedd58, b/161529964).

  • Dodano isFocused() i 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 elementach LazyColumn podczas przewijania. (I5f331, b/160791058)

  • Metoda isSystemInDarkTheme zawsze uwzględnia ustawienie ciemnego motywu w całym systemie i ignoruje stan oszczędzania energii w wersjach starszych niż Q, zgodnie z najnowszymi wytycznymi. (I0c10c)

  • Metoda OnChildPositioned została wycofana. Zamiast tego użyj OnPositioned w przypadku elementu podrzędnego. (I87f95, b/162109766)

  • Zmiana nazwy AndroidComposeTestRule na createAndroidComposeRule. (I70aaf)

  • Dodawanie działania związanego z ułatwieniami dostępu w celu uzyskania obiektu TextLayoutResult (I9d6e6)

Wersja 0.1.0-dev15

22 lipca 2020 r.

androidx.compose.foundation:foundation:0.1.0-dev15, androidx.compose.foundation:foundation-layout:0.1.0-dev15androidx.compose.foundation:foundation-text:0.1.0-dev15 są zwalniane. Wersja 0.1.0-dev15 zawiera te zmiany.

Aby korzystać z wersji 0.1.0-dev15 funkcji Twórz, musisz:

Aktualizacja zależności

  • Aby używać wersji 0.1.0-dev15 biblioteki Compose, musisz zaktualizować zależności zgodnie z nowymi fragmentami kodu pokazanymi powyżej w sekcji Deklarowanie zależności.

Zmiany w interfejsie API

  • Podobnie jak w przypadku nowego parametru w komponencie ScrollableColumn/ScrollableRow, komponenty LazyColumnItems/LazyRowItems mają teraz też parametr contentPadding, który umożliwia dodanie do treści dopełnienia po jej przycięciu, co nie jest możliwe przy użyciu samego parametru modyfikatora. Umożliwia też dodanie odstępu tylko przed pierwszym elementem lub po ostatnim elemencie. (Ibc24e)
  • Wywołanie zwrotne onFocusChange w polach tekstowych zostało zmienione na onFocusChanged (Ida4a1)
  • Komponenty VerticalScroller i HoriziontalScroller zostały wycofane. Użyj komponentów ScrollableColumn i ScrollableRow, aby wbudować funkcje z zachowaniem i parametrami Column/Row, lub użyj modyfikatorów Modifier.verticalScroll i Modifier.horizontalScroll we własnym elemencie. Podobnie klasa ScrollerPosition została wycofana na rzecz klasy ScrollState (I400ce, b/157225838, b/149460415, b/154105299).
  • Interfejsy API Modifier.draggable i Modifier.scrollable zostały zmodyfikowane. Właściwość DragDirection została usunięta na rzecz właściwości Orientation. Wymaganie dotyczące stanu przewijania zostało uproszczone. Klasa ScrollableState została zmieniona na ScrollableController (Iab63c, b/149460415).
  • Właściwości semantyczne pojedynczej wartości używają teraz stylu wywoływania. Na przykład „semantics { hidden = true }” jest teraz zapisywane jako:semantics { hidden() } (Ic1afd, b/145951226, b/145955412)
  • Rozmiary narożników używane przez RoundedCornerShape i CutCornerShape mogą być teraz większe niż 50% (Id2340, b/160400213).
  • Zmieniono domyślny parametr ContentScale kompozycji Image z Inside na Fit. Zrobiliśmy to, aby w przypadku, gdy rozmiar układu jest większy niż wewnętrzny rozmiar obiektu Painter, zachowanie skalowało go w górę przy zachowaniu formatu obrazu. Takie zachowanie lepiej odpowiada oczekiwaniom dotyczącym podawania stałych rozmiarów obrazu, a jednocześnie nie wpływa na domyślne zachowanie, jeśli do obliczenia rozmiaru komponentu kompozycyjnego używany jest tylko rozmiar wewnętrzny. (I40ae3, b/159838006)
  • W interfejsach API najwyższego poziomu używaj AnimationSpec zamiast AnimationBuilder, aby wyjaśnić koncepcję statycznej specyfikacji animacji. -Ulepsz DSL przejścia, usuwając wymaganie lambdy do tworzenia specyfikacji animacji, takich jak tween czy spring. Zamiast tego przyjmują one bezpośrednio parametry konstruktora. – Zwiększenie ogólnej łatwości użycia klasy AnimationSpec przez udostępnienie konstruktorów zamiast polegania na builderach. – Zmiana czasu trwania i opóźnienia w przypadku klas KeyFrames i Tween na Int. Eliminuje to niepotrzebne rzutowanie typów i przeciążanie metod (w celu obsługi zarówno typu Long, jak i Int). (Ica0b4)
  • Element klikalny został usunięty. Użyj modyfikatora clickable (I84bdf)
  • Dodano LazyRowItems – przewijany w poziomie odpowiednik LazyColumnItems (Ibbcf7)
  • Wprowadzono interfejsy API animacji bezstanowej niskiego poziomu. Te interfejsy API (I63bf7)
  • Interfejsy androidx.ui.foundation.TextFieldValue i androidx.ui.input.EditorValue zostały wycofane. Komponenty TextField, FilledTextField i CoreTextField, które używają tego typu, również zostały wycofane. Zamiast tego użyj androidx.ui.input.TextFieldValue (I4066d, b/155211005)
  • Zastąpiono użycie IntPx przez Int. Zastąpiono IntPxPosition przez IntOffset. Zastąpiono IntPxSize wartością IntSize. (Ib7b44)
  • Usunięto androidx.ui.foundation.shape.RectangleShape. Używaj androidx.ui.graphics.RectangleShape (I94939, b/154507984).
  • Aby zmniejszyć liczbę klas używanych do reprezentowania informacji o rozmiarach, ujednolić użycie klasy Size zamiast PxSize. Dzięki temu możesz korzystać z zalet klasy wbudowanej, aby używać typu long do pakowania 2 wartości zmiennoprzecinkowych reprezentujących szerokość i wysokość. (Ic0191)
  • Aby zmniejszyć liczbę klas używanych do reprezentowania informacji o pozycjonowaniu, ujednolić użycie klasy Offset zamiast klasy PxPosition. Dzięki temu można korzystać z zalet klasy wbudowanej, aby używać typu long do pakowania 2 wartości zmiennoprzecinkowych reprezentujących przesunięcia x i y w postaci liczb zmiennoprzecinkowych. (I3ad98)
  • Dodano modyfikator Modifier.zoomable do obsługi funkcji powiększania za pomocą gestu uszczypnięcia (Id5d63).
  • Komponent przełączany został wycofany. Zamiast tego użyj Modifier.toggleable (I35220, b/157642842)
  • Element MutuallyExclusiveSetItem został wycofany. Zamiast tego użyj Modifier.selectable. (I02b47, b/157642842)
  • TestTag został wycofany. Zamiast tego użyj Modifier.testTag. (If5110, b/157173105)
  • Dodaje parametr fontWeight do komponentu Text, który został wcześniej przypadkowo pominięty (I56937).
  • Zastąpiono użycie klasy Px w różnych klasach Compose w ramach dużego refaktoryzowania, aby w przypadku parametrów pikseli używać tylko typów Dp i pierwotnych (I19d02).
  • Komponent VerticalScroller udostępnia teraz kolumnę od razu po wyjęciu z pudełka. Komponent HorizontalScroller udostępnia teraz wiersz od razu po wyjęciu z pudełka. (Ieca5d, b/157020670)
  • Zastąpiono użycie klasy Px w różnych klasach Compose w ramach dużego refaktoryzacji, aby w przypadku parametrów pikseli używać tylko jednostek dp i typów pierwotnych (Iede0b).
  • Do pakietu podstawowego dodano Modifier.indication. Używaj go do wyświetlania informacji o naciśnięciu, przeciągnięciu lub innych interakcjach w przypadku niestandardowych elementów interaktywnych (I8425f, b/155287131).
  • Komponenty VerticalScroller i HorizontalScroller obsługują teraz odwrócone przewijanie, gdy w komponencie ScrollerPosition ustawiona jest wartość isReversed (I953bd).
  • Obsługa dodawania komponentów kompozycyjnych do układu tekstu. (I1373c)
  • Ujednolicone implementacje CanvasScope, dzięki czemu są teraz tylko DrawScope i ContentDrawScope. Zmieniono nazwę CanvasScope na DrawScope. Zaktualizowano DrawScope, aby zaimplementować interfejs Density i udostępnić LayoutDirection. Usunięto podklasę DrawScope w ContentDrawScope. Zaktualizowano Painter i PainterModifier, aby nie utrzymywały już same właściwości RTL, ponieważ DrawScope już je udostępnia bez ręcznego podawania (I1798e).
  • Usunięto wycofany interfejs DrawBackground API na rzecz interfejsów drawBackground API w rozszerzeniu Modifier. Przebudowano implementacje kolorów, pędzli i malowania drawBackground, aby zmniejszyć liczbę ścieżek kodu, a także usunąć wymaganie tworzenia modyfikatora w ramach kompozycji. (I0343a)
  • Zaktualizowano interfejsy API Compose wyższego poziomu, które udostępniają Canvas, aby zamiast tego udostępniać CanvasScope. Eliminuje to konieczność utrzymywania przez konsumentów własnych obiektów Paint. Użytkownicy, którzy nadal potrzebują dostępu do elementu Canvas, mogą użyć metody drawCanvas, która zapewnia wywołanie zwrotne do wydawania poleceń rysowania za pomocą bazowego elementu Canvas. (I80afd)
  • Komponenty HorizontalScroller i VerticalScroller nie przywracają pozycji przewijania za pomocą zapisanego stanu instancji. (Ia0fae, b/155075048)
  • Usunięto FocusManagerAmbient. Aby uzyskać fokus, użyj FocusModifier.requestFocus. (Ic4826)
  • Układ tabeli został tymczasowo usunięty. Udostępnimy go ponownie w odświeżonej wersji interfejsu API. (Id88a7)
  • Utworzono interfejs CanvasScope API, który opakowuje obiekt Canvas, aby udostępnić bezstanowy, deklaratywny interfejs API do rysowania. Przekształcenia są zawarte w odpowiednim zakresie odbiornika, a informacje o rozmiarze są również ograniczone do odpowiednich granic wstawki. Nie wymaga to od użytkownika utrzymywania własnego obiektu stanu Paint do konfigurowania operacji rysowania.

    Dodaliśmy CanvasScopeSample, a także zaktualizowaliśmy aplikację demonstracyjną, aby zawierała demonstrację grafiki deklaratywnej (Ifd86d).

  • Element ColoredRect został usunięty. Zamiast tego użyj elementu User Box z modyfikatorem drawBackground (I983c7, b/152753731).

  • Dodanie możliwości dostosowania koloru kursora w polu TextField (I6e33f)

  • Klawiaturę ekranową można teraz ukrywać i wyświetlać za pomocą klasy SoftwareKeyboardController, która jest dostarczana przez wywołanie zwrotne onTextInputStarted (I8dc44, b/151860051).

  • Wartość TextFieldValue używana z polem TextField może teraz przetrwać ponowne utworzenie aktywności, jeśli jest używana w ten sposób: var text by savedInstanceState(saver = TextFieldValue.Saver) { TextFieldValue() } (I5c3ce, b/155075724)

  • Dodaje do funkcji Text() często używane parametry. Jeśli obecnie tworzysz lokalny styl tekstu, aby przekazać niewielką liczbę tych parametrów, np. Text(style = TextStyle(textAlign = TextAlign.Center)), możesz teraz po prostu podać parametry bezpośrednio: Text(textAlign = TextAlign.Center) (I82768)

  • Zastąpiono parametr focusIdentifier w komponencie CoreTextField/TextField parametrem FocusNode, aby zintegrować go z podsystemem fokusu. (I7ea48)

  • Aktualizacja pola tekstowego – w wymiarze poziomym zajmie ono całą dostępną przestrzeń (Ib08df, b/154638552)

  • Dodano InteractionState i Interaction, co ułatwia tworzenie komponentów reagujących na zmiany stanu interfejsu, takie jak naciśnięcie i przeciągnięcie (Icfe25, b/152525426).

  • RectangleShape przeniesiono z androidx.ui.foundation.shape.* do androidx.ui.graphics.* (Ia74d5, b/154507984)

  • Zastąpiono wszystkie użycia wartości Color, które mogą przyjmować wartość null, w interfejsie API wartościami, które nie mogą przyjmować wartości null, i zamiast wartości null użyto wartości Color.Unset (Iabaa7).

  • Aktualizacja interfejsu TextField API – scalenie wywołań zwrotnych onFocus i onBlur w jedno wywołanie zwrotne onFocusChange(Boolean) z parametrem (I66cd3)

  • Zmiana nazwy ScaleFit na ContentScale. Przeniesienie ContentScale z modułu ui-graphics do modułu ui-core. Moduł będzie znajdować się w tym samym module co interfejs Alignment API. Zmiana nazwy FillMaxDimension na Crop. Zmiana nazwy FillMinDimension na Fit. Zmiana nazwy Fit na Inside, aby lepiej dopasować ją do odpowiedników ImageView.ScaleType. Dodano dokumentację wskazującą, że połączenie Crop i Alignment.Center daje taki sam efekt jak ImageView.ScaleType.CENTER_CROP, a Fit użyty z Alignment.Center daje taki sam efekt jak ImageView.ScaleType.FIT_CENTER. Inside użyty z Alignment.Center daje taki sam efekt jak ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521).

  • Usuwa ProvideContentColor, zamiast tego używa bezpośrednio ContentColorAmbient z Providers (Iee942)

  • Dodaje do tekstu parametr koloru, co umożliwia zastąpienie koloru stylu tekstu bez konieczności ręcznego łączenia ze stylem podanym w motywie. (I41a66)

  • Ulepszenie interfejsu DrawModifier API:

    • Zmieniono zakres odbiorcy funkcji draw() na ContentDrawScope
    • Usunięto wszystkie parametry funkcji draw()
    • DrawScope ma taki sam interfejs jak poprzednia wersja CanvasScope.
    • ContentDrawScope ma metodę drawContent() (Ibaced, b/152919067)
  • Komponent ColoredRect został wycofany. Zamiast niej używaj zasady Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)

  • System motywów kształtów jest aktualizowany zgodnie ze specyfikacją Material Design. Teraz możesz podać małe, średnie i duże kształty, które będą używane przez większość komponentów (Ifb4d1).

  • Zastąpienie operatora „Modyfikator plus” funkcjami rozszerzenia fabrycznego (I225e4)

  • Przeniesienie elementu z możliwością przeciągania do modyfikatora (Id9b16, b/151959544)

  • Przeniesiono Text do pakietu androidx.ui.foundation z androidx.ui.core. (I87ce5)

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

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

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

    Zmieniono nazwę interfejsu Image(Painter) API na PaintBox(Painter) Utworzono komponent Vector, który działa podobnie jak komponent Image, ale zamiast komponentu ImageAsset używa komponentu VectorAsset (I9af9a, b/149030271).

  • Utworzono komponent CreatedImage, który obsługuje zmianę rozmiaru i układu, a także rysowanie danego elementu ImageAsset na ekranie. Ten komponent obsługuje też rysowanie dowolnej instancji Painter z uwzględnieniem jej rozmiaru wewnętrznego oraz obsługę danego stałego lub minimalnego rozmiaru (Ibcc8f).

  • Komponenty Button, FloatingActionButton i Clickable mają teraz osobny parametr enabled. Niektóre parametry w przypadku komponentu Button zostały zmienione lub zmieniono ich kolejność. (I54b5a)

  • Zmieniliśmy nazwę Image na ImageAsset, aby lepiej odróżnić dane Image od nadchodzącego komponentu Image, który będzie używany do tworzenia układu i rysowania treści.

    Utworzono metodę rozszerzenia w klasie android.graphics.Bitmap, Bitmap.asImageAsset(), aby utworzyć instancję klasy ImageAsset przydatną do łączenia tradycyjnego tworzenia aplikacji na Androida z platformą Compose. (Id5bbd)

  • Funkcja kompozycyjna DrawImage została usunięta. Użyj ImagePainter, aby narysować obraz na istniejącym układzie, lub SimpleImage, aby wprowadzić obraz zajmujący miejsce (I595e1, b/149827027).

  • Komponent Stack obsługuje kierunek od prawej do lewej (Ic9e00)

  • Dodano komponenty Icon, IconButton i IconToggleButton, a usunięto AppBarIcon. Możesz bezpośrednio zastąpić istniejące użycia AppBarIcon elementem IconButton, a wtedy będą one miały prawidłowy docelowy element dotykowy. Informacje o użyciu znajdziesz w przykładach, a dostępne ikony Material Icons, których możesz używać bezpośrednio w tych komponentach, znajdziesz w sekcji Ikony. (I96849)

  • Funkcja kompozycyjna DrawShape została usunięta. Zamiast tego użyj modyfikatora DrawBackground. (I7ceb2)

  • Dodano AdapterList, komponent listy przewijanej, który tylko komponuje i układa widoczne elementy. Obecnie znane problemy obejmują to, że jest on tylko pionowy i nie obsługuje w pełni wszystkich przypadków zmian w jego elementach podrzędnych. (Ib351b)

  • Dodano komponent z możliwością przewijania, który umożliwia tworzenie niestandardowych komponentów przewijanych i list (I5fd37).

  • Zmieniono nazwę tła na DrawBackground i ustawiono domyślne zapamiętywanie (Ia0bd3).

  • Dodaj parametry dopełnienia, obramowania, kształtu i tła do elementu Box (I05027, b/148147281)

  • Dodano komponent Canvas. Ten komponent zajmuje określony rozmiar (podany przez użytkownika) i umożliwia rysowanie za pomocą CanvasScope (I0d622).

  • zmiana modyfikatora Border na DrawBorder (I8ffcc)

  • Dodano komponent Box, który łączy funkcje układu i rysowania. (I6e2a7)

  • Elementy przewijane działają teraz jak w przypadku gestu szybkiego przesunięcia na urządzeniach z Androidem. (I922af, b/147493715)

  • Zastąpiono funkcję DrawBorder modyfikatorem obramowania (Id335a).

  • Zmieniliśmy nazwę Modifier.tag na Modifier.layoutId, aby uniknąć nieporozumień z Modifier.testTag. (I995f0)

  • Parametr percent podczas tworzenia linii pomocniczych ConstraintLayout został zmieniony na fraction. (Ida2db)

  • Dodaliśmy obsługę marginesów barier ConstraintLayout. (I47ffe)

  • Poprawiono obsługę układu od prawej do lewej w przypadku elementu ConstraintLayout. Dodano interfejsy API, które nie obsługują języków pisanych od prawej do lewej. (I3b1c7)

  • Dodano nowy język DSL dla ConstraintLayout. Więcej informacji znajdziesz w przykładach. (Icaa9a)

  • Dodano adnotację @ExperimentalLayout. Adnotacja została dodana do klas ConstraintLayout, FlowRow i FlowColumn, aby oznaczyć, że ich interfejsy API ulegną zmianie. (I412a8)

  • Dodano Modifier.padding(InnerPadding) (I94985, b/157133803)

  • Usunięto przestarzałe atrybuty RowAlign i ColumnAlign w elementach Row i Column. (If60d4, b/155858731)

  • Usunięto wycofaną funkcję LayoutTag(). Zamiast niej używaj funkcji Modifier.tag(). Usunięto wycofany modyfikator Modifier.matchParent(). Zamiast niego używaj modyfikatora Modifier.matchParentSize(). (If8044)

  • Dodaliśmy modyfikator układu offsetPx, który umożliwia definiowanie (dynamicznych) przesunięć w pikselach. (I5af57)

  • Funkcja kompozycyjna AlignmentLineOffset została wycofana. Zamiast niej używaj modyfikatora relativePaddingFrom(). Usunięto funkcję kompozycyjną CenterAlignmentLine. (I60107)

  • Dodano modyfikator układu defaultMinSizeConstraints, który ustawia ograniczenia rozmiaru na opakowany układ tylko wtedy, gdy przychodzące odpowiednie ograniczenia nie są określone (0 – ograniczenia minimalne, nieskończoność – ograniczenia maksymalne). (I311ea, b/150460257)

  • Kontener został usunięty. Użyj Box (Ibbc2b, b/151407926)

  • Usunięto nieużywane modyfikatory LayoutWidth/Height/Size. (Ib0bc1)

  • Dodano domyślne wartości parametrów modyfikatora przesunięcia. (I37f06)

  • Dodano modyfikator symetrycznego dopełnienia. (I39840)

  • Usunięto wycofany modyfikator LayoutAspectRatio. (I65a74)

  • Usunięto wycofane modyfikatory LayoutAlign. (I10877)

  • Naprawiliśmy błąd w modyfikatorach szerokości i wysokości, który powodował, że układ zawijany był mierzony bez ograniczeń osi przeciwnej. (I210b8, b/154797971)

  • Dodano parametry verticalGravity i horizontalGravity odpowiednio do wiersza i kolumny. (I7dc5a)

  • Zaktualizowano funkcje wrapContentWidth i wrapContentHeight, aby oczekiwały wyrównania w pionie lub poziomie, a nie dowolnego wyrównania. Modyfikator grawitacji został zaktualizowany, aby akceptować wyrównanie w pionie lub poziomie. Wiersz, Kolumna i Stos zostały zaktualizowane, aby obsługiwać niestandardowe ciągłe wyrównania. (Ib0728)

  • Umożliwiono tworzenie instancji klasy Alignment z dowolnymi wartościami. Dodano wyrównania 1D. (Ia0c05)

  • Zmieniono nazwę EdgeInsets na InnerPadding. Zmiana nazwy parametru innerPadding w przypadku przycisków Material na padding. (I66165)

  • Funkcja alignToSiblings akceptuje teraz obiekt Measured zamiast Placeable. (I5788d)

  • Dodaliśmy modyfikatory rozmiaru do pomiarów wewnętrznych i wycofaliśmy komponenty służące do tego celu. (I8295d)

  • Dodano możliwość dostosowywania wymiarów elementów podrzędnych elementu ConstraintLayout (Idb1a5).

  • Usunięto wycofane funkcje kompozycyjne Wrap i Center. (I29e23)

  • Dodano LayoutModifier2, nowy interfejs API do definiowania modyfikatorów układu; wycofano LayoutModifier (If32ac).

  • Elementy RowScope i ColumnScope są teraz dostępne poza wierszem i kolumną. (I3a641)

  • Kontener został wycofany. Zamiast tego użyj Box. (I675ce, b/151407926)

  • Dodano modyfikator LayoutOffset do przesuwania pozycji układu (I0b8a3)

  • Początkowa obsługa układu od prawej do lewej w Compose (Ia5519)

  • Zaktualizowano LayoutAlign, aby nie wypełniał już dostępnej przestrzeni (I2b14f)

  • Usunięto funkcję kompozycyjną AspectRatio na rzecz modyfikatora. Usunięto przestarzałe funkcje kompozycyjne FlexColumn i FlexRow oraz modyfikator Spacing (Iec8a7)

  • Usunięto modyfikator LayoutInflexible dla wiersza i kolumny (I0d820)

  • Zaimplementuj uchwyty przeciągania, aby zmienić zaznaczenie w przypadku elementu TextField. (I27032)

  • Implementuje LongPressAndDrag na potrzeby zaznaczania w polu tekstowym. (I17919)

Poprawki błędów

  • FocusModifier został wycofany na rzecz Modifier.focus, Modifier.focusRequester i Modifier.focusObserver. Stany FocusState i FocusDetailedState zostały wycofane na rzecz stanu FocusState2 (I46919, b/160822875, b/160922136).
  • Nazwa została zmieniona na runOnIdle (I83607)runOnIdleCompose
  • Zmieniliśmy nazwy kilku interfejsów API do testowania, aby były bardziej intuicyjne. Wszystkie interfejsy API findXYZ zostały zmienione na onNodeXYZ. Wszystkie interfejsy API doXYZ zostały zmienione na performXYZ. (I7f164)
  • Usuwa wcześniej wycofany modyfikator Modifier.ripple. Funkcja Clickable używa teraz efektu fali jako domyślnego wskaźnika (jeśli w aplikacji masz ustawiony element MaterialTheme{}), więc w większości przypadków możesz po prostu użyć funkcji Clickable i bezpłatnie uzyskać efekt fali. Jeśli chcesz dostosować kolor, rozmiar lub parametr ograniczony efektu fali, możesz ręcznie utworzyć RippleIndication i przekazać go do funkcji clickable jako parametr indication. (I663b2, b/155375067)
  • Usunięto nieaktualne interfejsy API do testowania rozmiaru. (Iba0a0)
  • Udostępniliśmy eksperymentalny interfejs API LayoutNode (I4f2e9).
  • W całym Compose zaimplementowano wersję 1 blokowania orientacji przewijania. (I1ce7a, b/150289741)
  • Wyskakujące okienka, okna dialogowe i menu dziedziczą teraz kontekstowy motyw MaterialTheme (Ia3665, b/156527485).
  • Usunięto parametr kierunku układu z bloku miary funkcji Layout(). Kierunek układu jest jednak dostępny w wywołaniu zwrotnym za pomocą obiektu zakresu pomiaru (Ic7d9d).
  • Dodaj AbsoluteArrangement – umożliwia rozmieszczenie elementów podrzędnych w wierszu bez automatycznego odbijania lustrzanego w przypadku języków pisanych od prawej do lewej (I3a1df).
  • Adnotacja @Untracked została wycofana. Zastąp @ComposableContract(tracked=false) (Id211e)
  • Przed tą zmianą wtyczka kompilatora Compose w nietrywialny sposób przechwytywała wywołania konstruktorów w funkcji @Composable, jeśli istniał (I5205a, b/158123804).
  • Dodaj funkcję viewModel(), która umożliwia tworzenie lub pobieranie utworzonego już obiektu ViewModel w sposób podobny do tego, jak to działa w przypadku aktywności lub fragmentu (I5fdd1).
  • Przekształcono klasę Radius w klasę wbudowaną. Usunięto metody tworzenia kształtu towarzyszącego na rzecz konstruktora funkcji z parametrem domyślnym, aby promień wzdłuż osi y był zgodny z obowiązkowym parametrem promienia wzdłuż osi x.

    Zaktualizowano funkcję DrawScope.drawRoundRect, aby używała jednego parametru Radius zamiast 2 osobnych wartości zmiennoprzecinkowych dla promienia wzdłuż osi X i Y (I46d1b).

  • W ramach dużych zmian w kodzie zastąpiono użycie klasy Px w różnych klasach Compose, aby w przypadku parametrów pikseli korzystać tylko z jednostek Dp i typów prostych. Usunięto w całości klasę Px (I3ff33)

  • W ramach dużego refaktoryzacji zastąpiono użycie klasy Px w różnych klasach kompozycji, aby w przypadku parametrów pikseli używać tylko typów Dp i pierwotnych (I086f4).

  • W ramach dużego refaktoryzacji zastąpiono użycie klasy Px w różnych klasach kompozycji, aby w przypadku parametrów pikseli używać tylko typów Dp i pierwotnych (Id3434).

  • W ramach dużego refaktoryzowania zastąpiono użycie klasy Px w różnych klasach kompozycji, aby w przypadku parametrów pikseli używać tylko typów Dp i pierwotnych (I97a5a).

  • Kursor w polu TextField ma animację migania (Id10a7)

  • W przypadku częściowych gestów nie trzeba już przekazywać elementu GestureToken (Id7ae5).

  • W ramach dużego refaktoryzacji zastąpiono użycie klasy Px w różnych klasach kompozycji, aby w przypadku parametrów pikseli używać tylko typów Dp i pierwotnych (I57bff).

  • Wycofanie funkcji Modifier.semantics zostało cofnięte, aby umożliwić używanie jej w komponentach wysokiego poziomu. (I4cfdc)

  • Zmiana nazwy funkcji AnnotatedString.Builder.addAnnotationString na addStringAnnotation. (I5059e)

  • Zaktualizowano interfejs Alignment API i dodano obsługę wyrównania bezwzględnego (które nie jest automatycznie odzwierciedlane w kontekście od prawej do lewej) (I38cd3).

  • Elementy podrzędne Layout i LayoutModifier można mierzyć w innym kierunku układu. (Ibd731)

  • Wprowadzenie dodatkowego opcjonalnego parametru rect do ImagePainter w celu obsługi rysowania podsekcji bazowego elementu ImageAsset (I0ea9e)

  • Usunięto awarię w klasie AdapterList podczas usuwania elementów (Ic64b0, b/153195921).

  • Zmieniliśmy sposób pomiaru pierwszego układu umieszczonego w bloku activity.setContent { }. Wcześniej musiał wypełniać cały ekran aktywności, a teraz zachowuje się tak, jakby układ był umieszczony w obiekcie Stack: może być mniejszy niż ekran i będzie umieszczony w lewym górnym rogu ekranu. Jeśli chcesz przywrócić stare działanie, możesz zastosować Modifier.fillMaxSize() w układzie. (Ie88a7, b/153453714)

  • Moduł ui-text-compose został zmieniony na ui-text. Moduł ui-text zawiera teraz komponenty CoreText i CoreTextField (Ib7d47).

  • Moduł ui-text został zmieniony na ui-text-core (I57dec)

  • Przeniesiono funkcje kompozycyjne ui-framework/CoreText i CoreTextField do pakietu ui-text-compose. Możesz uwzględnić ui-text-compose w swoim projekcie. (I32042)

  • 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(...), wywołujący muszą dodać importy. (I5312c)

  • W przypadku funkcji DrawLayerModifier i drawLayer() domyślne wartości clipToBounds i clipToOutline to teraz false. (I0eb8b, b/152810850)

  • Zmieniono nazwę LayoutResult na MeasureResult. (Id8c68)

  • Wycofany komponent kompozycyjny Center. Należy go zastąpić modyfikatorem LayoutSize.Fill + LayoutAlign.Center lub jednym z kompozycji Box lub Stack z odpowiednimi modyfikatorami (Idf5e0).

  • Zmieniono nazwę LayoutFlexible na LayoutWeight. Zmieniono nazwę parametru „tight” na „fill”. (If4738)

  • Funkcja DrawVector została zmieniona ze zwykłej funkcji kompozycyjnej na funkcję zwracającą modyfikator drawVector(), który rysuje wektor jako tło układu. (I7b8e0)

  • Zastąp funkcję kompozycyjną Clip modyfikatorem drawClip(). DrawClipToBounds to wygodny modyfikator, którego możesz użyć, gdy chcesz przyciąć tylko do granic warstwy w kształcie prostokąta. (If28eb)

  • Zastąpiono funkcję kompozycyjną DrawShadow modyfikatorem drawShadow(). Cienie są teraz rysowane w ramach LayerModifier. (I0317a)

  • Klasa androidx.compose.ViewComposer została przeniesiona do androidx.ui.node.UiComposer. Klasa androidx.compose.Emittable została usunięta. Było to zbędne w przypadku ComponentNode. androidx.compose.ViewAdapters zostało usunięte. Nie jest to już obsługiwany przypadek użycia. Metoda Compose.composeInto została wycofana. Zamiast tego użyj zdarzenia setContent 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).

  • Wycofana funkcja kompozycyjna Wrap. Można go zastąpić modyfikatorem LayoutAlign lub funkcją kompozycyjną Stack (Ib237f).

  • Umożliwiono propagowanie kierunku układu z węzła układu nadrzędnego do węzłów podrzędnych. Dodano modyfikator kierunku układu. (I3d955)

  • Zmiana nazwy Painter.toModifier na Painter.asModifier, ponieważ nowo utworzony modyfikator ma odniesienie do oryginalnego obiektu Painter, które można udostępniać w wielu instancjach modyfikatora (I7195b).

  • Obsługa kierunku od prawej do lewej w modyfikatorze LayoutPadding (I9e8da)

  • Połączyliśmy interfejsy Density i DensityScope w jeden. Zamiast ambientDensity() możesz teraz używać DensityAmbient.current. Zamiast withDensity(density) używaj tylko with(density) (I11cb1).

  • Usunięto klasę ValueHolder. Zmieniliśmy strukturę klas AnimatedValue i AnimatedFloat, aby pole wartości animacji było abstrakcyjne, dzięki czemu podklasy mogą obserwować aktualizację wartości.

    • Dodano klasy modeli dla AnimatedValue, AnimatedFloat itp.
    • Dodaliśmy nowy zestaw lekkich interfejsów API @Composable do animowania przejść między wartościami.
    • (I79530)
  • Zmiany powodujące niezgodność w interfejsie API ambients. Szczegółowe informacje znajdziesz w dzienniku i Ambient<T> dokumentacji (I4c7ee, b/143769776).

  • Pozycje liczb całkowitych w liniach wyrównania zwracane przez Placeable#get(AlignmentLine) nie są już wartościami null. Jeśli wyszukiwana linia wyrównania nie istnieje, zwracana jest wartość AlignmentLine.Unspecified. (I896c5, b/158134875)

  • Naprawiliśmy błąd w ConstraintLayout, który powodował awarię podczas ponownego komponowania. (Ibee5a, b/158164341)

  • Zmieniono interfejs API lambda końcowego WithConstraints. Zamiast 2 parametrów ma teraz zakres odbiorcy, który oprócz ograniczeń i kierunku układu udostępnia właściwości minWidth, maxWidth, minHeight i maxHeight w jednostkach dp (I91b9a, b/149979702).

  • Zmieniono nazwę LayoutModifier2 na LayoutModifier. (Id29f3)

  • Funkcje pomiarów wewnętrznych w Layout i LayoutModifier2 mają teraz odbiornik IntrinsicMeasureScope, który udostępnia interfejs API zapytań o wartości wewnętrzne z niejawnym kierunkiem układu. (Id9945)

  • Właściwość LayoutDirectionAmbient została wycofana. Aby odczytać kierunek układu zdefiniowany przez ustawienia regionalne, użyj właściwości localeLayoutDirection w obiekcie ConfigurationAmbient (I851b1).

  • Dodano positionInParent i boundsInParent dla LayoutCoordinates. (Icacdd, b/152735784)

  • Funkcja kompozycyjna ParentData została wycofana. Możesz utworzyć modyfikator, który implementuje interfejs ParentDataModifier, lub użyć modyfikatora LayoutTag, jeśli chcesz tylko otagować elementy podrzędne układu, aby można było je rozpoznać w bloku pomiaru. (I51368, b/150953183)

  • Dodaj modyfikatory OnPositionedModifier i OnChildPositionedModifier, aby zastąpić funkcje kompozycyjne OnPositioned i OnChildPositioned. (I2ec8f)

  • Wyklucz ujemne dopełnienie w LayoutPadding. W przypadku ujemnych przesunięć pozycji należy używać parametru LayoutOffset. (Ifb5b1)

  • WithConstraints ma parametr LayoutDirection (I6d6f7)

  • Zaktualizowano flagę ComposeFlags.COMPOSER_PARAM na true, co zmieni strategię generowania kodu w przypadku wtyczki do pisania. W dużym uproszczeniu powoduje to, że funkcje @Composable są generowane z dodatkowym parametrem syntetycznym, który jest przekazywany do kolejnych wywołań @Composable, aby środowisko wykonawcze mogło prawidłowo zarządzać wykonaniem. Jest to istotna zmiana binarna, która jednak powinna zachować zgodność na poziomie kodu źródłowego we wszystkich dozwolonych przypadkach użycia funkcji Compose. (I7971c)

  • Zmieniono LayoutCoordinates, aby providedAlignmentLines było zbiorem zamiast mapy, a LayoutCoordinates implementowało operatora get() zamiast pobierania wartości. Ułatwia to modyfikatorom modyfikowanie co najmniej jednej wartości zestawu bez tworzenia nowej kolekcji dla każdego modyfikatora. (I0245a)

  • LayoutCoordinates nie ma już właściwości position. Właściwość position nie ma sensu w przypadku modyfikatorów układu, obrotu ani skalowania. Zamiast tego programiści powinni używać funkcji parentCoordinates i childToLocal() do obliczania przekształcenia z jednego obiektu LayoutCoordinate na inny.

    LayoutCoordinates używa IntPxSize dla właściwości size zamiast PxSize. Układy korzystają z rozmiarów w pikselach, więc wszystkie rozmiary układów powinny być liczbami całkowitymi, a nie wartościami zmiennoprzecinkowymi. (I9367b)

  • Ulepszenia interfejsu API ograniczeń (I0fd15)

  • Dodano TextDirection.Content (I48f36)

  • Dostosuj menu paska narzędzi, aby poprawnie wyświetlać opcje kopiowania, wycinania i wklejania. (Id3955)

  • Dodanie pływającego paska narzędzi do zaznaczenia pola tekstowego. (Ie8b07)

  • Zmiana nazwy TextDirectionAlgorithm na TextDirection (I75ce8)

  • TextDirection zmienia nazwę na ResolvedTextDirection (I3ff38)

  • Dodaj HapticFeedback do wyboru TextField. (I58050)

  • Dodaj metody kopiowania, wycinania i wklejania do zaznaczenia TextField. (Idb70b)

  • Tag testowy i semantyka zostały usunięte. Zamiast tego używaj Modifier.testTag i Modifier.semantics (I15ff0, b/158841414)

  • Zmieniono nazwę pakietu dla Locale i LocaleList z androidx.ui.text na androidx.ui.intl (I8132c)

  • Zmiana w interfejsie API: AnnotatedString(builder: Builder) zmieniono nazwę na annotatedString(builder: Builder). (Ia6377)

  • Zmiana w interfejsie API: AnnotatedString.Item zmieniono nazwę na AnnotatedString.Range. (I2d44d)

  • Dodaj pasek narzędzi do operacji związanych z tekstem. (I49d53)

  • Dostępny jest nowy komponent LifecycleOwnerAmbient. Aktywność używana w interfejsie Compose powinna teraz rozszerzać androidx.activity.ComponentActivity (lub AppCompatActivity). Metoda setContent w android.app.Activity jest teraz wycofana (Idb25a, b/153141084).

  • Nazwa pakietu ui-android-text (androidx.text) została zastąpiona przez androidx.ui.text.platform, aby zachować zgodność z zasadami androidx. (I42711)