Podstawy tworzenia
androidx.compose.foundation
androidx.compose.foundation.layout
androidx.compose.foundation.gestures
androidx.compose.foundation.selection
androidx.compose.foundation.lazyfoundation}compose.fundax.compos5}compose.foundation.lazyfoundation}compose}interfejs API1 androidx.compos5}compose}interfejs API1 androidx.com
Najnowsza aktualizacja | Wersja stabilna | Kandydat do wydania | Wersja Beta | Wydanie alfa |
---|---|---|---|---|
26 czerwca 2024 r. | 1.6.8 | - | 1.7.0-beta04 | - |
Struktura
Narzędzie Compose to połączenie 7 identyfikatorów grup Maven w ramach usługi androidx
. Każda grupa zawiera docelowy podzbiór funkcji, z których każda ma własny zestaw informacji o wersji.
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 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ć do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Google Maven.
W pliku build.gradle
aplikacji lub modułu dodaj zależności artefaktów, których potrzebujesz:
Odlotowy
dependencies { implementation "androidx.compose.foundation:foundation:1.6.8" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.14" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.foundation:foundation:1.6.8") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.14" } 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 wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj istniejące problemy w tej bibliotece. Możesz oddać swój głos do istniejącego problemu, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia do śledzenia problemów.
Wersja 1.7
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 ustawienie „Default” (Domyślne) z właściwości
MarqueeDefaults
. (I1d8a0). - Usunięto „Marquee” z właściwości
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 „Określ, co jest obliczane jako czas tworzenia/pomiaru, w celu zwiększenia dokładności pobierania 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). - Funkcja
Modifier.anchoredDraggable
domyślnie odwraca teraz 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 odzwierciedlała zakres obowiązków. (IB9154) - Dodano obsługę pobierania z wyprzedzeniem elementów w zagnieżdżonych obiektach
LazyLists
(np.LazyColumn
, który renderuje zagnieżdżoneLazyRows
). Ta zmiana powinna zmniejszyć liczbę klatek podczas przewijania w przypadku tych elementów typuLazyLists
. 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 sposobu animacji. (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. Użyj interfejsuLinkAnnotation.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 pokrętło 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) - Czcionka
TextFieldCharSequence
została usunięta. 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 znaków 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 przy użyciu oficjalnego interfejsu API Androida (
ScrollCaptureCallback
). Ta funkcja jest eksperymentalna i może obecnie 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) - Czcionka
TextFieldState.valueAsFlow()
została usunięta. 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 poleceniaKeyboardActionHandler
zamiastKeyboardActions
do przetwarzania działań wykonanych przez klawiaturę programową. (I58dda) - Interfejsy API przekazywania pisma odręcznego rysikiem do obsługi pisma odręcznego rysikiem w „fałszywych” polach 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. - Czcionka
TextFieldState.forEachTextValue
została usunięta. (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)- Udostępniliśmy usługę
InterceptPlatformTextInput
, która 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).
- Wycofane konstruktory tekstu
KeyboardOptions
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 określonym 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 programistom 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
w elementachAnchoredDraggable
. Ta zmiana dodaje doAnchoredDraggable
parametrdecayAnimationSpec
, który umożliwia użycie animacji rozkładu przy korzystaniu z 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 programistom 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 zachowaniaBasicTextField
polegającego na wysyłaniu żądań klawiatury programowej w przypadku fokusu.- 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 wierszach/kolumnach: (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). Nazwa fabryki urządzenia
onDragAndDropStart
w fabryceDragAndDropModifierNode
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 realną wartośćDragAndDropTarget
, jeśli interesuje Cię sesja przeciągania i upuszczania. 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 funkcji 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 wykorzystaniem informacji o układzie i przekazać za pomocą metody przesunięcia lub przesunięcia. (If320c).
Zmiany w działaniu
- Funkcja tworzenia wiadomości używa teraz nieliniowego skalowania czcionek, aby poprawić czytelność i dostępność. Gdy skala czcionki w ustawieniach systemowych przekracza 100%, rozmiar małego tekstu jest normalnie powiększony, a już już duży – tylko trochę. Ponadto wysokość wierszy określona w SP będzie automatycznie dostosowywana do zamierzonej wysokości skali 100%. Aby dowiedzieć się więcej, zapoznaj się ze sprawdzonymi metodami 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 w pager 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 przesunięcia, 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 żadnych 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 większą), 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 pomiarów związanych z leniwą listą, siatką itp. (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 regionie
LazyStaggeredGrid
i ustalania ich układu 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, aby umożliwić prawidłowe obsługę zgłoszenia, gdyLayout
będzie używany ponownie (np. jako elementLazyColumn
). 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 typu pre/post API typu
OverscrollEffect
w połączone funkcje „decorator”applyToScroll
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
została wycofana i zastąpiona wersjąFocusRequesterNode
(I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934 b/254529934- 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 znajdziesz w opisie zmian w testach animacji w tej liście zmian. - Dodano opcjonalny parametr
onPerformTraversals: (Long) -> Unit
do konstruktora i funkcji fabrycznejTestMonotonicFrameClock
w celu uruchamiania kodu po wywołaniach zwrotnychwithFrameNanos
, ale przed wznowieniem współrzędnych elementów wywołujących. (Idb413, b/254115946, b/222093277, b/255802670) - Przedstaw działania ułatwień dostępu na stronie:
PageUp
,PageDown
,PageLeft
,PageRight
. Pamiętaj, że są one dostępne tylko w 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) - Czcionka
OverscrollEffect#isEnabled
została usunięta. 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ść elementów kompozycyjnych w postaci liczby wierszy (I24294, b/122476634).
Wersja 1.4.0-alpha01
24 października 2022 r.
androidx.compose.foundation:foundation:1.4.0-alpha01
i androidx.compose.foundation:foundation-layout:1.4.0-alpha01
zostały udostępnione. Wersja 1.4.0-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ń odmian 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)
- Gdy dodajesz zdarzenia
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, aby umożliwić 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 ona 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 eksperymentalną funkcję
BeyondBoundsInterval
, której można używać w niestandardowych implementacjach funkcjiLazyList
, gdy układ elementów wykracza 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 dla 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
atrybutuLineHeightBehavior
zostało zmienione w jedną wyliczeniową:LineHeightTrim
.LineHeightTrim
mają wartości 4 stanów zdefiniowane za pomocą 2 wartości logicznych:FirstLineTop
,LastLineBottom
, Oba i None (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
).Za pomocą
LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)
można na przykład uzyskać działanie podobne do tego, co definiuje CSS.Konfiguracje
trimFirstLineTop
,trimLastLineBottom
działają poprawnie 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 żądanie 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ń. Zaliczenie
Constraints.maxHeight
jest obecnie niedozwolone, ale pozwoli w przyszłości wykonać pewne obliczenia, na przykład elipszę 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 kopie tekstuPointerInputChange
zostaną zużyte. Jeśli chcesz utworzyć niepowiązany elementPointerInputChange
, 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 czcionek Font(DeviceFontFamilyName), aby opcjonalnie wyszukiwać czcionki zainstalowane w systemie podczas łańcuchów 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 usłudzeTextStyle(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 treści w elemencie
VectorPainter
, jeśli obecny układ to RTL. (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. Problemy z przycinaniem wynikające z metodyincludeFontPadding=false
są obsługiwane i nie należy stosować przycinania w przypadku wysokich skryptów. (I31c84, b/171394808) - Interfejs pomiaru ujawnia teraz właściwośćparentData (I3313f)
- Wprowadziliśmy eksperymentalną
Modifier.onFocusedBoundsChanged
, aby umożliwić obserwowanie granic elementów, które można zaznaczyć przez dzieci. (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 muszą już ręcznie przekazywać próśb do użytkowników nadrzędnych. Zamiast tego muszą natychmiast zwrócić prostokąt, który rodzic powinien pokazać rodzicom. (I8E66a)- Obsługa 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 uwzględnianie tylko wymiarów z WindowInset. (I14c94, b/217768486) Dodano
ComposableTarget
,ComposableTargetMarker
iComposableOpenTarget
, które umożliwiają raportowanie w czasie kompilacji, kiedy funkcja kompozycyjna jest wywoływana pod kątem kierowania na aplikację, która nie została przez nią zaprojektowana.W większości przypadków adnotacje można wywnioskować dzięki wtyczce kompilatora, więc nie można używać ich bezpośrednio . Przypadki, których nie można wywnioskować, to m.in. utworzenie i użycie niestandardowego zastosowania, abstrakcyjnych funkcji kompozycyjnych (np. metod interfejsu), pól lub zmiennych globalnych, które są obiektami kompozycyjnymi (wywnioskowane są lokalne zmienne i parametry) lub podczas korzystania z funkcji
ComposeNode
albo powiązanych funkcji kompozycyjnych.W przypadku zastosowania niestandardowych funkcje kompozycyjne wywołujące funkcję
ComposeNode
lubReusableComposeNode
muszą dodać adnotacjęCompoableTarget
dla funkcji i dowolnych typów parametrów kompozycyjnych lambda. Zalecamy jednak utworzenie adnotacji zawierającej adnotacjęComposableTargetMarker
, a następnie użycie oznaczonej adnotacji zamiast bezpośrednioComposableTarget
. Adnotacja kompozycyjna oznaczona kodemComposableTargetMarker
jest równoważna z adnotacjąComposbleTarget
z pełną i jednoznaczną nazwą klasy atrybutu jako parametrem zastosowania. Przykład użyciaComposableTargetMarker
znajdziesz tutaj: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
- Metody
notifyFocusedRect
w językachTextInputSession
iTextInputService
zostały wycofane i nie będą wywoływane. Zamiast niego użyj właściwościBringIntoViewRequester
. (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 hostowanego widoku Androida. (Ia7a51).- Usługa
FontFamilyResolver
jest teraz dostępna w:LocalFontFamilyResolver.current
- Dodano
createFontFamilyResolver(context)
icreateFontFamilyResolver(context, coroutineScope)
, aby tworzyć nowe resolvery FontFamily poza funkcją tworzenia. - Akapit i kilka akapitów zajmują teraz
FontFamily.Resolver
TextLayoutResult.layoutInput.fontFamilyResolver
zawiera teraz resolver używany w tym układzie. Wycofano goTextLayoutResult.layoutInput.resourceLoader
, ponieważ nie jest już używany. (Id5a45, b/174162090)
- Dodano
- Dodaliśmy
AndroidFont
, nowy niskopoziomowy interfejs API do udostępniania nowych typów deskryptorów zasobów czcionek na Androida. Dotyczy to na przykład wczytywania czcionek z backendu w odniesieniu do konkretnej aplikacji, opcjonalnego zlokalizowania czcionek wstępnie zainstalowanych na urządzeniu lub wczytywania czcionki z zasobu, który nie jest dostępny w bieżących fabrykach czcionek.- Rozszerzyliśmy interfejs API
Font.ResourceLoaded
, aby obsługiwać opcjonalne i asynchroniczne wczytywanie czcionek. Nie zalecamy bezpośredniego korzystania z tego interfejsu API przez deweloperów aplikacji. Aby dodać nowe typy czcionek, zapoznaj się z artykułem AndroidFont. - Funkcja rozszerzenia
Font.AndroidResourceLoader
umożliwia konstrukcję elementuFont.ResourceLoader
poza kompozycją. - Dodaliśmy parametr
loadingStrategy
do czcionek opartych na zasobach, aby umożliwić ładowanie asynchroniczne, gdy czcionka zasobów odwołuje się do plików XML dostępnych do pobrania. (Ie5aea, b/174162090)
- Rozszerzyliśmy interfejs API
- Konstruktor
Typeface(FontFamily)
został wycofany. Wcześniej to rozwiązanie służyło do wstępnego wczytywania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. W przypadku dostępnych do pobrania czcionek to wywołanie może zostać zablokowane na 10 sekund. Zamiast niego użyj funkcjiFontFamilyResolver.preload
.- Interfejs
fontResource(FontFamily): Typeface
został wycofany. Wcześniej to rozwiązanie służyło do wstępnego wczytywania czcionek, co w przypadku czcionek do pobrania może potrwać do 10 sekund. 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, jak i określania rozmiaru. Dzięki temu część treści rozciąga się do obszaru wcięcia, a główna treść pozostaje poza tym obszarem. Za pomocą komponentu windowInsetsPadding można na przykład dopełnić obszar treści, aby uniknąć częściowego lub całkowitego zasłonięcia. (Id0395, b/213942085)
Poprawki błędów
- Pola tekstowe będą teraz znajdować się nad klawiaturą, gdy są zaznaczone, a klawiatura jest pokazana, gdy tryb szybkiego wprowadzania danych jest ustawiony na
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
- Opcja wprowadzania tekstu za pomocą klawiatury programowej nie miga już podczas przechodzenia między polami tekstowymi. (I1bf50, b/187746439)
- Pola tekstowe nie wymagają już dodatkowego naciśnięcia, gdy wyświetla się uchwyt kursora. (Ideb4b, b/205726883)
- Działanie lupy do zaznaczania tekstu zostało dopracowane tak, aby odpowiadało lupie na platformie. (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
NonRestartableComposable
do metod przeciążonych istniejącymi metodami, które nie wymagają skomplikowanej logiki. Zmniejsza to liczbę sprawdzania zapamiętanych przez kompilatora (równa się) wszystkich parametrów, które są powtarzane w wywoływanej funkcji wewnętrznej. (I90490) - Dodaliśmy modyfikatory
excludeFromSystemGesture
, które ułatwiają dostęp do aplikacjisetSystemGestureExclusionRects
Androida (I46f07)
Poprawki błędów
- Działanie lupy do zaznaczania tekstu zostało dopracowane tak, aby odpowiadało lupie na platformie. (Idd918, b/206833278)
LazyColumn
,LazyRow
,Modifier.verticalScroll
i inne kontenery, które używająModifier.scrollable
, obsługują teraz przewijanie kółkiem myszy. (I2b5e1, b/198214718)
Wersja 1.2.0-alpha01
12 stycznia 2022 r.
androidx.compose.foundation:foundation:1.2.0-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 uchwytów wyboru w elemencie
SelectionContainer
. (I30b38, b/139320979)
Poprawki błędów
- Naprawiono uchwyt kursora
TextField
, który nie ukrywa się po przewinięciu strony poza widok. (I14552, b/208883748)
Aktualizacje zależności
- Teraz zależy od Kotlin
1.6.10
.
Wersja 1.1
Wersja 1.1.1
23 lutego 2022 r.
androidx.compose.foundation:foundation:1.1.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) - Naprawiono błąd spowodowany przez zawartość schowka przy odczytywaniu ze 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 uchwytów wyboru wewnątrz pól 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 oznaczenia będą teraz opóźnione tylko wtedy, gdy znajdują się w kontenerze
Modifier.scrollable()
. Nie będą zawsze opóźniane w przypadku wyłączenia. (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 wartośćSemanticsNodeInteraction
, dla której wywołano tę funkcję. (I9e5db).- Dodano funkcję
performScrollToNode(matcher: SemanticsMatcher)
, która przewija kontener, który można przewijać, do treści dopasowanej przez podane dopasowanie. (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ę elementów z możliwością przewijania (leniwe i 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 zostały zastąpione przez regułyperformTouchInput
iTouchInjectionScope
. (Ia5f3f, b/190493367) - Do
SemanticsNode
dodano elementtouchBoundsInRoot
, który uwzględnia minimalny rozmiar docelowego elementu dotykowego, dzięki czemu deweloperzy mogą zagwarantować, że docelowe elementy dotykowe spełniają 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 interfejsu ViewConfiguration na potrzeby semantyki i wprowadzania wskaźnika do celu w celu zapewnienia ułatwień dostępu. (IE861C)
Wersja 1.1.0-alfa02
18 sierpnia 2021 r.
androidx.compose.foundation:foundation:1.1.0-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
- Zaktualizowana metoda
DrawScope#drawImage
, która używa zapytań źródłowych i miejsc docelowych w celu korzystania z opcjonalnego parametruFilterQuality. Przydaje się to w przypadku elementów typu pixel art, które mają być pikselizowane po przeskalowaniu w górę. Zaktualizowaliśmy BitmapPainter i funkcję komponowania obrazu, aby korzystała też z opcjonalnego parametruFilterQuality (Ie4fb0, b/180311607) - Pole tekstowe usuwa teraz zaznaczenie po naciśnięciu przycisku Wstecz, co odpowiada działaniu 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 dla kształtów ogólnych, by rozwiązać problemy ze ścieżkami zdefiniowanymi o stałych wymiarach. (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, który zwiększa dostępność. (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
- Czcionka
ManualFrameClock
została usunięta. Jeśli chcesz sterować animacjami, użyjcomposeTestRule.mainClock
. (I3c3e8, b/189951065) - zmień role wyliczeniowe i tryb LiveRegionMode na wbudowane klasy 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 będzie zależna od klucza. Oznacza to, że jeśli dodasz lub usuniesz elementy przed aktualnie widocznym elementem, element z danym kluczem zostanie zachowany jako pierwszy widoczny. (Id263f, b/184257857)
- Główne stałe to na razie @ExperimentalComposeUiApi. Podczas przetwarzania kodu można deklarować stałe prywatne przed stabilizacją. (Ia5d48).
- W regule AndroidComposeTestRule dodano IdlingStrategy, której można używać do testowania platform do zainstalowania alternatywnego mechanizmu w oczekiwaniu na spokój. Użyj
AndroidComposeTestRule.setIdlingStrategyFactory()
, zanim rozpocznie się test, aby zainstalować 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 to metoda „hot” i należy ją skompilować wcześniej.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, który jest charakterystyczny dla aplikacji. ART może następnie wykorzystać ten profil, gdy aplikacja jest instalowana na urządzeniach, w celu z wyprzedzeniem skompilowania określonego podzbioru aplikacji w celu zwiększenia 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)
- Zrefaktoryzowano użycia enum do klas wbudowanych, aby uniknąć problemów z pełnymi instrukcjami związanymi z dodawaniem nowych wartości wyliczeniowych. (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ż pojedynczymi wartościami, lecz listami. Dzięki temu można je scalić w postaci, w jakiej są zamiast konkatenacji. Udostępniliśmy też lepsze interfejsy API do testowania umożliwiające wykorzystanie tych zmian (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)
- Funkcje
AnnotatedString.withAnnotation
to teraz ExperimentalTextApi zamiast ExperimentalComposeApi. (I0cd0a).- Konstruktor TextUnit z ustawieniem TextUnitType to 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. Łatwo go 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 zatrzymywały się po 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
SemanticsActions.ScrollToIndex
, aby przewijać listę ze indeksowanymi elementami do elementu o określonym indeksie orazSemanticsProperties.IndexForKey
, aby uzyskać indeks elementu na liście z elementami z kluczami. Oba działania są implementowane przez LazyList.- Dodano funkcję
SemanticsNodeInteraction.performScrollToIndex
, która przewija listę do podanego indeksu, orazSemanticsNodeInteraction.performScrollToKey
, która przewija listę do elementu z danym kluczem. (I4fe63, b/178483889, b/161584524)
- Dodano funkcję
- Obsługa zapisu w polu AnnotatedString w polu TextFieldValue.Saver. Do narzędzia AnnotatedString.Builder (I8cbdc, b/178446304) dodano funkcje narzędzia addTtsAnnotation i z Adnotation
- Do grupy
PaddingValues(horizontal, vertical)
dodano domyślne wartości parametrów0.dp
(I05571, b/181336792)
Poprawki błędów
- Elementy podrzędne w wierszach i kolumnach zawierające atrybut
weight(fill = false)
nie wypełniają już całego dostępnego miejsca 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 czynności związane z przewijaniem ułatwień dostępu
ACTION_SCROLL_FORWARD
,ACTION_SCROLL_BACKWARD
,accessibilityActionScrollLeft
,accessibilityActionScrollUp
,accessibilityActionScrollRight
iaccessibilityActionScrollDown
. Zamiast przewijać do końca elementu przewijanego, przewija on teraz o 1 ekran w danym kierunku. (Ieccb0) - Pliki AndroidManifest z ui-test-manifest i ui-tooling-data są teraz zgodne z Androidem 12 (I6f9de, b/184718994)
Wersja 1.0.0-beta04
7 kwietnia 2021 r.
androidx.compose.foundation:foundation:1.0.0-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
- Zmiana nazw hideOprogramowanieKlawiatura i show SoftwareKlawiatura
na kontrolerze SoftwarekeyController odpowiednio na
hide()
ishow()
.- Udostępnij pełny interfejs CompositionLocal dla kontrolera Local SoftwareKeyController, aby umożliwić jego skonfigurowanie (jest to szczególnie przydatne w testach) (I579a6).
- Wprowadzenie:
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. WywołaniewithFrameNanos
lubRecomposer.runRecomposeAndApplyChanges
bez numeruMonotonicFrameClock
spowoduje zgłoszenieIllegalStateException
. (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 nowy interfejs API kompozycji
LocalSoftwareKeyboardController
, który zastąpił poprzedni interfejs SoftwareKlawiaturaController w TextField. (I5951e, b/168778053) - Dodano nowy interfejs API kompozycji
LocalSoftwareKeyboardController
, który zastąpił poprzedni interfejs SoftwareKlawiaturaController w TextField. (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)
- Usunęliśmy wywołanie zwrotne SoftwareKlawiaturaController ze wszystkich pól tekstowych. Wkrótce zostanie 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 elementem[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() Przewinięto nazwę przewijaniaState.smooth ScrollTo() na „animmate ScrollTo() (I35ded)
Komponent Modifier.zoomable został zastąpiony przez plik Modifier.transformable. Funkcje smoothPanBy i smoothRotationBy zostały zastąpione. (Ifc32b, b/175294473)
Pole
defaultFactory
dla obiektówcompositionLocalOf
istaticCompositionLocalOf
jest teraz wymagane, a nie opcjonalne.Ta zmiana usuwa potencjalny błąd typu w przypadku typów niedopuszczających wartości null, w których nie podano domyślnej wartości fabrycznej. Wcześniej w przypadku typu niedopuszczającego wartości null konieczne było odniesienie do wartości null.
W przypadku typów dopuszczających wartości null domyślną wartością fabryczną jest
{ null }
.Nie zalecamy używania zasobów lokalnych z typami niezawierającymi wartości null, chyba że można podać rozsądną wartość domyślną. Jeśli nie istnieje rozsądne ustawienie domyślne, funkcja lambda
defaultFactory
powinna zgłosić wyjątek. Zwrócenie wyjątku oznacza jednak, że konsumenci z okolicy są w bezpośrednim stopniu uzależnieni od jego zapewnienia, a system typów nie jest egzekwowany. (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).
Pakiety metod smooth ScrollBy i ScrollBy 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)
Usunięto klasę AnimationClockObservable i jej podklasy. 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 funkcji lambda. Możesz utworzyć stan za pomocą funkcji
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
- Dodaliśmy nowy lokalny interfejs API do kompozycji Local SoftwareKlawiaturaController, aby zastąpić poprzedni interfejs SoftwareKlawiaturaController w polu TextField. (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ętywania klawiszy, aby wskazywać, kiedy współprogram wykrywania danych wejściowych wskaźnika ma zostać uruchomiony ponownie w przypadku nowych zależności. (I849cd)
- Testowanie aktualizacji: funkcja hasText() sprawdza w polu tekstowym zarówno dane wejściowe, jak i teksty etykiet, wskazówek i zastępczych (Iab803)
- Dodano parametr PaddingValues.Bezwzględny, którego można używać w interfejsach API akceptujących wartości PaddingValues. (Ia5f30).
- Parametr onImeActionPerformed został wycofany. Użyj jego działania (If0bbd, b/179071523).
- Aby lepiej dopasować konwencje nazewnictwa do obrazów ImageBitmap i ImageVector, nazwa komponentu ImagePainter została zmieniona na BitmapPainter na równoległe narzędzie VectorPainter. (Iba381, b/174565889)
- Lepsze interfejsy API do testowania podłańcucha z podłańcuchem jako argumentem (Icbe78)
- Wprowadziliśmy współrzędny element kontekstu
InfiniteAnimationPolicy
, który będzie stosowany w nieskończoność animacji. Domyślnie żadna zasada nie jest instalowana, chyba że przeprowadzasz testy z użyciemComposeTestRule
. (I50ec4, b/151940543) - Animatable.snapTo i Animatable.stop to teraz funkcje zawieszania (If4288)
- Element KomponentActivity.setContent został przeniesiony do folderu androidx.activity.compose.setContent w module androidx.activity:activity-compose. (Icf416).
- Usunęliśmy metody niszczenia i copy() z 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 () -> Indication (I5eeea, b/157150564)
Pole
Constraints.enforce
zostało zastąpione elementemConstraints.constrain
. (I8B8EA).Zasób loadFontResource został wycofany. Używaj zamiast niego fontResource. Elementy graficzne, loadImageResource, vectorResource i loadVectorResource zostały wycofane. Użyj narzędzia PaintterResource. (I6B809)
Ze względu na wydajność semantyka ScrollAxisRange przyjmuje teraz wartości lambda zwracające liczby zmiennoprzecinkowe zamiast bezpośrednich wartości 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 Ambientów, aby pasowały do nazwy Ambient -> 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)
jest teraz@NonRestartableComposable
@ComposableContract(readonly = true)
jest teraz@ReadOnlyComposable
@ComposableContract(preventCapture = true)
został usunięty z@DisallowComposableCalls
adresu@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 rekompozytory będą kontynuować ponowne komponowanie, dopóki nie zakończą się uzupełniające podrzędne kompozycje. 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 znajdziesz teraz w polecenia compose:runtime, a AndroidUiDispatcher – w 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 absolutRounderCornerangle i absoledCutCornerForm zostały wprowadzone w przypadkach, gdy automatyczne odbicie 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ł przekonwertowany tak, aby wykorzystywał interfejs zamiast konkretnej klasy. Interfejs nie używa już parametru type.
To zmiana wewnętrzna, która nie powinna wpływać na zgodność kodu źródłowego, ale jest zmianą binarnej. (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. Zamiast niej użyj Animatable. (I71345, b/177457083)
- Usunięto CoreText i CoreTextField z publicznego interfejsu API
- Usunięto wycofane przeciążenie komponentu SelectionContainer (I99c19)
Usuń wycofane funkcje przewijania, które nie są zawieszane. Zgodnie ze zmianami w poprzedniej wersji funkcje przewijania bez zawieszania są teraz całkowicie usunięte. Przejdź na funkcje zawieszania o tych samych nazwach. Zakres współoutine można uzyskać za pomocą funkcjirememberCoroutineScope(). (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ą wykrywaniaTapSteps. (I6baf9, b/175294473)
Czcionka
Recomposer.current()
została usunięta. [Abstract]Plik ComposeView obecnie domyślnie używa leniwych, ograniczonych do okna Rekompozytorów, które są wywoływane przez obiekt ViewTreeLifecycleOwner dla okna. Rekompozycja i animacje z FrameNanos są wstrzymywane na czas zatrzymania cyklu życia hosta. (I38e11)Funkcja Recomposer.runningRecomposers udostępnia teraz globalny przepływ StateFlow tylko do odczytu RecomposerInfo, który umożliwia obserwację bieżącego stanu kompozycji w trakcie tego procesu. Preferuj ten interfejs API przy użyciu interfejsu Recomposer.current(), który jest teraz wycofany. (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
Zalecamy teraz korzystanie z funkcji zawieszania, które pozwalają kontrolować przewijanie i poczekać na zakończenie przewijania. W ramach tego procesu wycofujemy lub usuwamy wersje tych funkcji, które nie są zawieszone. (Zastosowane)
Wycofanie funkcji smooth ScrollBy bez zawieszania, zalecamy obecnie korzystanie z funkcji zawieszania, które umożliwiają kontrolowanie przewijania i oczekiwanie na zakończenie przewijania. W ramach tego procesu wycofujemy wersje tych funkcji bez zawieszenia. (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. Zamiast tego użyj zawieszenia 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 potrzebują 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.
- Wycofanie wcześniejszych funkcji fabrycznych, używając małych i pierwszych liter
- Nowe funkcje fabryczne zwracają FontFamily zamiast podklas
- Ukryto konstruktory podklas, aby można je było tworzyć tylko za pomocą funkcji fabrycznych.
- Zmieniono nazwę Font.asFontFamily na Font.toFontFamily
- (I42aa7).
Dodano
ComposeContentTestRule
, który rozszerza zakresComposeTestRule
i definiuje zasadęsetContent
, która została usunięta zComposeTestRule
. Dodaliśmy metodę fabrycznącreateEmptyComposeRule()
, która zwracaComposeTestRule
i nie uruchamia za Ciebie aktywności. Użyj tej opcji, jeśli chcesz uruchomić aktywność podczas testu, np. za pomocą narzędziaActivityScenario.launch
(I9d782, b/174472899)animateAsState to teraz animateFooAsState, gdzie Foo to typ animowanej zmiennej, np. Float, Dp, Offset itp. (Ie7e25)
Gęstość jest teraz zakresem odbiornika w interfejsach rozmieszczenia. (I18aad).
TextFieldValue akceptuje ciąg AnnotatedString. Jest to jednak zmiana dostępna tylko w interfejsie API, a edycja tekstu z wieloma stylami nie jest jeszcze wdrożona.
- 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 sekwencja podsekwencji są teraz funkcjami instancji, a funkcje rozszerzeń zostały usunięte. (Iaf429).
Czas trwania i czas działania zostaną zastąpione długimi milisekundami, a ten krok eliminuje zależność danych wejściowych wskaźnika do tych klas. (Ia33b2, b/175142755, b/177420019)
PamiętajObserver, która zastąpiła funkcję CompositionLifecycleObserver, a zasada CompositionLifecycleObserver została wycofana.
Metoda
RememberObserver
zastępuje metodęCompositionLifecycleObserver
ze zmodyfikowaną semantyką i nowymi nazwami. Zmiana na nowy interfejs API można wprowadzić mechanicznie w przypadku obiektów, które są zapamiętane tylko raz, co jest i nadal jest zalecane. Jeśli jednak odniesienie w kompozycji zostało zapamiętane więcej niż raz, funkcjaonRemembered
jest wywoływana dla każdego odwołania, w którym elementonEnter
jest wywoływany tylko raz. FunkcjaonEnter
była wywoływana wiele razy, jeśli obiekt był używany w podkompozycjach, np.WithConstraints
iScaffold
sprawiły, że gwarancja pojedynczego wywołaniaonEnter
była zawodna i został usunięty dlaRememberObserver
.RememberObserver
dodaje elementonAbandoned
, który jest wywoływany, jeśli wystąpienieRememberObserver
jest zwracane z wywołania zwrotnego przekazanego doremember
, ale nie jest zapamiętywane w stanie kompozycji i dlatego nigdy nie zostanie wywołane przezonRemembered
. Może się tak zdarzyć, jeśli wyjątek kończy kompozycję przed ukończeniem lub gdy kompozycja została odrzucona, ponieważ stan produkował kompozycję, która nie jest już aktualna lub nie jest już potrzebna. Jeśli instancjaRememberObserver
zgodnie z powyższą rekomendacją dotyczącą referencji śledzi zasób zewnętrzny (zarównoonForgotten
, jak ionAbandoned
), oznacza to, że zasób nie jest już potrzebny. Jeśli obiekt śledzi rozpoczęte prace lub zasoby przydzielone wonRemembered
, obiektonAbandoned
może zostać zignorowany, ponieważ nie będzie wywoływany po wywołaniu funkcjionRemembered
. (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
- Styl akapitu
- Styl spanu
- Styl tekstu
- Waga czcionki
- Ozdobniki tekstu
- TextGeometricTransform
- Indeks tekstowy
- Wynik układu tekstu
- TextLayoutInput (Iaff99),
Usunięto eksperymentalne metody monotonicFrameAnimationClockOf (Ib753f, b/170708374).
Wycofaliśmy globalne metody współrzędnych i wprowadziliśmy nowe metody oparte na współrzędnych w oknach. (IEE284).
Użyj ImeAction.None zamiast ImeAction.NoAction
- Użyj 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 stateDescriptionRange została zmieniona na progressBarRangeInfo. Nazwa Accessibility ScrollState została przemianowana na ScrollAxisRange. Nazwa levelAccessibility ScrollState została zmieniona na level ScrollAxisRange. Nazwa verticalAccessibility powiązanych z nią 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 metodę PointerInputData i zmodyfikowaliśmy ją, aby dodać do niej wszystkie pola PointerInputData. Obiekty PointerInputEvent i PointerInputEventData są wewnętrzne, ponieważ nie są używane w żadnym publicznym interfejsie API. (Ifff97, b/175142755)
Zmieniono nazwę TextInputService.onStateUpdated na updateState (Id4853)
Usuń parametr displaySize, ponieważ powinien się unikać. Zwykle lepiej jest użyć funkcji onRoot() lub rozmiaru co najmniej okna. (I62db4).
Wersja 1.0.0-alpha10
13 stycznia 2021 r.
androidx.compose.foundation:foundation:1.0.0-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).
- Zmiany w interfejsie EditOperations API
- 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 uwzględnić części składowe i operacje matematyczne. (IB0447)
- Zmieniliśmy nazwę @ExperimentalTesting na @ExperimentalTestApi, aby zapewnić spójność 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)
- Przeniesienie obiektu natywnego do modułu interfejsu i przekształcenie go w moduł wewnętrzny. Zaktualizowane użycie natywnego użycia klasy natywnej oznacza, że w implementacjach używana jest metoda „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).
- W przypadku klas wbudowanych ze stałą nieokreśloną dodawane są wartości atrybutów isSpecified, isUnspecified i useOrElse. (I93f7b, b/174310811)
Poprawki błędów
- Nowy interfejs API
Animatable
oparty na współudziale, który zapewnia wzajemną wyłączność wśród animacji. 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)
- Metoda
animate()
została zastąpiona przezanimateAsState()
, która zwracaState<T>
zamiastT
. Zwiększa to wydajność, ponieważ zakres unieważniania można zawęzić do miejsca, w którym odczytywana jest wartość stanu. (IB179e) - Dodaj interfejs API roli Semantics i rolę jako parametr do klikalnego, możliwego do wyboru i przełączenia interfejsu SemanticsModifier. Zmieniono Modifier.progressSemantics, tak 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ólny typ, co umożliwia wdrożenie przewijania niestandardowego w obu tych typach.
Spowoduje to również przeniesienie obiektu smooth ScrollBy do funkcji rozszerzenia w funkcji 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)
W przypadku zawieszania interfejsów API danych wejściowych wskaźnika zmieniliśmy nazwę HandlePointerInputScope na 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 odwrotnego układu do LazyColumn/Row. Gdy elementy
true
będą składać się 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)
wykrywaj gesty dotykowe, teraz używa jednego wywołania zwrotnego z połączonymi parametrami centroid, przesuwania, powiększania i obracania. (Ie6e1c).
Przeniesiono ContentDrawScope do modułu interfejsu ui-graphics, aby korzystać z modułu DrawScope. (Iee043, b/173832789)
Poprawki błędów
- 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. Wcześniej były one oznaczone jako InternalComposeAPI. Teraz są one wewnętrzne w module tworzenia wiadomości.
Interfejsy CompositionData i CompositionGroup zostały dodane jako zamiennik interfejsu ui-tooling API, którego można używać do wyodrębniania informacji o kompozycji. Są one publiczne, ale nie są przeznaczone do stosowania poza interfejsem ui-tooling API, ponieważ dostarczają nieprzetworzone informacje interpretowane przez interfejs ui-tooling API (I31a9c)
Zrefaktoryzowano ShaderBrush, aby leniwie utworzyć instancję cieniowania, gdy dostępne są informacje o rozmiarze środowiska rysowania. Przydaje się to przy definiowaniu gradientów, które w momencie tworzenia kompozycji zajmują pełne granice rysowania funkcji kompozycyjnej, bez konieczności wdrażania niestandardowych implementacji DrawModifier.
Wycofaliśmy interfejsy API konstruktora funkcji gradientu. W obiekcie Gradient zastąpiliśmy metody fabryczne. (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. Wartość ułatwień dostępu została zmieniona na stateDescription. (I250f2)
Wprowadziliśmy kilka nowych funkcji w Rejestrze wyboru i przemianowaliśmy parametr onPositionChange na nazwę notificationPositionChange. (Ifbaf7).
AndroidOwner jest wewnętrzny (Ibcad0, b/170296980)
Nowa funkcja nieskończoności powtarzania do tworzenia specyfikacji InfiniteRepeatableSpec (I668e5)
Interfejs
Applier
został zmieniony, aby uprościć tworzenie drzew w widoku od dołu, a nie od góry.Nazwa metody
insert()
została zmieniona nainsertTopDown()
.Dodano nową metodę:
insertBottomUp()
.Stosuje on węzły do edytowanego drzewa przy użyciu funkcji
insertTopDown()
lubinsertBottomUp()
, w zależności od tego, co sprawdza się lepiej.Niektóre drzewa, np.
LayoutNode
iView
, są znacznie efektywniejsze w budowaniu od dołu niż od góry. Przed tą zmianą trzeba było wdrożyć od dołu stos wkładek, który trzeba było kopiować do każdego narzędzia, które wymagało oddolnej struktury w celu zwiększenia skuteczności. W przypadku tej zmiany właściwośćApplier
zastępuje zasadęinsertBottomUp()
, aby utworzyć drzewo od dołu do góry, i zastąpienieinsertTopDown()
, aby utworzyć drzewo od dołu. (Icbdc2)Dodano interfejs PaintterResource API do obsługi nieprzezroczystych obiektów Painter pochodzących z formatów zasobów zrastrowanych (np. PNG) lub plików VectorDrawable. Konsumenci nie muszą już określać typu zasobu z wyprzedzeniem i mogą wywołać tę metodę, aby uzyskać obiekt Painter do użycia w komponentach lub modyfikatorach malarstwa. (I2c703, b/173818471)
Dodaliśmy funkcję fabryczną buildAnnotatedString, która pozwala utworzyć obiekt AnnotatedString. Wycofano funkcję konstruktora adnotatedString. (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). - Zmieniliśmy metody
await*TouchSlop()
, aby nie wykrywały wskaźnika w dół, i zmieniliśmy nazwę na*OrCancellation
. Usunęliśmy też potrzebę parametruorientationLock
. (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 pomoce do wykrywania obracania, powiększania i przesuwania. (IC459d).
- Nowy wykrywacz gestów przeciągania do zawieszania wejściowego interfejsu API, w tym blokowanie orientacji. (Icef25).
- Zmieniliśmy nazwę komponentu VectorAsset na ImageVector. Przeniesiono komponent VectorAsset na Builder, aby stał się wewnętrznym klasą ImageVector, zgodnie z wytycznymi rady ds. interfejsów API. Dodano alias typu VectorAssetBuilder do połączenia z obiektem ImageVector.Builder w przypadku zgodności. (Icfdc8)
- Zmieniliśmy nazwę komponentu ImageAsset i powiązane metody na 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 interfejsy LazyListState.snapToItem i LazyListState.smooth ScrollBy, a także interfejsy API niższego poziomu do sterowania przewijaniem. Te interfejsy API udostępniają interfejs zawieszania, który kontroluje przewijanie, które czeka na zakończenie przewijania przed jego 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 i wskaźnika naciśnięcia zostało dodane za pomocą nowego wskaźnika zawieszania. Dodaliśmy też kilka narzędzi, które ułatwiają programistom 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.Użyj go. Stos został usunięty. Zamiast niego użyj Box (I32c2b, b/172470874)
Zmieniono nazwę aranżacji bezwzględnej na Rozmieść.Bezwzględna. (If26f2).
Poprawki błędów
- Przeniesiono interfejsy API DrawModifier z pakietu androidx.compose.ui do pakietu androidx.compose.ui.draw. Utworzono plik DrawModifierExit.kt, który zawiera aliasy typów i metody pomocnicze, które pomagają w migracji z wycofanych interfejsów API do obecnych. (Id6044, b/173834241)
- Zgodnie z opiniami Rady ds. API zmodyfikowaliśmy też nazwę Modifier.drawLayer na Modifier.graphicsLayer. Wraz z opiniami rady ds. API zaktualizowaliśmy też powiązane klasy na GraphicsLayer. (I0bd29, b/173834241)
- Element
<T>
został usunięty z deklaracji SubcomposeLayout. Możesz go użyć bez określania typu. (IB60c8) - Sprawia, że pola czasu działania i pozycji PointerInputData nie mają 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. Krój czcionki Androida można wczytać 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 mergeAllDescendants została zmieniona na scalanie potomnych. (IB6250)
- Kontrola czasu w testach (TestAnimationClock i jego zastosowania) jest obecnie 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 liczby całkowitej (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 niezwiązany z projektowaniem (równolegle do 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
- Wprowadziliśmy klasę wbudowane ScaleFactor do reprezentowania współczynników skali dla osi poziomej i pionowej niezależnie od siebie na potrzeby niejednolitych przypadków użycia skalowania.
- Dodano metodę computeScaleFactor do ContentScale
- Dodano funkcję ContentScale.FillBounds do wykonywania niejednolitego skalowania w celu rozciągnięcia granic atrybutu src tak, aby w pełni zająć miejsce docelowe.
- Dodaliśmy metody operatorów do obliczania parametrów ScaleFactor z parametrami Size.
- (IC96a6, b/172291582)
- Sekcja CapToBitmap została przeniesiona do tagu scanToImage. (I86385)
- Oznacza CoreText jako @InternalTextApi. Użyj tekstu BasicText. (I6aaeb).
- Zmień nazwę KlawiaturaOptions 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)
- Zaktualizowaliśmy interfejs Icon API, tak aby przyjęto kolor.Nieokreślony jako możliwy odcień, który rysuje przesłany zasób lub malarz bez użycia ColorFilter. Wcześniej próba ignorowania odcienia za pomocą opcji Color.Unspecified powodowała odcień przezroczystym kolorem, który kończył się bez renderowania. (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 pozycji elementu SelectionHandles w kontenerze 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 „shiftBy” (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
- Zrezygnuj z metody VectorPainter i zamiast niej użyj komponentu PamiętajVectorPainter, aby lepiej wskazać, że interfejs kompozycyjny interfejs API wewnętrznie wykorzystuje funkcję „zapamiętuj” w celu zachowywania danych w różnych kompozycjach. (Ifda43).
- Włącz przejścia w ComposeTestRule. Usuń tę opcję, by włączyć migający kursor z reguły ComposeTestRule. (If0de3).
- Do CoreTextField (I72e6d) dodano opcję klawiatury jednowierszowej.
- Zmieniliśmy nazwę interfejsu Radius API na CornerRadius, aby lepiej odzwierciedlić sposób jego używania w usłudze Compose. Zaktualizowaliśmy dokumentację, by 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 -> AmbientContentColor
- TextStyleAmbient -> AmbientTextStyle
- IndicationAmbient -> AmbientIndication
- EmphasisAmbient -> AmbientEmphasisLevels
- RippleThemeAmbient -> AmbientRippleTheme (I37b6d)
Poprawki błędów
- W ramach standaryzacji wartości w klasach wbudowanych zmień nazwę Kolor.Unset na Kolor. Nieokreślona, aby zachować spójność 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)
- Zaktualizowano Size.Nieokreślone parametry na Float.NaN, a nie Float.POSITIVE_INFINITY. Zaktualizowaliśmy implementacje narzędzia Painter, aby umożliwić sprawdzanie pod kątem rozmiarów nieokreślonych i 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).
- Czcionka
PointerInputFilter.onPointerInput(...)
została usunięta. 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 jedna nad drugą, jeśli ma ona 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 ozdoby 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 komponentów LazyRow i LazyColumn. Instancje można tworzyć za pomocą funkcjirememberLazyListState() i przekazywać je do parametru stanu komponentu. Obecnie w tej wersji początkowej widać pierwszy widoczny element i przesunięcia. (Ic7cb7, b/159307669)
- Leniwe położenie listy i przesunięcie przewijania są teraz zapisywane i przywracane w sekcji Rekreacja na podstawie aktywności (Ie045f, b/166589058)
- Dodaj działanie semantyki długiego kliknięcia (I6281b, b/156468846)
- Dodano narzędzie Mutatormutex do utrzymywania w czasie pojedynczego mutatora współdzielonego stanu i anulowania kolidujących mutatorów według priorytetu (I3f975)
- Adnotacja rootAnimationClockFactory, uzyskania włączone
- 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 Graphics API.
- Zaktualizowaliśmy interfejsy API skalowania i obrotu przekształcania, aby wykorzystywały pojedynczy parametr Offset do reprezentowania współrzędnych przestawnej zamiast osobnych parametrów zmiennoprzecinkowych dla współrzędnych x/y w DrawScope i DrawTransform
- Usunięto metody Rect.expandToInclude i Rect.join
- Zaktualizowaliśmy dokumentację dotyczącą promieni eliptycznych. Oprócz eliptycznego
- Dodaliśmy dokumentację wskazującą, że publiczny konstruktor dla wbudowanej klasy Radius nie powinien być wywoływany bezpośrednio, ale wystąpienie obiektów Radius należy tworzyć za pomocą ich konstruktorów funkcji.
- Usunęliśmy interfejsy RoundRect API do wysyłania zapytań dotyczących górnych praw, dolnych, dolnej, środkowej części itp.
- Wycofano Rect.shift na rzecz Rect.translate
- Usunięto interfejsy API RoundRect.grow i Rect.shrink
- Zmieniono nazwę RoundRect.outerRect na Rect.boundingRect
- Usunęliśmy metody RoundRect.middleRect/tallMiddleRect/wideMiddleRect i Rect.isStadium
- 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ę
- Zaktualizowaliśmy konstruktor RoundRect, który wykorzystuje właściwości typu Radius zamiast poszczególnych parametrów dla wartości promieni x/y.
- Usunęliśmy interfejsy Size API, które zakładały, że jest to prostokąt o źródle wartości 0,0
- Do interfejsu Radius dodano interfejs API destrukcyjny.
- Przenieśliśmy różne funkcje rozszerzenia RoundRect na właściwości
- (I8f5c7, b/168762961)
- Optymalizacje wydajności funkcji LazyColumnFor/LazyRowFor przewijania dzięki unikaniu zbędnych zmian kompozycji podczas każdego przewijania (I64f65, b/168293643, b/167972292, b/165028371)
- Naprawiono 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 Graphics API.
- Zaktualizowaliśmy interfejsy API DrawScope z metodami przekształcania o zakresie wskazującym, że przekształcenie jest stosowane tylko w wywołaniu zwrotnym i usuwane po wywołaniu wywołania zwrotnego
- Zaktualizowaliśmy dokumentację dotyczącą clipPath, aby odwoływały się do ścieżki zamiast zaokrąglonego prostokąta
- Poprawiono odstępy w dokumentacji dla prawego parametru w clipPath
- Zmieniliśmy nazwę DrawScope.drawCanvas na DrawIntoCanvas i usunęliśmy parametr rozmiaru.
- Zmieniono nazwę parametrów Dx/dy w metodzie wstawienia na poziomą i pionową
- Dodano przeciążenie wektora, które zapewnia tę samą wartość wstawienia do wszystkich 4 progów
- Usunęliśmy dokumentację metody wstawiania, która wskazuje, że wstawienie zostanie zastosowane do wszystkich 4 stron,
- Zaktualizowano dokumentację klasy Rect
- Zaktualizowaliśmy komentarze do parametrów Rect, aby pasowały do stylu kdoc
- 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, ponieważ obecne metody globalne zostaną wycofane. (IEAE36).
- Naprawiono obliczanie rozmiaru i pozycji w GestyScope, co powodowało m.in. generowanie nieprawidłowych gestów przesuwania (Iaf358, b/166589947).
- Przeniesiono
createAndroidComposeRule
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
ManualFrameClock.hasAwaiters
, by sprawdzić, czy coś czeka na klatkę z tego zegara;runWithManualClock
jako zamiennikrunBlocking
w przypadku przeprowadzania testów, które wymagają ManualFrameClock;TestUiDispatcher.Main
daje łatwy dostęp do głównego dyspozytora UI w testach.Na przykład:
@Test fun myTest() = runWithManualClock { clock -> // set some compose content withContext(TestUiDispatcher.Main) { clock.advanceClock(1000L) } if (clock.hasAwaiters) { println("The clock has awaiters") } else { println("The clock has no more awaiters") } }
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)
- Dodano 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. Pozwala to zdefiniować niestandardową zasadę łączenia semantyki mergeAllDescendants. Domyślną zasadą jest użycie wartości nadrzędnej, jeśli już istnieje, lub wartości podrzędnej. (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ąpiła jawne wywołaniaremember { mutableStateOf(...) }
, aby zapewnić przejrzystość. Zmniejsza to ogólną powierzchnię interfejsu API i liczbę pojęć związanych z zarządzaniem stanem. Dopasowanie do wzorcaby mutableStateOf()
w przypadku przekazywania właściwości klas. (IA5727). - Zmieniliśmy nazwę parametru RRect na RoundRect, by lepiej dopasować ją do wzorców nazewnictwa tworzenia kompozycji Utworzyliśmy podobne konstruktory funkcji do konstruktorów funkcji RRect i wycofanych konstruktorów funkcji RRect (I5d325)
- Usunięto wartości onChildPositioned i OnChildPositionedModifier. Deweloperzy powinni zamiast tego używać w układzie podrzędnym onPositioned i OnPositionedModifier. (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 modyfikatory.absoluteOffset() i Modifier.absoluteOffsetPx(). W przeciwieństwie do modyfikatorów przesunięcia, modyfikatory przesunięcia bezwzględnego nie będą automatycznie odbicia lustrzanego od prawej do lewej (I3aa21).
Row
iColumn
są teraz funkcjami wbudowanymi, więc znacznie zmniejszają wymagania 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, aby mieć spójny interfejs API
- Zmień nazwę IntOffset.Origin na IntOffset.Zero, by była zgodna z interfejsem Offset API
- Przeniesiono metodę natywnego Canvas z interfejsu Canvas, aby zachęcić konsumentów do tworzenia własnych instancji Canvas
- Utworzono stub klasy EmptyCanvas do refaktoryzacji DrawScope jako parametr niepusty zamiast lateinit i zapewnia niedodawanie pola do wartości 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 typ Pascal
- Zmieniono nazwy enum PaintingStyle na przypadek Pascala
- Zmieniono nazwę wyliczeń PathFillType na przypadek Pascal
- Zmieniono nazwę wyliczeń StrokeCap na przypadki Pascal
- zaktualizowaliśmy implementację DrawCache tak, aby nie używała już parametrów Lateinit,
- Zaktualizowano metodę DrawScope, by nie używała już leniwego przekazywania w przypadku wewnętrznych parametrów FillPaint i slidePaint
- Zaktualizowaliśmy funkcję kompozycji obrazu, aby uniknąć używania usługi Box i zmniejszania nakładu pracy
- Zaktualizowaliśmy klasę Outline tak, aby dodać do niej adnotacje @stałe.
- Zaktualizowaliśmy narzędzie PathNode, aby dodać adnotacje @Stałe dla każdej instrukcji ścieżki
- Zaktualizowaliśmy składnię wektorową, aby usunąć zbędne warunkowe kontrole równości, ponieważ funkcja tworzenia wiadomości już je obsługuje
- Wycofane metody konstruktora towarzyszącego Prostokąt na rzecz konstruktorów funkcji
- zaktualizowaliśmy klasy i konstruktory funkcji Brush, używając interfejsów API @Immutable i @Stable.
- Zaktualizowano enum VertexMode na PascalCase
- Zaktualizowano metodę DrawScope selectPaint, która warunkowo zastępuje parametry kreski w malowaniu, jeśli uległy zmianie
- Zaktualizowaliśmy rozmiar, by dodać interfejs API destrukcyjny; zmień nazwę UnspecifiedSize na Nieokreślony i usunęliśmy nieużywane metody
Dodano MonotonicFrameAnimationClock, który umożliwia użycie MonotonicFrameClock jako funkcji AnimationClockObservable w celu wypełnienia luki między nowymi zegarami opartymi na współprogramach a interfejsami API, które nadal używają starych zegarów opartych na wywołaniach zwrotnych.
Odpowiednikiem MonotonicFrameClock elementu ManualAnimationClock jest teraz ManualFrameClock. (I111c7, b/161247083)
Czcionka
SemanticsNodeInteraction.performPartialGesture
została usunięta. UżyjSemanticsNodeInteraction.performGesture
. (Id9b62)Zmieniono nazwę
SemanticsNodeInteraction.getBoundsInRoot()
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. Pole „To” daje silniejszy sygnał określający kolejność, ale uniemożliwia też 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żyj w zamian elementu OnPositioned w elemencie podrzędnym. (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ć funkcji Compose
0.1.0-dev15
, musisz zaktualizować zależności zgodnie z nowymi fragmentami kodu pokazanymi powyżej w sekcji Deklarowanie zależności.
Zmiany interfejsu API
- Podobnie jak nowy parametr w tabeli 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. Natomiast ScrollerPosition został wycofany i zastąpiony przez 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 w przypadku elementów przewijanych. 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 zapis „semantyka { hide = true }” będzie 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)
- Zmieniliśmy domyślny parametr ContentScale dla elementu kompozycyjnego obrazu z Inside na Fit. Zrobiono to, aby uzyskać możliwość skalowania obrazu malarza w górę w sytuacji, gdy rozmiar układu jest większy niż rzeczywisty rozmiar malarza, przy zachowaniu współczynnika proporcji. To zachowanie lepiej odpowiada oczekiwaniom w zakresie dostarczania obrazu o stałych rozmiarach, a jednocześnie nie wpływa na domyślne zachowanie, jeśli do obliczania rozmiaru elementu kompozycyjnego służy tylko rozmiar wewnętrzny. (I40ae3, b/159838006)
- Użyj AnimationSpec zamiast AnimationBuilder w interfejsach API najwyższego poziomu, aby wyjaśnić koncepcję specyfikacji animacji statycznej. -Udoskonalenie przejścia DSL przez usunięcie wymogu lambda przy tworzeniu specyfikacji animacji, takich jak starsze czy sprężyna. Zamiast tego korzystają bezpośrednio z parametrów konstruktora. – Zwiększenie ogólnej łatwości otwierania konstruktorów AnimationSpec zamiast użycia konstruktorów. -Zmiana czasu trwania i opóźnienia ramek KeyFrame i Tween na Int. Eliminuje to niepotrzebne rzuty typów i przeciążanie metod (przy obsłudze zarówno długich, jak i Int). (ICA0b4).
- Element klikalny został usunięty. Użyj metody Modifier.clickable (I84bdf)
- Dodano LazyRowItems – analog z przewijaniem poziomym typu LazyColumnItems (Ibbcf7)
- Wprowadzono niskopoziomowe interfejsy API do animacji bezstanowych. Te interfejsy API (I63bf7)
- Metody androidx.ui.foundation.TextFieldValue i androidx.ui.input.EditorValue zostały wycofane. Obiekty kompozycyjne TextField, PhlledTextField i CoreTextField, które używają tego typu, również zostały wycofane. Użyj androidx.ui.input.TextFieldValue (I4066d, b/155211005)
- Zastąpiliśmy wartość IntPx wartością IntPxPosition (Parametr IntPxPosition) wartością IntOffset. IntPxSize zastąpiono wartością IntSize. (IB7b44)
- Usunięto androidx.ui.foundation.shape.Rectangle shape; użyj androidx.ui.graphics.Rectangleangle (I94939, b/154507984)
- Aby skonsolidować liczbę klas używanych do przedstawiania informacji o rozmiarze, ustandaryzuj użycie klasy Size zamiast PxSize. Dzięki temu w klasie wbudowanej można umieścić 2 wartości zmiennoprzecinkowe w postaci długiej do pakowania 2 wartości liczb zmiennoprzecinkowych, które reprezentują szerokość i wysokość reprezentowane przez liczbę zmiennoprzecinkową. (IC0191).
- Aby skonsolidować liczbę klas używanych do przedstawiania informacji o pozycji, ustandaryzuj użycie klasy Offset zamiast PxPosition. Dzięki temu w klasie wbudowanej można umieścić 2 wartości zmiennoprzecinkowe za pomocą funkcji „long” (długie) do reprezentowania przesunięcia x i y reprezentowanego jako liczby zmiennoprzecinkowe. (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 klasach tworzenia w ramach dużej refaktoryzacji polegającej na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (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 klasach tworzenia w ramach dużej refaktoryzacji, która polegała wyłącznie na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (Iede0b).
- Do pakietu podstawowego dodano modyfikator.indication. 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)
- Skonsolidowano implementacje CanvasScope, dzięki czemu powstaje tylko DrawScope i ContentDrawScope. Nazwa obiektu CanvasScope została zmieniona na DrawScope. Zaktualizowaliśmy DrawScope, aby wdrożyć interfejs Density i udostępnić interfejs LayoutDirection Usunięta podklasa DrawScope w ContentDrawScope Zaktualizowaliśmy aplikację Painter i painterModifier, aby nie utrzymywała już właściwości RTL, ponieważ DrawScope udostępnia ją już bez ręcznego podawania jej właściwości (I1798e)
- Usunęliśmy wycofany interfejs DrawBackground API i zastąpienie go interfejsami API rozszerzenia DrawBackground w modyfikatorze. zmodyfikowano implementacje koloru, pędzla i malowania metodą PaintBackground, aby zmniejszyć ścieżki kodu, a także usunąć wymóg tworzenia modyfikatora w ramach kompozycji. (I0343a)
- Zaktualizowano interfejsy API tworzenia wyższego poziomu, które udostępniają obiekt Canvas do wyświetlania obiektu CanvasScope. Dzięki temu konsumenci nie muszą utrzymywać własnych obiektów Paint. Klienci, którzy nadal potrzebują dostępu do obiektu Canvas, mogą skorzystać z metody rozszerzenia dropCanvas, która powoduje wywołanie zwrotne do poleceń rysowania na podstawie obiektu Canvas. (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, aby udostępniać bezstanową, deklaratywnej powierzchni interfejsu API do rysowania. Przekształcenia są zawarte w oddzielnym zakresie odbiornika, a informacje o rozmiarze są również ograniczone do odpowiednich granic wektora. Nie wymaga od konsumenta zachowania własnego obiektu stanu renderowania umożliwiającego konfigurowanie operacji rysowania.
Dodaliśmy CanvasScopeSample oraz zaktualizowaliśmy aplikację w wersji demonstracyjnej, aby dodać demonstrację grafiki deklaratywnej (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ć lub pokazać klawiaturę programową za pomocą kontrolera SoftwarekeyController obsługiwanego przez wywołanie zwrotne onTextInputStarted (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ć parametry bezpośrednio:Text(textAlign = TextAlign.Center)
(I82768)Zastąpiliśmy parametr CoreTextField/TextFieldfocusIdentifier obiektem FocusNode, by zintegrować go z podsystemem zaznaczenia. (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)
Wszystkie przypadki użycia koloru, które mogą przyjmować wartości null w interfejsie API, zastąpiono wartością niedopuszczającą wartości null i ustawiono wartość Color.Unset zamiast wartości null (Iabaa7).
Aktualizacja interfejsu TextField API – scalono wywołania zwrotne onFocus i onBlur w jedno wywołanie zwrotne onFocusChange(Boolean) z parametrem (I66cd3)
Zmieniliśmy nazwę ScaleFit na ContentScale Przenieśed ContentScale z modułu ui-graphics na moduł ui-core, tak aby był umieszczony w tym samym module co wyrównanie interfejsu API. Zmieniono nazwę FillMaxWymiar na „crop” (Zmiana nazwy FillMaxWymiar na „crop” Zmiana nazwy FillMinWymiar i Fit
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)Dodaliśmy interfejs VectorPainter API, aby zastąpić dotychczasowy interfejs subcomposition API dla grafiki wektorowej. Wynikem składni podrzędnej jest obiekt VectorPainter, a nie DrawModifier. Wycofaliśmy wcześniejsze funkcje kompozycyjne DrawVector i zastąpiliśmy VectorPainter.
Zmieniono nazwę interfejsu API
Image(Painter)
naPaintBox(Painter)
Utworzono wektorową kompozycję kompozycyjną, która działa jak funkcja kompozycyjna Image, ale z tą różnicą, że zawiera obiekt VectorAsset, a nie zasób ImageAsset (I9af9a, b/149030271).Utworzono obraz, który oprócz rysowania zasobu graficznego można umieścić na ekranie do obsługi rozmiaru/układu. Ta funkcja kompozycyjna obsługuje też rysowanie dowolnych instancji Painter z uwzględnieniem ich rozmiaru wewnętrznego, a także obsługi określonego stałego lub minimalnego rozmiaru (Ibcc8f)
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, by lepiej rozróżnić dane obrazu od przyszłej funkcji kompozycyjnej obrazu wykorzystywanej do tworzenia układu i rysowania treści.
Utworzono metodę rozszerzenia w android.graphics.Bitmap
Bitmap.asImageAsset()
, aby utworzyć instancję komponentu ImageAsset, która pozwala połączyć możliwość tworzenia tradycyjnych aplikacji na Androida z platformą komponowania. (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 kierunkowość 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, aby reklamy te miały odpowiedni docelowy element dotykowy. Zapoznaj się z przykładami informacji o wykorzystaniu i zobacz ikony dostępnych ikon materiału, których można używać bezpośrednio z tymi komponentami. (I96849)
Funkcja kompozycyjna DrawStatus została usunięta. Użyj modyfikatora DrawBackground. (I7ceb2).
Dodaliśmy AdapterList – komponent listy przewijanej, który tylko tworzy i rozkłada widoczne elementy. Znane obecnie problemy polegają na tym, że tryb ten działa tylko pionowo i nie obsługuje w pełni wszystkich przypadków zmian w elementach podrzędnych. (IB351b)
Dodano komponent przewijany, który umożliwia tworzenie niestandardowych elementów przewijania/list (I5fd37).
Zmieniono nazwę tła na DrawBackground i 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 wartości 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 określania rozmiaru dla 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; wycofano 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 funkcję AspectRatio kompozycyjną na rzecz modyfikatora. Usunięto przestarzałe elementy kompozycyjne 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 FocusSzczegółState 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. Nazwy wszystkich interfejsów API „findXYZ” zostały zmienione na onNodeXYZ. Nazwy wszystkich interfejsów API doXYZ zostały zmienione na „performXYZ”. (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)
- W funkcji tworzenia wiadomości zaimplementowano wersję 1 blokowania orientacji przewijania. (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 element absolwentarrangement – umożliwia rozmieszczenie elementów podrzędnych w wierszu bez automatycznego odbicia lustrzanego w zapisie 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) Zmieniono klasę Radius na klasę wbudowaną. Usunięto metody tworzenia elementów towarzyszących na rzecz konstruktora funkcji z domyślnym parametrem, aby promień na osi Y był zgodny z obowiązkowym parametrem promienia osi X.
Zaktualizowaliśmy parametr DrawScope.drawRoundRect, tak aby korzystał z pojedynczego parametru Radius zamiast 2 osobnych wartości zmiennoprzecinkowych promienia wzdłuż osi x i y (I46d1b).
Zastąpiliśmy użycie klasy Px w różnych klasach tworzenia w ramach dużych nakładów refaktoryzacyjnych, które polegały na używaniu w parametrach pikseli wyłącznie typów Dp i typów podstawowych. Cała klasa Px została usunięta (I3ff33).
Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużych nakładów refaktoryzacyjnych, które polegały na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (I086f4).
Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużej refaktoryzacji, która polegała wyłącznie na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (Id3434).
Zastąpiono użycie klasy Px w różnych klasach tworzenia w ramach dużej refaktoryzacji polegającej na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (I97a5a).
Kursor pola tekstowego ma migającą animację (Id10a7)
Gesty częściowe nie wymagają już ominięcia GestyToken (Id7ae5)
Zastąpiliśmy użycie klasy Px w różnych klasach tworzenia w ramach dużych nakładów refaktoryzacyjnych, które polegały na używaniu w parametrach pikseli tylko typów Dp i typów podstawowych (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)
Dodaj do ImagePainter dodatkowy opcjonalny parametr prostokątny, by umożliwić rysowanie podsekcji bazowego komponentu ImageAsset (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 umieszczonego 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. ui-text 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 CoreTextField do sekcji ui-text-compose. Możesz dodać do projektu plik ui-text-compose. (I32042)
runOnIdleCompose
irunOnUiThread
to teraz funkcje globalne, a nie metody w ComposeTestRule. (Icbe8f).[Mutable]Operatory delegowania właściwości stanu zostały przeniesione do rozszerzeń, aby obsługiwać optymalizację przekazywania właściwości Kotlin 1.4. Rozmówcy muszą dodać importowanie, aby dalej używać
by state { ... }
lubby mutableStateOf(...)
. (I5312C)DrawLayerModifier i drawLayer() domyślnie mają wartość false (fałsz). (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 zmieniła się ze zwykłej funkcji kompozycyjnej na zwracanie modyfikatora pullVector(), który spowoduje narysowanie wektora jako tła w układzie. (I7B8E0)
Zastąp funkcję kompozycyjną Clip modyfikatorem drawClip(). DrawClipToBounds to wygodny modyfikator do użycia, gdy chcesz przyciąć do granic warstwy tylko w formacie prostokątnym. (If28eb).
Zastąpiliśmy funkcję kompozycyjną DrawShadow modyfikatorem DrawShadow(). Cienie są teraz rysowane w ramach komponentu LayerModifier. (I0317a)
Aplikacja androidx.compose.ViewComposer została przeniesiona do androidx.ui.node.UiComposer. androidx.compose.Emittable została usunięta. W przypadku węzła KomponentNode to niepotrzebne narzędzie. Aplikacja 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
na obiekcieComposition
zwróconym przezsetContent
. Nazwa androidx.compose.Compose.subcomposeInto została przeniesiona do androidx.ui.core.subcomposeInto. Nazwa węzła #emitInsertAt została zmieniona na KomponentNodeWycofana 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ę klas AnimatedValue i AnimatedFloat, aby pole wartości animacji było abstrakcyjne, dzięki czemu podklasy będą 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, funkcja wyrównania wejściowa zostanie zwrócona. (I896c5, b/158134875)
Naprawiono błąd ConstraintLayout powodujący awarię przy zmianie 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 oznaczać elementy podrzędne układu, aby rozpoznawały je w bloku pomiaru. (I51368, b/150953183)
Dodaj OnPositionedModifier i OnChildPositionedModifier, aby zastąpić funkcje kompozycyjne OnPositioned i OnChildPositioned. (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)Zmieniliśmy parametry LayoutCoordinates, by móc użyć funkcji providedWyrównajmentLines, a nie Mapa, a funkcja LayoutCoordinates wdrożyła operator get() zamiast pobierać wartość. Ułatwia to modyfikatorom modyfikowanie jednej lub większej liczby wartości zestawu bez tworzenia nowej kolekcji dla każdego modyfikatora. (I0245a)
LayoutCoordinates nie ma już właściwości pozycji. Właściwość pozycji nie ma sensu przy uwzględnianiu elementów LayoutModifiers, rotacji lub skalowania. Do obliczania przekształceń z jednego LayoutCoordinate na inny programiści powinni używać koordynatorów nadrzędnych i podrzędnych (childToLocal()).
Funkcja LayoutCoordinates używa właściwości rozmiaru IntPxSize, a nie PxSize. W przypadku układów stosuje się rozmiary w pikselach całkowitych, więc we wszystkich rozmiarach układów należy używać liczb całkowitych, a nie wartości 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)
TextDirection został zmieniony 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 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. Aktywność, której używasz w interfejsie tworzenia wiadomości, powinna teraz stanowić rozszerzenie androidx.activity.KomponentActivity (lub AppCompatActivity). Funkcja setContent w android.app.Activity została wycofana (Idb25a, b/153141084)
Nazwa pakietu ui-android-text (androidx.text) została zastąpiona przez androidx.ui.text.platform, aby zapewnić zgodność z zasadą androidx. (I42711)