Podstawa Compose

Pisać aplikacje Jetpack Compose za pomocą gotowych elementów składowych i rozwijać podstawy, aby tworzyć własne elementy systemu projektowania.
Ostatnia aktualizacja Wersja stabilna Wersja kandydująca Wersja Beta Wersja alfa
13 listopada 2024 r. 1.7.5 - - 1.8.0-alpha06

Struktura

Składnik jest kombinacją 7 identyfikatorów grupy Maven w ramach androidx. Każda grupa zawiera określony podzbiór funkcji, z którym wiąże się własny zestaw informacji o wydańach.

Ta tabela zawiera informacje o grupach i linki do poszczególnych zestawów informacji o wersji.

GrupaOpis
compose.animationtworzyć animacje w aplikacjach Jetpack Compose, aby wzbogacać wrażenia użytkowników.
compose.compilerPrzekształcaj funkcje @Composable i włącz optymalizacje za pomocą wtyczki kompilatora Kotlin.
compose.foundationPisać aplikacje Jetpack Compose za pomocą gotowych elementów składowych i rozwijać podstawy, aby tworzyć własne elementy systemu projektowania.
compose.materialTworzenie interfejsów Jetpack Compose za pomocą gotowych komponentów Material Design. Jest to punkt wejścia na wyższym poziomie w Compose, który ma na celu udostępnianie komponentów odpowiadających komponentom opisanym na stronie www.material.io.
compose.material3Twórz interfejsy Jetpack Compose za pomocą komponentów Material Design 3, czyli kolejnej generacji Material Design. Material 3 obejmuje zaktualizowane motywy i elementy oraz funkcje personalizacji Material You, takie jak dynamiczne kolory. Jest on spójny z nowym stylem wizualnym Androida 12 i interfejsem systemu.
compose.runtimePodstawowe elementy modelu programowania i zarządzania stanem w Compose oraz środowisko uruchomieniowe główne dla wtyczki kompilatora Compose, na które ma być nakierowany.
compose.uiPodstawowe elementy interfejsu tworzenia wiadomości, które są potrzebne do interakcji z urządzeniem, w tym układ, rysowanie i wprowadzanie danych.

Deklarowanie zależności

Aby dodać zależność od Compose, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Maven firmy Google.

Dodaj zależności dla artefaktów, których potrzebujesz, w pliku build.gradle aplikacji lub modułu:

Groovy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

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

Opinia

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

Tworzenie nowego zgłoszenia

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

Wersja 1.8

Wersja 1.8.0-alpha06

13 listopada 2024 r.

androidx.compose.foundation:foundation-*:1.8.0-alpha06 został zwolniony. Wersja 1.8.0-alpha06 zawiera te komisy.

Zmiany w interfejsie API

  • Dodaje modyfikator stylusHoverIcon. (Iff20a, b/331289114)
  • Wycofane AnchoredDraggableState confirmValueChange. Zamiast blokować zmiany stanu, nie należy umieszczać niedozwolonych kotwic w aktywnej grupie kotwic, a aby wskazać niedostępność żądanego działania, należy użyć elementu OverscrollEffect. (Ia717f)
  • Zmiana menedżera autouzupełniania na interfejs. (I84914, b/376080755)
  • Dodaje interfejsy API OverscrollEffect#withoutDrawingOverscrollEffect#withoutEventHandling – te interfejsy API tworzą opakowany egzemplarz dostarczonego efektu przewijania, który nie rysuje ani nie obsługuje zdarzeń. Umożliwia to renderowanie efektu przewijania w oddzielnym komponencie od komponentu wysyłającego zdarzenia. Na przykład wyłączenie przewijania w ramach listy leniwej, a potem przewijanie osobno u góry lub w innym miejscu. (Idbb3d, b/266550551, b/204650733, b/255554340, b/229537244)
  • Dodaliśmy obsługę autouzupełniania na pasku narzędzi tekstowych. (Ie6a4c)
  • wycofuje parametry OverscrollConfigurationLocalOverscrollConfiguration oraz dodaje parametr rememberPlatformOverscrollFactory, aby utworzyć instancję / dostosować parametry domyślnej implementacji przewijania. Aby wyłączyć przewijanie ponad ekran, zamiast wartości LocalOverscrollConfiguration provides null użyj wartości LocalOverscrollFactory provides null. Aby zmienić kolor poświaty lub wypełnienia, zamiast LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding) użyj LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding). (Ie71f9, b/255554340, b/234451516)
  • Właściwość effectModifier w interfejsie OverscrollEffect została zmieniona na node: DelegatableNode, aby zachować spójność z innymi interfejsami API. (Ic0b46, b/255554340)
  • Usunięto eksperymentalny interfejs API GlobalAssertions. Jego celem było przeprowadzanie kontroli ułatwień dostępu. W tym celu użyj zamiast tego enableAccessibilityChecks(). (I59322)

Wersja 1.8.0-alpha05

30 października 2024 r.

androidx.compose.foundation:foundation-*:1.8.0-alpha05 został zwolniony. Wersja 1.8.0-alpha05 zawiera te komisy.

Nowe funkcje

  • Obsługa automatycznego dostosowywania rozmiaru tekstu. Przekaż instancję AutoSize (np. AutoSize.StepBased) do ulubionego komponentu tekstowego (np. BasicText) i obserwuj, jak rozmiar tekstu dostosowuje się do dostępnej przestrzeni. (Ice7e0, b/139320827)
  • Dodaje interfejsy API OverscrollFactory i LocalOverscrollFactory, aby umożliwić konfigurowanie przewijania w dół w hierarchii. Wartość podana w parametrye LocalOverscrollFactory zostanie domyślnie użyta do utworzenia OverscrollEffect. Aby utworzyć i zapamiętać efekt z bieżącej fabryki, użyj rememberOverscrollEffect(). (I51ca4, b/255554340)

Zmiany w interfejsie API

  • Wprowadzić CompositionLocal, który można wykorzystać do zmiany odcienia podświetlenia pola pomyślnie wypełnionego przez autouzupełnianie. (I32092)
  • Usunięto polecenie ScrollableDefaults.overscrollEffect. Zamiast niego należy używać polecenia rememberOverscrollEffect. Spowoduje to utworzenie instancji bieżącej implementacji przewijania, która jest dostarczana z LocalOverscrollFactory. (I1651a, b/255554340),(b/234451516)
  • Wprowadza nowy interfejs AutofillManager, który umożliwia dostosowanie procesu autouzupełniania do potrzeb użytkowników, oraz flagę isSemanticAutofillEnabled, która umożliwia włączenie nowej wersji autouzupełniania. (I9d484)
  • Usuń CombinedClickableNode. Ten eksperymentalny interfejs API był tymczasowo udostępniony, aby umożliwić optymalizację wydajności, ale nie jest już potrzebny. Zamiast tego należy bezpośrednio użyć interfejsu 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ą niestandardowych wartości parametru OverscrollEffect. Podany element OverscrollEffect będzie odbierał zdarzenia i będzie renderowany w ograniczeniach tych komponentów. Pamiętaj, że nie można rysować tego samego OverscrollEffect dwukrotnie, więc nie możesz rysować tego samego OverscrollEffect podanego jednemu z tych komponentów osobno za pomocą Modifier.overscroll. W przyszłości zajmiemy się osobno przypadkiem rysowania poza granicami tych komponentów. (I2dc42, b/266550551, b/234274772, b/224572538, b/353805117)

Wersja 1.8.0-alpha04

16 października 2024 r.

androidx.compose.foundation:foundation-*:1.8.0-alpha04 został zwolniony. Wersja 1.8.0-alpha04 zawiera te komisy.

Zmiany w interfejsie API

  • Dodaje wywołania zwrotne DelegatableNode#onDensityChangeDelegatableNode#onLayoutDirectionChange, aby umożliwić aktualizowanie stanu węzła po zmianie tych wartości. (I04f3e, b/340662451)
  • Paragraf i ParagraphIntrinsics przyjmują teraz listę wszystkich adnotacji zastosowanych do AnnotatedString. Wcześniej zawierały one tylko listę SpanStyles. (I12f80)
  • Wprowadziliśmy PointerInputModifierNode#touchBoundsExpansion, który umożliwia powiększenie obszaru dotykowego pojedynczego modyfikatora wejścia wskaźnika. (Iccf02, b/335339283)

Poprawki błędów

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

Wersja 1.8.0-alpha03

2 października 2024 r.

androidx.compose.foundation:foundation-*:1.8.0-alpha03 został zwolniony. Wersja 1.8.0-alpha03 zawiera te komity.

Zmiany w interfejsie API

  • Aktualizacja wersji Kotlina do 1.9 (I1a14c)
  • Wprowadzono flagę DraggableAddDownEventFixEnabled (I848d5).
  • Wprowadziliśmy nową rolę semantyki o nazwie karuzela, aby emulować zachowanie listy w pagerach w przypadku usług a11y. (Id354b, b/354109776, b/239672673)
  • Usunięto domyślny modyfikator graphicsLayer z komponowalnego elementu BasicText. Dodaliśmy eksperymentalną flagę ComposeFoundationFlags.RemoveBasicTextGraphicsLayerEnabled, aby można było wrócić do poprzedniego działania. (Ie478d)
  • Dodano Modifier.recalculateWindowInsets(), aby umożliwić elementom podrzędnym w hierarchii korzystanie z insetsPadding, nawet jeśli ich rodzice są dopasowane bez consumeWindowInsets(). (I7f9e4)

Poprawki błędów

  • Wdróż rozpoznawanie gestów w elementach detectDragGestures, elementach do przeciągania i elementach do przewijania. Teraz, jeśli dziecko zrezygnuje z przeciągania, rodzic może to zrobić. Umożliwia to bardziej ciągłe i zintegrowane zarządzanie gestami. (Ic88fe)
  • Zaktualizowano zachowanie anulowania przesunięcia w elementach przewijanych. Jeśli element przesuwany zostanie przeniesiony i dotknie ograniczeń, prawidłowo przekaże prędkość przesuwania następnemu elementowi przesuwanemu w łańcuchu zamiast kontynuować przesuwanie. (I9326a)

Wersja 1.8.0-alpha02

18 września 2024 r.

androidx.compose.foundation:foundation-*:1.8.0-alpha02 został zwolniony. Wersja 1.8.0-alpha02 zawiera te komity.

Zmiany w interfejsie API

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

Wersja 1.8.0-alpha01

4 września 2024 r.

androidx.compose.foundation:foundation-*:1.8.0-alpha01 został zwolniony. Wersja 1.8.0-alpha01 zawiera te komity.

Wersja 1.7

Wersja 1.7.5

30 października 2024 r.

androidx.compose.foundation:foundation-*:1.7.5 został zwolniony. Wersja 1.7.5 zawiera te komitowane zmiany.

Poprawki błędów

  • Upewnij się, że przypięte elementy nie są dwukrotnie złożone w obszarze wypełnienia treści. (Ic6224)

Wersja 1.7.4

16 października 2024 r.

androidx.compose.foundation:foundation-*:1.7.4 został zwolniony. Wersja 1.7.4 zawiera te komitowane zmiany.

Poprawki błędów

  • Naprawiono błąd, który powodował rzadkie awarie w polach tekstowych. (I475c6, b/313010266)
  • Usunięto element ReusableContentHost w korzeniach elementów układu opartego na opóźnionym ładowaniu. Była to potencjalna główna przyczyna awarii wywołanych przez „measure called on a deactivated node” (zmierzono wywołanie na zdezaktywowanym węźle). (Id6e60)

Wersja 1.7.3

2 października 2024 r.

androidx.compose.foundation:foundation-*:1.7.3 został zwolniony. Wersja 1.7.3 zawiera te komity.

Poprawki błędów

  • Naprawiono wyciek pamięci związany z funkcją BasicText, gdy minLines ma wartość inną niż domyślna.

Wersja 1.7.2

18 września 2024 r.

androidx.compose.foundation:foundation-*:1.7.2 został zwolniony. Wersja 1.7.2 zawiera te komity.

Poprawki błędów

  • Rozwiązanie problemu z elementem przeciąganym, w którym brakowało zdarzeń przesunięcia w dół, co powodowało, że przesunięcia były wolniejsze niż zwykle.

Wersja 1.7.1

10 września 2024 r.

  • Brak zmian w artefaktach na Androida. Usunięto -desktop artefakty i dodano -jvmStubs oraz -linuxx64Stubs. Żadnego z tych celów nie należy używać. Są to elementy zastępcze, które ułatwiają pracę Jetbrains Compose.

Wersja 1.7.0

4 września 2024 r.

androidx.compose.foundation:foundation-*:1.7.0 został zwolniony. Wersja 1.7.0 zawiera te komitowane zmiany.

Ważne zmiany od wersji 1.6.0

  • Znacznie poprawiono wydajność funkcji Modifier.clickable, Modifier.focusable, Modifier.indication, Modifier.scrollableModifier.draggable. W ramach tych działań oprócz zmian wewnętrznych wprowadziliśmy te zmiany interfejsu API:
    • Dodano nowy interfejs Indication API, IndicationNodeFactory. Dzięki temu implementacje sygnalizacji będą wydajniejsze niż w przypadku poprzedniego (obecnie wycofanego) interfejsu API rememberUpdatedInstance. Informacje o migracji znajdziesz na stronie developer.android.com.
    • Funkcje clickable / combinedClickable / selectable / toggleable mogą teraz przyjmować parametr MutableInteractionSource, który może być pusty. Jeśli jest to wartość null, a podana wartość w polu Indication jest typu IndicationNodeFactory, może ona być tworzona z opóźnieniem tylko wtedy, gdy jest potrzebna, co zwiększa wydajność. Jeśli nie używasz funkcji MutableInteractionSource, zalecamy przekazanie wartości null zamiast remember { MutableInteractionSource() }.
    • Środowisko wykonawcze Indication#rememberUpdatedInstance zostało wycofane. Ma ona duży, nieunikniony wpływ na wydajność i uniemożliwia inne optymalizacje. Zamiast tego użyj nowego interfejsu API IndicationNodeFactory.
  • BasicTextField z użyciem TextFieldState jest teraz stabilny i zalecamy wszystkim witrynom z usługami telefonicznymi przejście z wersji BasicTextField(value, onValueChange) na BasicTextField(TextFieldState).
  • Właściwość ClickableText została wycofana. Aby dodać do tekstu klikalne linki, użyj BasicText z nową adnotacją LinkAnnotation w sekcji AnnotatedString. LinkAnnotation umożliwia stosowanie niestandardowego stylu na podstawie stanu linku (np. gdy jest na niego nałożony fokus lub gdy jest nad nim kursor).
  • Wprowadzamy ContextualFlowRow i Enhanced FlowRow/Column z MaxLines i Overflow. Z przyjemnością informujemy, że udoskonaliliśmy eksperymentalne funkcje FlowRowFlowColumn, które teraz obsługują maxLines i przepełnienie. Wprowadziliśmy też funkcje ContextualFlowRowContextualFlowColumn. To uaktualnienie ma na celu zapewnienie optymalnej wydajności komponentów. ContextualFlow* doskonale nadaje się do dużej liczby elementów, korzystając z małej konfiguracji maxLines i dynamicznych przycisków „Pokaż więcej” +N. FlowRowFlowColumn są idealne do małej liczby elementów (mniej niż 100). Ważne: aby zachować dotychczasowe działanie funkcji FlowRow lub FlowColumn, w której wszystkie elementy są tworzone niezależnie od tego, czy mieszczą się w maksymalnej wartości osi poprzecznej, podczas inicjalizacji ustaw wartość przepełnienia na FlowRowOverflow.Visible lub FlowColumnOverflow.Visible. Aby zobaczyć przykłady działania nowych funkcji, otwórz ContextualFlowRowSample i FlowRowSample. (Ib9135, b/293577082)
  • Dodaliśmy obsługę animacji pojawiania się i znikania elementów w wersjach LazyColumnLazyRow. Wcześniej można było dodawać modyfikator Modifier.animateItemPlacement(), aby obsługiwać animacje umieszczania (przestawiania). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwie Modifier.animateItem(), który umożliwia obsługę wszystkich 3 typów animacji: pojawiania się (w postępowaniu), znikania (w postępowaniu) i przestawiania. (I2d7f7, b/150812265)
  • Wprowadziliśmy eksperymentalne wsparcie dla długich zrzutów ekranu w sekcji Compose Scroll Containers za pomocą oficjalnego interfejsu API Androida (ScrollCaptureCallback).
  • Źródła NestedScroll Przeciągnij i rzuć są zastępowane przez UserInputSideEffect, aby uwzględnić rozszerzoną definicję tych źródeł, która obejmuje teraz animacje (Side Effect) oraz koło myszy i klawiaturę (UserInput).
  • LazyLayout żądania wstępnego pobierania mogą być teraz oznaczone jako pilne, co oznacza, że spodziewamy się, że ten element będzie potrzebny w następnej klatce, i chcemy zignorować budżet klatek, aby mieć pewność, że wykonamy więcej pracy z wyprzedzeniem (Id513f)
  • Obsługa funkcji pisma odręcznego rysikiem na urządzeniach z Androidem U lub nowszym. (I002e4)
  • Różne interfejsy API zostały przeniesione do wersji stabilnej.
    • Przewijanie, przyciąganie, wstawki okna

Wersja 1.7.0-rc01

21 sierpnia 2024 r.

androidx.compose.foundation:foundation-*:1.7.0-rc01 został zwolniony. Wersja 1.7.0-rc01 zawiera te komity.

Poprawki błędów

  • Rozwiązaliśmy problem, który powodował awarię, gdy jakikolwiek element był zaznaczony w elementach nadrzędnych, które można zaznaczyć (lub kliknąć) i które są wyłączone. (b/317561689)

Wersja 1.7.0-beta07

7 sierpnia 2024 r.

androidx.compose.foundation:foundation-*:1.7.0-beta07 został zwolniony. Wersja 1.7.0-beta07 zawiera te komity.

Poprawki błędów

  • Funkcje SemanticsNodeInteraction performTextReplacement, performTextInputperformTextClearance związane z danymi wejściowymi tekstowymi będą teraz wywoływać błędy asercji, gdy są wywoływane w trybie tylko do odczytu TextFields. (I4ae8f)
  • Rozwiązanie problemu z wizualnym błędem w hiperlinkach. (I23311)
  • Rozwiązano problem z modyfikatorem contentReceiver, który nie działał z niektórymi IME.
  • Generowanie prędkości: zapobieganie propagacji wartości NaN w interfejsie Compose i Foundation.

Wersja 1.7.0-beta06

24 lipca 2024 r.

androidx.compose.foundation:foundation-*:1.7.0-beta06 został zwolniony. Wersja 1.7.0-beta06 zawiera te komity.

Wersja 1.7.0-beta05

10 lipca 2024 r.

androidx.compose.foundation:foundation-*:1.7.0-beta05 został zwolniony. Wersja 1.7.0-beta05 zawiera te komisy.

Poprawki błędów

  • Poprawka dotycząca obsługi wartości Nan w funkcjach SnapFlingBehavior i Pager.

Wersja 1.7.0-beta04

26 czerwca 2024 r.

androidx.compose.foundation:foundation-*:1.7.0-beta04 został zwolniony. Wersja 1.7.0-beta04 zawiera te komity.

Poprawki błędów

  • Unikanie awarii podczas pomiaru bardzo długich linii tekstu (np.10 tys. znaków) (8157ab)
  • Poprawka dotycząca pomiaru bardzo dużego tekstu, który powodował awarię w nowej wersji BasicTextField (6b7575)
  • Przywracanie zmiany zachowania w pomiarze wiersza/kolumny, która w pewnych sytuacjach uniemożliwia korzystanie z tekstu (69e8ba)

Wersja 1.7.0-beta03

12 czerwca 2024 r.

androidx.compose.foundation:foundation-*:1.7.0-beta03 został zwolniony. Wersja 1.7.0-beta03 zawiera te zatwierdzenia.

Wersja 1.7.0-beta02

29 maja 2024 r.

androidx.compose.foundation:foundation-*:1.7.0-beta02 został zwolniony. Wersja 1.7.0-beta02 zawiera te komity.

Zmiany w interfejsie API

  • Dodaje eksperymentalny interfejs API do konfigurowania zachowania wstępnego pobierania w LazyGrids, podobnego do dotychczasowego eksperymentalnego interfejsu API dla LazyLists. Obejmuje to obsługę wstępnego pobierania elementów w zagnieżdżonych LazyGrids. Podobnie jak w przypadku interfejsu LazyListPrefetchStrategy, domyślnie w ramach implementacji pobierane są wstępnie 2 elementy zagnieżdżone w każdej siatce, ale można to skonfigurować za pomocą nowych interfejsów API LazyGridPrefetchStrategy(nestedPrefetchItemCount)LazyListPrefetchStrategy#onNestedPrefetch. (I591c4)
  • Zmieniono nazwę SemanticsProperties.Editable na IsEditable, a SemanticsPropertyReceiver.editable na wartość isEditable. Właściwość jest teraz typu logicznego i zawsze jest określana przez pola tekstowe. (I8acd8)
  • Wartości domyślne basicMarquee zostały przeniesione do obiektu MarqueeDefaults. (I12ff6)
  • Zmieniono nazwę parametru basicMarquee delayMillis na repeatDelayMillis. (I12ff6)
  • Aktualizacja interfejsu API służącego do stylizacji linków: przeniesienie TextLinkStyles do TextStyle i usunięcie 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ła współrzędne na podstawie tej flagi. (I3a330)
  • Usunęliśmy wartość domyślną „Domyślny” z usług MarqueeDefaults. (I1d8a0)
  • Z usług MarqueeDefaults usunięto opcję „Pasek przewijania”. (Iad4f4)
  • Usunięto 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 wskaźnik ładowania przeskakiwał do pozycji docelowej, gdy już się na niej znajdował. (I9f373, b/33917122)
  • BTF2 ma teraz prawidłowe gesty wyboru myszy. (Ibe8c6)

Darowizna zewnętrzna

  • Ponownie prześlij „Make compose/measure time calculation content-type based in prefetch to improve accuracy” (Iea622)
  • Zwiększenie dokładności obliczeń czasu tworzenia i pomiaru na podstawie typu treści w ramach funkcji prefetch (Ibccb1)
  • Udostępnianie modyfikatorów WindowInsetsPadding z powszechnie używanego zbioru źródeł (I070b2)

Wersja 1.7.0-beta01

14 maja 2024 r.

androidx.compose.foundation:foundation-*:1.7.0-beta01 został zwolniony. Wersja 1.7.0-beta01 zawiera te komity.

Zmiany w interfejsie API

  • Właściwość KeyboardOptions.shouldShowKeyboardOnFocus została ponownie dodana jako wycofana i ukryta ze względu na zgodność binarną. (I15cfe)
  • Modifier.anchoredDraggable od teraz domyślnie odwraca wartości delta przeciągania w przypadku komponentów z orientacją poziomą, gdy są używane w układzie RTL. (I3c6d9)
  • AnnotatedString.hasEqualsAnnotations to teraz hasEqualAnnotations. (I685c0)
  • Zaktualizowano interfejs API w celu uzyskiwania linków w stylu Material w tekście. W szczególności usunęliśmy z TextDefaults metody tworzenia tematycznych LinkAnnotations i analizowania kodu HTML za pomocą tematycznych linków. Zamiast tego dodaliśmy klasę TextLinkStyles, która umożliwia stylizowanie linków jako parametru w komponowalnym elemencie tekstu. (I31b93)
  • Zawartość komórek onDragStartedonDragStopped została zastąpiona przez wywołania zwrotne bez zawieszania. (I59de8)

Poprawki błędów

  • Naprawiliśmy błąd, który powodował awarię Pagera, gdy contentPadding był większy niż dozwolone ograniczenia. Pager teraz wymusza, aby zwracane wartości ujemne z PageSize były zastępowane wartością 0. (Iba5d8, b/314008560)

Wersja 1.7.0-alpha08

1 maja 2024 r.

androidx.compose.foundation:foundation-*:1.7.0-alpha08 został zwolniony. Wersja 1.7.0-alpha08 zawiera te komity.

Nowe funkcje

  • Dodano menu kontekstowe dostępne po kliknięciu prawym przyciskiem myszy w elementach BasicTextFieldSelectionContainer, które zawiera opcje wycinania, kopiowania, wklejania i wybierania wszystkich. (If8c93, Ia2b49, I6f268)

Zmiany w interfejsie API

  • LazyLayout żądania wstępnego pobierania mogą być teraz oznaczone jako pilne, co oznacza, że spodziewamy się, że ten element będzie potrzebny w następnej klatce, i chcemy zignorować budżet klatek, aby mieć pewność, że wykonamy więcej pracy z wyprzedzeniem (Id513f)
  • Nazwa isPositionedByParentWithDirectManipulation została zmieniona na introducesFrameOfReference. Pamiętaj, że teraz ma on odwrotny skutek, co oznacza, że domyślnie większość wartości LayoutCoordinates wprowadza system odniesienia, a właściwość będzie fałszywa tylko wtedy, gdy zostanie umieszczona w ramach bezpośredniej manipulacji. Aby zapytanie o pozycję zawierało tylko te, które wprowadzają punkt odniesienia, użyj positionInLocalFrameOfReference(...). Możesz też positionInLocalLookaheadFrameOfReference z poziomu LookaheadScope. (Ifc5f7)
  • Nazwa onClicked została zmieniona na onClick w elemencie LinkInteractionListener (Iaa35c).
  • Zmień wartość lambda działania getScrollViewportLength zgodnie z opinią Rady API. (Ibc74a)
  • Zmieniono nazwy interfejsów API do przekazywania dostępu do obsługi pisania odręcznego rysikiem. (Ica45f, b/327271923)
  • Zmień nazwę TextInclusionStrategy.isInside na isIncluded. Ustaw typ zwracany przez funkcję Paragraph/MultiParagraph#getRangeForRect() jako niepusty. (I51f26)

Poprawki błędów

  • Dodano opcję „Zaznacz wszystko” do wszystkich menu kontekstowych tekstu w SelectionContainer. (Ib750e, b/240143283)
  • Naprawiono problem z robieniem długich zrzutów ekranu w przypadku przewijanych kontenerów (reverseScrolling=true). (I7c59c)
  • Rozwiązaliśmy problem polegający na tym, że AnchoredDraggableState currentValue zmieniał się, gdy zbliżał się do granic stanu. (Iea30b, b/333846848)

Darowizna zewnętrzna

  • Nazwa PrefetchExecutor została zmieniona na PrefetchScheduler, aby lepiej odzwierciedlała zakres jej obowiązków. (Ib9154)
  • Dodano obsługę wstępnego pobierania elementów w zagnieżdżonych LazyLists (np. LazyColumn, który renderuje zagnieżdżony LazyRows). Ta zmiana powinna zmniejszyć liczbę opuszczonych klatek podczas przewijania tych LazyLists. Domyślnie implementacja pobiera z wyprzedzeniem 2 pierwsze elementy zagnieżdżone, ale to zachowanie można kontrolować za pomocą nowych interfejsów API LazyLayoutPrefetchStrategy(nestedPrefetchItemCount)LazyListPrefetchStrategy#onNestedPrefetch. (I51952)

Wersja 1.7.0-alpha07

17 kwietnia 2024 r.

androidx.compose.foundation:foundation-*:1.7.0-alpha07 został zwolniony. Wersja 1.7.0-alpha07 zawiera te komity.

Nowe funkcje

  • Dodano obiekt TextDefaults, który zawiera metody służące do tworzenia LinkAnnotation i analizowania ciągu z tagami HTML, które mają zastosowanie do linków.MaterialTheme (I98532, b/139312671)
  • Do funkcji LazyVerticalGridLazyHorizontalGrid dodaliśmy obsługę animacji pojawiania się i znikania elementów. Wcześniej można było dodawać modyfikator Modifier.animateItemPlacement(), aby obsługiwać animacje umieszczania (przestawiania). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwie Modifier.animateItem(), który umożliwia obsługę wszystkich 3 typów animacji: pojawiania się (w postępowaniu), znikania (w postępowaniu) i przestawiania. (Ib7d12, b/330510929)
  • Dodaliśmy obsługę animacji pojawiania się i znikania elementów w wersjach LazyVerticalStaggeredGridLazyHorizontalStaggeredGrid. Wcześniej można było dodawać modyfikator Modifier.animateItemPlacement(), aby obsługiwać animacje umieszczania (przestawiania). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwie Modifier.animateItem(), który umożliwia obsługę wszystkich 3 typów animacji: pojawiania się (w postępowaniu), znikania (w postępowaniu) i przestawiania. (I69bc9, b/330511290)

Zmiany w interfejsie API

  • Dodaje ContextMenuColors i powiązany z nim LocalContextMenuTheme ProvidableCompositionLocal. Kolory menu kontekstowego w polach tekstowych i tekstach do wyboru można modyfikować, podając kompozycję lokalną. (Ifa154)
  • Oprócz normalnego stylowania, stylowania przy najechaniu kursorem i po zaznaczeniu linki tekstowe zyskały opcję stylowania w stanie wciśniętym. (I5f864, b/139312671)
  • Wprowadź ViewConfiguration.HandwritingGestureLineMargin do gestów pisma odręcznego. Obsługa gestów pisma odręcznego w przypadku BasicTextField. (Ie6e13, b/325660505)
  • Usunęliśmy DelegatableNode.scrollIntoView w wersji 1.7, ponieważ nie mieliśmy czasu na dokończenie stabilizacji reszty interfejsu API. Ta funkcja zostanie ponownie wprowadzona w wersji 1.8 (I6cf61, b/333421581, b/332900232)
  • Gdy wysyłasz zapytanie o współrzędne układu, możesz teraz użyć argumentu excludeDirectManipulationOffset, aby wykluczyć przesunięcie ustawione przez nadrzędne układy, które umieściły swoje podrzędne za pomocą argumentu Placeable.PlacementScope.withDirectManipulationPlacement. Podobnie układ, który często zmienia pozycję swoich elementów, może teraz umieszczać je za pomocą withDirectManipulationPlacement (np. przewijania, zaimplementowanego domyślnie). Dzięki temu animacje oparte na approachLayout są bardziej intuicyjne, ponieważ można teraz odróżnić, który przesunięcie ma być animowany, a który ma być stosowany bezpośrednio podczas animowania. (I60ec7)
  • Przedstaw requestScrollToItem dla LazyStaggeredGrid. W przypadku każdego pomiaru klient może teraz zrezygnować z utrzymywania indeksu na podstawie klucza, wywołując funkcję requestScrollToItem. Nie zmienia to w żaden sposób dotychczasowego zachowania, chyba że wywołana zostanie metoda requestScrollToItem. (I63983)
  • Przedstaw requestScrollToPage w Pager. W przypadku każdego pomiaru klient może teraz zrezygnować z utrzymywania indeksu na podstawie klucza, wywołując funkcję requestScrollToPage. Nie zmienia to w żaden sposób dotychczasowego zachowania, chyba że wywołana zostanie metoda requestScrollToPage. (Ic4213)
  • Wprowadzono requestScrollToItem dla LazyGrids. W przypadku każdego pomiaru klient może teraz zrezygnować z utrzymywania indeksu na podstawie klucza, wywołując funkcję requestScrollToItem. Nie zmienia to w żaden sposób dotychczasowego zachowania, chyba że wywołana zostanie metoda requestScrollToItem. (I0a7a0)
  • Środowisko wykonawcze ClickableText zostało wycofane. Aby dodać linki do tekstu, utwórz AnnotatedStringLinkAnnotation odpowiadającym Twojemu linkowi i przekaż ten AnnotatedString do komponentu Text (I34d4b, b/323346994).
  • Tag UrlAnnotation został wycofany. Zamiast niego używaj tagu LinkAnnotation.Url. Jeśli używasz motywu Material, użyj obiektu TextDefaults, aby utworzyć adnotację z zastosowanym motywem Material (I8d180, b/323346545)
  • String.parseAsHtml został przemianowany na AnnotatedString.Companion.fromHtml (I43dcd)
  • Do metody parseAsHtml dodano argumenty stylizacji (linkStyle, focusedLinkStyle, hoveredLinkStyle) i obsługę interakcji z linkami. Podczas analizowania ciągu znaków z tagami HTML (<a>) metoda tworzy obiekt LinkAnnotation.Url dla każdego takiego tagu, a także przekazuje obiekty stylizacji i słuchacz interakcji z linkiem do każdej adnotacji. (I7c977)
  • Funkcja LinkAnnotation przyjmuje teraz argumenty stylizacji oparte na stanie i argument LinkInteractionListener. Dodaj tę adnotację do AnnotatedString, aby uzyskać hiperlink. Przekazując focusedState lub hoveredState, możesz zdefiniować konfigurację wizualną linków, gdy są one w fokusie lub gdy nad nimi się unosisz. (I81ce4, b/139312671)
  • Flaga funkcji długich zrzutów ekranu została usunięta. (I28648, b/329128246)
  • LazyColumn będzie teraz prawidłowo wyświetlać przyklejone nagłówki na długich zrzutach ekranu. (I8d239, b/329296635)
  • Stabilizacja większości pozostałych eksperymentalnych interfejsów API, które zostały wprowadzone wraz z nową wersją BasicTextField. (I714e2)
  • Dodano parametr textObfuscationCharacter do BasicSecureTextField, który określa, którego znaku użyć podczas zaciemniania treści. (I0588b)
  • Źródła danych NestedScroll Drag and Fling są zastępowane przez UserInputSideEffect, aby uwzględnić rozszerzoną definicję tych źródeł, która obejmuje teraz animacje (Side Effect) oraz koło i klawiaturę myszy (UserInput). (I40579)
  • Wprowadzić LocalBringIntoViewSpec, czyli sposób przewijania zależny od platformy, który jest stosowany na poziomie modyfikatora Scrollable. (I27aa5, b/317453911)
  • Użytkownik TextFieldCharSequence został usunięty. TextFieldBuffer.originalValues jest zastępowane przez TextFieldBuffer.originalText i TextFieldBuffer.originalSelection. (I2c7d6)
  • Kolumna ImeOptions.hintLocales nie może już być pusta. Jeśli chcesz przekazać pustą listę języków, użyj wartości LocaleList.Empty. (Ic5bc4)
  • Nazwa getOffsetFractionForPage została zmieniona na getOffsetDistanceInPages. (Ia05e2)

