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 Kandydat do wydania Wersja Beta Wydanie alfa
30 października 2024 r. 1.7.5 - - 1.8.0-alpha05

Struktura

Narzędzie Compose to połączenie 7 identyfikatorów grup Maven w ramach usługi androidx. Każda grupa zawiera docelowy podzbiór funkcji, z których każda ma własny zestaw informacji o wersji.

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

GrupaOpis
compose.animation,tworzyć animacje w aplikacjach Jetpack Compose, aby wzbogacać wrażenia użytkowników.
compose.compilerPrzekształcaj funkcje @Composable i optymalizuj funkcje 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 z komponentami Material Design 3, które stanowią kolejną wersję 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.runtime,Podstawowe elementy modelu programowania i zarządzania stanem w Compose oraz środowisko uruchomieniowe główne dla wtyczki kompilatora Compose, na które ma być nakierowany.
compose.ui,Podstawowe elementy interfejsu tworzenia wiadomości potrzebne do interakcji z urządzeniem, w tym układ, rysowanie i wprowadzanie tekstu.

Deklarowanie zależności

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

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

Odlotowe

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

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

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-alpha05

30 października 2024 r.

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

Nowe funkcje

  • Obsługa automatycznego dobierania 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ć skonfigurowanie nadmiernych przewijania w obrębie hierarchii. Wartość podana w parametrye LocalOverscrollFactory zostanie domyślnie użyta do utworzenia OverscrollEffect. Aby utworzyć i zapamiętać efekt z aktualnie udostępnionej fabryki, użyj rememberOverscrollEffect(). (I51ca4, b/255554340)

Zmiany interfejsu API

  • Przedstaw element CompositionLocal, którego można użyć do zmiany barwy wyróżnienia autouzupełniania w celu jego wypełnienia. (I32092)
  • Usunięto ScrollableDefaults.overscrollEffect – zamiast tego użyj: 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 został tymczasowo udostępniony w celu zwiększenia 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ą przeloty i będą prawidłowo wysyłać zdarzenie onPostFling z pozostałą szybkoś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)
  • Wprowadzona flaga 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 niejawny modyfikator graphicsLayer z funkcji BasicText kompozycyjnej. 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)
  • Zaktualizuj działanie anulowania przesuwania w elementach przewijanych. Teraz, jeśli przewijany element przesuwa się i dociera do granicy, poprawnie przekaże prędkość do następnego przewijania w łańcuchu, zamiast kontynuować. (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.

Usługa androidx.compose.foundation:foundation-*:1.7.5 została zwolniona. 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.

Usługa androidx.compose.foundation:foundation-*:1.7.3 została zwolniona. 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 zatwierdzenia.

Poprawki błędów

  • Rozwiązanie problemu z elementami przeciągania, które nie uwzględniały zdarzeń w dół, przez co ulotki wyglądały wolniej 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 Wskazówek są skuteczniejsze w porównaniu z poprzednim (wycofanym) interfejsem 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 wartość to null, a podany wskaźnik ma wartość IndicationNodeFactory, wskazywanie można utworzyć leniwie tylko wtedy, gdy jest to konieczne, co zwiększa skuteczność. Jeśli nie podnosisz danych i nie używasz MutableInteractionSource, zalecamy przekazanie wartości null zamiast wartości 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).
  • Przedstawiamy ContextualFlowRow i Enhanced FlowRow/Column z MaxLines i Overflow. Z przyjemnością informujemy o ulepszeniach eksperymentalnej wersji FlowRow i FlowColumn, które oprócz premiery ContextualFlowRow i ContextualFlowColumn obejmują teraz maxLines i rozszerzoną obsługę. Ta aktualizacja ma na celu dostarczenie komponentów zapewniających optymalną wydajność. ContextualFlow* to idealne rozwiązanie dla dużej liczby elementów z małą konfiguracją maxLines i dynamicznymi przyciskami +N zobacz więcej. Z kolei FlowRow i FlowColumn są idealne dla niewielkiej liczby elementów, która nie przekracza 100 elementów. Ważne: aby zachować obecne działanie funkcji FlowRow lub FlowColumn, w których wszystkie elementy są złożone niezależnie od tego, czy pasują do maksymalnej wartości osi poprzecznej, podczas inicjowania ustaw nadmiar na FlowRowOverflow.Visible lub FlowColumnOverflow.Visible. Zapoznaj się z usługami ContextualFlowRowSample i FlowRowSample, aby zobaczyć przykłady tych nowych funkcji w praktyce. (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: wyglądu (rozjaśniania), znikania (zanikania) i zmiany kolejności. (I2d7f7, b/150812265)
  • Wprowadziliśmy eksperymentalną obsługę długich zrzutów ekranu w kontenerach przewijania w usłudze Compose 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.

Usługa androidx.compose.foundation:foundation-*:1.7.0-rc01 została zwolniona. Wersja 1.7.0-rc01 zawiera te zatwierdzenia.

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: zapobiegaj propagacji wartości NaN w interfejsie Compose i podstawy.

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 zatwierdzenia.

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.

Usługa androidx.compose.foundation:foundation-*:1.7.0-beta04 została zwolniona. Wersja 1.7.0-beta04 zawiera te komity.

Poprawki błędów

  • Unikaj awarii przy pomiarze bardzo dużych linii tekstowych (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)
  • Usunięto „Marquee” z właściwości MarqueeDefaults. (Iad4f4)
  • Usunięto ucznia 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/339171222)
  • Sekcja BTF2 zawiera teraz prawidłowe gesty wyboru myszy. (Ibe8c6)

Treści tłumaczone przez użytkowników zewnętrznych

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

Zmiany interfejsu API

  • Ze względu na zgodność binarną z powrotem dodaliśmy właściwość KeyboardOptions.shouldShowKeyboardOnFocus jako wycofaną, ukrytą. (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)
  • Zastąpiliśmy onDragStarted i onDragStopped wywołaniami zwrotnymi bez zawieszenia. (I59de8)

