Podstawy tworzenia
androidx.compose.foundation
androidx.compose.foundation.layout
androidx.compose.foundation.gestures
androidx.compose.foundation.selection
androidx.compose.foundation.lazy
androidx.compose.foundation.interaction
androidx.compose.foundation.text
Zapoznaj się z dokumentacją interfejsu API dotyczącą wszystkich pakietów tworzenia
Najnowsza aktualizacja | Wersja stabilna | Kandydat do wydania | Wersja Beta | Wydanie alfa |
---|---|---|---|---|
4 września 2024 r. | 1.7.0 | - | - | 1.8.0-alfa01 |
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 wersji;
notatek.
W tej tabeli opisano grupy i linki do poszczególnych zestawów informacji o wersji.
Grupa | Opis |
---|---|
compose.animation, | Twórz animacje w aplikacjach Jetpack Compose, aby wzbogacać wrażenia użytkowników. |
compose.buildr | Przekształcaj funkcje @Composable i optymalizuj funkcje za pomocą wtyczki kompilatora Kotlin. |
compose.foundation | Twórz aplikacje w Jetpack Compose, używając gotowych do użycia elementów składowych, i rozbuduj podstawy, aby tworzyć własne elementy systemu. |
compose.material, | Twórz interfejsy Jetpack Compose z gotowymi do użycia komponentami Material Design. Jest to punkt wejścia wyższego poziomu w Composer, który ma dostarczać komponenty pasujące do tych opisanych na www.material.io. |
compose.material3, | Twórz interfejsy Jetpack Compose z komponentami Material Design 3, które stanowią kolejną wersję Material Design. Material 3 ma zaktualizowane motywy i komponenty oraz funkcje personalizacji Material You, takie jak dynamiczne kolory, i został zaprojektowany tak, aby był spójny z nowym stylem wizualnym i interfejsem systemu na Androidzie 12. |
compose.runtime, | Podstawowe elementy składowe modelu programowania i zarządzania stanem w usłudze Compose oraz podstawowe środowisko wykonawcze, na które ma być kierowana wtyczka kompilatora Compose. |
compose.ui, | Podstawowe elementy interfejsu tworzenia wiadomości niezbędne do interakcji z urządzeniem, w tym układ, rysowanie i wprowadzanie tekstu. |
Deklarowanie zależności
Aby dodać zależność w Compose, musisz dodać repozytorium Google Maven do w projektach AI. Zapoznaj się z repozytorium Google Maven. .
Dodaj zależności artefaktów, których potrzebujesz w pliku build.gradle
aplikacji lub modułu:
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ć Jetpack. Daj nam znać, jeśli odkryjesz nowe problemy jak ulepszyć tę bibliotekę. Przyjrzyj się istniejące problemy w tej bibliotece, zanim utworzysz nową. Możesz zagłosować nad istniejącym problemem przez klikając przycisk gwiazdki.
Zobacz dokumentację narzędzia Issue Tracker. .
Wersja 1.8
Wersja 1.8.0-alpha01
4 września 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.8.0-alpha01
została zwolniona. Wersja 1.8.0-alfa01 zawiera te zatwierdzenia.
Wersja 1.7
Wersja 1.7.0
4 września 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.7.0
została zwolniona. Wersja 1.7.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.6.0
- Wydajność aplikacji
Modifier.clickable
,Modifier.focusable
,Modifier.indication
,Modifier.scrollable
iModifier.draggable
znacznie się poprawiła. W ramach tych działań oprócz zmian wewnętrznych wprowadziliśmy następujące zmiany w interfejsie API:- Dodano nowy interfejs Indication API:
IndicationNodeFactory
. Dzięki temu implementacje Wskazówek są skuteczniejsze w porównaniu z poprzednim (wycofanym) interfejsem APIrememberUpdatedInstance
. Informacje o migracji znajdziesz na stronie developer.android.com. clickable
/combinedClickable
/selectable
/toggleable
akceptuje teraz parametrMutableInteractionSource
, który może przyjmować wartości null. 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żywaszMutableInteractionSource
, zalecamy przekazanie wartości null zamiast wartościremember { MutableInteractionSource() }
.- Usługa
Indication#rememberUpdatedInstance
została wycofana. Występuje wtedy duża nieunikniona utrata skuteczności i uniemożliwia inne optymalizacje. Zamiast niego należy używać nowego interfejsu APIIndicationNodeFactory
.
- Dodano nowy interfejs Indication API:
- Działanie
BasicTextField
w wersjiTextFieldState
jest teraz stabilne. Zalecamy, aby wszystkie witryny generujące połączenia rozpoczęły migrację zBasicTextField(value, onValueChange)
naBasicTextField(TextFieldState)
. - Interfejs
ClickableText
został wycofany. Aby dodać do tekstu klikalne linki, użyj elementuBasicText
z nową adnotacjąLinkAnnotation
w dokumencieAnnotatedString
.LinkAnnotation
umożliwia dostosowywanie stylu na podstawie stanu linku (np. zaznaczenie, najechanie kursorem). - Przedstawiamy
ContextualFlowRow
iEnhanced FlowRow/Column
zMaxLines
iOverflow
. Z przyjemnością informujemy o ulepszeniach eksperymentalnej wersjiFlowRow
iFlowColumn
, które oprócz premieryContextualFlowRow
iContextualFlowColumn
obejmują terazmaxLines
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 koleiFlowRow
iFlowColumn
są idealne dla niewielkiej liczby elementów, która nie przekracza 100 elementów. Ważne: aby zachować obecne działanie funkcjiFlowRow
lubFlowColumn
, 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 naFlowRowOverflow.Visible
lubFlowColumnOverflow.Visible
. Zapoznaj się z usługamiContextualFlowRowSample
iFlowRowSample
, aby zobaczyć przykłady tych nowych funkcji w praktyce. (Ib9135, b/293577082) - Obsługa animacji wyglądu i znikania elementów została dodana do
LazyColumn
iLazyRow
. Wcześniej można było dodać modyfikatorModifier.animateItemPlacement()
w celu obsługi animacji miejsca docelowego (zmiany kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwieModifier.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 „Przeciągnij i przesunięcie” (
NestedScroll
) zostały zastąpione przez regułyUserInput
iSideEffect
, aby uwzględnić rozszerzoną definicję tych źródeł, do których teraz należą animacje (efekt boczny) oraz kółkiem myszy i klawiaturą (UserInput
). LazyLayout
żądań pobierania z wyprzedzeniem można teraz oznaczyć jako pilne, co oznacza, że ten element będzie potrzebny w następnej ramce. Zignorujemy budżet klatek, aby wcześniej wykonać większą pracę (Id513f)- Obsługa funkcji pisma odręcznego rysikiem na urządzeniach z Androidem U (I002e4)
- Różne interfejsy API zostały uaktualnione do wersji stabilnej
- Pagery, przyciąganie, wstawki w oknach
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
- Naprawiliśmy regresję, w której awaria występowała, gdy dowolny element jest zaznaczony wewnątrz elementu nadrzędnego, który można zaznaczyć (lub kliknąć) i jest on wyłączony. (b/317561689)
Wersja 1.7.0-beta07
7 sierpnia 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.7.0-beta07
została zwolniona. Wersja 1.7.0-beta07 zawiera te zatwierdzenia.
Poprawki błędów
- Powiązane z tekstem funkcje
SemanticsNodeInteraction
performTextReplacement
,performTextInput
iperformTextClearance
będą teraz powodować błędy asercji, gdy zostaną one wywołane w trybie tylko do odczytuTextFields
. (I4ae8f). - Naprawiliśmy wizualny błąd w hiperlinkach. (I23311)
- Naprawiliśmy problem z modyfikatorem
contentReceiver
, który nie działał z niektórymi edytorami IME. - Generowanie prędkości: zapobiegaj propagacji wartości NaN w interfejsie Compose i podstawy.
Wersja 1.7.0-beta06
24 lipca 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.7.0-beta06
została zwolniona. Wersja 1.7.0-beta06 zawiera te zatwierdzenia.
Wersja 1.7.0-beta05
10 lipca 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.7.0-beta05
została zwolniona. Wersja 1.7.0-beta05 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono wartości Nan w parametrach
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 zatwierdzenia.
Poprawki błędów
- Unikaj awarii przy pomiarze bardzo dużych linii tekstowych (np. 10 tys. znaków) (8157ab).
- Naprawia pomiar bardzo dużego tekstu, który powodował awarię w nowej wersji
BasicTextField
(6b7575) - Wycofuje zmianę zachowania w pomiarach wierszy/kolumn, która w określonych sytuacjach zakłóca użycie tekstu (69e8ba).
Wersja 1.7.0-beta03
12 czerwca 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.7.0-beta03
została zwolniona. Wersja 1.7.0-beta03 zawiera te zatwierdzenia.
Wersja 1.7.0-beta02
29 maja 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.7.0-beta02
została zwolniona. Wersja 1.7.0-beta02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodaje eksperymentalny interfejs API do konfigurowania sposobu pobierania z wyprzedzeniem
LazyGrids
, podobny do istniejącego eksperymentalnego interfejsu APILazyLists
. Obejmuje to obsługę pobierania z wyprzedzeniem elementów zagnieżdżonychLazyGrids
. Podobnie jak w przypadkuLazyListPrefetchStrategy
, implementacja domyślna to pobieranie z wyprzedzeniem pierwszych 2 zagnieżdżonych elementów każdej siatki, ale można to skonfigurować za pomocą nowych interfejsów APILazyGridPrefetchStrategy(nestedPrefetchItemCount)
iLazyListPrefetchStrategy#onNestedPrefetch
. (I591C4). - Zmieniono nazwę
SemanticsProperties.Editable
naIsEditable
iSemanticsPropertyReceiver.editable
naisEditable
. Właściwość jest teraz wartością logiczną i zawsze jest określana przez pola tekstowe. (I8acd8), - Przeniesiono wartości domyślne (
basicMarquee
) do obiektuMarqueeDefaults
. (I12ff6) - Nazwa parametru
delayMillis
basicMarquee
została zmieniona narepeatDelayMillis
. (I12ff6) - Aktualizacja interfejsu API do określania stylu linków: przenieś
TextLinkStyles
doTextStyle
i usuniętoTextDefaults
z materiału (I5477b)
Poprawki błędów
- Zmieniono nazwę
LayoutCoordinates.introducesFrameOfReference
naLayoutCoordinates.introducesMotionFrameOfReference
, aby lepiej odzwierciedlić jej przeznaczenie. Zmieniono nazwę powiązanej funkcji, aby obliczać współrzędne na podstawie tej flagi. (I3a330) - Usunięto opcję „Domyślne” z właściwości
MarqueeDefaults
. (I1d8a0). - Usunięto „Marquee” z usług
MarqueeDefaults
. (Iad4f4). - Usunięto ucznia
TextLinkStyles
z zajęćTextStyle
. Zamiast tegoTextLinkStyles
jest częścią konstruktoraLinkAnntation
i metodyAnnotatedString.fromHtml
(I90b2b). - Naprawiono błąd polegający na tym, że pager przyciągał po przesuwaniu w kierunku granicy, gdy był już na niej umieszczony. (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 pole „Aby poprawić dokładność podczas obliczania czasu tworzenia/pomiaru, określ typ treści w pobieraniu z wyprzedzeniem” (IEA622)
- Określ typ treści do obliczania czasu tworzenia/pomiaru przy pobieraniu z wyprzedzeniem, aby zwiększyć dokładność (Ibccb1)
- Udostępnij modyfikatory
WindowInsetsPadding
ze wspólnego zestawu źródeł (I070b2)
Wersja 1.7.0-beta01
14 maja 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.7.0-beta01
została zwolniona. 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
domyślnie odwraca delta przeciągania w przypadku komponentów z orientacją poziomą w układzie RTL. (I3c6d9)AnnotatedString.hasEqualsAnnotations
to terazhasEqualAnnotations
. (I685C0)- Zaktualizowaliśmy interfejs API pod kątem pobierania w tekście linków o tematyce Material. W tym celu usunęliśmy metody z
TextDefaults
do tworzenia tematycznychLinkAnnotations
i analizuj kod HTML za pomocą linków tematycznych. Zamiast tego dodaliśmy klasęTextLinkStyles
, która pozwala na określenie stylu linków jako parametr funkcji Text composable. (I31b93) - Zastąpiliśmy
onDragStarted
ionDragStopped
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 zPageSize
na 0. (Iba5d8, b/314008560)
Wersja 1.7.0-alpha08
1 maja 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.7.0-alpha08
została zwolniona. Wersja 1.7.0-alfa08 zawiera te zatwierdzenia.
Nowe funkcje
- Do
BasicTextField
iSelectionContainer
dodano menu kontekstowe uruchamiane kliknięciem prawym przyciskiem myszy z opcjami wycinania, kopiowania, wklejania i zaznaczania wszystkiego. (If8c93, Ia2b49, I6f268)
Zmiany interfejsu API
LazyLayout
żądań pobierania z wyprzedzeniem można teraz oznaczyć jako pilne, co oznacza, że ten element będzie potrzebny w następnej ramce. Zignorujemy budżet klatek, aby wcześniej wykonać większą pracę (Id513f)- Nazwa
isPositionedByParentWithDirectManipulation
została zmieniona naintroducesFrameOfReference
. Zwróć uwagę, że teraz efekt jest odwrotny, co oznacza, że domyślnie większość elementówLayoutCoordinates
wprowadza ramkę odniesienia. Tylko w przypadku bezpośredniej manipulacji właściwość ma wartość false (fałsz). Aby wysłać zapytanie o pozycję tylko w przypadku tych, które wprowadzają układ odniesienia, użyj funkcjipositionInLocalFrameOfReference(...)
. LubpositionInLocalLookaheadFrameOfReference
w sklepieLookaheadScope
. (Ifc5f7). - Nazwa
onClicked
została zmieniona naonClick
w domenieLinkInteractionListener
(Iaa35c) - Zgodnie z opiniami Rady ds. interfejsów API zmień parametr lambda działania dotyczący elementu
getScrollViewportLength
. (IBC74a) - Zmieniono nazwy interfejsów API przekazywania pisma odręcznego rysikiem. (Ica45f, b/327271923)
- Zmień nazwę
TextInclusionStrategy.isInside
naisIncluded
. Ustaw zwracany typ funkcjiParagraph/MultiParagraph#getRangeForRect()
, który nie może mieć wartości null. (I51f26)
Poprawki błędów
- Dodano „Zaznacz wszystko” do wszystkich tekstowych menu kontekstowych w usłudze
SelectionContainer
. (Ib750e, b/240143283) - Poprawiliśmy robienie długich zrzutów ekranu w przypadku przewijanych kontenerów z funkcją
reverseScrolling=true
. (I7C59c). - Rozwiązaliśmy problem, który powodował, że wartość typu
currentValue
w elemencieAnchoredDraggableState
zmieniała się, gdy zbliżała się do granic stanu. (Iea30b, b/333846848)
Treści tłumaczone przez użytkowników zewnętrznych
- Zmieniono nazwę
PrefetchExecutor
->PrefetchScheduler
, aby lepiej przedstawić swoje obowiązki. (IB9154) - Dodano obsługę pobierania z wyprzedzeniem elementów w zagnieżdżonych obiektach
LazyLists
(np.LazyColumn
, który renderuje zagnieżdżony tagLazyRows
). Ta zmiana powinna zmniejszyć liczbę klatek na sekundę podczas przewijania w przypadku tych elementów (LazyLists
). Domyślną implementacją jest pobieranie z wyprzedzeniem pierwszych 2 zagnieżdżonych elementów, ale to działanie można kontrolować przez nowe interfejsy APILazyLayoutPrefetchStrategy(nestedPrefetchItemCount)
iLazyListPrefetchStrategy#onNestedPrefetch
. (I51952)
Wersja 1.7.0-alpha07
17 kwietnia 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.7.0-alpha07
została zwolniona. Wersja 1.7.0-alfa07 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano obiekt
TextDefaults
, który zawiera metody tworzenia obiektuLinkAnnotation
i analizy ciągu z tagami HTML, który powoduje zastosowanie wartościMaterialTheme
do linków. (I98532, b/139312671) - Obsługa animacji wyglądu i znikania elementów została dodana do
LazyVerticalGrid
iLazyHorizontalGrid
. Wcześniej można było dodać modyfikatorModifier.animateItemPlacement()
w celu obsługi animacji miejsca docelowego (zmiany kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwieModifier.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) - Obsługa animacji wyglądu i znikania elementów została dodana do
LazyVerticalStaggeredGrid
iLazyHorizontalStaggeredGrid
. Wcześniej można było dodać modyfikatorModifier.animateItemPlacement()
w celu obsługi animacji miejsca docelowego (zmiany kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwieModifier.animateItem()
, który umożliwia obsługę wszystkich 3 typów animacji: wyglądu (rozjaśniania), znikania (zanikania) i zmiany kolejności. (I69bc9, b/330511290)
Zmiany interfejsu API
- Dodaje element
ContextMenuColors
i powiązane z nimLocalContextMenuTheme
ProvidableCompositionLocal
. Kolory menu kontekstowego w polach tekstowych i tekstu do wyboru można zmienić, nadając mu lokalną kompozycję. (Ifa154). - Oprócz normalnego stylu, najechania kursorem i zaznaczenia linki tekstowe otrzymały opcję stylizacji stanu naciśniętego. (I5f864, b/139312671)
- Przedstaw
ViewConfiguration.HandwritingGestureLineMargin
do obsługi gestów pisma odręcznego. Obsługuj gesty pisma odręcznego w języku:BasicTextField
. (IE6e13, b/325660505) - Usunęliśmy
DelegatableNode.scrollIntoView
w wersji 1.7, ponieważ nie mieliśmy czasu na dokończenie stabilizacji reszty powiązanej platformy interfejsu API. Ta funkcja zostanie ponownie wprowadzona w wersji 1.8 (I6cf61, b/333421581, b/332900232) - Podczas wysyłania zapytań o współrzędne układu możesz teraz używać argumentu
excludeDirectManipulationOffset
, aby wykluczyć przesunięcie ustawione przez układy nadrzędne, w których ich elementy podrzędne zostały umieszczone za pomocą funkcjiPlaceable.PlacementScope.withDirectManipulationPlacement
. Podobnie szablon, który często zmienia położenie swoich elementów podrzędnych, może teraz umieszczać je za pomocą elementuwithDirectManipulationPlacement
(np. domyślnie zaimplementowane przewijanie). Zwiększa to intuicyjność animacjiapproachLayout
, umożliwiając rozróżnianie przesunięcia i zasady bezpośrednio przy animowaniu podejścia. (I60ec7) - Poznaj
requestScrollToItem
dla użytkownikaLazyStaggeredGrid
. 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
. (I63983) - Przedstaw:
requestScrollToPage
na stronie Pager. W przypadku każdego przebiegu 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 działania, chyba że wywołasz funkcję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) - Usługa
ClickableText
została oznaczona jako wycofana. Aby dodać linki do tekstu, utwórz obiektAnnotatedString
z elementemLinkAnnotation
odpowiadającym linkowi i przekaż ten elementAnnotatedString
do funkcji kompozycyjnejText
(I34d4b, b/323346994) - Interfejs
UrlAnnotation
został wycofany. Zamiast niego użyj zasadyLinkAnnotation.Url
. Jeśli korzystasz z motywów Material Design, użyj obiektuTextDefaults
, aby utworzyć adnotację z zastosowanymi motywami Material Design (I8d180, b/323346545). - Nazwa kolumny
String.parseAsHtml
została zmieniona naAnnotatedString.Companion.fromHtml
(I43dcd) - Dodano argumenty stylu (
linkStyle
,focusedLinkStyle
,hoveredLinkStyle
) i detektor interakcji z linkiem do metodyparseAsHtml
. Podczas analizowania ciągu z tagami HTML z tagami<a>
metoda tworzyLinkAnnotation.Url
dla każdego tagu i przekazuje do każdej adnotacji obiekty stylu oraz detektor interakcji z linkami. (I7c977) LinkAnnotation
przyjmuje teraz argumenty stylu oparte na stanach orazLinkInteractionListener
. Dodaj tę adnotację do elementuAnnotatedString
, aby uzyskać hiperlink. WartościfocusedState
lubhoveredState
pozwalają określić wizualną konfigurację linków, gdy są zaznaczone lub najeżdżane kursorem. (I81ce4, b/139312671)- Flaga funkcji długich zrzutów ekranu została usunięta. (I28648, b/329128246)
LazyColumn
będzie teraz prawidłowo renderować przyklejone nagłówki na długich zrzutach ekranu. (I8d239, b/329296635)- Ustabilizowaliśmy większość pozostałych eksperymentalnych interfejsów API, które zostały wprowadzone wraz z nową wersją
BasicTextField
. (I714e2) - Do elementu
BasicSecureTextField
dodano parametrtextObfuscationCharacter
, który określa, którego znaku należy użyć przy zaciemnianiu treści. (I0588b) - Źródła „Przeciągnij i przesunięcie” (
NestedScroll
) zostały zastąpione przez regułyUserInput
iSideEffect
, aby uwzględnić rozszerzoną definicję tych źródeł, do których teraz należą animacje (efekt boczny) oraz kółkiem myszy i klawiaturą (UserInput
). (I40579) - Przedstaw
LocalBringIntoViewSpec
– zależne od platformy zachowanie przewijania zaznaczenia zależne od platformy, które jest stosowane w warstwie modyfikatora przewijania. (I27aa5, b/317453911) - Użytkownik
TextFieldCharSequence
został usunięty. PoleTextFieldBuffer.originalValues
zostało zastąpione elementamiTextFieldBuffer.originalText
iTextFieldBuffer.originalSelection
. (I2c7d6) - Pole
ImeOptions.hintLocales
nie może już dopuszczać wartości null. Jeśli chcesz przesłać pustą listę języków, użyjLocaleList.Empty
. (IC5bc4) - Nazwa
getOffsetFractionForPage
została zmieniona nagetOffsetDistanceInPages
. (IA05e2).
Poprawki błędów
- Gdy identyfikatory
InputTransformations
są połączone za pomocą funkcjinext
, ichKeyboardOptions
są teraz prawidłowo scalane z poszczególnymi opcjami przy użyciu nowej metodyKeyboardOptions.merge
. (IE5304, b/295951492) - Ustawienie
targetValue
na urządzeniuAnchoredDraggableState
nie już uwzględnia progów pozycji. Obecnie jej wartość progowa wynosi 50%, co oznacza, że parametrtargetValue
zmienia się w połowie dwóch reklam zakotwiczonych. (I82c2c).
Treści tłumaczone przez użytkowników zewnętrznych
- Zmieniono nazwy 2 interfejsów API przewijania (I56a75)
Wersja 1.7.0-alpha06
3 kwietnia 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.7.0-alpha06
została zwolniona. Wersja 1.7.0-alfa06 zawiera te zatwierdzenia.
Nowe funkcje
- Obsługa animacji wyglądu i znikania elementów została dodana do
LazyColumn
iLazyRow
. Wcześniej można było dodać modyfikatorModifier.animateItemPlacement()
w celu obsługi animacji miejsca docelowego (zmiany kolejności). Wycofaliśmy ten modyfikator i wprowadziliśmy nowy, nieeksperymentalny modyfikator o nazwieModifier.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) - 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) - Dodano metodę
parseAsHtml
dla ciągów tekstowych ze stylem: umożliwia ona konwersję ciągu znaków oznaczonego tagami HTML na formatAnnotatedString
. Pamiętaj, że nie wszystkie tagi są obsługiwane, na przykład nie będzie jeszcze można wyświetlać list punktowanych. (I84d3d). - Wprowadziliśmy eksperymentalną obsługę długich zrzutów ekranu w kontenerach przewijania w usłudze Compose za pomocą oficjalnego interfejsu API Androida (
ScrollCaptureCallback
). Ta funkcja jest eksperymentalna i obecnie może nie obsługiwać wszystkich przypadków poprawnie. Z tego powodu jest ono domyślnie wyłączone. Aby wyrazić zgodę, ustaw flagęComposeFeatureFlag_LongScreenshotsEnabled
na wartość true. Ta flaga zostanie usunięta w wersji beta przed wersją 1.7. (I2b055, b/329296471) - Wprowadzaj nowy interfejs API
GraphicsLayer
, aby zapewnić większą elastyczność w umieszczaniu i renderowaniu instancjiGraphicsLayer
oraz obsługiwać wbudowane funkcje renderowania bez konieczności koordynowania z implementacjami kompozycyjnymi określania instancji modyfikatoraGraphicsLayer
.
Zmiany interfejsu API
- Wszystkie parametry
KeyboardOptions
domyślnie mają teraz nieokreśloną wartość. Dodano metodęKeyboardOptions.merge
. - Nazwa
KeyboardOptions.autoCorrect
została zmieniona naautoCorrectEnabled
i ma wartość null (null), gdzie wartość null nie została określona. (Ia8ba0, b/295951492) - Nazwa
outOfBoundsPageCount
została zmieniona nabeyondViewportPageCount
. (I129c6) - Rola
fun ClipEntry.getMetadata()
została zmieniona na:val ClipEntry.clipMetadata
. (I50155) - Użytkownik
TextFieldState.valueAsFlow()
został usunięty. Wolę używać:snapshotFlow { state.text }
lubsnapshotFlow { TextFieldCharSequence(state.text, state.selection) }
(I7d629) - Zmieniono organizację parametrów
InputTransformation.transformInput
. UżytkownikoriginalValue: TextFieldCharSequence
został usunięty. Zamiast tegoTextFieldBuffer
ma teraz tę wartość z taką samą nazwą. Usunięto też parametrvalueWithChanges: TextFieldBuffer
.TextFieldBuffer
jest teraz zakresem odbiornika funkcji. (I919cc) - Wariant
BasicTextField(state)
iBasicSecureTextField
używają teraz parametruKeyboardActionHandler
zamiastKeyboardActions
do przetwarzania działań wykonanych przez klawiaturę programową. (I58dda) - Interfejsy API przekazywania pisma odręcznego rysikiem do obsługi pisma odręcznego rysikiem na „fałszywym” pola do wprowadzania tekstu. (I9c09c, b/327271923)
- Nazwa
KeyboardOptions.shouldShowKeyboardOnFocus
została zmieniona nashowKeyboardOnFocus
. (Ib4b7a, b/295951492) - Z parametru
Modifier.contentReceiver
usunięto parametrhintMediaTypes
. Zachęcamy deweloperów do sprawdzenia otrzymanego typu multimediówTransferableContent
, ponieważ może on być niezgodny ze skonfigurowaną wartościąhintMediaTypes
. (I82f99) - Zmieniono kolejność parametrów parametru
BasicSecureTextField
. Usunięto parametrykeyboardType
iimeAction
na rzecz pełnej klasyKeyboardOptions
przy zachowaniu tych samych wartości domyślnych odpowiednich dla klasyBasicSecureTextField
. Usunięto też parametrscrollState
. (Ibbfa9). - Typ użytkowniczki
TextFieldState.text
został zmieniony zTextFieldCharSequence
na tylkoCharSequence
. W związku z tym dodanoTextFieldState.selection: TextRange
iTextFieldState.composition: TextRange?
, aby odczytywać obecne wartości zaznaczenia i kompozycji bezpośrednio z obiektu stanu. - Użytkownik
TextFieldState.forEachTextValue
został usunięty. (Idb2a2) - Usunięto funkcje
ClipboardManager.getClipMetadata
iClipboardManager.hasClip
. UżyjclipEntry.getMetadata()
, aby odczytać metadane bieżącego wpisu. Sprawdź też, czy wynik funkcjiClipboardManager.getClip
ma wartość null, czy nie, aby dowiedzieć się, czy schowek ma bieżący klip. (I50498) - Aby można było wyczyścić schowek,
ClipboardManager.setClip
akceptuje teraz wartość null. (I7d2e9). - Pole
ReceiveContentListener
jest konwertowane na interfejs funkcji. Usunięto też przeciążenie funkcjiModifier.receiveContent
, które wymaga funkcji lambda, ponieważReceiveContentListener
jest teraz interfejsem funkcji. - Nazwa
Modifier.receiveContent
została zmieniona naModifier.contentReceiver
. (I1e6af). - Nazwa
TransferableContent.consumeEach
została zmieniona naTransferableContent.consume
. (I1e462). - Usługa
rememberTextFieldState
jest teraz dostępna w wersji stabilnej. (I37999)
Poprawki błędów
- Naprawiliśmy błąd polegający na tym, że wariant
BasicTextField(state)
nie działał z klawiaturami CJK(opartymi na kompozycjach). (I54425) - Naprawiono błąd, który w pewnych sytuacjach
Modifier.dragAndDropTarget()
mógł odwoływać się do nieaktualnych danych za pomocąModifier.Node
ponownego ich użycia. (I05bb1) - Cofnięto niedawną zmianę w umowie, w której wywołania funkcji
AnchoredDraggableState#anchoredDrag
byłyby wywoływane po zakończeniu operacjianchoredDrag
. (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 interfejsu API
- Usunięto eksperymentalną kompozycję
LocalTextLinkStyle
lokalną na potrzeby określania stylu hiperlinków. (Iebfa7). - Usunięto eksperymentalne zastąpienie funkcji
BasicText
zonLinkClicked
argumentem. W przyszłości wprowadzimy zamienny interfejs API do obsługi hiperlinków. (I107d5) - W dokumentach
TextFieldState
iTextFieldBuffer
usunęliśmy metody i właściwości związane z punktami kodu. Usunięto też sufiksyinChars
z pozostałych interfejsów API związanych z wyborem i kompozycją. (Ief7ce). - Pole
currentValue
przeglądarkiAnchoredDraggable
będzie teraz aktualizowane podczas przechodzenia przez punkt zakotwiczenia. Użyj metodysettledValue
, aby uzyskać poprzednią semantykęcurrentValue
. Jest aktualizowana tylko podczas ustawiania na reklamie zakotwiczonej. Postęp jest teraz widoczny jako funkcja (wymagająca punktu początkowego i końcowego), a nie jako właściwość. (Ibe6e8, b/318707189, b/298271489, b/294991954) BasicTextField(state)
,TextFieldState
,InputTransformation
,OutputTransformation
,TextFieldLineLimits
iTextFieldDecorator
zostały przekształcone w wersji stabilnej. (I9582b)- Wprowadziliśmy interfejs
InterceptPlatformTextInput
, który ułatwia pisanie testów IME niskopoziomowych oraz innych niskopoziomowych zastosowań. UsługaPlatformTextInputTestOverride
została wycofana. (I862ed, b/322680547) - Podziel
restrictedConstraints()
na 2 metody:fitPrioritizingWidth()
ifitPrioritizingHeight()
(I6d7fd)
Treści tłumaczone przez użytkowników zewnętrznych
- Dodano 2 nowe interfejsy API
isLastScrollForward
/isLastScrollBackward
, aby sprawdzić kierunek przewijania w przypadku ostatniego działania przewijania. Jeśli nie ma jeszcze działania przewijania, ustaw zwracanie wartości false (fałsz). (I63a0e)
Wersja 1.7.0-alpha04
6 marca 2024 roku
Usługa androidx.compose.foundation:foundation-*:1.7.0-alpha04
została zwolniona. 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)
- W programie
KeyboardOptions
dodanohintLocales
, aby umożliwić w narzędziuTextFields
możliwość sugerowania edytorom IME z konkretnymi językami, aby można było ustawić preferowany język. (Id18c2). - Usunięto eksperymentalne przeciążenia
BasicTextField2
iBasicSecureTextField
, które miały parametryvalue: String
ionValueChange: () -> String
. (I568b4) - Dodaj opcjonalną funkcję
applySemantics
do elementuInputTransformation
, aby wpłynąć na semantykę elementuBasicTextField2
, do którego jest 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 naBasicTextField
. (IE5713) FocusRequester.createRefs
jest teraz stabilny (I4d92c, b/261436820)- Wprowadziliśmy zasadę
DelegatableNode.scrollIntoView()
, aby umożliwić węzłom modyfikatorów bezpośrednie wysyłanie żądańscrollIntoView
. (I2b3b7, b/299939840) - Wprowadziliśmy
DelegatableNode.requireView()
, aby umożliwić węzłom modyfikatorów uzyskanie bieżącego AndroidaView
bez lokalnego odczytu kompozycji. (I40768) - Przedstawiamy informacje o układzie kontekstowym w zakresie wierszy przepływu kontekstowego i zakresie kolumny przepływu kontekstowego. Obejmuje to indeks wiersza, pozycję i ograniczenia dotyczące maksymalnej szerokości i wysokości pozwalającej utrzymać się w określonej pozycji. Elementy przekraczające maksymalną szerokość/wysokość mogą zostać przeniesione do następnego wiersza lub zostać pominięte ze względu na ustawienia nadmiaru. (Id13f8, b/292114798)
Poprawki błędów
- Naprawiono błąd, przez który w niektórych warunkach przełączenie atrybutów
enabled
lubreadOnly
wartościTextField
powodowało awarię. (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 interfejsu API
- Wprowadzono
DelegatableNode.requireLayoutCoordinates()
, aby umożliwić uzyskiwanie obecnej wartościLayoutCoordinates
elementuModifier.Node
bez konieczności zastępowania parametruonPlaced
i samodzielnego zapisywania współrzędnych w usłudze. (IA8657). - Wprowadzono
DelegatableNode.currentLayoutCoordinates
, aby umożliwić uzyskiwanie obecnej wartościLayoutCoordinates
elementuModifier.Node
bez konieczności zastępowania parametruonPlaced
i samodzielnego zapisywania współrzędnych w usłudze. (Iaebaa) - Optymalizacje wydajności w kampanii
DraggableAnchors
są używane przez:AnchoredDraggable
. (I89cff) BasicTextField2
i powiązane z nim interfejsy API w ramach pakietuandroidx.compose.foundation.text2
zostały przeniesione doandroidx.compose.foundation.text
. (I9f635)- Funkcja
BasicTextField2
nie akceptuje już parametruCodepointTransformation
. Użyj formy płatnościBasicSecureTextField
lubOutputTransformation
. (Id34ff). - Dodano metodę porównywania tylko adnotacji dwóch elementów typu
AnnotatedStrings
. (I32659) - Przedstawiamy
ContextualFlowRow
i ulepszoneFlowRow
/Column
w usługachMaxLines
iOverflow
. Z przyjemnością informujemy o ulepszeniach eksperymentalnej wersjiFlowRow
iFlowColumn
, które oprócz debiutuContextualFlowRow
iContextualFlowColumn
zawierają teraz obsługęmaxLines
i rozszerzoną. Ta aktualizacja ma na celu dostarczenie komponentów zapewniających optymalne działanie.ContextualFlow*
to idealne rozwiązanie dla dużej liczby elementów z małą konfiguracjąmaxLines
i dynamicznymi przyciskami +N „zobacz więcej”. Z koleiFlowRow
iFlowColumn
są idealne w przypadku niewielkiej liczby elementów, która nie przekracza 100 elementów. Ważne: aby zachować obecne zachowanie w funkcjachFlowRow
iFlowColumn
, w których wszystkie elementy są złożone niezależnie od tego, czy pasują do maksymalnej wartości osi poprzecznej, podczas inicjowania ustawoverflow
naFlowRowOverflow.Visible
lubFlowColumnOverflow.Visible
. Zapoznaj się z usługamiContextualFlowRowSample
iFlowRowSample
, 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 stanem włączenia i wyłączenia. (IA2253).
KeyboardOptions
' Wycofane konstruktory tekstu będą teraz prawidłowo kopiować wszystkie właściwości. (If12de).
Wersja 1.7.0-alpha02
7 lutego 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.7.0-alpha02
została zwolniona. Wersja 1.7.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
HorizontalPager
,VerticalPager
iPagerState
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 motywem. Gdy używasz motywu Material Design, kolor linku jest domyślnie ustawiony na główny kolor materiału. (I7eb10). - Wprowadzono 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 korzystając z funkcji wklejania ze schowka. (I81b72)- W ramach tej zmiany zastępujemy funkcję
SnapFlingBehavior
na stronie typuTargetedFlingBehavior
, aby odblokować inne przypadki użycia i zapewnić większą elastyczność. (I762ea) - W ramach tej zmiany ustanawiamy stabilny interfejs Snapping APIs. Usuwamy też część kodu testowego i dodajemy więcej przykładów do Przyciągania. (Id8da9).
- Przedstaw
TargetedFlingBehavior
, czyli obiektFlingBehavior
, który umożliwia propagację informacji o stanie trwającej animacji i docelowego przesunięcia przewijania. (I6a207)
Poprawki błędów
- W funkcji
BasicTextField2
kursor jest teraz widoczny podczas pisania, gdy jego pozycja zniknie z widoku lub z powodu wpisania danych przestanie być widoczny. (Ieb856, b/237190748)
Treści tłumaczone przez użytkowników zewnętrznych
- Dodaje eksperymentalny interfejs API do konfigurowania działania pobierania z wyprzedzeniem LazyLists. (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-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano nowy element:
Indication API
,IndicationNodeFactory
. Dzięki temu implementacjeIndication
są bardziej wydajne w porównaniu z poprzednim (wycofanym) interfejsemrememberUpdatedInstance
API. Informacje o migracji znajdziesz na stronie developer.android.com. - Funkcja
clickable / combinedClickable / selectable / toggleable
akceptuje teraz parametrMutableInteractionSource
, który może przyjmować wartości null. Jeśli wartość to null, a podana wartośćIndication
toIndicationNodeFactory
,Indication
można utworzyć leniwie tylko wtedy, gdy jest to konieczne, co zwiększa wydajność. Jeśli nie podnosisz danych ani nie używaszMutableInteractionSource
, zalecamy przekazywanie wartości null.
Zmiany interfejsu API
- Wprowadzenie funkcji
DecayAnimation
wAnchoredDraggable
. Ta zmiana dodaje doAnchoredDraggable
parametrdecayAnimationSpec
, który umożliwia użycie animacji spadku udziału po wybraniu jednej z reklam zakotwiczonych. Zmiana obejmuje też zmianę nazwy obecnejanimationSpec
nasnapAnimationSpec
, by ułatwić zrozumienie przypadku użycia każdej specyfikacji. - Aplikacja
BasicTextField2
jest dostępna do użytku eksperymentalnego. Funkcje powinny być mniej więcej takie same jak wBasicTextField
, a działanie powinno być gotowe do działania w środowisku produkcyjnym. Na razie interfejs API pozostaje jednak w fazie eksperymentalnej. Przed ustabilizowaniem nazwa zostanie zmieniona naBasicTextField
i przeniesiona do tego samego pakietu. - Wprowadzono pierwszą wersję roboczą interfejsu
OutputTransformation
API dlaBasicTextField2
. Ten interfejs API zastępuje większość przypadków użycia funkcjiVisualTransformation
w starej wersjiBasicTextField
. Jednak nie został on jeszcze ukończony i niektóre funkcje mogą nie działać prawidłowo. Chętnie poznamy jednak Twoją opinię o możliwości interfejsu API w Twoich przypadkach. (Aosp/2708848). - Wprowadzenie funkcji
LinkAnnotation
, która umożliwia dodawanie do tekstu linków i klikalnych elementów. Funkcja linków nie jest jeszcze ukończona i wkrótce wprowadzimy kolejne zmiany w interfejsie API. - Wprowadzono 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 działania funkcjiBasicTextField
w postaci żądania klawiatury programowej w trybie zaznaczenia.- Zasady
TextInputService
iLocalTextInputService
zostały wycofane. Aby integrować się bezpośrednio z interfejsami API platformy IME, użyj narzędziaPlatformTextInputModifierNode
. (Aosp/2862698). - Usługa
Indication#rememberUpdatedInstance
została wycofana. Występuje wtedy duża nieunikniona utrata skuteczności i uniemożliwia inne optymalizacje. Zamiast niego należy używać nowego interfejsu APIIndicationNodeFactory
.
Poprawki błędów
- Po przekazaniu wartości
VisualTransformation
BasicTextField
będzie teraz wstępnie sprawdzać niewielki wybór mapowań przesunięcia. 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 podczas tworzenia kompozycji i 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.
Usługa androidx.compose.foundation:foundation-*:1.6.8
została zwolniona. Wersja 1.6.8 zawiera te zatwierdzenia.
Wersja 1.6.7
1 maja 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.6.7
została zwolniona. Wersja 1.6.7 zawiera te zatwierdzenia.
Wersja 1.6.6
17 kwietnia 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.6.6
została zwolniona. Wersja 1.6.6 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd, przez który w niektórych warunkach przełączenie atrybutów
enabled
lubreadOnly
wartościTextField
powodowało awarię. (Iae17b).
Wersja 1.6.5
3 kwietnia 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.6.5
została zwolniona. Wersja 1.6.5 zawiera te zatwierdzenia.
Poprawki błędów
- Dodaje dzienniki debugowania do trudnych do odtworzenia błędów w wierszu/kolumnie: (b/300280216 i b/297974033).
Wersja 1.6.4
20 marca 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.6.4
została zwolniona. Wersja 1.6.4 zawiera te zatwierdzenia.
Poprawki błędów
- Gest zaznaczenia przez naciśnięcie i przytrzymanie, który w pierwszej ramce przeciągnięcia wykracza poza granice układu tekstu, nie ulega już awarii. (Icdf90, b/325307463)
Wersja 1.6.3
6 marca 2024 roku
Usługa androidx.compose.foundation:foundation-*:1.6.3
została zwolniona. Wersja 1.6.3 zawiera te zatwierdzenia.
Wersja 1.6.2
21 lutego 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.6.2
została zwolniona. Wersja 1.6.2 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiąż problem z resetowaniem urządzenia
AnimateContentSize
, który nie jest prawidłowo resetowany. (I07051) - Rozwiązaliśmy problem polegający na tym, że w niektórych przypadkach
intrinsicHeight
tekstu było nadmiernie zapisywane w pamięci podręcznej. (3cd398, b/217910352)
Wersja 1.6.1
7 lutego 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.6.1
została zwolniona. Wersja 1.6.1 zawiera te zatwierdzenia.
Poprawki błędów
- Poprawiono rozłożony w czasie pomiar siatki po najechaniu na limit. (bffc39)
- Dodaj sprawdzanie układu o dużych wymiarach. (E74af5).
- Popraw rozmieszczanie elementów o rozmiarze 0 na początku siatki rozłożonej w czasie. (785f94).
- Wywołuj wywołanie zwrotne onRelease w tej samej kolejności co onForgotten. (31ce3b).
Wersja 1.6.0
24 stycznia 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.6.0
została zwolniona. Wersja 1.6.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 1.5.0
- Nowy modyfikator
Modifier.anchoredDraggable
, który umożliwia przeciąganie i animowanie między wstępnie zdefiniowanym zestawem reklam zakotwiczonych. Ten modyfikator ma zastąpić modyfikatorModifier.swipeable
. Z przewodnika po migracji dowiesz się, jak z niego korzystać i jak przeprowadzić migrację z usługiModifier.swipeable
. - Dodaliśmy funkcję przeciągania i upuszczania między aplikacjami i komponentami. Na początek zapoznaj się z informacjami o
DragAndDropTarget
,Modifier.dragAndDropSource
i innych interfejsach API Modifier.draggable2D
to nowy modyfikator, który umożliwia łatwe przeciąganie elementów 2D. Zobacz Fragment.- Dodaliśmy komponenty
AndroidExternalSurface
iAndroidEmbeddedExternalSurface
, aby ułatwić dodawanie podczas tworzenia wiadomości komponentów zależnych od powierzchni - Różne zmiany i ulepszenia interfejsu API w
Pager
isnapFlingBehaviour
- Różne interfejsy API zaznaczenia, tekstu i wstawienia zostały awansowane jako stabilne interfejsy API
Wersja 1.6.0-rc01
10 stycznia 2024 r.
Usługa androidx.compose.foundation:foundation-*:1.6.0-rc01
została zwolniona. Wersja 1.6.0-rc01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Usunięto konstruktor rozszerzenia
DragAndDropTarget()
. Utwórz nową instancję przy użyciu dodatkuobject: 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
to teraz konkretna klasa, a nie interfejs. (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) - Poprawiono błąd
Modifier.animateItemPlacement()
iLookaheadScope
po przewinięciu małego ekranu. (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 zatwierdzenia.
Zmiany interfejsu API
- Modyfikator
DragAndDropTarget
bezpośrednio przejmuje teraz elementy odbierająceDragAndDropTarget
i ma funkcję lambda umożliwiającą rejestrowanie sesji metodą „przeciągnij i upuść”.DragAndDropModifierNode
ma teraz 2 funkcje fabryczne. jeden do odbierania transferów, a drugi do przesyłania danych (I69481) - Zaktualizowano wartość
maximumFlingVelocity
, by była reprezentowana jako liczba zmiennoprzecinkowa. Zaktualizowaliśmy dokumentację, aby lepiej wyjaśnić działanie jednostkimaximumFlingVelocity
. (I8adc7). onDragAndDropStart
w:DragAndDropModifierNode
Nazwa fabryki została zmieniona naacceptDragAndDropTransfer
.Element
acceptsDragAndDropTransfer
został dodany dodragAndDropTarget
Modifier
, aby można było zaakceptować połączenie z sesji przeciągania i upuszczania. Ta funkcja lambda zwraca wartość wykonalnąDragAndDropTarget
, jeśli interesuje Cię sesja „przeciągnij i upuść”. Zastąpiły one inne parametry lambda do przetwarzania zdarzeń przeciągania.dodano funkcję fabryczną
DragAndDropTarget
w celu odbierania sesji przeciągania i upuszczania (Iebf3a)Ujawnienie elementu
startDragImmediately
w narzędziuAnchoredDraggable
umożliwia wykrywanie gestów przeciągania podczas jego używania. Warto je ustawić, gdy widżet animowany jest na podstawie kotwicy docelowej. Zobacz Fragment. (Ie6d13, b/285139987)Interfejsy API Foundation etykiet to teraz
@ExperimentalFoundationApi
(I30b0b)Usunięto
DragAndDropInfo
jako typDragAndDropModifierNode.drag
teraz zawiera parametry funkcjitransferData
, rozmiar dekoracji i przeciąganie elementów lambdaDrawScope
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ądzeniaDragAndDropModifierNode
została zmieniona naonDragAndDropStart
, aby lepiej poinformować, że podana wartośćDragAndDropTarget
jest ważna tylko w przypadku danej sesji przeciągania i upuszczaniaKarta
DragAndDropEventType
została usunięta (I645b1)Nazwa
PlatformTextInputModifierNode.runTextInputSession
została zmieniona naestablishTextInputSession
. (I03cd0).Zastąp
OriginalText
przezTextSubstitution
. (Ifa5a8).Nazwa
PlatformTextInputModifierNode.textInputSession
została zmieniona narunTextInputSession
. (IE9c6b)Elementy podrzędne elementu
SubcomposeLayout
(i układy takie jakLazyColumn
), które są zachowywane do ponownego wykorzystania w przyszłości, są uznawane za wyłączone. Wprowadzono nowy testowy interfejs APIassertIsDeactivated()
do testowania takich węzłów. Pozostałe interfejsy API domyślnie odfiltrowują wyłączone węzły. (I2ef84, b/187188981)Nazwa parametru
clippingEnabled
parametruModifier.magnifier
została zmieniona naclip
.Parametr
magnifierCenter
elementuModifier.magnifier
może mieć wartość null, ale zachowuje to samo domyślne działanie. (I6aa66).Interfejsy API Material
SwipeToReveal
(w przypadku kart i elementów) do tworzenia tych przedziałów korzystają teraz z interfejsu API opartego na przedziałach (zgodnie z zaleceniem w narzędziu Compose), a nie instancji opartych na klasach danych. Jest to niezwykła zmiana. Przykłady korzystania z nowego interfejsu API znajdziesz w prezentacji i przykładowym kodzie. (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 parametruminWidth
i ominWidth
poniżej wartości ograniczenia wskaźnika początkowegomaxWidth
(Idb19c) - Dodano obsługę mechanizmu renderowania dla gradientu automatycznego w
ArcLine
. (I4d5bb) - Napraw problem ze zgodnością plików binarnych ze zmianą wstawienia okna (Iee695)
- Usuń podstawową warstwę materiałową z elementu Material3/przycisku, ponieważ bez niego mikrotesty porównawcze wykazują lepszą skuteczność. (I55555)
Wersja 1.6.0-alpha08
18 października 2023 r.
Usługa androidx.compose.foundation:foundation-*:1.6.0-alpha08
została zwolniona. Wersja 1.6.0-alfa08 zawiera te zatwierdzenia.
Nowe funkcje
Modifier.draggable2D
to nowy modyfikator, który umożliwia łatwe przeciąganie elementów 2D. Zobacz przykład (Id95f5, b/214412658)
Zmiany interfejsu API
- Zmieniono nazwę funkcji lambda
onDrawDragShadow
w elemencieModifier.dragAndDrawSource
nadrawDragDecoration
, a parametr rozmiaruDragAndDropInfo
nadragDecorationSize
. (Id0e30, b/303904810) - Nazwa parametru
decorationBox
parametruBasicTextField2
została zmieniona nadecorator
. Zmieniono też typ interfejsu na taki sam fajny interfejsTextFieldDecorator
. (I23c1c).
Poprawki błędów
- Ulepszona dokumentacja usługi
BasicTextField
dotycząca wymagańonValueChange
. (I90fc9, b/160257648)
Wersja 1.6.0-alpha07
4 października 2023 roku
Usługa androidx.compose.foundation:foundation-*:1.6.0-alpha07
została zwolniona. Wersja 1.6.0-alfa07 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Wprowadziliśmy
PlatformTextInputMethodTestOverride
do testowania pisania testów w niestandardowych edytorach tekstu. (Id159b). - Zmieniono nazwę z
GraphicsSurface
naAndroidExternalSurface
(I11680) - Dodano tymczasową flagę
DisableNonLinearFontScalingInCompose
, aby wyłączyć nieliniowe skalowanie czcionek. DodajDisableNonLinearFontScalingInCompose = true
do testów, jeśli potrzebujesz czasu na ich wyczyszczenie. Ta flaga zostanie usunięta z interfejsu Compose w wersjach 1.6.0-beta01. (IC9486) - Dodano kolekcje
ColorList
iColorSet
, które pozwalają uniknąć alokacji. (I744bd) - Ta zmiana powoduje usunięcie witryny
shortSnapVelocityThreshold
, która została przekształcona w szczegóły implementacji implementacjiSnapLayoutInfoProvider
. (I65f6d) - Dodaje modyfikator
dragAndDropSource
służący do rozpoczynania sesji metodą przeciągania i upuszczania oraz modyfikatordragAndDropTarget
do odbierania sesji metodą „przeciągnij i upuść” (Ib7828, b/286038936) - Zaktualizuj dokumentację i metodę pozycjonowania
SnapPositionInLayout
. Wprowadź dopełnienia treści do metody pozycjonowania wSnapPositionInLayout
. (Id7938, b/300116110) - Do elementu
TextFieldState
dodano elementUndoState
, który umożliwia cofanie i ponawianie zmian wprowadzonych przez użytkownika. (ICC024)
Poprawki błędów
- Rozwiązaliśmy problem z animacją
basicMarquee
po zmianie prędkości. (Id2e77, b/297974036)
Wersja 1.6.0-alpha06
20 września 2023 r.
Usługa androidx.compose.foundation:foundation-*:1.6.0-alpha06
została zwolniona. Wersja 1.6.0-alfa06 zawiera te zatwierdzenia.
Nowe funkcje
- Nowe kody kompozycyjne dla elementów
SurfaceView
,TextureView: GraphicsSurface()
iEmbeddedGraphicsSurface()
. Jest to eksperymentalny interfejs API, który może podlegać zmianom i modyfikacjom. (ddb2) Modifier.magnifier()
to teraz stabilny interfejs API. Obejmuje to usunięcie parametruMagnifierStyle
na rzecz parametrów wbudowanych w samym modyfikatorze. (I83bec, b/298381260, b/262367109, b/261438887)
Zmiany interfejsu API
updateCurrentPage
iupdateTargetPage
wprowadzone wScrollScope
r. to ostatnie elementy niezbędne do dostosowania animowanego przewijania wPagerState.scroll
. (I9cad5, b/267744105, b/243786897)- Usuń gęstość z:
SnapFlingBehavior
. Wszystkie implementacje interfejsuSnapLayoutInfoProvider
mają już dostęp do gęstości. Zakres odbiorcy może zostać usunięty, co uprości implementację zarównoSnapFlingBehavior
, jak iSnapLayoutInfoProviders
. (I153C3). - Więcej modyfikatorów zostało oznaczonych jako stabilne. (I56af1, b/298046462)
- Usunięto
SnapStepSize
z listySnapLayoutInfoProvider
. Obliczenia należy wykonać z użyciem informacji o układzie i przekazać je odpowiednią metodą oraz odsunięciami przyciągania. (If320c).
Zmiany w działaniu
- Funkcja tworzenia wiadomości używa teraz nieliniowego skalowania czcionek, aby poprawić czytelność i dostępność. Gdy skala czcionki > 100% w ustawieniach systemowych, rozmiar małego tekstu jest normalnie powiększony, a już duży tekst tylko trochę. Ponadto wysokość wierszy określona w SP będzie automatycznie dostosowywana do zamierzonej wysokości skali 100%. Więcej informacji znajdziesz w artykule Sprawdzone metody skalowania czcionek. (I11518).
Poprawki błędów
- Usuń możliwość dodawania znaczników
rememberSaveable
do etykiet. (Icc131, b/299500338)
Wersja 1.6.0-alpha05
6 września 2023 r.
Usługa androidx.compose.foundation:foundation-*:1.6.0-alpha05
została zwolniona. Wersja 1.6.0-alfa05 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodaj do funkcji
BasicSecureTextField
przeciążenia, które akceptują wartość stałą, oraz wywołanie zwrotne w celu jej zmiany, tak jak w przypadku obecnego interfejsu APIBasicTextField
. (IA4882). - Dodaj atrybut
Modifier.preferKeepClear()
, aby oznaczyć jako kompozycyjną jako preferowany sposób uniknięcia pływających okien przy użyciu interfejsu API 33 i nowszych. (Ib51d5, b/297260115) - Prędkości przesunięcia w komponentach widoku danych, takich jak
ScrollView
iRecyclerView
, są ograniczone doViewConfiguration.ScaledMaximumFlingVelocity
. Narzędzie Utwórz zawiera teraz własną wersję funkcjimaximumFlingVelocity
, która ma teraz zastosowanie do językaDraggable
. (Ibf974). - Usunięto wycofane przeciążenia
Pager
iPagerState
. (IEA07e). - Dodano element
BasicTooltipBox
do folderucompose.foundation
oraz zaktualizowaliśmyPlainTooltipBox
iRichTooltipBox
, aby umożliwić użycie funkcjiTooltipBox
z nowymi kompozycjamiPlainTooltip
iRichTooltip
. (I79e1D)
Wersja 1.6.0-alpha04
23 sierpnia 2023 r.
Usługa androidx.compose.foundation:foundation-*:1.6.0-alpha04
została zwolniona. Wersja 1.6.0-alfa04 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodaj interfejs
ReusableComposition
do zarządzania cyklem życia i ponownym używaniem podkompozycji. (I812d1, b/252846775) - Aplikacja
Modifier.focusGroup
została awansowana do stabilnych interfejsów API. (I7ffa3). - Dodaj do funkcji
BasicTextField2
przeciążenia, które akceptują wartość stałą, oraz wywołanie zwrotne w celu jej zmiany, tak jak w przypadku obecnego interfejsu APIBasicTextField
. (I3f2b8) GridItemSpan::currentLineSpan
to teraz stabilny interfejs API. (ICC29c)- Obszar roboczy, który akceptuje interfejs
contentDescription
, jest teraz stabilnym interfejsem API. (Ib3d29). - Wprowadziliśmy w narzędziu
ScrollState
funkcjęviewportSize
, dzięki której można poznać rozmiarviewPort
komponentu, który po przeprowadzeniu pomiaru używaScrollState
. (I8b85a, b/283102682) - Naprawiono błąd, który powodował, że pobieranie z wyprzedzeniem na stronie nie było zgodne z działaniem w widokach. (I93352, b/289088847)
- Aplikacja
Modifier.consumeWindowInsets(PaddingValues)
jest teraz stabilna.- Interfejs API
Deprecated Modifier.consumedWindowInsets
został usunięty. Użyj w zamian zasadyModifier.consumeWindowInsets
. (Id72bb)
- Interfejs API
Wersja 1.6.0-alpha03
9 sierpnia 2023 r.
Usługa androidx.compose.foundation:foundation-*:1.6.0-alpha03
została zwolniona. Wersja 1.6.0-alfa03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano przeciążenie obiektu
LazyLayout
. Akceptowana jest funkcja lambda o wartościLazyLayoutItemProvider
, a nie zwykły obiekt jak wcześniej. Poprzednie przeciążenie zostało wycofane. (I42a5a) - Dodano obsługę konfigurowania usługi
privateImeOptions
(Idb772)
Poprawki błędów
- Poprawiono pola tekstowe przedstawiające klawiaturę i można je było edytować, gdy
readOnly
ma wartość prawda. Rozwiązaliśmy też problem z klawiaturą, która nie wyświetlała się, gdy zasadareadOnly
po zaznaczeniu została zmieniona z „prawda” na „fałsz”. (I34a19, b/246909589)
Wersja 1.6.0-alpha02
26 lipca 2023 r.
Usługa androidx.compose.foundation:foundation-*:1.6.0-alpha02
została zwolniona. Wersja 1.6.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Rozwiązanie
PagerLayoutInfo
z informacjami zebranymi po zaliczeniu pomiaru wPager
. Wprowadziliśmy równieżPageInfo
, czyli informacje o pojedynczej mierzonej stronie wPager
. (Iad003, b/283098900) - Dodatkowe adnotacje do określania dozwolonych danych wejściowych do elementów kompozycyjnych (I51109)
- Dodaliśmy
SemanticsNodeInteraction.requestFocus
, aby ułatwić śledzenie testów i ułatwić im śledzenie. (IE8722) - Całkowicie zmieniony interfejs API
PlatformTextInput*
. (I6c93a, b/274661182, b/267235947, b/277380808) SoftwareKeyboardController
iLocalSoftwareKeyboardController
nie są już eksperymentalne.LocalSoftwareKeyboardController
to teraz także prawidłowa wartośćCompositionLocal
. (I4c364)Modifier.transformable
podaje teraz wartość delta w parametrzecanPan
, by ułatwić określenie kierunku przesuwania, który umożliwia jego dopuszczenie lub zablokowanie. (I692aa, b/266829800)- Aktualizuje modyfikator
consumeWindowInsets
, aby rozszerzyć superklasęAbstractComposeView
(Iacd74, b/269479941)
Wersja 1.6.0-alpha01
21 czerwca 2023 r.
Usługa androidx.compose.foundation:foundation-*:1.6.0-alpha01
została zwolniona. Wersja 1.6.0-alfa01 zawiera te zatwierdzenia.
Nowe funkcje
- W sekcji Podstawy wprowadziliśmy nowy interfejs API
AnchoredDraggable
. Może służyć do tworzenia komponentów, które można przeciągać między różnymi stanami, np. modalnych arkuszy dolnych. Ten interfejs API zastępuje interfejs API MaterialSwipeable
. (I4a2ed).
Zmiany interfejsu API
- Pomoc:
InputConnection#requestCursorUpdates
(I0c69b) - Wprowadziliśmy
scrollAnimationSpec
, aby umożliwić stosowanie niestandardowej 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 do obsługi tłumaczenia tekstu. (I4a6bc).
- Wprowadziliśmy interfejs API
BringIntoViewCalculator
, którego można używać do dostosowywania sposobu, w jaki komponenty takie jakScrollable
odpowiadają na żądaniabringIntoView
. Zmieniono przeciążenie elementów przewijanych, aby opcjonalnie akceptowały wystąpienie instancjiBringIntoViewCalculator
. (Iaf5af).
Poprawki błędów
- Dodano sprawdzanie lintowania, aby ostrzegać, gdy tworzysz element
MutableInteractionSource
w kompozycji bez jego zapamiętywania, podobnie jak w przypadku sprawdzania lintowania w przypadku tworzenia stanu zmiennoprzecinkowego /Animatable
. (I5daae). - Dodano obsługę zaznaczania za pomocą myszy. Zaznaczenie dotykowe powiększa się o poszczególne słowa lub zmniejsza po znaku. (Ic0c6c, b/180639271)
- Dodano interfejs
FocusTargetModifierNode
, którego można używać do tworzenia niestandardowychFocusTarget
. (I9790e)
Wersja 1.5
Wersja 1.5.4
18 października 2023 r.
Usługa androidx.compose.foundation:foundation-*:1.5.4
została zwolniona. 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 zmian.
Wersja 1.5.2
27 września 2023 r.
Usługa androidx.compose.foundation:foundation-*:1.5.2
została zwolniona. 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
- Poprawiono pola tekstowe przedstawiające klawiaturę i można je było edytować, gdy
readOnly
ma wartość prawda. Rozwiązaliśmy też problem z klawiaturą, która nie wyświetlała się, gdy zasadareadOnly
po zaznaczeniu została zmieniona z „prawda” na „fałsz”. (I34a19, b/246909589)
Wersja 1.5.0
9 sierpnia 2023 r.
Usługa androidx.compose.foundation:foundation-*:1.5.0
została zwolniona. 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 interfejsuModifier.Node
API, co zmniejszyło narzut związany z początkową kompozycją. - Poprawa stabilności pagerów. Naprawiliśmy wiele błędów.
- Parametry
pageCount
znajdują się teraz w lokalizacjiPagerState
, a nie w samym pagerze
Wersja 1.5.0-rc01
26 lipca 2023 r.
Usługa androidx.compose.foundation:foundation-*:1.5.0-rc01
została zwolniona. Wersja 1.5.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
Dostępna jest opcjonalna kontrola, która zaleca migrację wywołań
mutableStateOf()
do odpowiednich typów specjalistycznych obiektów podstawowych. Identyfikator linta toAutoboxingStateCreation
. 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 wyższe), zadeklarującwarning "AutoboxingStateCreation"
w konfiguracjibuild.gradle
lubbuild.gradle.kts
modułu, jak pokazano na przykładzie (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
Wersja 1.5.0-beta03
28 czerwca 2023 r.
Usługa androidx.compose.foundation:foundation-*:1.5.0-beta03
została zwolniona. Wersja 1.5.0-beta03 zawiera te zatwierdzenia.
Wersja 1.5.0-beta02
7 czerwca 2023 r.
Usługa androidx.compose.foundation:foundation-*:1.5.0-beta02
została zwolniona. Wersja 1.5.0-beta02 zawiera te zatwierdzenia.
Wersja 1.5.0-beta01
24 maja 2023 r.
Usługa androidx.compose.foundation:foundation-*:1.5.0-beta01
została zwolniona. Wersja 1.5.0-beta01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Zastosuj funkcję
PlatformDataProvider
, aby widzieć tętno i dzienną liczbę kroków. InterfejsSensorGateway
został usunięty z publicznego interfejsu API. (I55b84)
Poprawki błędów
- Ogranicz przydziały podczas leniwej listy, sieci reklamowej itp. pomiary (Iaf9e2)
- Zmniejszone przydziały podczas stosowania zrzutów (I65c09)
- Usunięto przydziały ze wiosennych animacji (Ie9431)
- Usunięto alokację z:
TextLayout
(I0fd11) - Usunięto wiele przydziałów ze śledzenia prędkości wskaźnika (I26bae).
Wersja 1.5.0-alpha04
10 maja 2023 r.
androidx.compose.foundation:foundation:1.5.0-alpha04
i androidx.compose.foundation:foundation-layout:1.5.0-alpha04
zostały udostępnione. Wersja 1.5.0-alfa04 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano zoptymalizowaną wartość
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 leniwego rozłożonego siatki dodano eksperymentalną funkcję
Modifier.animateItemPlacement()
. Możesz go zastosować do elementów, aby osiągnąć automatyczną zmianę pozycji lub zmianę kolejności animacji. (I4b62d, b/257034719) - Zmień wersję
GridCells.FixedSize
na stabilną. FunkcjaFixedSize
określa poleLazyGrid
, w którym każda komórka ma dokładnie ten rozmiar na osi poprzecznej. Pozostała część miejsca jest rozmieszczona na osi poprzecznej. (I8542f) - Wprowadzono zakres odbiorcy
PagerScope
dla pagera oraz funkcję narzędziową do obliczania danego przesunięcia strony. (If2577). - Przedstaw
snapPositionalThreshold
podczas tworzenia umiejętności szybkiego przesuwania. Użyj tego parametru, aby określić próg pozycji dla krótkiego przyciągania w Pager. (If8f7f). - Tekst
SnapLayoutInfoProvider.calculateSnappingOffsetBounds
został zamieniony nacalculateSnappingOffset
. W tej nowej metodzie żądamy po prostu 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 kontaHorizontal/VerticalPager
. Należy go podać podczas tworzenia stanu. ZaktualizowanoPagerState
irememberPagerState
, by zaakceptowaćpageCount
. (Ieb52d, b/266965072) - Usuń
pageCount
z kontaHorizontal/VerticalPager
. Należy go podać podczas tworzenia stanu. ZaktualizowanoPagerState
irememberPagerState
, by zaakceptowaćpageCount
. (Ifa3cb, b/266965072) - Przedstaw
shortSnapVelocityThreshold
w filmieSnapFlingBehavior
użytkownika Pager. (I7379e, b/275579012) - Dodaje
FlowRowScope
iFlowColumnScope
. (I54fe2)
Poprawki błędów
- Wywołania sprawdzające semantykę w przypadku tekstu, gdy ograniczenia powodują, że
minWidth
iminHeight
nie ulegają 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-alpha03
i androidx.compose.foundation:foundation-layout:1.5.0-alpha03
zostały udostępnione. Wersja 1.5.0-alfa03 zawiera te zatwierdzenia.
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 NewTextRendering1_5 = false
, aby potwierdzić różnicę w działaniu. Włączenie tej opcji wymusi zmianę kompozycji. Wszelkie różnice w działaniu zgłoś jako błędy.
Flaga debugowania zostanie usunięta przed udostępnieniem wersji beta01 w wersji 1.5.(Iada23, b/246960758).
Zmiany interfejsu API
- Ustaw tekst
FlowColumn/FlowRow
w tekście. (Idab37).
Wersja 1.5.0-alpha02
5 kwietnia 2023 r.
androidx.compose.foundation:foundation:1.5.0-alpha02
i androidx.compose.foundation:foundation-layout:1.5.0-alpha02
zostały udostępnione. Wersja 1.5.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano obsługę komórek o stałym rozmiarze w tabeli
LazyGrid
i możliwość ich rozmieszczenia na osi krzyżowej. (I83ed9, b/235121277, b/267942510) - Dodano obsługę pasów o stałym rozmiarze w projekcie
LazyStaggeredGrid
i ich układania w poprzek osi. (I7d519) - Elementy
UrlAnnotation
w aplikacjiAnnotatedString
można teraz otwierać przy użyciu usług ułatwień dostępu takich jakTalkBack
. (If4d82, b/253292081) - Dodano działanie semantyczne
InsertTextAtCursor
w polach 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). - Dodano obsługę odstępów lub układu między osiami za pomocą funkcji
verticalArrangement
wFlowRow
ihorizontalArrangement
w narzędziuFlowColumn
. Usuwamy również kategorieverticalAlignment
ihorizontalAlignment
najwyższego poziomu w tabeliFlowRow/FlowColumn
. Zamiast nich deweloperzy mogą używać interfejsuModifier.align
. Pozwala to uniknąć nieporozumień między konwencjami nazewnictwa atrybutówverticalAlignment
iverticalArrangement
. (I87b60, b/268365538)
Wersja 1.5.0-alpha01
22 marca 2023 r.
androidx.compose.foundation:foundation:1.5.0-alpha01
i androidx.compose.foundation:foundation-layout:1.5.0-alpha01
zostały udostępnione. Wersja 1.5.0-alfa01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Tekst i
BasicText
zostały zmodyfikowane tak, aby korzystać z nowego systemu modyfikatorów. W wielu przypadkach prowadzi to do znacznej poprawy wydajności. Żadne zmiany nie powinny być widoczne. (If1d17, b/246961435) - Dodano działanie semantyczne
PerformImeAction
, które wywołuje działanie IME w węzłach edytora tekstu. (Ic606f, b/269633506)
Poprawki błędów
- Zaktualizowano elementy wewnętrzne aplikacji
Modifier.hoverable
. Modyfikatorhoverable
jest widoczny w inspektorze tylko wtedy, gdy jest włączony. (I82103)
Wersja 1.4
Wersja 1.4.3
3 maja 2023 r.
androidx.compose.foundation:foundation:1.4.3
i androidx.compose.foundation:foundation-layout:1.4.3
zostały opublikowane bez zmian (tylko w ramach aktualizacji wersji).
Wersja 1.4.2
19 kwietnia 2023 r.
androidx.compose.foundation:foundation:1.4.2
i androidx.compose.foundation:foundation-layout:1.4.2
zostały udostępnione. Wersja 1.4.2 zawiera te zatwierdzenia.
Wersja 1.4.1
5 kwietnia 2023 r.
androidx.compose.foundation:foundation:1.4.1
i androidx.compose.foundation:foundation-layout:1.4.1
zostały udostępnione. Wersja 1.4.1 zawiera te zatwierdzenia.
Wersja 1.4.0
22 marca 2023 r.
androidx.compose.foundation:foundation:1.4.0
i androidx.compose.foundation:foundation-layout:1.4.0
zostały udostępnione. Wersja 1.4.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 1.3.0
- Dodano integrację kompatybilną z emotikonami w funkcjach
Text
iTextField
, a także do akapitu niższego poziomu. Jest ona domyślnie włączona po skonfigurowaniu rozszerzenia emotikonów. - Pole
EmojiCompat
można skonfigurować w konkretnym tekście za pomocą poleceniaPlatformParagraphStyle
. - Dodano obsługę pełnych rozpiętości linii do modelu
LazyStaggeredGrid
(I28252) - Dodaję eksperymentalne
onHover
do aplikacjiClickableText
(I6938f) - Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji
runComposeUiTest
icreate*ComposeRule
, które akceptują parametryCoroutineContext
. Kontekst zostanie użyty w kompozycji testowej i wszelkich wywołaniachLaunchedEffect
irememberCoroutineScope()
w kompozycji. (I10614, b/265177763) - Komponenty
FlowRow
iFlowColumn
są teraz dostępne w formie@ExperimentalFoundationApi
. Umożliwiają to bardziej elastyczny układ oparty na wierszach i kolumnach komponentów, które przechodzą do nowej linii, gdy na osi głównej jest za mało miejsca. (I3a7b2) Modifier.basicMarquee()
to funkcja eksperymentalna w przypadku 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-rc01
i androidx.compose.foundation:foundation-layout:1.4.0-rc01
zostały udostępnione. Wersja 1.4.0-rc01 zawiera te zatwierdzenia.
Zmiany interfejsu 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ę odwrotnego układu do
LazyStaggeredGrid
. (I3ef4a).
Poprawki błędów
- Działanie semantyczne typu
SetText
w narzędziuBasicTextField
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
,performTextReplacement
iperformTextSelection
używają terazSemanticsActions
. (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 interfejsu API
- Dodano nowe wywołanie zwrotne
Modifier.Node.onReset()
, które pozwala zresetować część stanu lokalnego, co pozwala prawidłowo obsługiwać zgłoszenie w przypadku ponownego użycia obiektuLayout
(np. jako elementuLazyColumn
). NaprawionoFocusTargetModifierNode
, aby prawidłowo resetować stan skupienia. (I65495, b/265201972) - Dodaliśmy parametr
BlendMode
do metodDrawScope.drawText
,Paragraph.paint
iMultiParagraph.paint
, aby umożliwić obsługę różnych algorytmów mieszania podczas rysowania tekstu w Canvas. (I57508) - Usunięto interfejs API
modifierElementOf()
. Zamiast tego skorzystaj z rozszerzonego połączenia bezpośrednio z usługiModifierNodeElement
. (IE6d21)
Poprawki błędów
- Dostosowywanie uchwytów wyboru nie może już wybierać części znaku. (Idedd1).
- Naprawianie awarii po naciśnięciu Ctrl + Backspace przy pustym polu
TextField
(I0427f, b/244185537)
Wersja 1.4.0-beta01
8 lutego 2023 r.
androidx.compose.foundation:foundation:1.4.0-beta01
i androidx.compose.foundation:foundation-layout:1.4.0-beta01
zostały udostępnione. Wersja 1.4.0-beta01 zawiera te zatwierdzenia.
Nowe funkcje
- Od wersji 1.3 dodaliśmy integrację zgodną z emotikonami w
Text
iTextField
oraz w akapicie niższego poziomu. Jest ona domyślnie włączona po skonfigurowaniu rozszerzenia emotikonów. - Pole
EmojiCompat
można skonfigurować w konkretnym tekście za pomocą poleceniaPlatformParagraphStyle
.
Zmiany interfejsu API
- Dodaliśmy wspólną implementację interfejsu API
PinnableContainer
używanego we wszystkich komponentachLazyLayouts
w celu zachowywania elementów, które wychodzą z kompozycji, ale muszą być aktywne. (If45a4). - Nazwa usługi
PinnableContainer.PinnedHandle.unpin()
została zmieniona narelease()
(I4667a)
Treści tłumaczone przez użytkowników zewnętrznych
- Dodano właściwość
mainAxisItemSpacing
do tagówLazyListLayoutInfo
,LazyGridLayoutInfo
iLazyStaggeredGridItemInfo
(I52fad)
Wersja 1.4.0-alpha05
25 stycznia 2023 r.
androidx.compose.foundation:foundation:1.4.0-alpha05
i androidx.compose.foundation:foundation-layout:1.4.0-alpha05
zostały udostępnione. Wersja 1.4.0-alfa05 zawiera te zatwierdzenia.
Nowe funkcje
- Dodano obsługę pełnych rozpiętości linii do linii
LazyStaggeredGrid
(I28252) - Dodaję eksperymentalne
onHover
do aplikacjiClickableText
(I6938f) - Wprowadziliśmy nowe eksperymentalne przeciążenia funkcji
runComposeUiTest
icreate*ComposeRule
, które akceptują parametryCoroutineContext
. Kontekst zostanie użyty w kompozycji testowej i wszelkich wywołaniachLaunchedEffect
irememberCoroutineScope()
w kompozycji. (I10614, b/265177763)
Zmiany interfejsu API
- Scala interfejsy API przed i po
OverscrollEffect
w połączone interfejsy „decorator” funkcjiapplyToScroll
iapplyToFling
. Zapoznaj się ze zaktualizowanymi przykładami w dokumentacji, aby dowiedzieć się, jak wdrożyć efekt dalekiego przewijania w nowym kształcie interfejsu API. (I8a9c4, b/255554340) - Więcej typów i wartości null funkcji wbudowanych/wycofanych (I24f91)
- Interfejsy API
LineBreak
iHyphens
w środowiskuTextStyle
zostały przekształcone w interfejsy API stabilne. (Ic1e1d).
Poprawki błędów
- Kursor w polach tekstowych będzie teraz migać, nawet jeśli animacje będą 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
notifyFocusedRect
wTextInputSession
iTextInputService
nie są ponownie wycofane. (I23a04, b/262648050)
Wersja 1.4.0-alpha04
11 stycznia 2023 r.
androidx.compose.foundation:foundation:1.4.0-alpha04
i androidx.compose.foundation:foundation-layout:1.4.0-alpha04
zostały udostępnione. Wersja 1.4.0-alfa04 zawiera te zatwierdzenia.
Nowe funkcje
- Komponenty
FlowRow
iFlowColumn
są teraz dostępne w formie@ExperimentalFoundationApi
. Umożliwiają to bardziej elastyczny układ oparty na wierszach i kolumnach komponentów, które przechodzą do nowej linii, gdy na osi głównej jest za mało miejsca. (I3a7b2) Modifier.basicMarquee()
to funkcja eksperymentalna w przypadku wyświetlania treści z efektem przewijania. (I2df44, b/139321650)
Zmiany interfejsu API
FocusRequesterModifier
FocusRequesterNode
- Konstruktor
AndroidFont
z atrybutemvariationSettings
jest teraz stabilnym interfejsem API i można go używać do tworzenia nowych typów deskryptorów czcionek. (I5adcc, b/261565807) - Wprowadzono interfejs API
PinnableContainer
, który jest rozpowszechniany przez leniwe listy za pomocą lokalnej kompozycji, co umożliwia przypięcie bieżącego elementu. Oznacza to, że taki element nie zostanie wyrzucony, gdy przewinie się poza widok. Na przykład za pomocą tego mechanizmu funkcjaModifier.focusable()
przypnie aktualnie zaznaczony element. (Ib8881, b/259274257, b/195049010) - Przeredagowaliśmy sposób, w jaki elementy przewijane reagują na funkcje
bringIntoViewRequesters
i elementy do zaznaczenia, aby lepiej modelować złożoność tych operacji i obsługiwać więcej przypadków skrajnych. (I2e5fe, b/241591211, b/192043120, b/237190748, b/230756508, b/239451114) - Większa dopuszczalność zwracanych wartości null wycofanych funkcji ukrytych (Ibf7b0)
- W polu
TextStyle
dodano eksperymentalną funkcjęTextMotion
, która pozwala określić tekst jakoStatic(default)
lub Animowany. Użyj wartościTextMotion.Animated
, jeśli tekst ma być skalowany, tłumaczony lub obrócony za pomocą animacji. (I24dd7) - Dodaj
TextFieldFocusModifier
, aby rozwiązać problem z nawigacją w przypadku platformy Android (I00303) - Zastąpiono argument
maxSize: IntSize
w funkcjidrawText
elementemsize: Size
, który będzie wbudowany z innymi funkcjamiDrawScope
.size
ma domyślną wartośćSize.Unspecified
, co nie powinno zmieniać poprzedniego działania domyślnego. (Icd27d).
Poprawki błędów
- Poprawki fizyki aparatu w
SnapFlingBehaviour
pozwalają uzyskać bardziej naturalny wygląd.
Znany problem
- Podczas aktualizowania z
androidx.compose.foundation:1.4.0-alpha03
doandroidx.compose.foundation:1.4.0-alpha04
może wystąpić błądjava.lang.NoSuchFieldError
. Tutaj został zgłoszony problem. Poprawka została przesłana i będzie dostępna w następnej aktualizacji Utwórz. Aby obejść ten problem, zaktualizuj bibliotekiandroidx.compose.material
iandroidx.compose.material3
do najnowszej wersji(1.1.0-alfa04) lub przywróć pakietandroidx.compose.foundation
do wersji 1.4.0-alfa03.
Wersja 1.4.0-alpha03
7 grudnia 2022 r.
androidx.compose.foundation:foundation:1.4.0-alpha03
i androidx.compose.foundation:foundation-layout:1.4.0-alpha03
zostały udostępnione. Wersja 1.4.0-alfa03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- W testach interfejsu użytkownika z użyciem reguły tworzenia kontynuacje wznawiane w ramach wywołań zwrotnych
withFrameNanos
będą wysyłane dopiero po zakończeniu wykonywania wszystkich wywołań zwrotnych klatek. Odpowiada to działaniu funkcji tworzenia wiadomości przy normalnym działaniu. Testy, które bazują na starym sposobie działania, mogą się jednak nie udać. Powinno to mieć wpływ tylko na kod, który bezpośrednio wywołujewithFrameNanos
lubwithFrameMillis
, i ma logikę poza wywołaniem zwrotnym przekazywaną do tych funkcji, które być może trzeba przenieść w obrębie wywołań zwrotnych. Przykłady zmian znajdziesz w tej liście zmian. - Do konstruktora i funkcji fabrycznej
TestMonotonicFrameClock
dodano opcjonalny parametronPerformTraversals: (Long) -> Unit
w celu uruchamiania kodu po wywołaniach zwrotnychwithFrameNanos
, ale przed wznowieniem działania wywołującego współrzędne. (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 interfejsie API 29. (Ida4ab). - Przedstaw
HorizontalPager
iVerticalPager
– sposób prezentowania elementów kompozycyjnych w sposób typu pager. Wprowadziliśmy funkcjęPagerState
do kontrolowania pagerów oraz zapytań dotyczących ich bieżącego stanu. WprowadziliśmyPageSize
, czyli sposób kontrolowania rozmiaru strony pagera. Pozwala on utworzyć karuzelę, taką jak pagery. WprowadziliśmyPagerSnapDistance
, czyli sposób kontrolowania działania przyciągania w zachowaniu przesuwania w Pager. (I01120). - Wprowadziliśmy przeciążenie w obszarze
SnapFlingBehavior.performFling
, aby pomóc zrozumieć, gdzie się rozwinie. (I569f6) - Użytkownik
OverscrollEffect#isEnabled
został usunięty. Zamiast zapamiętywać i ustawiać tę flagę, po prostu nie wysyłaj zdarzeń do efektu przewinięcia w sytuacjach, gdy nie chcesz wyświetlać nadmiernego przewijania (np. gdy oba parametryScrollableState#canScrollForward/backward
zwracają wartość fałsz). (I1a4b0, b/255554340, b/255557085) - Dodano zmienne
ScrollableState#canScrollForward
iScrollableState#canScrollBackward
, aby sprawdzić, czy elementScrollableState
może przewijać się w dowolnym kierunku (niezależnie od tego, czy mieści się on w zakresie minimalnego czy maksymalnego zakresu). Ta wartość domyślna zapewnia zgodność wsteczną z dotychczasowymi implementacjamiScrollableState
. Konsumenci mogą użyć tej opcji, aby poinformować użytkownika, że wciąż mogą przewijać treści. Można to też wykorzystać, aby uniknąć wysyłania wartości delta do funkcjiScrollableStates
, w których nie ma miejsca na przewijanie w danym kierunku. Pozwala to ograniczyć niepotrzebne zadania. (Idf1a0, b/255557085) - Dodano interfejs API modyfikatora do wysyłania zapytań o informacje o przewijaniu elementów nadrzędnych. (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 elementuScrollable 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 plików
snapStepSize
, aby były spójne z innymi metodami w narzędziuSnapLayoutInfoProvider
. (Ife67c). - Dodano
EmojiCompat
do listyCompose
(Ibf6f9, b/139326806) - Zmieniono nazwę
consumedWindowInsets()
naconsumeWindowInsets()
, awithConsumedWindowInsets()
naonConsumedWindowInsetsChanged()
i upubliczniono modyfikatory. (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-alpha02
i androidx.compose.foundation:foundation-layout:1.4.0-alpha02
zostały udostępnione. Wersja 1.4.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
awaitFirstDown
iwaitForUpOrCancellation
akceptują terazPointerEventPass
, co zapewnia większą elastyczność. (I7579a, b/212091796)- Przywracanie interfejsu API
beyondBoundCount
z interfejsów API Lazy* (I12197) - Wprowadzono w interfejsach API Lazy parametr tworzenia elementów i umieszczania ich poza widocznym obszarem (I69e89, b/172029355)
- Do komponentów
BasicText
iBasicTextField
dodaliśmy parametrminLines
. Pozwala ustawić minimalną wysokość tych elementów kompozycyjnych w postaci liczba 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-alfa01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano nową metodę (
awaitEachGesture()
) do wykrywania gestów. Jej działanie jest podobne doforEachGesture()
, ale pętla gestów działa w całości w obrębieAwaitPointerEventScope
, więc zdarzenia nie mogą zostać utracone między iteracjami. - Funkcja
forEachGesture()
została wycofana i zastąpionaawaitEachGesture()
, ponieważ umożliwia utratę zdarzeń pomiędzy gestami. (Iffc3f, b/251260206) - Dodano
WindowInsets.imeAnimationSourc
e iWindowInsets.imeAnimationTarget
, aby określić postęp animacji i określić położenie edytora po zakończeniu animacji. (I356f1, b/217770337)
Wersja 1.3
Wersja 1.3.1
9 listopada 2022 r.
androidx.compose.foundation:foundation:1.3.1
i androidx.compose.foundation:foundation-layout:1.3.1
zostały udostępnione. Wersja 1.3.1 zawiera te zatwierdzenia.
Poprawki błędów
- Rozwiąż problem z wydajnością w:
BeyondBoundsLayout
(aosp/2255266) ContentInViewModifier
nie będzie odczytywać współrzędnych układu, chyba że 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 zatwierdzenia.
Ważne zmiany wprowadzone od wersji 1.2.0
- Wprowadziliśmy eksperymentalne wersje
LazyVerticalStaggeredGrid
iLazyHorizontalStaggeredGrid
. SnapFlingBehavior
,rememberSnapFlingBehavior
i inne powiązane interfejsy API zostały dodane jako eksperymentalne.- Urządzenia
Modifier.clickable
,Modifier.toggleable
iModifier.selectable
pokazują teraz zmarszczki po kliknięciu za pomocą klawiatury lub pada kierunkowego na pilocie.
Wersja 1.3.0-rc01
5 października 2022 r.
androidx.compose.foundation:foundation:1.3.0-rc01
i androidx.compose.foundation:foundation-layout:1.3.0-rc01
zostały udostępnione. Wersja 1.3.0-rc01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Wprowadzono
lowVelocityAnimationSpec
używane w etapie podejmowania, gdy prędkość przesuwania jest niewystarczająca do opadnięcia. (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-beta03
i androidx.compose.foundation:foundation-layout:1.3.0-beta03
zostały udostępnione. Wersja 1.3.0-beta03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodaj opcje pozwalające dostosować podział wierszy w tekście. (I86907).
BringIntoViewResponder
może teraz sprawdzać najbardziej aktualne granice żądania podczas jego przetwarzania. (If86a5, b/241591211)- Wprowadziliśmy obsługę odstępów między elementami w eksperymentalnej funkcji
Staggered Grid
(I10b82). - Wprowadź dopełnienie treści do eksperymentalnej funkcji
Staggered Grid
(I342ea) - Zmieniono argument
size:IntSize
zconstraints: Constraints
w metodzieTextMeasurer.measure
, aby obsługiwać ograniczenia minimalnej szerokości. (I37530, b/242707525) - Dodano
Modifier.withConsumedWindowInsets()
, aby wykorzystaćWindowInsets
do wykorzystania pozawindowInsetsPadding
. - Dodano
MutableWindowInsets
, aby umożliwić łatwą zmianę elementuWindowInsets
bez konieczności zmiany kompozycji. (I7fd28, b/237019262, b/243119659)
Wersja 1.3.0-beta02
7 września 2022 roku
androidx.compose.foundation:foundation:1.3.0-beta02
i androidx.compose.foundation:foundation-layout:1.3.0-beta02
zostały udostępnione. Wersja 1.3.0-beta02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Wstępna wersja eksperymentalnej
StaggeredGrid
(Ia48be) - Nazwa
FocusDirection.In
iFocusDirection.Out
została zmieniona naFocusDirection.Enter
iFocusDirection.Exit
(Ia4262, b/183746982) - Wprowadziliśmy przeciążenie funkcji
rememberSnapFlingBehavior
, które umożliwia szybkie włączenie przyciągania wLazyLists
. (Ifb48a). - Zastąpiliśmy fabrykę urządzenia
snapFlingBehavior
betonową klasąSnapFlingBehavior
. Ograniczono zakres metodSnapLayoutInfoProvider
do gęstości, aby ułatwić użytkownikom interfejsu API konwersje Dp<->Px. (I54a11) - Zaktualizuj
LazyLayoutMeasureScope.measure
, aby zwracał listę elementów do umieszczenia, podkreślając pożądaną niezmienność zwróconej wartości. (I48b7c) - Wprowadzenie funkcji
SnapLayoutInfoProvider
, w której potrzebaLazyListState
, aby utworzyć instancjęSnapLayoutInfoProvider
, która może zostać użyta do włączenia przerwyFlingBehavior
wLazyLists
. (I2dd10)
Poprawki błędów
- Refaktoruje
AwaitPointerEventScope#awaitLongPressOrCancellation
, aby dopasować inne funkcje oczekiwania (I646e6)
Wersja 1.3.0-beta01
24 sierpnia 2022 r.
androidx.compose.foundation:foundation:1.3.0-beta01
i androidx.compose.foundation:foundation-layout:1.3.0-beta01
zostały udostępnione. Wersja 1.3.0-beta01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Z elementu
OverscrollEffect
usunięto elementpointerPosition
– efekty, które zależą od pozycji wskaźnika, mogą używać parametruModifier.pointerInput { }
w elemencieeffectModifier
, 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 na leniwe listy. (I3ecdf). - Wprowadziliśmy
SnapFlingBehavior
– funkcję przesuwania, która umożliwia przyciąganie do list. Podaj instancjęSnapLayoutInfoProvider
z informacjami o układzie przyciągania. (IE754C)
Wersja 1.3.0-alfa03
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-alfa03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Czcionki zasobów obsługują teraz ustawianie ustawień wariantów czcionek (API w wersji 26 lub nowszej). (I900dd, b/143703328)
- Obsługa zmiennych czcionek w
DeviceFontFamilyNameFont
(Ic1279, b/143703328) - Usunięto adnotacje eksperymentalne z
PlatformTextStyle
iLineHeightStyle
. (I64bef). - Pola tekstowe będą teraz zgłaszać bardziej szczegółowe wyjątki, gdy
OffsetMapping
podany przezVisualTransformation
zwraca nieprawidłowe indeksy. (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 doLayoutInfo.semanticsId
. (IAC808, b/203559524) checkScrollableContainerConstraints()
nie jest już eksperymentalną funkcją. (I2C290)Modifier.clipScrollableContainer()
nie jest już eksperymentalną funkcją. (Ia2b44).- Wycofaj
TextInputService.show|hideSoftwareKeyboard
. Użyj zamiast niegoSoftwareKeyboardController
w kodzie aplikacji iTextInputSession
w kodzie zarządzania IME. (I14e4c, b/183448615)
Wersja 1.3.0-alfa02
27 lipca 2022 roku
androidx.compose.foundation:foundation:1.3.0-alpha02
i androidx.compose.foundation:foundation-layout:1.3.0-alpha02
zostały udostępnione. Wersja 1.3.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- W
DrawScope
dodaliśmy funkcję rozszerzeniadrawText
, która umożliwia rysowanie tekstu o różnych stylach w elementach kompozycyjnych i modyfikatorach działających w elemencieDrawScope
, takim jakCanvas
idrawBehind
. (I16a62, b/190787898)
Poprawki błędów
- Klawiatura ekranowa jest teraz ukryta, gdy pole tekstowe jest wyłączone, gdy jest zaznaczone. (I6e3e4, b/237308379)
- Przy dodawaniu zdarzeń
InputEventChange
do trackera prędkości będziemy teraz brać pod uwagę delta, a nie pozycje, co zagwarantuje, że we wszystkich przypadkach prędkość zostanie prawidłowo obliczona (Icea9d, b/216582726, b/223440806, b/227709803). - Gdy element przewijany ma zaznaczony element podrzędny, będzie się on prawidłowo przewijać, nawet gdy rozmiar elementu zamówienia zostanie zmniejszony, nawet gdy rozmiar jest animowany. (I80867, b/230756508, b/220119990)
- Rozwiązaliśmy problem, który powodował, że pole
TextField
zostało wyczyszczone i uzupełnione, gdy zaznaczenie jest aktywne. (I1235b, b/208655565, b/214253689)
Wersja 1.3.0-alpha01
29 czerwca 2022 r.
androidx.compose.foundation:foundation:1.3.0-alpha01
i androidx.compose.foundation:foundation-layout:1.3.0-alpha01
zostały udostępnione. 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ówTalkBack
wAnnotatedString
. (I1c754, b/231495122)
Poprawki błędów
BasicTextField
cursorBrush
może teraz być animowany bez ponownego uruchamiania 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.0
i androidx.compose.foundation:foundation-layout:1.2.0
zostały udostępnione. Wersja 1.2.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.1.0
LazyVerticalGrid
iLazyHorizontalGrid
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.
- Leniwe listy i siatki 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
. To interfejs API, którego używamy wewnętrznie do obsługi list i siatek Lazy. - Interfejs API
OverscrollEffect
został wprowadzony jako eksperymentalny. Możesz zdefiniować niestandardowe efekty przewijania, a także dodać standardową platformę do niestandardowych kontenerów z możliwością przewijania. - Wprowadziliśmy interfejsy API interoperacyjności przewijania zagnieżdżonego, aby umożliwić interoperacyjność między widokami i działaniami użytkownika podczas tworzenia przewijania.
- Do wszystkich przewijanych kontenerów dodaliśmy przewijanie myszą i trackpadem.
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-rc02
i androidx.compose.foundation:foundation-layout:1.2.0-rc02
zostały udostępnione. 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 interfejsu API
- Wprowadziliśmy eksperymentalną funkcję
OverscrollEffect
, która umożliwia stosowanie niestandardowych efektów dalekiego przewijania oraz przeciążeniaModifier.scrollable
, które je akceptują. - Eksperymentalna funkcja
LocalOverScrollConfiguration
została przeniesiona zfoundation.gesture
do pakietu podstawowego i ma nazwęLocalOverscrollConfiguration
(If19fb, b/204650733) - Interfejsy w bibliotekach tworzenia wiadomości są teraz tworzone przy użyciu domyślnych metod interfejsu jdk8 (I5bcf1)
- Wprowadzono eksperymentalny interfejs API
checkScrollableContainerConstraints()
, który pozwala sprawdzić, czy nie zagnieżdżamy kontenerów przewijanych. Możesz z niego korzystać podczas tworzenia własnych przewijanych układów z możliwością przewijania w narzędziuLazyLayout
. (Id6fab, b/233352497) - Usunięto wycofany atrybut
LazyVerticalGrid
z pakietuandroidx.compose.foundation.lazy
. Nowy stabilny interfejs API znajduje się w regionieandroidx.compose.foundation.lazy.grid
(I73c76, b/225192009)
Wersja 1.2.0-beta03
1 czerwca 2022 r.
androidx.compose.foundation:foundation:1.2.0-beta03
i androidx.compose.foundation:foundation-layout:1.2.0-beta03
zostały udostępnione. Wersja 1.2.0-beta03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano nowe eksperymentalne
IntervalList
iMutableIntervalList
. Umożliwia on zapisanie pewnej listy wartości w kilku przedziałach. Przydaje się to, gdy chcesz zdefiniować własny DSL podobny do używanego wLazyColumn
, w którym elementy listy można definiować za pomocą wielu wywołań elementów. (I2d05e, b/228580728)
Poprawki błędów
- Doprecyzowaliśmy dokumentację dotyczącą
WindowInsets.ime
, informując o tym, że wstawieniaime
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 usuwania do przodu, gdy kursor znajduje się na końcu pola tekstowego, nie będzie już powodować błędów.
- Argumenty
DeleteSurroundingTextCommand
iDeleteSurroundingTextInCodePointsCommand
wymagają teraz, aby argumenty konstruktora były nieujemne. (Ica8e6, b/199919707)
Wersja 1.2.0-beta02
18 maja 2022 r.
androidx.compose.foundation:foundation:1.2.0-beta02
i androidx.compose.foundation:foundation-layout:1.2.0-beta02
zostały udostępnione. Wersja 1.2.0-beta02 zawiera te zatwierdzenia.
- Rozdzielczość czcionki do pobrania, która nie zmienia rozmiaru układu w przypadku tekstu lub tekstu
TextField
wcześniej, nie powoduje ponownego renderowania czcionki, co powoduje, że czcionka jest nieaktualna. Ten błąd sprawia, że układ tekstu zawsze wywołuje 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 zatwierdzenia.
Nowe funkcje
- Pierwsza wersja beta 1.2.
Zmiany interfejsu API
- Dodano eksperymentalne
BeyondBoundsInterval
, których można używać dzięki niestandardowym implementacjamLazyList
, gdy elementy układu wykraczają poza widoczne granice (Ifabfb, b/184670295) - Nazwa
LineHeightBehavior
została zmieniona naLineHeightStyle
- Nazwa
LineVerticalAlignment
została zmieniona naLineHeightStyle.Alignment
- Zmienia nazwę
LineHeightTrim
naLineHeightStyle.Trim
- Domyślne wartości konstruktora z
LineHeightStyle
zostały usunięte (I582bf, b/181155707) - Dodaliśmy wartości domyślne opcjonalnych użytkowników interfejsu
LazyLayoutItemProvider
. (IBa8a0). - W interfejsie API
LazyLayoutItemProvider
zamiast fabryki zwracającej przez indeks funkcję kompozycyjną lambda mamy teraz prostszą funkcję kompozycyjną przyjmującą indeks. (Id2196). - Nazwa LazyLayoutItemsProvider została zmieniona na LazyLayoutItemProvider (I0638c)
- Nazwa
LazyLayoutItemsProvider.itemsCount
została zmieniona naitemCount
(Id409c) - W funkcjach
TextStyle
iSpanStyle
dodaliśmy Pędzel, aby umożliwić rysowanie tekstu przy użyciu koloru gradientowego. (I53869, b/187839528) trimFirstLineTop
,trimLastLineBottom
atrybutu PoleLineHeightBehavior
zostało zmienione w pojedynczą wyliczenie:LineHeightTrim
.LineHeightTrim
mają wartości 4 stanów zdefiniowane za pomocą 2 wartości logicznych:FirstLineTop
,LastLineBottom
, oba i brak (Ifc6a5, b/181155707)Dodanie atrybutu
LineHeightBehavior
do elementówTextStyle
iParagraphStyle. LineHeightBehavior
określa, czy wysokość wiersza jest stosowana u góry pierwszego i na dole ostatniego wiersza. Określa też wyrównanie wiersza w przestrzeni udostępnionej przez funkcjęTextStyle
(lineHeight
).Można na przykład uzyskać działanie podobne do tego, jakie stosuje CSS definiuje za pomocą funkcji
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
.Konfiguracje
trimFirstLineTop
,trimLastLineBottom
działają prawidłowo tylko wtedy, gdyincludeFontPadding
ma wartość fałsz. (I97332, b/181155707)Dodano eksperymentalny modyfikator
imeNestedScroll()
, aby deweloperzy mogli sterować edytorem IME przez przewijanie. (I60759)
Poprawki błędów
- Naprawiliśmy problem regresji, w którym pola tekstowe nie ukrywały klawiatury po usunięciu jej z kompozycji, gdy była ona zaznaczona. (I7a410, b/230536793, b/225541817)
- Obsługuj wielokropek, gdy wysokość jest ograniczona i nie mieści się w wszystkich wierszach 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
prostokątów, które całkowicie się nakładają, będą teraz uwzględniać tylko do żądania większego prostokąta. (I34be7, b/216790855, b/184760918) - Włączono domyślne ustawienia:
includeFontPadding
. Możesz wyłączyć funkcjęincludeFontPadding
za pomocą atrybutuTextStyle.platformTextStyle
. W najbliższej przyszłości zmienimy domyślne zachowanie, ale do tego czasu będziemy mogli lepiej zintegrować ulepszenia wysokości linii (aosp/2058653) i rozwiązać problemy z przycinaniemTextField
. (I01423, b/171394808) Modifier.bringIntoViewRequester
nie używa już adresuonGloballyPositioned
. (I630f5)
Treści tłumaczone przez użytkowników zewnętrznych
- Wartość
MouseInjectionScope.scroll(delta = someDelta)
jest teraz odwrócona na Androidzie, gdy przewinie się w pionie (jeśli wartość delta jest dodatnia, przewinie się w dół) (Ifb697, b/224992993).
Wersja 1.2.0-alpha08
20 kwietnia 2022 r.
androidx.compose.foundation:foundation:1.2.0-alpha08
i androidx.compose.foundation:foundation-layout:1.2.0-alpha08
zostały udostępnione. Wersja 1.2.0-alfa08 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Wyświetlaj wszystkie dostępne wagi czcionek systemowych w Androidzie podczas korzystania z funkcji
FontFamily.SansSerif
. Spowoduje to wewnętrznie użycie zastępczych nazw czcionek takich jak bezszeryfowa-średnia w interfejsie API 21–28. Jest to zmiana działania, ponieważ w interfejsach API w wersjach 21–28 obsługiwane były tylko wagi 400 i 700. (I380fe, b/156048036, b/226441992) - Akapit i wiele akapitów akceptują teraz parametr ograniczeń. Przejście
Constraints.maxHeight
jest obecnie niemożliwe, ale pozwoli i robić w przyszłości jakieś obliczenia, np. orbitrek na podstawie wysokości. (I6afee, b/168720622) SubcomposeSlotReusePolicy.getSlotsToRetain()
akceptuje teraz niestandardową klasę podobną do MutableSet, która nie pozwala na dodawanie nowych elementów. (ICD314).- Częściowe wykorzystanie (pozycja w dół LUB w pozycji) zostało wycofane w funkcji
PointerInputChange
. Aby w pełni zastosować zmianę, możesz użyć poleceniaconsume()
. ParametrisConsumed
pozwala określić, czy ktoś inny wykorzystał już tę zmianę. - Teraz
PointerInputChange::copy()
zawsze tworzy płytkie kopie. Oznacza to, że po wykorzystaniu jednej z nich kopiePointerInputChange
zostaną zużyte. Jeśli chcesz utworzyć nieograniczonyPointerInputChange
, użyj konstruktora. (Ie6be4, b/225669674) - Wprowadzamy nowy eksperymentalny interfejs API
LazyLayout
. Pozwoli Ci to tworzyć własne komponenty, np.LazyColumn
zLazyVerticalGrid
. Pamiętaj, że interfejs API jest w fazie wstępnej i może zostać zmieniony w kolejnych wersjach. (Iba2bc, b/166591700) - Funkcja
AndroidFont
przyjmuje teraztypefaceLoader
jako parametr konstruktora. (I2C971) - Element towarzyszący
WindowInsets
ujawnia teraz widoczność (niezależnie od tego, czy znajdują się na ekranie, niezależnie od tego, czy przecinają się z oknem) i jaki byłby rozmiar, jeśli są dostępne na urządzeniu, ale obecnie nie są aktywne. (I65182, b/217770337)
Wersja 1.2.0-alpha07
6 kwietnia 2022 roku
androidx.compose.foundation:foundation:1.2.0-alpha07
i androidx.compose.foundation:foundation-layout:1.2.0-alpha07
zostały udostępnione. Wersja 1.2.0-alfa07 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodaliśmy interfejs API
PinnableParent
, który umożliwia elementom podrzędnym leniwych układów, aby uniemożliwić usunięcie aktualnie utworzonych elementów (Ibbdd0, b/184670295). LazyListLayoutInfo
iLazyGridLayoutInfo
mają teraz polabeforeContentPadding
iafterContentPadding
(I3b628, b/200920410)- Dodano separator dziesiętny w edytorze IME jako alternatywę dla
Keyboard.Number
(KeyboardType.Decimal
). (Iec4c8, b/209835363) - Dodaj nowy deskryptor czcionki Font(DeviceFontFamilyName) do opcjonalnie sprawdzanie czcionek zainstalowanych przez system w łańcuchach zastępczych czcionek. (I30468, b/219754572)
PointerEventType.Scroll
iPointerEvent.scrollDelta
to obecnie stabilne interfejsy API (I574c5, b/225669674)- Dodaną tymczasową konfigurację zgodności
includeFontPadding
wTextStyle/ParagraphStyle. includeFontPadding
można zmienić w narzędziuTextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))
. Jest to tymczasowa opcja konfiguracji umożliwiająca włączenie migracji, która zostanie usunięta. (If47be, b/171394808) - Zaktualizowano
FontFamily.Resolver
, aby zintegrować system z ustawieniem ułatwień dostępu pogrubionego tekstu w całym systemie (I6c1e7) - Właściwość rozszerzenia
consumeWindowInsets
ComposeView
umożliwia deweloperom wyłączenie używania elementów Androida WindowInset. Umożliwia to osobneComposeViews
w hierarchii do każdego zastosowaniaWindowInsets
bez zakłócania siebie nawzajem. (I0ef08, b/220943142)
Wersja 1.2.0-alpha06
23 marca 2022 r.
androidx.compose.foundation:foundation:1.2.0-alpha06
i androidx.compose.foundation:foundation-layout:1.2.0-alpha06
zostały udostępnione. Wersja 1.2.0-alfa06 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano działanie semantyczne
RequestFocus
, aby wymagać zaznaczenia na celu, który można zaznaczyć. (I17b71) - Usługa
FocusOrder
została połączona z usługąFocusProperties
, afocusProperties()
ma teraz wszystkie możliwości usługifocusOrder()
. UsługiFocusOrder
ifocusOrder()
zostały wycofane. PolefocusOrder()
, które akceptuje wartośćfocusRequester
, należy zastąpić modyfikatoremfocusRequester()
w połączeniu z zasadąfocusProperties()
. Dzięki temu modyfikatory lepiej odseparują potencjalne problemy. (I601b7) - Dodano
WindowInsets.asPaddingValues(Density)
, aby umożliwić programistom wykonywanie konwersji bez konieczności tworzenia kompozycji. (I94c35) - Zaktualizowaliśmy analizę analizy obiektów rysowanych wektorowo, aby zapewnić obsługę automatycznego odbicia lustrzanego w celu odwrócenia zawartości obiektu
VectorPainter
w przypadku bieżącego układu. kierunek: od prawej do lewej. (I79cd9, b/185760237)
Poprawki błędów
- Modyfikatory przewijania (
Modifier.verticalScroll()
,Modifier.horizontalScroll()
iModifier.scrollable()
) będą teraz przewijać w celu zachowania widoczności zaznaczonego elementu kompozycyjnego, jeśli rozmiar obszaru przewijania został zmieniony, a zaznaczony element kompozycyjny 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 przewijaniu 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-alfa05 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Wersje
LazyVerticalGrid
iLazyHorizontalGrid
są teraz stabilne. (I307C0) - Pole
LazyGridItemInfo.Unknown
zostało zastąpione oddzielnymi elementamiLazyGridItemInfo.UnknownRow
iLazyGridItemInfo.UnknownColumn
(I56d51) LazyVerticalGrid
/LazyHorizontalGrid
i wszystkie powiązane interfejsy API zostały przeniesione do.grid
podpakietu. Zaktualizuj importy z:androidx.compose.foundation.lazy
do:androidx.compose.foundation.lazy.grid
. (I2d446, b/219942574)- Tekst:
includeFontPadding
jest teraz domyślnie wyłączony. obsługiwane są problemy z przycinaniem wynikające z funkcjiincludeFontPadding=false
i nie powinny być przycinane w przypadku wysokich skryptów. (I31c84, b/171394808) - Interfejs pomiaru ujawnia teraz właściwośćparentData (I3313f)
- Wprowadzono eksperymentalne
Modifier.onFocusedBoundsChanged
, aby zezwolić i obserwując granice elementów, które można zaznaczyć. (I14283, b/220030968, b/190539358, b/192043120, b/216842427) - Dodano opcję LazyLevelGrid. (I61ae7, b/191238807)
- Dodano nowy interfejs API
LazyVerticalGrid
do definiowania rozmiarów osi krzyżowych (I17723) - Dodano modyfikator grupy fokusu (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, aby korzystać z współrzędnych Kotlinx w wersji 1.6.0 (I3366d)
Wersja 1.2.0-alfa04
23 lutego 2022 r.
androidx.compose.foundation:foundation:1.2.0-alpha04
i androidx.compose.foundation:foundation-layout:1.2.0-alpha04
zostały udostępnione. Wersja 1.2.0-alfa04 zawiera te zatwierdzenia.
Zmiany interfejsu API
BringIntoViewResponders
nie trzeba już robić ręcznie przekazują prośby rodzicom, którzy wypełnią formularz, natychmiast zwraca prostokąt, który ma przynosić rodzic jest tak samo widoczna. (I8E66a)- Obsługa wczytywania czcionki asynchronicznego 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
nasystemGesturesExclusion
(I19526). LazyVerticalGrid
obsługuje teraz układ odwrotny. (I6d7d7, b/215572963, b/211753558)- Dodaj metodę
WindowInsets.only()
, aby umożliwić programistom , aby uwzględnić tylko wymiary z elementów WindowInsets. (I14c94, b/217768486) Dodano
ComposableTarget
,ComposableTargetMarker
iComposableOpenTarget
, który umożliwia raportowanie w czasie kompilacji funkcja kompozycyjna jest nazywana kierowaniem na aplikację, do której nie była potrzebna stworzonych z myślą o użytkownikach.W większości przypadków adnotacje można wywnioskować na podstawie sposobu tworzenia kompilatora, więc bezpośrednie używanie tych adnotacji powinno być rzadkie . Przypadki, których nie można wywnioskować, to na przykład utworzenie za pomocą abstrakcyjnego narzędzia kompozycyjnego (takiego jak metod interfejsu), pola lub zmienne globalne, które są kompozycyjne lambda (wnioskowane zmienne i parametry lokalne), lub gdy używasz funkcji
ComposeNode
lub powiązanych funkcji kompozycyjnych.W przypadku aplikacji niestandardowych funkcje kompozycyjne wywołujące
ComposeNode
lubReusableComposeNode
muszą dodaćCompoableTarget
adnotacji dla funkcji i dowolnych kompozycyjne typy parametrów lambda. Zalecane jest jednak aby utworzyć adnotację z adnotacjąComposableTargetMarker
, a oznaczona adnotacja będzie używana zamiastComposableTarget
. Adnotacja kompozycyjna oznaczony za pomocą atrybutuComposableTargetMarker
jest odpowiednikiem funkcjiComposbleTarget
z pełną i jednoznaczną nazwą atrybutu jako parametr aplikacji. Na przykład za pomocą funkcjiComposableTargetMarker
zobacz:anroidx.compose.ui.UiComposable
. (I38f11)
Poprawki błędów
- Teraz można przekazywać ujemne przesunięcia przewijania do elementów
LazyGridState.scrollToItem()
iLazyGridState.animateScrollToItem()
. (I025c6, b/211753558) - Obsługa asynchronicznego wczytywania czcionki w polu TextField. (Icc4bf, b/214587005)
Wersja 1.2.0-alfa03
9 lutego 2022 r.
androidx.compose.foundation:foundation:1.2.0-alpha03
i androidx.compose.foundation:foundation-layout:1.2.0-alpha03
zostały udostępnione. Wersja 1.2.0-alfa03 zawiera te zatwierdzenia.
Zmiany interfejsu API
notifyFocusedRect
metod w:TextInputSession
i FunkcjeTextInputService
zostały wycofane i nie będą wywoływane. UżywajBringIntoViewRequester
. (Ia4302, b/192043120, b/216842427, b/178211874)- Włączono animacje dla elementów leniwych siatek z funkcją Modifier.animateItemplacement(). (Ib6621, b/211753218)
BringIntoViewRequester
przekazuje teraz żądania do hostingu Widok Androida. (Ia7a51).- Usługa
FontFamilyResolver
jest teraz dostępna przezLocalFontFamilyResolver.current
- Dodano
createFontFamilyResolver(context)
icreateFontFamilyResolver(context, coroutineScope)
, aby utworzyć nowy element resolvery FontFamily inne niż użycie funkcji tworzenia wiadomości. - Akapit i kilka akapitów zajmują teraz
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
zawiera teraz resolvera używanego dla tego układu, wycofaneTextLayoutResult.layoutInput.resourceLoader
, ponieważ nie jest już używany. (Id5a45, b/174162090)
- Dodano
- Dodano
AndroidFont
, nowy niskopoziomowy interfejs API do obsługi nowych typów deskryptorów zasobów czcionek na Androidzie. Na przykład ładowanie czcionek z: backend związany z określoną aplikacją z opcjonalną lokalizacją zainstalowanych czcionek. na urządzeniu lub ładuję czcionkę z zasobu, który nie został dostarczony przez aktualną Fabryki czcionek.- Rozwinięto interfejs API
Font.ResourceLoaded
, aby obsługiwał opcjonalny i asynchroniczny podczas wczytywania czcionki. Nie zalecamy używania tej metody przez deweloperów aplikacji bezpośrednio API. Aby dodać nowe typy czcionek, zapoznaj się z artykułem AndroidFont. - Funkcja rozszerzenia
Font.AndroidResourceLoader
zezwala elementuFont.ResourceLoader
poza kompozycją. - Dodano parametr
loadingStrategy
do czcionek opartych na zasobach, aby zezwolić wczytywanie asynchroniczne, gdy czcionka zasobu odwołuje się do plików XML dostępnych do pobrania. (Ie5aea, b/174162090)
- Rozwinięto interfejs API
- Konstruktor
Typeface(FontFamily)
został wycofany. To było poprzednio używane do wstępnego wczytywania czcionek, co może potrwać do 10 sekund. dostępne do pobrania czcionki. W przypadku dostępnych do pobrania czcionek ta rozmowa może zostać zablokowana przez 10 użytkowników sek. W zamian użyjFontFamilyResolver.preload
- Interfejs
fontResource(FontFamily): Typeface
został wycofany. To było poprzednio używane do wstępnego wczytywania czcionek, co może potrwać do 10 sekund. dostępne do pobrania czcionki. Zamiast niego użyjFontFamilyResolver.preload
(If8e7c, b/174162090)
- Interfejs
- Możesz teraz określić typ treści elementów
LazyVerticalGrid
– funkcje item/items wLazyGridScope
akceptują teraz taki parametr. Podanie takich informacji pomaga w ponownym użyciu funkcji logicznej składni elementu w celu jej wydajniejszego wykorzystania i ponownego wykorzystywania treści tylko z elementów tego samego typu. (I7b355, b/215372836) LazyListLayoutInfo
iLazyGridLayoutInfo
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 takich informacji pomaga w ponownym użyciu funkcji logicznej składni elementu w celu jej wydajniejszego wykorzystania i ponownego wykorzystywania treści tylko z elementów tego samego typu. (I26506)
- Konstruktor
SubcomposeLayoutState
akceptujący obiektmaxSlotsToRetainForReuse
został wycofany. Zamiast tego wprowadziliśmy nowy konstruktor akceptującySubcomposeSlotReusePolicy
– 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, i rozmiarach. Dzięki temu część zawartości może rozciągać się do obszaru wcięcia. a jednocześnie główna treść nie mieści się w obszarze. Na przykład do dopełnienia zawartości można użyć metody windowInsetsPadding w celu uniknięcia 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 przechowywane nad klawiaturą, gdy się znajdują
zaznaczony, a klawiatura jest widoczna, gdy włączony jest tryb programowego wprowadzania tekstu.
ADJUST_PAN
(I8eaeb, b/190539358, b/192043120) - Komputer używa lokalnej kompozycji dla aplikacji
FontFamily.Resolver
- Wersja
FontLoader
na komputery została wycofana - Nowa fabryka urządzenia
createFontFamilyResolver
na komputerze (I6bbbb, b/174162090)
- Wersja
- Rodzaj klawiatury programowej nie migocze już po zmianie między polami tekstowymi. (I1bf50, b/187746439)
- Pola tekstowe nie wymagają już dodatkowego kliknięcia, gdy uchwyt kursora jest widoczny. (Ideb4b, b/205726883)
- Działanie lupy do zaznaczania tekstu zostało dopracowane do lupy. (Idd918, b/206833278)
Wersja 1.2.0-alfa02
26 stycznia 2022 r.
androidx.compose.foundation:foundation:1.2.0-alpha02
i androidx.compose.foundation:foundation-layout:1.2.0-alpha02
zostały udostępnione. Wersja 1.2.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano metodę
NonRestartableComposable
do metod, które są przeciążeniami bez złożonej logiki. Zmniejsza to liczbę kompilatora wygenerowane czeki notacji (równe) dla wszystkich parametrów, które są powtarzane w funkcji wewnętrznej, która jest wywoływana. (I90490) - Dodano modyfikatory
excludeFromSystemGesture
dla: łatwy dostęp do telefonusetSystemGestureExclusionRects
Androida (I46f07)
Poprawki błędów
- Działanie lupy do zaznaczania tekstu zostało dopracowane do lupy. (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-alpha01
i androidx.compose.foundation:foundation-layout:1.2.0-alpha01
zostały udostępnione. Wersja 1.2.0-alfa01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Do obiektów
LazyColumn
,LazyRow
iLazyVerticalGrid
dodaliśmy nowy parametruserScrollEnabled
, aby umożliwić użytkownikom tymczasowe lub trwałe wyłączenie przewijania inicjowanego przez użytkownika za pomocą gestów dotykowych lub działań ułatwień dostępu. Nadal będzie dozwolone automatyczne przewijanie za pomocą metod ustawionych dla tego stanu. (I7eae9, b/201150093) - Dodaj wywołanie zwrotne
onSizeChanged
do modyfikatora lupy. (I6879f) - Widżet lupy wyświetla się teraz podczas przeciągania zaznaczenia
uchwyty w elemencie
SelectionContainer
. (I30b38, b/139320979)
Poprawki błędów
- Naprawiono uchwyt kursora
TextField
, który nie ukrywa się po przewinięciu poza obszar widok. (I14552, b/208883748)
Aktualizacje zależności
- Teraz zależy od Kotlin
1.6.10
.
Wersja 1.1
Wersja 1.1.1
23 lutego 2022 r.
androidx.compose.foundation:foundation:1.1.1
i androidx.compose.foundation:foundation-layout:1.1.1
zostały udostępnione. Wersja 1.1.1 zawiera te zatwierdzenia.
Poprawki błędów
- Napraw
NullPointerException
pod adresemandroidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462) - Naprawianie awarii spowodowanej przez zawartość schowka przy odczytywaniu z do schowka na Androidzie. (I06020, b/197769306)
- Poprawiono RTL w
LazyVerticalGrid
(aosp/1931080, b/207510535)
Wersja 1.1.0
9 lutego 2022 r.
androidx.compose.foundation:foundation:1.1.0
i androidx.compose.foundation:foundation-layout:1.1.0
zostały udostępnione. Wersja 1.1.0 zawiera te zatwierdzenia.
Ważne zmiany wprowadzone od wersji 1.0.0
- Stabilna obsługa efektu przewijania w Androidzie 12.
- Ulepszenia rozmiaru docelowego elementu dotykowego
- Pamiętaj, że w przypadku Compose 1.0 komponenty Material mają rozszerzać obszar układu, aby zapewnić zgodność z wytycznymi dotyczącymi ułatwień dostępu Material Design rozmiar docelowego elementu dotykowego. Na przykład docelowy element dotykowy przycisku zostanie powiększony do minimalnego rozmiaru 48 x 48 dp, nawet jeśli ustawisz mniejszy rozmiar przycisku. Dzięki temu interfejs Compose Material ma takie samo zachowanie jak komponenty stylu Material Design, co zapewnia spójne zachowanie w przypadku połączenia widoków i tworzenia wiadomości. 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 kolejki nawigacyjnej
- Przeniesienie niektórych wcześniej eksperymentalnych interfejsów API do wersji stabilnej
- pomoc dotycząca nowszych wersji Kotlin,
Wersja 1.1.0-rc03
26 stycznia 2022 r.
androidx.compose.foundation:foundation:1.1.0-rc03
i androidx.compose.foundation:foundation-layout:1.1.0-rc03
zostały udostępnione. Wersja 1.1.0-rc03 zawiera te zatwierdzenia.
Poprawki błędów
- Zaktualizowano, aby obsługiwała Material 1.1.0-rc03
Wersja 1.1.0-rc01
15 grudnia 2021 roku
androidx.compose.foundation:foundation:1.1.0-rc01
i androidx.compose.foundation:foundation-layout:1.1.0-rc01
zostały udostępnione. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
- Teraz można przekazywać ujemne przesunięcia przewijania do elementów
LazyListState.scrollToItem()
iLazyListState.animateScrollToItem()
. (Iceb90, b/184252837) - Usunięto błąd, który powodował brakujące działania związane z przewijaniem ułatwień dostępu (I7cbfb)
Wersja 1.1.0-beta04
1 grudnia 2021 r.
androidx.compose.foundation:foundation:1.1.0-beta04
i androidx.compose.foundation:foundation-layout:1.1.0-beta04
zostały udostępnione. Wersja 1.1.0-beta04 zawiera te zatwierdzenia.
Nowe funkcje
- Zaktualizowano, aby była zgodna z platformą Kotlin
1.6.0
Zmiany interfejsu API
- Usunięto wartość null w kolumnie
androidx.core.view
(I7078a, b/204917439) - Dodaliśmy eksperymentalne interfejsy API, które pozwalają na przetwarzanie całości danych PointerInputchange lub sprawdzanie, czy zostały wykorzystane. (I2E59D)
- Pokazuj widżet lupy podczas przeciągania kursora lub uchwyty wyboru w polach tekstowych. (I5391e, b/203781358)
Poprawki błędów
- Naprawianie elementów, które nie przesuwają się po zmianie widoczności IME. (I25f2e)
Wersja 1.1.0-beta03
17 listopada 2021 r.
androidx.compose.foundation:foundation:1.1.0-beta03
i androidx.compose.foundation:foundation-layout:1.1.0-beta03
zostały udostępnione. Wersja 1.1.0-beta03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano obsługę rozpiętości poziomych do LazyVerticalGrid. (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 zastosowania: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ą funkcji
LazyListScope.item
lubLazyListScope.items
, ten modyfikator włączy animacje zmiany kolejności elementów. Oprócz zmiany kolejności elementów wszystkie inne zmiany pozycji spowodowane takimi zdarzeniami jak rozmieszczenie czy wyrównanie również będą animowane. (I59e7b, b/150812265)
- Gdy podasz klucz za pomocą funkcji
Wersja 1.1.0-beta02
3 listopada 2021 r.
androidx.compose.foundation:foundation:1.1.0-beta02
i androidx.compose.foundation:foundation-layout:1.1.0-beta02
zostały udostępnione. Wersja 1.1.0-beta02 zawiera te zatwierdzenia.
Poprawki błędów
- Echo i inne oznaki będą teraz opóźnione tylko wtedy, gdy znajdują się w kontenerze
Modifier.scrollable()
. Nie będą zawsze opóźniane w przypadku awarii. (Ibefe0, b/203141462) - Dodano eksperymentalny interfejs API BringIntoView, który umożliwia wysłanie prośby do rodziców w celu przewijania w celu wyświetlenia danego elementu (Ib918d, b/195353459)
Treści tłumaczone przez użytkowników zewnętrznych
- Dodano
Modifier.pointerHoverIcon
(I95f01)
Wersja 1.1.0-beta01
27 października 2021 roku
androidx.compose.foundation:foundation:1.1.0-beta01
i androidx.compose.foundation:foundation-layout:1.1.0-beta01
zostały udostępnione. Wersja 1.1.0-beta01 zawiera te zatwierdzenia.
Poprawki błędów
- Dodano eksperymentalny interfejs API BringIntoView, który umożliwia wysłanie prośby do rodziców w celu przewijania w celu wyświetlenia danego elementu (Ib918d, b/195353459)
Wersja 1.1.0-alpha06
13 października 2021 r.
androidx.compose.foundation:foundation:1.1.0-alpha06
i androidx.compose.foundation:foundation-layout:1.1.0-alpha06
zostały udostępnione. Wersja 1.1.0-alfa06 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano przeciążenie bez dzieci w przypadku układów, co zwiększyło wydajność (Ib0d9a)
SemanticsNodeInteraction.performSemanticsAction
zwraca teraz elementSemanticsNodeInteraction
, który wywołał funkcję. (I9e5db).- Dodano element
performScrollToNode(matcher: SemanticsMatcher)
, który przewija przewijany kontener do treści pasującej przez dla danego dopasowania. (IC1cb8)
Wersja 1.1.0-alpha05
29 września 2021 r.
androidx.compose.foundation:foundation:1.1.0-alpha05
i androidx.compose.foundation:foundation-layout:1.1.0-alpha05
zostały udostępnione. Wersja 1.1.0-alfa05 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Do elementu PointerEventChange dodaliśmy eksperymentalne wskaźniki historyczne. (Ic1fd8, b/197553056, b/199921305)
Poprawki błędów
- Poprawiono obsługę ułatwień dostępu (leniwe i leniwe) nieleniwe) w odniesieniu do przewijania (I6cdb0)
Wersja 1.1.0-alfa04
15 września 2021 r.
androidx.compose.foundation:foundation:1.1.0-alpha04
i androidx.compose.foundation:foundation-layout:1.1.0-alpha04
zostały udostępnione. Wersja 1.1.0-alfa04 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Wycofano reguły
performGesture
iGestureScope
, które zawierają zostały zastąpione przezperformTouchInput
iTouchInjectionScope
. (Ia5f3f, b/190493367) - Element
touchBoundsInRoot
został dodany do elementuSemanticsNode
zawiera minimalny rozmiar docelowego elementu dotykowego, dzięki czemu deweloperzy może sprawić, że docelowe elementy dotykowe będą spełniać minimalne wymagania dotyczące ułatwień dostępu. (I2e14b, b/197751214)
Poprawki błędów
- Dodaliśmy obsługę rozciągania dalekiego 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-alpha03
i androidx.compose.foundation:foundation-layout:1.1.0-alpha03
zostały udostępnione. Wersja 1.1.0-alfa03 zawiera te zatwierdzenia.
Nowe funkcje
- Zaktualizowano funkcję Utwórz
1.1.0-alpha03
, aby bazowała na Kotlinie1.5.30
. (I74545)
Zmiany interfejsu API
- Dodano efekt poświaty dla przewijania. Dodaliśmy nowy eksperymentalny interfejs API Over ScrollConfiguration, aby umożliwić konfigurację efektu wizualnego Overscroll. Aby wyłączyć efekt przewijania, podaj wartość null. (I0c304, b/171682480)
- AwaitPointerEventScope ma teraz funkcję withTimeout() i withTimeoutOrNull() (I507f0, b/179239764, b/182397793)
- Dodano metodę testową służącą do pobierania granic przyciętych. (I6b28e)
- Dodano minimalny rozmiar docelowego elementu dotykowego do ViewConfiguration do użycia w semantyce i danych wejściowych wskaźnika, aby zapewnić dostępność. (IE861C)
Wersja 1.1.0-alfa02
18 sierpnia 2021 r.
androidx.compose.foundation:foundation:1.1.0-alpha02
i androidx.compose.foundation:foundation-layout:1.1.0-alpha02
zostały udostępnione. Wersja 1.1.0-alfa02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodaliśmy wersje DpSize dla systemów
Modifier.size
irequiredSize
(I3fc7e, b/194219828)
Wersja 1.1.0-alpha01
4 sierpnia 2021 r.
androidx.compose.foundation:foundation:1.1.0-alpha01
i androidx.compose.foundation:foundation-layout:1.1.0-alpha01
zostały udostępnione. Wersja 1.1.0-alfa01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Zaktualizowano metodę
DrawScope#drawImage
, która pochłania źródłowe i docelowe prostokąty , aby wykorzystać opcjonalną jakość . Przydaje się to na Pixelu dzieło sztuki, które ma być pikselizowane skalowany w górę i uwydatnić grafikę w formacie pikselowym. Zaktualizowana BitmapPainter + możliwość komponowania obrazu aby wykorzystać opcjonalną filtrującą jakość Parametr (Ie4fb0, b/180311607) - Pole tekstowe usuwa teraz zaznaczenie po naciśnięciu przycisku Wstecz, która pasuje do działania funkcji EditText w Androidzie. (I3ca16, b/174173645)
- Dodaj uchwyt kursora. (I07a82, b/173016579)
Poprawki błędów
- Animacja obejmuje przewijanie za pomocą działań semantycznych w przypadku leniwych list i zwykłych komponentów przewijania (Id9066, b/190742024)
Treści tłumaczone przez użytkowników zewnętrznych
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
- Usunięto problem ze śledzeniem awarii w instancjach originStateOf. (Aosp/1792247)
Wersja 1.0.4
13 października 2021 r.
androidx.compose.foundation:foundation:1.0.4
i androidx.compose.foundation:foundation-layout:1.0.4
zostały udostępnione. Wersja 1.0.4 zawiera te zatwierdzenia.
Aktualizacje zależności
- Zaktualizowano na podstawie usługi Kotlin
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 na podstawie usługi Kotlin
1.5.30
Wersja 1.0.2
1 września 2021 roku
androidx.compose.foundation:foundation:1.0.2
i androidx.compose.foundation:foundation-layout:1.0.2
zostały udostępnione. 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 w zależności od systemu Kotlin
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.
Główne funkcje 1.0.0
To jest pierwsza stabilna wersja Compose. Więcej informacji znajdziesz na oficjalnym blogu wersji Compose.
Znane problemy
Jeśli korzystasz z Android Studio Bumblebee Canary 4 lub AGP
7.1.0-alpha04
/7.1.0-alpha05
, może dojść do tej awarii:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
Aby rozwiązać ten problem, tymczasowo zwiększ wartość parametru minSdkVersion w pliku
build.gradle
do wartości 24 lub nowszej. Ten problem zostanie naprawiony w następnej wersji Androida Studio Bumblebee i AGP7.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.
- Zaktualizowaliśmy renderowanie obramowania ogólnych kształtów, aby rozwiązać problemy ze ścieżkami ze stałymi wymiarami. (Aosp/1748871, b/191817116)
Wersja 1.0.0-rc01
1 lipca 2021 r.
androidx.compose.foundation:foundation:1.0.0-rc01
i androidx.compose.foundation:foundation-layout:1.0.0-rc01
zostały udostępnione. Wersja 1.0.0-rc01 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Obszar roboczy obsługuje teraz parametr contentDescription dla: ułatwienia 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 zatwierdzenia.
Zmiany interfejsu API
- Użytkownik
ManualFrameClock
został usunięty. Jeśli chcesz sterować animacjami, użyj interfejsucomposeTestRule.mainClock
. (I3c3e8, b/189951065) - zmień rolę enum i tryb LiveRegionMode na klasy wbudowane z prywatnym konstruktorem (Id1890)
- Parametr keyCapitalization jest konwertowany na klasę wbudowaną. (Id5a1c).
- Ustawienie TextOverflow zostało zmienione na klasę wbudowaną. (I433af).
Poprawki błędów
- Teraz, gdy podasz unikalne klucze dla elementów LazyColumn/Row, pozycja przewijania zostanie zachowana na podstawie klucza. Oznacza to, że jeśli dodasz lub usuniesz elementy przed bieżącym widocznym elementem, element z danym kluczem zostanie zachowany jako pierwszy widoczny. (Id263f, b/184257857)
- Główne stałe to na razie @ExperimentalComposeUiApi. Konsumpcja może zadeklarować stałe prywatne przed stabilizacją. (Ia5d48).
- Dodano strategię IdlingStrategy do reguły AndroidComposeTestRule, której można użyć
używane przez platformy testowe do zainstalowania alternatywnego mechanizmu
ani spokoju. Używaj
AndroidComposeTestRule.setIdlingStrategyFactory()
przed testem zaczyna wdrażać własną strategię. (I608fa)
Dodane reguły profilu
Ta wersja dodaje reguły profilu do następujących 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.tekst
- androidx.compose.ui.jednostka
- 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 katalogusrc/main
lub podobnym. Plik określa regułę w każdym wierszu, gdzie reguła w tym przypadku jest wzorcem dopasowywania do metod lub klas w bibliotece. Składnia tych reguł jest elementem nadrzędnym w przypadku czytelnego dla człowieka formatu profilu ART, który jest używany, gdy używaszadb shell profman --dump-classes-and-methods ...
. Reguły te mogą kierować reklamy na metody lub klasy w jednej z dwóch form.Reguła metody będzie miała następujący wzorzec:
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
Reguła klasy będzie miała następujący wzorzec:
<CLASS_DESCRIPTOR>
<FLAGS>
to co najmniej jeden ze znakówH
,S
iP
wskazujących, czy ta metoda ma być oznaczona jako „Przebojowa”, „Uruchomienie” lub „Po uruchomieniu”.<CLASS_DESCRIPTOR>
to deskryptor klasy, do której należy wybrana metoda. Na przykład klasaandroidx.compose.runtime.SlotTable
miałaby deskryptorLandroidx/compose/runtime/SlotTable;
.<METHOD_SIGNATURE>
to podpis metody. Zawiera nazwę, typy parametrów i typy zwracanych metod. Na przykład metodafun isPlaced(): Boolean
wLayoutNode
ma podpisisPlaced()Z
.Aby jedna reguła obejmowała wiele metod lub klas, mogą one zawierać symbole wieloznaczne (
**
,*
i?
).
Do czego służą reguły?
Metoda z flagą
H
wskazuje, że jest ona popularna. i należy ją skompilować z wyprzedzeniem.Metoda z flagą
S
wskazuje, że jest ona 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 znajdująca się w tym pliku wskazuje, że jest używana podczas uruchamiania i powinna być wstępnie przydzielona na stercie, aby uniknąć kosztów wczytywania klasy.
Jak to działa?
- Biblioteki mogą definiować reguły, które będą spakowane w artefaktach AAR. Kiedy powstaje aplikacja, która zawiera te artefakty, reguły te są łączone ze sobą, a scalone reguły służą do utworzenia kompaktowego binarnego profilu ART charakterystycznego dla danej aplikacji. ART może następnie wykorzystać ten profil, gdy aplikacja jest zainstalowana na urządzeniach, w celu z wyprzedzeniem skompilowania określonego podzbioru aplikacji w celu poprawy jej wydajności, zwłaszcza przy pierwszym uruchomieniu. 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 zatwierdzenia.
Zmiany interfejsu API
- Wyliczenie Nested ScrollSource zostało zastąpione klasą wbudowaną. (Ie321b, b/187055290)
- Zrefaktoryzowane wykorzystanie enum do klas wbudowanych w celu uniknięcia zawierają dokładne informacje o tym, kiedy stwierdzenia, nowe wartości wyliczeniowe. (I2b5eb)
- Dodaje czas oczekiwania na kliknięcie, aby zapobiec wyświetlaniu fali podczas przewijania lub przeciągania (Ia2704, b/168524931)
- Właściwości ContentDescription i semantyka tekstu nie są już dostępne pojedyncze wartości, ale listy. Dzięki temu można je scalić w niezmienionej formie konkatenacji. Udostępniliśmy też lepsze interfejsy API do testowania, które pozwalają na korzystanie z zmiany (Ica6bf, b/184825850)
- Metoda
Modifier.focusModifier()
została wycofana i zastąpiona przezModifier.focusTarget()
(I6c860) - Enum typów Klawiatura została zastąpiona klasą wbudowaną. (I73045, b/187055290)
- Zastąpiono enum
FocusState
interfejsemFocusState
(Iccc1a, b/187055290) - Wyliczenie ImeAction zostało zastąpione klasą wbudowaną. (I18be5, b/187055290)
AnnotatedString.withAnnotation
funkcje są ExperimentalTextApi zamiast ExperimentalComposeApi. (I0cd0a).- Konstruktor TextUnit z obiektem TextUnitType jest teraz ExperimentalTextApi zamiast ExperimentalComposeApi.
- PaddingValues to teraz
@Stable
, a nie@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 przycinanie elementów podrzędnych przez kontenery z możliwością przewijania na osi poprzecznej. Można ją było łatwo odtworzyć, jeśli masz wiersz LazyRow z elementami karty. Teraz cień nie zostanie przycięty. (Icb635, b/186318448)
- Rozwiązaliśmy problem, który powodował, że zmarszczki lub inne wskaźniki zacinały się przy długim kliknięciu podczas korzystania z modyfikatora Modifier.combinedClickable (I2298c, b/186223077).
- Teraz
detectDragGesures
,detectVerticalGestures
idetectHorizontalGestures
automatycznie uwzględniają zmianę pozycji, więc nie trzeba wywoływać metody change.consumePositionChange w wywołaniach zwrotnych onDrag (I42fc4, b/185096350, b/187320697). - Pole
Modifier.onGloballyPositioned()
zostało zmienione tak, aby po zastosowaniu wszystkich modyfikatorów raportować współrzędne tego modyfikatora w łańcuchu modyfikatorów, a nie współrzędne układu. 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-beta07
i androidx.compose.foundation:foundation-layout:1.0.0-beta07
zostały udostępnione. Wersja 1.0.0-beta07 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Następną logikę pobierania z wyprzedzeniem widoczna jest w przypadku LazyColumn/Row (I8a4bc, b/184940225).
- Dodano uchwyt wyboru klipu (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 może ponownie korzystać z aktywnych kompozycji podrzędnych, gdy trzeba będzie utworzyć nowy element, który usprawnia przewijanie. (IE5555)
- Usunięto pole paintBackground. (I38660).
- Narysuj tło zaznaczenia za pomocą aplikacji DrawScope. (I73c61, b/186674472)
- Poprawiono regresję beta06 wpływającą na wiersz/kolumnę z użyciem elementów spacedBy z elementami podrzędnymi ważonymi według układu. (Ifaf8c, b/187326588)
Wersja 1.0.0-beta06
5 maja 2021 roku
androidx.compose.foundation:foundation:1.0.0-beta06
i androidx.compose.foundation:foundation-layout:1.0.0-beta06
zostały udostępnione. Wersja 1.0.0-beta06 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Rozwiązywanie konfliktów z gestem nawigacji (I1145e)
- Dodano interfejsy API ułatwień dostępu CollectionInfo i CollectionItemInfo, które umożliwiają oznaczanie kolekcji i ich elementów dla usług ułatwień dostępu (Id54ef, b/180479017).
- Dodano element
SemanticsActions.ScrollToIndex
, aby przewijać listę z do elementu z określonym indeksem orazSemanticsProperties.IndexForKey
, aby uzyskać indeks elementu na liście z elementami z kluczem. Oba działania są implementowane przez LazyList.- Dodano element
SemanticsNodeInteraction.performScrollToIndex
, który przewija listę do podanego indeksu,SemanticsNodeInteraction.performScrollToKey
, który przewija listę do element o podanym kluczu. (I4fe63, b/178483889, b/161584524)
- Dodano element
- Obsługa zapisu w AdnotatedString Zapisywanie wartości pola tekstowego. Dodano adnotację addTtsAnnotation z funkcjami narzędziowymi adnotacji, AnnotatedString.Builder (I8cbdc, b/178446304)
- Do grupy
PaddingValues(horizontal, vertical)
dodano domyślne wartości parametrów0.dp
(I05571, b/181336792)
Poprawki błędów
- Wiersze i Kolumny podrzędne z wartościami „
weight(fill = false)
” nie wypełniają już całej dostępnej przestrzeni na osi głównej. (Ied94d, b/186012444, b/184355105)
Wersja 1.0.0-beta05
21 kwietnia 2021 r.
androidx.compose.foundation:foundation:1.0.0-beta05
i androidx.compose.foundation:foundation-layout:1.0.0-beta05
zostały udostępnione. Wersja 1.0.0-beta05 zawiera te zatwierdzenia.
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
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
iaccessibilityActionScrollDown
przewijanie elementów ułatwień dostępu. Zamiast przewijać do końca będzie przewijany o 1 ekran w danym kierunku. (Ieccb0) - pliki AndroidManifest z komponentów ui-test-manifest oraz Narzędzie ui-tooling-data jest teraz zgodne z Androidem 12 (I6f9de, b/184718994)
Wersja 1.0.0-beta04
7 kwietnia 2021 r.
androidx.compose.foundation:foundation:1.0.0-beta04
i androidx.compose.foundation:foundation-layout:1.0.0-beta04
zostały udostępnione. Wersja 1.0.0-beta04 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Zmień nazwy klawiatury hide SoftwareKlawiatura i showProductKlawiatura – włączone
SoftwareKlawiaturaController odpowiednio na
hide()
ishow()
.- Udostępnij pełny interfejs CompositionLocal dla Oprogramowanie Local SoftwarekeyController, które umożliwia jego ustawienie (zwłaszcza przydatne w testach) (I579a6)
- Wprowadzono
TextOverflow.Visible
. (IC8f89) - Instancje publiczne
RowScope
,ColumnScope
,BoxScope
,BoxWithConstraintsScope
zostały usunięte. (I4e83e, b/181869067)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował, że elementy w polu
LazyColumn
/LazyRow
znajdujące się na krawędziach były nieprawidłowo umiejscowione po szybkim przesunięciu (Ie4d13, b/183877420). Przed tą zmianą można było pomijać lokalne funkcje kompozycyjne na podstawie ich parametrów. Po tej zmianie żadne lokalne funkcje kompozycyjne nie zostaną pominięte. Jest to powszechna i oczekiwana sytuacja, w której funkcje lokalne przechwytują parametry z elementu nadrzędnego, a ich pomijanie jest częstym źródłem błędów.
Oto 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 kompozycyjna
ShowCount
zawsze była pomijana, nawet po zaktualizowaniu parametrucount
. Ta informacja jest nieaktualna. (I5648a)
Wersja 1.0.0-beta03
24 marca 2021 r.
androidx.compose.foundation:foundation:1.0.0-beta03
i androidx.compose.foundation:foundation-layout:1.0.0-beta03
zostały udostępnione. Wersja 1.0.0-beta03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Interfejs
DefaultMonotonicFrameClock
został wycofany. ŁączęwithFrameNanos
lubRecomposer.runRecomposeAndApplyChanges
bezMonotonicFrameClock
wyrzuci terazIllegalStateException
. (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-beta02
i androidx.compose.foundation:foundation-layout:1.0.0-beta02
zostały udostępnione. Wersja 1.0.0-beta02 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodaliśmy kilka niewielkich optymalizacji w logice pomiaru LazyColumn (Ic6889).
- Dodano nową lokalną kompozycję
LocalSoftwareKeyboardController
Interfejs API zastępujący poprzedni interfejs SoftwareKlawiaturaController Pole tekstowe. (I5951e, b/168778053) - Dodano nową lokalną kompozycję
LocalSoftwareKeyboardController
Interfejs API zastępujący poprzedni interfejs SoftwareKlawiaturaController Pole tekstowe. (I84472, b/168778053)
Poprawki błędów
- Egzekwuj ograniczenia dotyczące publicznego korzystania z eksperymentalnych interfejsów API (I6aa29, b/174531520)
Wersja 1.0.0-beta01
24 lutego 2021 r.
androidx.compose.foundation:foundation:1.0.0-beta01
i androidx.compose.foundation:foundation-layout:1.0.0-beta01
zostały udostępnione. Wersja 1.0.0-beta01 zawiera te zatwierdzenia.
To jest pierwsza wersja beta Compose 1.0.0.
Zmiany interfejsu API
- Oddzwanianie onStart zostało dodane do
detectDragGestures
(I67269, b/179995594) - Modyfikatory dopasowujące wymiary do elementów wewnętrznych nie są już eksperymentalne. (I15744)
- Usunięto asercje dp (I798d2)
- Usunięto wywołanie zwrotne SoftwareKlawiaturaController z całego tekstu które zostaną wkrótce zastąpione nowym interfejsem API. (IAe869, b/168778053)
- Nazwa MeasureBlocks została zmieniona na MeasurePolicy, a interfejs jest teraz ciekawym interfejsem. Zaktualizowaliśmy lub uprościliśmy interfejsy Layout API pod kątem MeasurePolicy. (Icab48, b/167662468, b/156751158)
- Pole
InteractionState
zostało zastąpione tekstem[Mutable]InteractionSource
- Interfejsy odpowiadają za wysyłanie / zbieranie zdarzeń interakcji.
- Zamiast przekazywać
interactionState = remember { InteractionState() }
do komponentów takich jakButton
czyModifier.clickable()
, użyjinteractionSource = remember { MutableInteractionSource() }
. - Zamiast:
Interaction.Pressed in interactionState
użyj funkcji rozszerzeń w InteractionSource, takich jak InteractionSource.collectIsPressedAsState(). - W złożonych przypadkach możesz użyć 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 wycofane metody LayoutCoordinates. Użyj funkcji zamiast właściwości positionInParent i boundsInParent (I580ed, b/169874631, b/175142755)
- Utworzono nową sesję TextInputSession na potrzeby sesji wprowadzania danych z komponentów tekstowych niskiego poziomu, np. CoreTextField. (I8817f, b/177662148)
- Obiekt Placeable staje się widoczny w pomiarach rozmiaru, co reprezentuje rozmiar, do którego rzeczywiście zmierza układ podrzędny. Ten rozmiar może nie uwzględniać ograniczeń pomiarów. (Ib2729, b/172560206, b/172338608)
- Dodaj modyfikator selectGroup, który umożliwia oznaczanie kolekcji kart lub opcji na potrzeby ułatwień dostępu (Ie5c29)
Dodaj parametr LazyListState.animate ScrollToItem
Ta metoda powoduje płynne przewijanie do określonego elementu na liście. (I4bfd7).
Nazwa ScrollableState.smooth ScrollBy() została zmieniona na animate ScrollBy() Nazwa LazyListState.snapToItemIndex() została zmieniona na ScrollToItem() Nazwa ScrollState.smooth ScrollTo() została zmieniona na animate ScrollTo() (I35ded).
Parametr Modifier.zoomable został zastąpiony przez plik Modifier.transformable. Do funkcji smoothPanBy zostały dodane funkcje smoothPanBy i sightRotationBy. (Ifc32b, b/175294473)
defaultFactory
dlacompositionLocalOf
i ParametrstaticCompositionLocalOf
jest teraz wymagany zamiast opcjonalnie.Ta zmiana usuwa potencjalny błąd typu dla wartości niepustej bez domyślnych ustawień fabrycznych. Wcześniej to zwróciłoby wartość null dla typu niedopuszczającego wartości null.
W przypadku typów dopuszczających wartości null zalecamy podanie parametru
{ null }
jako domyślnego fabryki.Nie zalecamy używania zasobów lokalnych z typami niedopuszczającymi wartości null, chyba że można określić rozsądną wartość domyślną. Jeśli nie istnieje rozsądne ustawienie domyślne, funkcja lambda
defaultFactory
powinna zgłosić wyjątek. Jednak zrobić wyjątek oznacza, że konsumenci lokalnie korzystają pośrednia zależność od podanego źródła, która nie jest egzekwowana według systemu typów. (Ifbd2a).Zmieniono
Indication#createIndication()
naIndication#rememberUpdatedIndication(InteractionState)
i usunięto parametrInteractionState
z IndicationInstance#drawIndication()
. Instancja Indication powinna być odpowiedzialna wyłącznie za rysowanie efektów wizualnych i nie uruchamiała animacji ani stanu zapisu w odpowiedzi na zmiany w InteractionState. Animacje i zapisy stanów powinny następować w zasadzierememberUpdatedIndication()
. Parametrindication
w obiekcieModifier.indication
również został zmieniony na parametr wymagany. (IC1764, b/152525426)Działania związane z tekstem automatycznie sprawdzają zaznaczenie (I13777, b/179648629)
Usunięto
runBlockingWithManualClock
(I15cdc, b/179664814)Pozycja przewinięcia w modyfikatorze.vertical Scroll()/vertical Scroll() obecnie przedstawia się za pomocą liczb całkowitych (I81298).
smooth ScrollBy i ScrollBy pakiety zostały zmienione na
androidx.compose.foundation.gestures.*
(I3f7c1, b/175294473)Nazwa FlingConfig została zmieniona na FlingBehavior i umożliwia teraz dostosowanie animacji zawieszenia, a nie wstępnie zdefiniowanego spadku. (I02b86, b/175294473)
Zmieniono 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)
Nazwa defaultMinSizeConstraints została zmieniona 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 danych wskaźnika. Zalecanym sposobem koordynowania częściowego konsumpcji jest Modifier.nested Scroll. (IE9c9b)
Orientacja została przeniesiona do pakietu podstawowego. Przeniesiono aplikację VelocirtTracker z obszaru ui.gesture do witryny ui.input.pointer. (Iff4a8, b/175294473)
AnimationClockObservable i podklasy zostały zmienione usunięto. Element AnimatedFloat został usunięty. (Icde52, b/177457083)
DrawerState.open() i dreszerState.close() zawieszają funkcje. Użyj funkcji PamiętajCoroutineScope(), aby uzyskać zakres kompozycji i je wywołać (I16f60, b/175294473).
Nazwa dostawców została zmieniona na CompositionLocalProvider
- Konstruktor Kompozycja nie akceptuje już kluczowego parametru i został wycofany.
- Parametr currentCompositeKeyHash został przekształcony w kompozycyjną właściwość najwyższego poziomu zamiast funkcji kompozycyjnej najwyższego poziomu.
- CompositionData i CompositionGroup zostały przeniesione do przestrzeni nazw androidx.compose.runtime.tooling.
- Interfejs ComposableLambda został utworzony zamiast konkretnej klasy i nie ma już parametrów typu.
- Interfejs ComposableLambdaN został utworzony zamiast konkretnej klasy i nie ma już parametrów typu.
- Funkcja snapshotFlow została przeniesiona do przestrzeni nazw androidx.compose.runtime
- metoda scalania zasady SnapshotMutationPolicy nie jest już eksperymentalna
- Funkcja clearRoots najwyższego poziomu
@TestOnly
została usunięta. Już nie jest to konieczne. - Funkcje keySourceInfoOf i resetSourceInfo zostały usunięte. Nie są już potrzebne.
- Element Composer.collectKeySourceInformation został usunięty. Już nie jest to konieczne.
- Metody isJoinedKey, JoinKeyLeft i joinKeyRight 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ę klas plików Kotlin spowoduje to naruszenie zgodności plików binarnych, ale nie źródła, więc nie powinno stanowić problemu dla większości użytkowników.
- (I99b7d, b/177245490)
Modifier.scrollable został przerobiony. Teraz używa interfejsu Scrollable zamiast klasy ScrollableController (I4f5a5, b/174485541, b/175294473)
Modifier.draggable akceptuje teraz obiekt DraggableState zamiast prostej lambda. możesz utworzyć stan w
rememberDraggableState { delta -> }
, aby uzyskać takie samo zachowanie jak wcześniej (Ica70f, b/175294473)Dodano modyfikatory requiredPosition(IntrinsicSize) i requiredHeight(IntrinsicSize) w celu uzyskania wymaganego rozmiaru do rozmiarów wewnętrznych. (I0a6b4)
Wycofana reguła
emptyContent()
została usunięta. Użyj w zamian zasady{}
. (Idb33f, b/179432510)usunęliśmy niektóre wycofane wcześniej interfejsy API (Ice5da, b/178633932),
Poprawki błędów
- Dodano nową lokalną kompozycję klawiatury lokalnej Interfejs API zastępujący poprzedni interfejs SoftwareKlawiaturaController Pole tekstowe. (I658b6, b/168778053)
Wersja 1.0.0-alfa12
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-alfa12 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Modifier.pointerInput wymaga teraz zapamiętania klawiszy, aby wskazać, kiedy współrzędna wykrywania danych wejściowych wskaźnika powinna zostać uruchomiona ponownie 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 parametr PaddingValues.Bezwzględny, którego można używać w interfejsach API akceptujących wartości PaddingValues. (Ia5f30).
- Interfejs onImeActionPerformed został wycofany. użyj Klawiatura Actions (If0bbd, b/179071523)
- Aby lepiej dopasować nazwy w formatach ImageBitmap i ImageVector Nazwa ImagePainter została zmieniona na BitmapPainter równolegle do obiektu VectorPainter. (Iba381, b/174565889)
- Lepsze interfejsy API do testowania podłańcucha z podłańcuchem jako argumentem (Icbe78)
- Wprowadzono kontekst współprogramu
InfiniteAnimationPolicy
który będzie stosowany w nieskończonych animacjach. Domyślnie nie zasada jest zainstalowana, chyba że przeprowadzasz testy z zastosowaniemComposeTestRule
. (I50ec4, b/151940543) - Animatable.snapTo i Animatable.stop to teraz funkcje zawieszania (If4288)
- Element KomponentActivity.setContent został przeniesiony do androidx.activity.compose.setContent w . (Icf416).
- Metody zniszczenia i copy() zostały usunięte z i kilku klas, w których były one rzadko używane. (I26702, b/178659281)
Dodano obsługę kluczy niestandardowych LazyColumn/LazyRow. Dzięki temu możemy lepiej zarządzać kolejnością produktów. Gdy zmienisz kolejność elementów lub usuniesz element ze środka, stan zapisany w blokach zapamiętanych {} zostanie przesunięty razem z nim.
LazyColumn { items(users, key = { user -> user.id }) { ... } }
Zmieniono Indication#createInstance na @Composable, a LocalIndication tak, by zawierał Indication, a nie () -> Wskazania. (I5eeea, b/157150564)
Pole
Constraints.enforce
zostało zastąpione elementemConstraints.constrain
. (I8B8EA).Zasób loadFontResource został wycofany. Zamiast tego użyj fontResource. imageResource, loadImageResource, vectorResource i loadVectorResource zostały wycofane. Użyj narzędzia PaintterResource. (I6B809)
Ze względu na wydajność semantyka ScrollAxisRange przyjmuje teraz lambda zwracają liczby zmiennoprzecinkowe zamiast bezpośrednich wartości liczb zmiennoprzecinkowych. (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 do sprawdzania semantyki (I8e07a).
Modifier.clickable nie obsługuje teraz podwójnego i długiego kliknięcia. Aby osiągnąć tę funkcję, użyj modyfikatora Modifier.combinedClickable. (Iafad1).
Nazwa funkcji toIntPx() została zmieniona na roundToPx(). (I9b7e4, b/173502290)
Nazwa IntBounds została zmieniona na IntRect, a interfejs API został ulepszony. (I1f6ff)
Interfejs Modifier.dragStepFilter został wycofany. Użyj w zamian zasady
Modifier.pointerInput { detectDragGestures (...)}
. Możesz też użyć metody Modifier.draggable, aby przeciągać jedną oś (I0ba93, b/175294473)Zmieniono nazwy dźwięków otoczenia, tak aby pasowały do otoczenia -> Zmiana nazwy elementu CompositionLocal. Lokalizatory nosiły wcześniej nazwę AmbientFoo, a teraz CompositionLocals – LocalFoo. (I2d55d)
Zaznaczenie zostało przeniesione do podstawy. (I7892B)
Podobnie jak poprzednio usunęliśmy funkcję
state { 0 }
kompozycyjną, a teraz promujemy jej użycie, takie jakremember { mutableStateOf(0) }
, usuniemy funkcjęsavedInstanceState { 0 }
kompozycyjną. Zamiast niego użyj parametrurememberSaveable { mutableStateOf(0) }
. Zostanie on automatycznie zapisany i przywrócony, jeśli typ użyty w MutableState może być przechowywany w pakiecie. Jeśli do tej pory przekazywano obiekt wygaszacza niestandardowego, teraz musisz użyć nowego przeciążenia pamięci generateSaveable, która zawiera parametrstateSaver
. Użycie będzie wyglądać tak:val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) }
(Ib4c26, b/177338004)Dodano semantykę haseł w ułatwieniach dostępu (I231ce)
Dodano ProgressBarRangeInfo.Indeterminate, aby zaznaczyć nieokreślone paski postępu w ułatwieniach dostępu (I6fe05).
Czas odtwarzania animacji nie jest już podawany w nanosekundach (If776a)
Atrybut @ComposableContract został wycofany i zastąpiono 3 bardziej szczegółowymi adnotacjami.
@ComposableContract(restartable = false)
zmienia nazwę na@NonRestartableComposable
@ComposableContract(readonly = true)
jest teraz@ReadOnlyComposable
@ComposableContract(preventCapture = true)
została zmieniona na@DisallowComposableCalls
Użytkownik@ComposableContract(tracked = true)
został usunięty. (I60a9D)Narzędzia
emptyContent()
i(@Composable () -> Unit).orEmpty()
zostały wycofane, ponieważ nie mają już pozytywnego wpływu na wydajność ani wartość (I0484d)Rekompozycje można teraz zamknąć. Zamknięte ponownie kompozycje kontynuować ponowne kompozycje, aż kogutyny podrzędne kompozycji zostaną zakończone. Nazwa polecenia Recomposer.shutDown została zmieniona na anulowanie, aby kontrastować z zamknięciem. (IB6d76)
Interfejsy API powiązane z LazyVerticalGrid są oznaczone jako eksperymentalne (Ia53e3, b/178519862)
Zapamiętano nazwę savedInstanceState(), aby korzystały z ! (I1366e, b/177338004)
Nazwa RestorableStateHolder została zmieniona na SaveableStateHolder i została przeniesiona do pakietu androidx.compose.runtime.saveable. Nazwa metody wewnętrznej RestorableStateProvider została zmieniona na SaveableStateProvider. Typ ogólny został usunięty, więc można było przekazywać jako klucz „Dowolny”. Nie są już potrzebne adnotacje eksperymentalne. (I0902e, b/174598702)
Saver, listSaver(), mapSaver(), autoSaver przeniesiono z androidx.compose.runtime.savedinstancestate do androidx.compose.runtime.saveable (I77fe6).
Nazwa artefaktu androidx:compose:runtime:runtime-saved-instance-state została zmieniona na androidx:compose:runtime:runtime-saveable (I6dcac).
Wiele starych, wycofanych interfejsów API z pakietu UI zostało usuniętych. (I2f2dc)
Artefakt compose:runtime-dispatch został wycofany. MonotonicFrameClock można teraz znaleźć w poleceniach compose:runtime Aplikację AndroidUiDispatcher znajdziesz w polecenia compose:ui. (IB5c36)
Nazwy parametrów RounderCornerForm, CutCornerPosition i CornerBasedForm zostały zmienione z lewej/prawej na początek/koniec, by zapewnić obsługę automatycznego odbicia lustrzanego kształtu w kierunku rtl. Funkcje absoluteRounderCorner shape i absoledCutCornerPosition zostały wprowadzone w przypadkach, gdy automatyczne odbiór lustrzane nie jest potrzebne. (I61040, b/152756983)
Usunięto element canDrag z folderu Modifier.scrollable. (Id66e7, b/175294473)
Interfejs API, na który kierowana jest wtyczka kompilatora Compose została zmieniona tak, aby używała interfejsu zamiast konkretnej klasy. Interfejs nie będzie już używał type.
To jest zmiana wewnętrzna, która nie powinna mieć wpływu na źródło jest to zmiana powodująca niezgodność kodu binarnego. (I3b922, b/169406779)
Usunięto modyfikator.scaleStepFilter. Użyj w zamian metody Modifier.zoomable. Możesz też użyć polecenia
Modifier.pointerInput { detectMultitouchGestures { ... }}
(Id5da1, b/175294473)Parametr AnimatedValue/Float został wycofany. Użyj Animowana. (I71345, b/177457083)
- Usunięto CoreText i CoreTextField z publicznego interfejsu API
- Usunięto wycofane przeciążenie komponentu SelectionContainer (I99c19)
Usuń wycofane funkcje przewijania bez zawieszania Zgodnie ze zmianami w stosunku do poprzedniej wersji – przewijanie bez zawieszenia są teraz całkowicie usuwane. Przejdź na tryb zawieszenia o takich samych nazwach. Zakres współdziałania można uzyskać za pomocą zapamiętaniaCoroutineScope(). (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
androidx.constraintlayout:constraintlayout-compose:1.0.0-alpha01
. (I87adc).Parametry tapTrackingFilter, DoubleTapStepFilter, longPressConsentFilter i PressIndicaitonTrackingFilter zostały wycofane. Użyj w zamian funkcji Modifier.clickable lub Modifier.pointerInput z funkcją wykrywania gestów. (I6baf9, b/175294473)
Użytkownik
Recomposer.current()
został usunięty. [Abstract]ComposeView teraz domyślnie tworzone są leniwie, ograniczone do okna Rekompozycje oparte na metodzie ViewTreeLifecycleOwner dla okna. Zmiana kompozycji Znaczniki animacji oparte na mechanizmie withFrameNanos są wstrzymywane, a cykl życia hosta jest wstrzymywany. zatrzymuje się. (I38e11)Recomposer.runningRecomposers oferuje teraz globalny mechanizm StateFlow tylko do odczytu, aby obserwować stan kompozycji w cały proces. Wolę ten interfejs API od Recomposer.current(), który jest teraz wycofane. (If8ebe).
Wersja 1.0.0-alfa11
28 stycznia 2021 roku
androidx.compose.foundation:foundation:1.0.0-alpha11
i androidx.compose.foundation:foundation-layout:1.0.0-alpha11
zostały udostępnione. Wersja 1.0.0-alfa11 zawiera te zatwierdzenia.
Zmiany interfejsu API
Wycofanie funkcji przewijania ScrollBy bez zawieszenia, usunięcia elementu przewijania bez zawieszenia
Teraz zalecamy używanie funkcji zawieszania w celu kontrolowania przewijania i oczekiwania aby zakończyć przewijanie. Wycofujemy lub usuwamy bez zawieszania wersji tych funkcji w ramach tego przejścia. (Zastosowane)
Wycofanie funkcji smooth ScrollBy bez zawieszenia Teraz zalecamy używanie funkcji zawieszania w celu kontrolowania przewijania i oczekiwania aby zakończyć przewijanie. Wycofujemy wersje bez zawieszenia tych funkcji. (I12880)
Do obrazów i ikon został dodany parametr Opis treści. Służy do opisania usług ułatwień dostępu (I2ac4c).
BasicTextField otrzymał nowy parametr o nazwie „decorationBox”. Umożliwia dodanie dekoracji, takich jak ikony, obiekty zastępcze, etykiety i inne podobne do elementów w polu tekstowym, oraz zwiększenie jego docelowego obszaru działania. (I16996).
Parametr canDrag został usunięty z pliku Modifier.draggable (Ic4bec, b/175294473)
Usunięto plik AnimatedFloating.fling, który akceptuje FlingConfig. Użyj opcji Zawieś Animatable.animateDecay. (I4659b, b/177457083)
Usunięto klasę
data class
z tych zajęć:- Treść wbudowanego tekstu
- Lista języków
- (I605C7)
klikalne, włączane i klikalne można teraz tworzyć poza kompozycją (I0a130, b/172938345, b/175294473)
Przewijane kolumny/wiersz zostały wycofane. Korzystanie z ScrollableColumn jest mniej wydajne niż LazyColumn, jeśli masz dużo przewijanych treści, ponieważ LazyColumn umożliwia tylko tworzenie, pomiar i rysowanie widocznych elementów. 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.items(items: List)
iitemsIndexed(items: List)
to teraz funkcje rozszerzeń, więc trzeba je importować ręcznie, gdy są używane. Nowe przeciążenia rozszerzeń dla tablic: items(items: tablica) i itemIndexed(tablica) (I803fc, b/175562574)Wycofana aranżacja bezwzględna została usunięta. (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 false (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ł przetworzony pod nazwą BoxWithConstraints i przeniesiony do pliku Foundation.layout. (I9420b, b/173387208)
Zmiany w funkcjach fabrycznych dla czcionek, rodziny czcionek i kroju czcionki
- Dodano funkcje fabryczne, które zaczynają się od wielkiej litery.
- Wycofane poprzednie funkcje fabryczne zapisane małymi literami pierwsze litery
- Nowe funkcje fabryczne zwracają wartość FontFamily zamiast podklasy
- Ukryto konstruktory podklas, aby mogły tylko w ramach funkcji fabrycznych.
- Zmieniono nazwę Font.asFontFamily na Font.toFontFamily
- (I42aa7).
Data
ComposeContentTestRule
, która obejmuje okres próbnyComposeTestRule
i definiuje zasadęsetContent
, która została usunięta zComposeTestRule
Dodano metodę fabrycznącreateEmptyComposeRule()
zwracającyComposeTestRule
i nie uruchamia aktywności dla do Ciebie. Użyj tej opcji, jeśli chcesz uruchomić aktywność w trakcie testu. np. przy użyciuActivityScenario.launch
(I9d782, b/174472899)animateAsState to teraz animateFooAsState, typu animowanej zmiennej. np. Float, Dp, Offset itp. (Ie7e25)
Gęstość jest teraz zakresem odbiornika w interfejsach rozmieszczenia. (I18aad).
TextFieldValue akceptuje ciąg AnnotatedString. Jest to jednak zmiana wprowadzona tylko w interfejsie API, a edycja tekstu w wielu stylach nie jest zostały już wdrożone.
- Z parametrów konstruktora EditBuffer usunięto parametr
initial
. (I326d5)
- Z parametrów konstruktora EditBuffer usunięto parametr
Nieprawidłowo i kompozytoryzacja() zostały wycofane. Zastąpiono je odpowiednio recomposeScope i ReminderCompositionReference. (I583a8)
Ciąg AnnotatedString został zmieniony tak, aby był dłuższy niż kotlin.CharSequence. Dlatego długość i podsekwencja są teraz funkcjami instancji, i funkcje rozszerzeń. (Iaf429).
Czas trwania i czas działania zastąpimy długimi milisekundami, i eliminuje zależność od danych wejściowych wskaźnika. zajęcia. (Ia33b2, b/175142755, b/177420019)
ZapamiętaneObserver zastępują CompositionLifecycleObserver. , a funkcja CompositionLifecycleObserver została wycofana.
RememberObserver
zastępujeCompositionLifecycleObserver
ze zmodyfikowaną semantyką i o zmienionych nazwach. Przejście na nowy interfejs API może odbywać się automatycznie w przypadku obiektów, które są zapamiętywane tylko raz, czyli są i nadal są co jest zalecane. Jeśli jednak plik referencyjny był zapamiętane więcej niż raz w kompozycjionRemembered
to nazwa dla każdego odwołania, w którym elementonEnter
jest wywoływany tylko raz.onEnter
została wywołana wielokrotnie, jeśli obiekt był używany w podkompozycjach, takich jakWithConstraints
iScaffold
, tworząc singielonEnter
gwarancja połączenia jest niewiarygodna i została usunięta w przypadkuRememberObserver
Funkcja
RememberObserver
dodaje metodęonAbandoned
, która jest wywoływana, jeśli Z powodowanego wywołania zwrotnego jest zwracanaRememberObserver
instancja doremember
, ale nie został zapamiętany w stanie kompozycji i dlatego nigdy nie zostanie wywołana funkcjaonRemembered
. Może to spowodować występują, jeśli wyjątek zakończy kompozycję przed ukończeniem lub kompozycja jest odrzucana, ponieważ stan generuje kompozycja dla nie jest już aktualna lub w inny sposób przestaje być aktualna niezbędną. Jeśli wystąpienieRememberObserver
następujące po singlu powyższa rekomendacja pozwala śledzić zasób zewnętrznyonForgotten
ionAbandoned
wskazują, że nie jest już potrzebny. Jeśli obiekt śledzi pracę rozpoczęte lub przydzielone zasoby w:onRemembered
,onAbandoned
można zignorować, ponieważ nie zostanie wywołana, jeślionRemembered
jest . (I02c36)Zmieniono nazwę TransformedText.transformText na TransformedText.text
- TransformedText nie jest już klasą danych (Ie672a)
Te klasy nie są już klasami danych:
- Ciąg z adnotacjami
- ParagraphStyle
- Styl spanu
- TextStyle
- Waga czcionki
- Ozdobniki tekstu
- TextGeometricTransform
- Indeks tekstowy
- Wynik układu tekstu
- TextLayoutInput (Iaff99),
Usunięto eksperymentalne metody monotonicFrameAnimationClockOf (Ib753f, b/170708374).
Wycofanie metod globalnych współrzędnych i nowych metod współrzędnych opartych na oknie. (IEE284).
Użyj ImeAction.None zamiast ImeAction.NoAction
- Użyj elementu ImeAction.Default zamiast ImeAction.Unspecified (Ie1bcc)).
Element FocusRequester.createRefs jest teraz oznaczony jako eksperymentalna, ponieważ może się zmienić. (I2d898, b/177000821)
Nazwa Semantics PropertyReceiver.hidden została zmieniona na invisibleToUser i oznaczona jako @ExperimentalComposeUiApi. Nazwa AccessibilityRangeInfo została zmieniona na ProgressBarRangeInfo. Nazwa parametru stateDescriptionRange została zmieniona na progressBarRangeInfo. Nazwa Accessibility ScrollState została zmieniona na ScrollAxisRange. Nazwa levelAccessibility ScrollState została zmieniona na level ScrollAxisRange. Nazwa pionowości ScrollState została zmieniona na vertical ScrollAxisRange. (Id3148).
Zmieniliśmy VisualTransformation, by stała się praktycznym interfejsem (I3bba4)
Wykorzystanie narzędzia TestCoroutineDispatcher w testowaniu (I532b6)
Usunięto dane PointerInputData i zmodyfikowano PointerInputChange wszystkie pola PointerInputData. Utworzono zdarzenie PointerInputEvent i PointerInputEventData, bo nie są używane dowolny publiczny interfejs API. (Ifff97, b/175142755)
Zmieniono nazwę TextInputService.onStateUpdated na updateState (Id4853)
Usuń parametr displaySize, ponieważ powinien się unikać. Zwykle jest to lepiej użyć rozmiaru co najmniej onRoot() lub rozmiaru okna. (I62db4).
Wersja 1.0.0-alpha10
13 stycznia 2021 r.
androidx.compose.foundation:foundation:1.0.0-alpha10
i androidx.compose.foundation:foundation-layout:1.0.0-alpha10
zostały udostępnione. Wersja 1.0.0-alfa10 zawiera te zatwierdzenia.
Zmiany interfejsu API
- ImeOptions i keyOptions nie są już klasą danych (I3c898, b/168684531).
- Zmiany w interfejsie VisualTransformation API
- Zmieniono nazwę OffsetMap na OffsetMapping
- Zmieniono nazwę OffsetMapping.identityOffsetMap na OffsetMapping.Identity
- Transformacja hasła nie jest już klasą danych.
- Przeniesiono OffsetMapping do własnego pliku
- (I0bdf3).
- EditOperations API Zmiany
- Zmieniono nazwę operacji EditOperation na EditCommand
- Dodano sufiks polecenia dla konkretnych implementacji EditOperation
- Pole EditCommand nie jest już klasami danych.
- Zmieniono nazwę funkcji EditOperation.process na applyTo
- Zmieniono nazwę detektora zdarzeń wejściowych nainputEventCallback
- (I0a366)
- Zmodyfikowano prędkość, aby obejmowała składowe i matematyczne operacji. (IB0447)
- Zmieniono nazwę @EksperymentalTesting na @EksperymentalTestApi na spójne z podobnymi eksperymentalnymi adnotacjami interfejsu API (Ia4502, b/171464963).
- Dodano eksperymentalną metodę stickyHeader dla LazyColumn/LazyRow (I0a81d).
- Zmieniono nazwę 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ę natywny do interfejsu użytkownika i udostępniono go do użytku wewnętrznego. Zaktualizowano przypadki użycia natywnego klasy w równa się implementacji do użycia „to MyClass” . (I4f734)
- Obiekty FlowRow i FlowColumn zostały wycofane. Użyj układu niestandardowego. (I09027)
- Modifier.focus() i Mmodifier.focusRequester() zostały wycofane. Użyj w zamian metod Modifier.focusModifier() i Modifier.focusReference(). (I75a48, b/175160751, b/175160532, b/175077829)
- Wprowadzono opcję SelectionRegistrar.notifySelectableChange, aby powiadamiać użytkowników o aktualizacjach Selectable (Zaznaczanie) w usłudze SelectionManager. (I6ff30, b/173215242)
- Zmieniono
fun Dp.isFinite()
naval Dp.isFinite
(I50e00) - Nazwa ograniczenia#satisfiedBy została zmieniona na isSatisfiedBy. (I9cf5c).
- Dodano element jest określony, nieokreślony i useOrElse dla klas wbudowanych ze stałą nieokreśloną. (I93f7b, b/174310811)
Poprawki błędów
- Nowy interfejs API
Animatable
oparty na współudziale, który zapewnia wzajemną wyłączność między animacjami. Nowa specyfikacja DecayAnimationSpec, która obsługuje wielowymiarową animację rozpadu (I820f2, b/168014930) - Dodano obsługę wyłączonych i tylko do odczytu pól tekstowych (I35279, b/171040474, b/166478534)
- Ciąg
animate()
został zastąpiony tekstemanimateAsState()
, , który zwracaState<T>
zamiastT
. Dzięki temu skuteczności, ponieważ można zawęzić zakres unieważniania w którym odczytywana jest wartość State. (IB179e) - Dodaj interfejs API roli Semantics i Rolę jako parametr do klikalny, wybierany i włączany SemanticsModifier. Zmieniono Modifier.progressSemantics, aby Slider mógł z niego korzystać. (I216cd)
- Dostęp do natywnego zdarzenia keyEvent można teraz uzyskać przez keyEvent.nativeKeyEvent (I87c57, b/173086397)
Wersja 1.0.0-alpha09
16 grudnia 2020 roku
androidx.compose.foundation:foundation:1.0.0-alpha09
i androidx.compose.foundation:foundation-layout:1.0.0-alpha09
zostały udostępnione. Wersja 1.0.0-alfa09 zawiera te zatwierdzenia.
Zmiany interfejsu API
Dodaj interfejs przewijany
Dzięki temu ScrollState i LazyListState mogą być traktowane jako wspólne co pozwala na stosowanie przewijania niestandardowego w obu typach stron.
Powoduje to również przejście w trybie smooth ScrollBy do funkcji rozszerzenia w sekcji Scrollable, korzystając z tej funkcji. (I2153B)
Dodano opcję LazyVerticalGrid. (I17267, b/162213211)
Wycofano LazyColumnFor, LazyRowFor, LazyColumnForIndexed i LazyRowForIndexed. Użyj LazyColumn i LazyRow (I5b48c)
Zmieniono nazwę na potrzeby zawieszania interfejsów API wejściowych wskaźnika HandlePointerInputScope do AwaitPointerEventScope i handlePointerInput() na awaitPointerEventScope(). (Idf0a1, b/175142755)
Dodano LazyListState.layoutInfo, który wyświetla listę rozmiarów i przesunięć aktualnie widocznych elementów (If8678, b/170472532).
Usunięto adnotację ExperimentalPointerInput (Ia7a24).
Dodaliśmy obsługę obiektu InteractionState dla pól tekstowych. (I61d91)
Dodaj parametr odwrotny układ dla LazyColumn/Row. gdy elementy (
true
) będą układane od dołu do góry, aLazyListState.firstVisibleItemIndex == 0
oznacza, że pierwszy element znajduje się na dole. (I552ae, b/166589935)Dodano parametr rozmieszczenia pionowego do LazyColumn. Dodano parametr levelArrangement do LazyRow. Układ pozwala dodawać odstępy między produktami i określać ich rozmieszczenie, gdy nie ma ich wystarczająco dużo, aby wypełnić cały minimalny rozmiar. (Icf79a, b/170394300)
DetectMultitouchSteps używa teraz jednego wywołania zwrotnego z kombinacją parametrów centroidu, przesuwania, powiększania i obracania. (Ie6e1c).
Przeniesiono ContentDrawScope do grafiki UI z DrawScope. (Iee043, b/173832789)
Poprawki błędów
- Funkcje lambda w modyfikatorach przesunięcia zwracają teraz wartość IntOffset, a nie liczbę zmiennoprzecinkową. (Ic9ee5, b/174137212, b/174146755)
Usunięto interfejsy SlotTable, SlotReader i SlotWriter z publicznego interfejsu API. Zostały one oznaczone jako Poprzednio InternalComposeAPI. Teraz są wewnętrzne do modułu tworzenia wiadomości.
Atrybuty CompositionData i CompositionGroup zostały dodane jako zamiennik interfejsu ui-tooling API do wyodrębniania informacje o kompozycji. Są one publiczne, ale nie przeznaczone do użytku poza interfejsem ui-tooling API, ponieważ zapewniają nieprzetworzone informacje interpretowane przez interfejs ui-tooling API (I31a9c);
Refaktoryczny ShaderBrush na leniwie twórz instancję cieniowania, informacje o rozmiarze rysunku i środowisko. Przydaje się to do definiowania gradientów zajmują pełne granice rysowania funkcji kompozycyjnej w momencie kompozycji, bez konieczności na wdrożenie niestandardowych implementacji DrawModifier.
Wycofane interfejsy API konstruktora funkcji gradientu na metodę fabryczną obiektu Gradient. (I511fc, b/173066799)
Interfejs Modifier.focusObserver został wycofany. Użyj metody Modifier.onFocusChanged lub Modifier.onFocusEvent (I30f17, b/168511863, b/168511484)
Autofill API to teraz eksperymentalny interfejs API, który wymaga włączenia (I0a1ec)
Dodawanie deklaracji demontażu struktury w celu utworzenia instancji FocusRequester (I35d84, b/174817008)
AccessibilityLabel została zmieniona na contentDescription. Zmieniono nazwę ułatwień dostępu na stateDescription. (I250f2)
Wprowadziliśmy kilka nowych funkcji w Rejestrze wyboru i przemianowaliśmy parametr onPositionChange na nazwę notificationPositionChange. (Ifbaf7).
AndroidOwner jest wewnętrzny (Ibcad0, b/170296980)
Nowa funkcja nieskończoności powtarzania do tworzenia specyfikacji InfiniteRepeatableSpec (I668e5)
Zmieniono interfejs
Applier
, aby uprościć buduj drzewa od dołu, a nie od góry.Nazwa metody
insert()
została zmieniona nainsertTopDown()
.Dodano nową metodę:
insertBottomUp()
.Stosowany sposób wstawia węzły do edytowanego drzewa przy użyciu
insertTopDown()
lubinsertBottomUp()
w zależności od który jest skuteczniejszy.Niektóre drzewa, takie jak
LayoutNode
iView
, są znacznie większe efektywniej tworzyć reklamy od dołu do góry niż od góry. Przed tą zmianą trzeba było wdrożyć od dołu stos wkładek, była skopiowana do każdego podmiotu, który wymagał przeprowadzenia oddolnej i zwiększania wydajności. W związku z tą zmianąApplier
zastępujeinsertBottomUp()
, aby utworzyć drzewo od dołuinsertTopDown()
, aby utworzyć drzewo od góry. (Icbdc2)Dodano interfejs PaintterResource API do obsługi nieprzezroczystych obiektów Painter z dowolnego z zrasteryzowanych formatów zasobów (np. PNG) lub VectorDrawables. Konsumenci nie mają już aby z wyprzedzeniem określić typ zasobu i mogą wywołać tę metodę, aby uzyskać obiekt Painter do użycia w funkcjach kompozycyjnych lub modyfikatorów do malowania obrazów. (I2c703, b/173818471)
Dodano w kolejności funkcję fabryczną buildAnnotatedString, aby utworzyć obiekt AdnotatedString. Wycofany ciąg z adnotacjami za pomocą funkcji konstruktora. (Idfe0b)
Wersja 1.0.0-alpha08
Grudzień 2, 2020
androidx.compose.foundation:foundation:1.0.0-alpha08
i androidx.compose.foundation:foundation-layout:1.0.0-alpha08
zostały udostępnione. Wersja 1.0.0-alfa08 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Z parametru
CoreTextField
usunięto parametrmaxLines
. Jeśli chcesz ograniczyć wysokość pola tekstowego liczbą wierszy, użyj funkcjiBasicTextField
. (Iec002). - Zmieniono metody
await*TouchSlop()
na nie wykryje wskaźnika w dół i zmienił nazwę na*OrCancellation
Wyeliminowaliśmy także konieczność stosowaniaorientationLock
. (IE96e1). - Dodano sprawdzanie nazw i pozycji parametrów kompozycyjnych lambda w celu sprawdzenia spójności z wytycznymi dotyczącymi tworzenia wiadomości.
Zgodnie ze sprawdzaniem lintowania i wskazówkami przenieśliśmy też niektóre interfejsy API z użyciem nazwy
children
jako nazwy końcowej lambdy docontent
. (Iec48e). foundation:foundation-text
interfejsów API zostało przeniesionych do usługifoundation:foundation
. Struktura pakietu pozostała bez zmian (Id3eb2).- Nowy detektor gestów wielodotykowych, w tym: pomagają wykrywać obrót, powiększenie i przesuwanie. (IC459d).
- Nowy detektor gestów przeciągania – zawieszanie wskaźnika wejściowy interfejs API, w tym blokowanie orientacji. (Icef25).
- Zmieniono nazwę zasobu wektorowego na ImageVector Przeniesiono zasób VectorAsset do Builder i zmieniono jego nazwę na być wewnętrzną klasą ImageVector zgodnie z wytyczne rady ds. interfejsów API. Dodano alias typu VectorAssetBuilder do do pliku ImageVector.Builder dla zgodności. (Icfdc8)
- Zmieniono nazwy komponentu ImageAsset oraz powiązane z ImageBitmap. (Ia2d99)
- Przeniesiono właściwości semantyki podstawowej do interfejsu użytkownika (I6f05c)
Dodaj interfejsy API do przewijania opartego na współrzędnych:
Dodaje parametry LazyListState.snapToItem i LazyListState.smooth ScrollBy, a także elementy niższego poziomu Interfejsy API do sterowania przewijaniem. Te interfejsy API udostępniają interfejs zawieszania i kontrolują przewijanie który czeka na zakończenie przewijania przed zwróceniem. (IE5642)
Do pól BasicTextField, TextField i OutlinedTextField dodaliśmy parametr singeLine. Ustaw ten parametr na „true”, aby pole tekstowe było jedną linią, którą można przewijać w poziomie. (I57004, b/168187755)
Wykrywanie gestów do kliknięcia, dwukrotnego dotknięcia, przytrzymania oraz oznaczenie prasy zostały dodane za pomocą nowego wskaźnika zawieszania. dane wejściowe. Dodaliśmy również kilka narzędzi, które ułatwiają korzystanie które pozwalają programistom na pisanie własnych wzorców do wykrywania gestów. (I00807).
W podstawie musi być dodana funkcja Modifier.focusable. Umożliwia dodanie do komponentu zachowania, które można zaznaczyć, zachowując przy tym prawidłową semantykę i ułatwienia dostępu. (I41eb9, b/152525426, b/162865824)
Wcześniej wycofane interfejsy API zostały usunięte: usunięto obramowanie, zamiast niego użyj BorderStroke. Usunięto modyfikator.drawBorder. Zamiast niego użyj Modifier.granic. Usunięto modyfikator.grawitacji. Zamiast niego użyj Modifier.align. Stos został usunięty. Zamiast niego użyj Box (I32c2b, b/172470874)
Zmieniono nazwę Arrangement.Bezwzględna. (If26f2).
Poprawki błędów
- Przeniesiono interfejsy API DrawModifier z androidx.compose.ui do androidx.compose.ui.draw. Plik DrawModifierlegacy.kt został utworzony w uwzględnij aliasy typów/metody pomocnicze, aby ułatwić migracji z wycofanych do bieżących API. (Id6044, b/173834241)
- Nazwa Modifier.drawLayer została zmieniona na Modifier.graphicsLayer Zaktualizowaliśmy też powiązane klasy w GraphicsLayer zgodnie z opinii Rady ds. interfejsów API. (I0bd29, b/173834241)
- Element
<T>
został usunięty z deklaracji SubcomposeLayout. Możesz go użyć bez określania typu. (IB60c8) - Zwiększenie czasu działania PointerInputData pola pozycji nie mogą mieć wartości null. (Id468a).
- MaterialTheme ustawia teraz prawidłowe kolory uchwytów wyboru i tła zaznaczenia. Aplikacje niematerialne mogą ręcznie używać elementów AmbientTextSelectionColors, aby dostosowywać kolory używane do zaznaczenia. (I1e6f4, b/139320372, b/139320907)
- Nazwa parametru wyrównania Box została zmieniona na contentWyrównajment. (I2C957)
- Zmieniono nazwy modyfikatorów przesunięciaPx na przesunięcie. 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)
- Zaktualizowano TextFieldValue API
- ustawił wartość pola TextFieldValue.composition tylko do odczytu
- usunięto wyjątek dla nieprawidłowego zakresu wyboru (I4a675, b/172239032)
- Wycofany komponent Ambient został wycofany z sufiksem
Ambient
i zastąpił je nowymi właściwościami z prefiksem Ambient zgodnie z innymi wytycznymi dotyczącymi interfejsu Ambients i Compose API. (I33440) - Dodano otokę kroju czcionki na Androidzie. Aby załadować Androida,
Krój pisma za pomocą funkcji
typeface
, np.typeface(Typeface.DEFAULT)
. Nazwa została też zmieniona ztypefaceFromFontFamily()
natypeface()
(I52ab7) - Dodaliśmy sprawdzanie lintowania, aby sprawdzić, czy fabryki modyfikatorów używają wewnętrznie interfejsu
androidx.compose.ui.composed {}
, a nie są oznaczane jako@Composable
. (I3c4bc). - Dodano sprawdzanie lintowania w celu sprawdzenia, czy funkcje fabryczne modyfikatora są zdefiniowane jako rozszerzenia modyfikatora, co pozwala na płynne łączenie ich w łańcuchy. (I07981).
- Nazwa argumentu semantyka mergeAllDescendants została zmieniona na mergeDescendants. (IB6250)
- Kontrola czasu w testach (TestAnimationClock i jego zastosowania) to teraz w fazie eksperymentalnej (I6ef86, b/171378521)
- Usuń stary moduł testowania interfejsu i jego złącza (I3a7cb)
- Nazwa elementu TextUnit.Inherit została zmieniona na TextUnit.Nieokreślona zgodnie z innymi jednostkami. (Ifce19).
- Interfejs Wyrównania został zaktualizowany i działa. (I46a07, b/172311734)
- Moduł
foundation:foundation-text
został scalony z modułemfoundation:foundation
(Idac0f) - Wycofywanie elementu Place(Offset) i placeRelative(Przesunięcie) Użyj przeciążeń z przesunięciami w całości (I4c5e7)
- Nazwa konta
id
została zmieniona nalayoutId
w domenieLayoutIdParentData
. Nazwa „Measurable.id
” została zmieniona naMeasurable.layoutId
. (Iadbcb, b/172449643)
Wersja 1.0.0-alpha07
11 listopada 2020 roku
androidx.compose.foundation:foundation:1.0.0-alpha07
, androidx.compose.foundation:foundation-layout:1.0.0-alpha07
i androidx.compose.foundation:foundation-text:1.0.0-alpha07
zostały udostępnione. Wersja 1.0.0-alfa07 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Podobnie jak
Modifier.fillMaxSize[Width|Height]
, obsługujemy teraz ułamki w zakresieModifier.fillParentMaxSize[Width|Height]
w zakresieLazyColumn/Row
(I797e2, b/166586426). - Usunięto reakcję
KeyboardOptions.toImeOptions
na publiczny interfejs API. (IC2e45). - Podstawowe funkcje AmbientTextStyle, ProvideTextStyle i AmbientContentColor zostały wycofane. Zamiast nich używaj nowych wersji dostępnych w bibliotece Material Design. W przypadku aplikacji innych niż Material Design należy utworzyć własny system projektowania specyficznych dla nich motywów graficznych, z którego można korzystać w własnych komponentach. (I74acc, b/172067770)
- Foundation.Text została wycofana i zastąpiona materiałem material.Text. Informacje o podstawowym, nieopiniowanym interfejsie API tekstowym, który nie przetwarza wartości z motywu, znajdziesz na stronie androidx.compose.foundation.BasicText. (If64cb).
- Dodano maxLines do pól tekstowych (Ib2a5b).
- Zaktualizuj pola TextFields, aby akceptować KlawiaturaOptions (Ida7f3)
- dodano KeyboardOptions do użytku w polach tekstowych (I9ca32).
- Dodaje interfejs BasicText jako interfejs API do obsługi tekstu bez tworzenia opinii, równolegle do interfejsu BasicTextField. (I28268)
- Usunięto adnotację ExperimentalLazyDsl. LazyColumn/LazyRow można teraz używać bez dodawania @OptIn (Idab7a, b/166584730)
- Pole BaseTextField zostało wycofane. Użyj w zamian pola BasicTextField. (I896eb)
- Pole BasicTextField zostało dodane do zastąpienia zarówno CoreTextField, jak i BaseTextField (Id4cea).
- Usuń wycofane elementy LazyColumnItems/LazyRowItems (I1d8a8)
- Wycofane komponenty kompozycyjne służące do dostosowywania rozmiaru do pomiarów wewnętrznych zostały usunięte. (I18537, b/171811496)
- Zmieniono nazwę parametru metricPaddingFrom na splashFrom. Dodaliśmy modyfikator paddingFromBaseline, aby ułatwić określenie odległości od granic układu do linii bazowych tekstu. (I0440a, b/170633813)
- Parametr matchHeightConstraintsFirst został dodany do modyfikatora parameterRatio, którego można użyć do określenia ograniczenia rozmiaru do wysokości przed próbą stosowania korespondentów szerokości. (IE7c43, b/155290593)
- Wycofane ograniczenia DpConstraint zostały usunięte. (I87884, b/171702471)
Poprawki błędów
- Wprowadzona funkcja ScaleFactor
klasa śródtekstowa reprezentująca skalę
czynniki wpływające na orientację poziomą i pionową
osie niezależne od siebie w kolejności
na potrzeby niejednolitych zastosowań skalowania.
- Do metody computeScaleFactor dodano metodę computeScaleFactor Skala treści
- Dodano funkcję ContentScale.FillBounds do wykonania. niejednolite skalowanie w celu rozciągnięcia źródła które w pełni zajmują miejsce docelowe.
- Dodano metody operatorów do obliczeń Parametry ScaleFactor z parametrami Size.
- (IC96a6, b/172291582)
- Sekcja CapToBitmap została przeniesiona do obrazu scanToImage. (I86385)
- Oznacza CoreText jako @InternalTextApi. Użyj tekstu BasicText. (I6aaeb).
- Zmień nazwę KeyboardOptions na ImeOptions (I82f36).
- Przeniesiono KlawiaturaType i ImeAction do KlawiaturaOptions (I910ce).
- Pole CoreTextField zostało oznaczone jako @InternalTextApi. Użyj natomiast BasicTextField (Ie2469)
- Adnotacja ExperimentalSubcomposeLayoutApi została usunięta. Elementu SubcomposeLayout można teraz używać bez dodawania elementu @OptIn (I708ad)
- Przedstawienie modułu ui-test-junit4 (Ib91f8).
- Zaktualizowany interfejs Icon API, aby stał się dostępny w przypadku koloru.Nieokreślony jako możliwy odcień, który będzie rysował uzyskany kolor lub malarza bez filtra ColorFilter. Wcześniej próbuje zignorować zabarwienie za pomocą parametru Color.Unspecified zabarwienie na przezroczystym kolorze w ogóle nie jest renderowana. (I049e2, b/171624632)
- Element MeasureResult został przeniesiony z obiektu 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 element SelectionContainer bez wywołania zwrotnego (Ibfadb)
- Dodaj testy dla elementu SelectionHandles' Pozycje w komponencie SelectionContainer. (Ie93db)
- Dodano opcję autokorekty IME dla klawiatury (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-alfa06 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Strona androidx.compose.foundation.Icon została przeniesiona do androidx.compose.material.Icon. Jeśli nie chcesz korzystać z biblioteki Material Design, możesz w narzędziu Painter użyć komponentu Image / Modifier.paint() . (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 „alignBy” (I06503, b/170628732)
- Box został przekształcony w funkcję wbudowaną. (Ibce0c, b/155056091)
- Dodano maxLines do CoreTextField (Ibee58, b/143687793)
- Do CoreTextField dodano program softwrap. (I21a4b)
Poprawki błędów
- Wycofanie VectorPainter z korzyścią na lepsze radzenia sobie z. wskazują, że interfejs API kompozycyjny jest wewnętrzny Wykorzystywane jest słowo „zapamiętanie” zachowywania danych w kompozycje. (Ifda43).
- włącz przejścia w zasadzie ComposeTestRule; usuń opcję włącz migający kursor w ComposeTestRule. (If0de3).
- Do CoreTextField (I72e6d) dodano opcję klawiatury jednowierszowej.
- Zmieniono nazwę Radius API na Promień narożnika ułatwiający ekspresowanie jak jest on używany w tworzeniu. Zaktualizowaliśmy dokumentację, aby wskazać że ujemne promienie narożników są zaciśnięte, do zera. (I130c7, b/168762961)
- Dodaj możliwość podawania informacji inspektora w modyfikatorze utworzonym (Idee08, b/163494569)
- Dodano opcję IME dla wielkich liter (I8ac38).
- Popraw pozycję uchwytu RTL. (I6e1e0).
- Zmiana powodująca niezgodność: usunęliśmy wartość zwracaną z metody PointerInputFilter.onPointerEvent(...), ponieważ jedyną wartością, którą można zmienić w zdarzeniach wskaźnika, są dane o wykorzystaniu. Zamiast zwracać dane z metody PointerInputFilter.onPointerEvent(...), możesz teraz po prostu zmodyfikować dane wykorzystania przekazywanego zdarzenia PointerEvents. (I6acd0).
- Do menu wyboru dodano opcję SelectAll (Ief02b).
Wersja 1.0.0-alpha05
14 października 2020 r.
androidx.compose.foundation:foundation:1.0.0-alpha05
, androidx.compose.foundation:foundation-layout:1.0.0-alpha05
i androidx.compose.foundation:foundation-text:1.0.0-alpha05
zostały udostępnione. Wersja 1.0.0-alfa05 zawiera te zatwierdzenia.
Zmiany interfejsu API
- CoreTextField obsługuje teraz funkcje kursora (Id23aa)
Wycofuje interfejsy API contentColor() i currentTextStyle(), a następnie zastępuje je odpowiednio środowiskom AmbientContentColor i AmbientTextStyle. Aby uzyskać dostęp do bieżącej wartości, użyj właściwości
.current
z właściwości trybu nieaktywnego, jak w przypadku każdego innego elementu otoczenia. Zmiana ta została wprowadzona w celu zachowania spójności i uniknięcia korzystania z wielu 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 -> Kolor treści Ambient
- TextStyleAmbient -> Styl tekstu otoczenia
- IndicationAmbient -> Wskazanie otoczenia
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
Poprawki błędów
- W ramach standaryzacji wartości ustawnych dla klas wbudowanych, zmień nazwę Kolor.Usuń ustawienie na Kolor.Nieokreślony w celu zachowania spójności z innymi klasami wbudowanych (I97611, b/169797763)
- Dodano działania ułatwień dostępu Kopiuj/wklej/wytnij (I6db4f)
- Wprowadzono tekst TextOverflow.None. Gdy nadmiarowe ma wartość Brak, tekst nie obsługuje już nadmiarowych elementów i zgłasza rzeczywisty rozmiar do LayoutNode. (I175c9, b/158830170)
- Zaktualizowany rozmiar.Nieokreślony jako Float.NaN, a nie Liczba zmiennoprzecinkowa.POSITIVE_INFINITY. Zaktualizowano implementacje narzędzia Painter na Sprawdź pod kątem rozmiaru.Dodatkowo nieokreślony jako rozmiarów nieskończonych. (I95a7e)
- dodano moduł strony docelowej i integrację stronicowania (Ib85da),
- Zmodyfikuj LazyListScope, aby otrzymywać wartości do wartości null (I1765b)
- Nazwa OnPositionedModifier została zmieniona na OnGloballyPositionedModifier a nazwa onPositioned() została zmieniona na onGloballyPositioned(). (I587e8, b/169083903)
- Dodano przykłady dla LazyColumn/Row (Idc16d).
- Naprawiono metody items i itemsIndexed zezwalające na pustąListę (I06647)
- Dodaj DSL do określania informacji o inspektorze (Ic9a22)
- Przenieś do tekstu przytrzymanie. (Iff2bc)
- Wyłącz zaznaczanie w tekście i wersję demonstracyjną. (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
androidx.compose.foundation:foundation:1.0.0-alpha04
, androidx.compose.foundation:foundation-layout:1.0.0-alpha04
i androidx.compose.foundation:foundation-text:1.0.0-alpha04
zostały udostępnione. Wersja 1.0.0-alfa04 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Nazwa stosu została zmieniona na Box. Dotychczasowa wersja Foundation.Box zostanie zastąpiona nową kartą compose.foundation.layout. Działanie nowego pola to układanie elementów podrzędnych jeden nad drugim, jeśli ma kilka elementów podrzędnych. Różni się to od poprzedniej skrzynki, która działała podobnie jak kolumna. (I94893, b/167680279)
- Parametry dekoracji pola 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. Pozwala to obserwować i kontrolować pozycję przewijania Komponenty LazyRow i LazyColumn. Instancje można tworzyć za pomocą zapamiętujLazyListState() i przekazuj je do parametru stanu funkcji . Obecnie pierwszy widoczny element i odsunięcia mogą być zaobserwowanych w tej początkowej wersji. (Ic7cb7, b/159307669)
- Leniwe położenie listy i odsunięcie przewijania są teraz zapisywane przywrócone w ramach odtwarzania aktywności (Ie045f, b/166589058)
- Dodaj działanie semantyki długiego kliknięcia (I6281b, b/156468846)
- Dodano narzędzie Mutatormutex do utrzymywania pojedynczego mutatora dla „udostępniany stan” w czasie i anulowanie kolidujących mutatorów według priorytetu (I3f975)
- Adnotacja rootAnimationClockFactory, wyraźnesEnabled, mlinkingCursorEnabled i textInputServiceFactory z @WidoczneForTesting ustaw wewnętrzny interfejs API i ukryj jego dokument kdoc (I554eb, b/168308412)
- Usunięto parametr inlineContent z tekstu zawierającego ciąg znaków. Nie zostanie użyty, ponieważ element inlineContent musi działać z AnnotatedString. (Ief403).
- Wycofane niestandardowe interfejsy aranżacji interfejsów API zostały usunięte. (IC576d, b/168297922, b/168297923)
- Parametr
unbounded
został dodany do modyfikatorów wrapContentSize, co umożliwia pomiar elementu układu z nieskończonymi ograniczeniami maksymalnymi. (I77951, b/158559319) - Zablokowaliśmy statyczne importowanie treści zakresów układu (np.alignWithSiblings w RowScope). Zamiast niego należy stosować alternatywny zakres wyraźny:
with(RowScope) { Modifier.alignWithSiblings(FirstBaseline) }
. (I216be, b/166760797)
Poprawki błędów
- Zaktualizowano wiele interfejsów API związanych z grafiką
- Zaktualizowano skalę i obrót interfejsów API transformacji, aby wykorzystać Parametr przesunięcia reprezentujący tabelę przestawną współrzędna zamiast osobnej liczby zmiennoprzecinkowej dla współrzędnych x/y w DrawScope i DrawTransform
- Usunięto elementy Rect.expandToInclude i Rect.join metod
- Zaktualizowaliśmy dokumentację dotyczącą promienia o owalu. oprócz orbitreka
- Dodaliśmy dokumentację, by wskazać publiczny konstruktor dla wbudowanego promienia klasa nie powinna być wywoływana bezpośrednio, Wystąpienia obiektów o określonym promieniu powinny być tworzone przez ich konstruktory funkcji
- Usunęliśmy interfejsy RoundRect API do wysyłania zapytań dotyczących górnego prawa, dolny róg, dolny środek itp.
- Wycofano Rect.shift na rzecz Rect.translate
- Usunięto interfejsy API RoundRect.grow i Rect.shrink
- Zmieniono nazwę RoundRect.outerRect na Rect.boundingRect
- Usunięto element RoundRect.middleRect/tallMiddleRect/wideMiddleRect i Rect.isStadium
- Nazwa RoundRect.longestSide została zmieniona na RoundRect.maxDimensions
- Zmieniono nazwę RoundRect.shortestSide na RoundRect.mindimension
- Zmieniono RoundRect.center na właściwość, a nie funkcję
- Zaktualizowano konstruktor RoundRect, który wykorzystuje właściwości Radius zamiast poszczególnych parametrów dla wartości promieni x/y.
- Usunięto interfejsy Size API, które zakładały, że jest to prostokąt z nazwą origin 0,0
- Do interfejsu Radius dodano interfejs API destrukcyjny.
- Przeniesiono różne funkcje rozszerzenia RoundRect 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 awarię w LazyColumnFor/LazyRowFor po przewinięciu i zmianie elementów oraz wdrożeniu automatycznego przewijania w górę, gdy wcześniej widoczny element został usunięty. Dzięki temu nie wyświetlamy już pustych luk na końcu (I220ab, b/161480164, b/167855468).
- Nie można już umieszczać elementów przewijanych w kontenerach tego samego kierunku, takich jak ScrollableContainer i LazyColumnFor. Nigdy nie było obsługiwane i po prostu nie dało się z niego korzystać. Komunikował się on z kompozycją elementów LazyColumnFor (I6e101).
- Zaktualizowano wiele interfejsów API związanych z grafiką
- Zaktualizowano interfejsy API DrawScope z zakresem metod transformacji, aby wskazać, że przekształcenie jest stosowane tylko w wywołanie zwrotne i usunięte po wywołaniu
- Zaktualizowaliśmy dokumentację klipPath, aby odnosiła się do ścieżki zamiast zaokrąglonego prostokąta
- Poprawiono odstępy w dokumentacji dla prawego parametru w klipPath
- usunięto parametr rozmiaru
- Zmieniono nazwę parametrów Dx/dy w metodzie wstawienia na w poziomie i w pionie
- Dodano przeciążenie wektorowe, które zapewnia ten sam wartość wcięcia do wszystkich 4 granic
- Usunięto dokumentację metody wstawiania wskazującą, które wcięcie zostanie zastosowane do wszystkich 4 stron,
- Zaktualizowano dokumentację klasy Rect
- Zaktualizowano komentarze do parametrów prostokąta, aby pasowały do dokumentu kdoc styl
- Usunięto elementy Rect.join i Rect.expandToInclude
- Utworzono przeciążenie dla Rect.translate(offset) i wycofano Rect.shift
- (If086a, b/167737376)
- do właściwości semantyki dodaj parametr Accessibility ScrollState. (Ifeda9).
- Ustaw TextRange w tekście, aby uniknąć tworzenia obiektów. (Id034b)
- Ograniczenia akapitu zostały usunięte. Szerokość jest teraz przekazywana bezpośrednio do akapitu. (Ica712).
Wersja 1.0.0-alpha03
16 września 2020 roku
androidx.compose.foundation:foundation:1.0.0-alpha03
, androidx.compose.foundation:foundation-layout:1.0.0-alpha03
i androidx.compose.foundation:foundation-text:1.0.0-alpha03
zostały udostępnione. Wersja 1.0.0-alfa03 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Nazwa InnerPadding została zmieniona 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 Stosu dodano parametr wyrównania, który umożliwia określenie domyślnego wyrównania dla wszystkich elementów podrzędnych Stos. (IE80ca, b/164085265)
Poprawki błędów
- Funkcje DpConstraints i interfejsy API korzystające z nich zostały wycofane. (I90cdb, b/167389835)
- Parametry
minWidth
imaxWidth
zdarzeniawidthIn
zostały zmienione namin
imax
. Podobnie w przypadku:preferredWidthIn
,heightIn
ipreferredHeightIn
. (I0e5e1, b/167389544) - Dodano onNode i inne metody globalne w ComposeTestRule jako obecne globalne słowa kluczowe zostaną wycofane. (IEAE36).
- stały sposób obliczania rozmiaru i pozycji w MigrateScope, spowodowane m.in. przez generowanie nieprawidłowych gestów przesuwania (Iaf358, b/166589947)
- Przeniesiono
createAndroidComposeRule
iAndroidInputDispatcher
zandroidx.ui.test.android
doandroidx.ui.test
(Idef08, b/164060572)
Wersja 1.0.0-alpha02
Wrzesień 2, 2020
androidx.compose.foundation:foundation:1.0.0-alpha02
, androidx.compose.foundation:foundation-layout:1.0.0-alpha02
i androidx.compose.foundation:foundation-text:1.0.0-alpha02
zostały udostępnione. Wersja 1.0.0-alfa02 zawiera te zatwierdzenia.
Poprawki błędów
- TestUiDispatcher jest oznaczony jako eksperymentalny (Iae99d, b/161247083)
Dodano użytkownika
ManualFrameClock.hasAwaiters
, aby sprawdzić, czy coś jest oczekiwanie na klatkę z zegara;runWithManualClock
jako zamiennik dlarunBlocking
w przypadku testów, które wymagają ManualFrameClock;TestUiDispatcher.Main
, który zapewnia łatwy dostęp do głównego dyspozytora UI podczas testów.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") } }
Wersja 1.0.0-alpha01
26 sierpnia 2020 r.
androidx.compose.foundation:foundation:1.0.0-alpha01
, androidx.compose.foundation:foundation-layout:1.0.0-alpha01
i androidx.compose.foundation:foundation-text:1.0.0-alpha01
zostały udostępnione. Wersja 1.0.0-alfa01 zawiera te zatwierdzenia.
Wersja 0.1.0-dev
Wersja 0.1.0-dev17
19 sierpnia 2020 r.
androidx.compose.foundation:foundation:0.1.0-dev17
, androidx.compose.foundation:foundation-layout:0.1.0-dev17
i androidx.compose.foundation:foundation-text:0.1.0-dev17
zostały udostępnione. Wersja 0.1.0-dev17 zawiera te zatwierdzenia.
Zmiany interfejsu 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 również wyrównany układ, aby umożliwić umieszczanie elementów podrzędnych układu obok siebie i wyrównanie w wierszu/kolumnie zgodnie z wyrównaniem. Poprzednie metody Arrangement.Vertical#arrange i Arrangement.Level#arrange zostały wycofane i w przyszłości nie będzie można zapisywać układów niestandardowych. (I6733d, b/161985975)
- Przesunięcie stało się klasą wbudowaną (Iaec70)
- Usunięto wywołania zwrotne onFocusChanged z TextField. Zamiast niej użyj metody Modifier.focusObserver. (I51089, b/161297615)
- Interfejs Modifier.drawBorder został wycofany. Zamiast niego użyj metody Modifier.granic. Klasa danych obramowania została zastąpiona przez BorderStroke (I4257d, b/158160576)
- Funkcje Vertical Scroller oraz Level Scroller zostały usunięte. Zamiast niej użyj komponentu ScrollableColumn/Row. Usunięto modyfikator.drawBackground. Użyj pliku Modifier.background (I73b0d, b/163019183)
- Usuń oznaczone jako wycofane modyfikatory FillMax* z LazyItemScope, ponieważ utrudniają prawidłowe dodawanie tych modyfikatorów do elementów, które nie są bezpośrednimi elementami podrzędnymi LazyColumnFor (Ifa78d).
- dodaliśmy implementację LazyColumn/LazyRow jako DSL (I93cc6).
- Ograniczenia są teraz klasą wbudowaną (I88736)
- Dodaliśmy możliwość zmiany rozmiaru układu do ułamka dostępnej przestrzeni przy użyciu modyfikatorów FillMaxWidth, FillMaxHeight i FillMaxSize. (I945bb, b/161562591)
Poprawki błędów
- do komponentu SelectionContainer (I4aada, b/161487952) dodano parametr modyfikatora.
- Do elementu Semantics PropertyKey dodano funkcję mergePolicy lambda. Może to być służy do definiowania niestandardowej zasady semantyki mergeAllDescendants scalanie. Domyślną zasadą jest używanie wartości nadrzędnej, jeśli jest już używana obecny, w przeciwnym razie wartość potomna. (Iaf6c4, b/161979921)
- Nazwa usługi
PlacementScope.placeAbsolute()
została zmieniona naPlacementScope.place()
, a poprzednia nazwa (PlacementScope.place()
) naPlacementScope.placeRelative()
. W efekcie metodaPlacementScope.place()
nie będzie już automatycznie dublować położenia w kontekstach od prawej do lewej. Jeśli chcesz, użyjPlacementScope.placeRelative()
. (I873ac, b/162916675) - Usunięto wycofany komponent FilledTextField. Aby uzyskać implementację interfejsu Material Design w wypełnionym polu tekstowym, użyj pola TextField. (I5e889)
- Dodano parametr backgroundColor do właściwości LinearProgressIndicator, a w przypadku CircularProgressIndicator usunęliśmy wewnętrzne dopełnienie. Dodano nową wartość ProgressIndicatorConstants.DefaultProgressAnimationSpec, której można użyć jako domyślnej właściwości AnimationSpec podczas animowania postępu między wartościami (If38b5, b/161809914, b/161804677).
- Funkcja kompozycyjna
state { ... }
została wycofana i zastąpiona wyraźne wezwania do działania (remember { mutableStateOf(...) }
) w celu uniknięcia wątpliwości. Zmniejsza to ogólną powierzchnię interfejsu API i liczbę koncepcji stanu management i pasuje do wzorcaby mutableStateOf()
klasy przekazania usługi. (IA5727). - Zmieniono nazwę RRect na RoundRect aby lepiej dopasować je do wzorców nazewnictwa. Utworzono podobne konstruktory funkcji do RRect i wycofanej funkcji RRect konstruktory (I5d325)
- Usunięto wartości onChildPositioned i OnChildPositionedModifier. Programiści powinni używać metod onPositioned i OnPositionedModifier w układzie podrzędnym. (I4522e, b/162109766)
- IntSize jest teraz klasą wbudowaną (I2bf42)
- Aby edytować, przytrzymaj pusty obszar. (IB1e5b).
- Ukryj FloatingToolbar po kliknięciu tekstu. (If4525).
- Ukryj FloatingToolbar podczas aktualizowania zaznaczenia. (I8444C)
- Odznacz w przypadku rozmycia. (I781a2).
Wersja 0.1.0-dev16
5 sierpnia 2020 r.
androidx.compose.foundation:foundation:0.1.0-dev16
, androidx.compose.foundation:foundation-layout:0.1.0-dev16
i androidx.compose.foundation:foundation-text:0.1.0-dev16
zostały udostępnione. Wersja 0.1.0-dev16 zawiera te zatwierdzenia.
Zmiany interfejsu API
- Dodano parametr LazyItemScope dla parametru itemContent list Lazy. 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)
- Przenieś okno do interfejsu użytkownika (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)
- Nazwa Modifier.deternimateProgress została zmieniona na Modifier.progressSemantics (I9c0b4).
- Nazwa LazyColumnItems została zmieniona na LazyColumnFor. Nazwa LazyRowItems została zmieniona na LazyRowFor (I84f84).
- Dla celów związanych ze sprawdzonymi metodami dodaj znaczniki/adnotacje. (I66b20)
- pakiet Foundation.shape.corner został spłaszczony do pliku Foundation.share (I46491, b/161887429)
- Dodano parametr grawitacji сrossaxis dla LazyRowItems/LazyColumnItem. LazyRowItems/LazyColumnItems obsługuje teraz zachowanie zawijania treści. (Ib39fc)
- Nazwa ZoomableState została zmieniona na ZoomableController. Dodano obsługę niestandardowej krzywej dla smoothScale. Dodaliśmy funkcje
enabled
ionZoomStarted
(If8b8f) - Nazwa pola Material FilledTextField została zmieniona na TextField, a podstawowy element TextField zmienił się na BaseTextField, by ułatwić znajdowanie i używanie najprostszego interfejsu API (Ia6242, b/155482676).
- Wcześniej wycofana lista AdapterList została usunięta. Zamiast tego użyj LazyColumnItems (I12b9b)
- Nazwa Modifier.drawBackground została zmieniona na Modifier.background (I13677).
- Stara wersja DSL ConstraintLayout została usunięta. Nazwa ConstraintSet2 została zmieniona na ConstraintSet. (If58d1, b/162450908)
- Dodano opcje Modifier.absoluteOffset() i Modifier.absoluteOffsetPx(). W przeciwieństwie do modyfikatorów przesunięcia bezwzględne modyfikatory przesunięcia bezwzględnego nie są automatycznie odzwierciedlane w kontekście od prawej do lewej (I3aa21).
- Funkcje
Row
iColumn
są teraz znacznie wbudowane i zmniejsza koszty związane z ich używaniem. (I75c10)
Poprawki błędów
- Naprawianie ogólnych poprawek interfejsu API (I077bc)
- Usuń nieużywany interfejs OffsetBase
- Wyrównuje klasy Offset i IntOffset, które mają mieć spójna platforma API
- Zmień nazwę IntOffset.Origin na IntOffset.Zero aby zachować spójność z interfejsem Offset API
- Metodę natywnego Canvas usunięto z Canvas aby ułatwić konsumentom tworzenie własne instancje Canvas
- Utworzono wycinek klasy EmptyCanvas do refaktoryzacji DrawScope, aby był parametrem niepustym, a nie Lateinit i zapewnić brak wartości pola jako wartość null
- Zmieniono nazwę wyliczeń ClipOp na sprawy Pascal
- Zmieniono nazwę enumów filtraJakość na typ Pascal
- Zmieniono nazwę wyliczeń Stroke Join na Case Pascal
- Zmieniono nazwę wyliczeń PointMode na wielkość liter Pascal
- Zmieniono nazwy enum PaintingStyle na przypadek Pascala
- Zmieniono nazwę wyliczeń PathFillType na przypadek Pascal
- Zmieniono nazwę wyliczeń StrokeCap na przypadki Pascal
- Implementacja DrawCache została zaktualizowana i nie jest już dostępna używanie parametrów Lateinit
- Zaktualizowano metodę DrawScope, aby nie używała już leniwego przekazywania dostępu dla parametrów wewnętrznych FillPaint i StrikePaint
- Zaktualizowaliśmy funkcję kompozycji obrazu, aby uniknąć używania usługi Box przy mniejszym nakładzie pracy
- Zaktualizowaliśmy klasę Outline, aby dodać do niej adnotacje @stałe.
- Zaktualizowano element PathNode, aby dodać adnotacje @Stałe dla: instrukcja dla każdej ścieżki
- Zaktualizowano składnię wektorową, aby usunąć zbędne elementy sprawdzanie warunkowe pod kątem równości, ponieważ funkcja tworzenia wiadomości już obsługuje ich
- Wycofane metody konstruktora kreacji towarzyszącej w formacie prostokąta konstruktorów funkcji
- Zaktualizowano klasy i konstruktory funkcji pędzla za pomocą Interfejsy API @Immutable i @Stable
- Zaktualizowano enum VertexMode na PascalCase
- Metodę DrawScope selectPaint zmieniono na warunkowo nadpisać parametry kreski, jeśli mają zmieniono
- Zaktualizowano rozmiar, aby dodać interfejs API destrukcyjnego; zmień nazwę Nieokreślony rozmiar na nieokreślony i usunięte nieużywane metody
Dodano MonotonicFrameAnimationClock, który pozwala na Funkcja MonotonicFrameClock jako funkcja AnimationClockObservable w celu wypełnienia luki między nowymi zegarami opartymi na współprogramach a interfejsami API, które nadal używają zegary z wywołaniem zwrotnym.
Odpowiednikiem MonotonicFrameClock jest teraz ManualAnimationClock. ManualFrameClock. (I111c7, b/161247083)
Użytkownik
SemanticsNodeInteraction.performPartialGesture
został usunięty. UżywajSemanticsNodeInteraction.performGesture
. (Id9b62)Nazwa
SemanticsNodeInteraction.getBoundsInRoot()
została zmieniona naSemanticsNodeInteraction.getUnclippedBoundsInRoot()
(Icafdf, b/161336532)Interfejsy API do obsługi tekstu od prawej do lewej zostały zaktualizowane. Dodano parametr LayoutDirectionAmbient, którego można używać do odczytywania i zmieniania kierunku układu. Modifier.rtl oraz Modifier.ltr zostały usunięte. (I080B3)
Interfejs Modifier.plus został wycofany. Użyj interfejsu Modifier.then. „To” ma silniejszy sygnał dotyczący kolejności, ale nie pozwala też na wpisanie słowa
Modifier.padding().background() + anotherModifier
, które przerywa łańcuch i jest trudniejsze do odczytania (Iedd58, b/161529964).Dodano
isFocused()
iisNotFocused()
semantykiMatcher. (I0B760)Dodano modyfikator RemeasurementModifier. Umożliwia użytkownikom synchroniczne ponowne pomiary układu. Ponowne pomiary i przekaźniki są zazwyczaj wykonywane automatycznie, ale używamy tego parametru w elemencie LazyColumnItems podczas przewijania. (I5f331, b/160791058)
Funkcja isSystemInDarkTheme zawsze uwzględnia teraz ustawienie ciemnego motywu w całym systemie i ignoruje stan oszczędzania energii przed Q zgodnie z najnowszymi wskazówkami. (I0c10c).
Funkcja OnChildPositioned została wycofana. Używaj ustawienia OnPositioned na koncie dziecka. (I87f95, b/162109766)
Zmieniono nazwę reguły AndroidComposeTestRule na createAndroidComposeRule. (I70aaf)
Dodaj działanie związane z ułatwieniami dostępu, aby uzyskać wynik 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 funkcji tworzenia wiadomości w wersji 0.1.0-dev15
, musisz:
Aktualizacja zależności
- Aby używać narzędzia Compose w wersji
0.1.0-dev15
, musisz zaktualizować zależności zgodnie z nowymi fragmentami kodu pokazanymi powyżej w sekcji Deklarowanie zależności.
Zmiany interfejsu 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. Pozwala to też dodawać odstępy tylko przed pierwszym lub po ostatnim elementem. (IBc24e)
- Nazwa wywołania zwrotnego onFocusChange w polach tekstowych została zmieniona na onFocusChanged (Ida4a1)
- Interfejsy Vertical Scroller oraz Horiziontal Scroller zostały wycofane. Użyj interfejsu ScrollableColumn i ScrollableRow, aby mieć wbudowane funkcje i parametry związane z kolumnami/wierszami, lub modyfikatorami.vertical Scroll i Mmodifier.vertical Scroll, aby umożliwić ich użycie własnemu elementowi. Parametr ScrollerPosition został wycofany i zastąpiony tagiem ScrollState (I400ce, b/157225838, b/149460415, b/154105299)
- Zmieniliśmy interfejsy API Modifier.draggable i Modifier.scrollable. Kierunek przeciągania został usunięty i zastąpiona Orientacją. Uprościliśmy stan wymagany do przewijania. Nazwa ScrollableState została zmieniona na ScrollableController (Iab63c, b/149460415).
- Usługi semantyczne z jedną wartością używają teraz stylu wywoływania.
Na przykład „semantyka { hide = true }”. jest teraz zapisany jako:
semantics { hidden() }
(Ic1afd, b/145951226, b/145955412) - Rozmiary narożników używane przez obiekty RoundedCornerangle i CutCorner shape mogą być teraz większe niż 50% (Id2340, b/160400213)
- Zmieniono domyślną skalę ContentScale parametr funkcji kompozycyjnej obrazu z Wewnątrz po Fit. Zrobiono to po kolei aby uzyskać zachowanie i skalować Maluj, jeśli rozmiar układu jest większy niż wewnętrzny rozmiar malarza, z zachowaniem proporcji obrazu. Ten zachowanie lepiej odpowiada oczekiwaniom. za dostarczanie obrazów o stałych rozmiarach nie wpływając jednocześnie na domyślne zachowanie jeśli tylko rozmiar wewnętrzny jest używany do i obliczyć rozmiar elementu kompozycyjnego. (I40ae3, b/159838006)
- W interfejsach API najwyższego poziomu użyj AnimationSpec zamiast AnimationBuilder Aby wyjaśnić koncepcję specyfikacji animacji statycznej – usprawnienie przejścia z DSL przez usunięcie wymogu lambda dla podczas tworzenia specyfikacji animacji, takich jak starsze, wiosna. Zamiast tego biorą z parametrami konstruktora. - Poprawa ogólnej łatwości otwierania AnimationSpec. konstruktory, zamiast polegać na konstruktorach. – Zmiana czasu trwania i opóźnienia klatek kluczowych i elementów z wyższego poziomu na wartość Int. Ten eliminuje niepotrzebne rzuty typów i przeciążanie metod (na wspiera format Long i Int). (ICA0b4).
- Element klikalny został usunięty. Użyj metody Modifier.clickable (I84bdf)
- Dodano LazyRowItems – analog z przewijaniem poziomym typu LazyColumnItems (Ibbcf7)
- Wprowadzono niskopoziomowe interfejsy API do animacji bezstanowych. Te interfejsy API (I63bf7)
- androidx.ui.foundation.TextFieldValue i Interfejs androidx.ui.input.EditorValue został wycofany. Pole tekstowe Obiekty kompozycyjne FilledTextField i CoreTextField, które korzysta z funkcji ten typ też jest wycofany. Użyj androidx.ui.input.TextFieldValue (I4066d, b/155211005)
- Zastąpiliśmy format IntPx ciągiem Int. Zastąpiono pozycję IntPxPosition z IntOffset. IntPxSize zastąpiono wartością IntSize. (IB7b44)
- Usunięto parametr androidx.ui.foundation.shape.Rectangle shape; użyj androidx.ui.graphics.Rectangleangle (I94939, b/154507984)
- Aby skonsolidować liczba klas używanych do reprezentowania informacje o rozmiarach, standaryzowanie na podstawie użycia klasy Size rozmiaru PxSize. Zapewnia to korzyści klasy wbudowanej, aby wykorzystać długi do pakowania 2 wartości zmiennoprzecinkowych do reprezentowania szerokość i wysokość w postaci liczby zmiennoprzecinkowej. (IC0191).
- Aby skonsolidować liczba klas używanych do reprezentowania pozycjonowanie, standaryzowanie na użycie klasy Offset pozycji PxPosition. Zapewnia to korzyści klasy wbudowanej, aby wykorzystać długi do pakowania 2 wartości zmiennoprzecinkowych reprezentujących x i odsunięcia y są przedstawione w postaci liczby zmiennoprzecinkowej. (I3ad98).
- Dodaliśmy modyfikator powiększenia umożliwiający powiększanie przez ściąganie palców (Id5d63).
- Komponent z możliwością przełączania został wycofany. Użyj metody Modifier.toggleable (I35220, b/157642842)
- Funkcja MutuallyExclusiveSetItem została wycofana. Zamiast niej użyj metody Modifier.selectable. (I02b47, b/157642842)
- Tag TestTag został wycofany. Użyj w zamian metody Modifier.testTag. (If5110, b/157173105)
- Dodaje do tekstu parametr fontWeight, który nie został przypadkowo dodany (I56937)
- Zastąpiono użycie klasy Px w różnych tworzone są klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (I19d02)
- W aplikacji Vertical Scroller dostępna jest teraz funkcja Column. Aplikacja Poziomy przewijania teraz udostępnia funkcję Wiersz bezpośrednio w oknie. (IECA5d, b/157020670)
- Zastąpiono użycie klasy Px w różnych tworzone są klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (Iede0b).
- Do pakietu podstawowego dodano modyfikator.indication. Służy do pokazywania wskaźnika naciśnięcia lub przeciągnięcia innych elementów na niestandardowych elementach interaktywnych (I8425f, b/155287131).
- Opcje VerticalPrzewiń i Orientacja pozioma obsługują teraz przewijanie odwrotne. Ustawienie wartości Wsteczne jest teraz dostępne dla opcji ScrollerPosition (I953bd).
- Obsługa dodawania elementów kompozycyjnych do układu tekstu. (I1373C)
- Skonsolidowane implementacje CanvasScope więc teraz będą tylko DrawScope, ContentDrawScope Nazwa obiektu CanvasScope została zmieniona na DrawScope. Zaktualizowano obiekt DrawScope, aby zaimplementować gęstość i podaj kierunek układu Usunięto podklasę DrawScope w ContentDrawScope Painter i PainterModifier zostały zaktualizowane nie mają już właściwości RTL, ponieważ DrawScope zapewnia już bez ręcznego podawania (I1798e)
- Usunięto wycofany element DrawBackground Interfejs API z zaletą rozszerzenia DrawBackground API w modyfikatorze. Refaktoryzacja kolor, pędzel i malowanie rysunekTło implementacje, dzięki którym można też ograniczyć ścieżki kodu jako wymóg usunięcia, aby mógł zostać utworzony modyfikator jako część kompozycji. (I0343a)
- Zaktualizowano wyższy poziom a także tworzyć interfejsy API, które udostępniają obiekt Canvas i udostępnić CanvasScope. Spowoduje to usunięcie że konsumenci muszą utrzymywać własnych obiektów Paint. Dla konsumentów, którzy nadal potrzebują dostępu do Canvas mogą korzystać z rozszerzenia DrawCanvas, , która powoduje wywołanie zwrotne do problemu za pomocą poleceń rysowania Obszar roboczy. (I80afd).
- Poziomy i pionowo przewijanie nie przywracają pozycji przewijania z wykorzystaniem zapisanego stanu instancji. (Ia0fae, b/155075048)
- Element FocusManagerAmbient został usunięty. Aby uzyskać ostrość, użyj FocusModifier.requestFocus. (IC4826).
- Układ tabeli został tymczasowo usunięty do czasu, aż ponownie udostępnimy go przy użyciu odświeżonego interfejsu API. (Id88a7)
Utworzono interfejs CanvasScope API, który opakowuje Obiekt Canvas wyświetlający bezstanowy obiekt deklaratywny interfejs API do rysowania. Przekształcenia są uwzględnione w zakresie odbiorcy i własnych informacji o rozmiarze jest również ograniczony do odpowiednich granic wstawienia. Nie wymaga od konsumenta zachowywania własnego stanu wyrenderowania do konfigurowania operacji rysowania.
Dodano próbkę CanvasScope i zaktualizowano aplikację w wersji demonstracyjnej, aby dodać grafikę deklaratywnej wersja demonstracyjna (Ifd86d)
Usunięto ColoredRect. Pole użytkownika z modyfikatorem rysowania tła (I983c7, b/152753731)
Dodawanie dostosowania koloru kursora w polu tekstowym (I6e33f)
Teraz można ukryć/pokazać klawiaturę programową za pomocą SoftwareKlawiaturaController jest dostarczana przez onTextInputStarted wywołanie zwrotne (I8dc44, b/151860051)
Wartość TextFieldValue używana w polu TextField może teraz przetrwać odtwarzanie 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ć te parametry bezpośrednio:Text(textAlign = TextAlign.Center)
(I82768)Zastąpiono obiekt CoreTextField/TextField controlIdentifier z FocusNode, by przeprowadzić integrację z podsystemem. (I7Ea48).
Aktualizacja pola tekstowego – w wymiarze poziomym zajmie całe dostępne miejsce (Ib08df, b/154638552)
Dodano elementy InteractionState i Interaction, które ułatwiają tworzenie komponentów reagujących na zmiany stanu interfejsu, np. naciśnięcie i przeciągnięcie (Icfe25, b/152525426).
Rectangleangle zostały przeniesione z androidx.ui.foundation.shape.* do androidx.ui.graphics.* (Ia74d5, b/154507984)
Zastąpiono wszystkie przypadki użycia koloru dopuszczalnego w interfejsie API na nie dopuszcza wartości null i użyj wartości Color.Unset zamiast null (Iabaa7).
Aktualizacja interfejsu TextField API – scalono wywołania zwrotne onFocus i onBlur w jedno wywołanie zwrotne onFocusChange(Boolean) z parametrem (I66cd3)
Nazwa ScaleFit została zmieniona na ContentScale Przeniesiono ContentScale z UI-Graphics do UI Core moduł do umieszczenia w tym samym module co ustawienie Wyrównanie API. Nazwa FillMaxDimensions została zmieniona na Przytnij Nazwa FillMinDimensions została zmieniona na Fit Zmieniliśmy nazwę dopasowania na Wewnątrz, by lepiej dostosować Odpowiedniki ImageView.ScaleType Dodaliśmy dokumentację wskazującą, że kombinacja przycinanie i wyrównywanie. ImageView.ScaleType.CENTER_CROP i Fit Użycie z funkcją Wyrównanie.Center przynosi taki sam wynik jak ImageView.ScaleType.FIT_CENTER Wewnątrz używana z Wyrównaniem.Center zapewnia to samo wynik w formacie ImageView.ScaleType.CENTER_INSIDE (I45f09, b/152842521)
Usuwa element ProvideContentColor. Zamiast tego używaj interfejsu ContentColorAmbient bezpośrednio w
Providers
(Iee942).Dodaje do tekstu parametr koloru, dzięki czemu można zastąpić kolor stylu tekstu bez konieczności ręcznego scalania go ze stylem podanym w motywie. (I41a66)
Ulepszenie interfejsu API DrawModifier:
- Zmieniono zakres odbiorcy dla metody Draw() ContentDrawScope
- Usunięto wszystkie parametry z dresz()
- Interfejs DrawScope jest taki sam jak poprzednia wersja CanvasScope
- ContentDrawScope ma metodę DrawContent() (Ibaced, b/152919067)
Interfejs ColoredRect został wycofany. Użyj w zamian zasady
Box(Modifier.preferredSize(width, height).drawBackground(color))
. (I499fa, b/152753731)System motywów kształtów jest aktualizowany zgodnie ze specyfikacją Material Design. Teraz możesz wybierać małe, średnie i duże kształty do wykorzystania przez większość komponentów (Ifb4d1).
Zastąpienie operatora modyfikatora plus funkcjami rozszerzeń fabrycznych (I225e4).
Element do przeciągania został przeniesiony do modyfikatora (Id9b16, b/151959544)
Przeniesiono użytkownika
Text
do pakietu androidx.ui.foundation z androidx.ui.core. (I87ce5).dodanie parametru
enabled
do pola wyboru, przełącznika i możliwości przełączania (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)Interfejs VectorPainter API został dodany do zastąp istniejący interfejs API subcomposition API dla grafiki wektorowej. Wynik podkompozycji jest obiektem VectorPainter, a nie DrawModifier. Wycofany poprzedni DrawVector kompozycje na rzecz VectorPainter.
Nazwa
Image(Painter)
API została zmieniona naPaintBox(Painter)
Utworzyliśmy wektorową kompozycję wektorową, która działa jak Obraz można komponować, ale nie za pomocą obiektu VectorAsset komponentu z obrazem (I9af9a, b/149030271)Utworzony obraz kompozycyjny do obsłużenia dobieranie odpowiednich rozmiarów/układu oprócz rysowania ImageAsset na ekran. Ta funkcja kompozycyjna umożliwia również rysowanie dowolnych obrazów z uwzględnieniem jej rozmiaru wewnętrznego oraz obsługi konkretnego rozmiar lub minimalny rozmiar (Ibcc8f)
Elementy FloatingActionButton i Clickable mają teraz osobny parametr
enabled
. Zmieniono nazwy niektórych parametrów przycisku lub ich kolejność. (I54b5a)Zmieniliśmy nazwę obrazu na ImageAsset, aby lepiej się wyróżniać. różnica między danymi obrazu a przyszłymi danymi Funkcja kompozycyjna pozwalająca na udział w układach i rysowaniu treści.
Utworzono metodę rozszerzenia w pliku android.graphics.Bitmap
Bitmap.asImageAsset()
, aby utworzyć instancję ImageAsset przydaje się do łączenia tradycyjnych funkcji Androida za pomocą platformy compose. (Id5bbd).Funkcja kompozycyjna DrawImage została usunięta. 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 stosu obsługuje kierunek od prawej do lewej (Ic9e00)
Dodano ikony, IconButton i iconToggleButton, usuwając ikony AppBarIcon. Możesz bezpośrednio zastąpić obecne zastosowania AppBarIcon przez IconButton, i będą mieć odpowiedni docelowy element dotykowy. Zobacz przykłady użytkowania i zobaczyć ikony dostarczonych ikon których możesz używać bezpośrednio z tymi komponentami. (I96849)
Funkcja kompozycyjna DrawStatus została usunięta. Użyj modyfikatora DrawBackground. (I7ceb2).
Dodaliśmy AdapterList, komponent listy przewijanej, który tylko tworzy i układa widoczne elementy. Znane problemy pamiętaj, że jest tylko pionowa i nie obsługuje wszystkich przypadków zmian w jego elementach potomnych. (IB351b)
Dodano komponent przewijany, który umożliwia tworzenie niestandardowych elementów przewijania/list (I5fd37).
Zmieniono nazwę tła na DrawBackground i tak, by było domyślnie zapamiętywane (Ia0bd3)
Dodaj dopełnienie, obramowanie, kształt i parametr tła do Box (I05027, b/148147281)
Dodano komponent Canvas. Ten element kompozycyjny zajmuje określony rozmiar (podany przez użytkownika) i umożliwia rysowanie za pomocą CanvasScope (I0d622)
zmień nazwę modyfikatora
Border
naDrawBorder
(I8ffcc)Dodano komponent Ramka, który łączy wspólne funkcje układu i rysowania. (I6e2a7).
Przewijacze wykazują teraz natywne działanie przesuwania w Androidzie. (I922af, b/147493715)
Zastąpiono element DrawBorder na rzecz modyfikatora obramowania (Id335a).
Nazwa Modifier.tag została zmieniona na Modifier.layoutId, aby uniknąć pomyłek z modyfikatorem.testTag. (I995f0)
Nazwa parametru procentu podczas tworzenia wskazówek ConstraintLayout została zmieniona na ułamek. (Ida2db).
Dodano obsługę marginesów barier ConstraintLayout. (I47ffe).
Naprawiono obsługę od prawej do lewej w funkcji ConstraintLayout. Dodano nieświadome interfejsy API od prawej do lewej. (I3b1c7).
Dodano nową konsolę DSL dla układu ConstraintLayout. Więcej informacji znajdziesz w przykładach. (Icaa9a).
Dodano adnotację @ExperimentalLayout. ConstraintLayout, FlowRow i FlowColumn są teraz oznaczone tagiem ConstraintLayout, by zaznaczyć, że ich interfejsy API się zmienią. (I412a8)
Dodano
Modifier.padding(InnerPadding)
(I94985, b/157133803)Usunięto wycofane ustawienia RowWyrównaj i Column wyrównanie w wierszu i kolumnie. (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).
Dodano modyfikator układu przesunięciaPx, którego można użyć do definiowania (dynamicznych) przesunięć w pikselach. (I5af57).
Funkcja kompozycyjna wyrównania AdjustLineOffset została wycofana. Zamiast niej użyj modyfikatorarelativePaddingFrom(). Funkcja kompozycyjna CenterWyrównajmentLine została usunięta. (I60107).
Dodano modyfikator układu defaultMinSizeConstraints, który ustawia ograniczenia rozmiaru w układzie opakowanym tylko wtedy, gdy odpowiednie przychodzące ograniczenia nie są określone (0 w przypadku ograniczeń minimalnych i nieskończoności w przypadku ograniczeń maksymalnych). (I311ea, b/150460257)
Kontener został usunięty. Zamiast tego użyj Box (Ibbc2b, b/151407926)
Usunięto wycofane modyfikatory UkładSzerokość/Wysokość/Rozmiar. (Ib0bc1)
Dodaliśmy domyślne wartości parametrów dla modyfikatora przesunięcia. (I37f06)
Dodano symetryczny modyfikator dopełnienia. (I39840)
Usunięto wycofany modyfikator LayoutAspectRatio. (I65a74)
Usunięto wycofane modyfikatory UkładWyrównaj. (I10877)
Naprawiliśmy błąd związany z modyfikatorami szerokości i wysokości, który powodował pomiar opakowanego układu bez ograniczeń przeciwnych osi. (I210b8, b/154797971)
Dodano parametry grawitacji pionowego i poziomego do wierszy oraz kolumn. (I7dc5a)
Zaktualizowaliśmy właściwości wrapContentWidth i wrapContentHeight tak, aby można było korzystać z wyrównania w pionie lub poziomie, a nie wyrównania w poziomie. Modyfikator grawitacji został zaktualizowany, aby przyjmował wyrównanie w pionie lub poziomie. Wiersze, kolumny i stos zostały zaktualizowane, aby obsługiwały niestandardowe ciągłe wyrównania. (IB0728)
Wyrównanie wyrównania można utworzyć z użyciem dowolnych wartości. Dodano wyrównania 1D. (IA0c05)
Zmieniono nazwę EdgeInsets na InnerPadding. Zmieniono nazwę parametru innerPadding elementu Material Buttons na pasek boczny. (I66165).
LineToSiblings akceptuje teraz obiekty zmierzone zamiast obiektu Placeable. (I5788D)
Dodano modyfikatory do dostosowywania rozmiaru do pomiarów wewnętrznych i wycofaliśmy komponenty służące do tego celu. (I8295D)
Dodano obsługę dostosowywania wymiarów podrzędnych elementów ConstraintLayout (Idb1a5).
Usunięto wycofane elementy kompozycyjne zawijania i wyśrodkowywania. (I29e23)
dodano LayoutModifier2 – nowy interfejs API do definiowania modyfikatorów układu; wycofany komponent LayoutModifier (If32ac),
Elementy RowScope i ColumnScope są teraz dostępne poza elementami Wiersz i Kolumna. (I3a641)
Kontener został wycofany. Zamiast tego użyj usługi Box. (I675ce, b/151407926)
Dodano modyfikator LayoutOffset do kompensacji pozycji układu (I0b8a3).
Wstępna obsługa protokołu Rtl w układzie tworzenia wiadomości (Ia5519)
Zaktualizowano LayoutWyrównaj, aby nie wypełniać już dostępnego miejsca (I2b14f)
Usunięto kompozycję w formacie AspectRatio na rzecz modyfikatora. Usunięte przestarzałe obiekty FlexColumn, FlexRow i modyfikator odstępów (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 FocusroundState zostały wycofane i zastąpione FocusState2 (I46919, b/160822875, b/160922136)
- Nazwa
runOnIdleCompose
została zmieniona narunOnIdle
(I83607) - Zmieniono nazwy kilku interfejsów API do testowania, aby były bardziej intuicyjne. Wszystkie Interfejsy API findXYZ zostały zmienione na onNodeXYZ. Nazwy wszystkich interfejsów API doXYZ zostały zmienione na XYZ. (I7f164)
- Usuwa wcześniej wycofany plik Modifier.ripple. Kliknięcie jest teraz domyślnym wskaźnikiem echa (jeśli w aplikacji masz ustawiony motyw MaterialTheme {}), więc w większości przypadków wystarczy użyć kliknięcia i uzyskać wskaźnik fali. Jeśli chcesz dostosować parametr koloru / rozmiaru / granicy fali, możesz ręcznie utworzyć parametr RippleIndication i przekazać go do kliknięcia jako parametr wskaźnika. (I663b2, b/155375067)
- Usunięto przestarzałe interfejsy API do testowania rozmiaru. (IBa0a0).
- Made LayoutNode – eksperymentalny interfejs API (I4f2e9)
- Aktualna wersja 1 blokowania orientacji przewijania: są zaimplementowane w usłudze Compose. (I1ce7a, b/150289741)
- Wyskakujące okienka, okna 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 wywołaniu zwrotnym w obiekcie zakresu pomiaru (Ic7d9d)
- Dodaj aranżacja bezwzględna – umożliwia rozmieszczenie elementów podrzędnych w wierszu bez automatycznego odbicia lustrzanego w RTL (I3a1df).
- Adnotacja @Nieśledzona została wycofana. Zastąp @ComposableContract(tracked=false) (Id211e).
- Przed tą zmianą wtyczka kompilatora kompilatora przechwytywała wywołania konstruktorów w funkcji @Composable, jeśli w funkcji @Composable występowało (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) Zmieniona klasa promienia na inline. Usunięto tworzenie kreacji towarzyszącej z zastosowaniem konstruktora funkcji z domyślnym parametrem określającym promień wzdłuż osi Y należy dopasować do wartości .
Zaktualizowano plik DrawScope.drawRoundRect do przetworzenia jeden parametr „Radius” zamiast 2 osobnych, wartości zmiennoprzecinkowe promienia wzdłuż osi x i y oś (I46d1b)
Zastąpiono użycie klasy Px w różnych tworzone są klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i podstawowych parametrów pikseli. Cała klasa Px została usunięta (I3ff33).
Zastąpiono użycie klasy Px w różnych tworzone są klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (I086f4).
Zastąpiono użycie klasy Px w różnych tworzone są klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (Id3434).
Zastąpiono użycie klasy Px w różnych tworzone są klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (I97a5a)
Kursor pola tekstowego ma migającą animację (Id10a7)
Gesty częściowe nie wymagają już ominięcia GestyToken (Id7ae5)
Zastąpiono użycie klasy Px w różnych tworzone są klasy w ramach dużego refaktoryzacja, która polega wyłącznie na Dp i typy podstawowe parametrów pikseli (I57bff)
Wycofanie metody Modifier.semantics pozwala na użycie komponentów wysokiego poziomu. (I4cfdc)
Zmieniono nazwę AnnotatedString.Builder.addAnnotationString na addStringAnnotation. (I5059e)
Zaktualizowaliśmy interfejs Adjust API i dodaliśmy obsługę dopasowania bezwzględnego (które nie jest automatycznie dublowane w kontekście protokołu Rtl) (I38cd3)
Elementy podrzędne Układu i LayoutModifier można mierzyć w innym kierunku układu. (IBD731)
Podaj dodatkowy opcjonalny prostokąt do obsługi formatu ImagePainter rysowanie podsekcji komponentu z obrazem (I0ea9e)
Naprawiono błąd, który występował podczas usuwania elementów w AdapterList (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ć starsze zachowanie, możesz zastosować w układzie Modifier.fillMaxSize(). (IE88a7, b/153453714)
Moduł ui-text-compose zmienił nazwę na ui-text. tekst UI zawiera teraz elementy kompozycyjne CoreText i CoreTextField (Ib7d47)
Nazwa modułu ui-text została zmieniona na ui-text-core (I57dec).
Przeniesiono elementy kompozycyjne ui-framework/CoreText i elementy kompozycyjne CoreTextField do ui-text-compose. Możesz też dodać ui-text-compose w projektach AI. (I32042)
runOnIdleCompose
irunOnUiThread
to teraz funkcje globalne zamiast metod na ComposeTestRule. (Icbe8f).[Mutable]Operatory delegowania właściwości stanu zostały przeniesione do rozszerzeń na potrzeby optymalizacji przekazywania uprawnień do usługi Kotlin 1.4. Rozmówca musi dodać importuje dane, aby dalej używać funkcji
by state { ... }
lubby mutableStateOf(...)
. (I5312C)DrawLayerModifier i drawLayer() są teraz domyślne w klastrze clipToBounds i ClipToOutline na false. (I0eb8b, b/152810850)
Zmieniono nazwę elementu LayoutResult na MeasureResult. (Id8c68).
Wycofana funkcja kompozycyjna w centrum. 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ę Układ Elastyczny na Układ Weight. Zmieniono nazwę precyzyjnego parametru na wypełnienie. (If4738).
Metoda DrawVector została zmieniona ze zwykłego funkcja composable zwracająca modyfikator pullVector(), spowoduje narysowanie wektora jako tła układu. (I7B8E0)
Zastąp klip funkcji kompozycyjnej modyfikatorem DrawClip(). DrawClipToBounds to wygodny modyfikator przydatny, gdy chcesz przyciąć materiały tylko do granic warstwy w kształcie prostokąta. (If28eb).
Funkcja kompozycyjna DrawShadow została zastąpiona funkcją DrawShadow(). modyfikator. Cienie są teraz rysowane w ramach komponentu LayerModifier. (I0317a)
Element androidx.compose.ViewComposer został przeniesiony do folderu androidx.ui.node.UiComposer Aplikacja androidx.compose.Emittable została usunięta. W przypadku KomponentNode wystąpił nadmiarowy błąd. Strona androidx.compose.ViewAdapters została usunięta. Nie są już one obsługiwanym przypadkiem użycia. Interfejs Compose.composeInto został wycofany. Użyj interfejsu
setContent
lubsetViewContent
. Metoda Compose.disposeComposition została wycofana. Użyj metodydispose
dla obiektuComposition
zwróconego przezsetContent
. Aplikacja androidx.compose.Compose.subcomposeInto została przeniesiona do androidx.ui.core.subcomposeInto Nazwa węzła KomponentNode#emitInsertAt została zmieniona na węzeł KomponentNode#insertAt Nazwa węzła KomponentNode#emitRemoveAt została zmieniona na KomponentNode#removeAt Nazwa KomponentNode#emitMode została zmieniona na KomponentNode#move (Idef00).Wycofana funkcja opakowania. Można ją zastąpić modyfikatorem LayoutWyrównaj lub funkcją kompozycyjną Stos (Ib237f).
Wykonano propagację kierunku układu z węzła nadrzędnego do elementów 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).
Interfejsy Density i DensityScope zostały połączone w jeden interfejs. Zamiast trybu nieaktywnego() możesz teraz używać obiektu DensityAmbient.current. Zamiast opcji Gęstość(gęstość) tylko za pomocą(gęstości) (I11cb1)
Usunięto klasę ValueHolder. Zmieniono strukturę klasy AnimatedValue, klas AnimatedFloat na ustaw pole wartości animacji jako abstrakcyjne, aby podklasy mogły obserwować aktualizację wartości.
- Dodano klasy modelu dla elementów AnimatedValue, AnimatedFloat itp.
- Dodaliśmy nowy zestaw lekkiego interfejsu API @Composable do animacji między wartościami.
- (I79530)
Zmiany w interfejsie API nieaktywnym. Szczegóły znajdziesz w logu i dokumentacji
Ambient<T>
(I4c7ee, b/143769776)Pozycje całkowite linii wyrównania zwrócone z Placeable#get(alignmentLine) nie mają teraz wartości null. 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)
Zmieniono końcowy interfejs API WithConstraints lambda. Teraz zamiast 2 parametrów ma zakres odbiornika, który oprócz ograniczeń oraz właściwości layoutDirection zapewnia właściwości minWidth, maxWidth, minHeight i maxHeight w Dp (I91b9a, b/149979702)
Nazwa UkładModifier2 została zmieniona na LayoutModifier. (Id29f3).
Wewnętrzne funkcje pomiarowe w usługach Layout i LayoutModifier2 mają teraz odbiornik IntrinsicMeasureScope, który udostępnia wewnętrzny interfejs API zapytań z niejawnie rozpowszechnianym kierunkiem układu. (Id9945).
Interfejs LayoutDirectionAmbient został wycofany. Aby odczytać kierunek układu określony przez język, użyj ustawienia localeLayoutDirection w konfiguracji Ambient (I851b1).
W przypadku współrzędnych układu dodano elementy positionInParent i boundsInParent. (Icacdd, b/152735784)
Funkcja kompozycyjna ParentData została wycofana. Utwórz modyfikator, który implementuje interfejs ParentDataModifier, lub użyj modyfikatora LayoutTag, jeśli chcesz tylko oznaczyć elementy podrzędne układu, aby rozpoznawały je w bloku pomiaru. (I51368, b/150953183)
Dodaj OnPositionedModifier i OnChildPositionedModifier w celu zastąpienia funkcji kompozycyjnych OnPositioned i OnChildPositioned funkcji. (I2ec8f).
Nie zezwalaj na wykluczające dopełnienie w elemencie LayoutPadding. Do odsunięć pozycji ujemnych należy zamiast tego używać właściwości LayoutOffset. (Ifb5b1).
WithConstraints uzyskała parametr LayoutDirection (I6d6f7)
Flaga
ComposeFlags.COMPOSER_PARAM
została zmieniona natrue
, co zmieni strategię generowania kodu dla wtyczki do tworzenia wiadomości. Ogólnie powoduje to generowanie funkcji @Composable z dodatkowym parametrem syntetycznym, który jest przekazywany do kolejnych wywołań @Composable w celu prawidłowego zarządzania wykonaniem w środowisku wykonawczym. Jest to istotna zmiana polegająca na nieprawidłowym działaniu plików binarnych, jednak powinna ona zachować zgodność na poziomie źródła we wszystkich objętych sankcjami użycia funkcji tworzenia wiadomości. (I7971C)Zmieniono współrzędne LayoutCoordinates, aby utworzyć providedWyrównajmentLines ustawić zamiast mapy zestaw, a funkcja LayoutCoordinates wdrożyła funkcję get(). Dzięki temu dla modyfikatorów do modyfikowania jednej lub kilku wartości w zestawie bez podczas tworzenia nowej kolekcji dla każdego modyfikatora. (I0245a)
LayoutCoordinates nie ma już właściwości pozycji. nie ma sensu w przypadku tagów LayoutModifiers, obracania czy skalowania. Zamiast tego programiści powinni używać współrzędnych nadrzędnych. i podrzędnyToLocal(), aby obliczyć przekształcenie z jednego Układ współrzędnych.
Funkcja LayoutCoordinates używa właściwości rozmiaru IntPxSize zamiast Rozmiar Px. Układy używają liczb całkowitych w pikselach, więc układy mają wszystkie rozmiary. należy używać liczb całkowitych, a nie zmiennoprzecinkowych. (I9367b)
Ulepszenia interfejsu API ograniczeń (I0fd15)
Dodano element TextDirection.Content (I48f36)
Aktywuj 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 TextDirection została zmieniona na resolvedTextDirection (I3ff38).
Dodano funkcję Hapticfeedback do wyboru pola tekstowego. (I58050)
Dodawanie metod kopiowania, wycinania i wklejania do zaznaczenia pola tekstowego. (IdB70b)
Tag TestTag i semantyka zostały usunięte. Użyj zamiast niego Modifier.testTag i Modifier.semantics (I15ff0, b/158841414)
Zmieniono nazwę pakietu dla Locale i LocaleList z androidx.ui.text na androidx.ui.intl (I8132c)
Zmiana w interfejsie API: nazwa
AnnotatedString(builder: Builder)
została zmieniona naannotatedString(builder: Builder)
. (IA6377).Zmiana w interfejsie API: nazwa
AnnotatedString.Item
została zmieniona naAnnotatedString.Range
. (I2d44d)Dodaj pasek narzędzi do operacji związanych z tekstem. (I49d53)
Dostępna jest nowa wersja LifecycleOwnerAmbient. Teraz aktywność, której używasz w interfejsie tworzenia wiadomości, powinna stanowić rozszerzenie androidx.activity.KomponentActivity (lub AppCompatActivity). Funkcja setContent w aplikacji android.app.Activity została wycofana (Idb25a, b/153141084)
Nazwa pakietu ui-android-text (androidx.text) zastąpiona androidx.ui.text.platform, aby zapewnić zgodność z zasadami Androidax. (I42711)