Poprawki błędów

  • Gdy InputTransformations są złączane z next, ich KeyboardOptions są teraz prawidłowo scalane według poszczególnych opcji za pomocą nowej metody KeyboardOptions.merge. (Ie5304, b/295951492)
  • Funkcja AnchoredDraggableStatetargetValue nie uwzględnia już progów pozycji. Teraz ma on domyślny próg 50%, co oznacza, że wartość targetValue zmienia się w środku między 2 punktami kotwiczenia. (I82c2c)

Darowizna zewnętrzna

  • Zmieniono nazwy 2 interfejsów API przewijania (I56a75).

Wersja 1.7.0-alpha06

3 kwietnia 2024 r.

androidx.compose.foundation:foundation-*:1.7.0-alpha06 został zwolniony. Wersja 1.7.0-alpha06 zawiera te komisy.

Nowe funkcje

  • Dodaliśmy obsługę animacji pojawiania się i znikania elementów w wersjach LazyColumnLazyRow. Wcześniej można było dodawać modyfikator Modifier.animateItemPlacement(), aby obsługiwać animacje umieszczania (przestawiania). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwie Modifier.animateItem(), który umożliwia obsługę wszystkich 3 typów animacji: pojawiania się (w postępowaniu), znikania (w postępowaniu) i przestawiania. (I2d7f7, b/150812265)
  • Klienci usługi LazyColumn/LazyRow mogą teraz zrezygnować z utrzymywania indeksu na podstawie klucza w przyszłej wersji funkcji measure-pass, wywołując funkcję LazyListState.requestToScroll bez zawieszenia. (I98036, b/209652366)
  • Dodaliśmy metodę parseAsHtml dla ciągów znaków ze stylami: umożliwia ona konwertowanie ciągu znaków oznaczonego tagami HTML na AnnotatedString. Pamiętaj, że nie wszystkie tagi są obsługiwane. Na przykład nie możesz jeszcze wyświetlać list wypunktowanych. (I84d3d)
  • Wdrożyliśmy eksperymentalne wsparcie dla długich zrzutów ekranu w slajdach przewijania w Compose za pomocą oficjalnego interfejsu API Androida (ScrollCaptureCallback). Ta funkcja jest eksperymentalna i obecnie może nie działać prawidłowo we wszystkich przypadkach. Z tego powodu jest ona obecnie domyślnie wyłączona. Aby je włączyć, ustaw flagę ComposeFeatureFlag_LongScreenshotsEnabled na wartość prawda. Ten znacznik zostanie usunięty przed wersją beta 1.7. (I2b055, b/329296471)
  • Wprowadzić nowy interfejs API GraphicsLayer, aby zapewnić większą elastyczność w umieszczaniu i renderowaniu instancji GraphicsLayer oraz obsługiwać funkcje renderowania wewnętrznego bez konieczności koordynacji z implementacjami kompozytowymi 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.
  • Zmieniliśmy nazwę pola KeyboardOptions.autoCorrect na autoCorrectEnabled i nadaliśmy mu możliwość przyjmowania wartości null, gdzie null oznacza, że nie określono wartości. (Ia8ba0, b/295951492)
  • Nazwa outOfBoundsPageCount została zmieniona na beyondViewportPageCount. (I129c6)
  • Wartość fun ClipEntry.getMetadata() została zmieniona na val ClipEntry.clipMetadata. (I50155)
  • Użytkownik TextFieldState.valueAsFlow() został usunięty. Zalecamy używanie snapshotFlow { state.text } lub snapshotFlow { TextFieldCharSequence(state.text, state.selection) } (I7d629).
  • Uporządkowano parametry InputTransformation.transformInput. Usunięto originalValue: TextFieldCharSequence. Zamiast tego element TextFieldBuffer zawiera teraz tę samą wartość. Usunęliśmy też parametr valueWithChanges: TextFieldBuffer. TextFieldBuffer jest teraz zakresem odbiorczym funkcji. (I919cc)
  • Wariant BasicTextField(state)BasicSecureTextField używają teraz wartości KeyboardActionHandler zamiast KeyboardActions do przetwarzania działań podejmowanych przez klawiaturę programową. (I58dda)
  • interfejsy API delegowania pisma odręcznego rysikiem do obsługi pisma odręcznego rysikiem w „fałszywych” polach tekstowych; (I9c09c, b/327271923)
  • Nazwa KeyboardOptions.shouldShowKeyboardOnFocus została zmieniona na showKeyboardOnFocus. (Ib4b7a, b/295951492)
  • Parametr hintMediaTypes został usunięty z funkcji Modifier.contentReceiver. Deweloperzy zostali już zachęceni do sprawdzenia typu mediów otrzymanego TransferableContent, ponieważ może on być niezgodny z skonfigurowanym hintMediaTypes. (I82f99)
  • Zmieniono kolejność parametrów w funkcji BasicSecureTextField. Usunęliśmy parametry keyboardTypeimeAction, zastępując je pełną klasą KeyboardOptions, zachowując przy tym te same domyślne wartości odpowiednie dla BasicSecureTextField. Usunęliśmy też parametr scrollState. (Ibbfa9)
  • Typ pola TextFieldState.text zmieniono z TextFieldCharSequence na CharSequence. Dlatego dodano funkcje TextFieldState.selection: TextRangeTextFieldState.composition: TextRange?, aby odczytywać wartości bieżącego wyboru i kompozycji bezpośrednio z obiektu stanu.
  • Użytkownik TextFieldState.forEachTextValue został usunięty. (Idb2a2)
  • Usunięto funkcje ClipboardManager.getClipMetadataClipboardManager.hasClip. Aby odczytać metadane bieżącego wpisu klipu, użyj polecenia clipEntry.getMetadata(). Sprawdź też, czy wynik funkcji ClipboardManager.getClip jest równy null, aby dowiedzieć się, czy schowek zawiera bieżący klip. (I50498)
  • ClipboardManager.setClip może teraz przyjmować wartość null, aby można było wyczyścić schowek. (I7d2e9)
  • ReceiveContentListener jest konwertowany na interfejs funkcji. Usunięto też przeciążenie Modifier.receiveContent, które przyjmuje funkcję lambda, ponieważ ReceiveContentListener jest teraz interfejsem funkcji.
  • Nazwa Modifier.receiveContent została zmieniona na Modifier.contentReceiver. (I1e6af)
  • Nazwa TransferableContent.consumeEach została zmieniona na TransferableContent.consume. (I1e462)
  • Interfejs rememberTextFieldState został przekształcony w stabilny interfejs API. (I37999)

Poprawki błędów

  • Naprawiliśmy błąd, który powodował, że wariant BasicTextField(state) nie działał z klawiaturami CJK(opartymi na kompozycjach). (I54425)
  • Usunęliśmy błąd, który powodował, że Modifier.dragAndDropTarget() mogło odwoływać się do nieaktualnych danych w niektórych scenariuszach ponownego użycia Modifier.Node. (I05bb1)
  • Cofnięty został niedawny wariant umowy, w którym wywołania AnchoredDraggableState#anchoredDrag były blokowane na końcu operacji anchoredDrag. (I95715)

Wersja 1.7.0-alpha05

20 marca 2024 r.

androidx.compose.foundation:foundation-*:1.7.0-alpha05 został zwolniony. Wersja 1.7.0-alpha05 zawiera te komity.

Zmiany w interfejsie API

  • Usunięto eksperymentalną kompozycję LocalTextLinkStyle lokalną do stylizowania hiperlinków. (Iebfa7)
  • Usunięto eksperymentalne zastąpienie BasicText argumentem onLinkClicked. W przyszłości udostępnimy nowe API obsługujące hiperlinki. (I107d5)
  • Usunięto metody i właściwości związane z kodami znaków w klasach TextFieldStateTextFieldBuffer. Usunęliśmy też sufiksy inChars z pozostałych interfejsów API związanych z wybieraniem i komponowaniem. (Ief7ce)
  • Wartość AnchoredDraggable będzie się teraz aktualizować, gdy przejdzie przez punkt zakotwiczenia.currentValue Użyj settledValue, aby otrzymać poprzednią semantykę currentValue, która aktualizuje się tylko podczas osadzania w ankarze. Postęp jest teraz wyświetlany jako funkcja (wymagająca punktu początkowego i końcowego) zamiast właściwości. (Ibe6e8, b/318707189, b/298271489, b/294991954)
  • BasicTextField(state), TextFieldState, InputTransformation, OutputTransformation, TextFieldLineLimits, TextFieldDecorator zostały przeniesione do wersji stabilnej. (I9582b)
  • Wprowadziliśmy InterceptPlatformTextInput, aby ułatwić pisanie testów niskiego poziomu związanych z IME i inne przypadki użycia IME na niskim poziomie. Środowisko wykonawcze PlatformTextInputTestOverride zostało wycofane. (I862ed, b/322680547)
  • Podziel restrictedConstraints() na 2 metody: fitPrioritizingWidth()fitPrioritizingHeight() (I6d7fd)

Darowizna zewnętrzna

  • Dodano 2 nowe interfejsy API isLastScrollForward/isLastScrollBackward, które sprawdzają kierunek przewijania dla ostatniego działania przewijania. Zwracają wartość false, jeśli nie ma jeszcze działania przewijania. (I63a0e)

Wersja 1.7.0-alpha04

6 marca 2024 roku

androidx.compose.foundation:foundation-*:1.7.0-alpha04 został zwolniony. Wersja 1.7.0-alpha04 zawiera te komity.

Zmiany w interfejsie API

  • Obsługa funkcji pisma odręcznego rysikiem na urządzeniach z Androidem U lub nowszym. (I002e4)
  • Dodano hintLocales do KeyboardOptions, aby umożliwić TextFields wyświetlanie podpowiedzi w systemach IME z określonymi lokalizacjami, które umożliwiają wstępne ustawienie preferowanego języka. (Id18c2)
  • Usunięto eksperymentalne przeciążenia BasicTextField2BasicSecureTextField, które przyjmowały parametry value: StringonValueChange: () -> String. (I568b4)
  • Dodaj do funkcji InputTransformation opcjonalną funkcję applySemantics, aby wpływać na semantykę funkcji BasicTextField2, do której jest ona stosowana. (I74a2f, b/170648072)
  • W tym CL dodajemy działanie semantyczne GetScrollViewportLength, aby przesyłać informacje o komponentach przewijanych w komponencie do systemu a11y. Ten CL dotyczy również używania tej usługi w podstawowych przewijanych listach. (Ic5fa2)
  • Nazwa BasicTextField2 została zmieniona na BasicTextField. (Ie5713)
  • FocusRequester.createRefs jest teraz stabilna (I4d92c, b/261436820)
  • Wprowadziliśmy funkcję DelegatableNode.scrollIntoView(), aby umożliwić węzłom modyfikatorów bezpośrednie wysyłanie żądań scrollIntoView. (I2b3b7, b/299939840)
  • Wprowadziliśmy funkcję DelegatableNode.requireView(), aby umożliwić węzłom modyfikatorów pobieranie bieżącego Androida View bez odczytywania kompozycji lokalnie. (I40768)
  • Wprowadzamy informacje o kontekstowym układzie w ramach zakresu wiersza w ramach procesu kontekstowego i zakresu kolumny w ramach procesu kontekstowego, w tym indeks linii, pozycję oraz ograniczenia dotyczące maksymalnej szerokości i wysokości, aby zachować określony układ. Elementy, które przekraczają maksymalną szerokość lub wysokość, mogą być przenoszone na następny wiersz lub pomijane na podstawie ustawień przepełnienia. (Id13f8, b/292114798)

Poprawki błędów

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

Wersja 1.7.0-alpha03

21 lutego 2024 r.

androidx.compose.foundation:foundation-*:1.7.0-alpha03 został zwolniony. Wersja 1.7.0-alpha03 zawiera te commity.

Zmiany w interfejsie API

  • Wprowadziliśmy funkcję DelegatableNode.requireLayoutCoordinates(), która umożliwia uzyskanie aktualnej LayoutCoordinates obiektu Modifier.Node bez konieczności zastępowania onPlaced i samodzielnego przechowywania współrzędnych w obiekcie. (Ia8657)
  • Wprowadziliśmy funkcję DelegatableNode.currentLayoutCoordinates, która umożliwia uzyskanie aktualnej LayoutCoordinates obiektu Modifier.Node bez konieczności zastępowania onPlaced i samodzielnego przechowywania współrzędnych w obiekcie. (Iaebaa)
  • Optymalizacje skuteczności w DraggableAnchors używane przez AnchoredDraggable. (I89cff)
  • Interfejs BasicTextField2 i powiązane z nim interfejsy API w pakiecie androidx.compose.foundation.text2 zostaną przeniesione do pakietu androidx.compose.foundation.text. (I9f635)
  • BasicTextField2 nie akceptuje już parametru CodepointTransformation. Użyj właściwości BasicSecureTextField lub OutputTransformation. (Id34ff)
  • Dodano metodę do porównywania tylko adnotacji 2 AnnotatedStrings. (I32659)
  • Przedstawiamy ContextualFlowRow i ulepszone FlowRow/Column z usługami MaxLinesOverflow. Z przyjemnością informujemy, że udoskonaliliśmy eksperymentalne funkcje FlowRowFlowColumn, które teraz obsługują maxLines i przepełnienie. Wprowadziliśmy też funkcje ContextualFlowRowContextualFlowColumn. To uaktualnienie ma na celu zapewnienie optymalnej wydajności komponentów. ContextualFlow* doskonale nadaje się do dużej liczby elementów, korzystających z małej konfiguracji maxLines i dynamicznych przycisków „Pokaż więcej” +N, a FlowRowFlowColumn są idealne do małej liczby elementów (mniej niż 100). Ważne: aby zachować dotychczasowe działanie funkcji FlowRow lub FlowColumn, w której wszystkie elementy są łączone niezależnie od tego, czy pasują do maksymalnej wartości osi poprzecznej, podczas inicjalizacji ustaw wartość parametru overflow na FlowRowOverflow.Visible lub FlowColumnOverflow.Visible. Aby zobaczyć przykłady działania nowych funkcji, otwórz ContextualFlowRowSample i FlowRowSample. (Ib9135, b/293577082)

Poprawki błędów

  • Animacja kursora nie wysyła już żądań klatek między stanami włączonym i wyłączonym. (Ia2253)
  • KeyboardOptions Zdezaktualizowane konstruktory kopii będą teraz poprawnie kopiować wszystkie właściwości. (If12de)

Wersja 1.7.0-alpha02

7 lutego 2024 r.

androidx.compose.foundation:foundation-*:1.7.0-alpha02 został zwolniony. Wersja 1.7.0-alpha02 zawiera te commity.

Zmiany w interfejsie API

  • Funkcje HorizontalPager, VerticalPagerPagerState zostały przeniesione do wersji stabilnej. (I67660, b/316966909)
  • Dodano kompozycję lokalną LocalTextLinkStyle, która umożliwia zmianę stylu linków w Tekście w aplikacji. Jeśli używasz w aplikacji własnej motywy, musisz ustawić tę kompozycję lokalną zgodnie z tą motywą. Jeśli używasz motywu Material, kolor linku zostanie domyślnie ustawiony na kolor podstawowy Material. (I7eb10)
  • Wprowadziliśmy modyfikator receiveContent, który umożliwia deweloperom odbieranie treści multimedialnych w Jetpack Compose.
  • receiveContent integruje się z BasicTextField2, aby akceptować rozbudowane treści dostarczane przez klawiaturę programową lub przez wklejanie ze schowka. (I81b72)
  • W ramach tej zmiany zastępujemy SnapFlingBehavior na stronie pager wartością TargetedFlingBehavior, aby umożliwić inne przypadki użycia i zapewnić większą elastyczność. (I762ea)
  • W ramach tej zmiany interfejsy Snapping API stają się stabilne. Usuwamy też część kodu testowego i dodajemy więcej przykładów do Snapping. (Id8da9)
  • Wprowadzamy TargetedFlingBehavior, czyli FlingBehavior, który umożliwia rozpowszechnianie informacji o stanie bieżącej animacji i jej docelowym przesunięciu przewijania. (I6a207)

Poprawki błędów

  • BasicTextField2Podczas pisania kursor jest teraz widoczny, nawet jeśli przewiniesz go poza ekran lub zostanie on przeniesiony poza ekran z powodu wpisywania. (Ieb856, b/237190748)

Darowizna zewnętrzna

  • Dodaje eksperymentalny interfejs API do konfigurowania zachowania wstępnego pobierania listy leniwych. (I022a4)

Wersja 1.7.0-alpha01

24 stycznia 2024 r.

androidx.compose.foundation:foundation-*:1.7.0-alpha01 został zwolniony. Wersja 1.7.0-alpha01 zawiera te commity.

Nowe funkcje

  • Dodano nowy Indication API: IndicationNodeFactory. Dzięki temu implementacje Indication będą wydajniejsze niż w przypadku poprzedniego (obecnie wycofanego) interfejsu API rememberUpdatedInstance. Informacje o migracji znajdziesz na stronie developer.android.com.
  • Funkcja clickable / combinedClickable / selectable / toggleable przyjmuje teraz parametr MutableInteractionSource, który może być pusty. Jeśli wartość jest null, a podana wartość Indication jest typu IndicationNodeFactory, obiekt Indication może być tworzony w sposób leniwy tylko wtedy, gdy jest to konieczne, co poprawia wydajność. Jeśli nie używasz funkcji hoisting i nie korzystasz z elementu MutableInteractionSource, zalecamy przekazanie wartości null.

Zmiany w interfejsie API

  • Wprowadzanie DecayAnimation w AnchoredDraggable. Ta zmiana dodaje parametr decayAnimationSpec do AnchoredDraggable, co umożliwia korzystanie z animacji zanikania podczas osadzania w jednym z punktów kotwiczenia. Zmiana obejmuje też zmianę nazwy istniejącej specyfikacji animationSpec na snapAnimationSpec, aby ułatwić zrozumienie zastosowania każdej specyfikacji.
  • BasicTextField2 jest dostępna do użytku eksperymentalnego. Powinna ona mieć mniej więcej takie same funkcje co BasicTextField, a jej działanie powinno być gotowe do wdrożenia. Interfejs API jest jednak nadal w fazie eksperymentalnej. Zanim zostanie ustabilizowana, zmienimy jej nazwę na BasicTextField i przeniesiemy do tego samego pakietu.
  • Wprowadziliśmy pierwszą wersję roboczą interfejsu API OutputTransformation dla usługi BasicTextField2. Ten interfejs API zastępuje większość przypadków użycia interfejsu VisualTransformation w starym interfejsie BasicTextField. Nie jest on jeszcze kompletny, więc niektóre rzeczy mogą nie działać prawidłowo. Będziemy jednak wdzięczni za wszelkie opinie na temat użyteczności interfejsu API w Twoich przypadkach użycia. (aosp/2708848)
  • Wprowadziliśmy LinkAnnotation, który umożliwia dodawanie linków i elementów klikalnych do tekstu. Funkcja linków nie jest jeszcze gotowa, a wkrótce wprowadzimy kolejne zmiany w interfejsie API.
  • Wprowadziliśmy modyfikator receiveContent, który umożliwia deweloperom odbieranie treści multimedialnych w Jetpack Compose.
  • receiveContent integruje się z BasicTextField2, aby akceptować treści multimedialne udostępniane przez klawiaturę programową lub przez wklejanie ze schowka.
  • KeyboardOptions.shouldShowKeyboardOnFocus umożliwia wyłączenie domyślnego zachowania BasicTextField polegającego na żądaniu klawiatury programowej po zaznaczeniu.
  • Funkcje TextInputServiceLocalTextInputService zostały wycofane. Zamiast tego użyj interfejsu PlatformTextInputModifierNode, aby zintegrować się bezpośrednio z interfejsami IME platformy. (aosp/2862698)
  • Środowisko wykonawcze Indication#rememberUpdatedInstance zostało wycofane. Ma ona duży, nieunikniony wpływ na wydajność i uniemożliwia inne optymalizacje. Zamiast tego użyj nowego interfejsu API IndicationNodeFactory.

Poprawki błędów

  • Funkcja BasicTextField będzie teraz sprawdzać przed weryfikacją małą grupę mapowań przesunięć, gdy zostanie przekazana funkcja VisualTransformation. Pomaga to w wychwyceniu typowych błędów kodowania, które prowadzą do nieodwracalnych wyjątków w późniejszych pomiarach lub kolejnych przebiegach funkcji rysującej. Wyrzucanie wyjątku podczas kompilacji zwiększa prawdopodobieństwo, że deweloperzy zobaczą te błędy podczas tworzenia aplikacji, co pomoże im uniknąć awarii w wersji produkcyjnej. (I0fd42)
  • VisualTransformation nie wyrzuci wyjątku, jeśli zwrócisz nieprawidłowy indeks dla nieprawidłowego indeksu (b/316401857 ).

Wersja 1.6

Wersja 1.6.8

12 czerwca 2024 r.

androidx.compose.foundation:foundation-*:1.6.8 został zwolniony. Wersja 1.6.8 zawiera te komisy.

Wersja 1.6.7

1 maja 2024 r.

androidx.compose.foundation:foundation-*:1.6.7 został zwolniony. Wersja 1.6.7 zawiera te komity.

Wersja 1.6.6

17 kwietnia 2024 r.

androidx.compose.foundation:foundation-*:1.6.6 został zwolniony. Wersja 1.6.6 zawiera te komity.

Poprawki błędów

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

Wersja 1.6.5

3 kwietnia 2024 r.

androidx.compose.foundation:foundation-*:1.6.5 został zwolniony. Wersja 1.6.5 zawiera te komity.

Poprawki błędów

  • Dodaje dzienniki debugowania do błędów trudnych do odtworzenia w przypadku wiersza lub kolumny (b/300280216 i b/297974033).

Wersja 1.6.4

20 marca 2024 r.

androidx.compose.foundation:foundation-*:1.6.4 został zwolniony. Wersja 1.6.4 zawiera te komitowane zmiany.

Poprawki błędów

  • Długie naciśnięcie i przeciągnięcie, które powoduje wyjście poza granice układu tekstu w pierwszym ujęciu przeciągania, nie powoduje już awarii. (Icdf90, b/325307463)

Wersja 1.6.3

6 marca 2024 roku

androidx.compose.foundation:foundation-*:1.6.3 został zwolniony. Wersja 1.6.3 zawiera te komitowane zmiany.

Wersja 1.6.2

21 lutego 2024 r.

androidx.compose.foundation:foundation-*:1.6.2 został zwolniony. Wersja 1.6.2 zawiera te commity.

Poprawki błędów

  • Naprawić AnimateContentSize, który nie resetuje się prawidłowo. (I07051)
  • Rozwiązanie problemu polegającego na tym, że w niektórych okolicznościach intrinsicHeight tekstu było nadmiernie buforowane. (3cd398, b/217910352)

Wersja 1.6.1

7 lutego 2024 r.

androidx.compose.foundation:foundation-*:1.6.1 został zwolniony. Wersja 1.6.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Poprawiono pomiar siatki o zmiennej długości, gdy przewijano ją poza limit. (bffc39)
  • Dodaj sprawdzanie układu o dużych wymiarach. (e74af5)
  • Poprawiono umieszczanie elementów o rozmiarze 0 na początku siatki rozłożonej. (785f94)
  • Wywołanie funkcji onRelease w tej samej kolejności co funkcja onForgotten. (31ce3b)

Wersja 1.6.0

24 stycznia 2024 r.

androidx.compose.foundation:foundation-*:1.6.0 został zwolniony. Wersja 1.6.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.5.0

  • Nowy modyfikator Modifier.anchoredDraggable, który umożliwia przeciąganie i animowanie między zdefiniowanymi wstępnie punktami kotwiczenia. Ten modyfikator ma zastąpić Modifier.swipeable. Więcej informacji o tym, jak korzystać z tej usługi i jak przeprowadzić migrację z Modifier.swipeable, znajdziesz w przewodniku po migracji.
  • Dodano funkcję przeciągania i upuszczania między aplikacjami i komponentami. Aby rozpocząć, skorzystaj z interfejsów DragAndDropTarget, Modifier.dragAndDropSource i innych interfejsów API.
  • Modifier.draggable2D to nowy modyfikator, który umożliwia łatwe przeciąganie w 2D. Zobacz przykład.
  • Dodano komponenty AndroidExternalSurface i AndroidEmbeddedExternalSurface, aby ułatwić dodawanie komponentów opartych na powierzchni w edytorze.
  • Różne zmiany i ulepszenia interfejsu API w wersjach PagersnapFlingBehaviour
  • Interfejsy API dotyczące różnych funkcji fokusowania, tekstu i wstawek zostały przeniesione do stabilnych interfejsów API.

Wersja 1.6.0-rc01

10 stycznia 2024 r.

androidx.compose.foundation:foundation-*:1.6.0-rc01 został zwolniony. Wersja 1.6.0-rc01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

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

Wersja 1.6.0-beta03

13 grudnia 2023 r.

androidx.compose.foundation:foundation-*:1.6.0-beta03 został zwolniony. Wersja 1.6.0-beta03 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd powodujący awarię, który dotyczył bardzo dużych tekstów mierzonych z nieograniczonymi ograniczeniami. (I1a7df, b/312294386)
  • PlatformImeOptions jest teraz konkretną klasą, a nie interfejsem. (If40a4)

Wersja 1.6.0-beta02

29 listopada 2023 r.

androidx.compose.foundation:foundation-*:1.6.0-beta02 został zwolniony. Wersja 1.6.0-beta02 zawiera te commity.

Poprawki błędów

  • Rozwiązanie problemu polegający na tym, że canScroll nie jest aktualizowany po przewinięciu tylko do ponownego układu. (I60a86)
  • Naprawiono problemy z funkcjami Modifier.animateItemPlacement()LookaheadScope po niewielkim przewinięciu. (I3a2b7)

Wersja 1.6.0-beta01

15 listopada 2023 r.

androidx.compose.foundation:foundation-*:1.6.0-beta01 został zwolniony. Wersja 1.6.0-beta01 zawiera te commity.

Zmiany w interfejsie API

  • Modyfikator DragAndDropTarget przyjmuje teraz parametr DragAndDropTarget w sposób jawny i ma funkcję lambda, która umożliwia włączenie sesji przeciągania i upuszczania. Teraz w przypadku DragAndDropModifierNode istnieją 2 funkcje fabryczne. Jeden do odbierania transferów i jeden do przesyłania danych (I69481)
  • Zaktualizowano maximumFlingVelocity, aby reprezentować je jako typ danych Float. Zaktualizowano dokumentację, aby była bardziej przejrzysta w sprawie maximumFlingVelocity. (I8adc7)
  • Urządzenie onDragAndDropStart w fabryce DragAndDropModifierNode nosi teraz nazwę acceptDragAndDropTransfer.

    Do dragAndDropTarget Modifier został dodany element acceptsDragAndDropTransfer, aby zaakceptować go podczas sesji przeciągania i upuszczania. Ta funkcja lambda zwraca DragAndDropTarget, jeśli chcesz przeprowadzić sesję przeciągania i upuszczania. Inne funkcje lambda do przetwarzania zdarzeń związanych z przeciąganiem zostały zastąpione przez tę funkcję.

    dodano funkcję fabryczną DragAndDropTarget, która przyjmuje dane z sesji przeciągania i upuszczania (Iebf3a);

  • Wyświetlanie startDragImmediatelyAnchoredDraggable umożliwia kontrolowanie wykrywania gestów przeciągania podczas używania. Jest to przydatne, gdy widżet jest animowany do docelowej kotwicy. Zobacz przykład. (Ie6d13, b/285139987)

  • Interfejsy API etykietki podstawy są teraz dostępne w wersji @ExperimentalFoundationApi (I30b0b).

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

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

    Funkcja fabryczna onDragAndDropEvent w przypadku obiektu DragAndDropModifierNode została przemianowana na onDragAndDropStart, aby lepiej wskazywać, że podany obiekt DragAndDropTarget jest prawidłowy tylko w przypadku danej sesji przeciągania i upuszczania.

    Opcja DragAndDropEventType została usunięta (I645b1).

  • Nazwa PlatformTextInputModifierNode.runTextInputSession została zmieniona na establishTextInputSession. (I03cd0)

  • Zastąp OriginalText wartością TextSubstitution. (Ifa5a8)

  • Nazwa PlatformTextInputModifierNode.textInputSession została zmieniona na runTextInputSession. (Ie9c6b)

  • Elementy podrzędne SubcomposeLayout (i oparte na nich układy, np. LazyColumn), które są zachowane, aby można było ich używać w przyszłości, są uważane za dezaktywowane. Wprowadziliśmy nowy interfejs API testów assertIsDeactivated(), który umożliwia testowanie takich węzłów. Pozostałe interfejsy API testowe domyślnie odfiltrowują zdezaktywowane węzły. (I2ef84, b/187188981)

  • Parametr clippingEnabled w komponencie Modifier.magnifier został przemianowany na clip.

  • Parametr magnifierCenter typu Modifier.magnifier staje się dopuszczalnie pusty, zachowując to samo zachowanie domyślne. (I6aa66)

  • Interfejsy API Material SwipeToReveal (do tworzenia kart i elementów) korzystają teraz z interfejsu API opartego na slotach (zgodnie z zaleceniem Compose) zamiast z instancji opartych na klasie danych. Jest to zmiana powodująca przerwanie działania. Aby dowiedzieć się, jak korzystać z nowego interfejsu API, zapoznaj się z demonstracją i przykładowym kodem. (Ia8943)

Poprawki błędów

  • Zaimplementuj metody equals i hashcode dla klasy PageSize.Fixed. (Ie3ede, b/300134276)
  • Naprawiliśmy błąd, który powodował, że układ BasicText nie kurczył się, gdy zmieniał się minWidth, a wartość minWidth była mniejsza niż początkowe ograniczenia pomiaru maxWidth (Idb19c).
  • Dodano obsługę renderowania gradientu Sweep w ArcLine. (I4d5bb)
  • Rozwiązanie problemu z zgodnością binarną w związku ze zmianą w oknie (Iee695)
  • Usuń warstwę główną materiału w przypadku elementu lub przycisku Material3, ponieważ mikrotesty pokazują lepszą wydajność bez niej. (I55555)

Wersja 1.6.0-alpha08

18 października 2023 r.

androidx.compose.foundation:foundation-*:1.6.0-alpha08 został zwolniony. Wersja 1.6.0-alpha08 zawiera te commity.

Nowe funkcje

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

Zmiany w interfejsie API

  • W funkcji Modifier.dragAndDrawSource nazwa funkcji lambda onDrawDragShadow została zmieniona na drawDragDecoration, a w funkcji DragAndDropInfo parametr size na dragDecorationSize. (Id0e30, b/303904810)
  • Parametr „decorationBox” funkcji BasicTextField2 został przemianowany na „decorator”. Jego typ został też zmieniony na odpowiedni interfejs zabawy TextFieldDecorator. (I23c1c)

Poprawki błędów

  • Ulepszona dokumentacja dotycząca BasicTextField (wymagania dotyczące onValueChange). (I90fc9, b/160257648)

Wersja 1.6.0-alpha07

4 października 2023 roku

androidx.compose.foundation:foundation-*:1.6.0-alpha07 został zwolniony. Wersja 1.6.0-alpha07 zawiera te commity.

Zmiany w interfejsie API

  • Wprowadziliśmy PlatformTextInputMethodTestOverride do pisania testów dla niestandardowych edytorów tekstowych. (Id159b)
  • Nazwa GraphicsSurface została zmieniona na AndroidExternalSurface (I11680)
  • Dodano tymczasową flagę DisableNonLinearFontScalingInCompose, aby wyłączyć nieliniowe skalowanie czcionki. Jeśli potrzebujesz czasu na uporządkowanie testów, ustaw w nich wartość DisableNonLinearFontScalingInCompose = true. Ten parametr zostanie usunięty w wersji Compose 1.6.0-beta01. (Ic9486)
  • Dodano kolekcje ColorListColorSet, które unikają przypisywania. (I744bd)
  • Ta zmiana usuwa shortSnapVelocityThreshold, która została przekształcona w szczegóły implementacji w ramach implementacji SnapLayoutInfoProvider. (I65f6d)
  • Dodaje modyfikator dragAndDropSource do inicjowania 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ę pozycjonowania. W metodzie pozycji w pliku SnapPositionInLayout dodaj wypełnienie treści. (Id7938, b/300116110)
  • Dodaliśmy do UndoState opcję UndoState, która umożliwia cofanie i ponawianie wprowadzonych przez użytkownika zmian.TextFieldState (Icc024)

Poprawki błędów

  • Rozwiązanie problemu polegającego na tym, że basicMarquee nie animuje się po zmianie prędkości. (Id2e77, b/297974036)

Wersja 1.6.0-alpha06

20 września 2023 r.

androidx.compose.foundation:foundation-*:1.6.0-alpha06 został zwolniony. Wersja 1.6.0-alpha06 zawiera te commity.

Nowe funkcje

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

Zmiany w interfejsie API

  • Wprowadziliśmy elementy updateCurrentPage i updateTargetPage w ScrollScope. Są to ostatnie elementy potrzebne do umożliwienia dostosowywania animacji przewijania w PagerState.scroll. (I9cad5, b/267744105, b/243786897)
  • Usuń gęstość z SnapFlingBehavior. Wszystkie implementacje SnapLayoutInfoProvider mają już sposób dostępu do gęstości, więc zakres odbiornika można usunąć, co spowoduje uproszczenie implementacji zarówno SnapFlingBehavior, jak i SnapLayoutInfoProviders. (I153c3)
  • Więcej modyfikatorów oznaczono jako stabilne. (I56af1, b/298046462)
  • Element SnapStepSize został usunięty z listy SnapLayoutInfoProvider. Obliczenia należy wykonać, korzystając z informacji o układzie i podając je za pomocą przesunięcia lub przesunięcia osi. (If320c)