Poprawki błędów

  • Naprawiono błąd, który powodował awarię Pager, gdy wartość contentPadding była większa niż przychodzące ograniczenia. Pager zmienia teraz wartości ujemne zwrócone z PageSize na 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 interfejsu 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(...). Lub positionInLocalLookaheadFrameOfReference w sklepie 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 zwracany typ funkcji Paragraph/MultiParagraph#getRangeForRect(), który nie może mieć wartości null. (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-alfa07 zawiera te zatwierdzenia.

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: wyglądu (rozjaśniania), znikania (zanikania) i zmiany kolejności. (Ib7d12, b/330510929)
  • Dodaliśmy obsługę animacji pojawiania się i znikania elementów w wersjach LazyVerticalStaggeredGridLazyHorizontalStaggeredGrid. Wcześniej można było dodać modyfikator Modifier.animateItemPlacement() w celu obsługi animacji miejsca docelowego (zmiany kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwie Modifier.animateItem(), który umożliwia obsługę wszystkich 3 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 stylu, najechania kursorem i zaznaczenia linki tekstowe otrzymały opcję stylizacji stanu naciśniętego. (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). Zwiększa to intuicyjność animacji approachLayout, umożliwiając rozróżnianie przesunięcia i zasady bezpośrednio przy animowaniu podejścia. (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 działania, chyba że wywołasz funkcję 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 przebiegu 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 działania, chyba że wywołasz funkcję 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 korzystasz z motywów Material Design, użyj obiektu TextDefaults, aby utworzyć adnotację z zastosowanymi motywami Material Design (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 elementu 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 renderować 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)
  • Pole ImeOptions.hintLocales nie może już dopuszczać wartości null. 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 LazyColumn/LazyRow mogą teraz zrezygnować z utrzymywania indeksu na podstawie klucza następnego przebiegu pomiarów, wywołując metodę LazyListState.requestToScroll niezawieszoną. (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 będzie jeszcze można wyświetlać list punktowanych. (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 ono domyślnie wyłączone. Aby je włączyć, ustaw flagę ComposeFeatureFlag_LongScreenshotsEnabled na wartość prawda. Ten znacznik zostanie usunięty przed wersją beta 1.7. (I2b055, b/329296471)
  • Wprowadzaj nowy interfejs API GraphicsLayer, aby zapewnić większą elastyczność w umieszczaniu i renderowaniu instancji GraphicsLayer oraz obsługiwać wbudowane funkcje renderowania bez konieczności koordynowania z implementacjami kompozycyjnymi określania 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. Wolę używać: snapshotFlow { state.text } lub snapshotFlow { TextFieldCharSequence(state.text, state.selection) } (I7d629)
  • Zmieniono organizację parametrów 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) i BasicSecureTextField używają teraz parametru KeyboardActionHandler zamiast KeyboardActions do przetwarzania działań wykonanych 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. Usunięto parametry keyboardType i imeAction na rzecz pełnej klasy KeyboardOptions przy zachowaniu tych samych wartości domyślnych odpowiednich dla klasy BasicSecureTextField. Usunęliśmy też parametr scrollState. (Ibbfa9)
  • Typ użytkowniczki TextFieldState.text został zmieniony z TextFieldCharSequence na tylko 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)
  • Usługa rememberTextFieldState jest teraz dostępna w wersji stabilnej. (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ęto niedawną zmianę w umowie, w której wywołania funkcji AnchoredDraggableState#anchoredDrag byłyby wywoływane po zakończeniu operacji anchoredDrag. (I95715)

Wersja 1.7.0-alpha05

20 marca 2024 r.

Usługa androidx.compose.foundation:foundation-*:1.7.0-alpha05 została zwolniona. Wersja 1.7.0-alfa05 zawiera te zatwierdzenia.

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 wprowadzimy zamienny interfejs API do obsługi hiperlinków. (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. Usługa PlatformTextInputTestOverride została wycofana. (I862ed, b/322680547)
  • Podziel restrictedConstraints() na 2 metody: fitPrioritizingWidth()fitPrioritizingHeight() (I6d7fd)

Treści tłumaczone przez użytkowników zewnętrznych

  • 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-alfa04 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Obsługa funkcji pisma odręcznego rysikiem na urządzeniach z Androidem U (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 BasicTextField2 i BasicSecureTextField, które miały parametry value: String i onValueChange: () -> 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 tej liście zmian dodajemy działanie semantyczne GetScrollViewportLength, aby umożliwić przekazywanie do systemu a11y informacji o komponentach przewijanych w ramach tworzenia wiadomości. Ta lista zmian stosuje również użycie tej właściwości na przewijanych listach podstawowych. (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.

Usługa androidx.compose.foundation:foundation-*:1.7.0-alpha03 została zwolniona. Wersja 1.7.0-alfa03 zawiera te zatwierdzenia.

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)
  • Funkcja 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 w usługach 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ą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. Zapoznaj się z usługami ContextualFlowRowSample i FlowRowSample, aby zobaczyć przykłady tych nowych funkcji w praktyce. (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 interfejsu API

  • HorizontalPager, VerticalPager i PagerState są awansowane do wersji stabilnej. (I67660, b/316966909)
  • Dodano lokalną kompozycję LocalTextLinkStyle, która pozwala zmieniać styl linków w tekście w aplikacji. Jeśli używasz w aplikacji własnego motywu, ustaw tę kompozycję lokalnie zgodnie z określonym motywem. 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 funkcję SnapFlingBehavior na stronie typu TargetedFlingBehavior, aby odblokować inne przypadki użycia i zapewnić większą elastyczność. (I762ea)
  • W ramach tej zmiany ustanawiamy stabilny interfejs Snapping API. Usuwamy też część kodu testowego i dodajemy więcej przykładów do Snapping. (Id8da9)
  • Przedstaw TargetedFlingBehavior, czyli obiekt FlingBehavior, który umożliwia propagację informacji o stanie trwającej animacji i docelowego przesunięcia 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)

Treści tłumaczone przez użytkowników zewnętrznych

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

Wersja 1.7.0-alpha01

24 stycznia 2024 r.

Usługa androidx.compose.foundation:foundation-*:1.7.0-alpha01 została zwolniona. 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ść to null, a podana wartość Indication to IndicationNodeFactory, Indication można utworzyć leniwie tylko wtedy, gdy jest to konieczne, co zwiększa 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 usługą BasicTextField2, aby akceptować multimedialne treści dostarczane przez klawiaturę programową lub wklejane ze schowka.
  • KeyboardOptions.shouldShowKeyboardOnFocus umożliwia wyłączenie domyślnego zachowania BasicTextField polegającego na wysyłaniu żądań klawiatury programowej w przypadku fokusu.
  • Funkcje TextInputServiceLocalTextInputService zostały wycofane. Zamiast tego użyj interfejsu PlatformTextInputModifierNode, aby zintegrować się bezpośrednio z interfejsami IME platformy. (aosp/2862698)
  • Usługa Indication#rememberUpdatedInstance została wycofana. 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 wychwytywać typowe błędy w kodzie, które prowadzą do nieodwracalnych wyjątków w późniejszym pomiarze lub pobieraniu kart. Jest większe prawdopodobieństwo, że deweloperzy zobaczą te błędy w trakcie tworzenia kodu, co pomoże uniknąć awarii w środowisku produkcyjnym. (I0fd42)
  • VisualTransformation nie zwróci kodu, 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 zatwierdzenia.

Wersja 1.6.7

1 maja 2024 r.

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

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 zatwierdzenia.

Wersja 1.6.2

21 lutego 2024 r.

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

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 elementó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 interfejsu API

  • Konstruktor rozszerzenia DragAndDropTarget() został usunięty. Utwórz nową instancję przy użyciu dodatku object: DragAndDropTarget {}. (I32318)

Wersja 1.6.0-beta03

13 grudnia 2023 r.

Usługa androidx.compose.foundation:foundation-*:1.6.0-beta03 została zwolniona. Wersja 1.6.0-beta03 zawiera te zatwierdzenia.

Poprawki błędów

  • Usunięto awarię, która wpływała na bardzo duży tekst mierzony z nieskończonymi ograniczeniami. (I1a7df, b/312294386)
  • PlatformImeOptions jest teraz konkretną klasą, a nie interfejsem. (If40a4)

Wersja 1.6.0-beta02

29 listopada 2023 r.

Usługa androidx.compose.foundation:foundation-*:1.6.0-beta02 została zwolniona. Wersja 1.6.0-beta02 zawiera te zatwierdzenia.

Poprawki błędów

  • Poprawiono błąd związany z brakiem aktualizacji elementu canScroll po przewijaniu w trybie przekazywania. (I60a86)
  • Naprawiono problemy z funkcjami Modifier.animateItemPlacement()LookaheadScope po niewielkim przewinięciu. (I3a2b7)

Wersja 1.6.0-beta01

15 listopada 2023 r.

Usługa androidx.compose.foundation:foundation-*:1.6.0-beta01 została zwolniona. 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, a drugi 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. Zastąpiły one inne parametry lambda do przetwarzania zdarzeń przeciągania.

    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 Fragment. (Ie6d13, b/285139987)

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

  • Usunięto DragAndDropInfo jako typ DragAndDropModifierNode.drag teraz zawiera parametry funkcji transferData, rozmiar dekoracji i przeciąganie elementów lambda DrawScope

    Funkcja DragAndDropTarget nie jest pojedynczą metodą abstrakcyjną, lecz udostępnia metody dotyczące konkretnych zdarzeń przeciągania i upuszczania.

    Nazwa onDragAndDropEvent w funkcji fabrycznej urządzenia DragAndDropModifierNode została zmieniona na onDragAndDropStart, aby lepiej poinformować, że podana wartość DragAndDropTarget jest ważna 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 elementu SubcomposeLayout (i układy takie jak LazyColumn), które są zachowywane do ponownego wykorzystania w przyszłości, są uznawane za wyłączone. Wprowadziliśmy nowy interfejs API testów assertIsDeactivated(), który umożliwia testowanie takich węzłów. Pozostałe interfejsy API domyślnie odfiltrowują wyłączone 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 kod równa się i kod skrótu dla funkcji PageSize.Fixed. (Ie3ede, b/300134276)
  • Naprawiono błąd, który powodował, że układ BasicText nie zmniejszał się po zmianie parametru minWidth i o minWidth poniżej wartości ograniczenia wskaźnika początkowego maxWidth (Idb19c)
  • Dodano obsługę mechanizmu renderowania dla gradientu automatycznego 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

Zmiany interfejsu 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 testowania pisania testów w niestandardowych edytorach tekstu. (Id159b)
  • Zmieniono nazwę z GraphicsSurface na AndroidExternalSurface (I11680)
  • Dodano tymczasową flagę DisableNonLinearFontScalingInCompose, aby wyłączyć nieliniowe skalowanie czcionek. Jeśli potrzebujesz czasu na uporządkowanie testów, ustaw w nich wartość DisableNonLinearFontScalingInCompose = true. Ta flaga zostanie usunięta z interfejsu Compose w wersjach 1.6.0-beta01. (IC9486)
  • Dodano kolekcje ColorList i ColorSet, które pozwalają uniknąć alokacji. (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. Wprowadź dopełnienia treści do metody pozycjonowania w SnapPositionInLayout. (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 parametru MagnifierStyle na rzecz parametrów wbudowanych w samym modyfikatorze. (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 interfejsu SnapLayoutInfoProvider mają już dostęp do gęstości. Zakres odbiorcy może zostać usunięty, co uprości implementację 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 ponownym używaniem 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)
  • Naprawiono błąd, który powodował, że pobieranie z wyprzedzeniem w pager nie było zgodne z działaniem w widokach. (I93352, b/289088847)
  • Modifier.consumeWindowInsets(PaddingValues) jest teraz stabilny.
    • Interfejs API Deprecated Modifier.consumedWindowInsets został usunięty. Zamiast tego użyj pola 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-alfa03 zawiera te zatwierdzenia.

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ę konfigurowania usługi 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 interfejsu 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 to teraz także prawidłowa wartość 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. Zaktualizowano: BringIntoViewCalculator do stanu: BringIntoViewScroller. (Idb741)
  • Dodaj typ ResourceResolutionException do opakowań zgłaszanych przy próbie wczytania zasobów mapy bitowej z opisem ścieżki zasobu, której nie udało się wczytać. (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

Usługa androidx.compose.foundation:foundation-*:1.5.3 została zwolniona. 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ł awarię, gdy semantyka była nieprawidłowa.

Wersja 1.5.1

6 września 2023 r.

Usługa androidx.compose.foundation:foundation-*:1.5.1 została zwolniona. Wersja 1.5.1 zawiera te zatwierdzenia.

Poprawki błędów

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

Wersja 1.5.0

9 sierpnia 2023 r.

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

Ważne zmiany wprowadzone 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 narzut związany z początkową kompozycją.
  • 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 zatwierdzenia.

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 linta to AutoboxingStateCreation. Wcześniej ta kontrola była domyślnie włączona we wszystkich projektach. Aby zobaczyć to ostrzeżenie w edytorze Androida Studio oraz w danych wyjściowych projektu lint, zmień jego wagę z informacyjnej na ostrzeżenie (lub większą), zadeklarując warning "AutoboxingStateCreation" w konfiguracji build.gradle lub build.gradle.kts modułu, jak pokazano na przykładzie (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 zatwierdzenia.

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 element 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. Użyj tego parametru, aby określić próg pozycji dla krótkiego przyciągania w Pager. (If8f7f)
  • Tekst SnapLayoutInfoProvider.calculateSnappingOffsetBounds został zamieniony na calculateSnappingOffset. W tej nowej metodzie po prostu żądamy następnego przesunięcia, do którego ma nastąpić przyciąganie. Obliczenie progów należy przeprowadzić na poziomie implementacji, ponieważ może się to różnić w zależności od tego, jak ma nastąpić przyciąganie. (I923a4)
  • LazyStaggeredGrid interfejs API został awansowany 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 go podać podczas tworzenia stanu. Zaktualizowano PagerState i rememberPagerState, by 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)
  • Naprawiono regresję polegającą na tym, że w polach tekstowych w oknach, które nie zostały utworzone przez funkcję kompozycyjną Dialog, nie wyświetlała się klawiatura. (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.

W tej wersji włącza się nowy stos renderowania tekstu w funkcji Compose. Nowy stos jest zoptymalizowany pod kątem wydajności, więc nie zaobserwujesz w nim żadnych widocznych 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 udostępnieniem wersji beta01 w wersji 1.5.(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-alfa02 zawiera te zatwierdzenia.

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 wymagać fokusu bezpośrednio, korzystając z działania semantycznego, zamiast klikać pole. (I6ed05)
  • Dodaje obsługę odstępów lub układu między osiami za pomocą funkcji verticalArrangement w FlowRow i horizontalArrangement w narzędziu 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 interfejsu 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)
  • Dodaję eksperymentalne onHover do aplikacji ClickableText (I6938f)
  • Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji runComposeUiTest i funkcji create*ComposeRule, które przyjmują parametry CoroutineContext. Kontekst zostanie użyty w kompozycji testowej i wszelkich wywołaniach LaunchedEffect i rememberCoroutineScope() w kompozycji. (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 niskopoziomowy interfejs API PlatformTextInputAdapter do tworzenia niestandardowych implementacji wprowadzania tekstu, które komunikują się bezpośrednio z interfejsami API platformy. (I58df4)
  • Dodano obsługę odwróconego układu w LazyStaggeredGrid. (I3ef4a)

Poprawki błędów

  • Działanie semantyczne typu SetText w narzędziu BasicTextField spowoduje teraz zaktualizowanie bufora tekstu przy użyciu tej samej ścieżki kodu co aktualizacje IME i funkcje testowania (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-beta02 i androidx.compose.foundation:foundation-layout:1.4.0-beta02 zostały udostępnione. 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)
  • Dodaliśmy parametr BlendMode do metod DrawScope.drawText, Paragraph.paint i MultiParagraph.paint, aby umożliwić obsługę różnych algorytmów mieszania podczas rysowania tekstu w Canvas. (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

  • Dodano właściwość mainAxisItemSpacing do tagów LazyListLayoutInfo, LazyGridLayoutInfo i LazyStaggeredGridItemInfo (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 wartości null funkcji wbudowanych/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 wyświetla teraz animację nawet wtedy, gdy animacje są wyłączone w ustawieniach systemu. (I23389, b/262298306, b/265177763)

Treści tłumaczone przez użytkowników zewnętrznych

  • 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

  • FocusRequesterModifierFocusRequesterNode
  • 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 wartości TextMotion.Animated, jeśli tekst ma być skalowany, tłumaczony lub obrócony za pomocą animacji. (I24dd7)
  • Dodanie TextFieldFocusModifier w celu naprawienia zachowania nawigacji fokusa na platformie Android (I00303)
  • Zastąpiono argument maxSize: IntSize w funkcji drawText elementem size: Size, który będzie wbudowany 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 aktualizowania z androidx.compose.foundation:1.4.0-alpha03 do androidx.compose.foundation:1.4.0-alpha04 może wystąpić błąd java.lang.NoSuchFieldError. Tutaj został 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 interfejsu użytkownika z użyciem reguły tworzenia kontynuacje wznawiane w trakcie wywołań zwrotnych withFrameNanos będą wysyłane dopiero po zakończeniu wykonywania wszystkich wywołań zwrotnych klatek. 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.
  • Dodano opcjonalny parametr onPerformTraversals: (Long) -> Unit do konstruktora i funkcji fabrycznej TestMonotonicFrameClock w celu uruchamiania kodu po wywołaniach zwrotnych withFrameNanos, ale przed wznowieniem współrzędnych elementów wywołujących. (Idb413, b/254115946, b/222093277, b/255802670)
  • Przedstaw działania 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 funkcję PagerState do kontrolowania pagerów oraz zapytań dotyczących ich bieżącego stanu. 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 zapamiętywać i ustawiać tę flagę, po prostu nie wysyłaj zdarzeń do efektu nadmiernie przewijania w przypadkach, gdy nie chcesz wyświetlać nadmiernych przewijania (np. gdy oba parametry ScrollableState#canScrollForward/backward zwracają 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). Ta wartość domyślna zapewnia zgodność wsteczną 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).
  • Używany w Clickable do prawidłowego opóźnienia interakcji polegającej na naciśnięciu, gdy gesty mogą stać się zdarzeniami przewijania.
  • Naprawiono błąd Clickables w zakresie nieprawidłowego opóźniania echa w przypadku użycia wewnątrz elementu Scrollable ViewGroup.
  • Zaktualizowaliśmy panele i panele, tak aby prawidłowo opóźniały naciśnięcia, 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

  • Usunięto awarię z siatkami typu Modifier.animateItemPlacement() i Leniwe. Zdarzało się to w pewnych sytuacjach, gdy liczba nowych elementów była mniejsza od poprzedniego. (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).
  • Do komponentów BasicText i BasicTextField dodaliśmy parametr minLines. Umożliwia ustawienie minimalnej wysokości tych komponentów pod względem liczby wierszy (I24294, b/122476634)

Wersja 1.4.0-alpha01

24 października 2022 r.

androidx.compose.foundation:foundation:1.4.0-alpha01 i androidx.compose.foundation:foundation-layout:1.4.0-alpha01 zostały udostępnione. Wersja 1.4.0-alpha01 zawiera te commity.

Zmiany interfejsu 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.0 i androidx.compose.foundation:foundation-layout:1.3.0 zostały udostępnione. Wersja 1.3.0 zawiera te commity.

Ważne zmiany od wersji 1.2.0

  • Wprowadziliśmy 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)
  • Dodaliśmy nowe eksperymentalne łączniki w interfejsie API do obsługi automatycznego łącznika 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 może teraz sprawdzać najbardziej aktualne granice żądania podczas jego 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)
  • Nazwa FocusDirection.In i FocusDirection.Out została zmieniona na FocusDirection.Enter i FocusDirection.Exit (Ia4262, b/183746982)
  • Wprowadziliśmy przeciążenie rememberSnapFlingBehavior, które umożliwia szybkie włączanie blokowania w LazyLists. (Ifb48a)
  • Zastąpiliśmy fabrykę urządzenia snapFlingBehavior betonową 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)
  • Przedstawiono AwaitPointerEventScope#awaitLongPressOrCancellation jako dodatkowy element składowy umożliwiający bardziej złożone wykrywanie 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 układzie przyciągania. (Ie754c)

Wersja 1.3.0-alpha03

10 sierpnia 2022 r.

androidx.compose.foundation:foundation:1.3.0-alpha03 i androidx.compose.foundation:foundation-layout:1.3.0-alpha03 zostały udostępnione. Wersja 1.3.0-alpha03 zawiera te commity.

Zmiany w interfejsie API

  • Czcionki zasobów obsługują teraz ustawianie ustawień wariantów czcionek (API w wersji 26 lub nowszej). (I900dd, b/143703328)
  • Obsługa czcionek zmiennych w DeviceFontFamilyNameFont (Ic1279, b/143703328)
  • Usunięto eksperymentalną adnotację z funkcji PlatformTextStyleLineHeightStyle. (I64bef)
  • Pola tekstowe będą teraz wyrzucać bardziej szczegółowe wyjątki, gdy OffsetMapping zwraca nieprawidłowe indeksy.VisualTransformation (Ie73f9, b/229378536)
  • Wprowadź eksperymentalne interfejsy API, aby współdzielić logikę dostawcy elementu między układami Lazy. (Ic891c)
  • ScrollableDefaults.reverseDirection() nie jest już eksperymentalną funkcją. (Iba646)
  • Wycofaliśmy zasadę SemanticsModifier.id i przenieśliśmy identyfikator semantyczny do LayoutInfo.semanticsId. (Iac808, b/203559524)
  • Funkcja checkScrollableContainerConstraints() nie jest już eksperymentalna. (I2c290)
  • Modifier.clipScrollableContainer() nie jest już eksperymentalną funkcją. (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

  • W DrawScope dodaliśmy funkcję rozszerzenia drawText, która umożliwia rysowanie tekstu o różnych stylach w elementach kompozycyjnych i modyfikatorach działających w elemencie DrawScope, takim jak Canvas i drawBehind. (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 przewijany ma zaznaczony element podrzędny, będzie on prawidłowo przewijać tak, aby nadal był widoczny, gdy jego rozmiar jest zmniejszony, nawet gdy 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-alfa01 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Wprowadziliśmy typ adnotacji UrlAnnotation i powiązane z nim metody, które umożliwiają obsługę linków TalkBack w 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.1 i androidx.compose.foundation:foundation-layout:1.2.1 zostały udostępnione. 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. Dzięki temu komponenty będą mogły efektywniej ponownie wykorzystywać elementy.
  • 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-rc03 i androidx.compose.foundation:foundation-layout:1.2.0-rc03 zostały udostępnione. 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-rc01 i androidx.compose.foundation:foundation-layout:1.2.0-rc01 zostały udostępnione. 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 jej używać podczas tworzenia własnych przewijanych układów z możliwością przewijania w narzędziu LazyLayout. (Id6fab, b/233352497)
  • Usunięto wycofany atrybut LazyVerticalGrid z pakietu androidx.compose.foundation.lazy. 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 IntervalList i MutableIntervalList. Umożliwia on zapisanie pewnej listy wartości w kilku przedziałach. 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

  • Doprecyzowaliśmy dokumentację dotyczącą WindowInsets.ime, informując o tym, że wstawienia ime są zgłaszane już od wersji 23, ale tylko animowane w przypadku użytkowników, którzy ukończyli 30 lat (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-beta01 i androidx.compose.foundation:foundation-layout:1.2.0-beta01 zostały udostępnione. Wersja 1.2.0-beta01 zawiera te commity.

Nowe funkcje

  • 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)
  • trimFirstLineTop, trimLastLineBottom atrybutu LineHeightBehavior zostało zmienione w jedną wyliczenie: LineHeightTrim. LineHeightTrim mają 4 stany zdefiniowane przez 2 wartości logiczne: FirstLineTop, LastLineBottom, Both i None (Ifc6a5, b/181155707)
  • Dodanie atrybutu LineHeightBehavior do elementów TextStyle i ParagraphStyle. LineHeightBehavior określa, czy wysokość wiersza jest stosowana na górze pierwszego i na końcu ostatniego wiersza. Określa też wyrównanie wiersza w przestrzeni udostępnionej przez funkcję TextStyle(lineHeight).

    Za pomocą LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false) można na przykład uzyskać działanie podobne do tego, co definiuje CSS.

  • 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

  • Naprawiono regresję, w której pola tekstowe nie ukrywały klawiatury po usunięciu jej z kompozycji, gdy było zaznaczone. (I7a410, b/230536793, b/225541817)
  • Obsługa wielokropka, gdy wysokość jest ograniczona i nie mieści wszystkich wierszy tekstu (Ie528c, b/168720622)
  • BringIntoViewRequester.bringIntoView będzie teraz zawieszać działanie usługi do momentu zrealizowania żądania lub przerwania go przez nowsze, które nie nakłada się na siebie. Pokrywające się żądania trafią do kolejki. (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)

Treści tłumaczone przez użytkowników zewnętrznych

  • 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 wykorzystanie (pozycja w dół LUB w pozycji) zostało wycofane w funkcji 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 wstępnej i może zostać zmieniony w kolejnych wersjach. (Iba2bc, b/166591700)
  • Funkcja AndroidFont przyjmuje teraz typefaceLoader jako parametr konstruktora. (I2c971)
  • WindowInsets Usługa towarzysząca wyświetla teraz informacje o widoczności (czy są widoczne na ekranie, niezależnie od tego, czy nakładają się na okno) oraz rozmiar, jaki mogłyby mieć, gdyby były dostępne na urządzeniu, ale nie byłyby aktywne. (I65182, b/217770337)

Wersja 1.2.0-alpha07

6 kwietnia 2022 roku

androidx.compose.foundation:foundation:1.2.0-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 separator dziesiętny w edytorze IME jako alternatywę dla Keyboard.Number (KeyboardType.Decimal). (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. Umożliwia to osobne ComposeViews w hierarchii do każdego zastosowania WindowInsets bez zakłócania siebie nawzajem. (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 interfejsu 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 znajdować się nad klawiaturą, gdy są zaznaczone, a klawiatura jest widoczna, gdy użytkownik znajduje się w obszarze nieleniwym przewijaniem i w trybie programowego wprowadzania tekstu to ADJUST_RESIZE. (I4a485, b/190539358, b/192043120, b/216842427)

Wersja 1.2.0-alpha05

9 marca 2022 r.

androidx.compose.foundation:foundation:1.2.0-alpha05 i androidx.compose.foundation:foundation-layout:1.2.0-alpha05 zostały udostępnione. 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 opcję LazyLevelGrid. (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)

Treści tłumaczone przez użytkowników zewnętrznych

  • 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ć próśb do użytkowników nadrzędnych. Zamiast tego muszą natychmiast zwrócić prostokąt, który rodzic powinien pokazać rodzicom. (I8e66a)
  • Obsługa asynchronicznego wczytywania czcionek w Tekście (I77057, b/214587005)
  • LazyVerticalGrid obsługuje teraz wartość line breaking przed elementami, których rozpiętość nie mieści się w bieżącym wierszu. (I05c40, b/207462103)
  • Zmieniono nazwę z excludeFromSystemGestures 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 ComposableTargetMarker znajdziesz tutaj: 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-alfa03

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 niego użyj właściwości 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.
    • Dodano createFontFamilyResolver(context) i createFontFamilyResolver(context, coroutineScope), aby tworzyć nowe resolvery FontFamily poza funkcją tworzenia.
    • Akapit i MultiParagraph przyjmują teraz wartość FontFamily.Resolver
    • TextLayoutResult.layoutInput.fontFamilyResolver zawiera teraz resolver używany w tym układzie. Wycofano go TextLayoutResult.layoutInput.resourceLoader, ponieważ nie jest już używany. (Id5a45, b/174162090)
  • Dodaliśmy AndroidFont, nowy niskopoziomowy interfejs API do udostępniania nowych typów deskryptorów zasobów czcionek na Androida. 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 bezpośredniego korzystania z tego interfejsu API przez deweloperów aplikacji. Aby dodać nowe typy czcionek, zapoznaj się z artykułem AndroidFont.
    • Funkcja rozszerzenia Font.AndroidResourceLoader umożliwia tworzenie Font.ResourceLoader poza kompozycją.
    • Dodaliśmy parametr loadingStrategy do czcionek opartych na zasobach, aby umożliwić ładowanie asynchroniczne, gdy czcionka zasobów odwołuje się do plików XML dostępnych do pobrania. (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)
  • LazyListLayoutInfo i LazyGridLayoutInfo mają teraz nowe właściwości: viewportSize, orientation, reverseLayout (Ifc8ed, b/200920410)
  • Możesz teraz określić typ treści elementów w LazyColumn/LazyRow – funkcje item/items w LazyListScope przyjmują teraz taki parametr. Podanie tych informacji pomaga w skuteczniejszym wykorzystywaniu logiki do ponownego używania elementów i powtórnego używania treści tylko w przypadku elementów o podobnym typie. (I26506)
  • Konstruktor SubcomposeLayoutState akceptujący obiekt maxSlotsToRetainForReuse został wycofany. Zamiast tego wprowadziliśmy nowy konstruktor akceptujący SubcomposeSlotReusePolicy – nowy interfejs dający bardziej szczegółową kontrolę nad tym, które przedziały powinny być zachowywane do wykorzystania w przyszłości. (I52c4d)
  • Dodaje modyfikatory elementów WindowInsets, zarówno do dopełnienia, jak i określania 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, gdy wyświetla się uchwyt kursora. (Ideb4b, b/205726883)
  • Działanie lupy do zaznaczania tekstu zostało dopracowane tak, aby pasowało 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 interfejsu API

  • Dodaliśmy NonRestartableComposable do metod, które są przeciążeniem istniejących metod bez złożonej logiki. Zmniejsza to liczbę sprawdzania zapamiętanych przez kompilatora (równa się) wszystkich parametrów, które są powtarzane w wywoływanej funkcji wewnętrznej. (I90490)
  • Dodaliśmy modyfikatory excludeFromSystemGesture, które ułatwiają dostęp do aplikacji setSystemGestureExclusionRects Androida (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, które używają Modifier.scrollable, obsługują teraz przewijanie kółkiem 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-alfa01 zawiera te zatwierdzenia.

Zmiany interfejsu 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,
  • Ulepszenia rozmiaru docelowego elementu dotykowego
  • 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 zagwarantuje też, że w przypadku tworzenia UI z użyciem komponentów Compose Material, minimalne wymagania dotyczące ułatwień dostępu docelowych elementów dotykowych będą spełnione.
  • 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 była zgodna z platformą 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 zatwierdzenia.

Zmiany w interfejsie API

  • Do LazyVerticalGrid dodano obsługę poziomych zakresów. (I7e2fa, b/176758183)
  • Dodaliśmy eksperymentalną możliwość animowania pozycji elementów listy Lazy. W 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 zatwierdzenia.

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 zatwierdzenia.

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-alfa03

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 funkcję Utwórz 1.1.0-alpha03, aby bazowała na Kotlinie 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 interfejsu ViewConfiguration na potrzeby semantyki i wprowadzania wskaźnika do celu w celu zapewnienia ułatwień dostępu. (IE861C)

Wersja 1.1.0-alfa02

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-alfa01 zawiera te zatwierdzenia.

Zmiany interfejsu 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 akceptuje teraz parametry rozmieszczenia zarówno w poziomie, jak i w pionie. (If9c92)

Wersja 1.0

Wersja 1.0.5

3 listopada 2021 r.

androidx.compose.foundation:foundation:1.0.5 i androidx.compose.foundation:foundation-layout:1.0.5 zostały udostępnione. 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.3 i androidx.compose.foundation:foundation-layout:1.0.3 zostały udostępnione. 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ła wersję 1.0.2 Utwórz. Funkcja Compose 1.0.2 jest nadal zgodna z Kotlin 1.5.21.

Wersja 1.0.1

4 sierpnia 2021 r.

androidx.compose.foundation:foundation:1.0.1 i androidx.compose.foundation:foundation-layout:1.0.1 zostały udostępnione. Wersja 1.0.1 zawiera te zatwierdzenia.

Aktualizacje zależności

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

Wersja 1.0.0

28 lipca 2021 roku

androidx.compose.foundation:foundation:1.0.0 i androidx.compose.foundation:foundation-layout:1.0.0 zostały udostępnione. 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-rc02 i androidx.compose.foundation:foundation-layout:1.0.0-rc02 zostały udostępnione. 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 interfejsu API

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

Poprawki błędów

  • Wyłączone przycisk, karta, pola wyboru i ogólny element Modifier.clickable(enabled=false) będą blokować kliknięcia prowadzące do elementu nadrzędnego. (Ic2c3b, b/183908811)

Wersja 1.0.0-beta09

16 czerwca 2021 r.

androidx.compose.foundation:foundation:1.0.0-beta09 i androidx.compose.foundation:foundation-layout:1.0.0-beta09 zostały udostępnione. Wersja 1.0.0-beta09 zawiera te commity.

Zmiany interfejsu 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);
  • Parametr keyCapitalization jest konwertowany na klasę wbudowaną. (Id5a1c)
  • Element 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. Podczas przetwarzania kodu można deklarować stałe prywatne przed stabilizacją. (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.tekst
  • androidx.compose.ui.text
  • androidx.compose.ui.unit
  • androidx.compose.ui.util

Co to są reguły profilu?

  • Reguły profilu dla biblioteki określa się w pliku tekstowym baseline-prof.txt znajdującym się w katalogu src/main lub podobnym. 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>
    
  • <FLAGS> to co najmniej jeden ze znaków H, S i P wskazujących, czy ta metoda ma być oznaczona jako „Przebojowa”, „Uruchomienie” 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 przy uruchamianiu i należy ją skompilować z wyprzedzeniem, by uniknąć kosztów kompilacji i interpretacji podczas uruchamiania.

  • Metoda z flagą P wskazuje, że jest to metoda, która 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ć reguły, które będą spakowane w artefaktach AAR. Gdy skompilowana aplikacja zawiera te elementy, reguły są scalane, a scalane reguły są używane do tworzenia kompaktowego binarnego profilu ART, który jest specyficzny dla aplikacji. ART może następnie wykorzystać ten profil, gdy aplikacja zostanie zainstalowana na urządzeniach, aby z wyprzedzeniem skompilować określony podzbiór aplikacji w celu poprawy jej wydajności, zwłaszcza podczas pierwszego uruchomienia. Pamiętaj, że nie będzie to miało wpływu na aplikacje z możliwością debugowania.

Wersja 1.0.0-beta08

2 czerwca 2021 r.

androidx.compose.foundation:foundation:1.0.0-beta08 i androidx.compose.foundation:foundation-layout:1.0.0-beta08 zostały udostępnione. Wersja 1.0.0-beta08 zawiera te commity.

Zmiany interfejsu API

  • Typ NestedScrollSource został zastąpiony przez klasę wbudowaną. (IE321b, b/187055290)
  • Zrefaktoryzowano użycia enum do klas wbudowanych, aby uniknąć problemów z pełnymi instrukcjami związanymi z dodawaniem nowych wartości wyliczeniowych. (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).
  • Metoda Modifier.focusModifier() została wycofana i zastąpiona przez Modifier.focusTarget() (I6c860)
  • Enum typów Klawiatura została zastąpiona klasą wbudowaną. (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 zamiast 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

  • Naprawa błędów związanych z przytrzymaniem pustego obszaru w przypadku tekstu, który nie jest pusty. (I33ab5, b/187437299)
  • Pokaż pasek narzędzi po elemencie SelectAll (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 teraz kolejność modyfikatorów wpływa na to, jakie współrzędne będą podawane w raportach. (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 przechowywać do 2 wcześniej widocznych elementów aktywnych (nieusuniętych), nawet jeśli zostały już przewinięte. Dzięki temu komponent będzie mógł ponownie wykorzystać aktywne subkompozycje, gdy trzeba będzie utworzyć nowy element, który przyspieszy przewijanie. (Ie5555)
  • Usunięto pole paintBackground. (I38660)
  • Narysuj tło zaznaczenia za pomocą aplikacji 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)
  • Obsługa zapisu w polu AnnotatedString w polu 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 interfejsu API

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

Poprawki błędów

  • Naprawiono czynności związane z przewijaniem ułatwień dostępu ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRight i accessibilityActionScrollDown. 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 zatwierdzenia.

Zmiany w interfejsie API

  • Zmiana nazw hideOprogramowanieKlawiatura i show otrzymywaćna klawiatura na kontrolerze SoftwarekeyController odpowiednio na hide() i 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)
  • Instancje publiczne RowScope, ColumnScope, BoxScope, BoxWithConstraintsScope zostały usunięte. (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 zatwierdzenia.

Zmiany w interfejsie API

  • Środowisko wykonawcze DefaultMonotonicFrameClock zostało wycofane. Wywołanie withFrameNanos lub Recomposer.runRecomposeAndApplyChanges bez numeru MonotonicFrameClock spowoduje zgłoszenie 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 interfejsu 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 jest pierwsza wersja beta Compose 1.0.0.

Zmiany interfejsu API

  • Dodano wywołanie zwrotne onStart do: detectDragGestures (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 wysyłanie / 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 rozszerzeń w InteractionSource, takich jak 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 InteractionSource.
    • (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 powoduje płynne przewijanie do określonego 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. Zmieniono nazwę modyfikatora.width/height/size na requiredWidth/requiredHeight/requiredSize. Zmieniono nazwę metody Modifier.preferredWidth/preferredHeight/preferredSize na szerokość/wysokość/rozmiar. (I5b414)

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

  • Usunięto modyfikator.tapStepFilter. Użyj w zamian zasady Modifier.pointerInput { detectTapGestures(...) }. (I266ed, b/175294473)

  • częściowe wykorzystanie zostało usunięte z systemu wprowadzania wskaźnika. Zalecanym sposobem koordynowania częściowego konsumpcji jest Modifier.nested Scroll. (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. Użyj funkcji PamiętajCoroutineScope(), aby uzyskać zakres kompozycji i je wywołać (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 clearRoots najwyższego poziomu @TestOnly została usunięta. Nie jest już potrzebne.
    • Funkcje keySourceInfoOf i resetSourceInfo zostały usunięte. Nie są już potrzebne.
    • Element Composer.collectKeySourceInformation został usunięty. 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 porządkowane 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)

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

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

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

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

Poprawki błędów

  • Dodano nowy lokalny interfejs API do kompozycji Local SoftwareKlawiaturaController, aby zastąpić poprzedni interfejs SoftwareKlawiaturaController w polu TextField. (I658b6, b/168778053)

Wersja 1.0.0-alpha12

10 lutego 2021 r.

androidx.compose.foundation:foundation:1.0.0-alpha12 i androidx.compose.foundation:foundation-layout:1.0.0-alpha12 zostały udostępnione. Wersja 1.0.0-alpha12 zawiera te commity.

Zmiany w interfejsie API

  • Modifier.pointerInput wymaga teraz zapamiętywania klawiszy, aby wskazywać, kiedy współprogram wykrywania danych wejściowych wskaźnika ma zostać uruchomiony ponownie w przypadku nowych zależności. (I849cd)
  • Testowanie aktualizacji: funkcja hasText() sprawdza w polu tekstowym zarówno dane wejściowe, jak i teksty etykiet, wskazówek i zastępczych (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, a LocalIndication tak, by zawierał 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 semantykę EditableText do oznaczania możliwego do edytowania tekstu wejściowego pola tekstowego na potrzeby ułatwień dostępu oraz odpowiadające jej metody testowe w celu sprawdzania semantyki (I8e07a).

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

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

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

  • Metoda Modifier.dragGestureFilter została wycofana. Zamiast tego użyj pola Modifier.pointerInput { detectDragGestures (...)}. Możesz też użyć metody Modifier.draggable, aby przeciągać jedną oś (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. Nazwa polecenia Recomposer.shutDown została zmieniona na anulowanie, aby kontrastować z zamknięciem. (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)

  • Nazwa RestorableStateHolder została zmieniona na SaveableStateHolder i została 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 starych, wycofanych interfejsów API z pakietu 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)

  • Usunięto modyfikator.scaleStepFilter. Zamiast tego użyj Modifier.zoomable. Możesz też użyć polecenia 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).
  • Usuń wycofane funkcje przewijania, które nie są zawieszane. Zgodnie ze zmianami w poprzedniej wersji funkcje przewijania bez zawieszania zostały całkowicie usunięte. Przejdź na funkcje zawieszania o tych samych nazwach. Zakres współprogramu można uzyskać za pomocą funkcji rememberCoroutineScope(). (I3d39c, b/178169563)

  • Metoda androidx.compose.foundation.layout.ConstraintLayout została wycofana i zastąpiona 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. Znaczniki animacji oparte na ramce rekompozycja i withFrameNanos są wstrzymywane na czas zatrzymania cyklu życia hosta. (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. Preferuj ten interfejs API przy użyciu interfejsu Recomposer.current(), który jest teraz 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 obrazów i ikon został dodany parametr Opis 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 zawieszenia Animatable.animateDecay. (I4659b, b/177457083)

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

    • Treść wbudowanego tekstu
    • 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 uchronić użytkowników przed niewydajnym działaniem, zdecydowaliśmy się wycofać elementy ScrollableColumn i ScrollableRow i promować wykorzystanie metod LazyColumn i LazyRow. Użytkownicy mogą zdecydować, że nie wymagają leniwego działania, i użyją modyfikatorów bezpośrednio w ten sposób: Column(Modifier.vertical Scroll(remember ScrollState())) (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 elementu Box dodano parametr proMinConstraints, który określa, czy przychodzące ograniczenia minimalne powinny być przekazywane do zawartości Box. Wartość domyślna to fałsz. (I0125b, b/152613457)

Poprawki błędów

  • Interfejsy onCommit, onDispose i onActive zostały wycofane i zastąpione interfejsami SideEffect i DiposableEffect (If760e).
  • Element WithConstraints został przerobiony na BoxWithConstraints i przeniesiony do pakietu foundation.layout. (I9420b, b/173387208)
  • Zmiany w funkcjach fabrycznych dla czcionki, rodziny czcionek i kroju czcionki

    • 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)
  • Dodano ComposeContentTestRule, który rozszerza zakres ComposeTestRule i definiuje zasadę setContent, która została usunięta z ComposeTestRule. Dodano metodę fabryczną createEmptyComposeRule(), która zwraca ComposeTestRule i nie uruchamia Activity. Użyj tej opcji, jeśli chcesz uruchomić aktywność podczas testu, np. za pomocą narzędzia ActivityScenario.launch (I9d782, b/174472899)

  • animateAsState to teraz animateFooAsState, gdzie Foo to typ animowanej zmiennej, 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)

  • Ciąg AnnotatedString został zmieniony tak, aby był dłuższy niż 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 długimi milisekundami, a ten krok eliminuje zależność danych wejściowych wskaźnika do tych klas. (Ia33b2, b/175142755, b/177420019)

  • PamiętajObserver, która zastąpiła funkcję CompositionLifecycleObserver, a zasada CompositionLifecycleObserver została wycofana.

    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 odniesienie w kompozycji zostało zapamiętane więcej niż raz, funkcja onRemembered jest wywoływana dla każdego odwołania, w którym element onEnter jest wywoływany tylko raz. Funkcja onEnter była wywoływana wiele razy, jeśli obiekt był używany w podkompozycjach, np. WithConstraints i Scaffold sprawiły, że gwarancja pojedynczego wywołania onEnter była zawodna i została usunięta dla 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
    • Waga czcionki
    • Ozdobniki tekstu
    • 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)

  • Zmieniliśmy VisualTransformation, by stała się praktycznym interfejsem (I3bba4)

  • Korzystanie z TestCoroutineDispatcher w testach (I532b6)

  • Usunięto wartość PointerInputData i zmodyfikowaliśmy ją, aby dodać do niej wszystkie pola 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ć funkcji onRoot() lub rozmiaru co najmniej 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-alfa10 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.
    • Transformacja hasła nie jest już klasą 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
    • Pole EditCommand nie jest już klasami danych.
    • Funkcja EditOperation.process została przemianowana na applyTo.
    • Zmieniono nazwę interfejsu InputEventListener na InputEventCallback.
    • (I0a366)
  • Zmodyfikowano funkcję Velocity, aby zawierała elementy składowe i operacje matematyczne. (Ib0447)
  • Zmieniliśmy nazwę @ExperimentalTesting na @ExperimentalTestApi, aby zachować spójność z podobnymi adnotacjami interfejsów API (Ia4502, b/171464963).
  • Dodano eksperymentalną metodę stickyHeader dla LazyColumn/LazyRow (I0a81d).
  • Zmieniono nazwę metody Color.useOrElse() na Color.takeOrElse() (Ifdcf5).
  • Wycofano TestUiDispatcher. Użyj Dispatchers.Main (Ic171f, b/175385255)
  • Dodaj przełącznik do podstawowego pliku Strings.kt (I4a5b7, b/172366489)
  • Przeniesiono klasę nativeClass do modułu ui i uczyniono ją wewnętrzną. Zaktualizowane użycie natywnego użycia klasy natywnej oznacza, że w implementacjach używana jest metoda „to 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)
  • W przypadku klas wbudowanych ze stałą nieokreśloną dodawane są wartości atrybutów isSpecified, isUnspecified i useOrElse. (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).
  • Metoda animate() została zastąpiona przez animateAsState(), która zwraca State<T> zamiast T. Zwiększa to wydajność, ponieważ zakres unieważniania można zawęzić do miejsca, w którym odczytywana jest wartość stanu. (Ib179e)
  • Dodaj interfejs API roli Semantics i rolę jako parametr do klikalnego, możliwego do wyboru i przełączenia interfejsu 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)

  • Wycofano parametry 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 rozmieszczenia pionowego do 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)

  • wykrywaj gesty dotykowe, teraz używa jednego wywołania zwrotnego z połączonymi parametrami centroid, przesuwania, powiększania i obracania. (Ie6e1c)

  • Przeniesiono ContentDrawScope do modułu interfejsu ui-graphics, aby korzystać z modułu 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. Przydaje się to przy definiowaniu gradientów, które w momencie tworzenia kompozycji zajmują pełne granice rysowania funkcji kompozycyjnej, bez konieczności wdrażania niestandardowych implementacji DrawModifier.

    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 została zmieniona na contentDescription. Wartość ułatwień dostępu została zmieniona na stateDescription. (I250f2)

  • Wprowadziliśmy kilka nowych funkcji w Rejestrze wyboru i przemianowaliśmy parametr onPositionChange na nazwę notificationPositionChange. (Ifbaf7).

  • AndroidOwner made internal (Ibcad0, b/170296980)

  • Nowa funkcja nieskończoności powtarzania do tworzenia specyfikacji InfiniteRepeatableSpec (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().

    Stosuje on węzły do edytowanego drzewa przy użyciu funkcji insertTopDown() lub insertBottomUp(), w zależności od tego, co sprawdza się lepiej.

    Niektóre drzewa, np. LayoutNodeView, są znacznie wydajniejsze w budowaniu od dołu do góry niż odwrotnie. Przed tą zmianą trzeba było wdrożyć od dołu stos wkładek, który trzeba było kopiować do każdego narzędzia, które wymagało oddolnej struktury w celu zwiększenia skuteczności. 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)

  • Dodaliśmy funkcję fabryczną buildAnnotatedString, która pozwala utworzyć obiekt AnnotatedString. Wycofano funkcję konstruktora adnotatedString. (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

  • Z parametru CoreTextField usunięto parametr maxLines. 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 ze sprawdzaniem lintowania i wskazówkami przenieśliśmy też niektóre interfejsy API, używając nazwy children jako nazwy końcowej lambdy do content. (Iec48e)
  • foundation:foundation-text interfejsów API zostało przeniesionych do usługi 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)
  • Przeniesiono właściwości semantyki podstawowej do 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)

  • Do pól BasicTextField, TextField i OutlinedTextField dodaliśmy parametr singeLine. 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. Usunięto modyfikator.grawitacji. Zamiast niego użyj Modifier.align. Stos został usunięty. Zamiast niego użyj Box (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)
  • Zgodnie z opiniami Rady ds. API zmodyfikowaliśmy też nazwę Modifier.drawLayer na Modifier.graphicsLayer. Wraz z opiniami rady ds. API zaktualizowaliśmy też powiązane klasy na GraphicsLayer. (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).
  • MaterialTheme ustawia teraz prawidłowe kolory uchwytów wyboru 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. Wykorzystują teraz parametry lambda zamiast stanu State. (Ic3021, b/173594846)
  • Dodano obiekt WindowManager.isWindowFocused, aby sprawdzić, czy okno hosta jest aktywny, oraz obiekt WindowFocusObserver, który udostępnia wywołanie zwrotne onWindowFocusChanged. (I53b2a, b/170932874)
  • Dodano parametr resetInput do usługi 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 interfejsu API

  • Podobnie jak Modifier.fillMaxSize[Width|Height], obsługujemy teraz ułamki w zakresie Modifier.fillParentMaxSize[Width|Height] w zakresie LazyColumn/Row (I797e2, b/166586426).
  • Usunięto reakcję KeyboardOptions.toImeOptions na publiczny interfejs 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 niematerialnych należy zamiast tego utworzyć własny system projektowania specyficznych dla nich motywów graficznych, z którego można korzystać w własnych 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. Użyj w zamian pola BasicTextField. (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. Dodaliśmy modyfikator paddingFromBaseline, aby ułatwić określenie 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)
  • Pole CoreTextField zostało oznaczone 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)
  • Przedstawienie 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)
  • Plik androidx.ui.test został przeniesiony do androidx.compose.ui.test (I9ffdb)
  • FirstBaseline i LastBaseline zostały przeniesione do pakietu androidx.compose.ui.layout (Ied2e7).
  • Dodano SelectionContainer bez wywołania zwrotnego (Ibfadb)
  • Dodaj testy pozycji elementów SelectionHandles w elementach SelectionContainer. (Ie93db)
  • Dodano opcję autokorekty IME w klawiaturze (I57b8d)

Wersja 1.0.0-alpha06

28 października 2020 r.

androidx.compose.foundation:foundation:1.0.0-alpha06, androidx.compose.foundation:foundation-layout:1.0.0-alpha06 i androidx.compose.foundation:foundation-text:1.0.0-alpha06 zostały udostępnione. 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 elementInteractState do obiektów Modifier.scrollable, ScrollableColumn i LazyColumnFor (I81566, b/169509805)
  • Do elementu RowScope dodano element AdjustByBaseline, a jego nazwa została zmieniona na „shiftBy” (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)
  • Do CoreTextField (I72e6d) dodano opcję klawiatury jednowierszowej.
  • Zmieniliśmy nazwę interfejsu Radius API na CornerRadius, aby lepiej odzwierciedlić sposób jego używania w usłudze Compose. 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-alfa05 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • CoreTextField obsługuje teraz funkcje 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 elementów otoczenia, by lepiej opisać ich przeznaczenie:

    • 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ł strony docelowej i integrację stronicowania (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. W ich miejscu powinna być używana wartość 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 dodać do pola dekoracje lub dopełnienie, użyj modyfikatorów (Modifier.background, Modifier.border, Modifier.splash) (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 w czasie pojedynczego mutatora współdzielonego stanu i anulowania kolidujących mutatoró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 tekstu zawierającego ciąg znaków. Nie będzie on używany, ponieważ inlineContent musi współpracować z AnnotatedString. (Ief403).
  • Wycofane niestandardowe interfejsy aranżacji interfejsów API zostały usunięte. (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.
    • Usunęliśmy metody RoundRect.middleRect/tallMiddleRect/wideMiddleRect i Rect.isStadium
    • Zmieniono nazwę RoundRect.longestSide na RoundRect.maxDimension.
    • Zmieniono nazwę RoundRect.shortestSide na RoundRect.minDimension.
    • Zmieniono RoundRect.center na właściwość, a nie funkcję
    • 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.
    • Do aplikacji Radius dodano interfejs API destrukcyjny
    • Przenieśliśmy różne funkcje rozszerzenia RoundRect na właściwości
    • (I8f5c7, b/168762961)
  • Optymalizacje wydajności funkcji LazyColumnFor/LazyRowFor przewijania dzięki unikaniu zbędnych zmian kompozycji 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 Graphics API.
    • 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 nazwę parametrów Dx/dy w metodzie wstawienia na poziomą i pionową
    • Dodano przeciążenie wektora, które zapewnia tę samą wartość wstawienia do wszystkich 4 progów
    • 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)
  • Spójnie przemianowaliśmy zastosowania grawitacji, aby wyrównać lub wyrównać interfejsy API układu. (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

  • Funkcje DpConstraints i interfejsy API korzystające z nich zostały wycofane. (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 obliczanie rozmiaru i pozycji w GestyScope, co powodowało m.in. generowanie nieprawidłowych gestów przesuwania (Iaf358, b/166589947).
  • Przeniesiono createAndroidComposeRule i AndroidInputDispatcher z androidx.ui.test.android do androidx.ui.test (Idef08, b/164060572)

Wersja 1.0.0-alpha02

Wrzesień 2, 2020

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 Wiersz i Kolumna dodano rozkład odstępów, aby umożliwić pozycjonowanie elementów podrzędnych układu ze stałymi odstępami. 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 niego użyj metody Modifier.granic. Klasa danych Border została zastąpiona przez BorderStroke (I4257d, b/158160576)
  • Funkcje vertical Scroller i Level Scroller zostały usunięte. Zamiast niej użyj ScrollableColumn/Row. 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).
  • Do elementu Semantics PropertyKey dodano funkcję mergePolicy lambda. 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)
  • Dodano parametr backgroundColor do właściwości LinearProgressIndicator, a w przypadku CircularProgressIndicator usunęliśmy wewnętrzne dopełnienie. Dodano nową stałą ProgressIndicatorConstants.DefaultProgressAnimationSpec, która może służyć jako domyślna specyfikacja animacji podczas animacji postępu między wartościami (If38b5, b/161809914, b/161804677).
  • Właściwość state { ... } została wycofana na rzecz wywołań 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)
  • Zmieniliśmy nazwę parametru RRect na RoundRect, by lepiej dopasować ją do wzorców nazewnictwa tworzenia kompozycji Utworzyliśmy podobne konstruktory funkcji do konstruktorów funkcji RRect i wycofanych konstruktorów 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 FloatingToolbar po kliknięciu tekstu. (If4525)
  • Ukryj FloatingToolbar 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 modyfikatory wypełniające maksymalny rozmiar elementu nadrzędnego, co rozwiązuje przypadek użycia, gdy element powinien wypełniać widoczny obszar, a zwykła metoda Modifier.fillMaxSize() nie działa, ponieważ element jest mierzony z ograniczeniami nieskończoności. (Ibd3b2, b/162248854)
  • Przenoszenie okna do interfejsu (I47fa6)
  • Dodano wersje LazyColumnForIndexed/LazyRowForIndexed – wersje LazyColumnFor/LazyRowFor, które zawierają zarówno indeks, jak i element w elemencie itemCallback. 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 grawitacji сrossaxis dla LazyRowItems/LazyColumnItem. 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 nazwę enumów filtraJakość na typ Pascal
    8. Zmieniono nazwy enumów StrokeJoin na Pascal Case.
    9. Zmieniono nazwę wyliczeń PointMode na wielkość liter Pascal
    10. Zmieniono nazwy enum PaintingStyle na przypadek Pascala
    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. Zaktualizowaliśmy funkcję kompozycji obrazu, aby uniknąć używania usługi Box i zmniejszania nakładu pracy
    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. zaktualizowaliśmy klasy i konstruktory funkcji Brush, używając 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. Użyj 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() semantykiMatcher. (I0b760)

  • Dodano modyfikator 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. Użyj w zamian elementu OnPositioned w elemencie podrzędnym. (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.

androidx.compose.foundation:foundation:0.1.0-dev15, androidx.compose.foundation:foundation-layout:0.1.0-dev15 i androidx.compose.foundation:foundation-text:0.1.0-dev15 zostały udostępnione. Wersja 0.1.0-dev15 zawiera te zatwierdzenia.

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

Aktualizacja zależności

  • Aby używać funkcji Compose 0.1.0-dev15, 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 metodzie ScrollableColumn/ScrollableRow LazyColumnItems/LazyRowItems ma teraz parametr contentPadding, który umożliwia dodanie dopełnienia treści po jej przycięciu, co nie jest możliwe za pomocą parametru modyfikatora. Umożliwia też dodanie odstępu tylko przed pierwszym elementem lub po ostatnim. (Ibc24e)
  • Nazwa wywołania zwrotnego onFocusChange w polach tekstowych została zmieniona na onFocusChanged (Ida4a1)
  • Klasy Vertical Scroller i Horiziontal Scroller 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. Uprościliśmy stan wymagany do przewijania. Nazwa ScrollableState została zmieniona 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. To zachowanie lepiej odpowiada oczekiwaniom w zakresie dostarczania obrazu o stałych rozmiarach, a jednocześnie nie wpływa na domyślne zachowanie, jeśli do obliczania rozmiaru elementu kompozycyjnego służy tylko rozmiar wewnętrzny. (I40ae3, b/159838006)
  • Użycie AnimationSpec zamiast AnimationBuilder w interfejsach API najwyższego poziomu w celu wyjaśnienia koncepcji specyfikacji animacji statycznej. – Ulepszenie przejścia DSL przez usunięcie wymogu lambda przy tworzeniu specyfikacji animacji, takich jak starsze czy sprężyna. Zamiast tego używają parametrów konstruktora. – Poprawa ogólnej łatwości obsługi otwierania konstruktorów AnimationSpec zamiast użycia konstruktorów. -Zmiana czasu trwania i opóźnienia ramek KeyFrame i Tween na Int. Eliminuje to niepotrzebne rzuty typów i przeciążanie metod (przy obsłudze zarówno długich, jak i Int). (Ica0b4)
  • Element klikalny został usunięty. 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. Obiekty kompozycyjne TextField, PhlledTextField i CoreTextField, które korzystają z tego typu, również zostały wycofane. Użyj 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 z możliwością przełączania został wycofany. Użyj metody 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)
  • Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużej refaktoryzacji polegającej na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (I19d02).
  • VerticalScroller obsługuje teraz kolumny bez żadnych dodatkowych ustawień. Aplikacja Poziomy przewijania teraz udostępnia funkcję Wiersz bezpośrednio w oknie. (Ieca5d, b/157020670)
  • Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużej refaktoryzacji, która polegała wyłącznie na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (Iede0b).
  • Do pakietu podstawowego 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).
  • Opcje Vertical Scroller i Level Scroller obsługują teraz przewijanie odwrotne. Ustawienie „Odwrotne” jest włączone dla funkcji ScrollerPosition (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)
  • Poziomy i pionowo przewijanie nie przywracają pozycji przewijania z wykorzystaniem 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 często używane parametry do funkcji Text(). Jeśli tworzysz lokalny styl tekstu, aby przekazywać niewielką liczbę tych parametrów, np. Text(style = TextStyle(textAlign = TextAlign.Center)), możesz teraz po prostu podać parametry bezpośrednio: Text(textAlign = TextAlign.Center) (I82768)

  • 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. Zmieniono nazwę FillMaxWymiar na „crop” Zmiana nazwy FillMaxWymiar i Fit Zmiana nazwy FillMinDimensions na „Fit” Zmiana nazwy dopasowania na „Inside” na „Inside” w celu lepszego dopasowania ImageView.ScaleType_Center

  • 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 API DrawModifier:

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

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

  • Zastą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)

  • Echo jest teraz modyfikatorem. Chociaż elementy klikalne nie zostały jeszcze przekonwertowane, 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. Wynikem składni podrzędnej jest 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 funkcja kompozycyjna obsługuje też rysowanie dowolnych instancji Painter z uwzględnieniem ich rozmiaru wewnętrznego, a także obsługi określonego stałego lub minimalnego rozmiaru (Ibcc8f)

  • Przyciski Button, FloatingActionButton i Clickable mają teraz oddzielny parametr enabled. Zmieniono nazwy niektórych parametrów przycisku lub ich kolejność. (I54b5a)

  • Zmieniliśmy nazwę obrazu na ImageAsset, by lepiej rozróżnić dane obrazu od przyszłej funkcji kompozycyjnej obrazu wykorzystywanej 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 w istniejącym układzie, lub SimpleImage, by przedstawić obraz, który zajmuje dużo miejsca (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. Zapoznaj się z przykładami informacji o wykorzystaniu i zobacz ikony dostępnych ikon materiału, których można używać bezpośrednio z tymi komponentami. (I96849)

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

  • Dodano AdapterList, komponent listy przewijanej, który tylko składa i układa widoczne elementy. Znane obecnie problemy polegają na tym, że tryb ten działa tylko pionowo i nie obsługuje w pełni wszystkich przypadków zmian w elementach podrzędnych. (Ib351b)

  • Dodano komponent przewijany, który umożliwia tworzenie niestandardowych elementów przewijania/list (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)

  • Przewijacze wykazują teraz natywne działanie przesuwania w Androidzie. (I922af, b/147493715)

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

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

  • Nazwa parametru procentu podczas tworzenia wskazówek 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 wycofaną funkcję LayoutTag(). Zamiast niej użyj metody Modifier.tag(). Usunięto nieużywaną metodę Modifier.matchParent(). Zamiast niej użyj metody 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(). Funkcja kompozycyjna CenterWyrównajmentLine została usunięta. (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 wycofane modyfikatory UkładSzerokość/Wysokość/Rozmiar. (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. Wiersze, kolumny i stos zostały zaktualizowane, aby obsługiwały 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)

  • LineToSiblings akceptuje teraz obiekty zmierzone 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 LayoutModifier2 – nowy interfejs API do definiowania modyfikatorów układu; wycofano LayoutModifier (If32ac).

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

  • Kontenery zostały wycofane. Zamiast tego użyj usługi 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 zaznaczania metodą przeciągania, aby zmienić wybór pola tekstowego. (I27032)

  • Implementuje LongPressAndDrag do wyboru pola tekstowego. (I17919)

Poprawki błędów

  • FocusModifier został wycofany i zastąpiony przez Modifier.focus, Modifier.focusRequester, 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. Nazwy wszystkich interfejsów API doXYZ zostały zmienione 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).
  • Z bloku miary funkcji Layout() usunięto parametr kierunku układu. 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 funkcję kompozycyjną viewModel(), która umożliwia tworzenie lub pobieranie już utworzonych modeli ViewModel podobnie jak w przypadku aktywności lub fragmentu (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. Cała klasa Px została usunięta (I3ff33).

  • Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużej refaktoryzacji, która polegała wyłącznie na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (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ż ominięcia GestyToken (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).

  • Elementy podrzędne Układu i LayoutModifier można mierzyć w innym 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, który umieścisz w bloku activity.setContent { }. Wcześniej trzeba było wypełnić cały ekran z aktywnością, a teraz układ zachowuje się tak, jakby układ został umieszczony w Stosie: może być mniejszy niż ekran i umieszczony 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)

  • runOnIdleCompose i runOnUiThread to teraz funkcje globalne, a nie metody w 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)

  • DrawLayerModifier i drawLayer() domyślnie mają wartość false (fałsz). (I0eb8b, b/152810850)

  • Zmieniono nazwę LayoutResult na MeasureResult. (Id8c68)

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

  • Zmieniono nazwę LayoutFlexible na LayoutWeight. Zmieniono nazwę precyzyjnego parametru na wypełnienie. (If4738)

  • Metoda DrawVector zmieniła się ze zwykłej funkcji kompozycyjnej na zwracanie modyfikatora pullVector(), który spowoduje narysowanie wektora jako tła 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 w ramach komponentu 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. Interfejs Compose.composeInto został wycofany. 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 zawiera odniesienie do oryginalnego narzędzia Painter, które może być współużytkowane przez wiele instancji 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 opcji Gęstość(gęstość) tylko za pomocą(gęstości) (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 nieaktywnym. Szczegóły znajdziesz w logu 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 wiersza wyrównania, którego dotyczy zapytanie, wyświetli się parametr AdjustLine.Nieokreślony. (I896c5, b/158134875)

  • Naprawiono błąd ConstraintLayout powodujący awarię przy ponownej kompozycji. (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 uzyskała 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. Do obliczania przekształceń z jednego LayoutCoordinate na inny programiści powinni używać koordynatorów nadrzędnych i podrzędnych (childToLocal()).

    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)

  • Algorytm kierunku tekstu zmienił nazwę 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)

  • Tag TestTag i semantyka zostały usunięte. Użyj zamiast niego 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 w interfejsie API: nazwa AnnotatedString.Item została zmieniona 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 interfejsie tworzenia wiadomości, powinna teraz stanowić rozszerzenie androidx.activity.KomponentActivity (lub AppCompatActivity). Funkcja setContent w android.app.Activity została wycofana (Idb25a, b/153141084)

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