Zmiany w zachowaniu

  • Teraz w komponowaniu można stosować nieliniowe skalowanie czcionek, aby zwiększyć czytelność i dostępność. Jeśli w ustawieniach systemowych rozmiar czcionki > 100%, mały tekst będzie normalnie powiększany, ale i tak już duży tekst będzie powiększany tylko trochę. Wysokość wiersza zdefiniowana w SP będzie automatycznie dostosowywana, aby pozostać proporcjonalna do wysokości odpowiadającej 100% skali. Więcej informacji znajdziesz w artykule Sprawdzone metody dotyczące skalowania czcionek (I11518).

Poprawki błędów

Wersja 1.6.0-alpha05

6 września 2023 r.

androidx.compose.foundation:foundation-*:1.6.0-alpha05 został zwolniony. Wersja 1.6.0-alpha05 zawiera te commity.

Zmiany w interfejsie API

  • Dodaj przeciążenia funkcji BasicSecureTextField, które przyjmują niezmienną wartość i funkcję wywołania zwrotnego, aby zmienić tę wartość, tak jak w obecnym interfejsie API BasicTextField. (Ia4882)
  • Dodaj Modifier.preferKeepClear(), aby oznaczyć jako kompozyt, ponieważ wolisz unikać okien pływających w interfejsie API 33 lub nowszym. (Ib51d5, b/297260115)
  • Prędkości w komponentach Widok, takich jak ScrollViewRecyclerView, są ograniczone do ViewConfiguration.ScaledMaximumFlingVelocity. Teraz aplikacja Redagowanie zawiera własną wersję funkcji maximumFlingVelocity, która jest teraz stosowana w Draggable. (Ibf974)
  • Usunięto przestarzałe przeciążenia PagerPagerState. (Iea07e)
  • Dodano BasicTooltipBox do compose.foundation oraz zaktualizowano PlainTooltipBoxRichTooltipBox, aby używać TooltipBox z nowymi komponentami PlainTooltipRichTooltip. (I79e1d)

Wersja 1.6.0-alpha04

23 sierpnia 2023 r.

androidx.compose.foundation:foundation-*:1.6.0-alpha04 został zwolniony. Wersja 1.6.0-alpha04 zawiera te commity.

Zmiany w interfejsie API

  • Dodaj interfejs ReusableComposition do zarządzania cyklem życia i ponownego użycia podkompozycji. (I812d1, b/252846775)
  • Interfejs Modifier.focusGroup został przeniesiony do stabilnych interfejsów API. (I7ffa3)
  • Dodaj przeciążenia funkcji BasicTextField2, które przyjmują niezmienną wartość i funkcję wywołania zwrotnego, aby zmienić tę wartość, tak jak w obecnym interfejsie API BasicTextField. (I3f2b8)
  • Interfejs GridItemSpan::currentLineSpan jest teraz stabilnym interfejsem API. (Icc29c)
  • Canvas, który akceptuje contentDescription, jest teraz stabilnym interfejsem API. (Ib3d29)
  • Wprowadziliśmy viewportSizeScrollState, aby umożliwić poznanie viewPort rozmiaru komponentu, który używa ScrollState po przeprowadzeniu pomiaru. (I8b85a, b/283102682)
  • Rozwiązaliśmy problem, który powodował, że w przyspieszonym pobieraniu w elementach Pager nie było zachowane zachowanie widoków. (I93352, b/289088847)
  • Modifier.consumeWindowInsets(PaddingValues) jest teraz stabilny.
    • Interfejs API Deprecated Modifier.consumedWindowInsets został usunięty. Zamiast tego użyj Modifier.consumeWindowInsets. (Id72bb)

Wersja 1.6.0-alpha03

9 sierpnia 2023 r.

androidx.compose.foundation:foundation-*:1.6.0-alpha03 został zwolniony. Wersja 1.6.0-alpha03 zawiera te commity.

Zmiany w interfejsie API

  • Dodano przeciążenie funkcji LazyLayout, która przyjmuje lambda z LazyLayoutItemProvider, a nie zwykły obiekt, jak to było wcześniej. Poprzednia wersja funkcji overload została wycofana. (I42a5a)
  • Dodano obsługę konfiguracji privateImeOptions (Idb772).

Poprawki błędów

  • Rozwiązano problem z polami tekstowymi, które wyświetlają klawiaturę i są możliwe do edycji, gdy wartość readOnly to prawda. Naprawiliśmy też błąd polegający na tym, że klawiatura nie wyświetlała się, gdy wartość readOnly zmieniła się z prawdy na fałsz podczas skupienia. (I34a19, b/246909589)

Wersja 1.6.0-alpha02

26 lipca 2023 r.

androidx.compose.foundation:foundation-*:1.6.0-alpha02 został zwolniony. Wersja 1.6.0-alpha02 zawiera te commity.

Zmiany w interfejsie API

  • Wprowadzono PagerLayoutInfo z informacjami zebranymi po przeprowadzeniu pomiaru w Pager. Wprowadziliśmy też PageInfo, czyli informacje o pojedynczej zmierzonej stronie w Pager. (Iad003, b/283098900)
  • Dodatkowe adnotacje określające dozwolone dane wejściowe dla komponentów (I51109)
  • Dodano SemanticsNodeInteraction.requestFocus jako wygodniejszy i łatwiejszy do znalezienia sposób na prośbę o skupienie się na testach. (Ie8722)
  • całkowicie przeprojektowany interfejs API PlatformTextInput*, (I6c93a, b/274661182, b/267235947, b/277380808)
  • Usługi SoftwareKeyboardControllerLocalSoftwareKeyboardController nie są już eksperymentalne. LocalSoftwareKeyboardController jest teraz prawidłowym CompositionLocal. (I4c364)
  • Modifier.transformable zawiera teraz parametr canPan, który określa kierunek panoramowania, aby umożliwić lub zablokować tę funkcję. (I692aa, b/266829800)
  • Aktualizuje modyfikator consumeWindowInsets, aby rozszerzyć superklasę AbstractComposeView (Iacd74, b/269479941)

Wersja 1.6.0-alpha01

21 czerwca 2023 r.

androidx.compose.foundation:foundation-*:1.6.0-alpha01 został zwolniony. Wersja 1.6.0-alpha01 zawiera te commity.

Nowe funkcje

  • Wprowadziliśmy nowy interfejs API AnchoredDraggable w Foundation. Możesz go używać do tworzenia komponentów, które można przeciągać między oddzielnymi stanami, np. modalnymi kartami. Ten interfejs API zastępuje interfejs API Swipeable w Material. (I4a2ed)

Zmiany w interfejsie API

  • Pomoc InputConnection#requestCursorUpdates (I0c69b)
  • Wprowadziliśmy scrollAnimationSpec, aby umożliwić tworzenie niestandardowych specyfikacji animacji. Ustawienie BringIntoViewCalculator zostało zmienione na BringIntoViewScroller. (Idb741)
  • Dodaj typ ResourceResolutionException, aby opakować obiekty rzucane podczas próby załadowania zasobów bitmapy z opisem ścieżki zasobu, której nie udało się załadować. (I19f44, b/230166331, b/278424788)
  • Dodano właściwości i działania semantyczne, aby umożliwić tłumaczenie tekstu. (I4a6bc)
  • Wprowadziliśmy interfejs API BringIntoViewCalculator, który można wykorzystać do dostosowywania sposobu, w jaki komponenty takie jak Scrollable odpowiadają na żądania bringIntoView. Zmieniono przeciążenie scrollable, aby opcjonalnie akceptowało instancję BringIntoViewCalculator. (Iaf5af)

Poprawki błędów

  • Dodano mechanizm sprawdzania błędów, który ostrzega, gdy w kompozycji tworzysz element MutableInteractionSource bez zapamiętania go. Jest to podobne do mechanizmów sprawdzania błędów dotyczących tworzenia zmiennego stanu / Animatable. (I5daae)
  • Dodano obsługę zaznaczania za pomocą myszy. Zaznaczenie dotykowe będzie się rozszerzać o wyraz, a zmniejszać o znak. (Ic0c6c, b/180639271)
  • Dodano interfejs FocusTargetModifierNode, który umożliwia tworzenie niestandardowych FocusTarget. (I9790e)

Wersja 1.5

Wersja 1.5.4

18 października 2023 r.

androidx.compose.foundation:foundation-*:1.5.4 został zwolniony. Wersja 1.5.4 zawiera te zatwierdzenia.

Wersja 1.5.3

4 października 2023 roku

androidx.compose.foundation:foundation-*:1.5.3 został zwolniony. Ta wersja nie zawiera żadnych zmian.

Wersja 1.5.2

27 września 2023 r.

androidx.compose.foundation:foundation-*:1.5.2 został zwolniony. Wersja 1.5.2 zawiera te zatwierdzenia.

Poprawki błędów

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

Wersja 1.5.1

6 września 2023 r.

androidx.compose.foundation:foundation-*:1.5.1 został zwolniony. Wersja 1.5.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązano problem z polami tekstowymi, które wyświetlają klawiaturę i są możliwe do edycji, gdy wartość readOnly to prawda. Naprawiliśmy też błąd polegający na tym, że klawiatura nie wyświetlała się, gdy wartość readOnly zmieniła się z prawdy na fałsz podczas skupienia. (I34a19, b/246909589)

Wersja 1.5.0

9 sierpnia 2023 r.

androidx.compose.foundation:foundation-*:1.5.0 został zwolniony. Wersja 1.5.0 zawiera te commity.

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 zmniejszyło obciążenie podczas początkowej kompozycji.
  • Ulepszenia stabilności pagerów. Naprawiono wiele błędów.
  • Parametry pageCount są teraz dostępne w PagerState, a nie w samej stronie pager

Wersja 1.5.0-rc01

26 lipca 2023 r.

androidx.compose.foundation:foundation-*:1.5.0-rc01 został zwolniony. Wersja 1.5.0-rc01 zawiera te commity.

Poprawki błędów

  • Dostępna jest opcjonalna inspekcja, która zaleca przeniesienie wywołań mutableStateOf() do odpowiednich typów specjalistycznych dla prymitywów. Identyfikator lint to AutoboxingStateCreation. Wcześniej ta kontrola była domyślnie włączona we wszystkich projektach. Aby wyświetlić to ostrzeżenie w edytorze Android Studio i w wyjściach lint projektu, zmień jego poziom ważności z informacyjnego na ostrzeżenie (lub wyższy), deklarując warning "AutoboxingStateCreation" w konfiguracji build.gradle lub build.gradle.kts w module, jak pokazano (I34f7e):

        android {
            lint {
                warning "AutoboxingStateCreation"
            }
            ...
        }
    

Wersja 1.5.0-beta03

28 czerwca 2023 r.

androidx.compose.foundation:foundation-*:1.5.0-beta03 został zwolniony. Wersja 1.5.0-beta03 zawiera te commity.

Wersja 1.5.0-beta02

7 czerwca 2023 r.

androidx.compose.foundation:foundation-*:1.5.0-beta02 został zwolniony. Wersja 1.5.0-beta02 zawiera te commity.

Wersja 1.5.0-beta01

24 maja 2023 r.

androidx.compose.foundation:foundation-*:1.5.0-beta01 został zwolniony. Wersja 1.5.0-beta01 zawiera te commity.

Zmiany w interfejsie API

  • W celu udostępniania tętna i liczby kroków na dzień użyj elementu PlatformDataProvider. Interfejs SensorGateway został usunięty z publicznego interfejsu API. (I55b84)

Poprawki błędów

  • Zmniejsz alokacje podczas pomiarów nieaktywnych list/kratek itp. (Iaf9e2)
  • Zmniejszone przydziały podczas stosowania zrzutów (I65c09)
  • Usunięto przydziały z animacji sprężynowych (Ie9431).
  • Usunięto przydział z kampanii TextLayout (I0fd11)
  • Usunięto wiele alokacji w śledzeniu szybkości kursora (I26bae).

Wersja 1.5.0-alpha04

10 maja 2023 r.

androidx.compose.foundation:foundation:1.5.0-alpha04androidx.compose.foundation:foundation-layout:1.5.0-alpha04 są dostępne. Wersja 1.5.0-alpha04 zawiera te commity.

Zmiany w interfejsie API

  • Dodano zoptymalizowany TextStyle.merge(...) z pełną listą parametrów. (Iad234, b/246961787)
  • Przedstaw SnapLayoutInfoProvider, którego można używać z LazyGridState. (I92134, b/269237141, b/260914964)
  • Do zakresu elementów siatek opóźnionych z przesunięciem dodano opcję Modifier.animateItemPlacement(). Możesz go użyć w przypadku elementów, aby uzyskać animacje zmiany pozycji lub przetasowania automatyzacji. (I4b62d, b/257034719)
  • Zmień wersję GridCells.FixedSize na stabilną. FixedSize definiuje LazyGrid, w którym każda komórka ma dokładny rozmiar na osi krzyżowej, a pozostała przestrzeń jest rozmieszczana zgodnie z układem na osi krzyżowej. (I8542f)
  • Wprowadziliśmy zakres odbiornika PagerScope dla Pagera i funkcję pomocniczą do obliczania danego przesunięcia strony. (If2577)
  • Wprowadzanie snapPositionalThreshold podczas tworzenia zachowania snap fling. Ten parametr służy do określania progu pozycji, który powoduje krótkie przycinanie w Pagerze. (If8f7f)
  • Zawartość komórki SnapLayoutInfoProvider.calculateSnappingOffsetBounds została zastąpiona komórką calculateSnappingOffset. W tej nowej metodzie po prostu żądamy następnego przesunięcia, do którego ma nastąpić przyciąganie. Obliczanie granic powinno być wykonywane na poziomie implementacji, ponieważ może się różnić w zależności od tego, jak ma przebiegać dopasowanie. (I923a4)
  • Interfejsy API LazyStaggeredGrid zostały przeniesione do wersji stabilnej. (I633a5)
  • Usuń pageCount z konta Horizontal/VerticalPager. Należy je podać podczas tworzenia stanu. Ustawienia PagerStaterememberPagerState zostały zaktualizowane, aby zaakceptować pageCount. (Ieb52d, b/266965072)
  • Usuń pageCount z konta Horizontal/VerticalPager. Należy je podać podczas tworzenia stanu. Ustawienia PagerStaterememberPagerState zostały zaktualizowane, aby zaakceptować pageCount. (Ifa3cb, b/266965072)
  • Przedstaw shortSnapVelocityThreshold w miejscu podziału na strony SnapFlingBehavior. (I7379e, b/275579012)
  • Dodaje FlowRowScope i FlowColumnScope. (I54fe2)

Poprawki błędów

  • wywołania do uzyskiwania semantyki w przypadku Text, gdy ograniczenia mają minWidthminHeight, nie powodują już awarii. (Ibd072)
  • Rozwiązanie problemu polegającego na tym, że klawiatura nie wyświetlała się w przypadku pól tekstowych w oknach dialogowych, które nie zostały utworzone przez komponent Dialog. (I82551, b/262140644)

Wersja 1.5.0-alpha03

19 kwietnia 2023 r.

androidx.compose.foundation:foundation:1.5.0-alpha03androidx.compose.foundation:foundation-layout:1.5.0-alpha03 są dostępne. Wersja 1.5.0-alpha03 zawiera te commity.

Ta wersja udostępnia nowy moduł renderowania tekstu w edytorze. Nowy pakiet jest zoptymalizowany pod kątem skuteczności, więc nie powinieneś zauważyć żadnych zmian.

Jeśli zauważysz zmiany w wyrenderowanym tekście, możesz przeprowadzić debugowanie, ustawiając wartość NewTextRendering1_5 = false, aby potwierdzić różnicę w zachowaniu. To ustawienie spowoduje wymuszenie ponownego skompilowania. Zgłoszenia wszelkich różnic w zachowaniu traktuj jako błędy.

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

Zmiany w interfejsie API

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

Wersja 1.5.0-alpha02

5 kwietnia 2023 r.

androidx.compose.foundation:foundation:1.5.0-alpha02androidx.compose.foundation:foundation-layout:1.5.0-alpha02 są dostępne. Wersja 1.5.0-alpha02 zawiera te commity.

Zmiany w interfejsie API

  • Dodano obsługę komórek o stałym rozmiarze w elementach LazyGrid oraz ich układanie za pomocą ułożenia poprzecznego. (I83ed9, b/235121277, b/267942510)
  • Dodano obsługę pasów o stałym rozmiarze w LazyStaggeredGrid i ich układania za pomocą układu osi poprzecznej. (I7d519)
  • UrlAnnotationAnnotatedString można teraz otwierać za pomocą usług ułatwień dostępu, takich jak TalkBack. (If4d82, b/253292081)
  • Dodano działanie semantyczne InsertTextAtCursor dla pól tekstowych. (I11ed5)
  • Działania testowe związane z tekstem (np. performTextInput) będą teraz bezpośrednio prosić o skupienie uwagi, korzystając z działania semantycznego, zamiast klikania pola. (I6ed05)
  • Dodano obsługę rozmieszczania elementów na osi poziomej za pomocą atrybutu verticalArrangement w elementach FlowRowhorizontalArrangement w elementach FlowColumn. Usunęliśmy też verticalAlignmenthorizontalAlignment na poziomie nadrzędnym w elementach FlowRow/FlowColumn. Deweloperzy mogą zamiast tego użyć elementu Modifier.align. Pozwala to uniknąć pomyłek między 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 są dostępne. Wersja 1.5.0-alpha01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

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

Poprawki błędów

  • Zaktualizowano wewnętrzne elementy usługi Modifier.hoverable. 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 z nową wersją).

Wersja 1.4.2

19 kwietnia 2023 r.

androidx.compose.foundation:foundation:1.4.2androidx.compose.foundation:foundation-layout:1.4.2 są dostępne. Wersja 1.4.2 zawiera te zatwierdzenia.

Wersja 1.4.1

5 kwietnia 2023 r.

androidx.compose.foundation:foundation:1.4.1androidx.compose.foundation:foundation-layout:1.4.1 są dostępne. Wersja 1.4.1 zawiera te zatwierdzenia.

Wersja 1.4.0

22 marca 2023 r.

androidx.compose.foundation:foundation:1.4.0androidx.compose.foundation:foundation-layout:1.4.0 są dostępne. Wersja 1.4.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.3.0

  • Dodano obsługę emotikonów w elementach TextTextField, a także w elementach na niższym poziomie, takich jak akapit. Jest ona domyślnie włączona, gdy skonfigurujesz emojicompat.
  • EmojiCompat można skonfigurować w przypadku określonego tekstu za pomocą PlatformParagraphStyle.
  • Dodano obsługę pełnego zakresu linii w LazyStaggeredGrid(I28252)
  • Dodanie eksperymentalnego onHover do ClickableText (I6938f)
  • Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji runComposeUiTest i funkcji create*ComposeRule, które przyjmują parametry CoroutineContext. Kontekst zostanie użyty do testowej kompozycji oraz wszystkich wywołań funkcji LaunchedEffectrememberCoroutineScope() w jej obrębie. (I10614, b/265177763)
  • FlowRowFlowColumn są teraz dostępne jako @ExperimentalFoundationApi, co umożliwia bardziej elastyczny układ komponentów na podstawie wierszy i kolumn. Komponenty będą przenoszone do nowej linii, jeśli na osi głównej zabraknie miejsca. (I3a7b2)
  • Modifier.basicMarquee() jest dostępny jako funkcja eksperymentalna do wyświetlania treści z efektem przewijania. (I2df44, b/139321650)

Wersja 1.4.0-rc01

8 marca 2023 r.

androidx.compose.foundation:foundation:1.4.0-rc01androidx.compose.foundation:foundation-layout:1.4.0-rc01 są dostępne. Wersja 1.4.0-rc01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

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

Poprawki błędów

  • Działania semantyczne BasicTextField SetText będą teraz aktualizować bufor tekstowy za pomocą tej samej ścieżki kodu co aktualizacje IME i funkcje testowe (np. performTextReplacement).
  • Funkcje testowania tekstu performTextClearance, performTextReplacementperformTextSelection używają teraz funkcji 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 są dostępne. Wersja 1.4.0-beta02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano nowe wywołanie zwrotne Modifier.Node.onReset(), które umożliwia zresetowanie niektórych stanów lokalnych, aby odpowiednio obsłużyć przypadek, gdy element Layout zostanie użyty ponownie (np. jako element LazyColumn). Naprawiono FocusTargetModifierNode, aby prawidłowo zresetować stan fokusu. (I65495, b/265201972)
  • Do metod DrawScope.drawText, Paragraph.paintMultiParagraph.paint dodano parametr BlendMode, aby umożliwić obsługę różnych algorytmów mieszania podczas rysowania tekstu na płótnie. (I57508)
  • Usunięto interfejs API modifierElementOf(). Zamiast tego rozszerz je bezpośrednio z poziomu ModifierNodeElement. (Ie6d21)

Poprawki błędów

  • Przesuwanie uchwytów zaznaczenia nie może już wybierać części znaku. (Idedd1)
  • Naprawiono błąd powodujący awarię podczas naciśnięcia Ctrl + Backspace na pustym TextField (I0427f, b/244185537)

Wersja 1.4.0-beta01

8 lutego 2023 r.

androidx.compose.foundation:foundation:1.4.0-beta01androidx.compose.foundation:foundation-layout:1.4.0-beta01 są dostępne. Wersja 1.4.0-beta01 zawiera te commity.

Nowe funkcje

  • Od wersji 1.3 dodano obsługę emotikonów w funkcjach TextTextField, a także w niższym poziomie akapitu. Jest ona domyślnie włączona, gdy skonfigurujesz emojicompat.
  • EmojiCompat można skonfigurować w przypadku określonego tekstu za pomocą PlatformParagraphStyle.

Zmiany w interfejsie API

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

Darowizna zewnętrzna

  • Do właściwości mainAxisItemSpacing dodano właściwości LazyListLayoutInfo, LazyGridLayoutInfoLazyStaggeredGridItemInfo (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 są dostępne. Wersja 1.4.0-alpha05 zawiera te commity.

Nowe funkcje

  • Dodano obsługę pełnego zakresu linii w LazyStaggeredGrid (I28252)
  • Dodawanie eksperymentalnej funkcji onHover do funkcji ClickableText (I6938f)
  • Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji runComposeUiTest i funkcji create*ComposeRule, które przyjmują parametry CoroutineContext. Kontekst zostanie użyty do testowej kompozycji oraz wszystkich wywołań funkcji LaunchedEffectrememberCoroutineScope() w jej obrębie. (I10614, b/265177763)

Zmiany w interfejsie API

  • Łączy interfejsy API przed i po OverscrollEffect w połączone funkcje „dekoracyjne” applyToScroll i applyToFling. Aby dowiedzieć się, jak zaimplementować efekt przewijania z nową formą interfejsu API, zapoznaj się z zaktualizowanymi przykładami w dokumentacji. (I8a9c4, b/255554340)
  • Więcej typów i możliwości ustawienia wartości funkcji wbudowanych i wycofanych (I24f91)
  • Interfejsy API LineBreakHyphensTextStyle zostały przeniesione do wersji stabilnej. (Ic1e1d)

Poprawki błędów

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

Darowizna zewnętrzna

  • Metody notifyFocusedRectTextInputSessionTextInputService nie są ponownie wycofywane. (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 są dostępne. Wersja 1.4.0-alpha04 zawiera te commity.

Nowe funkcje

  • FlowRowFlowColumn są teraz dostępne jako @ExperimentalFoundationApi, co umożliwia bardziej elastyczny układ komponentów na podstawie wierszy i kolumn. Komponenty będą przenoszone do nowej linii, jeśli na osi głównej zabraknie miejsca. (I3a7b2)
  • Modifier.basicMarquee() jest dostępny jako funkcja eksperymentalna do wyświetlania treści z efektem przewijania. (I2df44, b/139321650)

Zmiany w interfejsie API

  • FocusRequesterModifier jest wycofywany na rzecz FocusRequesterNode (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • Konstruktor AndroidFont z argumentem variationSettings jest teraz stabilnym interfejsem API i może służyć do tworzenia nowych typów deskryptorów czcionek. (I5adcc, b/261565807)
  • Wprowadziliśmy interfejs PinnableContainer propagowany przez listy opóźnione za pomocą kompozycji lokalnej, która umożliwia przypięcie bieżącego elementu. Oznacza to, że taki element nie zostanie usunięty, gdy przewiniesz go poza widok. Na przykład Modifier.focusable() za pomocą tego mechanizmu przypnie aktualnie zaznaczony element. (Ib8881, b/259274257, b/195049010)
  • Zmieniliśmy sposób, w jaki elementy przewijalne reagują na bringIntoViewRequesters i elementy skupienia, aby lepiej modelować złożoność tych operacji i obsługiwać więcej skrajnych przypadków. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114)
  • Dodanie możliwości zwracania wartości null do ukrytych funkcji wycofanych (Ibf7b0)
  • Dodano eksperymentalną opcję TextMotion do opcji TextStyle, aby zdefiniować tekst jako Static(default) lub animowany. Użyj TextMotion.Animated, jeśli tekst ma być skalowany, przesuwany lub obracany za pomocą animacji. (I24dd7)
  • Dodanie TextFieldFocusModifier w celu naprawienia zachowania nawigacji fokusa na platformie Android (I00303)
  • Argument maxSize: IntSize w funkcji drawText został zastąpiony argumentem size: Size, aby była ona zgodna z innymi funkcjami DrawScope. Wartość domyślna parametru size to Size.Unspecified, co nie powinno zmieniać poprzedniego domyślnego działania. (Icd27d)

Poprawki błędów

  • Poprawki w fizyce przyciągania w grze SnapFlingBehaviour, aby ruchy były bardziej naturalne.

Znany problem

  • Podczas aktualizacji z wersji androidx.compose.foundation:1.4.0-alpha03 na androidx.compose.foundation:1.4.0-alpha04 może wystąpić błąd java.lang.NoSuchFieldError. Tutaj został pierwotnie zgłoszony problem. Przesłaliśmy poprawkę, która będzie dostępna w ramach następnej aktualizacji Compose. Aby obejść ten problem, zaktualizuj biblioteki androidx.compose.materialandroidx.compose.material3 do najnowszej wersji(1.1.0-alpha04) lub obniż wersję biblioteki androidx.compose.foundation do 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 są dostępne. Wersja 1.4.0-alpha03 zawiera te commity.

Zmiany w interfejsie API

  • W testach UI korzystających z reguły Compose wznowienia kontynuacji podczas wywołań withFrameNanos nie będą wysyłane, dopóki nie zakończą się wszystkie wywołania withFrameNanos. Jest to zgodne z działaniem funkcji komponowania podczas normalnego działania. Testy, które korzystają ze starego zachowania, mogą jednak nie działać. Ta zmiana powinna dotyczyć tylko kodu, który bezpośrednio wywołuje funkcje withFrameNanos lub withFrameMillis, i zawiera logikę spoza wywołania zwrotnego przekazaną do tych funkcji, którą może być konieczne przeniesienie do wywołań zwrotnych. Przykłady zmian w teście animacji znajdziesz w tym CL.
  • Do konstruktora i funkcji fabrycznej TestMonotonicFrameClock dodano opcjonalny parametr onPerformTraversals: (Long) -> Unit, który umożliwia uruchamianie kodu po wywołaniach zwrotnych withFrameNanos, ale przed wznowieniem korzystania z funkcji coroutine wywołujących. (Idb413, b/254115946, b/222093277, b/255802670)
  • Przedstaw działania dotyczące ułatwień dostępu na stronie: PageUp, PageDown, PageLeft, PageRight. Pamiętaj, że są one dostępne tylko w wersji interfejsu API 29. (Ida4ab)
  • Przedstaw HorizontalPager i VerticalPager, czyli sposób wyświetlania komponentów w ramach strony pager. Wprowadziliśmy PagerState, aby kontrolować pager i wysyłać zapytania o jego bieżący stan. Wprowadziliśmy PageSize, czyli sposób na kontrolowanie rozmiaru strony Pager. Można go wykorzystać do tworzenia karuzeli na wzór Pagers. Wprowadziliśmy PagerSnapDistance, czyli sposób na kontrolowanie działania przyciągania w zachowaniu Pagera. (I01120)
  • Wprowadziliśmy przeciążenie w funkcji SnapFlingBehavior.performFling, aby ułatwić zrozumienie, gdzie skończy się skok. (I569f6)
  • Użytkownik OverscrollEffect#isEnabled został usunięty. Zamiast pamiętać i ustawiać tę flagę, po prostu nie wysyłaj zdarzeń do efektu przewijania (w przypadku, gdy nie chcesz, aby efekt ten był widoczny, np. gdy ScrollableState#canScrollForward/backward zwraca wartość Fałsz). (I1a4b0, b/255554340, b/255557085)
  • Dodano ScrollableState#canScrollForwardScrollableState#canScrollBackward, aby sprawdzić, czy ScrollableState ma miejsce na przewijanie w dowolnym kierunku (czy znajduje się na początku lub końcu zakresu). Domyślnie jest to ustawione na wartość Prawda w celu zapewnienia zgodności wstecznej z dotychczasowymi implementacjami ScrollableState. Konsumenci mogą używać tego do wyświetlania użytkownikowi informacji, że nadal jest miejsce na przewijanie. Można tego też użyć, aby uniknąć wysyłania delta do ScrollableStates, które nie mają miejsca na przewijanie w danym kierunku, i w ten sposób zmniejszyć niepotrzebną pracę. (Idf1a0, b/255557085)
  • Dodano interfejs API Modifier, aby zapytać o informacje dotyczące przewijania przodków (I2ba9d, b/203141462).
  • Służy w Clickable do prawidłowego opóźnienia interakcji z przyciskiem, gdy gesty mogą stać się zdarzeniami przewijania.
  • Rozwiązaliśmy problem z nieprawidłowym opóźnianiem efektów Clickables, gdy są używane w ramach efektu Scrollable ViewGroup.
  • Zaktualizowano Drawers i Sheets, aby prawidłowo opóźniać naciśnięcia w przypadku, gdy gesty mogą stać się zdarzeniami przewijania.
  • Zaktualizuj nazwy metod snapStepSize, aby były zgodne z innymi metodami w elementach SnapLayoutInfoProvider. (Ife67c)
  • Dodano EmojiCompat do Compose (Ibf6f9, b/139326806)
  • Zmieniliśmy nazwę consumedWindowInsets() na consumeWindowInsets(), a withConsumedWindowInsets() na onConsumedWindowInsetsChanged() i uczyniłeś modyfikatory publicznymi. (Ie44e1)

Poprawki błędów

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

Wersja 1.4.0-alpha02

9 listopada 2022 r.

androidx.compose.foundation:foundation:1.4.0-alpha02androidx.compose.foundation:foundation-layout:1.4.0-alpha02 są dostępne. Wersja 1.4.0-alpha02 zawiera te commity.

Zmiany w interfejsie API

  • Aby zapewnić większą elastyczność, atrybuty awaitFirstDownwaitForUpOrCancellation obsługują teraz atrybuty PointerEventPass. (I7579a, b/212091796)
  • Przywróć interfejs API beyondBoundCount z interfejsów Lazy* API (I12197)
  • Wprowadziliśmy w interfejsach API Lazy parametry do tworzenia i rozmieszczania elementów poza widocznym obszarem (I69e89, b/172029355).
  • Dodano parametr minLines do BasicText i BasicTextField. Umożliwia ustawienie minimalnej wysokości tych komponentów pod względem liczby wierszy (I24294, b/122476634)

Wersja 1.4.0-alpha01

24 października 2022 r.

androidx.compose.foundation:foundation:1.4.0-alpha01androidx.compose.foundation:foundation-layout:1.4.0-alpha01 są dostępne. Wersja 1.4.0-alpha01 zawiera te commity.

Zmiany w interfejsie API

  • Dodano nową metodę awaitEachGesture() do wykrywania gestów. Działa ona podobnie do forEachGesture(), ale pętla gestów działa całkowicie w ramach AwaitPointerEventScope, dzięki czemu nie dochodzi do utraty zdarzeń między iteracjami.
  • Element forEachGesture() został wycofany na rzecz elementu awaitEachGesture(), ponieważ pozwala on na 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 są dostępne. Wersja 1.3.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Rozwiązanie problemu z wydajnością w BeyondBoundsLayout (aosp/2255266)
  • ContentInViewModifier nie odczyta współrzędnych układu, jeśli nie zostaną dołączone (aosp/2241316).

Wersja 1.3.0

24 października 2022 r.

androidx.compose.foundation:foundation:1.3.0androidx.compose.foundation:foundation-layout:1.3.0 są dostępne. Wersja 1.3.0 zawiera te commity.

Ważne zmiany od wersji 1.2.0

  • Wprowadzono eksperymentalne wersje LazyVerticalStaggeredGrid i LazyHorizontalStaggeredGrid.
  • Dodano interfejsy API SnapFlingBehavior, rememberSnapFlingBehavior i inne podobne interfejsy API jako eksperymentalne.
  • Modifier.clickable, Modifier.toggleableModifier.selectable wyświetlają teraz fale, jeśli klikniesz je za pomocą klawiatury lub panelu kierunkowego na pilocie.

Wersja 1.3.0-rc01

5 października 2022 r.

androidx.compose.foundation:foundation:1.3.0-rc01androidx.compose.foundation:foundation-layout:1.3.0-rc01 są dostępne. Wersja 1.3.0-rc01 zawiera te commity.

Zmiany w interfejsie API

  • Wprowadzono lowVelocityAnimationSpec używane przez krok podejścia, gdy nie ma wystarczającej prędkości rzutu, aby zaniknąć. (Iaeb27)
  • Dodano nowe eksperymentalne interfejsy API Hyphens, aby umożliwić automatyczne dzielenie wyrazów w tekście (Iaa869).

Wersja 1.3.0-beta03

21 września 2022 r.

androidx.compose.foundation:foundation:1.3.0-beta03androidx.compose.foundation:foundation-layout:1.3.0-beta03 są dostępne. Wersja 1.3.0-beta03 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodaj opcje umożliwiające dostosowanie dzielenia wiersza w tekście. (I86907)
  • BringIntoViewResponder mogą teraz uzyskiwać najbardziej aktualne granice prośby podczas jej przetwarzania. (If86a5, b/241591211)
  • Wprowadzenie obsługi odstępów między elementami w eksperymentalnej wersji Staggered Grid (I10b82)
  • Wprowadzanie wypełniania treści w wersji eksperymentalnej Staggered Grid (I342ea)
  • Zmień argument size:IntSize na constraints: Constraints w metodzie TextMeasurer.measure, aby obsługiwać ograniczenia minimalnej szerokości. (I37530, b/242707525)
  • Dodano Modifier.withConsumedWindowInsets(), aby można było używać WindowInsets poza windowInsetsPadding.
  • Dodano MutableWindowInsets, aby umożliwić łatwą zmianę WindowInsets bez konieczności ponownego tworzenia kompozycji. (I7fd28, b/237019262, b/243119659)

Wersja 1.3.0-beta02

7 września 2022 roku

androidx.compose.foundation:foundation:1.3.0-beta02androidx.compose.foundation:foundation-layout:1.3.0-beta02 są dostępne. Wersja 1.3.0-beta02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Wstępna wersja eksperymentalna StaggeredGrid (Ia48be)
  • Zmieniono nazwy FocusDirection.InFocusDirection.Out na FocusDirection.EnterFocusDirection.Exit (Ia4262, b/183746982)
  • Wprowadziliśmy przeciążenie rememberSnapFlingBehavior, które umożliwia szybkie włączanie blokowania w LazyLists. (Ifb48a)
  • Zastąpiono fabrykę snapFlingBehavior konkretną klasą SnapFlingBehavior. Ograniczenie metod SnapLayoutInfoProvider do Density, aby ułatwić użytkownikom interfejsu API konwersję dp<->px. (I54a11)
  • Zaktualizuj parametr LazyLayoutMeasureScope.measure, aby zwrócić listę elementów zastępczych, wskazując pożądaną niezmienność zwracanej wartości. (I48b7c)
  • Wprowadziliśmy funkcję SnapLayoutInfoProvider, która przyjmuje parametr LazyListState i tworzy instancję SnapLayoutInfoProvider, której można użyć do włączenia snapa FlingBehavior dla LazyLists. (I2dd10)

Poprawki błędów

  • Refaktoryzacja funkcji AwaitPointerEventScope#awaitLongPressOrCancellation, aby pasowała do innych funkcji await (I646e6)

Wersja 1.3.0-beta01

24 sierpnia 2022 r.

androidx.compose.foundation:foundation:1.3.0-beta01androidx.compose.foundation:foundation-layout:1.3.0-beta01 są dostępne. Wersja 1.3.0-beta01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Usunięto pointerPosition z poziomu OverscrollEffect – efekty, które uwzględniają pozycję wskaźnika, mogą zamiast tego używać funkcji Modifier.pointerInput { } w poziomie effectModifier, aby uzyskać bieżącą pozycję wskaźnika. (I9f606, b/241239306)
  • Udostępnienie AwaitPointerEventScope#awaitLongPressOrCancellation jako dodatkowego elementu składowego do bardziej złożonego wykrywania gestów (I04374, b/181577176)
  • Wprowadziliśmy lazyListSnapLayoutInfoProvider, aby umożliwić przyciąganie elementów w Lazy Lists. (I3ecdf)
  • Wprowadziliśmy SnapFlingBehavior, czyli gest przesuwania, który umożliwia przyciąganie elementów na liście. Podaj instancję SnapLayoutInfoProvider z informacjami o swojej siatce. (Ie754c)

Wersja 1.3.0-alpha03

10 sierpnia 2022 r.

androidx.compose.foundation:foundation:1.3.0-alpha03androidx.compose.foundation:foundation-layout:1.3.0-alpha03 są dostępne. Wersja 1.3.0-alpha03 zawiera te commity.

Zmiany w interfejsie API

  • Czcionki zasobów obsługują teraz ustawienia wariantów czcionek (API 26 i nowsze) (I900dd, b/143703328).
  • Obsługa czcionek zmiennych w DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • Usunięto eksperymentalną adnotację z funkcji PlatformTextStyleLineHeightStyle. (I64bef)
  • Pola tekstowe będą teraz wyrzucać bardziej szczegółowe wyjątki, gdy OffsetMapping zwraca nieprawidłowe indeksy.VisualTransformation (Ie73f9, b/229378536)
  • Wprowadzenie eksperymentalnych interfejsów API do udostępniania logiki dostawcy elementów między układami opartymi na opóźnionym ładowaniu. (Ic891c)
  • Funkcja ScrollableDefaults.reverseDirection() nie jest już eksperymentalna. (Iba646)
  • Wycofano SemanticsModifier.id i zamiast niego użyto identyfikatora semantycznego LayoutInfo.semanticsId. (Iac808, b/203559524)
  • Funkcja checkScrollableContainerConstraints() nie jest już eksperymentalna. (I2c290)
  • Funkcja Modifier.clipScrollableContainer() nie jest już eksperymentalna. (Ia2b44)
  • Wycofaj TextInputService.show|hideSoftwareKeyboard. Zamiast niej użyj wartości SoftwareKeyboardController w kodzie aplikacji i wartości TextInputSession w kodzie zarządzania IME. (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 są dostępne. Wersja 1.3.0-alpha02 zawiera te commity.

Zmiany w interfejsie API

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

Poprawki błędów

  • Klawiatura ekranowa jest teraz ukryta, gdy pole tekstowe jest wyłączone, gdy jest zaznaczone. (I6e3e4, b/237308379)
  • Podczas dodawania zdarzeń InputEventChange do Śledzenia prędkości będziemy teraz brać pod uwagę wartości delta zamiast pozycji. Dzięki temu prędkość będzie obliczana prawidłowo we wszystkich przypadkach, nawet jeśli element docelowy się przesunie (Icea9d, b/216582726, b/223440806, b/227709803).
  • Gdy element przesuwany ma zaznaczony element podrzędny, będzie on teraz prawidłowo przesuwany, aby zaznaczony element podrzędny był widoczny, gdy jego rozmiar się zmniejszy, nawet jeśli rozmiar jest animowany. (I80867, b/230756508, b/220119990)
  • Naprawiliśmy błąd, który powodował awarię, gdy TextField był usuwany i ponownie wypełniany podczas aktywnego wyboru. (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 są dostępne. Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Wprowadziliśmy typ adnotacji UrlAnnotation i powiązane metody, aby umożliwić obsługę linków TalkBack w dokumentach AnnotatedString. (I1c754, b/231495122)

Poprawki błędów

  • BasicTextField cursorBrush może teraz być animowany bez restartowania licznika czasu kursora. (I812e6, b/236383522)

Wersja 1.2

Wersja 1.2.1

10 sierpnia 2022 r.

androidx.compose.foundation:foundation:1.2.1androidx.compose.foundation:foundation-layout:1.2.1 są dostępne. Wersja 1.2.1 zawiera te zatwierdzenia.

Wersja 1.2.0

27 lipca 2022 roku

androidx.compose.foundation:foundation:1.2.0androidx.compose.foundation:foundation-layout:1.2.0 są dostępne. Wersja 1.2.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.1.0

  • Funkcje LazyVerticalGridLazyHorizontalGrid są teraz stabilne.
  • Możesz teraz określić typ treści dla elementów na listach i siatkach Lazy. Umożliwi to komponentom bardziej efektywne ponowne używanie elementów.
  • Lista i siatka z lazy loadingiem mają teraz parametr userScrollEnabled, który umożliwia wyłączenie przewijania za pomocą gestów użytkownika.
  • Dodano nowy eksperymentalny interfejs API o nazwie LazyLayout. Jest to interfejs API, którego używamy wewnętrznie do obsługi list i kratek Lazy.
  • Interfejs API OverscrollEffect został wprowadzony jako eksperymentalny. Możesz zdefiniować niestandardowe efekty przewijania oraz dodać standardowy efekt platformy do niestandardowych przewijanych kontenerów.
  • Wprowadzono interfejsy API do obsługi interoperacyjności przewijania zagnieżdżonego, aby umożliwić interoperacyjność między widokami i komponować aktorów przewijania.
  • Do wszystkich kontenerów z przewijaniem dodano przewijanie za pomocą myszy i gładzika.

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 są dostępne. Wersja 1.2.0-rc03 zawiera te zatwierdzenia.

  • Brak zmian od wersji 1.2.0-rc02.

Wersja 1.2.0-rc02

22 czerwca 2022 r.

androidx.compose.foundation:foundation:1.2.0-rc02androidx.compose.foundation:foundation-layout:1.2.0-rc02 są dostępne. Wersja 1.2.0-rc02 zawiera te zatwierdzenia.

Wersja 1.2.0-rc01

15 czerwca 2022 r.

androidx.compose.foundation:foundation:1.2.0-rc01androidx.compose.foundation:foundation-layout:1.2.0-rc01 są dostępne. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Wprowadziliśmy eksperymentalny parametr OverscrollEffect, który umożliwia stosowanie niestandardowych efektów przewijania, a także przeciążenia Modifier.scrollable, które go obsługują.
  • Eksperymentalny pakiet LocalOverScrollConfiguration został przeniesiony z poziomu foundation.gesture do pakietu podstawowego i przemianowany na LocalOverscrollConfiguration (If19fb, b/204650733)
  • Interfejsy w bibliotekach kompozytowych są teraz tworzone za pomocą domyślnych metod interfejsu JDK 8 (I5bcf1).
  • Wprowadziliśmy eksperymentalny interfejs API checkScrollableContainerConstraints(), który pozwala sprawdzić, czy nie umieszczamy zduplikowanych elementów. Możesz go użyć, aby utworzyć własne przewijane układy oparte na lazy loadingu za pomocą LazyLayout. (Id6fab, b/233352497)
  • Z pakietu androidx.compose.foundation.lazy usunięto przestarzały 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 są dostępne. Wersja 1.2.0-beta03 zawiera te commity.

Zmiany w interfejsie API

  • Dodano nowe eksperymentalne funkcje IntervalList i MutableIntervalList. Umożliwia ona reprezentowanie listy wartości za pomocą wielu przedziałów. Przyda się, gdy chcesz zdefiniować własne polecenie dsl podobne do tego, którego używa LazyColumn, gdzie elementy listy można definiować za pomocą wielu wywołań item lub items. (I2d05e, b/228580728)

Poprawki błędów

  • W dokumentacji WindowInsets.ime dodaliśmy informację, że wstawki ime są raportowane od interfejsu API 23, ale tylko animowane od wersji 30. (Ia7fc0, b/230756508)
  • Naciśnięcie klawisza Delete, gdy kursor znajduje się na końcu pola tekstowego, nie spowoduje już awarii.
  • Funkcje DeleteSurroundingTextCommandDeleteSurroundingTextInCodePointsCommand wymagają teraz, aby ich argumenty konstruktora były nieujemne. (Ica8e6, b/199919707)

Wersja 1.2.0-beta02

18 maja 2022 r.

androidx.compose.foundation:foundation:1.2.0-beta02androidx.compose.foundation:foundation-layout:1.2.0-beta02 są dostępne. Wersja 1.2.0-beta02 zawiera te commity.

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

Wersja 1.2.0-beta01

11 maja 2022 roku

androidx.compose.foundation:foundation:1.2.0-beta01androidx.compose.foundation:foundation-layout:1.2.0-beta01 są dostępne. Wersja 1.2.0-beta01 zawiera te commity.

Nowe funkcje

  • To pierwsza wersja beta 1.2.

Zmiany w interfejsie API

  • Dodano eksperymentalną funkcję BeyondBoundsInterval, której można używać w niestandardowych implementacjach LazyList, gdy elementy wykraczają poza widoczne granice (Ifabfb, b/184670295).
  • Nazwa LineHeightBehavior została zmieniona na LineHeightStyle
  • Nazwa LineVerticalAlignment została zmieniona na LineHeightStyle.Alignment
  • Zmiana nazwy LineHeightTrim na LineHeightStyle.Trim
  • Domyślne wartości konstruktora w LineHeightStyle zostały usunięte (I582bf, b/181155707).
  • Dodano wartości domyślne dla opcjonalnych elementów interfejsu LazyLayoutItemProvider. (Iba8a0)
  • W interfejsie LazyLayoutItemProvider zamiast fabryki zwracającej kompozytowaną funkcję lambda według indeksu mamy teraz prostszą kompozytowaną funkcję Item, która przyjmuje indeks. (Id2196)
  • Zmiana nazwy interfejsu LazyLayoutItemsProvider na LazyLayoutItemProvider (I0638c)
  • Nazwa LazyLayoutItemsProvider.itemsCount została zmieniona na itemCount (Id409c)
  • Dodano pędzel do narzędzi TextStyleSpanStyle, aby umożliwić rysowanie tekstu z gradientem. (I53869, b/187839528)
  • Atrybuty trimFirstLineTop i trimLastLineBottom obiektu LineHeightBehavior zostały zastąpione jednym typem enumeracji: LineHeightTrim. LineHeightTrim mają 4 stany zdefiniowane przez 2 wartości logiczne: FirstLineTop, LastLineBottom, Both i None (Ifc6a5, b/181155707)
  • Dodano opcję LineHeightBehavior do opcji TextStyle i ParagraphStyle. LineHeightBehavior, która określa, czy wysokość linii ma być stosowana w górnej części pierwszego wiersza i dolnej części ostatniego wiersza. Określa też wyrównanie linii w miejscu podanym przez TextStyle(lineHeight).

    Możesz np. uzyskać działanie podobne do tego, które usługa porównywania cen definiuje za pomocą parametru LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false).

  • Konfiguracje trimFirstLineTop, trimLastLineBottom działają prawidłowo tylko wtedy, gdy includeFontPadding ma wartość false. (I97332, b/181155707)

  • Dodano eksperymentalny modyfikator imeNestedScroll(), aby umożliwić deweloperom sterowanie metodą wprowadzania za pomocą kółka przewijania. (I60759)

Poprawki błędów

  • Rozwiązaliśmy problem polegający na tym, że pola tekstowe nie ukrywały klawiatury, gdy były usuwane z kompozycji, podczas gdy były w niej skupione. (I7a410, b/230536793, b/225541817)
  • Obsługa wielokropka, gdy wysokość jest ograniczona i nie mieści wszystkich wierszy tekstu (Ie528c, b/168720622)
  • BringIntoViewRequester.bringIntoView będzie teraz zawsze zawieszony, dopóki prośba nie zostanie zakończona lub przerwana przez nowszą prośbę, która się z nią nie pokrywa. Prośby nakładające się na siebie będą umieszczane w kolejce. (I43e7f, b/216790855)
  • Równoczesne wywołania BringIntoViewRequester.bringIntoView dla prostokątów, które się całkowicie pokrywają, będą teraz uwzględniać tylko żądanie prostokąta o większym rozmiarze. (I34be7, b/216790855, b/184760918)
  • Domyślnie włączone includeFontPadding. Funkcję includeFontPadding można wyłączyć za pomocą atrybutu TextStyle.platformTextStyle. W najbliższej przyszłości zmienimy domyślne zachowanie, ale do tego czasu ta zmiana pozwoli nam lepiej zintegrować ulepszenia wysokości linii (aosp/2058653) i rozwiązać problemy z TextField. (I01423, b/171394808)
  • Modifier.bringIntoViewRequester nie używa już onGloballyPositioned. (I630f5)

Darowizna zewnętrzna

  • Wartość MouseInjectionScope.scroll(delta = someDelta) jest teraz odwrócona na Androidzie, jeśli przewijamy w kierunku pionowym (jeśli someDelta jest dodatnia, przewijanie odbywa się w dół) (Ifb697, b/224992993)

Wersja 1.2.0-alpha08

20 kwietnia 2022 r.

androidx.compose.foundation:foundation:1.2.0-alpha08androidx.compose.foundation:foundation-layout:1.2.0-alpha08 są dostępne. Wersja 1.2.0-alpha08 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • wyświetlać wszystkie dostępne grubości czcionek systemowych na Androidzie, gdy używasz FontFamily.SansSerif. W interfejsie API 21–28 wewnętrznie będą używane nazwy czcionek zastępczych, np. sans-serif-medium. Jest to zmiana zachowania, ponieważ wcześniej w interfejsach API 21–28 obsługiwane były tylko wagi 400 i 700. (I380fe, b/156048036, b/226441992)
  • Elementy Paragraph i MultiParagraph obsługują teraz parametr Constraints. Przekazywanie wartości Constraints.maxHeight nie jest obecnie możliwe, ale pozwoli na wykonanie pewnych obliczeń w przyszłości, np. elipsy na podstawie wysokości. (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() obsługuje teraz niestandardową klasę podobną do MutableSet, która nie zezwala na dodawanie do niej nowych elementów. (Icd314)
  • Częściowe wyświetlanie (obniżanie lub pozycja) zostało wycofane w wersji PointerInputChange. Możesz użyć consume(), aby w pełni zastosować zmianę. Możesz użyć isConsumed, aby sprawdzić, czy ktoś inny wcześniej nie wprowadził tej zmiany.
  • PointerInputChange::copy() zawsze tworzy teraz kopię powierzchowną. Oznacza to, że kopie PointerInputChange zostaną wykorzystane, gdy wykorzystana zostanie jedna z nich. Jeśli chcesz utworzyć niewiążącą instancję PointerInputChange, użyj konstruktora. (Ie6be4, b/225669674)
  • Wprowadziliśmy nowy eksperymentalny interfejs API LazyLayout. Dzięki temu możesz tworzyć własne komponenty, np. LazyColumnLazyVerticalGrid. Pamiętaj, że interfejs API jest w fazie wczesnej i może ulec zmianie w kolejnych wersjach. (Iba2bc, b/166591700)
  • Metoda AndroidFont przyjmuje teraz parametr konstruktora typefaceLoader. (I2c971)
  • WindowInsets Usługa towarzysząca wyświetla teraz informacje o widoczności (czy są widoczne na ekranie, niezależnie od tego, czy nakładają się na okno) oraz rozmiar, jaki mogłyby mieć, gdyby były dostępne na urządzeniu, ale nie byłyby aktywne. (I65182, b/217770337)

Wersja 1.2.0-alpha07

6 kwietnia 2022 roku

androidx.compose.foundation:foundation:1.2.0-alpha07androidx.compose.foundation:foundation-layout:1.2.0-alpha07 są dostępne. Wersja 1.2.0-alpha07 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano interfejs API PinnableParent, który pozwala elementom potomnym w ramach opóźnionego układu zapobiegać usuwaniu aktualnie skomponowanych elementów (Ibbdd0, b/184670295)
  • W rekordach typu LazyListLayoutInfoLazyGridLayoutInfo są teraz dostępne pola beforeContentPaddingafterContentPadding (I3b628, b/200920410)
  • Dodano znak KeyboardType.Decimal jako alternatywę dla znaku Keyboard.Number, aby umożliwić dodawanie separatora dziesiętnego w systemie IME. (Iec4c8, b/209835363)
  • Dodaj nowy opis czcionki Font(DeviceFontFamilyName), aby opcjonalnie wyszukiwać czcionki zainstalowane w systemie podczas łańcuchów zastępowania czcionek. (I30468, b/219754572)
  • Interfejsy API PointerEventType.ScrollPointerEvent.scrollDelta są teraz stabilne (I574c5, b/225669674).
  • Dodano tymczasową konfigurację zgodności dla includeFontPadding w TextStyle/ParagraphStyle. includeFontPadding, którą można zmienić za pomocą TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)). Jest to tymczasowa opcja konfiguracji, która umożliwia migrację. Zostanie ona usunięta. (If47be, b/171394808)
  • Zaktualizowano FontFamily.Resolver, aby zintegrować ustawienie ułatwień dostępu dotyczące pogrubienia tekstu w całym systemie (I6c1e7).
  • Właściwość rozszerzenia consumeWindowInsets w komponencie ComposeView pozwala deweloperom wyłączyć korzystanie z Android WindowInsets. Dzięki temu oddzielne ComposeViews w hierarchii mogą stosować WindowInsets bez wzajemnego zakłócania sobie pracy. (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 są dostępne. Wersja 1.2.0-alpha06 zawiera te commity.

Zmiany w interfejsie API

  • Dodano działanie semantyczne RequestFocus, aby poprosić o skupienie się na elemencie, który można zaznaczyć. (I17b71)
  • Usługa FocusOrder została scalona z usługą FocusProperties, a usługa focusProperties() ma teraz wszystkie funkcje usługi focusOrder(). Funkcje FocusOrderfocusOrder() zostały wycofane. Obiekt focusOrder(), który przyjmuje argument focusRequester, należy zastąpić modyfikatorem focusRequester() w połączeniu z obiektem focusProperties(). Dzięki temu modyfikatory mają większą separację problemów. (I601b7)
  • Funkcja WindowInsets.asPaddingValues(Density) została dodana, aby umożliwić deweloperom przeprowadzanie konwersji bez konieczności korzystania z kompozycji. (I94c35)
  • Zaktualizowano parsowanie obiektów wektorowych, aby umożliwić automatyczne lustrzane odbicie treści VectorPainter, jeśli bieżący kierunek układu to RTL. (I79cd9, b/185760237)

Poprawki błędów

  • Modyfikatory przewijania (Modifier.verticalScroll(), Modifier.horizontalScroll()Modifier.scrollable()) będą teraz przewijać, aby zachować widoczność zaznaczonego komponentu, jeśli obszar przewijania zostanie zmieniony, a komponent był wcześniej widoczny.
  • Pola tekstowe będą teraz wyświetlane nad klawiaturą, gdy są aktywne i wyświetla się klawiatura, w przypadku elementów z możliwością przewijania i trybu ADJUST_RESIZE. (I4a485, b/190539358, b/192043120, b/216842427)

Wersja 1.2.0-alpha05

9 marca 2022 r.

androidx.compose.foundation:foundation:1.2.0-alpha05androidx.compose.foundation:foundation-layout:1.2.0-alpha05 są dostępne. Wersja 1.2.0-alpha05 zawiera te commity.

Zmiany w interfejsie API

  • Funkcje LazyVerticalGridLazyHorizontalGrid są teraz stabilne. (I307c0)
  • Tabela LazyGridItemInfo.Unknown została zastąpiona przez osobne tabele LazyGridItemInfo.UnknownRow i LazyGridItemInfo.UnknownColumn (I56d51)
  • LazyVerticalGrid/LazyHorizontalGrid i wszystkie powiązane interfejsy API zostały przeniesione do podkategorii .grid. Zaktualizuj importy z androidx.compose.foundation.lazy na androidx.compose.foundation.lazy.grid. (I2d446, b/219942574)
  • Tekst: includeFontPadding jest teraz domyślnie wyłączony. Problemy z przycinaniem wynikające z użycia includeFontPadding=false zostały rozwiązane i w przypadku wysokich skryptów nie powinno już występować przycinanie. (I31c84, b/171394808)
  • Interfejs zmierzonego zdarzenia udostępnia teraz właściwość parentData (I3313f).
  • Wprowadziliśmy eksperymentalną funkcję Modifier.onFocusedBoundsChanged, która umożliwia obserwowanie granic elementów podrzędnych. (I14283, b/220030968, b/190539358, b/192043120, b/216842427)
  • Dodano LazyHorizontalGrid. (I61ae7, b/191238807)
  • Dodano nowy interfejs API LazyVerticalGrid do definiowania rozmiarów na osi poprzecznej (I17723)
  • Dodano modyfikator FocusGroup (I64bc0, b/213508274, b/184670295).

Poprawki błędów

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

Darowizna zewnętrzna

  • Zaktualizowano do wersji Kotlinx coroutines 1.6.0 (I3366d).

Wersja 1.2.0-alpha04

23 lutego 2022 r.

androidx.compose.foundation:foundation:1.2.0-alpha04androidx.compose.foundation:foundation-layout:1.2.0-alpha04 są dostępne. Wersja 1.2.0-alpha04 zawiera te commity.

Zmiany w interfejsie API

  • BringIntoViewResponders nie muszą już ręcznie przekazywać żądań do elementów nadrzędnych. Zamiast tego muszą natychmiast zwrócić prostokąt, który rodzic ma wyświetlić. (I8e66a)
  • Obsługa asynchronicznego wczytywania czcionek w Tekście (I77057, b/214587005)
  • LazyVerticalGrid obsługuje teraz line breaking przed elementami, których zakres nie mieści się w bieżącym wierszu. (I05c40, b/207462103)
  • Nazwa excludeFromSystemGestures została zmieniona na systemGesturesExclusion (I19526)
  • LazyVerticalGrid obsługuje teraz reverseLayout. (I6d7d7, b/215572963, b/211753558)
  • Dodaj metodę WindowInsets.only(), aby umożliwić deweloperom uwzględnianie tylko wymiarów z WindowInsets. (I14c94, b/217768486)
  • Dodano funkcje ComposableTarget, ComposableTargetMarkerComposableOpenTarget, które umożliwiają raportowanie w czasie kompilacji, gdy wywoływana jest funkcja typu „composable” kierowana na obiekt, który nie jest przeznaczony do jej użycia.

    W większości przypadków adnotacje mogą być wywnioskowane przez wtyczkę kompilatora Compose, więc używanie ich bezpośrednio powinno być rzadkością . Do przypadków, w których nie można wywnioskować typu danych, należą tworzenie i używanie niestandardowego aplikatora, abstrakcyjnych funkcji składanych (np. metod interfejsu), pól lub zmiennych globalnych, które są składanymi funkcjami lambda (lokalne zmienne i parametry są wywnioskowane) oraz używanie funkcji ComposeNode lub powiązanych funkcji składanych.

    W przypadku niestandardowych funkcji dopasowujących funkcje składane, które wywołują ComposeNode lub ReusableComposeNode, muszą dodać adnotację CompoableTarget dla funkcji i wszystkich typów parametrów funkcji składanych lambda. Zalecamy jednak utworzenie adnotacji z oznaczeniem ComposableTargetMarker, a następnie używanie tej adnotacji z oznaczeniem zamiast bezpośrednio ComposableTarget. Kompozytowa adnotacja oznaczona symbolem ComposableTargetMarker jest równoważna atrybucie ComposbleTarget z pełną nazwą klasy atrybutu jako parametrem aplikatora. Przykład użycia funkcji ComposableTargetMarker znajdziesz w sekcji anroidx.compose.ui.UiComposable. (I38f11)

Poprawki błędów

  • Teraz można przekazywać ujemne przesunięcia przewijania do aplikacji LazyGridState.scrollToItem()LazyGridState.animateScrollToItem(). (I025c6, b/211753558)
  • Obsługa asynchronicznego wczytywania czcionek w przypadku pola tekstowego. (Icc4bf, b/214587005)

Wersja 1.2.0-alpha03

9 lutego 2022 r.

androidx.compose.foundation:foundation:1.2.0-alpha03androidx.compose.foundation:foundation-layout:1.2.0-alpha03 są dostępne. Wersja 1.2.0-alpha03 zawiera te komisy.

Zmiany w interfejsie API

  • Metody notifyFocusedRect w klasach TextInputSessionTextInputService są teraz wycofane i nie będą wywoływane. Zamiast tego użyj BringIntoViewRequester. (Ia4302, b/192043120, b/216842427, b/178211874)
  • Umożliwiono animacje elementów siatek opóźnionych za pomocą funkcji Modifier.animateItemPlacement(). (Ib6621, b/211753218)
  • BringIntoViewRequester teraz rozsyła żądania do hostowanego widoku Android. (Ia7a51)
  • Funkcja FontFamilyResolver jest teraz dostępna w usłudze LocalFontFamilyResolver.current.
    • Dodaliśmy metody createFontFamilyResolver(context)createFontFamilyResolver(context, coroutineScope), które umożliwiają tworzenie nowych rozwiązujących FontFamily poza kompozycją.
    • Akapit i MultiParagraph przyjmują teraz wartość FontFamily.Resolver
    • TextLayoutResult.layoutInput.fontFamilyResolver zawiera teraz resolver używany w tym układzie, a nieużywany resolver TextLayoutResult.layoutInput.resourceLoader, ponieważ nie jest już używany. (Id5a45, b/174162090)
  • Dodano AndroidFont, nowy interfejs API na niskim poziomie do udostępniania nowych typów opisów zasobów czcionek na Androidzie. Może to być na przykład wczytywanie czcionek z back-endu konkretnej aplikacji, opcjonalne znajdowanie wstępnie zainstalowanych czcionek na urządzeniu lub wczytywanie czcionki z zasobu, który nie jest dostarczany przez bieżące fabryki czcionek.
    • Rozszerzenie interfejsu Font.ResourceLoaded API o obsługę opcjonalnego i asynchronicznego wczytywania czcionek. Nie zalecamy, aby deweloperzy aplikacji używali tego interfejsu API bezpośrednio. Aby dodać nowe typy czcionek, zobacz AndroidFont.
    • Funkcja rozszerzenia Font.AndroidResourceLoader umożliwia tworzenie Font.ResourceLoader poza kompozycją.
    • Dodano parametr loadingStrategy do czcionek opartych na zasobach, aby umożliwić asynchroniczne wczytywanie, gdy czcionka oparta na zasobach odwołuje się do czcionek do pobrania w formacie XML. (Ie5aea, b/174162090)
  • Konstruktor Typeface(FontFamily) został wycofany. Wcześniej służyła ona do wstępnego wczytania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. W przypadku czcionek do pobrania może to potrwać 10 sekund. Zamiast tego użyj FontFamilyResolver.preload
    • Środowisko wykonawcze fontResource(FontFamily): Typeface zostało wycofane. Wcześniej służyła ona do wstępnego wczytania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. Zamiast tego użyj FontFamilyResolver.preload (If8e7c, b/174162090).
  • Teraz możesz określić typ treści dla elementów funkcji LazyVerticalGrid – funkcje item/items w LazyGridScope obsługują teraz ten parametr. Podanie tych informacji pomaga w skuteczniejszym wykorzystywaniu logiki do ponownego używania elementów i powtórnego używania treści tylko w przypadku elementów o podobnym typie. (I7b355, b/215372836)
  • Obiekty LazyListLayoutInfoLazyGridLayoutInfo mają teraz nowe właściwości: viewportSize, orientationreverseLayout (Ifc8ed, b/200920410)
  • Teraz możesz określić typ treści dla elementów kolumny lub wiersza leniwego – funkcje item/items w zakresie LazyListScope obsługują teraz ten parametr. Podanie tych informacji pomaga w skuteczniejszym wykorzystywaniu logiki do ponownego używania elementów i powtórnego używania treści tylko w przypadku elementów o podobnym typie. (I26506)
  • Konstruktor SubcomposeLayoutState przyjmujący maxSlotsToRetainForReuse został wycofany. Zamiast tego jest nowy konstruktor, który akceptuje SubcomposeSlotReusePolicy – nowy interfejs umożliwiający bardziej szczegółową kontrolę nad tym, które sloty powinny być zachowane na potrzeby ponownego użycia. (I52c4d)
  • Dodaje modyfikatory dla WindowInsets, zarówno dla wypełniania, jak i rozmiaru. Dzięki temu niektóre treści mogą się rozciągać na obszar wstawki, a główne treści pozostają poza tym obszarem. Na przykład za pomocą windowInsetsPadding można wypełnić obszar treści, aby uniknąć obszarów, które mogą być całkowicie lub częściowo zasłonięte. (Id0395, b/213942085)

Poprawki błędów

  • Pola tekstowe będą teraz wyświetlane nad klawiaturą, gdy są one zaznaczone i wyświetla się klawiatura w trybie miękkiego wprowadzania ADJUST_PAN. (I8eaeb, b/190539358, b/192043120)
  • Na komputerze kompozycja jest tworzona lokalnie w przypadku FontFamily.Resolver
    • Środowisko wykonawcze FontLoader na komputery zostało wycofane
    • Nowa fabryka createFontFamilyResolver na komputery (I6bbbb, b/174162090)
  • Typ klawiatury wirtualnej nie miga już podczas przełączania fokusu między polami tekstowymi. (I1bf50, b/187746439)
  • Pola tekstowe nie wymagają już dodatkowego naciśnięcia przycisku Wstecz, gdy widoczny jest uchwyt kursora. (Ideb4b, b/205726883)
  • Sposób działania lupy w przypadku zaznaczania tekstu został dopracowany, aby pasował do lupy na platformie. (Idd918, b/206833278)

Wersja 1.2.0-alpha02

26 stycznia 2022 r.

androidx.compose.foundation:foundation:1.2.0-alpha02androidx.compose.foundation:foundation-layout:1.2.0-alpha02 są dostępne. Wersja 1.2.0-alpha02 zawiera te commity.

Zmiany w interfejsie API

  • Dodaliśmy NonRestartableComposable do metod, które są przeciążeniem istniejących metod bez złożonej logiki. Zmniejsza to liczbę generowanych przez kompilator sprawdzeń memoizacji (równa) dla wszystkich parametrów, które są powtarzane w wywołanej funkcji wewnętrznej. (I90490)
  • Dodano modyfikatory excludeFromSystemGesture, aby ułatwić dostęp do funkcji setSystemGestureExclusionRects w Androidzie (I46f07).

Poprawki błędów

  • Sposób działania lupy w przypadku zaznaczania tekstu został dopracowany, aby pasował do lupy na platformie. (Idd918, b/206833278)
  • LazyColumn, LazyRow, Modifier.verticalScroll i inne kontenery korzystające z Modifier.scrollable obsługują teraz przewijanie za pomocą kółka myszy. (I2b5e1, b/198214718)

Wersja 1.2.0-alpha01

12 stycznia 2022 r.

androidx.compose.foundation:foundation:1.2.0-alpha01androidx.compose.foundation:foundation-layout:1.2.0-alpha01 są dostępne. Wersja 1.2.0-alpha01 zawiera te commity.

Zmiany w interfejsie API

  • Do elementów LazyColumn, LazyRowLazyVerticalGrid dodano nowy parametr userScrollEnabled, aby umożliwić użytkownikom tymczasowe lub stałe wyłączenie przewijania inicjowanego przez użytkownika za pomocą gestów dotykowych lub działań ułatwień dostępu. Przewijanie programowe za pomocą metod stanu nadal będzie dozwolone. (I7eae9, b/201150093)
  • Dodaj wywołanie zwrotne onSizeChanged do modyfikatora lupy. (I6879f)
  • Widget lupy wyświetla się teraz podczas przeciągania uchwytów zaznaczenia w SelectionContainer. (I30b38, b/139320979)

Poprawki błędów

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

Aktualizacje zależności

  • Teraz zależy od Kotlina 1.6.10.

Wersja 1.1

Wersja 1.1.1

23 lutego 2022 r.

androidx.compose.foundation:foundation:1.1.1androidx.compose.foundation:foundation-layout:1.1.1 są dostępne. Wersja 1.1.1 zawiera te zatwierdzenia.

Poprawki błędów

Wersja 1.1.0

9 lutego 2022 r.

androidx.compose.foundation:foundation:1.1.0androidx.compose.foundation:foundation-layout:1.1.0 są dostępne. Wersja 1.1.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.0.0

  • stabilna obsługa efektu przewijania do końca w Androidzie 12,
  • Ulepszone dopasowywanie rozmiaru dotyku
  • Pamiętaj, że w wersji Compose 1.0 komponenty Material Design będą rozszerzać swoją przestrzeń układu, aby spełniać wytyczne Material Design dotyczące rozmiaru docelowego elementu dotykowego. Na przykład docelowy element dotykowy przycisku będzie miał minimalny rozmiar 48 x 48 dp, nawet jeśli ustawisz mniejszy rozmiar przycisku. Dzięki temu komponenty Compose będą działać tak samo jak komponenty Material Design, co zapewni spójność, jeśli użyjesz widoków i Compose. Ta zmiana zapewnia też, że podczas tworzenia interfejsu użytkownika za pomocą komponentów Compose Material zostaną spełnione minimalne wymagania dotyczące dostępności docelowych elementów dotykowych.
  • stabilna obsługa kolumny nawigacji,
  • przekształciliśmy kilka wcześniej eksperymentalnych interfejsów API w stabilne.
  • Obsługa nowszych wersji Kotlina

Wersja 1.1.0-rc03

26 stycznia 2022 r.

androidx.compose.foundation:foundation:1.1.0-rc03androidx.compose.foundation:foundation-layout:1.1.0-rc03 są dostępne. Wersja 1.1.0-rc03 zawiera te commity.

Poprawki błędów

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

Wersja 1.1.0-rc01

15 grudnia 2021 roku

androidx.compose.foundation:foundation:1.1.0-rc01androidx.compose.foundation:foundation-layout:1.1.0-rc01 są dostępne. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Teraz można przekazywać ujemne przesunięcia przewijania do aplikacji LazyListState.scrollToItem()LazyListState.animateScrollToItem(). (Iceb90, b/184252837)
  • Naprawiono błąd powodujący brak działań związanych z przewijaniem w dostępności (I7cbfb).

Wersja 1.1.0-beta04

1 grudnia 2021 r.

androidx.compose.foundation:foundation:1.1.0-beta04androidx.compose.foundation:foundation-layout:1.1.0-beta04 są dostępne. Wersja 1.1.0-beta04 zawiera te commity.

Nowe funkcje

  • Zaktualizowano, aby zapewnić zgodność z Kotlin 1.6.0

Zmiany w interfejsie API

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

Poprawki błędów

  • Rozwiązanie problemu polegający na tym, że uchwyty tekstu nie poruszają się, gdy zmienia się widoczność IME. (I25f2e)

Wersja 1.1.0-beta03

17 listopada 2021 r.

androidx.compose.foundation:foundation:1.1.0-beta03androidx.compose.foundation:foundation-layout:1.1.0-beta03 są dostępne. Wersja 1.1.0-beta03 zawiera te commity.

Zmiany w interfejsie API

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

      var list by remember { mutableStateOf(listOf("A", "B", "C")) }
      LazyColumn {
          item {
              Button(onClick = { list = list.shuffled() }) {
                  Text("Shuffle")
              }
          }
          items(list, key = { it }) {
              Text("Item $it", Modifier.animateItemPlacement())
          }
      }
    
    • Gdy podasz klucz za pomocą atrybutu LazyListScope.item lub LazyListScope.items, ten modyfikator umożliwi animacje zmiany kolejności elementów. Oprócz zmiany kolejności elementów wszystkie inne zmiany pozycji spowodowane zdarzeniami, takimi jak zmiany układu lub wyrównania, będą również animowane. (I59e7b, b/150812265)

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 są dostępne. Wersja 1.1.0-beta02 zawiera te commity.

Poprawki błędów

  • Fale i inne wskazania będą teraz opóźniane tylko wtedy, gdy znajdują się w kontenerze Modifier.scrollable(), a nie zawsze, gdy wystąpi zdarzenie niedostępności. (Ibefe0, b/203141462)
  • Dodano eksperymentalny interfejs BringIntoView API, który umożliwia wysłanie do rodziców prośby o przewinięcie do elementu, aby był widoczny (Ib918d, b/195353459)

Darowizna zewnętrzna

  • Dodano Modifier.pointerHoverIcon (I95f01)

Wersja 1.1.0-beta01

27 października 2021 roku

androidx.compose.foundation:foundation:1.1.0-beta01androidx.compose.foundation:foundation-layout:1.1.0-beta01 są dostępne. Wersja 1.1.0-beta01 zawiera te commity.

Poprawki błędów

  • Dodano eksperymentalny interfejs BringIntoView API, który umożliwia wysłanie do rodziców prośby o przewinięcie do elementu, aby był widoczny (Ib918d, b/195353459)

Wersja 1.1.0-alpha06

13 października 2021 r.

androidx.compose.foundation:foundation:1.1.0-alpha06androidx.compose.foundation:foundation-layout:1.1.0-alpha06 są dostępne. Wersja 1.1.0-alpha06 zawiera te commity.

Zmiany w interfejsie API

  • Dodano przeciążenie bez podrzędnych dla Layoutu, które zwiększa wydajność (Ib0d9a)
  • Funkcja SemanticsNodeInteraction.performSemanticsAction zwraca teraz SemanticsNodeInteraction, z którego została wywołana. (I9e5db)
  • Dodano funkcję performScrollToNode(matcher: SemanticsMatcher), która przewija element z możliwością przewijania do treści dopasowanych przez podany element dopasowujący. (Ic1cb8)

Wersja 1.1.0-alpha05

29 września 2021 r.

androidx.compose.foundation:foundation:1.1.0-alpha05androidx.compose.foundation:foundation-layout:1.1.0-alpha05 są dostępne. Wersja 1.1.0-alpha05 zawiera te commity.

Zmiany w interfejsie API

Poprawki błędów

  • Naprawiono obsługę ułatwień dostępu w przypadku elementów do przewijania (zarówno statycznych, jak i niestatycznych) w związku z przewijaniem (I6cdb0).

Wersja 1.1.0-alpha04

15 września 2021 r.

androidx.compose.foundation:foundation:1.1.0-alpha04androidx.compose.foundation:foundation-layout:1.1.0-alpha04 są dostępne. Wersja 1.1.0-alpha04 zawiera te commity.

Zmiany w interfejsie API

  • Wycofane parametry performGestureGestureScope, które zostały zastąpione przez parametry 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 dostępności. (I2e14b, b/197751214)

Poprawki błędów

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

Wersja 1.1.0-alpha03

1 września 2021 roku

androidx.compose.foundation:foundation:1.1.0-alpha03androidx.compose.foundation:foundation-layout:1.1.0-alpha03 są dostępne. Wersja 1.1.0-alpha03 zawiera te commity.

Nowe funkcje

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

Zmiany w interfejsie API

  • Dodano efekt poświaty podczas przewijania. Dodano nowy eksperymentalny interfejs OverScrollConfiguration API, który umożliwia konfigurowanie efektu wizualnego przewijania. Aby wyłączyć efekt przewijania, wpisz null. (I0c304, b/171682480)
  • AwaitPointerEventScope ma teraz metody withTimeout() i withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
  • Dodano metodę testową, która umożliwia uzyskanie ograniczonych granic. (I6b28e)
  • Dodano minimalny rozmiar docelowego elementu dotykowego do ViewConfiguration do użycia w semantyce i wejściu wskaźnika w celu zapewnienia ułatwień dostępu. (Ie861c)

Wersja 1.1.0-alpha02

18 sierpnia 2021 r.

androidx.compose.foundation:foundation:1.1.0-alpha02androidx.compose.foundation:foundation-layout:1.1.0-alpha02 są dostępne. Wersja 1.1.0-alpha02 zawiera te commity.

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 są dostępne. Wersja 1.1.0-alpha01 zawiera te commity.

Zmiany w interfejsie API

  • Zaktualizowana metoda DrawScope#drawImage, która używa prostokątów źródła i miejsca docelowego do użycia opcjonalnego parametru FilterQuality. Jest to przydatne w przypadku grafiki pikseli, która ma być pikselizowa, gdy zostanie powiększona do grafiki pikseli. Zaktualizowano komponenty BitmapPainter + Image, aby używały opcjonalnego parametru FilterQuality (Ie4fb0, b/180311607).
  • Pole tekstowe teraz usuwa zaznaczenie po naciśnięciu przycisku Wstecz, co odpowiada działaniu pola tekstowego w Androidzie. (I3ca16, b/174173645)
  • Dodaj uchwyt kursora. (I07a82, b/173016579)

Poprawki błędów

  • Przewijanie za pomocą działań semantycznych w przypadku list opartych na lazy loadingu i zwykłych komponentów z przewijaniem jest teraz animowane (Id9066, b/190742024)

Darowizna zewnętrzna

  • LazyVerticalGrid obsługuje teraz zarówno parametry układu poziomego, jak i pionowego. (If9c92)

Wersja 1.0

Wersja 1.0.5

3 listopada 2021 r.

androidx.compose.foundation:foundation:1.0.5androidx.compose.foundation:foundation-layout:1.0.5 są dostępne. Wersja 1.0.5 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono problem ze śledzeniem awarii w przypadku instancji derivedStateOf. (aosp/1792247)

Wersja 1.0.4

13 października 2021 r.

androidx.compose.foundation:foundation:1.0.4androidx.compose.foundation:foundation-layout:1.0.4 są dostępne. Wersja 1.0.4 zawiera te zatwierdzenia.

Aktualizacje zależności

  • Zaktualizowano zależność od Kotlina 1.5.31

Wersja 1.0.3

29 września 2021 r.

androidx.compose.foundation:foundation:1.0.3androidx.compose.foundation:foundation-layout:1.0.3 są dostępne. Wersja 1.0.3 zawiera te zatwierdzenia.

Aktualizacje zależności

  • Zaktualizowano zależność od Kotlina 1.5.30

Wersja 1.0.2

1 września 2021 roku

androidx.compose.foundation:foundation:1.0.2androidx.compose.foundation:foundation-layout:1.0.2 są dostępne. Wersja 1.0.2 zawiera te zatwierdzenia.

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

Wersja 1.0.1

4 sierpnia 2021 r.

androidx.compose.foundation:foundation:1.0.1androidx.compose.foundation:foundation-layout:1.0.1 są dostępne. Wersja 1.0.1 zawiera te zatwierdzenia.

Aktualizacje zależności

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

Wersja 1.0.0

28 lipca 2021 roku

androidx.compose.foundation:foundation:1.0.0androidx.compose.foundation:foundation-layout:1.0.0 są dostępne. Wersja 1.0.0 zawiera te zatwierdzenia.

Najważniejsze funkcje wersji 1.0.0

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

Znane problemy

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

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

    Aby to naprawić, tymczasowo zwiększ wartość minSdkVersion do 24 lub wyższej w pliku build.gradle. Ten problem zostanie rozwiązany w następnej wersji Android Studio Bumblebee i 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 są dostępne. Wersja 1.0.0-rc02 zawiera te zatwierdzenia.

  • Zaktualizowano renderowanie obramowania w przypadku kształtów ogólnych, aby rozwiązać problemy z ścieżkami zdefiniowanymi z wymiarami stałymi. (aosp/1748871, b/191817116)

Wersja 1.0.0-rc01

1 lipca 2021 r.

androidx.compose.foundation:foundation:1.0.0-rc01androidx.compose.foundation:foundation-layout:1.0.0-rc01 są dostępne. Wersja 1.0.0-rc01 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Canvas obsługuje teraz parametr contentDescription dotyczący ułatwień dostępu. (Ib547c)

Poprawki błędów

  • Wyłączony przycisk, karta, pola wyboru i ogólne Modifier.clickable(enabled=false) blokują przekazywanie kliknięć do elementu nadrzędnego. (Ic2c3b, b/183908811)

Wersja 1.0.0-beta09

16 czerwca 2021 r.

androidx.compose.foundation:foundation:1.0.0-beta09androidx.compose.foundation:foundation-layout:1.0.0-beta09 są dostępne. Wersja 1.0.0-beta09 zawiera te commity.

Zmiany w interfejsie API

  • Użytkownik ManualFrameClock został usunięty. Jeśli chcesz sterować animacjami, użyj zamiast tego composeTestRule.mainClock. (I3c3e8, b/189951065)
  • zmiana enum Role i LiveRegionMode na klasy wbudowane z konstruktorem prywatnym (Id1890);
  • Wielkość liter w zależności od klawiatury jest zamieniana na klasę wstawianą. (Id5a1c)
  • TextOverflow został zmieniony na klasę wbudowaną. (I433af)

Poprawki błędów

  • Gdy określisz unikalne klucze dla elementów kolumny/wierszy Lazy, pozycja przewijania będzie zachowana na podstawie klucza, co oznacza, że jeśli dodasz lub usuniesz elementy przed aktualnie widocznym elementem, element z danym kluczem pozostanie pierwszym widocznym. (Id263f, b/184257857)
  • Obecnie kluczowe stałe to @ExperimentalComposeUiApi. Kod korzystający z niego może deklarować prywatne stałe przed stabilizacja. (Ia5d48)
  • Dodaliśmy do AndroidComposeTestRule strategię IdlingStrategy, której można używać w ramkach testowych do instalowania alternatywnego mechanizmu await lub do osiągnięcia spokoju. Użyj opcji AndroidComposeTestRule.setIdlingStrategyFactory(), zanim test zacznie instalować własną strategię. (I608fa)

Dodano reguły profilu

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

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

Co to są reguły profilu?

  • Reguły profilu biblioteki są określone w pliku tekstowym baseline-prof.txt znajdującym się w katalogu src/main lub równoważnym. Plik określa regułę na wiersz, gdzie reguła w tym przypadku jest wzorcem dopasowywania do metod lub klas w bibliotece. Składnia tych reguł jest superzbiorem czytelnego dla człowieka formatu profilu ART, który jest używany podczas korzystania z adb shell profman --dump-classes-and-methods .... Te reguły mogą mieć jedną z 2 form, aby kierować się na metody lub klasy.

  • Reguła metody będzie miała ten wzór:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • Reguła klasy będzie miała ten wzór:

    <CLASS_DESCRIPTOR>
    
  • Tutaj <FLAGS> to co najmniej jeden z znaków H, S lub P, który wskazuje, czy ta metoda powinna być oznaczona jako „Aktywna”, „Uruchamianie” lub „Po uruchomieniu”.

  • <CLASS_DESCRIPTOR> to deskryptor klasy, do której należy docelowa metoda. Na przykład klasa androidx.compose.runtime.SlotTable miałaby opis Landroidx/compose/runtime/SlotTable;.

  • <METHOD_SIGNATURE> to sygnatura metody, która zawiera nazwę, typy parametrów i typ zwracany metody. Na przykład metoda fun isPlaced(): Boolean w klasie LayoutNode ma sygnaturę isPlaced()Z.

  • Te wzorce mogą zawierać symbole wieloznaczne (**, *?), aby jedno reguła obejmowała wiele metod lub klas.

Do czego służą zasady?

  • Metoda z flagą H wskazuje, że jest to metoda „gorąca” i należy ją skompilować z wyprzedzeniem.

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

  • Metoda z flagą P wskazuje, że jest wywoływana po uruchomieniu.

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

Jak to działa?

  • Biblioteki mogą definiować te reguły, które zostaną zapakowane w elementy AAR. Gdy skompilowana aplikacja zawiera te elementy, reguły są scalane, a scalane reguły są używane do tworzenia kompaktowego binarnego profilu ART, który jest specyficzny dla aplikacji. ART może następnie wykorzystać ten profil, gdy aplikacja zostanie zainstalowana na urządzeniach, aby z wyprzedzeniem skompilować określony podzbiór aplikacji w celu poprawy jej wydajności, zwłaszcza podczas pierwszego uruchomienia. Pamiętaj, że nie będzie to miało wpływu na aplikacje z możliwością debugowania.

Wersja 1.0.0-beta08

2 czerwca 2021 r.

androidx.compose.foundation:foundation:1.0.0-beta08androidx.compose.foundation:foundation-layout:1.0.0-beta08 są dostępne. Wersja 1.0.0-beta08 zawiera te commity.

Zmiany w interfejsie API

  • Typ NestedScrollSource został zastąpiony przez klasę wbudowaną. (Ie321b, b/187055290)
  • Przekształciliśmy użycie wyliczeń w klasy wbudowane, aby uniknąć problemów z wyczerpującymi instrukcjami warunkowymi, gdy dodawane są nowe wartości wyliczenia. (I2b5eb)
  • Dodanie czasu oczekiwania na kliknięcie lub przełączenie, aby zapobiec wyświetlaniu efektu falowania podczas przewijania lub przeciągania (Ia2704, b/168524931).
  • Właściwości ContentDescription i Text nie są już pojedynczymi wartościami, ale listami. Dzięki temu można je łączyć w postaci niemodyfikowanej, a nie w postaci konkatenacji. Udostępniliśmy też lepsze interfejsy API do testowania, które wykorzystują te zmiany (Ica6bf, b/184825850).
  • Środowisko wykonawcze Modifier.focusModifier() zostało wycofane i zastąpione środowiskiem Modifier.focusTarget() (I6c860)
  • Enum KeyboardType został zastąpiony przez wbudowaną klasę. (I73045, b/187055290)
  • Wymiana enumu FocusState na interfejs FocusState (Iccc1a, b/187055290)
  • Enum ImeAction został zastąpiony przez wbudowaną klasę. (I18be5, b/187055290)
  • Funkcje AnnotatedString.withAnnotation to teraz ExperimentalTextApi, a nie ExperimentalComposeApi. (I0cd0a)
    • Konstruktor TextUnit z parametrem TextUnitType używa teraz ExperimentalTextApi zamiast ExperimentalComposeApi.
  • PaddingValues ma teraz wartość @Stable zamiast @Immutable (I88c50)

Poprawki błędów

  • Naprawia awarie podczas przytrzymania pustego obszaru w niepustym tekście. (I33ab5, b/187437299)
  • Pokaż pasek narzędzi po wybraniu wszystkich (I495d9, b/185919613)
  • Naprawiono problem z przesuwanymi kontenerami, które obcinały elementy na osi poprzecznej. Można było to łatwo odtworzyć, jeśli masz element LazyRow z elementami typu Card. Teraz cień nie będzie przycinany. (Icb635, b/186318448)
  • Rozwiązano problem, który powodował, że fale lub inne wskazania czasami zacinały się podczas długiego kliknięcia przy użyciu Modifier.combinedClickable (I2298c, b/186223077)
  • Teraz funkcje detectDragGesures, detectVerticalGesturesdetectHorizontalGestures będą automatycznie przetwarzać zmiany pozycji, więc nie trzeba wywoływać funkcji change.consumePositionChange w obsługach zwrotnych onDrag (I42fc4, b/185096350, b/187320697)
  • Modifier.onGloballyPositioned() zostało zmienione, aby raportować współrzędne tego modyfikatora w łańcuchu modyfikatorów, a nie współrzędne układu po zastosowaniu wszystkich modyfikatorów. Oznacza to, że kolejność modyfikatorów wpływa na to, jakie współrzędne zostaną zgłoszone. (Ieb67d, b/177926591)

Wersja 1.0.0-beta07

18 maja 2021 r.

androidx.compose.foundation:foundation:1.0.0-beta07androidx.compose.foundation:foundation-layout:1.0.0-beta07 są dostępne. Wersja 1.0.0-beta07 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • W przypadku kolumny/wiersza LazyColumn/Row (I8a4bc, b/184940225) wprowadzono logikę wstępnego pobierania następnego widocznego elementu.
  • Dodano uchwyt do zaznaczania klipów (Iff80d, b/183408447).

Poprawki błędów

  • LazyColumn/Row będzie teraz utrzymywać aktywne (nieusunięte) maksymalnie 2 widoczne wcześniej elementy, nawet jeśli zostały już przewinięte. Dzięki temu komponent może ponownie użyć aktywnych podkompozycji, gdy będziemy musieli utworzyć nowy element, co poprawia wydajność przewijania. (Ie5555)
  • Usuń paintBackground. (I38660)
  • Zaznacz tło za pomocą narzędzia DrawScope. (I73c61, b/186674472)
  • Rozwiązaliśmy regresję w wersji beta06, która dotyczyła wiersza/kolumny używającej układów spacedBy do rozmieszczania elementów ważonych podrzędnych. (Ifaf8c, b/187326588)

Wersja 1.0.0-beta06

5 maja 2021 roku

androidx.compose.foundation:foundation:1.0.0-beta06androidx.compose.foundation:foundation-layout:1.0.0-beta06 są dostępne. Wersja 1.0.0-beta06 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Rozwiąż konflikt z nawigacją przy użyciu gestów (I1145e)
  • Dodano interfejsy API ułatwień dostępu CollectionInfo i CollectionItemInfo, które umożliwiają oznaczanie kolekcji i jej elementów dla usług ułatwień dostępu (Id54ef, b/180479017).
  • Dodano funkcję SemanticsActions.ScrollToIndex, która umożliwia przewijanie listy z indeksyzowanymi elementami do elementu o określonym indeksie, oraz funkcję SemanticsProperties.IndexForKey, która zwraca indeks elementu na liście z elementami kluczowymi. Oba działania są implementowane przez LazyList.
    • Dodano SemanticsNodeInteraction.performScrollToIndex, które przewija listę do podanego indeksu, oraz SemanticsNodeInteraction.performScrollToKey, które przewija listę do elementu z podanym kluczem. (I4fe63, b/178483889, b/161584524)
  • Dodanie obsługi zapisywania obiektu AnnotatedString do TextFieldValue.Saver. Dodano funkcje pomocnicze addTtsAnnotation i withAnnotation do klasy AnnotatedString.Builder (I8cbdc, b/178446304).
  • Do PaddingValues(horizontal, vertical) dodano domyślne wartości parametru 0.dp (I05571, b/181336792).

Poprawki błędów

  • Elementy podrzędne wiersza i kolumny z wartością weight(fill = false) nie powodują już, że element nadrzędny wypełnia całą dostępną przestrzeń osi głównej. (Ied94d, b/186012444, b/184355105)

Wersja 1.0.0-beta05

21 kwietnia 2021 r.

androidx.compose.foundation:foundation:1.0.0-beta05androidx.compose.foundation:foundation-layout:1.0.0-beta05 są dostępne. Wersja 1.0.0-beta05 zawiera te commity.

Zmiany w interfejsie API

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

Poprawki błędów

  • Naprawiono działania ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRightaccessibilityActionScrollDown dotyczące przewijania w ramach dostępności. Zamiast przewijania do końca ekranu, teraz przewinie się o jeden ekran w podanym kierunku. (Ieccb0)
  • Pliki AndroidManifest z ui-test-manifest i ui-tooling-data są teraz zgodne z Androidem 12 (I6f9de, b/184718994)

Wersja 1.0.0-beta04

7 kwietnia 2021 r.

androidx.compose.foundation:foundation:1.0.0-beta04androidx.compose.foundation:foundation-layout:1.0.0-beta04 są dostępne. Wersja 1.0.0-beta04 zawiera te commity.

Zmiany w interfejsie API

  • Zmień nazwy funkcji hideSoftwareKeyboard i showSoftwareKeyboard w klasie SoftwareKeyboardController odpowiednio na hide()show().
    • Udostępnij pełny interfejs CompositionLocal dla klasy LocalSoftwareKeyboardController, aby umożliwić jej ustawienie (szczególnie przydatne w testach) (I579a6)
  • TextOverflow.Visible jest wprowadzany. (Ic8f89)
  • Usunięto publiczne wystąpienia parametrów RowScope, ColumnScope, BoxScopeBoxWithConstraintsScope. (I4e83e, b/181869067)

Poprawki błędów

  • Rozwiązaliśmy problem, gdy elementy LazyColumn/LazyRow znajdujące się na krawędziach były nieprawidłowo umieszczone po szybkim przełączeniu (Ie4d13, b/183877420)
  • Przed tą zmianą lokalne funkcje kompozytowe można było pominąć na podstawie ich parametrów. Po tej zmianie żadne lokalne funkcje kompozytowe nie będą pomijane. Ta zmiana została wprowadzona, ponieważ funkcje lokalne często i zwykle przechwytują parametry z funkcji nadrzędnej, a ich pomijanie jest częstym źródłem błędów.

    Podsumowując, rozważ ten przykład:

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

    Przed tą zmianą funkcja kompozytowa ShowCount zawsze pomijała, nawet po zaktualizowaniu 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 są dostępne. Wersja 1.0.0-beta03 zawiera te komitowane zmiany.

Zmiany w interfejsie API

  • Środowisko wykonawcze DefaultMonotonicFrameClock zostało wycofane. Wywołanie funkcji withFrameNanos lub Recomposer.runRecomposeAndApplyChanges bez parametru MonotonicFrameClock spowoduje wyjątek 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 są dostępne. Wersja 1.0.0-beta02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Dodano kilka drobnych optymalizacji w logice pomiaru LazyColumn (Ic6889).
  • Dodano nowe lokalne API LocalSoftwareKeyboardController do komponowania, które zastępuje poprzedni interfejs SoftwareKeyboardController w TextField. (I5951e, b/168778053)
  • Dodano nowe lokalne API LocalSoftwareKeyboardController do komponowania, które zastępuje poprzedni interfejs SoftwareKeyboardController w TextField. (I84472, b/168778053)

Poprawki błędów

  • Wdrożenie ograniczeń dotyczących publicznego używania eksperymentalnych interfejsów API (I6aa29, b/174531520)

Wersja 1.0.0-beta01

24 lutego 2021 r.

androidx.compose.foundation:foundation:1.0.0-beta01androidx.compose.foundation:foundation-layout:1.0.0-beta01 są dostępne. Wersja 1.0.0-beta01 zawiera te commity.

To pierwsza wersja Compose 1.0.0 w wersji beta.

Zmiany w interfejsie API

  • Do detectDragGestures dodano wywołanie zwrotne onStart (I67269, b/179995594).
  • Modyfikatory służące do dopasowywania rozmiaru do wartości bezwzględnej nie są już eksperymentalne. (I15744)
  • Usunięto asercje dp (I798d2)
  • Z wszystkich pól tekstowych usunięto wywołanie metody SoftwareKeyboardController, które wkrótce zostanie zastąpione nowym interfejsem API. (Iae869, b/168778053)
  • MeasureBlocks zostało przemianowane na MeasurePolicy i stało się przyjaznym interfejsem. Interfejsy API dotyczące układu zostały zaktualizowane i uproszczone, aby używały MeasurePolicy. (Icab48, b/167662468, b/156751158)
  • Wartość InteractionState została zastąpiona wartością [Mutable]InteractionSource
    • Interfejsy odpowiadają za emitowanie i zbieranie zdarzeń interakcji.
    • Zamiast przekazywania wartości interactionState = remember { InteractionState() } do komponentów takich jak ButtonModifier.clickable(), użyj wartości interactionSource = remember { MutableInteractionSource() }.
    • Zamiast: Interaction.Pressed in interactionState użyj funkcji rozszerzenia w źródle interakcji, np. InteractionSource.collectIsPressedAsState().
    • W skomplikowanych przypadkach możesz używać parametru InteractionSource.interactions do obserwowania strumienia interakcji. Więcej informacji znajdziesz w dokumentacji i przykładach dotyczących źródła interakcji.
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • Usunięto przestarzałe metody LayoutCoordinates. Zamiast właściwości positionInParent i boundsInParent należy używać funkcji (I580ed, b/169874631, b/175142755).
  • Utworzono nową klasę TextInputSession na potrzeby sesji wprowadzania danych z niskiego poziomu komponentów tekstowych, takich jak CoreTextField. (I8817f, b/177662148)
  • Element Placeable udostępnia teraz wartość measuredSize, która określa rozmiar, do którego został zmierzony układ podrzędny. Ten rozmiar może nie spełniać ograniczeń dotyczących pomiarów. (Ib2729, b/172560206, b/172338608)
  • Dodaj modyfikator selectionGroup, który umożliwia oznaczanie kolekcji kart lub przycisków opcji na potrzeby ułatwień dostępu (Ie5c29)
  • Dodaj LazyListState.animateScrollToItem

    Ta metoda płynnie przewija do konkretnego elementu na liście. (I4bfd7)

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

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

  • Pole defaultFactory w przypadku compositionLocalOf i staticCompositionLocalOf jest teraz wymagane, a nie opcjonalne.

    Ta zmiana usuwa potencjalny błąd typu w przypadku typów, które nie mogą być puste, gdy nie podano fabryki domyślnej. Wcześniej w przypadku typu, który nie może przyjmować wartości null, funkcja ta zwracała odwołanie null.

    W przypadku typów z opcją null warto podać { null } jako domyślną fabrykę.

    Nie zalecamy używania zmiennych lokalnych z typami, które nie mogą być puste, chyba że można podać sensowne wartości domyślne. Jeśli nie ma żadnej sensownej wartości domyślnej, funkcja lambda defaultFactory powinna wyrzucić wyjątek. Jednak wywołanie wyjątku oznacza, że konsumenci funkcji lokalnej będą mieli do niej ukrytą zależność, która nie jest wymuszana przez system typów. (Ifbd2a)

  • Zmieniono wartość parametru Indication#createIndication() na Indication#rememberUpdatedIndication(InteractionState) i usunięto parametr InteractionState z funkcji IndicationInstance#drawIndication(). Obiekt IndicationInstance powinien odpowiadać tylko za rysowanie efektów wizualnych, a nie uruchamianie animacji ani zapisywanie stanu w odpowiedzi na zmiany stanu InteractionState. Te animacje i zapisywanie stanu powinny odbywać się w ramach rememberUpdatedIndication(). Zmieniono też parametr indication w pliku Modifier.indication, aby był wymagany. (Ic1764, b/152525426)

  • Działania związane z tekstem automatycznie sprawdzają ostrość (I13777, b/179648629)

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

  • Pozycja przewijania w funkcjach Modifier.verticalScroll()/horizontalScroll() jest teraz reprezentowana za pomocą typów Int (I81298)

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

  • Element FlingConfig został przemianowany na FlingBehavior i umożliwia teraz dostosowywanie animacji zawieszenia zamiast wstępnie zdefiniowanych wartości zanikania. (I02b86, b/175294473)

  • Zmieniliśmy nazwy modyfikatorów rozmiaru. Zmienne width/height/size zostały przemianowane na requiredWidth/requiredHeight/requiredSize. Nazwa Modifier.preferredWidth/preferredHeight/preferredSize została zmieniona na width/height/size. (I5b414)

  • Parametr defaultMinSizeConstraints zmienił nazwę na defaultMinSize. (I4eaae)

  • Modifier.tapGestureFilter został usunięty. Zamiast tego użyj Modifier.pointerInput { detectTapGestures(...) }. (I266ed, b/175294473)

  • usunięto częściowe zużycie z systemu wskaźnika. Zalecaną metodą koordynacji częściowego zużycia jest Modifier.nestedScroll. (Ie9c9b)

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

  • Klasa AnimationClockObservable i jej podklasy zostały usunięte. AnimatedFloat został usunięty. (Icde52, b/177457083)

  • Funkcje drawerState.open() i drawerState.close() są teraz zawieszone. Aby uzyskać zakres kompozycji, w której są wywoływane, użyj funkcji rememberCoroutineScope(). (I16f60, b/175294473)

  • Providers zostało zmienione na CompositionLocalProvider

    • Konstruktor kompozycji nie akceptuje już parametru key i został wycofany.
    • currentCompositeKeyHash została przekształcona z funkcji na najwyższym poziomie na funkcję składaną na najwyższym poziomie.
    • Komponenty CompositionData i CompositionGroup zostały przeniesione do przestrzeni nazw androidx.compose.runtime.tooling.
    • Zmienna ComposableLambda została zastąpiona interfejsem zamiast konkretnej klasy i nie zawiera już parametrów typu.
    • Zmienna ComposableLambdaN została zamieniona na interfejs zamiast konkretnej klasy i nie ma już parametrów typu.
    • Funkcja snapshotFlow została przeniesiona do przestrzeni nazw androidx.compose.runtime.
    • metoda scalania w SnapshotMutationPolicy nie jest już eksperymentalna
    • Funkcja @TestOnly poziomu najwyższego clearRoots została usunięta. Nie jest już potrzebne.
    • Funkcje keySourceInfoOf i resetSourceInfo zostały usunięte. Nie są już potrzebne.
    • Funkcja Composer.collectKeySourceInformation została usunięta. Nie jest już potrzebne.
    • Metody isJoinedKey, joinedKeyLeft i joinedKeyRight zostały usunięte. Nie są już potrzebne.
    • Różne interfejsy API najwyższego poziomu zostały przeniesione i zreorganizowane w różne pliki. Ze względu na semantykę klasy plików w Kotlinie spowoduje to utratę zgodności binarnej, ale nie źródłowej, więc nie powinno stanowić problemu dla większości użytkowników.
    • (I99b7d, b/177245490)
  • Zmienna Modifier.scrollable została przerobiona. Teraz zamiast klasy ScrollableController używa interfejsu Scrollable (I4f5a5, b/174485541, b/175294473)

  • Funkcja Modifier.draggable przyjmuje teraz typ DraggableState zamiast prostej funkcji lambda. Możesz utworzyć stan za pomocą funkcji rememberDraggableState { delta -> }, aby uzyskać takie samo zachowanie jak wcześniej (Ica70f, b/175294473)

  • Dodano modyfikatory requiredWidth(IntrinsicSize) i requiredHeight(IntrinsicSize) na potrzeby wymaganego rozmiaru do rozmiarów bezwzględnych. (I0a6b4)

  • Wycofany interfejs emptyContent() został usunięty. Zamiast tego użyj {}. (Idb33f, b/179432510)

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

Poprawki błędów

  • Dodano nowe lokalne API kompozycyjne LocalSoftwareKeyboardController, które zastępuje poprzedni interfejs SoftwareKeyboardController w TextField. (I658b6, b/168778053)

Wersja 1.0.0-alpha12

10 lutego 2021 r.

androidx.compose.foundation:foundation:1.0.0-alpha12androidx.compose.foundation:foundation-layout:1.0.0-alpha12 są dostępne. Wersja 1.0.0-alpha12 zawiera te commity.

Zmiany w interfejsie API

  • Funkcja Modifier.pointerInput wymaga teraz kluczy zapamiętania, aby wskazywać, kiedy coroutine wykrywania danych wejściowych wskaźnika powinna zostać ponownie uruchomiona w przypadku nowych zależności. (I849cd)
  • Aktualizacja testów: funkcja hasText() będzie sprawdzać, czy w polu tekstowym znajduje się tekst wejściowy, etykietowy, podpowiedzi lub tekst zastępczy (Iab803)
  • Dodano typ PaddingValues.Absolute, który można używać w interfejsach API obsługujących typ PaddingValues. (Ia5f30)
  • Metoda onImeActionPerformed została wycofana. Zamiast niej używaj metody KeyboardActions (If0bbd, b/179071523)
  • Aby lepiej dopasować konwencje nazewnictwa do bibliotek ImageBitmap i ImageVector, zmieniliśmy nazwę klasy ImagePainter na BitmapPainter, a klasy VectorPainter – na VectorPainter. (Iba381, b/174565889)
  • Lepsze testowanie interfejsów API pod kątem podciągu pod kątem podkładu jako argumentu (Icbe78)
  • Wprowadziliśmy element InfiniteAnimationPolicy kontekstu coroutine, który będzie stosowany w nieskończonych animacjach. Domyślnie nie jest instalowana żadna zasada, z wyjątkiem testów z użyciem ComposeTestRule. (I50ec4, b/151940543)
  • Funkcje Animatable.snapTo i Animatable.stop są teraz funkcjami zawieszania (If4288)
  • ComponentActivity.setContent zostało przeniesione do androidx.activity.compose.setContent w module androidx.activity:activity-compose. (Icf416)
  • Metody destrukturyzacji i copy() zostały usunięte z kilku klas, w których były rzadko używane. (I26702, b/178659281)
  • Dodano obsługę kluczy niestandardowych w przypadku kolumn i wierszy Lazy Dzięki temu możemy mądrzej zarządzać przeszeregowaniem elementów. Stan zapisany w blokach zapamiętaj {} będzie się zmieniać wraz z elementem, gdy zmienisz kolejność elementów lub usuniesz element z poziomu środkowego.

    LazyColumn {
        items(users, key = { user -> user.id }) { ... }
    }
    
  • Zmieniono Indication#createInstance na @Composable oraz zmodyfikowano LocalIndication tak, aby zawierała obiekt Indication, a nie () –> Indication. (I5eeea, b/157150564)

  • Tabela Constraints.enforce została zastąpiona tabelą Constraints.constrain. (I8b8ea)

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

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

  • Dodano semantyczne pole tekstowe z możliwością edycji, aby oznaczyć edytowalny tekst wejściowy w polu tekstowym na potrzeby ułatwień dostępu, oraz odpowiednie metody testów, aby sprawdzić semantykę (I8e07a).

  • Teraz atrybut Modifier.clickable nie obsługuje podwójnego ani długiego kliknięcia. Aby uzyskać tę funkcję, użyj Modifier.combinedClickable. (Iafad1)

  • Funkcja toIntPx() została przemianowana na roundToPx(). (I9b7e4, b/173502290)

  • Nazwa interfejsu API IntBounds została zmieniona na IntRect, a sam interfejs API został ulepszony. (I1f6ff)

  • Metoda Modifier.dragGestureFilter została wycofana. Zamiast tego użyj Modifier.pointerInput { detectDragGestures (...)}. Możesz też użyć metody Modifier.draggable do przeciągania po jednej osi (I0ba93, b/175294473).

  • Zmieniliśmy nazwę sekcji Ambients, aby pasowała do nazwy Ambient -> CompositionLocal. Elementy tła miały kiedyś nazwę „AmbientFoo”, a teraz mają nazwę „LocalFoo”. (I2d55d)

  • Zaznaczenie zostało przeniesione do modelu podstawowego. (I7892b)

  • Podobnie jak w przypadku usunięcia kompozytowego komponentu state { 0 } i promocji komponentu remember { mutableStateOf(0) }, usuniemy komponent savedInstanceState { 0 }. Zamiast tego użyj funkcji rememberSaveable { mutableStateOf(0) }, która automatycznie zapisuje i przywraca stan, jeśli typ użyty w MutableState może być przechowywany w pakiecie. Jeśli wcześniej przekazywałeś niestandardowy obiekt zapisywania, teraz musisz użyć nowej przeciążonej funkcji rememberSaveable z parametrem stateSaver. Użycie będzie wyglądać tak: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)

  • Dodano semantykę hasła dla funkcji ułatwień dostępu (I231ce)

  • Dodano ProgressBarRangeInfo.Indeterminate, aby oznaczyć nieokreślone paski postępu na potrzeby ułatwień dostępu (I6fe05).

  • Czas odtwarzania w animacji jest teraz nieskończony do nanosekund (If776a)

  • Annotatorka @ComposableContract została wycofana na rzecz 3 bardziej szczegółowych adnotacji.

    @ComposableContract(restartable = false) stało się @NonRestartableComposable, @ComposableContract(readonly = true) – @ReadOnlyComposable, @ComposableContract(preventCapture = true) – @DisallowComposableCalls, a @ComposableContract(tracked = true) zostało usunięte. (I60a9d)

  • Narzędzia emptyContent()(@Composable () -> Unit).orEmpty() zostały wycofane, ponieważ nie mają już żadnego pozytywnego wpływu na wydajność ani wartości (I0484d)

  • Rekompilatory można teraz zamknąć. Zamknięte rekompilatory będą kontynuować rekompilację do momentu zakończenia wykonania podprocesów potomnych. Funkcja Recomposer.shutDown została przemianowana na cancel, aby odróżnić ją od funkcji close. (Ib6d76)

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

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

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

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

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

  • Wiele starszych interfejsów API wycofanych z użycia w pakiecie ui zostało usuniętych. (I2f2dc)

  • Element compose:runtime-dispatch został wycofany. MonotonicFrameClock znajdziesz teraz w komponencie compose:runtime, a AndroidUiDispatcher – w komponencie compose:ui. (Ib5c36)

  • Parametry RounderCornerShape, CutCornerShape i CornerBasedShape zostały przemianowane z left/right (lewo/prawo) na start/end (początek/koniec), aby umożliwić automatyczne lustrzane odwzorowanie kształtu w kierunku RTL. Parametry AbsoluteRounderCornerShape i AbsoluteCutCornerShape zostały wprowadzone na potrzeby przypadków, w których nie jest pożądane automatyczne lustrzane odbicie. (I61040, b/152756983)

  • Zmienna canDrag została usunięta z elementu Modifier.scrollable. (Id66e7, b/175294473)

  • Interfejs API, do którego kieruje się wtyczka kompilatora Compose, został przebudowany, aby używać interfejsu zamiast konkretnej klasy. Interfejs nie używa już też parametru typu.

    Ta zmiana jest zmianą wewnętrzną, która nie powinna mieć wpływu na zgodność kodu źródłowego, ale powoduje zmianę binarną. (I3b922, b/169406779)

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

  • Element AnimatedValue/Float został wycofany. Zamiast tego użyj interfejsu Animatable. (I71345, b/177457083)

    • Usunięcie CoreText i CoreTextField z publicznego interfejsu API
    • Usunięto przestarzałą metodę SelectionContainer (I99c19).
  • Usunięcie przestarzałych funkcji przewijania bez zawieszania W nawiązaniu do zmian wprowadzonych w poprzedniej wersji funkcje przewijania bez zawieszania zostały całkowicie usunięte. Przekształć je na funkcje zawieszania o tych samych nazwach. Zakres współprogramu można uzyskać za pomocą funkcji rememberCoroutineScope(). (I3d39c, b/178169563)

  • Interfejs androidx.compose.foundation.layout.ConstraintLayout został wycofany i zastąpiony przez androidx.constraintlayout.compose.ConstraintLayout. Musisz dodać zależność od pliku androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01. (I87adc)

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

  • Użytkownik Recomposer.current() został usunięty. [Abstract]ComposeView jest teraz domyślnie ustawiony na leniwie tworzone, ograniczone do okna rekompilatory, które są obsługiwane przez ViewTreeLifecycleOwner dla okna. Rekompozycja i ticki animacji oparte na metodzie FrameNano są wstrzymywane, gdy cykl życia hosta jest zatrzymany. (I38e11)

  • Recomposer.runningRecomposers udostępnia teraz globalny stan StateFlow tylko do odczytu RecomposerInfo, który umożliwia obserwowanie bieżącego stanu kompilacji w trakcie procesu. Używaj tego interfejsu API zamiast Recomposer.current(), który został wycofany. (If8ebe)

Wersja 1.0.0-alpha11

28 stycznia 2021 roku

androidx.compose.foundation:foundation:1.0.0-alpha11androidx.compose.foundation:foundation-layout:1.0.0-alpha11 są dostępne. Wersja 1.0.0-alpha11 zawiera te commity.

Zmiany w interfejsie API

  • Wycofaj nie zawieszające scrollBy i usuń nie zawieszające scrollTo

    Zalecamy teraz używanie funkcji zawieszania, aby kontrolować przewijanie i czekać na jego zakończenie. W ramach tego przejścia wycofujemy lub usuwamy wersje tych funkcji, które nie zostały zawieszone. (Ie9ced)

  • Wycofanie funkcji smoothScrollBy, która nie zawiesza animacji. Zalecamy teraz używanie funkcji zawieszania, aby kontrolować przewijanie i czekać na jego zakończenie. W ramach tej zmiany wycofujemy wersje tych funkcji, które nie zostały zawieszone. (I12880)

  • Do obrazu i ikony dodano parametr opisu treści. Służy do przekazywania opisu usług ułatwień dostępu (I2ac4c).

  • Pole tekstowe podstawowe otrzymało nowy parametr o nazwie „decorationBox”. Umożliwia dodawanie elementów dekoracyjnych, takich jak ikony, elementy zastępcze, etykiety itp., do pola tekstowego i zwiększanie obszaru docelowego tego pola. (I16996)

  • Parametr canDrag został usunięty z funkcji Modifier.draggable (Ic4bec, b/175294473).

  • Usunięto AnimatedFloat.fling, który przyjmuje FlingConfig. Zamiast tego użyj funkcji suspend Animatable.animateDecay. (I4659b, b/177457083)

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

    • InlineTextContent
    • LocaleList
    • (I605c7)
  • Teraz można tworzyć elementy klikalne, przełączalne i wybierane poza kompozycją (I0a130, b/172938345, b/175294473).

  • Komórka/wiersz z możliwością przewijania zostały wycofane. Korzystanie z ScrollableColumn jest mniej wydajne niż z LazyColumn, gdy masz duży sformatowany tekst, ponieważ za pomocą LazyColumn możemy tylko komponować, mierzyć i rysować widoczne elementy. Aby uniemożliwić użytkownikom korzystanie z nieefektywnych metod, zdecydowaliśmy się wycofać klasy ScrollableColumn i ScrollableRow oraz zachęcić do używania klas LazyColumn i LazyRow. Użytkownicy mogą zrezygnować z zachowania typu lazy i używać modyfikatorów bezpośrednio w ten sposób: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)

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

  • Usunięto przestarzały element AbsoluteArrangement. (Iffa96, b/177641870)

  • Do Boxa dodano parametr propagateMinConstraints, który umożliwia określenie, czy przychodzące minimalne ograniczenia mają być przekazywane do treści Boxa. Wartość domyślna to fałsz. (I0125b, b/152613457)

Poprawki błędów

  • Interfejsy onCommit, onDispose i onActive zostały wycofane na rzecz interfejsów SideEffect i DisposableEffect (If760e).
  • Element WithConstraints został przerobiony na BoxWithConstraints i przeniesiony do pakietu foundation.layout. (I9420b, b/173387208)
  • Zmiany funkcji fabrycznych dotyczące czcionki, rodziny czcionek lub kroju pisma

    • Dodano funkcje fabryczne, które zaczynają się od wielkiej litery
    • wycofane wcześniejsze funkcje fabryczne z małymi literami na początku,
    • Nowe funkcje fabryczne zwracają FontFamily zamiast podklas
    • Ukryj konstruktory podklas, aby można je było tworzyć tylko za pomocą funkcji fabrycznych.
    • Zmieniono nazwę Font.asFontFamily na Font.toFontFamily.
    • (I42aa7)
  • Wprowadziliśmy funkcję ComposeContentTestRule, która rozszerza funkcję ComposeTestRule i definiuje funkcję setContent, która została usunięta z funkcji ComposeTestRule. Dodano metodę fabryczną createEmptyComposeRule(), która zwraca ComposeTestRule i nie uruchamia Activity. Użyj tego polecenia, gdy chcesz uruchomić aktywność podczas testu, np.za pomocą ActivityScenario.launch (I9d782, b/174472899).

  • Funkcja animateAsState została zastąpiona przez animateFooAsState, gdzie Foo to typ zmiennej, której dotyczy animacja, np. Float, Dp, Offset itp. (Ie7e25)

  • Gęstość jest teraz zakresem odbiorczym interfejsów układu. (I18aad)

  • TextFieldValue akceptuje AnnotatedString. Ta zmiana dotyczy tylko interfejsu API, a edytowanie tekstu w wielu stylach nie jest jeszcze możliwe.

    • Usunięto initial z parametrów konstruktora EditingBuffer. (I326d5)
  • Funkcje invalidate i compositionReference() zostały wycofane na rzecz funkcji currentRecomposeScope i rememberCompositionReference. (I583a8)

  • Klasa AnnotatedString została zmieniona tak, aby rozszerzała klasę kotlin.CharSequence. Dlatego długość i podciąg są teraz funkcjami instancji, a funkcje rozszerzenia zostały usunięte. (Iaf429)

  • Czas trwania i czas działania zostaną zastąpione wartością Długie milisekundy. Ten krok usuwa zależność od wejścia wskaźnika w tych klasach. (Ia33b2, b/175142755, b/177420019)

  • Observer pamięci zastępuje CompositionLifecycleObserver, a CompositionLifecycleObserver jest teraz wycofany.

    RememberObserver zastępuje CompositionLifecycleObserver z modyfikowaną semantyką i przemianowanymi metodami. Przejście na nowy interfejs API można przeprowadzić automatycznie w przypadku obiektów, które są zapamiętywane tylko raz. Jest to zalecana praktyka. Jeśli jednak odwołanie zostało zapamiętane więcej niż raz w kompozycji, funkcja onRemembered jest wywoływana w przypadku każdego odwołania, w którym funkcja onEnter jest wywoływana tylko raz. onEnter został wywołany wielokrotnie, jeśli obiekt był używany w podkompozycjach, takich jak WithConstraintsScaffold, co sprawia, że gwarancja pojedynczego wywołania onEnter jest niewiarygodna i została usunięta z RememberObserver.

    RememberObserver dodaje onAbandoned, które jest wywoływane, jeśli instancja RememberObserver zostanie zwrócona z połączenia zwrotnego przekazanego do remember, ale nie została zapamiętana w stanie kompozycji. W związku z tym nigdy nie zostanie wywołane onRemembered. Może się tak zdarzyć, jeśli wyjątek spowoduje przerwanie tworzenia kompozycji przed jego zakończeniem lub jeśli kompozycja zostanie odrzucona, ponieważ stan, dla którego była tworzona, nie jest już aktualny lub nie jest już potrzebny. Jeśli instancja RememberObserver po zalecanej powyżej rekomendacji dotyczącej jednego odwołania ś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 funkcji onRemembered, można zignorować funkcję onAbandoned, ponieważ nie zostanie ona wywołana, gdy wywołana zostanie funkcja onRemembered. (I02c36)

  • Nazwa TransformedText.transformedText została zmieniona na TransformedText.text.

    • TransformedText nie jest już klasą danych (Ie672a).
  • Te zajęcia nie są już zajęciami z danymi:

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

  • wycofane metody dotyczące współrzędnych globalnych i wprowadziliśmy nowe metody dotyczące współrzędnych opartych na oknie; (Iee284)

  • Zamiast ImeAction.NoAction użyj ImeAction.None

    • Zamiast ImeAction.Unspecified (Ie1bcc) użyj ImeAction.Default
  • Funkcja FocusRequester.createRefs jest teraz oznaczona jako eksperymentalna, ponieważ może ulec zmianie. (I2d898, b/177000821)

  • Zmiana nazwy SemanticsPropertyReceiver.hidden na invisibleToUser i oznaczenie @ExperimentalComposeUiApi. AccessibilityRangeInfo zostało zmienione na ProgressBarRangeInfo. stateDescriptionRange zostało zmienione na progressBarRangeInfo. AccessibilityScrollState zostało zmienione na ScrollAxisRange. horizontalAccessibilityScrollState zostało zmienione na horizontalScrollAxisRange. verticalAccessibilityScrollState zostało zmienione na verticalScrollAxisRange. (Id3148)

  • Zmiana metody VisualTransformation na interfejs funkcjonalny (I3bba4)

  • Korzystanie z TestCoroutineDispatcher w testach (I532b6)

  • Usunięto typ danych PointerInputData i zmodyfikowano typ danych PointerInputChange, aby zawierał on wszystkie pola typu danych PointerInputData. Zdarzenie PointerInputEvent i zdarzenie PointerInputEventData są teraz wewnętrzne, ponieważ nie są używane w żadnym publicznym interfejsie API. (Ifff97, b/175142755)

  • Zmieniono nazwę TextInputService.onStateUpdated na updateState (Id4853).

  • Usuń displaySize, ponieważ nie należy go używać. Zwykle lepiej jest użyć rozmiaru funkcji 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 są dostępne. Wersja 1.0.0-alpha10 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • ImeOptions i KeyboardOptions nie są już klasą danych (I3c898, b/168684531)
  • Zmiany w interfejsie VisualTransformation API
    • Zmieniono nazwę klasy OffsetMap na OffsetMapping.
    • Zmieniono nazwę klasy OffsetMapping.identityOffsetMap na OffsetMapping.Identity.
    • Element PasswordTransformation nie jest już elementem klasy danych
    • Przeniesienie mapowania offsetu do oddzielnego pliku
    • (I0bdf3)
  • Zmiany w interfejsie EditOperations API
    • Zmiana nazwy operacji edycji na EditCommand
    • Dodano sufiks polecenia dla konkretnych implementacji operacji edycji
    • Polecenie edycji nie jest już klasą danych
    • Funkcja EditOperation.process została przemianowana na applyTo.
    • Zmieniono nazwę interfejsu InputEventListener na InputEventCallback.
    • (I0a366)
  • Zmodyfikowano funkcję Velocity, aby zawierała elementy składowe i operacje matematyczne. (Ib0447)
  • Zmieniliśmy nazwę @ExperimentalTesting na @ExperimentalTestApi, aby zachować spójność z podobnymi adnotacjami interfejsów API (Ia4502, b/171464963).
  • Dodano eksperymentalną metodę stickyHeader dla LazyColumn/LazyRow (I0a81d).
  • Zmieniono nazwę metody Color.useOrElse() na Color.takeOrElse() (Ifdcf5).
  • Wycofana klasa TestUiDispatcher. Zamiast tego użyj Dispatchers.Main (Ic171f, b/175385255).
  • Dodaj przełącznik do podstawy Strings.kt (I4a5b7, b/172366489)
  • Przeniesiono klasę nativeClass do modułu ui i uczyniono ją wewnętrzną. Zaktualizowano użycie nativeClass w implementacjach equals, aby zamiast tego używać „is MyClass”. (I4f734)
  • Wycofane zostały kolumny i wiersze przepływu. Zamiast tego użyj układu niestandardowego. (I09027)
  • Metody Modifier.focus() i Modifier.focusRequester() zostały wycofane. Zamiast tego użyj interfejsów Modifier.focusModifier() i Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
  • Wprowadziliśmy SelectionRegistrar.notifySelectableChange, aby powiadamiać o aktualizacjach elementów dostępnych w SelectionManager. (I6ff30, b/173215242)
  • Zmieniono fun Dp.isFinite() na val Dp.isFinite (I50e00)
  • Nazwa Constraints#satisfiedBy została zmieniona na isSatisfiedBy. (I9cf5c)
  • Dodano funkcje isSpecified, isUnspecified i useOrElse dla klas inline z nieokreśloną stałą. (I93f7b, b/174310811)

Poprawki błędów

  • Nowy interfejs API oparty na korobonach Animatable, który zapewnia wzajemną wykluczalność animacji. Nowy specyfikacja animacji zanikania, która obsługuje animacje zanikania wielowymiarowe (I820f2, b/168014930)
  • Dodano obsługę pól tekstowych wyłączonych i tylko do odczytu (I35279, b/171040474, b/166478534).
  • Wartość animate() została zastąpiona wartością animateAsState(), która zwraca wartość State<T> zamiast T. Dzięki temu można uzyskać lepszą wydajność, ponieważ zakres unieważnienia można zawęzić do miejsca, w którym odczytana jest wartość State. (Ib179e)
  • Dodaj interfejs API roli semantycznej i dodaj parametr Role do klikalnego, możliwego do wybrania i przełączalnego SemanticsModifier. Zmieniono Modifier.progressSemantics, aby można było go używać również w Sliderze. (I216cd)
  • Do natywnego zdarzenia keyEvent można teraz uzyskać dostęp za pomocą keyEvent.nativeKeyEvent (I87c57, b/173086397)

Wersja 1.0.0-alpha09

16 grudnia 2020 roku

androidx.compose.foundation:foundation:1.0.0-alpha09androidx.compose.foundation:foundation-layout:1.0.0-alpha09 są dostępne. Wersja 1.0.0-alpha09 zawiera te commity.

Zmiany w interfejsie API

  • Dodaj przewijany interfejs

    Dzięki temu ScrollState i LazyListState są traktowane jako wspólny typ, co umożliwia implementację niestandardowego przewijania w obu typach.

    Przenosi to również funkcję smoothScrollBy do funkcji rozszerzenia w Scrollable, korzystając z tej funkcji. (I2153b)

  • Dodano LazyVerticalGrid. (I17267, b/162213211)

  • Wycofanie funkcji LazyColumnFor, LazyRowFor, LazyColumnForIndexed i LazyRowForIndexed. Zamiast tego użyj LazyColumn i LazyRow (I5b48c)

  • W przypadku zawieszania interfejsów API związanych z wskaźnikiem zmieniono nazwy: HandlePointerInputScope na AwaitPointerEventScope i handlePointerInput() na awaitPointerEventScope(). (Idf0a1, b/175142755)

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

  • Usunięto adnotację ExperimentalPointerInput (Ia7a24)

  • Dodano obsługę stanu InteractionState dla pól tekstowych. (I61d91)

  • Dodaj parametr reverseLayout dla LazyColumn/Row. Gdy true, elementy będą składane od dołu do góry, a LazyListState.firstVisibleItemIndex == 0 oznacza, że pierwszy element znajduje się na dole. (I552ae, b/166589935)

  • Dodano parametr verticalArrangement dla LazyColumn. Dodano parametr horizontalArrangement dla LazyRow. Ustawienie pozwala nam dodawać odstępy między elementami i określać ich układ, gdy nie mamy ich wystarczająco dużo, aby wypełnić całą minimalną wielkość. (Icf79a, b/170394300)

  • detectMultitouchGestures używa teraz jednej funkcji z połączonymi parametrami centroid, przesuwanie, powiększanie i obracanie. (Ie6e1c)

  • Przeniesienie ContentDrawScope do modułu ui-graphics, aby był on razem z DrawScope. (Iee043, b/173832789)

Poprawki błędów

  • Lambda w modyfikatorach przesunięcia zwraca teraz IntOffset zamiast Float. (Ic9ee5, b/174137212, b/174146755)
  • Usunięto klasy SlotTable, SlotReader i SlotWriter z publicznego interfejsu API. Wcześniej były one oznaczone jako InternalComposeAPI. Teraz są one wewnętrzne w module tworzenia.

    Dodaliśmy obiekty CompositionData i CompositionGroup jako zamiennik interfejsu ui-tooling API do wyodrębniania informacji o kompozycji. Są one publiczne, ale nie są przeznaczone do użytku poza interfejsem ui-tooling API, ponieważ zawierają informacje w postaci nieprzetworzonej, które interfejs ui-tooling API interpretuje (I31a9c).

  • Funkcja ShaderBrush została przerobiona, aby tworzyć instancję shadera w trybie lazy, gdy dostępne są informacje o wymiarach środowiska rysunku. Jest to przydatne do definiowania gradientów, które zajmują pełne granice rysowania kompozytowego w czasie tworzenia kompozycji, bez konieczności implementowania niestandardowych implementacji modyfikatora rysowania.

    wycofane interfejsy API konstruktora funkcji gradienta na rzecz metod fabrycznych obiektu Gradient; (I511fc, b/173066799)

  • Metoda Modifier.focusObserver została wycofana. Zamiast tego użyj metody Modifier.onFocusChanged lub Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)

  • Interfejs Autofill API jest teraz interfejsem eksperymentalnym i wymaga wyrażenia zgody (I0a1ec)

  • Dodanie deklaracji destrukturyzacji w celu utworzenia instancji FocusRequester (I35d84, b/174817008)

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

  • Wprowadziliśmy kilka nowych funkcji w SelectionRegistrar i zmieniliśmy nazwę funkcji onPositionChange na notifyPositionChange. (Ifbaf7)

  • AndroidOwner made internal (Ibcad0, b/170296980)

  • Nowa funkcja infiniteRepeatable do tworzenia specyfikacji nieskończonej powtarzalności (I668e5)

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

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

    Dodano nową metodę insertBottomUp().

    Aplikator wstawia węzły do drzewa, które modyfikuje, za pomocą funkcji insertTopDown() lub insertBottomUp(), w zależności od tego, która z nich działa lepiej.

    Niektóre drzewa, np. LayoutNodeView, są znacznie wydajniejsze w budowaniu od dołu do góry niż odwrotnie. Przed tą zmianą implementacja metody od dołu wymagała użycia zbioru wstawek, które trzeba było kopiować do każdego miejsca, w którym była potrzebna konstrukcja od dołu ze względu na wydajność. Ta zmiana zastępuje Applier przez insertBottomUp(), aby tworzyć drzewo od dołu do góry, oraz insertTopDown(), aby tworzyć drzewo od góry do dołu. (Icbdc2)

  • Dodano interfejs API painterResource do obsługi ładowania obiektów Painter z nieprzezroczystym ładowaniem z formatów zasobów rastrowych (np. PNG) lub obiektów VectorDrawable. Użytkownicy nie muszą już określać typu zasobu z wyprzedzeniem i mogą wywołać tę metodę, aby uzyskać obiekt Painter do użycia w komponencie obrazu lub modyfikatorze paintera. (I2c703, b/173818471)

  • Dodano funkcję fabryki buildAnnotatedString do tworzenia obiektów AnnotatedString. Wycofana funkcja annotatedStringBuilder. (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 są dostępne. Wersja 1.0.0-alpha08 zawiera te commity.

Zmiany w interfejsie API

  • Parametr maxLines został usunięty z funkcji CoreTextField. Jeśli chcesz ograniczyć wysokość pola tekstowego do liczby wierszy, użyj atrybutu BasicTextField. (Iec002)
  • Zmieniono metody await*TouchSlop(), aby nie wykrywały wskaźnika w dół, i nazwane zostały *OrCancellation. Usunęliśmy też konieczność stosowania parametru orientationLock. (Ie96e1)
  • Dodano sprawdzanie lint pod kątem nazw i pozycji parametrów funkcji kompozytowych lambda, aby sprawdzić zgodność z wytycznymi Compose. Zgodnie z instrukcjami i sprawdzaniem błędów niektóre interfejsy API, które używają nazwy children jako nazwy funkcji lambda na końcu, zostały przeniesione do content. (Iec48e)
  • Interfejsy API foundation:foundation-text zostały przeniesione do foundation:foundation. Struktura pakietu pozostała bez zmian (Id3eb2).
  • Nowy mechanizm wykrywania gestów wielodotykowych, w tym pomocników do wykrywania obracania, powiększania i przesuwania. (Ic459d)
  • Nowy interfejs API do wykrywania gestów przeciągania, który zawiesza kursor, w tym interfejs API do obsługi gestów, w tym blokowanie orientacji. (Icef25)
  • Zmiana nazwy klasy VectorAsset na ImageVector. Przeniesienie klasy VectorAsset i zmiana jej nazwy na Builder, aby była ona klasą wewnętrzną klasy ImageVector zgodnie z wytycznymi Rady API. Dodano alias typu VectorAssetBuilder, aby umożliwić linkowanie do ImageVector.Builder w celu zapewnienia zgodności. (Icfdc8)
  • Zmieniono nazwę klasy ImageAsset i powiązanych metod na ImageBitmap. (Ia2d99)
  • Przeniesienie właściwości semantycznych z warstwy podstawowej do warstwy interfejsu użytkownika (I6f05c)
  • Dodaj interfejsy API do przewijania opartego na korobonach:

    Dodaje metody LazyListState.snapToItem i LazyListState.smoothScrollBy, a także interfejsy API niskiego poziomu do sterowania przewijaniem. Te interfejsy API udostępniają zawieszony interfejs do sterowania przewijaniem, który czeka, aż przewijanie się zakończy, zanim zwróci wynik. (Ie5642)

  • Dodano parametr singeLine do pól BasicTextField, TextField i OutlinedTextField. Ustaw ten parametr na „PRAWDA”, aby pole tekstowe miało postać pojedynczej linii, którą można przewijać poziomo. (I57004, b/168187755)

  • Dodano wykrywanie gestów dla kliknięcia, kliknięcia dwukrotnego, przytrzymania i wskazania przy użyciu nowego wskaźnika zawieszenia. Dodaliśmy też kilka narzędzi, które ułatwiają deweloperom pisanie własnych detektorów gestów. (I00807)

  • W ustawieniu podstawowym dodano potrzebę związaną z elementem Modifier.focusable. Dzięki temu możesz dodać do komponentu zachowanie polegające na skupianiu uwagi z zachowaniem odpowiedniej semantyki i dostępności. (I41eb9, b/152525426, b/162865824)

  • Wycofane interfejsy API zostały usunięte: Border został usunięty, zamiast niego używaj BorderStroke. Funkcja Modifier.drawBorder została usunięta. Zamiast niej użyj funkcji Modifier.border. Metoda Modifier.gravity została usunięta. Zamiast niej użyj metody Modifier.align. Grupa została usunięta, użyj zamiast niej pola tekstowego (I32c2b, b/172470874)

  • Typ AbsoluteArrangement został przemianowany na Arrangement.Absolute. (If26f2)

Poprawki błędów

  • Przeniesienie interfejsów API DrawModifier z pakietu androidx.compose.ui do pakietu androidx.compose.ui.draw. Utworzono plik DrawModifierDeprecated.kt, aby uwzględnić aliasy typów i metody pomocnicze, które ułatwiają migrację z nieaktualnych interfejsów API do bieżących. (Id6044, b/173834241)
  • Zmieniliśmy nazwę Modifier.drawLayer na Modifier.graphicsLayer. Zaktualizowaliśmy też powiązane klasy na GraphicsLayer zgodnie z opiniami Rady API. (I0bd29, b/173834241)
  • Element <T> został usunięty z deklaracji SubcomposeLayout. Możesz go używać bez określania typu. (Ib60c8)
  • Ustawienie pól uptime i position w danych PointerInputData tak, aby nie mogły być puste. (Id468a)
  • Motyw MaterialTheme teraz ustawia prawidłowe kolory uchwytów i tła zaznaczenia. Aplikacje niebędące w stylu Material mogą ręcznie używać kolorów AmbientTextSelectionColors, aby dostosować kolory używane do zaznaczania. (I1e6f4, b/139320372, b/139320907)
  • Zmieniliśmy nazwę parametru alignment w sekcji Box na contentAlignment. (I2c957)
  • Modyfikatory offsetPx zostały przemianowane na offset. Teraz zamiast stanu przyjmują one parametry lambda. (Ic3021, b/173594846)
  • Dodano WindowManager.isWindowFocused, aby sprawdzić, czy okno hosta jest aktywne, oraz WindowFocusObserver, który udostępnia wywołanie zwrotne onWindowFocusChanged. (I53b2a, b/170932874)
  • Dodano parametr resetInput do metody TextInputService#onStateUpdated (I3e8f5, b/172239032, b/171860947).
  • Zaktualizowany interfejs TextFieldValue API
    • ustawienie TextFieldValue.composition tylko do odczytu
    • usunięto wyjątek wywołany z powodu nieprawidłowego zakresu wyboru (I4a675, b/172239032)
  • wycofane ambienty o nazwach zawierających sufiks Ambient i zastąpione nowymi właściwościami z prefiksem Ambient zgodnie z innymi wytycznymi dotyczącymi ambientów i interfejsu Compose API; (I33440)
  • Dodano owijacz czcionek Androida. Możesz wczytać czcionkę Androida za pomocą funkcji typeface, np. typeface(Typeface.DEFAULT). Zmieniono też nazwę z typefaceFromFontFamily() na typeface() (I52ab7).
  • Dodano sprawdzanie lint, aby sprawdzić, czy fabryki modyfikatorów używają androidx.compose.ui.composed {} wewnętrznie, a nie są oznaczone jako @Composable. (I3c4bc)
  • Dodano sprawdzanie lint, aby sprawdzić, czy funkcje fabryki modyfikatora są zdefiniowane jako rozszerzenia modyfikatora, aby można je było płynnie łączyć. (I07981)
  • Argument semantyczny mergeAllDescendants został przemianowany na mergeDescendants. (Ib6250)
  • Kontrola czasu w testach (TestAnimationClock i jego użycia) jest teraz eksperymentalna (I6ef86, b/171378521).
  • Usuwanie starego modułu testu UI i jego zastępników (I3a7cb)
  • Element TextUnit.Inherit został przemianowany na TextUnit.Unspecified, aby był zgodny z innymi jednostkami. (Ifce19)
  • Interfejs wyrównywania został zaktualizowany i stał się funkcjonalny. (I46a07, b/172311734)
  • Moduł foundation:foundation-text został scalony z modułem foundation:foundation (Idac0f)
  • Wycofaj place(Offset) i placeRelative(Offset). Zamiast tego użyj przeciążeń z przesunięciem 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

Funkcje 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ą dostępne. Wersja 1.0.0-alpha07 zawiera te commity.

Zmiany w interfejsie API

  • Podobnie jak w przypadku funkcji Modifier.fillMaxSize[Width|Height], teraz obsługujemy ułamki w funkcji Modifier.fillParentMaxSize[Width|Height] w zakresie funkcji LazyColumn/Row (I797e2, b/166586426)
  • Usunięto KeyboardOptions.toImeOptions z publicznego interfejsu API. (Ic2e45)
  • Podstawowe atrybuty AmbientTextStyle, ProvideTextStyle i AmbientContentColor zostały wycofane. Zamiast tego użyj nowych wersji dostępnych w bibliotece Material. W przypadku aplikacji, które nie są zgodne z Material Design, należy utworzyć własne motywy tematyczne, które można wykorzystać w komponentach. (I74acc, b/172067770)
  • Komponent foundation.Text został wycofany i zastąpiony komponentem material.Text. Interfejs API tekstowy podstawowy, który nie używa wartości z motywu, znajdziesz w bibliotece androidx.compose.foundation.BasicText. (If64cb)
  • Dodano atrybut maxLines do pól tekstowych (Ib2a5b).
  • Zaktualizuj pola tekstowe, aby akceptowały KeyboardOptions (Ida7f3)
  • Dodano KeyboardOptions do użycia w TextFields (I9ca32).
  • Dodaje interfejs BasicText jako interfejs API do obsługi tekstu, który nie ma określonego formatu, równolegle z interfejsem BasicTextField. (I28268)
  • Adnotacja ExperimentalLazyDsl została usunięta. Komponenty LazyColumn/LazyRow można teraz używać bez dodawania @OptIn (Idab7a, b/166584730)
  • Komponent BaseTextField został wycofany. Zamiast tego użyj pola tekstowego podstawowego. (I896eb)
  • Dodano pole tekstowe podstawowe, które zastępuje pole tekstowe podstawowe i pole tekstowe podstawowe (Id4cea).
  • Usuń przestarzałe elementy LazyColumnItems/LazyRowItems (I1d8a8)
  • Usunięto nieobsługiwane komponenty do dopasowywania rozmiarów do wymiarów wewnętrznych. (I18537, b/171811496)
  • Nazwa relativePaddingFrom została zmieniona na paddingFrom. Dodano modyfikator paddingFromBaseline, który ułatwia określanie odległości od granic układu do linii bazowych tekstu. (I0440a, b/170633813)
  • Do modyfikatora aspectRatio dodano parametr matchHeightConstraintsFirst, który można użyć do określenia modyfikatora do ograniczeń rozmiaru do wysokości przed próbą dopasowania do szerokości. (Ie7c43, b/155290593)
  • Usunięto przestarzałe ograniczenia DpConstraints. (I87884, b/171702471)

Poprawki błędów

  • Wprowadziliśmy klasę inline ScaleFactor, aby reprezentować czynniki skalowania dla osi poziomej i pionowej niezależnie od siebie w celu obsługi niejednolitego skalowania.
    • Dodano metodę computeScaleFactor do ContentScale.
    • Dodano ContentScale.FillBounds, aby wykonać niejednolite skalowanie w celu rozciągnięcia granic src, tak aby wypełniały one całkowicie obszar docelowy.
    • Dodano metody operatora do obliczania parametrów ScaleFactor za pomocą parametrów Size.
    • (Ic96a6, b/172291582)
  • captureToBitmap przeniesiono do captureToImage. (I86385)
  • Oznacza CoreText jako @InternalTextApi. Zamiast tego użyj elementu BasicText. (I6aaeb)
  • Zmień nazwę KeyboardOptions na ImeOptions (I82f36).
  • Przeniesienie KeyboardType i ImeAction do KeyboardOptions (I910ce)
  • CoreTextField został oznaczony jako @InternalTextApi. Zamiast tego użyj pola tekstowego BasicTextField (Ie2469).
  • Adnotacja ExperimentalSubcomposeLayoutApi została usunięta. Można teraz używać komponentu podrzędnego kompozyturka bez dodawania @OptIn (I708ad)
  • Wprowadzenie modułu ui-test-junit4 (Ib91f8)
  • Zaktualizowano interfejs Icon API, aby przyjmował wartość Color.Unspecified jako możliwy kolor zabarwienia, który będzie rysował dostarczony zasób lub malowanie bez filtra kolorów. Wcześniej próby zignorowania zabarwiania za pomocą metody Color.Unspecified powodowały zabarwienie przezroczystym kolorem, co kończyło się tym, że nic nie było renderowane. (I049e2, b/171624632)
  • MeasureResult został przeniesiony z MeasureScope. (Ibf96d, b/171184002)
  • Kilka symboli związanych z układem zostało przeniesionych z androidx.compose.ui do androidx.compose.layout.ui. (I0fa98, b/170475424)
  • androidx.ui.test przeniesione do androidx.compose.ui.test (I9ffdb)
  • FirstBaseline i LastBaseline zostały przeniesione do pakietu androidx.compose.ui.layout (Ied2e7).
  • Dodano SelectionContainer bez wywołania zwrotnego (Ibfadb)
  • Dodaj testy pozycji elementów SelectionHandles w elementach SelectionContainer. (Ie93db)
  • Dodano opcję autokorekty IME w klawiaturze (I57b8d)

Wersja 1.0.0-alpha06

28 października 2020 r.

Funkcje androidx.compose.foundation:foundation:1.0.0-alpha06, androidx.compose.foundation:foundation-layout:1.0.0-alpha06androidx.compose.foundation:foundation-text:1.0.0-alpha06 są dostępne. Wersja 1.0.0-alpha06 zawiera te commity.

Zmiany w interfejsie API

  • Interfejs androidx.compose.foundation.Icon został przeniesiony do androidx.compose.material.Icon. Jeśli nie chcesz korzystać z biblioteki Material, możesz użyć komponentu Image / Modifier.paint() z Painterem. (I9f622)
  • Dodano stan interakcji do Modifier.scrollable, ScrollableColumn i LazyColumnFor (I81566, b/169509805).
  • Do RowScope dodano alignByBaseline, a alignWithSiblings przemianowano na alignBy (I06503, b/170628732).
  • Funkcja Box została zmieniona na funkcję wbudowaną. (Ibce0c, b/155056091)
  • Dodano maxLines do CoreTextField (Ibee58, b/143687793)
  • Dodano miękki wrap do CoreTextField. (I21a4b)

Poprawki błędów

  • Wycofaj VectorPainter na rzecz rememberVectorPainter, aby lepiej wskazać, że interfejs API do komponowania wewnętrznie korzysta z funkcji „remember”, aby przechowywać dane w ramach kompozycji. (Ifda43)
  • Włącz przejścia w komponencie ComposeTestRule. Usuń z niego opcję włączania migającego kursora. (If0de3)
  • Dodano opcję klawiatury jednowierszowej do CoreTextField (I72e6d).
  • Zmieniliśmy nazwę interfejsu API Radius na CornerRadius, aby lepiej odzwierciedlała sposób jego użycia w komponowaniu. Zaktualizowano dokumentację, aby wskazać, że ujemne promienie narożników są ograniczane do zera. (I130c7, b/168762961)
  • Dodanie możliwości określania informacji o inspektorze w składanym modyfikatorze (Idee08, b/163494569)
  • Dodano opcję IME KeyboardCapitalization (I8ac38)
  • Popraw pozycję uchwytu RTL. (I6e1e0)
  • Zmiana wprowadzająca niezgodność: usunięto wartość zwracaną z metody PointerInputFilter.onPointerEvent(...), ponieważ jedyną wartością, którą można zmienić w zdarzeniach związanych z wskaźnikiem, są dane o konsumpcji. Zamiast zwracać dane z metody PointerInputFilter.onPointerEvent(...) możesz teraz modyfikować dane zużycia przekazywanych zdarzeń PointerEvents. (I6acd0)
  • Dodano opcję Zaznacz wszystko w menu wyboru (Ief02b)

Wersja 1.0.0-alpha05

14 października 2020 r.

Funkcje androidx.compose.foundation:foundation:1.0.0-alpha05, androidx.compose.foundation:foundation-layout:1.0.0-alpha05androidx.compose.foundation:foundation-text:1.0.0-alpha05 są dostępne. Wersja 1.0.0-alpha05 zawiera te commity.

Zmiany w interfejsie API

  • Element CoreTextField obsługuje teraz funkcję kursora (Id23aa).
  • Wycofane zostaną interfejsy API contentColor() i currentTextStyle(), a zamiast nich zostaną wprowadzone odpowiednio ambienty AmbientContentColor i AmbientTextStyle. Do bieżącej wartości możesz uzyskać dostęp, używając wartości .current w przypadku właściwości ambient, tak jak w przypadku innych wartości ambient. Ta zmiana została wprowadzona w celu zapewnienia spójności i uniknięcia konieczności korzystania z różnych sposobów na osiągnięcie tego samego celu. Dodatkowo zmienia nazwy niektórych właściwości środowiska, aby lepiej opisywać ich przeznaczenie. Nowe nazwy:

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

Poprawki błędów

  • W ramach standaryzacji wartości sygnalizacyjnych klas wbudowanych zmień nazwę Color.Unset na Color.Unspecified, aby zachować spójność z innymi klasami wbudowanymi (I97611, b/169797763).
  • Dodano działania związane z ułatwieniami dostępu związane z kopiowaniem/wklejaniem/wycinaniem (I6db4f)
  • Wprowadzono TextOverflow.None. Gdy wartość overflow jest równa None, Text nie będzie już obsługiwać przepełnienia i będzie przekazywać rzeczywisty rozmiar do LayoutNode. (I175c9, b/158830170)
  • Zaktualizowano parametry Size.Unspecified, aby były to wartości Float.NaN zamiast Float.POSITIVE_INFINITY. Zaktualizowano implementacje usługi Painter, aby sprawdzały rozmiar Size.Unspecified oraz nieskończone rozmiary. (I95a7e)
  • Dodano moduł Compose z obsługą pagingu i integrację z pagingiem (Ib85da)
  • Zmiana LazyListScope na potrzeby otrzymywania wartości pustych (I1765b)
  • Zmiana nazwy metody OnPositionedModifier na OnGloballyPositionedModifier oraz metody onPositioned() na onGloballyPositioned(). (I587e8, b/169083903)
  • Dodano przykłady dla LazyColumn/Row (Idc16d).
  • Poprawka metod items i itemsIndexed, aby zezwolić na emptyList (I06647)
  • Dodaj DSL do określania informacji o inspektorze (Ic9a22)
  • Przesuń opcję „Przytrzymaj” do sekcji „Tekst”. (Iff2bc)
  • Wyłącz zaznaczenie w Tekście i demonstrację. (Ie7e97)
  • Obsługa konwersji AnnotatedString na SpannableString na potrzeby ułatwień dostępu. (Ief907)
  • Użytkownik PointerInputFilter.onPointerInput(...) został usunięty. Należy użyć atrybutu PointerInputFilter.onPointerEvent(...). (I6f04a)

Wersja 1.0.0-alpha04

1 października 2020 roku

Funkcje androidx.compose.foundation:foundation:1.0.0-alpha04, androidx.compose.foundation:foundation-layout:1.0.0-alpha04androidx.compose.foundation:foundation-text:1.0.0-alpha04 są dostępne. Wersja 1.0.0-alpha04 zawiera te commity.

Zmiany w interfejsie API

  • Grupa została przemianowana na Box. Dotychczasowa klasa foundation.Box zostanie wycofana na rzecz nowej klasy Box w komponencie compose.foundation.layout. Nowa ramka układa elementy podrzędne jeden na drugim, gdy ma ich kilka. Wcześniej działała ona podobnie jak kolumna. (I94893, b/167680279)
  • Parametry dekoracji pudełka zostały wycofane. Jeśli chcesz użyć dekoracji lub wypełnienia w pudełku, użyj modyfikatorów (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
  • Dodaj nową klasę LazyListState. Umożliwia to obserwowanie i sterowanie pozycją przewijania komponentów LazyRow i LazyColumn. Identyfikatory można tworzyć za pomocą funkcji rememberLazyListState() i przekazywać do parametru state komponentu. W tej początkowej wersji można obecnie zobaczyć pierwszy widoczny element i odstępy. (Ic7cb7, b/159307669)
  • Pozycja i przesunięcie listy w trybie leniwej aktualizacji są teraz zapisywane i przywracane podczas ponownego tworzenia aktywności (Ie045f, b/166589058).
  • Dodaj działanie semantyczne długiego kliknięcia (I6281b, b/156468846)
  • Dodano narzędzie MutatorMutex do utrzymywania pojedynczego modyfikatora współdzielonego stanu w czasie i anulowania konfliktujących modyfikatorów według priorytetu (I3f975).
  • Dodała adnotacje do rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled i textInputServiceFactory z dodatkiem @VisibleForTesting, aby uczynić je wewnętrznym interfejsem API i ukryć ich kdoc (I554eb, b/168308412).
  • Usunięto parametr inlineContent z elementu tekstowego z danymi typu string. Nie będzie on używany, ponieważ inlineContent musi współpracować z AnnotatedString. (Ief403)
  • Wycofane zostały wycofane interfejsy API niestandardowych umów. (Ic576d, b/168297922, b/168297923)
  • Do modyfikatorów wrapContentSize dodano parametr unbounded, który umożliwia pomiar elementu układu z nieograniczonymi maksymalnymi ograniczeniami. (I77951, b/158559319)
  • Zablokowaliśmy importowanie statyczne zawartości zakresów układu (np. alignWithSiblings w RowScope). Zamiast tego należy użyć opcji z wyraźnym zakresem: with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }. (I216be, b/166760797)

Poprawki błędów

  • Zaktualizowano wiele interfejsów API do obsługi grafiki.
    • Zaktualizowane interfejsy API do skalowania i obrotu, aby używały pojedynczego parametru Offset zamiast oddzielnych parametrów typu float dla współrzędnych x/y w DrawScope i DrawTransform
    • Usunięto metody Rect.expandToInclude i Rect.join
    • Zaktualizowano dokumentację Radius, aby zawierała informacje o elipsy w dodatku do eliptyczne
    • Dodano dokumentację, aby wskazać, że publicznego konstruktora w ramach klasy Inline Radius nie należy wywoływać bezpośrednio, ale zamiast tego instancje obiektów Radius należy tworzyć za pomocą konstruktorów funkcji.
    • Usunięto interfejsy API RoundRect do zapytań topRight, bottomRight, bottomCenter itp.
    • Wycofanie funkcji Rect.shift na rzecz funkcji Rect.translate
    • Usunięto interfejsy API RoundRect.grow i Rect.shrink
    • Zmieniono nazwę RoundRect.outerRect na Rect.boundingRect.
    • Usunięto metody RoundRect.middleRect/tallMiddleRect/wideMiddleRect i Rect.isStadium
    • Zmieniono nazwę RoundRect.longestSide na RoundRect.maxDimension.
    • Zmieniono nazwę RoundRect.shortestSide na RoundRect.minDimension.
    • Zmiana funkcji RoundRect.center na właściwość zamiast funkcji
    • Zaktualizowano konstruktor RoundRect, aby używał właściwości Radius zamiast poszczególnych parametrów wartości promienia x/y.
    • Usunięto interfejsy API dotyczące rozmiaru, które zakładały, że jest to prostokąt z początkiem w punkcie 0,0.
    • Dodano do Radius interfejs API do niszczenia
    • Przeniesienie różnych funkcji rozszerzenia RoundRect do właściwości
    • (I8f5c7, b/168762961)
  • Optymalizacje wydajności dla przewijania LazyColumnFor/LazyRowFor polegające na niewykonywanie niepotrzebnych ponownych składań podczas każdego przewijania (I64f65, b/168293643, b/167972292, b/165028371)
  • Naprawiono błąd powodujący awarię w LazyColumnFor/LazyRowFor po przewinięciu i zmianie elementów oraz wdrożenie automatycznego przewijania w górę po usunięciu wcześniej widocznego elementu, dzięki czemu nie wyświetla się już pusta przestrzeń na końcu (I220ab, b/161480164, b/167855468)
  • Zagnieżdżanie kontenerów z możliwością przewijania w tym samym kierunku, takich jak ScrollableContainer i LazyColumnFor, nie jest już dozwolone. Nigdy nie było obsługiwane i uniemożliwiało tworzenie elementów LazyColumnFor (I6e101).
  • Zaktualizowano wiele interfejsów API do obsługi grafiki.
    • Zaktualizowano interfejsy API DrawScope o metody przekształceń ograniczonych zakresem, aby wskazać, że przekształcenie jest stosowane tylko w ramach wywołania zwrotnego i usuwane po jego wywołaniu.
    • Zaktualizowano dokumentację clipPath, aby odwoływała się do ścieżki zamiast zaokrąglonego prostokąta
    • Naprawiono odstępy w dokumentacji parametru clipPath
    • Zmieniono nazwę metody DrawScope.drawCanvas na drawIntoCanvas i usunięto parametr size
    • Zmieniono nazwy parametrów dx/dy w metodie inset na horizontal i vertical.
    • Dodano przeciążenie wstawki, które zapewnia tę samą wartość wstawki dla wszystkich 4 ograniczeń
    • Usunięto dokumentację dotyczącą metody wstawienia, która wskazywała, że wstawienie zostanie zastosowane do wszystkich 4 stron.
    • Zaktualizowano dokumentację klasy Rect
    • Zaktualizowano komentarze dotyczące parametrów Rect, aby pasowały do kdoc style
    • Usunięto Rect.join i Rect.expandToInclude
    • Utworzono przeciążenie dla Rect.translate(offset) i przestarzałą metodę Rect.shift.
    • (If086a, b/167737376)
  • dodaj stan AccessibilityScrollState do właściwości semantycznych. (Ifeda9)
  • Aby uniknąć tworzenia obiektów, ustaw zakres tekstu w tekście. (Id034b)
  • Element ParagraphConstraints został usunięty. Szerokość jest teraz przekazywana bezpośrednio do elementu Paragraph. (Ica712)

Wersja 1.0.0-alpha03

16 września 2020 roku

Funkcje androidx.compose.foundation:foundation:1.0.0-alpha03, androidx.compose.foundation:foundation-layout:1.0.0-alpha03androidx.compose.foundation:foundation-text:1.0.0-alpha03 są dostępne. Wersja 1.0.0-alpha03 zawiera te commity.

Zmiany w interfejsie API

  • Atrybut InnerPadding został przemianowany na PaddingValues. (I195f1, b/167389171)
  • W interfejsach API dotyczących układu nazwy metod związanych z grawitacją zostały zmienione na „align” lub „alignment”. (I2421a, b/164077038)
  • Do grupy elementów dodano parametr wyrównania, który umożliwia określenie domyślnego wyrównania dla wszystkich podrzędnych elementów grupy. (Ie80ca, b/164085265)

Poprawki błędów

  • Wycofano interfejs DpConstraints i interfejsy API, które go używały. (I90cdb, b/167389835)
  • Parametry minWidthmaxWidth funkcji widthIn zostały odpowiednio zmienione na minmax. To samo dotyczy błędów preferredWidthIn, heightInpreferredHeightIn. (I0e5e1, b/167389544)
  • Dodano metodę onNode i inne metody globalne w komponencie ComposeTestRule, ponieważ obecne metody globalne zostaną wycofane. (Ieae36)
  • Naprawiono obliczenia rozmiaru i pozycji w GestureScope, które powodowały między innymi generowanie nieprawidłowych gestów przesuwania (Iaf358, b/166589947).
  • Urządzenia createAndroidComposeRuleAndroidInputDispatcher zostały przeniesione z androidx.ui.test.android do androidx.ui.test (Idef08, b/164060572)

Wersja 1.0.0-alpha02

2 września 2020 r.

Funkcje androidx.compose.foundation:foundation:1.0.0-alpha02, androidx.compose.foundation:foundation-layout:1.0.0-alpha02androidx.compose.foundation:foundation-text:1.0.0-alpha02 są dostępne. Wersja 1.0.0-alpha02 zawiera te commity.

Poprawki błędów

  • TestUiDispatcher jest oznaczony jako eksperymentalny (Iae99d, b/161247083)
  • Dodano ManualFrameClock.hasAwaiters, aby sprawdzić, czy coś oczekuje na ramkę z tego zegara; runWithManualClock jako zamiennik runBlocking podczas wykonywania testów, które wymagają zegara ManualFrameClock; TestUiDispatcher.Main, który zapewnia łatwy dostęp do głównego rozsyłarki interfejsu użytkownika w testach.

    Na przykład:

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

    (I0a85b, b/161247083)

Wersja 1.0.0-alpha01

26 sierpnia 2020 r.

Funkcje androidx.compose.foundation:foundation:1.0.0-alpha01, androidx.compose.foundation:foundation-layout:1.0.0-alpha01androidx.compose.foundation:foundation-text:1.0.0-alpha01 są dostępne. Wersja 1.0.0-alpha01 zawiera te commity.

Wersja 0.1.0-dev

Wersja 0.1.0-dev17

19 sierpnia 2020 r.

Funkcje androidx.compose.foundation:foundation:0.1.0-dev17, androidx.compose.foundation:foundation-layout:0.1.0-dev17androidx.compose.foundation:foundation-text:0.1.0-dev17 są dostępne. Wersja 0.1.0-dev17 zawiera te commity.

Zmiany w interfejsie API

  • Do elementów wiersza i kolumny dodano ustawienie Spacing (Odstęp), aby umożliwić umieszczanie elementów układu z stałym odstępem. Dodano też możliwość ustawienia elementów potomnych układu obok siebie i wyrównanych w wierszu lub kolumnie zgodnie z wyrównaniem. Poprzednie metody Arrangement.Vertical#arrange i Arrangement.Horizontal#arrange zostały wycofane, a zapisywanie niestandardowych układów nie będzie obsługiwane w przyszłości. (I6733d, b/161985975)
  • Offset stał się klasą wbudowaną (Iaec70)
  • Usunięto z TextField wywołania zwrotne onFocusChanged. Zamiast tego użyj Modifier.focusObserver. (I51089, b/161297615)
  • Metoda Modifier.drawBorder została wycofana. Zamiast tego użyj Modifier.border. Klasa danych Border została zastąpiona przez BorderStroke (I4257d, b/158160576)
  • Elementy VerticalScroller i HorizontalScroller zostały usunięte. Zamiast tego użyj kolumny lub wiersza przewijalnego. Funkcja Modifier.drawBackground została usunięta. Użyj Modifier.background (I73b0d, b/163019183).
  • Usuń z LazyItemScope modyfikatory o znaczeniu fillMax*, które zostały oznaczone jako przestarzałe, ponieważ utrudniają prawidłowe dodawanie takich modyfikatorów do elementów, które nie są bezpośrednimi podrzędnymi kolumny LazyColumnFor (Ifa78d).
  • dodano implementację LazyColumn/LazyRow jako DSL (I93cc6)
  • Ograniczenia są teraz klasą wbudowaną (I88736)
  • Dodaliśmy możliwość dopasowania rozmiaru układu do ułamka dostępnej przestrzeni za pomocą modyfikatorów fillMaxWidth, fillMaxHeight i fillMaxSize. (I945bb, b/161562591)

Poprawki błędów

  • Dodano parametr modyfikatora do SelectionContainer (I4aada, b/161487952).
  • Dodano funkcję lambda mergePolicy do klucza SemanticsPropertyKey. Można go użyć do zdefiniowania niestandardowej zasady złączania z użyciem semantycznej funkcji mergeAllDescendants. Domyślnie używana jest wartość nadrzędna, jeśli jest już dostępna, a w przeciwnym razie wartość podrzędna. (Iaf6c4, b/161979921)
  • Nazwa PlacementScope.placeAbsolute() została zmieniona na PlacementScope.place(), a poprzednia nazwa PlacementScope.place() została zmieniona na PlacementScope.placeRelative(). W rezultacie metoda PlacementScope.place() nie będzie już automatycznie odzwierciedlać pozycji w kontekście od prawej do lewej. W takim przypadku użyj zamiast tego pola PlacementScope.placeRelative(). (I873ac, b/162916675)
  • Usunięto wycofany komponent FilledTextField. Aby uzyskać implementację wypełnionego pola tekstowego w ramach Material Design, użyj komponentu TextField. (I5e889)
  • Do elementu LinearProgressIndicator dodano parametr backgroundColor, a z elementu CircularProgressIndicator usunięty został wewnętrzny margines. Dodano nową stałą ProgressIndicatorConstants.DefaultProgressAnimationSpec, która może służyć jako domyślna specyfikacja animacji podczas animacji postępu między wartościami (If38b5, b/161809914, b/161804677).
  • Właściwość state { ... } została wycofana na rzecz wywołań funkcji remember { mutableStateOf(...) }, aby zwiększyć przejrzystość. Dzięki temu zmniejsza się ogólna powierzchnia interfejsu API i liczba pojęć związanych z zarządzaniem stanem oraz dopasowuje się do wzoru by mutableStateOf() dotyczącego delegowania właściwości klasy. (Ia5727)
  • Zmieniono nazwę RRect na RoundRect, aby lepiej pasowała do wzorca nazewnictwa funkcji. Utworzono konstruktory funkcji podobnych do RRect i wycofane konstruktory funkcji RRect (I5d325).
  • Usunięto onChildPositioned i OnChildPositionedModifier. Programiści powinni zamiast tego używać metod onPositioned i OnPositionedModifier w ramach układu podrzędnego. (I4522e, b/162109766)
  • IntSize jest teraz klasą wbudowaną (I2bf42).
  • Aby edytować pusty obszar, naciśnij go dłużej. (Ib1e5b)
  • Ukryj pasek narzędzi po kliknięciu tekstu. (If4525)
  • Ukrywanie paska narzędzi podczas aktualizowania zaznaczenia. (I8444c)
  • Odznacz opcję Gdy rozmycie. (I781a2)

Wersja 0.1.0-dev16

5 sierpnia 2020 r.

Funkcje androidx.compose.foundation:foundation:0.1.0-dev16, androidx.compose.foundation:foundation-layout:0.1.0-dev16androidx.compose.foundation:foundation-text:0.1.0-dev16 są dostępne. Wersja 0.1.0-dev16 zawiera te commity.

Zmiany w interfejsie API

  • Do parametru itemContent w przypadku list typu Lazy dodano LazyItemScope. Udostępnia ona modyfikatory do wypełniania maksymalnego rozmiaru elementu nadrzędnego, co rozwiązuje problem, gdy element ma wypełniać widok, a zwykła funkcja Modifier.fillMaxSize() nie działa, ponieważ element jest mierzony z ograniczeniami nieskończoności. (Ibd3b2, b/162248854)
  • Przenoszenie okna do interfejsu (I47fa6)
  • Dodano LazyColumnForIndexed/LazyRowForIndexed – wersje LazyColumnFor/LazyRowFor, które w itemCallback udostępniają zarówno indeks, jak i element. Jest to przydatne, gdy oprócz bieżącego elementu musisz znać bieżący indeks. (I65ff3)
  • Modifier.deternimateProgress został przemianowany na Modifier.progressSemantics (I9c0b4).
  • Funkcja LazyColumnItems została przemianowana na LazyColumnFor. Nazwa LazyRowItems została zmieniona na LazyRowFor (I84f84).
  • Dodaj znaczniki lub adnotacje, aby dowiedzieć się, jak postępować zgodnie ze sprawdzonymi metodami. (I66b20)
  • Pakiet foundation.shape.corner został uproszczony do foundation.share (I46491, b/161887429)
  • Dodano parametr siły grawitacji w przypadku elementów LazyRow/LazyColumn. Elementy LazyRowItems/LazyColumnItems obsługują teraz zawijanie treści. (Ib39fc)
  • Stan ZoomableState został przemianowany na ZoomableController. Dodano obsługę krzywej niestandardowej dla smoothScale. Dodano funkcje enabledonZoomStarted (If8b8f).
  • Nazwa Material FilledTextField została zmieniona na TextField, a podstawowa nazwa TextField została zmieniona na BaseTextField, aby ułatwić znajdowanie i używanie najprostszego interfejsu API (Ia6242, b/155482676).
  • Wycofany wcześniej adapterList został usunięty. Zamiast tego użyj LazyColumnItems (I12b9b).
  • Modifier.drawBackground został przemianowany na Modifier.background (I13677)
  • Stary DSL ConstraintLayout został usunięty. Element ConstraintSet2 został przemianowany na ConstraintSet. (If58d1, b/162450908)
  • Dodano metody Modifier.absoluteOffset() i Modifier.absoluteOffsetPx(). W przeciwieństwie do modyfikatorów przesunięcia modyfikatory przesunięcia bezwzględnego nie będą automatycznie lustrzane w kontekście od prawej do lewej (I3aa21)
  • Funkcje RowColumn są teraz funkcjami w wierszu, co znacznie zmniejsza obciążenie związane z ich używaniem. (I75c10)

Poprawki błędów

  • Rozwiązanie ogólnych problemów z interfejsem API (I077bc)
    1. Usuwanie nieużywanego interfejsu OffsetBase
    2. Dopasuj klasy Offset i IntOffset, aby uzyskać spójną powierzchnię interfejsu API
    3. Zmień nazwę IntOffset.Origin na IntOffset.Zero, aby zachować spójność z interfejsem Offset API.
    4. Przeniesienie metody nativeCanvas z interfejsu Canvas, aby umożliwić użytkownikom tworzenie własnych instancji Canvas
    5. Utworzono szablon klasy EmptyCanvas, aby zmienić DrawScope na parametr niepusty zamiast stałej lateinit i zapewnić, że pole nie będzie puste
    6. Zmieniono nazwy typów ClipOp na Pascal Case.
    7. Zmieniono nazwy filtrów w układ Pascala.
    8. Zmieniono nazwy enumów StrokeJoin na Pascal Case.
    9. Zmieniono nazwy typów punktu na Pascal Case
    10. Zmieniono nazwy typów za pomocą Pascal Case.
    11. Zmieniono nazwy typów ścieżki w układ Pascala.
    12. Zmieniono nazwy enumów StrokeCap na Pascal Case.
    13. Zaktualizowano implementację DrawCache, aby nie używała parametrów lateinit
    14. Zaktualizowano DrawScope, aby nie używać już nieaktywnych delegacji w przypadku wewnętrznych parametrów fillPaint i strokePaint.
    15. Zaktualizowano komponent Image, aby uniknąć korzystania z Box, co pozwoliło zmniejszyć obciążenie.
    16. Zaktualizowano klasę Outline, aby zawierała adnotacje @Immutable
    17. Zaktualizowano węzeł PathNode, aby zawierał adnotacje @Immutable dla każdej instrukcji ścieżki
    18. Zaktualizowano podkompozycję wektorową, aby usunąć zbędne sprawdzanie warunkowe równości, ponieważ kompozycja już je obsługuje
    19. wycofanie metod konstruktora towarzysza Rect na rzecz konstruktorów funkcji;
    20. Zaktualizowano klasy pędzli i konstruktorów funkcji, aby używały interfejsów API @Immutable i @Stable.
    21. Zmieniono typ VertexMode na PascalCase
    22. Zaktualizowano metodę selectPaint klasy DrawScope, aby warunkowo zastępować parametry obrysu w obiekcie paint, jeśli uległy zmianie.
    23. Zaktualizowano rozmiar, aby dodać interfejs API do destrukturyzacji, zmieniono nazwę z UnspecifiedSize na Unspecified i usunięto nieużywane metody
  • Dodano zegar MonotonicFrameAnimationClock, który umożliwia użycie obiektu MonotonicFrameClock jako obiektu AnimationClockObservable, aby wypełnić lukę między nowymi zegarami opartymi na coroutines i interfejsami API, które nadal używają starych zegarów opartych na wywołaniu zwrotnym.

    odpowiednikiem klasy ManualAnimationClock jest teraz klasa ManualFrameClock. (I111c7, b/161247083)

  • Użytkownik SemanticsNodeInteraction.performPartialGesture został usunięty. Zamiast tego użyj atrybutu SemanticsNodeInteraction.performGesture. (Id9b62)

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

  • Zaktualizowano interfejsy API obsługujące tekst od prawej do lewej. Dodano atrybut LayoutDirectionAmbient, który umożliwia odczytywanie i zmienianie kierunku układu. Zmienniki Modifier.rtl i Modifier.ltr zostały usunięte. (I080b3)

  • Interfejs Modifier.plus został wycofany. Zamiast niego używaj interfejsu Modifier.then. „Then” ma silniejszy sygnał dotyczący kolejności, ale jednocześnie uniemożliwia wpisanie Modifier.padding().background() + anotherModifier, co powoduje przerwanie łańcucha i utrudnia czytanie (Iedd58, b/161529964)

  • Dodano isFocused() i isNotFocused() SemanticsMatcher. (I0b760)

  • Dodano RemeasurementModifier. Umożliwia użytkownikom synchroniczne ponowne pomieszczenie układu. Zasadniczo nie jest to potrzebne, ponieważ pomiar i przeformatowanie odbywają się automatycznie, ale używamy tego w elementach LazyColumnItems podczas przewijania. (I5f331, b/160791058)

  • Funkcja isSystemInDarkTheme uwzględnia teraz ustawienie ciemnego motywu w całym systemie i ignoruje stan oszczędzania energii przed Androidem Q zgodnie z najnowszymi wytycznymi. (I0c10c)

  • Zdarzenie OnChildPositioned zostało wycofane. Zamiast tego użyj metody OnPositioned w podrzędnym elemencie. (I87f95, b/162109766)

  • Nazwa reguły AndroidComposeTestRule została zmieniona na createAndroidComposeRule. (I70aaf)

  • Dodaj działanie związane z ułatwieniami dostępu, aby uzyskać TextLayoutResult (I9d6e6)

Wersja 0.1.0-dev15

22 lipca 2020 r.

Funkcje androidx.compose.foundation:foundation:0.1.0-dev15, androidx.compose.foundation:foundation-layout:0.1.0-dev15androidx.compose.foundation:foundation-text:0.1.0-dev15 są dostępne. Wersja 0.1.0-dev15 zawiera te commity.

Aby korzystać z wersji 0.1.0-dev15 Compose, musisz:

Aktualizacja zależności

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

Zmiany w interfejsie API

  • Podobnie jak nowy parametr w ScrollableColumn/ScrollableRow LazyColumnItems/LazyRowItems ma teraz też parametr contentPadding, który umożliwia dodanie wypełniania dla treści po jej przycięciu. Nie jest to możliwe za pomocą samego parametru modyfikatora. Umożliwia też dodanie odstępu tylko przed pierwszym elementem lub po ostatnim. (Ibc24e)
  • Wywołanie zwrotne onFocusChange w polach tekstowych zostało przemianowane na onFocusChanged (Ida4a1).
  • Komponenty VerticalScroller i HorizontalScroller zostały wycofane. Użyj ScrollableColumn i ScrollableRow, aby uzyskać wbudowane funkcje z zachowaniem i parametrami kolumny/wiersza, lub użyj Modifier.verticalScroll i Modifier.horizontalScroll w swoim elemencie. Podobnie w przypadku ScrollerPosition zastosowano wycofanie na rzecz ScrollState (I400ce, b/157225838, b/149460415, b/154105299).
  • Zmodyfikowano interfejsy API Modifier.draggable i Modifier.scrollable. Atrybut DragDirection został usunięty na rzecz atrybutu Orientation. Stan wymagany dla przewijanych elementów został uproszczony. Zmiana nazwy klasy ScrollableState na ScrollableController (Iab63c, b/149460415)
  • Właściwości semantyczne o pojedynczej wartości używają teraz stylu wywoływania. Na przykład „semantics { hidden = true }” jest teraz zapisywane jako: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412)
  • Rozmiary narożników używane przez RoundedCornerShape i CutCornerShape mogą teraz być większe niż 50% (Id2340, b/160400213)
  • Zmiana domyślnego parametru ContentScale dla komponentu Image z Inside na Fit. Zrobiliśmy to, aby zapewnić zachowanie zachowania polegające na skalowaniu leżącego u podstaw komponentu Painter, jeśli rozmiar układu jest większy niż rozmiar własny komponentu przy zachowaniu formatu obrazu. Takie działanie lepiej odpowiada oczekiwaniom użytkowników w zakresie udostępniania stałych rozmiarów obrazu, a jednocześnie nie wpływa na domyślne działanie, jeśli do obliczenia rozmiaru komponentu składanego służy tylko rozmiar bezwzględny. (I40ae3, b/159838006)
  • Używaj interfejsu AnimationSpec zamiast AnimationBuilder w interfejsach API najwyższego poziomu, aby uściśliwić koncepcję specyfikacji animacji statycznej. Ulepsza to język opisu przejścia, ponieważ usuwa wymóg użycia lambda do tworzenia specyfikacji animacji, takich jak tween czy spring. Zamiast tego używają parametrów konstruktora. – Zwiększenie ogólnej łatwości obsługi AnimationSpec poprzez udostępnienie konstruktorów zamiast polegania na obiektach budujących. – Zmiana czasu trwania i opóźnienia w przypadku KeyFrames i Tween na Int. Pozwala to wyeliminować niepotrzebne przekształcanie typów i przeciążanie metod (w przypadku obsługi zarówno Long, jak i Int). (Ica0b4)
  • Możliwość kliknięcia została usunięta. Użyj modyfikatora clickable (I84bdf).
  • Dodano LazyRowItems – analogiczny do LazyColumnItems (Ibbcf7) element umożliwiający przewijanie poziome.
  • Wprowadziliśmy interfejsy API animacji bezstanowej niskiego poziomu. Te interfejsy API (I63bf7)
  • Interfejsy androidx.ui.foundation.TextFieldValue i androidx.ui.input.EditorValue zostały wycofane. Wycofane zostały też komponenty TextField, FilledTextField i CoreTextField, które używają tego typu. Zamiast tego użyj interfejsu androidx.ui.input.TextFieldValue (I4066d, b/155211005).
  • Zastąpiono użycie funkcji IntPx za pomocą funkcji Int. Zastąpiono funkcję IntPxPosition za pomocą funkcji IntOffset. Zmienna IntPxSize została zastąpiona zmienną IntSize. (Ib7b44)
  • Usunięto androidx.ui.foundation.shape.RectangleShape; używaj androidx.ui.graphics.RectangleShape (I94939, b/154507984)
  • Aby skonsolidować liczbę klas używanych do reprezentowania informacji o rozmiarze, zamiast klasy PxSize użyj klasy Size. Daje to korzyści płynące z klasy wbudowanej, która wykorzystuje typ long do pakowania 2 wartości zmiennoprzecinkową, aby reprezentować szerokość i wysokość jako zmiennoprzecinkową. (Ic0191)
  • Aby skonsolidować liczbę klas używanych do reprezentowania informacji o pozycjonowaniu, zamiast klasy PxPosition użyj klasy Offset. Daje to korzyści płynące z klasy wbudowanej, która wykorzystuje typ long do pakowania 2 wartości zmiennoprzecinekowych, aby reprezentować przesunięcia X i Y jako zmiennoprzecinkowe. (I3ad98)
  • Dodano modyfikator.zoomable dla funkcji powiększania za pomocą gestów (Id5d63)
  • Komponent przełączalny został wycofany. Zamiast tego użyj Modifier.toggleable (I35220, b/157642842).
  • Element MutuallyExclusiveSetItem został wycofany. Zamiast tego użyj interfejsu Modifier.selectable. (I02b47, b/157642842)
  • Tag testowy został wycofany. Zamiast tego użyj funkcji Modifier.testTag. (If5110, b/157173105)
  • Dodaje parametr fontWeight do elementu Text, który został przez pomyłkę wcześniej nie dodany (I56937)
  • W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych kompozytowych klasach, aby polegać tylko na typach Dp i typach prymitywnych w przypadku parametrów pikseli (I19d02)
  • VerticalScroller obsługuje teraz kolumny bez żadnych dodatkowych ustawień. Widget HorizontalScroller obsługuje teraz automatycznie komponent Row. (Ieca5d, b/157020670)
  • W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych klasach kompozytowych, aby polegać tylko na typach Dp i typach prymitywnych w przypadku parametrów pikseli (Iede0b).
  • Do pakietu foundation dodano modyfikator.indication. Użyj go, aby wyświetlić wskazanie naciśnięcia/przeciągnięcia lub inne na niestandardowych elementach interaktywnych (I8425f, b/155287131).
  • VerticalScroller i HorizontalScroller obsługują teraz odwrotne przewijanie, jeśli w ScrollerPosition ustawiona jest opcja isReversed (I953bd)
  • Obsługa dodawania elementów składanych do układu tekstu. (I1373c)
  • Zbiorcze CanvasScope zostały scalone, więc teraz są tylko zbiorcze zakresy rysowania i zbiorczy zakresu rysowania treści. Zbiórczy CanvasScope został przemianowany na Zbiórcze zakresy rysowania. Zaktualizowano DrawScope w celu implementacji interfejsu Density i zapewnienia kierunku układu. Usunięto podklasę DrawScope w ContentDrawScope. Painter i PainterModifier zostały zaktualizowane tak, aby nie utrzymywać własności RTL, ponieważ DrawScope zapewnia ją już bez ręcznego podawania (I1798e).
  • Wycofano wycofany interfejs API DrawBackground na rzecz rozszerzenia interfejsu API drawBackground w modyfikatorze. Zmodyfikowano implementacje funkcji color, brush i paint drawBackground, aby zmniejszyć ścieżki kodu oraz usunąć wymóg tworzenia modyfikatora w ramach kompozycji. (I0343a)
  • Zaktualizowano interfejsy API wyższego poziomu, które udostępniają canvas, tak aby zamiast tego udostępniały CanvasScope. Dzięki temu użytkownicy nie muszą już samodzielnie zarządzać obiektami w Paint. Użytkownicy, którzy nadal potrzebują dostępu do Canvas, mogą użyć metody rozszerzenia drawCanvas, która zapewnia wywołanie zwrotne do wydawania poleceń rysowania do Canvas. (I80afd)
  • HorizontalScroller i VerticalScroller nie przywracają pozycji przewijania za pomocą zapisanego stanu instancji. (Ia0fae, b/155075048)
  • Funkcja FocusManagerAmbient została usunięta. Użyj FocusModifier.requestFocus, aby uzyskać fokus. (Ic4826)
  • Układ tabeli został tymczasowo usunięty, dopóki nie udostępnimy go ponownie w odświeżonym interfejsie API. (Id88a7)
  • Utworzono interfejs CanvasScope API, który otacza obiekt Canvas, aby udostępnić bezstanową, deklaratywną powierzchnię rysowania. Transformacje są zawarte w ramach własnego zakresu odbiornika, a informacje o rozmiarach są również ograniczone do odpowiednich granic wstawki. Nie wymaga od konsumenta utrzymywania własnego obiektu stanu Paint do konfigurowania operacji rysowania.

    Dodano CanvasScopeSample oraz zaktualizowano aplikację demonstracyjną, aby zawierała demonstrację deklaratywnej grafiki (Ifd86d).

  • Element ColoredRect został usunięty. User Box z modyfikatorem drawBackground (I983c7, b/152753731)

  • Dodaj możliwość dostosowania koloru kursora do pola tekstowego (I6e33f)

  • Teraz można ukryć lub wyświetlić klawiaturę za pomocą klasy SoftwareKeyboardController, która jest dostarczana przez wywołanie zwrotne onTextInputStarted (I8dc44, b/151860051).

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

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

  • Parametr focusIdentifier w elementach CoreTextField i TextField został zastąpiony przez FocusNode, aby umożliwić integrację z podsystemem fokusa. (I7ea48)

  • Aktualizacja pola tekstowego – w osi poziomej zajmie ono całą dostępną dla niego przestrzeń (Ib08df, b/154638552)

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

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

  • Zastąpiono wszystkie przypadki użycia typu Color w interfejsie API, w których wartość może być null, wartością nienullową, oraz użyto Color.Unset zamiast null (Iabaa7).

  • Aktualizacja interfejsu TextField API – połączono funkcje zwrotne onFocus i onBlur w jedną funkcję zwrotną onFocusChange(Boolean) z parametrem (I66cd3).

  • Zmieniliśmy nazwę ScaleFit na ContentScale. Przemieściliśmy ContentScale z modułu ui-graphics do modułu ui-core, aby znajdował się w tym samym module co interfejs API do wyrównywania. Zmieniliśmy nazwę FillMaxDimension na Crop, FillMinDimension na Fit, a Fit na Inside, aby lepiej dopasować je do odpowiedników ImageView.ScaleType. Dodaliśmy dokumentację wskazującą, że kombinacja Crop i Alignment.Center daje taki sam wynik jak ImageView.ScaleType.CENTER_CROP, a Fit używany z Alignment.Center daje taki sam wynik jak ImageView.ScaleType.FIT_CENTER. Inside używany z Alignment.Center daje taki sam wynik jak ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521).

  • Usunięcie ProvideContentColor, zamiast tego używaj bezpośrednio ContentColorAmbient z Providers (Iee942)

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

  • Ulepszenie interfejsu DrawModifier API:

    • Zmiana zakresu odbiornika dla metody draw() ContentDrawScope
    • Usunięto wszystkie parametry w metodzie draw().
    • DrawScope ma ten sam interfejs co poprzedni CanvasScope
    • ContentDrawScope ma metodę drawContent() (Ibaced, b/152919067).
  • Obiekt ColoredRect został wycofany. Zamiast tego użyj Box(Modifier.preferredSize(width, height).drawBackground(color)). (I499fa, b/152753731)

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

  • Zastąpiono operator Modifier plus funkcjami rozszerzenia fabrycznego (I225e4).

  • Atrybuty draggable zostały przeniesione do modyfikatorów (Id9b16, b/151959544)

  • Z pakietu androidx.ui.core do pakietu androidx.ui.foundation przeniesiono interfejs Text. (I87ce5)

  • dodaj parametr enabled do pola wyboru, przełącznika i opcji przełączalnej (I41c16)

  • Efekt rozchodzenia się fal jest teraz modyfikatorem. Chociaż opcja Clickable nie została jeszcze przekonwertowana, zalecane użycie to Clickable(onClick = { ... }, modifier = ripple()) (Ie5200, b/151331852, b/150060763)

  • Dodano interfejs VectorPainter API, który zastępuje dotychczasowy interfejs subcomposition API do obsługi grafik wektorowych. Wynik podkompozycji to obiekt VectorPainter, a nie DrawModifier. Wycofano poprzednie komponenty DrawVector na rzecz komponentu VectorPainter.

    Zmieniliśmy nazwę interfejsu API Image(Painter) na PaintBox(Painter). Utworzyliśmy komponent wektorowy, który działa jak komponent Image, ale z użyciem obiektu VectorAsset zamiast obiektu ImageAsset (I9af9a, b/149030271).

  • Stworzony komponent Image do obsługi skalowania/układu, a także do rysowania danego ImageAsset na ekranie. Ta kompozycja obsługuje też rysowanie dowolnego dowolnego wystąpienia Paintera z zachowaniem jego rozmiaru wewnętrznego oraz obsługuje dany rozmiar stały lub minimalny rozmiar (Ibcc8f)

  • Przyciski Button, FloatingActionButton i Clickable mają teraz oddzielny parametr enabled. Niektóre parametry przycisku zostały przemianowane lub zmieniono ich kolejność. (I54b5a)

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

    Utworzono metodę rozszerzenia w klasie android.graphics.BitmapBitmap.asImageAsset(), która umożliwia tworzenie instancji ImageAsset. Jest ona przydatna do łączenia tradycyjnego tworzenia aplikacji na Androida z ramami Compose. (Id5bbd)

  • Usunięto kompozycję DrawImage. Użyj ImagePainter, aby narysować obraz na istniejącym układzie, lub SimpleImage, aby wprowadzić obraz, który zajmuje miejsce (I595e1, b/149827027)

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

  • Dodano Icon, IconButton i IconToggleButton, usuwając AppBarIcon. Możesz bezpośrednio zastąpić istniejące użycia ikony paska aplikacji przyciskiem ikony. Teraz będą one miały prawidłowy docel dotykowy. Informacje o użyciu znajdziesz w przykladach, a ikony dostępnych ikon Material Design możesz używać bezpośrednio z tymi komponentami. (I96849)

  • Usunięto kompozyt DrawShape. Zamiast tego użyj modyfikatora DrawBackground. (I7ceb2)

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

  • Dodano komponent przewijania, który umożliwia tworzenie niestandardowych list i przewijaczy (I5fd37)

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

  • Dodaj parametry wypełnień, obramowania, kształtu i tła do pola tekstowego (I05027, b/148147281)

  • Dodano komponent Canvas. Ta kompozycja zajmuje pewien rozmiar (podany przez użytkownika) i pozwala na rysowanie za pomocą CanvasScope (I0d622)

  • zmień modyfikator Border na DrawBorder (I8ffcc);

  • Dodano komponent Box do łączenia układu i funkcji rysowania. (I6e2a7)

  • Scrollery działają teraz zgodnie z natywnym zachowaniem Androida. (I922af, b/147493715)

  • Zastąpiono metodę DrawBorder metodą Border Modifier (Id335a).

  • Nazwa Modifier.tag została zmieniona na Modifier.layoutId, aby uniknąć pomyłek z tagiem Modifier.testTag. (I995f0)

  • Nazwa parametru procentowego podczas tworzenia wytycznych ConstraintLayout została zmieniona na ułamek. (Ida2db)

  • Dodano obsługę marginesów ograniczeń ConstraintLayout. (I47ffe)

  • Naprawiono obsługę RTL w ConstraintLayout. Dodano interfejsy API nieobsługujące tekstu w języku arabskim. (I3b1c7)

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

  • Dodano adnotację @ExperimentalLayout. ConstraintLayout, FlowRow i FlowColumn są teraz oznaczone tym tagiem, aby zaznaczyć, że ich interfejsy API ulegną zmianie. (I412a8)

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

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

  • Usunięto wycofany interfejs LayoutTag(). Zamiast niego używaj interfejsu Modifier.tag(). Wycofano wycofany interfejs Modifier.matchParent(). Zamiast niego użyj interfejsu Modifier.matchParentSize(). (If8044)

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

  • Interfejs kompozytowy AlignmentLineOffset został wycofany. Zamiast niego używaj modyfikatora relativePaddingFrom(). Usunięto kompozyt CenterAlignmentLine. (I60107)

  • Dodano modyfikator układu defaultMinSizeConstraints, który ustawia ograniczenia rozmiaru dla zawiniętego układu tylko wtedy, gdy przychodzące odpowiednie ograniczenia są nieokreślone (0 dla minimalnych ograniczeń i nieskończoność dla maksymalnych ograniczeń). (I311ea, b/150460257)

  • kontener został usunięty; Zamiast tego użyj Box (Ibbc2b, b/151407926).

  • Usunięto przestarzałe modyfikatory LayoutWidth/Height/Size. (Ib0bc1)

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

  • Dodano modyfikator symetrycznego wypełnienia. (I39840)

  • Usunięto przestarzały modyfikator LayoutAspectRatio. (I65a74)

  • Usunięto przestarzałe modyfikatory LayoutAlign. (I10877)

  • Naprawiliśmy błąd w modyfikatorach szerokości i wysokości, który powodował, że wymiary zawiniętego układu były mierzone bez ograniczeń na przeciwnych osiach. (I210b8, b/154797971)

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

  • Zaktualizowano wrapContentWidth i wrapContentHeight, aby oczekiwały wyrównania pionowego lub poziomego zamiast dowolnego wyrównania. Modyfikator grawitacji został zaktualizowany, aby umożliwiać wyrównanie w pionie lub poziomie. Wiersz, kolumna i stos zostały zaktualizowane, aby obsługiwać niestandardowe ciągłe wyrównania. (Ib0728)

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

  • Zmieniono nazwę EdgeInsets na InnerPadding. Zmieniliśmy nazwę parametru innerPadding w przyciskach Material Buttons na padding. (I66165)

  • alignToSiblings przyjmuje teraz obiekt Measured zamiast obiektu Placeable. (I5788d)

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

  • Dodano obsługę dostosowywania wymiarów elementów podrzędnych ConstraintLayout (Idb1a5).

  • Usunięto nieaktualne komponenty Wrap i Center. (I29e23)

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

  • Elementy RowScope i ColumnScope są teraz dostępne poza elementami Row i Column. (I3a641)

  • Kontenery zostały wycofane. Zamiast tego użyj Box. (I675ce, b/151407926)

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

  • Wstępna obsługa RTL w układzie tworzenia wiadomości (Ia5519)

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

  • Usunięto kompozyt AspectRatio na rzecz modyfikatora. Usunięto przestarzałe komponenty FlexColumn i FlexRow oraz modyfikator Spacing (Iec8a7).

  • Usunięto modyfikator LayoutInflexible dla wierszy i kolumn (I0d820).

  • Zaimplementuj uchwyty przeciągania, aby zmienić zaznaczenie pola tekstowego. (I27032)

  • Implementuje LongPressAndDrag dla TextField Selection. (I17919)

Poprawki błędów

  • Interfejs FocusModifier został wycofany i zastąpiony interfejsami Modifier.focus, Modifier.focusRequester i Modifier.focusObserver. FocusState i FocusDetailedState są wycofywane na rzecz FocusState2 (I46919, b/160822875, b/160922136).
  • Nazwa runOnIdleCompose została zmieniona na runOnIdle (I83607)
  • Zmieniliśmy nazwy kilku interfejsów API do testowania, aby były bardziej intuicyjne. Wszystkie interfejsy findXYZ zostały przemianowane na onNodeXYZ. Wszystkie interfejsy doXYZ zostały przemianowane na performXYZ. (I7f164)
  • Usuwa wcześniej wycofany modyfikator.ripple. Teraz w przypadku elementów klikalnych domyślnym efektem jest efekt falowania (jeśli w aplikacji masz ustawione {} w ramach motywu Material). W większości przypadków możesz więc po prostu użyć elementu klikalnego i bezpłatnie uzyskać efekt falowania. Jeśli chcesz dostosować kolor, rozmiar lub parametr ograniczający falę, możesz ręcznie utworzyć obiekt RippleIndication i przekazać go do clickable jako parametr indication. (I663b2, b/155375067)
  • Usunięto przestarzałe interfejsy API do testowania rozmiarów. (Iba0a0)
  • Dodano eksperymentalny interfejs API LayoutNode (I4f2e9)
  • Wersja 1 blokowania orientacji przewijania jest implementowana w Compose. (I1ce7a, b/150289741)
  • Okienka, dialogi i menu dziedziczą teraz kontekstowy motyw MaterialTheme (Ia3665, b/156527485).
  • Usunięto parametr kierunku układu z bloku pomiaru funkcji Layout(). Kierunek układu jest jednak dostępny w obiekcie zakresu pomiaru w wywołaniu zwrotnym (Ic7d9d).
  • Dodaj AbsoluteArrangement – umożliwia układanie elementów podrzędnych w wierszu bez automatycznego lustrzanego odbicia w językach z orientacją poziomą (I3a1df).
  • Adnotacja @Untracked została wycofana. Zastąp to elementem @ComposableContract(tracked=false) (Id211e).
  • Przed tą zmianą wtyczka kompilatora kompozytora przechwytywała wywołania konstruktorów w funkcji @Composable, jeśli wystąpiły one w ramach (I5205a, b/158123804)
  • Dodaj komponent viewModel(), który umożliwia tworzenie lub pobieranie już utworzonego widoku modelu w sposób podobny do tego, w jaki działa on w komponencie Activity lub Fragment (I5fdd1).
  • Zmieniono klasę Radius na klasę wbudowaną. Usunięto metody tworzenia towarzysza na rzecz konstruktora funkcji z parametrem domyślnym, aby promień na osi y był zgodny z obowiązkowym parametrem promienia na osi x.

    Zaktualizowano DrawScope.drawRoundRect, aby używać pojedynczego parametru Radius zamiast 2 oddzielnych wartości typu float dla promienia wzdłuż osi X i Y (I46d1b).

  • W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych klasach kompozytowych, aby w przypadku parametrów pikseli używać tylko typu dp i typów prymitywnych. Usunięto całą klasę Px (I3ff33)

  • W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych kompozytowych klasach, aby polegać tylko na typach Dp i pierwotnych w przypadku parametrów pikseli (I086f4)

  • W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych kompozytowych klasach, aby polegać tylko na typach Dp i typach prymitywnych w przypadku parametrów pikseli (Id3434).

  • W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych klasach kompozytowych, aby polegać tylko na typach Dp i typach prymitywnych w przypadku parametrów pikseli (I97a5a).

  • Kursor pola tekstowego ma migającą animację (Id10a7)

  • Gesty częściowe nie wymagają już przekazywania tokenu gestu (Id7ae5).

  • W ramach dużego refactoringu zastąpiliśmy użycie klasy Px w różnych kompozytowych klasach, aby polegać tylko na typach Dp i typach prymitywnych w przypadku parametrów pikseli (I57bff)

  • Element Modifier.semantics został wycofany, aby umożliwić jego użycie w przypadku komponentów wysokiego poziomu. (I4cfdc)

  • Zmień nazwę AnnotatedString.Builder.addAnnotationString na addStringAnnotation. (I5059e)

  • Zaktualizowaliśmy interfejs Alignment API i dodaliśmy obsługę wyrównania bezwzględnego (które nie powoduje automatycznego lustrzanego odbicia w kontekście Rtl) (I38cd3).

  • Dzieci elementów Layout i LayoutModifier można mierzyć z użyciem innego kierunku układu. (Ibd731)

  • Wprowadzenie dodatkowego opcjonalnego parametru rect do ImagePainter w celu obsługi rysowania podzbioru podrzędnego w podstawowym pliku ImageAsset (I0ea9e)

  • Naprawiono awarię w AdapterList podczas usuwania elementów (Ic64b0, b/153195921)

  • Zmieniliśmy sposób pomiaru pierwszego układu umieszczonego w bloku activity.setContent { }. Wcześniej wypełniał on cały ekran aktywności, a teraz zachowuje się tak, jakby był umieszczony w grupie: może być mniejszy niż ekran i znajduje się w lewym górnym rogu ekranu. Jeśli chcesz zachować stare zachowanie, możesz zastosować funkcję Modifier.fillMaxSize() do swojego układu. (Ie88a7, b/153453714)

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

  • Nazwa modułu ui-text została zmieniona na ui-text-core (I57dec).

  • Przeniesienie komponentów ui-framework/CoreText i CoreTextField do komponentów ui-text-compose. W projekcie warto uwzględnić komponent ui-text-compose. (I32042)

  • Funkcje runOnIdleComposerunOnUiThread są teraz funkcjami globalnymi zamiast metodami w komponencie ComposeTestRule. (Icbe8f)

  • [Zmienne]Operatory delegujące właściwości stanu zostały przeniesione do rozszerzeń, aby umożliwić optymalizację delegowania właściwości w wersji Kotlin 1.4. Aby nadal korzystać z by state { ... } lub by mutableStateOf(...), dzwoniący muszą dodać importy. (I5312c)

  • Domyślne wartości parametrów clipToBounds i clipToOutline w funkcjach DrawLayerModifier i drawLayer zostały ustawione na false. (I0eb8b, b/152810850)

  • Zmieniono nazwę LayoutResult na MeasureResult. (Id8c68)

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

  • Zmieniono nazwę LayoutFlexible na LayoutWeight. Parametr tight został przemianowany na fill. (If4738)

  • Funkcja drawVector została zmieniona z zwykłej funkcji kompozytowej na funkcję zwracającą modyfikator drawVector(), która będzie rysować wektor jako tło układu. (I7b8e0)

  • Zastąp funkcję kompozytową Clip za pomocą modyfikatora drawClip(). Funkcja drawClipToBounds jest wygodnym modyfikatorem do stosowania, gdy chcesz przyciąć tylko do krawędzi warstwy o kształcie prostokąta. (If28eb)

  • Funkcja kompozytowa DrawShadow została zastąpiona modyfikatorem drawShadow(). Cienie są teraz rysowane jako część LayerModifier. (I0317a)

  • Interfejs androidx.compose.ViewComposer został przeniesiony do androidx.ui.node.UiComposer. Interfejs androidx.compose.Emittable został usunięty. Był on zbędny w porównaniu z ComponentNode. androidx.compose.ViewAdapters został usunięty. Nie są one już obsługiwane. Metoda Compose.composeInto została wycofana. Użyj w zamian pola setContent lub setViewContent. Metoda Compose.disposeComposition została wycofana. Zamiast tego użyj metody dispose w obiekcie Composition zwracanym przez funkcję setContent. Funkcja androidx.compose.Compose.subcomposeInto została przeniesiona do androidx.ui.core.subcomposeInto. Metoda ComponentNode#emitInsertAt została przemianowana na ComponentNode#insertAt. Metoda ComponentNode#emitRemoveAt została przemianowana na ComponentNode#removeAt. Metoda ComponentNode#emitMode została przemianowana na ComponentNode#move (Idef00)

  • Wycofana funkcja kompozycyjna owinięcia. Można go zastąpić modyfikatorem LayoutAlign lub kompozycją Stack (Ib237f).

  • Zmieniliśmy kierunek układu tak, aby był propagowany z nadrzędnego węzła układu do podrzędnych. Dodano modyfikator kierunku układu. (I3d955)

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

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

  • Density i DensityScope zostały połączone w jeden interfejs. Zamiast ambientDensity() możesz teraz użyć DensityAmbient.current. Zamiast withDensity(gęstość) wpisz tylko with(gęstość) (I11cb1)

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

    • Dodano klasy modelu dla AnimatedValue, AnimatedFloat itp.
    • Dodano nowy zestaw lekkiego interfejsu API @Composable do animowania wartości.
    • (I79530)
  • Zmiany w interfejsie API ambients. Szczegółowe informacje znajdziesz w logach i dokumentacji Ambient<T> (I4c7ee, b/143769776).

  • Wartości pozycji linii wyrównania zwracane przez Placeable#get(AlignmentLine) są teraz niezerowe. Jeśli nie ma linii wyrównania, zwracana jest wartość AlignmentLine.Unspecified. (I896c5, b/158134875)

  • Naprawiono błąd w ConstraintLayout, który powodował awarię podczas rekompozycji. (Ibee5a, b/158164341)

  • Zmiana interfejsu lambda z dodatkiem Constraints. Teraz zamiast 2 parametrów ma zakres odbiornika, który oprócz ograniczeń i kierunku układu zawiera właściwości minWidth, maxWidth, minHeight i maxHeight w pikselach (I91b9a, b/149979702)

  • Zmieniono nazwę LayoutModifier2 na LayoutModifier. (Id29f3)

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

  • Atrybut LayoutDirectionAmbient został wycofany. Aby odczytać kierunek układu zdefiniowany przez ustawienie języka, użyj parametru localeLayoutDirection w ustawieniu ConfigurationAmbient (I851b1).

  • Dodano pozycję w rodzicu i zakres w rodzicu dla współrzędnych układu. (Icacdd, b/152735784)

  • Składanka ParentData została wycofana. Musisz utworzyć modyfikator, który implementuje interfejs ParentDataModifier, lub użyć modyfikatora LayoutTag, jeśli chcesz po prostu oznaczać elementy potomne układu, aby rozpoznawać je w bloku pomiaru. (I51368, b/150953183)

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

  • Zabranie możliwości stosowania ujemnego wypełnienia w przypadku atrybutu LayoutPadding. Zamiast tego do przesunięcia pozycji ujemnej należy używać atrybutu LayoutOffset. (Ifb5b1)

  • WithConstraints ma parametr LayoutDirection (I6d6f7)

  • Zaktualizowaliśmy flagę ComposeFlags.COMPOSER_PARAM na true, co spowoduje zmianę strategii generowania kodu w pluginie do tworzenia wiadomości. Ogólnie rzecz biorąc, powoduje to, że funkcje @Composable są generowane z dodatkowym parametrem syntetycznym, który jest przekazywany do kolejnych wywołań @Composable, aby środowisko uruchomieniowe mogło prawidłowo zarządzać wykonywaniem. Jest to istotna zmiana w binarnych danych, która jednak powinna zachować zgodność na poziomie źródłowym we wszystkich zatwierdzonych zastosowaniach compose. (I7971c)

  • Zmiana metody LayoutCoordinates, aby ustawić parametry alignmentLines jako zbiór zamiast mapy i zamiast tego, aby zwracać wartość, użyj operatora get(). Dzięki temu modyfikatory mogą łatwiej modyfikować co najmniej 1 wartość zbioru bez tworzenia nowej kolekcji dla każdego modyfikatora. (I0245a)

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

    Właściwość size w metodzie LayoutCoordinates używa wartości IntPxSize zamiast PxSize. Układy używają rozmiarów w pikselach, więc wszystkie rozmiary układów powinny używać liczb całkowitych, a nie wartości zmiennoprzecinkowych. (I9367b)

  • Ulepszenia interfejsu API ograniczeń (I0fd15)

  • Dodano TextDirection.Content (I48f36).

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

  • Dodaj FloatingToolbar do wyboru pola tekstowego. (Ie8b07)

  • Nazwa parametru TextDirectionAlgorithm została zmieniona na TextDirection (I75ce8).

  • Nazwa atrybutu TextDirection została zmieniona na ResolvedTextDirection (I3ff38)

  • Dodaj HapticFeedback do TextField Selection. (I58050)

  • Dodaj metody Kopiuj, Wytnij i Wklej do TextField Selection. (Idb70b)

  • TestTag i Semantics zostały usunięte. Zamiast tego użyj funkcji Modifier.testTag i Modifier.semantics (I15ff0, b/158841414).

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

  • Zmiana interfejsu API: usługa AnnotatedString(builder: Builder) została przemianowana na annotatedString(builder: Builder). (Ia6377)

  • Zmiana interfejsu API: usługa AnnotatedString.Item została przemianowana na AnnotatedString.Range. (I2d44d)

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

  • Nowa usługa LifecycleOwnerAmbient jest już dostępna. Aktywność, której używasz w Compose UI, powinna teraz rozszerzać klasę androidx.activity.ComponentActivity (lub AppCompatActivity). Metoda setContent w klasie android.app.Activity została wycofana (Idb25a, b/153141084).

  • Nazwa pakietu ui-android-text (androidx.text) została zastąpiona nazwą androidx.ui.text.platform, aby dostosować ją do zasad dotyczących androidx. (I42711)